Skip to main content

fidl_fuchsia_wlan_fullmac_common/
fidl_fuchsia_wlan_fullmac_common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11pub const WLAN_MAX_KEYLIST_SIZE: u32 = 4;
12
13/// Max length for vendor IEs to be added to the association request. This is currently
14/// used for WPA.
15pub const WLAN_VIE_MAX_LEN: u32 = 514;
16
17#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
18pub enum EapolTxResult {
19    Success,
20    TransmissionFailure,
21    #[doc(hidden)]
22    __SourceBreaking {
23        unknown_ordinal: u8,
24    },
25}
26
27/// Pattern that matches an unknown `EapolTxResult` member.
28#[macro_export]
29macro_rules! EapolTxResultUnknown {
30    () => {
31        _
32    };
33}
34
35impl EapolTxResult {
36    #[inline]
37    pub fn from_primitive(prim: u8) -> Option<Self> {
38        match prim {
39            0 => Some(Self::Success),
40            1 => Some(Self::TransmissionFailure),
41            _ => None,
42        }
43    }
44
45    #[inline]
46    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
47        match prim {
48            0 => Self::Success,
49            1 => Self::TransmissionFailure,
50            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
51        }
52    }
53
54    #[inline]
55    pub fn unknown() -> Self {
56        Self::__SourceBreaking { unknown_ordinal: 0xff }
57    }
58
59    #[inline]
60    pub const fn into_primitive(self) -> u8 {
61        match self {
62            Self::Success => 0,
63            Self::TransmissionFailure => 1,
64            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
65        }
66    }
67
68    #[inline]
69    pub fn is_unknown(&self) -> bool {
70        match self {
71            Self::__SourceBreaking { unknown_ordinal: _ } => true,
72            _ => false,
73        }
74    }
75}
76
77#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
78pub enum StartResult {
79    Success,
80    BssAlreadyStartedOrJoined,
81    ResetRequiredBeforeStart,
82    NotSupported,
83    #[doc(hidden)]
84    __SourceBreaking {
85        unknown_ordinal: u8,
86    },
87}
88
89/// Pattern that matches an unknown `StartResult` member.
90#[macro_export]
91macro_rules! StartResultUnknown {
92    () => {
93        _
94    };
95}
96
97impl StartResult {
98    #[inline]
99    pub fn from_primitive(prim: u8) -> Option<Self> {
100        match prim {
101            0 => Some(Self::Success),
102            1 => Some(Self::BssAlreadyStartedOrJoined),
103            2 => Some(Self::ResetRequiredBeforeStart),
104            3 => Some(Self::NotSupported),
105            _ => None,
106        }
107    }
108
109    #[inline]
110    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
111        match prim {
112            0 => Self::Success,
113            1 => Self::BssAlreadyStartedOrJoined,
114            2 => Self::ResetRequiredBeforeStart,
115            3 => Self::NotSupported,
116            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
117        }
118    }
119
120    #[inline]
121    pub fn unknown() -> Self {
122        Self::__SourceBreaking { unknown_ordinal: 0xff }
123    }
124
125    #[inline]
126    pub const fn into_primitive(self) -> u8 {
127        match self {
128            Self::Success => 0,
129            Self::BssAlreadyStartedOrJoined => 1,
130            Self::ResetRequiredBeforeStart => 2,
131            Self::NotSupported => 3,
132            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
133        }
134    }
135
136    #[inline]
137    pub fn is_unknown(&self) -> bool {
138        match self {
139            Self::__SourceBreaking { unknown_ordinal: _ } => true,
140            _ => false,
141        }
142    }
143}
144
145#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
146pub enum StopResult {
147    Success,
148    BssAlreadyStopped,
149    InternalError,
150    #[doc(hidden)]
151    __SourceBreaking {
152        unknown_ordinal: u8,
153    },
154}
155
156/// Pattern that matches an unknown `StopResult` member.
157#[macro_export]
158macro_rules! StopResultUnknown {
159    () => {
160        _
161    };
162}
163
164impl StopResult {
165    #[inline]
166    pub fn from_primitive(prim: u8) -> Option<Self> {
167        match prim {
168            0 => Some(Self::Success),
169            1 => Some(Self::BssAlreadyStopped),
170            2 => Some(Self::InternalError),
171            _ => None,
172        }
173    }
174
175    #[inline]
176    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
177        match prim {
178            0 => Self::Success,
179            1 => Self::BssAlreadyStopped,
180            2 => Self::InternalError,
181            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
182        }
183    }
184
185    #[inline]
186    pub fn unknown() -> Self {
187        Self::__SourceBreaking { unknown_ordinal: 0xff }
188    }
189
190    #[inline]
191    pub const fn into_primitive(self) -> u8 {
192        match self {
193            Self::Success => 0,
194            Self::BssAlreadyStopped => 1,
195            Self::InternalError => 2,
196            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
197        }
198    }
199
200    #[inline]
201    pub fn is_unknown(&self) -> bool {
202        match self {
203            Self::__SourceBreaking { unknown_ordinal: _ } => true,
204            _ => false,
205        }
206    }
207}
208
209#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
210pub enum WlanAssocResult {
211    Success,
212    RefusedReasonUnspecified,
213    RefusedNotAuthenticated,
214    RefusedCapabilitiesMismatch,
215    RefusedExternalReason,
216    RefusedApOutOfMemory,
217    RefusedBasicRatesMismatch,
218    RejectedEmergencyServicesNotSupported,
219    RefusedTemporarily,
220    #[doc(hidden)]
221    __SourceBreaking {
222        unknown_ordinal: u8,
223    },
224}
225
226/// Pattern that matches an unknown `WlanAssocResult` member.
227#[macro_export]
228macro_rules! WlanAssocResultUnknown {
229    () => {
230        _
231    };
232}
233
234impl WlanAssocResult {
235    #[inline]
236    pub fn from_primitive(prim: u8) -> Option<Self> {
237        match prim {
238            0 => Some(Self::Success),
239            1 => Some(Self::RefusedReasonUnspecified),
240            2 => Some(Self::RefusedNotAuthenticated),
241            3 => Some(Self::RefusedCapabilitiesMismatch),
242            4 => Some(Self::RefusedExternalReason),
243            5 => Some(Self::RefusedApOutOfMemory),
244            6 => Some(Self::RefusedBasicRatesMismatch),
245            7 => Some(Self::RejectedEmergencyServicesNotSupported),
246            8 => Some(Self::RefusedTemporarily),
247            _ => None,
248        }
249    }
250
251    #[inline]
252    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
253        match prim {
254            0 => Self::Success,
255            1 => Self::RefusedReasonUnspecified,
256            2 => Self::RefusedNotAuthenticated,
257            3 => Self::RefusedCapabilitiesMismatch,
258            4 => Self::RefusedExternalReason,
259            5 => Self::RefusedApOutOfMemory,
260            6 => Self::RefusedBasicRatesMismatch,
261            7 => Self::RejectedEmergencyServicesNotSupported,
262            8 => Self::RefusedTemporarily,
263            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
264        }
265    }
266
267    #[inline]
268    pub fn unknown() -> Self {
269        Self::__SourceBreaking { unknown_ordinal: 0xff }
270    }
271
272    #[inline]
273    pub const fn into_primitive(self) -> u8 {
274        match self {
275            Self::Success => 0,
276            Self::RefusedReasonUnspecified => 1,
277            Self::RefusedNotAuthenticated => 2,
278            Self::RefusedCapabilitiesMismatch => 3,
279            Self::RefusedExternalReason => 4,
280            Self::RefusedApOutOfMemory => 5,
281            Self::RefusedBasicRatesMismatch => 6,
282            Self::RejectedEmergencyServicesNotSupported => 7,
283            Self::RefusedTemporarily => 8,
284            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
285        }
286    }
287
288    #[inline]
289    pub fn is_unknown(&self) -> bool {
290        match self {
291            Self::__SourceBreaking { unknown_ordinal: _ } => true,
292            _ => false,
293        }
294    }
295}
296
297#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
298pub enum WlanAuthResult {
299    Success,
300    Refused,
301    AntiCloggingTokenRequired,
302    FiniteCyclicGroupNotSupported,
303    Rejected,
304    FailureTimeout,
305    #[doc(hidden)]
306    __SourceBreaking {
307        unknown_ordinal: u8,
308    },
309}
310
311/// Pattern that matches an unknown `WlanAuthResult` member.
312#[macro_export]
313macro_rules! WlanAuthResultUnknown {
314    () => {
315        _
316    };
317}
318
319impl WlanAuthResult {
320    #[inline]
321    pub fn from_primitive(prim: u8) -> Option<Self> {
322        match prim {
323            0 => Some(Self::Success),
324            1 => Some(Self::Refused),
325            2 => Some(Self::AntiCloggingTokenRequired),
326            3 => Some(Self::FiniteCyclicGroupNotSupported),
327            4 => Some(Self::Rejected),
328            5 => Some(Self::FailureTimeout),
329            _ => None,
330        }
331    }
332
333    #[inline]
334    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
335        match prim {
336            0 => Self::Success,
337            1 => Self::Refused,
338            2 => Self::AntiCloggingTokenRequired,
339            3 => Self::FiniteCyclicGroupNotSupported,
340            4 => Self::Rejected,
341            5 => Self::FailureTimeout,
342            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
343        }
344    }
345
346    #[inline]
347    pub fn unknown() -> Self {
348        Self::__SourceBreaking { unknown_ordinal: 0xff }
349    }
350
351    #[inline]
352    pub const fn into_primitive(self) -> u8 {
353        match self {
354            Self::Success => 0,
355            Self::Refused => 1,
356            Self::AntiCloggingTokenRequired => 2,
357            Self::FiniteCyclicGroupNotSupported => 3,
358            Self::Rejected => 4,
359            Self::FailureTimeout => 5,
360            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
361        }
362    }
363
364    #[inline]
365    pub fn is_unknown(&self) -> bool {
366        match self {
367            Self::__SourceBreaking { unknown_ordinal: _ } => true,
368            _ => false,
369        }
370    }
371}
372
373#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
374pub enum WlanAuthType {
375    OpenSystem,
376    SharedKey,
377    FastBssTransition,
378    Sae,
379    #[doc(hidden)]
380    __SourceBreaking {
381        unknown_ordinal: u8,
382    },
383}
384
385/// Pattern that matches an unknown `WlanAuthType` member.
386#[macro_export]
387macro_rules! WlanAuthTypeUnknown {
388    () => {
389        _
390    };
391}
392
393impl WlanAuthType {
394    #[inline]
395    pub fn from_primitive(prim: u8) -> Option<Self> {
396        match prim {
397            1 => Some(Self::OpenSystem),
398            2 => Some(Self::SharedKey),
399            3 => Some(Self::FastBssTransition),
400            4 => Some(Self::Sae),
401            _ => None,
402        }
403    }
404
405    #[inline]
406    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
407        match prim {
408            1 => Self::OpenSystem,
409            2 => Self::SharedKey,
410            3 => Self::FastBssTransition,
411            4 => Self::Sae,
412            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
413        }
414    }
415
416    #[inline]
417    pub fn unknown() -> Self {
418        Self::__SourceBreaking { unknown_ordinal: 0xff }
419    }
420
421    #[inline]
422    pub const fn into_primitive(self) -> u8 {
423        match self {
424            Self::OpenSystem => 1,
425            Self::SharedKey => 2,
426            Self::FastBssTransition => 3,
427            Self::Sae => 4,
428            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
429        }
430    }
431
432    #[inline]
433    pub fn is_unknown(&self) -> bool {
434        match self {
435            Self::__SourceBreaking { unknown_ordinal: _ } => true,
436            _ => false,
437        }
438    }
439}
440
441#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
442pub enum WlanScanResult {
443    Success,
444    NotSupported,
445    InvalidArgs,
446    InternalError,
447    ShouldWait,
448    CanceledByDriverOrFirmware,
449    #[doc(hidden)]
450    __SourceBreaking {
451        unknown_ordinal: u8,
452    },
453}
454
455/// Pattern that matches an unknown `WlanScanResult` member.
456#[macro_export]
457macro_rules! WlanScanResultUnknown {
458    () => {
459        _
460    };
461}
462
463impl WlanScanResult {
464    #[inline]
465    pub fn from_primitive(prim: u8) -> Option<Self> {
466        match prim {
467            0 => Some(Self::Success),
468            1 => Some(Self::NotSupported),
469            2 => Some(Self::InvalidArgs),
470            3 => Some(Self::InternalError),
471            4 => Some(Self::ShouldWait),
472            5 => Some(Self::CanceledByDriverOrFirmware),
473            _ => None,
474        }
475    }
476
477    #[inline]
478    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
479        match prim {
480            0 => Self::Success,
481            1 => Self::NotSupported,
482            2 => Self::InvalidArgs,
483            3 => Self::InternalError,
484            4 => Self::ShouldWait,
485            5 => Self::CanceledByDriverOrFirmware,
486            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
487        }
488    }
489
490    #[inline]
491    pub fn unknown() -> Self {
492        Self::__SourceBreaking { unknown_ordinal: 0xff }
493    }
494
495    #[inline]
496    pub const fn into_primitive(self) -> u8 {
497        match self {
498            Self::Success => 0,
499            Self::NotSupported => 1,
500            Self::InvalidArgs => 2,
501            Self::InternalError => 3,
502            Self::ShouldWait => 4,
503            Self::CanceledByDriverOrFirmware => 5,
504            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
505        }
506    }
507
508    #[inline]
509    pub fn is_unknown(&self) -> bool {
510        match self {
511            Self::__SourceBreaking { unknown_ordinal: _ } => true,
512            _ => false,
513        }
514    }
515}
516
517#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
518pub enum WlanScanType {
519    Active,
520    Passive,
521    #[doc(hidden)]
522    __SourceBreaking {
523        unknown_ordinal: u8,
524    },
525}
526
527/// Pattern that matches an unknown `WlanScanType` member.
528#[macro_export]
529macro_rules! WlanScanTypeUnknown {
530    () => {
531        _
532    };
533}
534
535impl WlanScanType {
536    #[inline]
537    pub fn from_primitive(prim: u8) -> Option<Self> {
538        match prim {
539            1 => Some(Self::Active),
540            2 => Some(Self::Passive),
541            _ => None,
542        }
543    }
544
545    #[inline]
546    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
547        match prim {
548            1 => Self::Active,
549            2 => Self::Passive,
550            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
551        }
552    }
553
554    #[inline]
555    pub fn unknown() -> Self {
556        Self::__SourceBreaking { unknown_ordinal: 0xff }
557    }
558
559    #[inline]
560    pub const fn into_primitive(self) -> u8 {
561        match self {
562            Self::Active => 1,
563            Self::Passive => 2,
564            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
565        }
566    }
567
568    #[inline]
569    pub fn is_unknown(&self) -> bool {
570        match self {
571            Self::__SourceBreaking { unknown_ordinal: _ } => true,
572            _ => false,
573        }
574    }
575}
576
577#[derive(Clone, 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_driver_common::WlanWmmParameters,
597}
598
599impl fidl::Persistable for WlanFullmacImplIfcOnWmmStatusRespRequest {}
600
601#[derive(Clone, Debug, PartialEq)]
602pub struct WlanFullmacImplIfcSaeFrameRxRequest {
603    pub frame: SaeFrame,
604}
605
606impl fidl::Persistable for WlanFullmacImplIfcSaeFrameRxRequest {}
607
608#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
609#[repr(C)]
610pub struct WlanFullmacImplIfcSignalReportRequest {
611    pub ind: WlanFullmacSignalReportIndication,
612}
613
614impl fidl::Persistable for WlanFullmacImplIfcSignalReportRequest {}
615
616#[derive(Clone, Debug, PartialEq)]
617pub struct WlanFullmacImplSaeFrameTxRequest {
618    pub frame: SaeFrame,
619}
620
621impl fidl::Persistable for WlanFullmacImplSaeFrameTxRequest {}
622
623#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
624pub struct WlanFullmacImplSetKeysResponse {
625    pub resp: WlanFullmacSetKeysResp,
626}
627
628impl fidl::Persistable for WlanFullmacImplSetKeysResponse {}
629
630#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
631#[repr(C)]
632pub struct WlanFullmacImplSetMacAddressRequest {
633    pub mac_addr: [u8; 6],
634}
635
636impl fidl::Persistable for WlanFullmacImplSetMacAddressRequest {}
637
638#[derive(Clone, Debug, PartialEq)]
639pub struct WlanFullmacImplGetIfaceHistogramStatsResponse {
640    pub stats: fidl_fuchsia_wlan_stats_common::IfaceHistogramStats,
641}
642
643impl fidl::Persistable for WlanFullmacImplGetIfaceHistogramStatsResponse {}
644
645#[derive(Clone, Debug, PartialEq)]
646pub struct WlanFullmacImplGetIfaceStatsResponse {
647    pub stats: fidl_fuchsia_wlan_stats_common::IfaceStats,
648}
649
650impl fidl::Persistable for WlanFullmacImplGetIfaceStatsResponse {}
651
652#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
653pub struct WlanFullmacRssiStats {
654    pub hist: Vec<u64>,
655}
656
657impl fidl::Persistable for WlanFullmacRssiStats {}
658
659#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
660pub struct WlanFullmacSetKeysResp {
661    pub statuslist: Vec<i32>,
662}
663
664impl fidl::Persistable for WlanFullmacSetKeysResp {}
665
666#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
667#[repr(C)]
668pub struct WlanFullmacSignalReportIndication {
669    pub rssi_dbm: i8,
670    pub snr_db: i8,
671}
672
673impl fidl::Persistable for WlanFullmacSignalReportIndication {}
674
675/// Describes parameters and capabilities for a single WlanBand.
676#[derive(Clone, Debug, Default, PartialEq)]
677pub struct BandCapability {
678    /// The values of this table apply to the band indicated in this field.
679    ///
680    /// Required.
681    pub band: Option<fidl_fuchsia_wlan_ieee80211_common::WlanBand>,
682    /// Basic rates supported in units of 500 kbit/s (as defined in
683    /// IEEE Std 802.11-2016, 9.4.2.3), e.g., 0x02 represents 1 Mbps.
684    /// The value returned by this type indicates all the non-HT rates
685    /// the device supports transmitting and receiving.
686    ///
687    /// Required.
688    pub basic_rates: Option<Vec<u8>>,
689    /// HT PHY mode capabilities.
690    ///
691    /// Optional. If this field is not present, then the device does not support HT PHY mode in this
692    /// band.
693    pub ht_caps: Option<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
694    /// VHT PHY mode capabilities.
695    ///
696    /// Optional. If this field is not present, then the device does not support VHT PHY mode in
697    /// this band.
698    pub vht_caps: Option<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
699    /// A list of 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_ieee80211_common::BssDescription>,
761    /// Timeout specified in beacon interval.
762    pub connect_failure_timeout: Option<u32>,
763    /// Additional parameters specific to the authentication exchange.
764    pub auth_type: Option<WlanAuthType>,
765    /// sae_password is ignored except when SAE_DRIVER_AUTH is enabled and the
766    /// auth_type is SAE.
767    pub sae_password: Option<Vec<u8>>,
768    /// WEP key used in the authentication exchange.
769    /// This is only populated for the WEP security type, otherwise this field is empty.
770    pub wep_key: Option<fidl_fuchsia_wlan_driver_common::WlanKeyConfig>,
771    /// Additional parameters specific to the association exchange.
772    pub security_ie: Option<Vec<u8>>,
773    /// WEP key used in the authentication exchange.
774    /// This is only populated for the WEP security type, otherwise this field is empty.
775    pub wep_key_desc: Option<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor>,
776    /// OWE public key used for Diffie Hellman exchange during association.
777    /// This is only populated for the OWE security type, otherwise this field is empty.
778    pub owe_public_key: Option<WlanFullmacOwePublicKey>,
779    #[doc(hidden)]
780    pub __source_breaking: fidl::marker::SourceBreaking,
781}
782
783impl fidl::Persistable for WlanFullmacImplConnectRequest {}
784
785#[derive(Clone, Debug, Default, PartialEq)]
786pub struct WlanFullmacImplDeauthRequest {
787    pub peer_sta_address: Option<[u8; 6]>,
788    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211_common::ReasonCode>,
789    #[doc(hidden)]
790    pub __source_breaking: fidl::marker::SourceBreaking,
791}
792
793impl fidl::Persistable for WlanFullmacImplDeauthRequest {}
794
795#[derive(Clone, Debug, Default, PartialEq)]
796pub struct WlanFullmacImplDisassocRequest {
797    pub peer_sta_address: Option<[u8; 6]>,
798    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211_common::ReasonCode>,
799    #[doc(hidden)]
800    pub __source_breaking: fidl::marker::SourceBreaking,
801}
802
803impl fidl::Persistable for WlanFullmacImplDisassocRequest {}
804
805#[derive(Clone, Debug, Default, PartialEq)]
806pub struct WlanFullmacImplEapolTxRequest {
807    pub src_addr: Option<[u8; 6]>,
808    pub dst_addr: Option<[u8; 6]>,
809    pub data: Option<Vec<u8>>,
810    #[doc(hidden)]
811    pub __source_breaking: fidl::marker::SourceBreaking,
812}
813
814impl fidl::Persistable for WlanFullmacImplEapolTxRequest {}
815
816#[derive(Clone, Debug, Default, PartialEq)]
817pub struct WlanFullmacImplIfcAssocIndRequest {
818    pub peer_sta_address: Option<[u8; 6]>,
819    pub listen_interval: Option<u16>,
820    pub ssid: Option<Vec<u8>>,
821    pub rsne: Option<Vec<u8>>,
822    pub vendor_ie: Option<Vec<u8>>,
823    #[doc(hidden)]
824    pub __source_breaking: fidl::marker::SourceBreaking,
825}
826
827impl fidl::Persistable for WlanFullmacImplIfcAssocIndRequest {}
828
829#[derive(Clone, Debug, Default, PartialEq)]
830pub struct WlanFullmacImplIfcAuthIndRequest {
831    pub peer_sta_address: Option<[u8; 6]>,
832    pub auth_type: Option<WlanAuthType>,
833    #[doc(hidden)]
834    pub __source_breaking: fidl::marker::SourceBreaking,
835}
836
837impl fidl::Persistable for WlanFullmacImplIfcAuthIndRequest {}
838
839#[derive(Clone, Debug, Default, PartialEq)]
840pub struct WlanFullmacImplIfcConnectConfRequest {
841    pub peer_sta_address: Option<[u8; 6]>,
842    pub result_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
843    pub association_id: Option<u16>,
844    pub association_ies: Option<Vec<u8>>,
845    #[doc(hidden)]
846    pub __source_breaking: fidl::marker::SourceBreaking,
847}
848
849impl fidl::Persistable for WlanFullmacImplIfcConnectConfRequest {}
850
851#[derive(Clone, Debug, Default, PartialEq)]
852pub struct WlanFullmacImplIfcDeauthConfRequest {
853    pub peer_sta_address: Option<[u8; 6]>,
854    #[doc(hidden)]
855    pub __source_breaking: fidl::marker::SourceBreaking,
856}
857
858impl fidl::Persistable for WlanFullmacImplIfcDeauthConfRequest {}
859
860#[derive(Clone, Debug, Default, PartialEq)]
861pub struct WlanFullmacImplIfcDeauthIndRequest {
862    /// MAC address of the peer. Required.
863    pub peer_sta_address: Option<[u8; 6]>,
864    /// Reason code for deauthentication. Required.
865    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211_common::ReasonCode>,
866    /// locally_initiated is true if deauth is initiated from the device,
867    /// and is false if it's initiated remotely (e.g. due to deauth frame)
868    pub locally_initiated: Option<bool>,
869    #[doc(hidden)]
870    pub __source_breaking: fidl::marker::SourceBreaking,
871}
872
873impl fidl::Persistable for WlanFullmacImplIfcDeauthIndRequest {}
874
875#[derive(Clone, Debug, Default, PartialEq)]
876pub struct WlanFullmacImplIfcDisassocConfRequest {
877    /// ZX_OK indicates that the disassociate request was serviced and the peer was
878    /// disassociated. Other errors indicate that the request could not be serviced, for these
879    /// or other reasons:
880    ///   - ZX_ERR_BAD_STATE: association not possible in current state (e.g. disconnected)
881    ///   - ZX_ERR_INVALID_ARGS: no association exists with specified peer
882    ///   - ZX_ERR_SHOULD_WAIT: disassociate request could not be serviced because firmware or
883    ///     driver was busy
884    pub status: Option<i32>,
885    #[doc(hidden)]
886    pub __source_breaking: fidl::marker::SourceBreaking,
887}
888
889impl fidl::Persistable for WlanFullmacImplIfcDisassocConfRequest {}
890
891#[derive(Clone, Debug, Default, PartialEq)]
892pub struct WlanFullmacImplIfcDisassocIndRequest {
893    /// Address of the peer that was disassociated. Required.
894    pub peer_sta_address: Option<[u8; 6]>,
895    /// Reason for the disassociation. Required.
896    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211_common::ReasonCode>,
897    /// Whether the disassociation was initiated from the device. Required.
898    /// locally_initiated is true if disassociation was initiated from the device (e.g. firmware
899    /// or vendor driver started the disassociation); false if the disassociation was initiated
900    /// externally (e.g. due to receipt of a disassociate frame from an AP).
901    pub locally_initiated: Option<bool>,
902    #[doc(hidden)]
903    pub __source_breaking: fidl::marker::SourceBreaking,
904}
905
906impl fidl::Persistable for WlanFullmacImplIfcDisassocIndRequest {}
907
908#[derive(Clone, Debug, Default, PartialEq)]
909pub struct WlanFullmacImplIfcEapolConfRequest {
910    /// The result of the transmission. Required.
911    pub result_code: Option<EapolTxResult>,
912    /// This value corresponds to the dst_addr in the EapolTxRequest we're confirming.
913    /// IEEE 802.11-2020 does not include this field, but we need it to disambiguate
914    /// if multiple EAPoL handshakes are ongoing.
915    /// Required.
916    pub dst_addr: Option<[u8; 6]>,
917    #[doc(hidden)]
918    pub __source_breaking: fidl::marker::SourceBreaking,
919}
920
921impl fidl::Persistable for WlanFullmacImplIfcEapolConfRequest {}
922
923#[derive(Clone, Debug, Default, PartialEq)]
924pub struct WlanFullmacImplIfcEapolIndRequest {
925    /// The address of the sender. Required.
926    pub src_addr: Option<[u8; 6]>,
927    /// The address of the intended destination. Required.
928    pub dst_addr: Option<[u8; 6]>,
929    /// The bytes of the EAPoL frame data. Required.
930    pub data: Option<Vec<u8>>,
931    #[doc(hidden)]
932    pub __source_breaking: fidl::marker::SourceBreaking,
933}
934
935impl fidl::Persistable for WlanFullmacImplIfcEapolIndRequest {}
936
937#[derive(Clone, Debug, Default, PartialEq)]
938pub struct WlanFullmacImplIfcOnPmkAvailableRequest {
939    /// The pairwise master key bytes. Required.
940    pub pmk: Option<Vec<u8>>,
941    /// The PMK IDs. Required.
942    pub pmkid: Option<Vec<u8>>,
943    #[doc(hidden)]
944    pub __source_breaking: fidl::marker::SourceBreaking,
945}
946
947impl fidl::Persistable for WlanFullmacImplIfcOnPmkAvailableRequest {}
948
949#[derive(Clone, Debug, Default, PartialEq)]
950pub struct WlanFullmacImplIfcOnScanEndRequest {
951    pub txn_id: Option<u64>,
952    pub code: Option<WlanScanResult>,
953    #[doc(hidden)]
954    pub __source_breaking: fidl::marker::SourceBreaking,
955}
956
957impl fidl::Persistable for WlanFullmacImplIfcOnScanEndRequest {}
958
959#[derive(Clone, Debug, Default, PartialEq)]
960pub struct WlanFullmacImplIfcOnScanResultRequest {
961    pub txn_id: Option<u64>,
962    pub timestamp_nanos: Option<i64>,
963    pub bss: Option<fidl_fuchsia_wlan_ieee80211_common::BssDescription>,
964    #[doc(hidden)]
965    pub __source_breaking: fidl::marker::SourceBreaking,
966}
967
968impl fidl::Persistable for WlanFullmacImplIfcOnScanResultRequest {}
969
970#[derive(Clone, Debug, Default, PartialEq)]
971pub struct WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {
972    pub txn_id: Option<u64>,
973    #[doc(hidden)]
974    pub __source_breaking: fidl::marker::SourceBreaking,
975}
976
977impl fidl::Persistable for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {}
978
979#[derive(Clone, Debug, Default, PartialEq)]
980pub struct WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {
981    pub txn_id: Option<u64>,
982    #[doc(hidden)]
983    pub __source_breaking: fidl::marker::SourceBreaking,
984}
985
986impl fidl::Persistable for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {}
987
988#[derive(Clone, Debug, Default, PartialEq)]
989pub struct WlanFullmacImplIfcRoamConfRequest {
990    /// BSSID of the target BSS. Required.
991    pub selected_bssid: Option<[u8; 6]>,
992    /// Result of the roam attempt. Required.
993    pub status_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
994    /// Whether the original BSS association has been maintained through the roam attempt. Required.
995    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
996    /// success then this field must be set to false; a roam failure typically incurs disassociation
997    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
998    pub original_association_maintained: Option<bool>,
999    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1000    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1001    /// This allows higher layers to decide how to clean up connection state after a failed roam
1002    /// attempt.
1003    pub target_bss_authenticated: Option<bool>,
1004    /// Association ID for this association with the AP. Required if `status_code` is success.
1005    pub association_id: Option<u16>,
1006    /// IEs for this association with the AP. Required if `status_code` is success.
1007    pub association_ies: Option<Vec<u8>>,
1008    #[doc(hidden)]
1009    pub __source_breaking: fidl::marker::SourceBreaking,
1010}
1011
1012impl fidl::Persistable for WlanFullmacImplIfcRoamConfRequest {}
1013
1014#[derive(Clone, Debug, Default, PartialEq)]
1015pub struct WlanFullmacImplIfcRoamResultIndRequest {
1016    /// BSSID of the target BSS. Required.
1017    pub selected_bssid: Option<[u8; 6]>,
1018    /// Result of the roam attempt. Required.
1019    pub status_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
1020    /// Whether the original BSS association has been maintained through the roam attempt. Required.
1021    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1022    /// success then this field must be set to false; a roam failure typically incurs disassociation
1023    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1024    pub original_association_maintained: Option<bool>,
1025    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1026    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1027    /// This allows higher layers to decide how to clean up connection state after a failed roam
1028    /// attempt.
1029    pub target_bss_authenticated: Option<bool>,
1030    /// Association ID for this association with the AP. Required if `status_code` is success.
1031    pub association_id: Option<u16>,
1032    /// IEs for this association with the AP. Required if `status_code` is success.
1033    pub association_ies: Option<Vec<u8>>,
1034    #[doc(hidden)]
1035    pub __source_breaking: fidl::marker::SourceBreaking,
1036}
1037
1038impl fidl::Persistable for WlanFullmacImplIfcRoamResultIndRequest {}
1039
1040#[derive(Clone, Debug, Default, PartialEq)]
1041pub struct WlanFullmacImplIfcRoamStartIndRequest {
1042    /// BSSID of the target BSS. Required.
1043    pub selected_bssid: Option<[u8; 6]>,
1044    /// Full BSS description of the target BSS. Required.
1045    /// If the data in BssDescription is incorrect or incomplete, the roam cannot succeed,
1046    /// because higher layers will not be able to complete required actions (e.g. SAE).
1047    pub selected_bss: Option<fidl_fuchsia_wlan_ieee80211_common::BssDescription>,
1048    /// Whether the original BSS association has been maintained at the start of a roam attempt.
1049    /// Required. 802.11 dictates that a STA can only be associated with a single BSS, so a roam
1050    /// attempt typically incurs disassociation at the start of the roam attempt. However,
1051    /// 802.11 also provides a mechanism (i.e. Fast BSS Transition) that allows a device to
1052    /// maintain association with the original BSS while establishing authentication with the
1053    /// target BSS, in order to avoid losing the original association if authentication with the
1054    /// target BSS fails.
1055    pub original_association_maintained: Option<bool>,
1056    #[doc(hidden)]
1057    pub __source_breaking: fidl::marker::SourceBreaking,
1058}
1059
1060impl fidl::Persistable for WlanFullmacImplIfcRoamStartIndRequest {}
1061
1062#[derive(Clone, Debug, Default, PartialEq)]
1063pub struct WlanFullmacImplIfcSaeHandshakeIndRequest {
1064    pub peer_sta_address: Option<[u8; 6]>,
1065    #[doc(hidden)]
1066    pub __source_breaking: fidl::marker::SourceBreaking,
1067}
1068
1069impl fidl::Persistable for WlanFullmacImplIfcSaeHandshakeIndRequest {}
1070
1071#[derive(Clone, Debug, Default, PartialEq)]
1072pub struct WlanFullmacImplIfcStartConfRequest {
1073    /// The result of the StartBss request. Required.
1074    pub result_code: Option<StartResult>,
1075    #[doc(hidden)]
1076    pub __source_breaking: fidl::marker::SourceBreaking,
1077}
1078
1079impl fidl::Persistable for WlanFullmacImplIfcStartConfRequest {}
1080
1081#[derive(Clone, Debug, Default, PartialEq)]
1082pub struct WlanFullmacImplIfcStopConfRequest {
1083    /// The result of the StopBss request. Required.
1084    pub result_code: Option<StopResult>,
1085    #[doc(hidden)]
1086    pub __source_breaking: fidl::marker::SourceBreaking,
1087}
1088
1089impl fidl::Persistable for WlanFullmacImplIfcStopConfRequest {}
1090
1091#[derive(Clone, Debug, Default, PartialEq)]
1092pub struct WlanFullmacImplInstallApfPacketFilterRequest {
1093    pub program: Option<Vec<u8>>,
1094    #[doc(hidden)]
1095    pub __source_breaking: fidl::marker::SourceBreaking,
1096}
1097
1098impl fidl::Persistable for WlanFullmacImplInstallApfPacketFilterRequest {}
1099
1100#[derive(Clone, Debug, Default, PartialEq)]
1101pub struct WlanFullmacImplOnLinkStateChangedRequest {
1102    pub online: Option<bool>,
1103    #[doc(hidden)]
1104    pub __source_breaking: fidl::marker::SourceBreaking,
1105}
1106
1107impl fidl::Persistable for WlanFullmacImplOnLinkStateChangedRequest {}
1108
1109#[derive(Clone, Debug, Default, PartialEq)]
1110pub struct WlanFullmacImplReconnectRequest {
1111    pub peer_sta_address: Option<[u8; 6]>,
1112    #[doc(hidden)]
1113    pub __source_breaking: fidl::marker::SourceBreaking,
1114}
1115
1116impl fidl::Persistable for WlanFullmacImplReconnectRequest {}
1117
1118#[derive(Clone, Debug, Default, PartialEq)]
1119pub struct WlanFullmacImplRoamRequest {
1120    /// Full BSS description of the target BSS. Required.
1121    /// If the data in BssDescription is incorrect or incomplete, the roam cannot succeed,
1122    /// because higher layers will not be able to complete required actions (e.g. SAE).
1123    pub selected_bss: Option<fidl_fuchsia_wlan_ieee80211_common::BssDescription>,
1124    #[doc(hidden)]
1125    pub __source_breaking: fidl::marker::SourceBreaking,
1126}
1127
1128impl fidl::Persistable for WlanFullmacImplRoamRequest {}
1129
1130#[derive(Clone, Debug, Default, PartialEq)]
1131pub struct WlanFullmacImplSaeHandshakeRespRequest {
1132    /// The peer's MAC address. Required.
1133    pub peer_sta_address: Option<[u8; 6]>,
1134    /// The status of the SAE handshake. Required.
1135    pub status_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
1136    #[doc(hidden)]
1137    pub __source_breaking: fidl::marker::SourceBreaking,
1138}
1139
1140impl fidl::Persistable for WlanFullmacImplSaeHandshakeRespRequest {}
1141
1142#[derive(Clone, Debug, Default, PartialEq)]
1143pub struct WlanFullmacImplSetApfPacketFilterEnabledRequest {
1144    pub enabled: Option<bool>,
1145    #[doc(hidden)]
1146    pub __source_breaking: fidl::marker::SourceBreaking,
1147}
1148
1149impl fidl::Persistable for WlanFullmacImplSetApfPacketFilterEnabledRequest {}
1150
1151#[derive(Clone, Debug, Default, PartialEq)]
1152pub struct WlanFullmacImplSetKeysRequest {
1153    pub keylist: Option<Vec<fidl_fuchsia_wlan_driver_common::WlanKeyConfig>>,
1154    pub key_descriptors: Option<Vec<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor>>,
1155    #[doc(hidden)]
1156    pub __source_breaking: fidl::marker::SourceBreaking,
1157}
1158
1159impl fidl::Persistable for WlanFullmacImplSetKeysRequest {}
1160
1161#[derive(Clone, Debug, Default, PartialEq)]
1162pub struct WlanFullmacImplStartBssRequest {
1163    pub ssid: Option<Vec<u8>>,
1164    pub bss_type: Option<fidl_fuchsia_wlan_ieee80211_common::BssType>,
1165    pub beacon_period: Option<u32>,
1166    pub dtim_period: Option<u32>,
1167    pub channel: Option<u8>,
1168    pub rsne: Option<Vec<u8>>,
1169    pub vendor_ie: Option<Vec<u8>>,
1170    #[doc(hidden)]
1171    pub __source_breaking: fidl::marker::SourceBreaking,
1172}
1173
1174impl fidl::Persistable for WlanFullmacImplStartBssRequest {}
1175
1176#[derive(Clone, Debug, Default, PartialEq)]
1177pub struct WlanFullmacImplStartScanRequest {
1178    /// Unique transaction id (will be indicated in corresponding scan results).
1179    pub txn_id: Option<u64>,
1180    pub scan_type: Option<WlanScanType>,
1181    /// List of channels to scan on. An empty list of channels will cause a
1182    /// scan request to immediately return a OnScanEnd with code INVALID_ARGS.
1183    ///
1184    /// Invalid channel numbers will be silently ignored. The validity of a channel
1185    /// number depends on the current regulatory region, and a FullMAC driver cannot
1186    /// always determine the region setting. This is especially the case when
1187    /// firmware changes the region setting dynamically.
1188    pub channels: Option<Vec<u8>>,
1189    /// List of SSIDs to scan for. An empty list of ssids is the same as specifying
1190    /// a list containing only the wildcard SSID.
1191    ///
1192    /// There is no limit on the number of SSIDs specified. A large number of
1193    /// SSIDs may result in extended scan times because of hardware limitations on
1194    /// the number of SSIDs permitted per scan request and the technical limitation
1195    /// in IEEE 802.11-2016 that limits the number of SSIDs in a single Probe Request
1196    /// frame to ieee80211.SSID_LIST_MAX SSIDs.
1197    pub ssids: Option<Vec<Vec<u8>>>,
1198    /// Minimum amount of time in msecs spent on a channel during scan.
1199    pub min_channel_time: Option<u32>,
1200    /// Maximum amount of time in msecs spent on a channel during scan.
1201    pub max_channel_time: Option<u32>,
1202    #[doc(hidden)]
1203    pub __source_breaking: fidl::marker::SourceBreaking,
1204}
1205
1206impl fidl::Persistable for WlanFullmacImplStartScanRequest {}
1207
1208#[derive(Clone, Debug, Default, PartialEq)]
1209pub struct WlanFullmacImplStartScheduledScanRequest {
1210    pub txn_id: Option<u64>,
1211    pub req: Option<fidl_fuchsia_wlan_common_common::ScheduledScanRequest>,
1212    #[doc(hidden)]
1213    pub __source_breaking: fidl::marker::SourceBreaking,
1214}
1215
1216impl fidl::Persistable for WlanFullmacImplStartScheduledScanRequest {}
1217
1218#[derive(Clone, Debug, Default, PartialEq)]
1219pub struct WlanFullmacImplStopBssRequest {
1220    pub ssid: Option<Vec<u8>>,
1221    #[doc(hidden)]
1222    pub __source_breaking: fidl::marker::SourceBreaking,
1223}
1224
1225impl fidl::Persistable for WlanFullmacImplStopBssRequest {}
1226
1227#[derive(Clone, Debug, Default, PartialEq)]
1228pub struct WlanFullmacImplStopScheduledScanRequest {
1229    pub txn_id: Option<u64>,
1230    #[doc(hidden)]
1231    pub __source_breaking: fidl::marker::SourceBreaking,
1232}
1233
1234impl fidl::Persistable for WlanFullmacImplStopScheduledScanRequest {}
1235
1236#[derive(Clone, Debug, Default, PartialEq)]
1237pub struct WlanFullmacImplGetApfPacketFilterEnabledResponse {
1238    pub enabled: Option<bool>,
1239    #[doc(hidden)]
1240    pub __source_breaking: fidl::marker::SourceBreaking,
1241}
1242
1243impl fidl::Persistable for WlanFullmacImplGetApfPacketFilterEnabledResponse {}
1244
1245#[derive(Clone, Debug, Default, PartialEq)]
1246pub struct WlanFullmacImplGetScheduledScanEnabledResponse {
1247    pub active_txn_ids: Option<Vec<u64>>,
1248    #[doc(hidden)]
1249    pub __source_breaking: fidl::marker::SourceBreaking,
1250}
1251
1252impl fidl::Persistable for WlanFullmacImplGetScheduledScanEnabledResponse {}
1253
1254#[derive(Clone, Debug, Default, PartialEq)]
1255pub struct WlanFullmacImplQueryApfPacketFilterSupportResponse {
1256    pub resp: Option<fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport>,
1257    #[doc(hidden)]
1258    pub __source_breaking: fidl::marker::SourceBreaking,
1259}
1260
1261impl fidl::Persistable for WlanFullmacImplQueryApfPacketFilterSupportResponse {}
1262
1263#[derive(Clone, Debug, Default, PartialEq)]
1264pub struct WlanFullmacImplQuerySecuritySupportResponse {
1265    pub resp: Option<fidl_fuchsia_wlan_common_common::SecuritySupport>,
1266    #[doc(hidden)]
1267    pub __source_breaking: fidl::marker::SourceBreaking,
1268}
1269
1270impl fidl::Persistable for WlanFullmacImplQuerySecuritySupportResponse {}
1271
1272#[derive(Clone, Debug, Default, PartialEq)]
1273pub struct WlanFullmacImplQuerySpectrumManagementSupportResponse {
1274    pub resp: Option<fidl_fuchsia_wlan_common_common::SpectrumManagementSupport>,
1275    #[doc(hidden)]
1276    pub __source_breaking: fidl::marker::SourceBreaking,
1277}
1278
1279impl fidl::Persistable for WlanFullmacImplQuerySpectrumManagementSupportResponse {}
1280
1281#[derive(Clone, Debug, Default, PartialEq)]
1282pub struct WlanFullmacImplQueryTelemetrySupportResponse {
1283    pub resp: Option<fidl_fuchsia_wlan_stats_common::TelemetrySupport>,
1284    #[doc(hidden)]
1285    pub __source_breaking: fidl::marker::SourceBreaking,
1286}
1287
1288impl fidl::Persistable for WlanFullmacImplQueryTelemetrySupportResponse {}
1289
1290#[derive(Clone, Debug, Default, PartialEq)]
1291pub struct WlanFullmacImplQueryResponse {
1292    /// Current station address. Required.
1293    pub sta_addr: Option<[u8; 6]>,
1294    /// MAC role. Required.
1295    pub role: Option<fidl_fuchsia_wlan_common_common::WlanMacRole>,
1296    /// Supported bands. Required.
1297    pub band_caps: Option<Vec<BandCapability>>,
1298    /// Factory mac address. Required.
1299    pub factory_addr: Option<[u8; 6]>,
1300    #[doc(hidden)]
1301    pub __source_breaking: fidl::marker::SourceBreaking,
1302}
1303
1304impl fidl::Persistable for WlanFullmacImplQueryResponse {}
1305
1306#[derive(Clone, Debug, Default, PartialEq)]
1307pub struct WlanFullmacImplReadApfPacketFilterDataResponse {
1308    pub memory: Option<Vec<u8>>,
1309    #[doc(hidden)]
1310    pub __source_breaking: fidl::marker::SourceBreaking,
1311}
1312
1313impl fidl::Persistable for WlanFullmacImplReadApfPacketFilterDataResponse {}
1314
1315#[derive(Clone, Debug, Default, PartialEq)]
1316pub struct WlanFullmacOwePublicKey {
1317    pub group: Option<u16>,
1318    pub key: Option<Vec<u8>>,
1319    #[doc(hidden)]
1320    pub __source_breaking: fidl::marker::SourceBreaking,
1321}
1322
1323impl fidl::Persistable for WlanFullmacOwePublicKey {}
1324
1325pub mod wlan_fullmac_impl__ordinals {
1326    pub const INIT: u64 = 0x593dfb6cb3f0f1aa;
1327    pub const QUERY: u64 = 0x28ac65f9da3941d4;
1328    pub const QUERY_SECURITY_SUPPORT: u64 = 0x11cf3fa6eeb93f84;
1329    pub const QUERY_SPECTRUM_MANAGEMENT_SUPPORT: u64 = 0x22ae7551d855b83a;
1330    pub const QUERY_TELEMETRY_SUPPORT: u64 = 0x4561479ca560827f;
1331    pub const QUERY_APF_PACKET_FILTER_SUPPORT: u64 = 0x6df8cdf0acd4dfad;
1332    pub const START_SCAN: u64 = 0x26c17bf595aa161c;
1333    pub const START_SCHEDULED_SCAN: u64 = 0x67bb4356265682d2;
1334    pub const STOP_SCHEDULED_SCAN: u64 = 0x71bf2a03f2cdc10f;
1335    pub const GET_SCHEDULED_SCAN_ENABLED: u64 = 0x96be6f11648f198;
1336    pub const CONNECT: u64 = 0x19eb0322efb07a76;
1337    pub const RECONNECT: u64 = 0x474084c4ef19ee71;
1338    pub const ROAM: u64 = 0x1e35dcc98b124b64;
1339    pub const AUTH_RESP: u64 = 0x5f7ea24b44a4aaeb;
1340    pub const DEAUTH: u64 = 0x112786eccbf12f37;
1341    pub const ASSOC_RESP: u64 = 0x5022ce6b8eefec2f;
1342    pub const DISASSOC: u64 = 0x9c0fc4e8de53e01;
1343    pub const START_BSS: u64 = 0x6922644d6b1d341d;
1344    pub const STOP_BSS: u64 = 0x5aeb9b72e7575268;
1345    pub const SET_KEYS: u64 = 0x20f46b1e039f0985;
1346    pub const EAPOL_TX: u64 = 0x529a2d90fd4c8177;
1347    pub const GET_IFACE_STATS: u64 = 0x505563776ef0392f;
1348    pub const GET_IFACE_HISTOGRAM_STATS: u64 = 0x503d586f30ccf2cd;
1349    pub const GET_SIGNAL_REPORT: u64 = 0x5d93f056e4796bb3;
1350    pub const SAE_HANDSHAKE_RESP: u64 = 0x72cd3a31ae5a54f6;
1351    pub const SAE_FRAME_TX: u64 = 0x4715ad5dc5a6340f;
1352    pub const WMM_STATUS_REQ: u64 = 0x635ecef3beb7a059;
1353    pub const ON_LINK_STATE_CHANGED: u64 = 0x4d896e5b68e488d7;
1354    pub const SET_MAC_ADDRESS: u64 = 0x211a97f6f21ae5f0;
1355    pub const INSTALL_APF_PACKET_FILTER: u64 = 0x14597eda84122115;
1356    pub const READ_APF_PACKET_FILTER_DATA: u64 = 0x6ddcf8a179553a3c;
1357    pub const SET_APF_PACKET_FILTER_ENABLED: u64 = 0x808792cade97d59;
1358    pub const GET_APF_PACKET_FILTER_ENABLED: u64 = 0x284e1725471e3ae7;
1359}
1360
1361pub mod wlan_fullmac_impl_ifc_ordinals {
1362    pub const ON_SCAN_RESULT: u64 = 0x29aa81dc570f7a3e;
1363    pub const ON_SCAN_END: u64 = 0x7cd8aff80d27073c;
1364    pub const ON_SCHEDULED_SCAN_MATCHES_AVAILABLE: u64 = 0x3036cd8b8b35e81b;
1365    pub const ON_SCHEDULED_SCAN_STOPPED_BY_FIRMWARE: u64 = 0x50353be2c3029817;
1366    pub const CONNECT_CONF: u64 = 0x3c22c6d80b2a2759;
1367    pub const ROAM_CONF: u64 = 0x368b2a5b903b3f7b;
1368    pub const ROAM_START_IND: u64 = 0x23e1d9368935e7e4;
1369    pub const ROAM_RESULT_IND: u64 = 0x7081c1b1ceea4914;
1370    pub const AUTH_IND: u64 = 0x270e1f8889650d0b;
1371    pub const DEAUTH_CONF: u64 = 0x2c94b0d7258111b7;
1372    pub const DEAUTH_IND: u64 = 0x26cd27cdadd8dbaf;
1373    pub const ASSOC_IND: u64 = 0x3e44529e3dc179ce;
1374    pub const DISASSOC_CONF: u64 = 0x7c713bcd58a76cb3;
1375    pub const DISASSOC_IND: u64 = 0x6667b381b7f3990f;
1376    pub const START_CONF: u64 = 0x3e9b9641f3ddc7fc;
1377    pub const STOP_CONF: u64 = 0x320a5ff227a4e9df;
1378    pub const EAPOL_CONF: u64 = 0x77364db9cc3970ec;
1379    pub const ON_CHANNEL_SWITCH: u64 = 0x21db0b8f71cae647;
1380    pub const SIGNAL_REPORT: u64 = 0x79679fa8789c3d9f;
1381    pub const EAPOL_IND: u64 = 0x3de8ec1eda10d1d0;
1382    pub const ON_PMK_AVAILABLE: u64 = 0x5cedd8d9be28a17e;
1383    pub const SAE_HANDSHAKE_IND: u64 = 0x4f3d53885503a1d8;
1384    pub const SAE_FRAME_RX: u64 = 0x51650906857ed4d4;
1385    pub const ON_WMM_STATUS_RESP: u64 = 0x6823a88bf3ba8b2a;
1386}
1387
1388mod internal {
1389    use super::*;
1390    unsafe impl fidl::encoding::TypeMarker for EapolTxResult {
1391        type Owned = Self;
1392
1393        #[inline(always)]
1394        fn inline_align(_context: fidl::encoding::Context) -> usize {
1395            std::mem::align_of::<u8>()
1396        }
1397
1398        #[inline(always)]
1399        fn inline_size(_context: fidl::encoding::Context) -> usize {
1400            std::mem::size_of::<u8>()
1401        }
1402
1403        #[inline(always)]
1404        fn encode_is_copy() -> bool {
1405            false
1406        }
1407
1408        #[inline(always)]
1409        fn decode_is_copy() -> bool {
1410            false
1411        }
1412    }
1413
1414    impl fidl::encoding::ValueTypeMarker for EapolTxResult {
1415        type Borrowed<'a> = Self;
1416        #[inline(always)]
1417        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1418            *value
1419        }
1420    }
1421
1422    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for EapolTxResult {
1423        #[inline]
1424        unsafe fn encode(
1425            self,
1426            encoder: &mut fidl::encoding::Encoder<'_, D>,
1427            offset: usize,
1428            _depth: fidl::encoding::Depth,
1429        ) -> fidl::Result<()> {
1430            encoder.debug_check_bounds::<Self>(offset);
1431            encoder.write_num(self.into_primitive(), offset);
1432            Ok(())
1433        }
1434    }
1435
1436    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolTxResult {
1437        #[inline(always)]
1438        fn new_empty() -> Self {
1439            Self::unknown()
1440        }
1441
1442        #[inline]
1443        unsafe fn decode(
1444            &mut self,
1445            decoder: &mut fidl::encoding::Decoder<'_, D>,
1446            offset: usize,
1447            _depth: fidl::encoding::Depth,
1448        ) -> fidl::Result<()> {
1449            decoder.debug_check_bounds::<Self>(offset);
1450            let prim = decoder.read_num::<u8>(offset);
1451
1452            *self = Self::from_primitive_allow_unknown(prim);
1453            Ok(())
1454        }
1455    }
1456    unsafe impl fidl::encoding::TypeMarker for StartResult {
1457        type Owned = Self;
1458
1459        #[inline(always)]
1460        fn inline_align(_context: fidl::encoding::Context) -> usize {
1461            std::mem::align_of::<u8>()
1462        }
1463
1464        #[inline(always)]
1465        fn inline_size(_context: fidl::encoding::Context) -> usize {
1466            std::mem::size_of::<u8>()
1467        }
1468
1469        #[inline(always)]
1470        fn encode_is_copy() -> bool {
1471            false
1472        }
1473
1474        #[inline(always)]
1475        fn decode_is_copy() -> bool {
1476            false
1477        }
1478    }
1479
1480    impl fidl::encoding::ValueTypeMarker for StartResult {
1481        type Borrowed<'a> = Self;
1482        #[inline(always)]
1483        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1484            *value
1485        }
1486    }
1487
1488    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StartResult {
1489        #[inline]
1490        unsafe fn encode(
1491            self,
1492            encoder: &mut fidl::encoding::Encoder<'_, D>,
1493            offset: usize,
1494            _depth: fidl::encoding::Depth,
1495        ) -> fidl::Result<()> {
1496            encoder.debug_check_bounds::<Self>(offset);
1497            encoder.write_num(self.into_primitive(), offset);
1498            Ok(())
1499        }
1500    }
1501
1502    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartResult {
1503        #[inline(always)]
1504        fn new_empty() -> Self {
1505            Self::unknown()
1506        }
1507
1508        #[inline]
1509        unsafe fn decode(
1510            &mut self,
1511            decoder: &mut fidl::encoding::Decoder<'_, D>,
1512            offset: usize,
1513            _depth: fidl::encoding::Depth,
1514        ) -> fidl::Result<()> {
1515            decoder.debug_check_bounds::<Self>(offset);
1516            let prim = decoder.read_num::<u8>(offset);
1517
1518            *self = Self::from_primitive_allow_unknown(prim);
1519            Ok(())
1520        }
1521    }
1522    unsafe impl fidl::encoding::TypeMarker for StopResult {
1523        type Owned = Self;
1524
1525        #[inline(always)]
1526        fn inline_align(_context: fidl::encoding::Context) -> usize {
1527            std::mem::align_of::<u8>()
1528        }
1529
1530        #[inline(always)]
1531        fn inline_size(_context: fidl::encoding::Context) -> usize {
1532            std::mem::size_of::<u8>()
1533        }
1534
1535        #[inline(always)]
1536        fn encode_is_copy() -> bool {
1537            false
1538        }
1539
1540        #[inline(always)]
1541        fn decode_is_copy() -> bool {
1542            false
1543        }
1544    }
1545
1546    impl fidl::encoding::ValueTypeMarker for StopResult {
1547        type Borrowed<'a> = Self;
1548        #[inline(always)]
1549        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1550            *value
1551        }
1552    }
1553
1554    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StopResult {
1555        #[inline]
1556        unsafe fn encode(
1557            self,
1558            encoder: &mut fidl::encoding::Encoder<'_, D>,
1559            offset: usize,
1560            _depth: fidl::encoding::Depth,
1561        ) -> fidl::Result<()> {
1562            encoder.debug_check_bounds::<Self>(offset);
1563            encoder.write_num(self.into_primitive(), offset);
1564            Ok(())
1565        }
1566    }
1567
1568    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopResult {
1569        #[inline(always)]
1570        fn new_empty() -> Self {
1571            Self::unknown()
1572        }
1573
1574        #[inline]
1575        unsafe fn decode(
1576            &mut self,
1577            decoder: &mut fidl::encoding::Decoder<'_, D>,
1578            offset: usize,
1579            _depth: fidl::encoding::Depth,
1580        ) -> fidl::Result<()> {
1581            decoder.debug_check_bounds::<Self>(offset);
1582            let prim = decoder.read_num::<u8>(offset);
1583
1584            *self = Self::from_primitive_allow_unknown(prim);
1585            Ok(())
1586        }
1587    }
1588    unsafe impl fidl::encoding::TypeMarker for WlanAssocResult {
1589        type Owned = Self;
1590
1591        #[inline(always)]
1592        fn inline_align(_context: fidl::encoding::Context) -> usize {
1593            std::mem::align_of::<u8>()
1594        }
1595
1596        #[inline(always)]
1597        fn inline_size(_context: fidl::encoding::Context) -> usize {
1598            std::mem::size_of::<u8>()
1599        }
1600
1601        #[inline(always)]
1602        fn encode_is_copy() -> bool {
1603            false
1604        }
1605
1606        #[inline(always)]
1607        fn decode_is_copy() -> bool {
1608            false
1609        }
1610    }
1611
1612    impl fidl::encoding::ValueTypeMarker for WlanAssocResult {
1613        type Borrowed<'a> = Self;
1614        #[inline(always)]
1615        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1616            *value
1617        }
1618    }
1619
1620    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1621        for WlanAssocResult
1622    {
1623        #[inline]
1624        unsafe fn encode(
1625            self,
1626            encoder: &mut fidl::encoding::Encoder<'_, D>,
1627            offset: usize,
1628            _depth: fidl::encoding::Depth,
1629        ) -> fidl::Result<()> {
1630            encoder.debug_check_bounds::<Self>(offset);
1631            encoder.write_num(self.into_primitive(), offset);
1632            Ok(())
1633        }
1634    }
1635
1636    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAssocResult {
1637        #[inline(always)]
1638        fn new_empty() -> Self {
1639            Self::unknown()
1640        }
1641
1642        #[inline]
1643        unsafe fn decode(
1644            &mut self,
1645            decoder: &mut fidl::encoding::Decoder<'_, D>,
1646            offset: usize,
1647            _depth: fidl::encoding::Depth,
1648        ) -> fidl::Result<()> {
1649            decoder.debug_check_bounds::<Self>(offset);
1650            let prim = decoder.read_num::<u8>(offset);
1651
1652            *self = Self::from_primitive_allow_unknown(prim);
1653            Ok(())
1654        }
1655    }
1656    unsafe impl fidl::encoding::TypeMarker for WlanAuthResult {
1657        type Owned = Self;
1658
1659        #[inline(always)]
1660        fn inline_align(_context: fidl::encoding::Context) -> usize {
1661            std::mem::align_of::<u8>()
1662        }
1663
1664        #[inline(always)]
1665        fn inline_size(_context: fidl::encoding::Context) -> usize {
1666            std::mem::size_of::<u8>()
1667        }
1668
1669        #[inline(always)]
1670        fn encode_is_copy() -> bool {
1671            false
1672        }
1673
1674        #[inline(always)]
1675        fn decode_is_copy() -> bool {
1676            false
1677        }
1678    }
1679
1680    impl fidl::encoding::ValueTypeMarker for WlanAuthResult {
1681        type Borrowed<'a> = Self;
1682        #[inline(always)]
1683        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1684            *value
1685        }
1686    }
1687
1688    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanAuthResult {
1689        #[inline]
1690        unsafe fn encode(
1691            self,
1692            encoder: &mut fidl::encoding::Encoder<'_, D>,
1693            offset: usize,
1694            _depth: fidl::encoding::Depth,
1695        ) -> fidl::Result<()> {
1696            encoder.debug_check_bounds::<Self>(offset);
1697            encoder.write_num(self.into_primitive(), offset);
1698            Ok(())
1699        }
1700    }
1701
1702    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAuthResult {
1703        #[inline(always)]
1704        fn new_empty() -> Self {
1705            Self::unknown()
1706        }
1707
1708        #[inline]
1709        unsafe fn decode(
1710            &mut self,
1711            decoder: &mut fidl::encoding::Decoder<'_, D>,
1712            offset: usize,
1713            _depth: fidl::encoding::Depth,
1714        ) -> fidl::Result<()> {
1715            decoder.debug_check_bounds::<Self>(offset);
1716            let prim = decoder.read_num::<u8>(offset);
1717
1718            *self = Self::from_primitive_allow_unknown(prim);
1719            Ok(())
1720        }
1721    }
1722    unsafe impl fidl::encoding::TypeMarker for WlanAuthType {
1723        type Owned = Self;
1724
1725        #[inline(always)]
1726        fn inline_align(_context: fidl::encoding::Context) -> usize {
1727            std::mem::align_of::<u8>()
1728        }
1729
1730        #[inline(always)]
1731        fn inline_size(_context: fidl::encoding::Context) -> usize {
1732            std::mem::size_of::<u8>()
1733        }
1734
1735        #[inline(always)]
1736        fn encode_is_copy() -> bool {
1737            false
1738        }
1739
1740        #[inline(always)]
1741        fn decode_is_copy() -> bool {
1742            false
1743        }
1744    }
1745
1746    impl fidl::encoding::ValueTypeMarker for WlanAuthType {
1747        type Borrowed<'a> = Self;
1748        #[inline(always)]
1749        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1750            *value
1751        }
1752    }
1753
1754    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanAuthType {
1755        #[inline]
1756        unsafe fn encode(
1757            self,
1758            encoder: &mut fidl::encoding::Encoder<'_, D>,
1759            offset: usize,
1760            _depth: fidl::encoding::Depth,
1761        ) -> fidl::Result<()> {
1762            encoder.debug_check_bounds::<Self>(offset);
1763            encoder.write_num(self.into_primitive(), offset);
1764            Ok(())
1765        }
1766    }
1767
1768    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAuthType {
1769        #[inline(always)]
1770        fn new_empty() -> Self {
1771            Self::unknown()
1772        }
1773
1774        #[inline]
1775        unsafe fn decode(
1776            &mut self,
1777            decoder: &mut fidl::encoding::Decoder<'_, D>,
1778            offset: usize,
1779            _depth: fidl::encoding::Depth,
1780        ) -> fidl::Result<()> {
1781            decoder.debug_check_bounds::<Self>(offset);
1782            let prim = decoder.read_num::<u8>(offset);
1783
1784            *self = Self::from_primitive_allow_unknown(prim);
1785            Ok(())
1786        }
1787    }
1788    unsafe impl fidl::encoding::TypeMarker for WlanScanResult {
1789        type Owned = Self;
1790
1791        #[inline(always)]
1792        fn inline_align(_context: fidl::encoding::Context) -> usize {
1793            std::mem::align_of::<u8>()
1794        }
1795
1796        #[inline(always)]
1797        fn inline_size(_context: fidl::encoding::Context) -> usize {
1798            std::mem::size_of::<u8>()
1799        }
1800
1801        #[inline(always)]
1802        fn encode_is_copy() -> bool {
1803            false
1804        }
1805
1806        #[inline(always)]
1807        fn decode_is_copy() -> bool {
1808            false
1809        }
1810    }
1811
1812    impl fidl::encoding::ValueTypeMarker for WlanScanResult {
1813        type Borrowed<'a> = Self;
1814        #[inline(always)]
1815        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1816            *value
1817        }
1818    }
1819
1820    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanScanResult {
1821        #[inline]
1822        unsafe fn encode(
1823            self,
1824            encoder: &mut fidl::encoding::Encoder<'_, D>,
1825            offset: usize,
1826            _depth: fidl::encoding::Depth,
1827        ) -> fidl::Result<()> {
1828            encoder.debug_check_bounds::<Self>(offset);
1829            encoder.write_num(self.into_primitive(), offset);
1830            Ok(())
1831        }
1832    }
1833
1834    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanScanResult {
1835        #[inline(always)]
1836        fn new_empty() -> Self {
1837            Self::unknown()
1838        }
1839
1840        #[inline]
1841        unsafe fn decode(
1842            &mut self,
1843            decoder: &mut fidl::encoding::Decoder<'_, D>,
1844            offset: usize,
1845            _depth: fidl::encoding::Depth,
1846        ) -> fidl::Result<()> {
1847            decoder.debug_check_bounds::<Self>(offset);
1848            let prim = decoder.read_num::<u8>(offset);
1849
1850            *self = Self::from_primitive_allow_unknown(prim);
1851            Ok(())
1852        }
1853    }
1854    unsafe impl fidl::encoding::TypeMarker for WlanScanType {
1855        type Owned = Self;
1856
1857        #[inline(always)]
1858        fn inline_align(_context: fidl::encoding::Context) -> usize {
1859            std::mem::align_of::<u8>()
1860        }
1861
1862        #[inline(always)]
1863        fn inline_size(_context: fidl::encoding::Context) -> usize {
1864            std::mem::size_of::<u8>()
1865        }
1866
1867        #[inline(always)]
1868        fn encode_is_copy() -> bool {
1869            false
1870        }
1871
1872        #[inline(always)]
1873        fn decode_is_copy() -> bool {
1874            false
1875        }
1876    }
1877
1878    impl fidl::encoding::ValueTypeMarker for WlanScanType {
1879        type Borrowed<'a> = Self;
1880        #[inline(always)]
1881        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1882            *value
1883        }
1884    }
1885
1886    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanScanType {
1887        #[inline]
1888        unsafe fn encode(
1889            self,
1890            encoder: &mut fidl::encoding::Encoder<'_, D>,
1891            offset: usize,
1892            _depth: fidl::encoding::Depth,
1893        ) -> fidl::Result<()> {
1894            encoder.debug_check_bounds::<Self>(offset);
1895            encoder.write_num(self.into_primitive(), offset);
1896            Ok(())
1897        }
1898    }
1899
1900    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanScanType {
1901        #[inline(always)]
1902        fn new_empty() -> Self {
1903            Self::unknown()
1904        }
1905
1906        #[inline]
1907        unsafe fn decode(
1908            &mut self,
1909            decoder: &mut fidl::encoding::Decoder<'_, D>,
1910            offset: usize,
1911            _depth: fidl::encoding::Depth,
1912        ) -> fidl::Result<()> {
1913            decoder.debug_check_bounds::<Self>(offset);
1914            let prim = decoder.read_num::<u8>(offset);
1915
1916            *self = Self::from_primitive_allow_unknown(prim);
1917            Ok(())
1918        }
1919    }
1920
1921    impl fidl::encoding::ValueTypeMarker for WlanFullmacChannelSwitchInfo {
1922        type Borrowed<'a> = &'a Self;
1923        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1924            value
1925        }
1926    }
1927
1928    unsafe impl fidl::encoding::TypeMarker for WlanFullmacChannelSwitchInfo {
1929        type Owned = Self;
1930
1931        #[inline(always)]
1932        fn inline_align(_context: fidl::encoding::Context) -> usize {
1933            1
1934        }
1935
1936        #[inline(always)]
1937        fn inline_size(_context: fidl::encoding::Context) -> usize {
1938            1
1939        }
1940        #[inline(always)]
1941        fn encode_is_copy() -> bool {
1942            true
1943        }
1944
1945        #[inline(always)]
1946        fn decode_is_copy() -> bool {
1947            true
1948        }
1949    }
1950
1951    unsafe impl<D: fidl::encoding::ResourceDialect>
1952        fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D> for &WlanFullmacChannelSwitchInfo
1953    {
1954        #[inline]
1955        unsafe fn encode(
1956            self,
1957            encoder: &mut fidl::encoding::Encoder<'_, D>,
1958            offset: usize,
1959            _depth: fidl::encoding::Depth,
1960        ) -> fidl::Result<()> {
1961            encoder.debug_check_bounds::<WlanFullmacChannelSwitchInfo>(offset);
1962            unsafe {
1963                // Copy the object into the buffer.
1964                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1965                (buf_ptr as *mut WlanFullmacChannelSwitchInfo)
1966                    .write_unaligned((self as *const WlanFullmacChannelSwitchInfo).read());
1967                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
1968                // done second because the memcpy will write garbage to these bytes.
1969            }
1970            Ok(())
1971        }
1972    }
1973    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u8, D>>
1974        fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, 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::<WlanFullmacChannelSwitchInfo>(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 WlanFullmacChannelSwitchInfo
1994    {
1995        #[inline(always)]
1996        fn new_empty() -> Self {
1997            Self { new_channel: fidl::new_empty!(u8, 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 WlanFullmacImplIfcOnChannelSwitchRequest {
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 WlanFullmacImplIfcOnChannelSwitchRequest {
2026        type Owned = Self;
2027
2028        #[inline(always)]
2029        fn inline_align(_context: fidl::encoding::Context) -> usize {
2030            1
2031        }
2032
2033        #[inline(always)]
2034        fn inline_size(_context: fidl::encoding::Context) -> usize {
2035            1
2036        }
2037        #[inline(always)]
2038        fn encode_is_copy() -> bool {
2039            true
2040        }
2041
2042        #[inline(always)]
2043        fn decode_is_copy() -> bool {
2044            true
2045        }
2046    }
2047
2048    unsafe impl<D: fidl::encoding::ResourceDialect>
2049        fidl::encoding::Encode<WlanFullmacImplIfcOnChannelSwitchRequest, D>
2050        for &WlanFullmacImplIfcOnChannelSwitchRequest
2051    {
2052        #[inline]
2053        unsafe fn encode(
2054            self,
2055            encoder: &mut fidl::encoding::Encoder<'_, D>,
2056            offset: usize,
2057            _depth: fidl::encoding::Depth,
2058        ) -> fidl::Result<()> {
2059            encoder.debug_check_bounds::<WlanFullmacImplIfcOnChannelSwitchRequest>(offset);
2060            unsafe {
2061                // Copy the object into the buffer.
2062                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2063                (buf_ptr as *mut WlanFullmacImplIfcOnChannelSwitchRequest).write_unaligned(
2064                    (self as *const WlanFullmacImplIfcOnChannelSwitchRequest).read(),
2065                );
2066                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2067                // done second because the memcpy will write garbage to these bytes.
2068            }
2069            Ok(())
2070        }
2071    }
2072    unsafe impl<
2073        D: fidl::encoding::ResourceDialect,
2074        T0: fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D>,
2075    > fidl::encoding::Encode<WlanFullmacImplIfcOnChannelSwitchRequest, D> for (T0,)
2076    {
2077        #[inline]
2078        unsafe fn encode(
2079            self,
2080            encoder: &mut fidl::encoding::Encoder<'_, D>,
2081            offset: usize,
2082            depth: fidl::encoding::Depth,
2083        ) -> fidl::Result<()> {
2084            encoder.debug_check_bounds::<WlanFullmacImplIfcOnChannelSwitchRequest>(offset);
2085            // Zero out padding regions. There's no need to apply masks
2086            // because the unmasked parts will be overwritten by fields.
2087            // Write the fields.
2088            self.0.encode(encoder, offset + 0, depth)?;
2089            Ok(())
2090        }
2091    }
2092
2093    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2094        for WlanFullmacImplIfcOnChannelSwitchRequest
2095    {
2096        #[inline(always)]
2097        fn new_empty() -> Self {
2098            Self { ind: fidl::new_empty!(WlanFullmacChannelSwitchInfo, D) }
2099        }
2100
2101        #[inline]
2102        unsafe fn decode(
2103            &mut self,
2104            decoder: &mut fidl::encoding::Decoder<'_, D>,
2105            offset: usize,
2106            _depth: fidl::encoding::Depth,
2107        ) -> fidl::Result<()> {
2108            decoder.debug_check_bounds::<Self>(offset);
2109            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2110            // Verify that padding bytes are zero.
2111            // Copy from the buffer into the object.
2112            unsafe {
2113                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
2114            }
2115            Ok(())
2116        }
2117    }
2118
2119    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnWmmStatusRespRequest {
2120        type Borrowed<'a> = &'a Self;
2121        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2122            value
2123        }
2124    }
2125
2126    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnWmmStatusRespRequest {
2127        type Owned = Self;
2128
2129        #[inline(always)]
2130        fn inline_align(_context: fidl::encoding::Context) -> usize {
2131            4
2132        }
2133
2134        #[inline(always)]
2135        fn inline_size(_context: fidl::encoding::Context) -> usize {
2136            40
2137        }
2138    }
2139
2140    unsafe impl<D: fidl::encoding::ResourceDialect>
2141        fidl::encoding::Encode<WlanFullmacImplIfcOnWmmStatusRespRequest, D>
2142        for &WlanFullmacImplIfcOnWmmStatusRespRequest
2143    {
2144        #[inline]
2145        unsafe fn encode(
2146            self,
2147            encoder: &mut fidl::encoding::Encoder<'_, D>,
2148            offset: usize,
2149            _depth: fidl::encoding::Depth,
2150        ) -> fidl::Result<()> {
2151            encoder.debug_check_bounds::<WlanFullmacImplIfcOnWmmStatusRespRequest>(offset);
2152            // Delegate to tuple encoding.
2153            fidl::encoding::Encode::<WlanFullmacImplIfcOnWmmStatusRespRequest, D>::encode(
2154                (
2155                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
2156                    <fidl_fuchsia_wlan_driver_common::WlanWmmParameters as fidl::encoding::ValueTypeMarker>::borrow(&self.wmm_params),
2157                ),
2158                encoder, offset, _depth
2159            )
2160        }
2161    }
2162    unsafe impl<
2163        D: fidl::encoding::ResourceDialect,
2164        T0: fidl::encoding::Encode<i32, D>,
2165        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_driver_common::WlanWmmParameters, D>,
2166    > fidl::encoding::Encode<WlanFullmacImplIfcOnWmmStatusRespRequest, D> for (T0, T1)
2167    {
2168        #[inline]
2169        unsafe fn encode(
2170            self,
2171            encoder: &mut fidl::encoding::Encoder<'_, D>,
2172            offset: usize,
2173            depth: fidl::encoding::Depth,
2174        ) -> fidl::Result<()> {
2175            encoder.debug_check_bounds::<WlanFullmacImplIfcOnWmmStatusRespRequest>(offset);
2176            // Zero out padding regions. There's no need to apply masks
2177            // because the unmasked parts will be overwritten by fields.
2178            unsafe {
2179                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(36);
2180                (ptr as *mut u32).write_unaligned(0);
2181            }
2182            // Write the fields.
2183            self.0.encode(encoder, offset + 0, depth)?;
2184            self.1.encode(encoder, offset + 4, depth)?;
2185            Ok(())
2186        }
2187    }
2188
2189    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2190        for WlanFullmacImplIfcOnWmmStatusRespRequest
2191    {
2192        #[inline(always)]
2193        fn new_empty() -> Self {
2194            Self {
2195                status: fidl::new_empty!(i32, D),
2196                wmm_params: fidl::new_empty!(fidl_fuchsia_wlan_driver_common::WlanWmmParameters, D),
2197            }
2198        }
2199
2200        #[inline]
2201        unsafe fn decode(
2202            &mut self,
2203            decoder: &mut fidl::encoding::Decoder<'_, D>,
2204            offset: usize,
2205            _depth: fidl::encoding::Depth,
2206        ) -> fidl::Result<()> {
2207            decoder.debug_check_bounds::<Self>(offset);
2208            // Verify that padding bytes are zero.
2209            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(36) };
2210            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2211            let mask = 0xffff0000u32;
2212            let maskedval = padval & mask;
2213            if maskedval != 0 {
2214                return Err(fidl::Error::NonZeroPadding {
2215                    padding_start: offset + 36 + ((mask as u64).trailing_zeros() / 8) as usize,
2216                });
2217            }
2218            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
2219            fidl::decode!(
2220                fidl_fuchsia_wlan_driver_common::WlanWmmParameters,
2221                D,
2222                &mut self.wmm_params,
2223                decoder,
2224                offset + 4,
2225                _depth
2226            )?;
2227            Ok(())
2228        }
2229    }
2230
2231    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2232        type Borrowed<'a> = &'a Self;
2233        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2234            value
2235        }
2236    }
2237
2238    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2239        type Owned = Self;
2240
2241        #[inline(always)]
2242        fn inline_align(_context: fidl::encoding::Context) -> usize {
2243            8
2244        }
2245
2246        #[inline(always)]
2247        fn inline_size(_context: fidl::encoding::Context) -> usize {
2248            16
2249        }
2250    }
2251
2252    unsafe impl<D: fidl::encoding::ResourceDialect>
2253        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D>
2254        for &WlanFullmacImplIfcSaeFrameRxRequest
2255    {
2256        #[inline]
2257        unsafe fn encode(
2258            self,
2259            encoder: &mut fidl::encoding::Encoder<'_, D>,
2260            offset: usize,
2261            _depth: fidl::encoding::Depth,
2262        ) -> fidl::Result<()> {
2263            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2264            // Delegate to tuple encoding.
2265            fidl::encoding::Encode::<WlanFullmacImplIfcSaeFrameRxRequest, D>::encode(
2266                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2267                encoder,
2268                offset,
2269                _depth,
2270            )
2271        }
2272    }
2273    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2274        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D> for (T0,)
2275    {
2276        #[inline]
2277        unsafe fn encode(
2278            self,
2279            encoder: &mut fidl::encoding::Encoder<'_, D>,
2280            offset: usize,
2281            depth: fidl::encoding::Depth,
2282        ) -> fidl::Result<()> {
2283            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2284            // Zero out padding regions. There's no need to apply masks
2285            // because the unmasked parts will be overwritten by fields.
2286            // Write the fields.
2287            self.0.encode(encoder, offset + 0, depth)?;
2288            Ok(())
2289        }
2290    }
2291
2292    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2293        for WlanFullmacImplIfcSaeFrameRxRequest
2294    {
2295        #[inline(always)]
2296        fn new_empty() -> Self {
2297            Self { frame: fidl::new_empty!(SaeFrame, D) }
2298        }
2299
2300        #[inline]
2301        unsafe fn decode(
2302            &mut self,
2303            decoder: &mut fidl::encoding::Decoder<'_, D>,
2304            offset: usize,
2305            _depth: fidl::encoding::Depth,
2306        ) -> fidl::Result<()> {
2307            decoder.debug_check_bounds::<Self>(offset);
2308            // Verify that padding bytes are zero.
2309            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2310            Ok(())
2311        }
2312    }
2313
2314    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSignalReportRequest {
2315        type Borrowed<'a> = &'a Self;
2316        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2317            value
2318        }
2319    }
2320
2321    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSignalReportRequest {
2322        type Owned = Self;
2323
2324        #[inline(always)]
2325        fn inline_align(_context: fidl::encoding::Context) -> usize {
2326            1
2327        }
2328
2329        #[inline(always)]
2330        fn inline_size(_context: fidl::encoding::Context) -> usize {
2331            2
2332        }
2333        #[inline(always)]
2334        fn encode_is_copy() -> bool {
2335            true
2336        }
2337
2338        #[inline(always)]
2339        fn decode_is_copy() -> bool {
2340            true
2341        }
2342    }
2343
2344    unsafe impl<D: fidl::encoding::ResourceDialect>
2345        fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D>
2346        for &WlanFullmacImplIfcSignalReportRequest
2347    {
2348        #[inline]
2349        unsafe fn encode(
2350            self,
2351            encoder: &mut fidl::encoding::Encoder<'_, D>,
2352            offset: usize,
2353            _depth: fidl::encoding::Depth,
2354        ) -> fidl::Result<()> {
2355            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2356            unsafe {
2357                // Copy the object into the buffer.
2358                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2359                (buf_ptr as *mut WlanFullmacImplIfcSignalReportRequest)
2360                    .write_unaligned((self as *const WlanFullmacImplIfcSignalReportRequest).read());
2361                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2362                // done second because the memcpy will write garbage to these bytes.
2363            }
2364            Ok(())
2365        }
2366    }
2367    unsafe impl<
2368        D: fidl::encoding::ResourceDialect,
2369        T0: fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>,
2370    > fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D> for (T0,)
2371    {
2372        #[inline]
2373        unsafe fn encode(
2374            self,
2375            encoder: &mut fidl::encoding::Encoder<'_, D>,
2376            offset: usize,
2377            depth: fidl::encoding::Depth,
2378        ) -> fidl::Result<()> {
2379            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2380            // Zero out padding regions. There's no need to apply masks
2381            // because the unmasked parts will be overwritten by fields.
2382            // Write the fields.
2383            self.0.encode(encoder, offset + 0, depth)?;
2384            Ok(())
2385        }
2386    }
2387
2388    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2389        for WlanFullmacImplIfcSignalReportRequest
2390    {
2391        #[inline(always)]
2392        fn new_empty() -> Self {
2393            Self { ind: fidl::new_empty!(WlanFullmacSignalReportIndication, D) }
2394        }
2395
2396        #[inline]
2397        unsafe fn decode(
2398            &mut self,
2399            decoder: &mut fidl::encoding::Decoder<'_, D>,
2400            offset: usize,
2401            _depth: fidl::encoding::Depth,
2402        ) -> fidl::Result<()> {
2403            decoder.debug_check_bounds::<Self>(offset);
2404            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2405            // Verify that padding bytes are zero.
2406            // Copy from the buffer into the object.
2407            unsafe {
2408                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
2409            }
2410            Ok(())
2411        }
2412    }
2413
2414    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeFrameTxRequest {
2415        type Borrowed<'a> = &'a Self;
2416        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2417            value
2418        }
2419    }
2420
2421    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeFrameTxRequest {
2422        type Owned = Self;
2423
2424        #[inline(always)]
2425        fn inline_align(_context: fidl::encoding::Context) -> usize {
2426            8
2427        }
2428
2429        #[inline(always)]
2430        fn inline_size(_context: fidl::encoding::Context) -> usize {
2431            16
2432        }
2433    }
2434
2435    unsafe impl<D: fidl::encoding::ResourceDialect>
2436        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D>
2437        for &WlanFullmacImplSaeFrameTxRequest
2438    {
2439        #[inline]
2440        unsafe fn encode(
2441            self,
2442            encoder: &mut fidl::encoding::Encoder<'_, D>,
2443            offset: usize,
2444            _depth: fidl::encoding::Depth,
2445        ) -> fidl::Result<()> {
2446            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2447            // Delegate to tuple encoding.
2448            fidl::encoding::Encode::<WlanFullmacImplSaeFrameTxRequest, D>::encode(
2449                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2450                encoder,
2451                offset,
2452                _depth,
2453            )
2454        }
2455    }
2456    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2457        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D> for (T0,)
2458    {
2459        #[inline]
2460        unsafe fn encode(
2461            self,
2462            encoder: &mut fidl::encoding::Encoder<'_, D>,
2463            offset: usize,
2464            depth: fidl::encoding::Depth,
2465        ) -> fidl::Result<()> {
2466            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2467            // Zero out padding regions. There's no need to apply masks
2468            // because the unmasked parts will be overwritten by fields.
2469            // Write the fields.
2470            self.0.encode(encoder, offset + 0, depth)?;
2471            Ok(())
2472        }
2473    }
2474
2475    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2476        for WlanFullmacImplSaeFrameTxRequest
2477    {
2478        #[inline(always)]
2479        fn new_empty() -> Self {
2480            Self { frame: fidl::new_empty!(SaeFrame, D) }
2481        }
2482
2483        #[inline]
2484        unsafe fn decode(
2485            &mut self,
2486            decoder: &mut fidl::encoding::Decoder<'_, D>,
2487            offset: usize,
2488            _depth: fidl::encoding::Depth,
2489        ) -> fidl::Result<()> {
2490            decoder.debug_check_bounds::<Self>(offset);
2491            // Verify that padding bytes are zero.
2492            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2493            Ok(())
2494        }
2495    }
2496
2497    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysResponse {
2498        type Borrowed<'a> = &'a Self;
2499        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2500            value
2501        }
2502    }
2503
2504    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysResponse {
2505        type Owned = Self;
2506
2507        #[inline(always)]
2508        fn inline_align(_context: fidl::encoding::Context) -> usize {
2509            8
2510        }
2511
2512        #[inline(always)]
2513        fn inline_size(_context: fidl::encoding::Context) -> usize {
2514            16
2515        }
2516    }
2517
2518    unsafe impl<D: fidl::encoding::ResourceDialect>
2519        fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D>
2520        for &WlanFullmacImplSetKeysResponse
2521    {
2522        #[inline]
2523        unsafe fn encode(
2524            self,
2525            encoder: &mut fidl::encoding::Encoder<'_, D>,
2526            offset: usize,
2527            _depth: fidl::encoding::Depth,
2528        ) -> fidl::Result<()> {
2529            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2530            // Delegate to tuple encoding.
2531            fidl::encoding::Encode::<WlanFullmacImplSetKeysResponse, D>::encode(
2532                (<WlanFullmacSetKeysResp as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
2533                encoder,
2534                offset,
2535                _depth,
2536            )
2537        }
2538    }
2539    unsafe impl<
2540        D: fidl::encoding::ResourceDialect,
2541        T0: fidl::encoding::Encode<WlanFullmacSetKeysResp, D>,
2542    > fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D> for (T0,)
2543    {
2544        #[inline]
2545        unsafe fn encode(
2546            self,
2547            encoder: &mut fidl::encoding::Encoder<'_, D>,
2548            offset: usize,
2549            depth: fidl::encoding::Depth,
2550        ) -> fidl::Result<()> {
2551            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2552            // Zero out padding regions. There's no need to apply masks
2553            // because the unmasked parts will be overwritten by fields.
2554            // Write the fields.
2555            self.0.encode(encoder, offset + 0, depth)?;
2556            Ok(())
2557        }
2558    }
2559
2560    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2561        for WlanFullmacImplSetKeysResponse
2562    {
2563        #[inline(always)]
2564        fn new_empty() -> Self {
2565            Self { resp: fidl::new_empty!(WlanFullmacSetKeysResp, D) }
2566        }
2567
2568        #[inline]
2569        unsafe fn decode(
2570            &mut self,
2571            decoder: &mut fidl::encoding::Decoder<'_, D>,
2572            offset: usize,
2573            _depth: fidl::encoding::Depth,
2574        ) -> fidl::Result<()> {
2575            decoder.debug_check_bounds::<Self>(offset);
2576            // Verify that padding bytes are zero.
2577            fidl::decode!(WlanFullmacSetKeysResp, D, &mut self.resp, decoder, offset + 0, _depth)?;
2578            Ok(())
2579        }
2580    }
2581
2582    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetMacAddressRequest {
2583        type Borrowed<'a> = &'a Self;
2584        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2585            value
2586        }
2587    }
2588
2589    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetMacAddressRequest {
2590        type Owned = Self;
2591
2592        #[inline(always)]
2593        fn inline_align(_context: fidl::encoding::Context) -> usize {
2594            1
2595        }
2596
2597        #[inline(always)]
2598        fn inline_size(_context: fidl::encoding::Context) -> usize {
2599            6
2600        }
2601        #[inline(always)]
2602        fn encode_is_copy() -> bool {
2603            true
2604        }
2605
2606        #[inline(always)]
2607        fn decode_is_copy() -> bool {
2608            true
2609        }
2610    }
2611
2612    unsafe impl<D: fidl::encoding::ResourceDialect>
2613        fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D>
2614        for &WlanFullmacImplSetMacAddressRequest
2615    {
2616        #[inline]
2617        unsafe fn encode(
2618            self,
2619            encoder: &mut fidl::encoding::Encoder<'_, D>,
2620            offset: usize,
2621            _depth: fidl::encoding::Depth,
2622        ) -> fidl::Result<()> {
2623            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2624            unsafe {
2625                // Copy the object into the buffer.
2626                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2627                (buf_ptr as *mut WlanFullmacImplSetMacAddressRequest)
2628                    .write_unaligned((self as *const WlanFullmacImplSetMacAddressRequest).read());
2629                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2630                // done second because the memcpy will write garbage to these bytes.
2631            }
2632            Ok(())
2633        }
2634    }
2635    unsafe impl<
2636        D: fidl::encoding::ResourceDialect,
2637        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2638    > fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D> for (T0,)
2639    {
2640        #[inline]
2641        unsafe fn encode(
2642            self,
2643            encoder: &mut fidl::encoding::Encoder<'_, D>,
2644            offset: usize,
2645            depth: fidl::encoding::Depth,
2646        ) -> fidl::Result<()> {
2647            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2648            // Zero out padding regions. There's no need to apply masks
2649            // because the unmasked parts will be overwritten by fields.
2650            // Write the fields.
2651            self.0.encode(encoder, offset + 0, depth)?;
2652            Ok(())
2653        }
2654    }
2655
2656    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2657        for WlanFullmacImplSetMacAddressRequest
2658    {
2659        #[inline(always)]
2660        fn new_empty() -> Self {
2661            Self { mac_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
2662        }
2663
2664        #[inline]
2665        unsafe fn decode(
2666            &mut self,
2667            decoder: &mut fidl::encoding::Decoder<'_, D>,
2668            offset: usize,
2669            _depth: fidl::encoding::Depth,
2670        ) -> fidl::Result<()> {
2671            decoder.debug_check_bounds::<Self>(offset);
2672            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2673            // Verify that padding bytes are zero.
2674            // Copy from the buffer into the object.
2675            unsafe {
2676                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
2677            }
2678            Ok(())
2679        }
2680    }
2681
2682    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2683        type Borrowed<'a> = &'a Self;
2684        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2685            value
2686        }
2687    }
2688
2689    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2690        type Owned = Self;
2691
2692        #[inline(always)]
2693        fn inline_align(_context: fidl::encoding::Context) -> usize {
2694            8
2695        }
2696
2697        #[inline(always)]
2698        fn inline_size(_context: fidl::encoding::Context) -> usize {
2699            16
2700        }
2701    }
2702
2703    unsafe impl<D: fidl::encoding::ResourceDialect>
2704        fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D>
2705        for &WlanFullmacImplGetIfaceHistogramStatsResponse
2706    {
2707        #[inline]
2708        unsafe fn encode(
2709            self,
2710            encoder: &mut fidl::encoding::Encoder<'_, D>,
2711            offset: usize,
2712            _depth: fidl::encoding::Depth,
2713        ) -> fidl::Result<()> {
2714            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2715            // Delegate to tuple encoding.
2716            fidl::encoding::Encode::<WlanFullmacImplGetIfaceHistogramStatsResponse, D>::encode(
2717                (
2718                    <fidl_fuchsia_wlan_stats_common::IfaceHistogramStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2719                ),
2720                encoder, offset, _depth
2721            )
2722        }
2723    }
2724    unsafe impl<
2725        D: fidl::encoding::ResourceDialect,
2726        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats_common::IfaceHistogramStats, D>,
2727    > fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D> for (T0,)
2728    {
2729        #[inline]
2730        unsafe fn encode(
2731            self,
2732            encoder: &mut fidl::encoding::Encoder<'_, D>,
2733            offset: usize,
2734            depth: fidl::encoding::Depth,
2735        ) -> fidl::Result<()> {
2736            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2737            // Zero out padding regions. There's no need to apply masks
2738            // because the unmasked parts will be overwritten by fields.
2739            // Write the fields.
2740            self.0.encode(encoder, offset + 0, depth)?;
2741            Ok(())
2742        }
2743    }
2744
2745    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2746        for WlanFullmacImplGetIfaceHistogramStatsResponse
2747    {
2748        #[inline(always)]
2749        fn new_empty() -> Self {
2750            Self { stats: fidl::new_empty!(fidl_fuchsia_wlan_stats_common::IfaceHistogramStats, D) }
2751        }
2752
2753        #[inline]
2754        unsafe fn decode(
2755            &mut self,
2756            decoder: &mut fidl::encoding::Decoder<'_, D>,
2757            offset: usize,
2758            _depth: fidl::encoding::Depth,
2759        ) -> fidl::Result<()> {
2760            decoder.debug_check_bounds::<Self>(offset);
2761            // Verify that padding bytes are zero.
2762            fidl::decode!(
2763                fidl_fuchsia_wlan_stats_common::IfaceHistogramStats,
2764                D,
2765                &mut self.stats,
2766                decoder,
2767                offset + 0,
2768                _depth
2769            )?;
2770            Ok(())
2771        }
2772    }
2773
2774    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2775        type Borrowed<'a> = &'a Self;
2776        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2777            value
2778        }
2779    }
2780
2781    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2782        type Owned = Self;
2783
2784        #[inline(always)]
2785        fn inline_align(_context: fidl::encoding::Context) -> usize {
2786            8
2787        }
2788
2789        #[inline(always)]
2790        fn inline_size(_context: fidl::encoding::Context) -> usize {
2791            16
2792        }
2793    }
2794
2795    unsafe impl<D: fidl::encoding::ResourceDialect>
2796        fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D>
2797        for &WlanFullmacImplGetIfaceStatsResponse
2798    {
2799        #[inline]
2800        unsafe fn encode(
2801            self,
2802            encoder: &mut fidl::encoding::Encoder<'_, D>,
2803            offset: usize,
2804            _depth: fidl::encoding::Depth,
2805        ) -> fidl::Result<()> {
2806            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2807            // Delegate to tuple encoding.
2808            fidl::encoding::Encode::<WlanFullmacImplGetIfaceStatsResponse, D>::encode(
2809                (
2810                    <fidl_fuchsia_wlan_stats_common::IfaceStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2811                ),
2812                encoder, offset, _depth
2813            )
2814        }
2815    }
2816    unsafe impl<
2817        D: fidl::encoding::ResourceDialect,
2818        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats_common::IfaceStats, D>,
2819    > fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D> for (T0,)
2820    {
2821        #[inline]
2822        unsafe fn encode(
2823            self,
2824            encoder: &mut fidl::encoding::Encoder<'_, D>,
2825            offset: usize,
2826            depth: fidl::encoding::Depth,
2827        ) -> fidl::Result<()> {
2828            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2829            // Zero out padding regions. There's no need to apply masks
2830            // because the unmasked parts will be overwritten by fields.
2831            // Write the fields.
2832            self.0.encode(encoder, offset + 0, depth)?;
2833            Ok(())
2834        }
2835    }
2836
2837    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2838        for WlanFullmacImplGetIfaceStatsResponse
2839    {
2840        #[inline(always)]
2841        fn new_empty() -> Self {
2842            Self { stats: fidl::new_empty!(fidl_fuchsia_wlan_stats_common::IfaceStats, D) }
2843        }
2844
2845        #[inline]
2846        unsafe fn decode(
2847            &mut self,
2848            decoder: &mut fidl::encoding::Decoder<'_, D>,
2849            offset: usize,
2850            _depth: fidl::encoding::Depth,
2851        ) -> fidl::Result<()> {
2852            decoder.debug_check_bounds::<Self>(offset);
2853            // Verify that padding bytes are zero.
2854            fidl::decode!(
2855                fidl_fuchsia_wlan_stats_common::IfaceStats,
2856                D,
2857                &mut self.stats,
2858                decoder,
2859                offset + 0,
2860                _depth
2861            )?;
2862            Ok(())
2863        }
2864    }
2865
2866    impl fidl::encoding::ValueTypeMarker for WlanFullmacRssiStats {
2867        type Borrowed<'a> = &'a Self;
2868        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2869            value
2870        }
2871    }
2872
2873    unsafe impl fidl::encoding::TypeMarker for WlanFullmacRssiStats {
2874        type Owned = Self;
2875
2876        #[inline(always)]
2877        fn inline_align(_context: fidl::encoding::Context) -> usize {
2878            8
2879        }
2880
2881        #[inline(always)]
2882        fn inline_size(_context: fidl::encoding::Context) -> usize {
2883            16
2884        }
2885    }
2886
2887    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanFullmacRssiStats, D>
2888        for &WlanFullmacRssiStats
2889    {
2890        #[inline]
2891        unsafe fn encode(
2892            self,
2893            encoder: &mut fidl::encoding::Encoder<'_, D>,
2894            offset: usize,
2895            _depth: fidl::encoding::Depth,
2896        ) -> fidl::Result<()> {
2897            encoder.debug_check_bounds::<WlanFullmacRssiStats>(offset);
2898            // Delegate to tuple encoding.
2899            fidl::encoding::Encode::<WlanFullmacRssiStats, D>::encode(
2900                (
2901                    <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.hist),
2902                ),
2903                encoder, offset, _depth
2904            )
2905        }
2906    }
2907    unsafe impl<
2908        D: fidl::encoding::ResourceDialect,
2909        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
2910    > fidl::encoding::Encode<WlanFullmacRssiStats, D> for (T0,)
2911    {
2912        #[inline]
2913        unsafe fn encode(
2914            self,
2915            encoder: &mut fidl::encoding::Encoder<'_, D>,
2916            offset: usize,
2917            depth: fidl::encoding::Depth,
2918        ) -> fidl::Result<()> {
2919            encoder.debug_check_bounds::<WlanFullmacRssiStats>(offset);
2920            // Zero out padding regions. There's no need to apply masks
2921            // because the unmasked parts will be overwritten by fields.
2922            // Write the fields.
2923            self.0.encode(encoder, offset + 0, depth)?;
2924            Ok(())
2925        }
2926    }
2927
2928    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanFullmacRssiStats {
2929        #[inline(always)]
2930        fn new_empty() -> Self {
2931            Self { hist: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D) }
2932        }
2933
2934        #[inline]
2935        unsafe fn decode(
2936            &mut self,
2937            decoder: &mut fidl::encoding::Decoder<'_, D>,
2938            offset: usize,
2939            _depth: fidl::encoding::Depth,
2940        ) -> fidl::Result<()> {
2941            decoder.debug_check_bounds::<Self>(offset);
2942            // Verify that padding bytes are zero.
2943            fidl::decode!(
2944                fidl::encoding::UnboundedVector<u64>,
2945                D,
2946                &mut self.hist,
2947                decoder,
2948                offset + 0,
2949                _depth
2950            )?;
2951            Ok(())
2952        }
2953    }
2954
2955    impl fidl::encoding::ValueTypeMarker for WlanFullmacSetKeysResp {
2956        type Borrowed<'a> = &'a Self;
2957        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2958            value
2959        }
2960    }
2961
2962    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSetKeysResp {
2963        type Owned = Self;
2964
2965        #[inline(always)]
2966        fn inline_align(_context: fidl::encoding::Context) -> usize {
2967            8
2968        }
2969
2970        #[inline(always)]
2971        fn inline_size(_context: fidl::encoding::Context) -> usize {
2972            16
2973        }
2974    }
2975
2976    unsafe impl<D: fidl::encoding::ResourceDialect>
2977        fidl::encoding::Encode<WlanFullmacSetKeysResp, D> for &WlanFullmacSetKeysResp
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::<WlanFullmacSetKeysResp>(offset);
2987            // Delegate to tuple encoding.
2988            fidl::encoding::Encode::<WlanFullmacSetKeysResp, D>::encode(
2989                (<fidl::encoding::Vector<i32, 4> as fidl::encoding::ValueTypeMarker>::borrow(
2990                    &self.statuslist,
2991                ),),
2992                encoder,
2993                offset,
2994                _depth,
2995            )
2996        }
2997    }
2998    unsafe impl<
2999        D: fidl::encoding::ResourceDialect,
3000        T0: fidl::encoding::Encode<fidl::encoding::Vector<i32, 4>, D>,
3001    > fidl::encoding::Encode<WlanFullmacSetKeysResp, D> for (T0,)
3002    {
3003        #[inline]
3004        unsafe fn encode(
3005            self,
3006            encoder: &mut fidl::encoding::Encoder<'_, D>,
3007            offset: usize,
3008            depth: fidl::encoding::Depth,
3009        ) -> fidl::Result<()> {
3010            encoder.debug_check_bounds::<WlanFullmacSetKeysResp>(offset);
3011            // Zero out padding regions. There's no need to apply masks
3012            // because the unmasked parts will be overwritten by fields.
3013            // Write the fields.
3014            self.0.encode(encoder, offset + 0, depth)?;
3015            Ok(())
3016        }
3017    }
3018
3019    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3020        for WlanFullmacSetKeysResp
3021    {
3022        #[inline(always)]
3023        fn new_empty() -> Self {
3024            Self { statuslist: fidl::new_empty!(fidl::encoding::Vector<i32, 4>, D) }
3025        }
3026
3027        #[inline]
3028        unsafe fn decode(
3029            &mut self,
3030            decoder: &mut fidl::encoding::Decoder<'_, D>,
3031            offset: usize,
3032            _depth: fidl::encoding::Depth,
3033        ) -> fidl::Result<()> {
3034            decoder.debug_check_bounds::<Self>(offset);
3035            // Verify that padding bytes are zero.
3036            fidl::decode!(fidl::encoding::Vector<i32, 4>, D, &mut self.statuslist, decoder, offset + 0, _depth)?;
3037            Ok(())
3038        }
3039    }
3040
3041    impl fidl::encoding::ValueTypeMarker for WlanFullmacSignalReportIndication {
3042        type Borrowed<'a> = &'a Self;
3043        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3044            value
3045        }
3046    }
3047
3048    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSignalReportIndication {
3049        type Owned = Self;
3050
3051        #[inline(always)]
3052        fn inline_align(_context: fidl::encoding::Context) -> usize {
3053            1
3054        }
3055
3056        #[inline(always)]
3057        fn inline_size(_context: fidl::encoding::Context) -> usize {
3058            2
3059        }
3060        #[inline(always)]
3061        fn encode_is_copy() -> bool {
3062            true
3063        }
3064
3065        #[inline(always)]
3066        fn decode_is_copy() -> bool {
3067            true
3068        }
3069    }
3070
3071    unsafe impl<D: fidl::encoding::ResourceDialect>
3072        fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>
3073        for &WlanFullmacSignalReportIndication
3074    {
3075        #[inline]
3076        unsafe fn encode(
3077            self,
3078            encoder: &mut fidl::encoding::Encoder<'_, D>,
3079            offset: usize,
3080            _depth: fidl::encoding::Depth,
3081        ) -> fidl::Result<()> {
3082            encoder.debug_check_bounds::<WlanFullmacSignalReportIndication>(offset);
3083            unsafe {
3084                // Copy the object into the buffer.
3085                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3086                (buf_ptr as *mut WlanFullmacSignalReportIndication)
3087                    .write_unaligned((self as *const WlanFullmacSignalReportIndication).read());
3088                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3089                // done second because the memcpy will write garbage to these bytes.
3090            }
3091            Ok(())
3092        }
3093    }
3094    unsafe impl<
3095        D: fidl::encoding::ResourceDialect,
3096        T0: fidl::encoding::Encode<i8, D>,
3097        T1: fidl::encoding::Encode<i8, D>,
3098    > fidl::encoding::Encode<WlanFullmacSignalReportIndication, D> for (T0, T1)
3099    {
3100        #[inline]
3101        unsafe fn encode(
3102            self,
3103            encoder: &mut fidl::encoding::Encoder<'_, D>,
3104            offset: usize,
3105            depth: fidl::encoding::Depth,
3106        ) -> fidl::Result<()> {
3107            encoder.debug_check_bounds::<WlanFullmacSignalReportIndication>(offset);
3108            // Zero out padding regions. There's no need to apply masks
3109            // because the unmasked parts will be overwritten by fields.
3110            // Write the fields.
3111            self.0.encode(encoder, offset + 0, depth)?;
3112            self.1.encode(encoder, offset + 1, depth)?;
3113            Ok(())
3114        }
3115    }
3116
3117    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3118        for WlanFullmacSignalReportIndication
3119    {
3120        #[inline(always)]
3121        fn new_empty() -> Self {
3122            Self { rssi_dbm: fidl::new_empty!(i8, D), snr_db: fidl::new_empty!(i8, D) }
3123        }
3124
3125        #[inline]
3126        unsafe fn decode(
3127            &mut self,
3128            decoder: &mut fidl::encoding::Decoder<'_, D>,
3129            offset: usize,
3130            _depth: fidl::encoding::Depth,
3131        ) -> fidl::Result<()> {
3132            decoder.debug_check_bounds::<Self>(offset);
3133            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3134            // Verify that padding bytes are zero.
3135            // Copy from the buffer into the object.
3136            unsafe {
3137                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
3138            }
3139            Ok(())
3140        }
3141    }
3142
3143    impl BandCapability {
3144        #[inline(always)]
3145        fn max_ordinal_present(&self) -> u64 {
3146            if let Some(_) = self.operating_channels {
3147                return 5;
3148            }
3149            if let Some(_) = self.vht_caps {
3150                return 4;
3151            }
3152            if let Some(_) = self.ht_caps {
3153                return 3;
3154            }
3155            if let Some(_) = self.basic_rates {
3156                return 2;
3157            }
3158            if let Some(_) = self.band {
3159                return 1;
3160            }
3161            0
3162        }
3163    }
3164
3165    impl fidl::encoding::ValueTypeMarker for BandCapability {
3166        type Borrowed<'a> = &'a Self;
3167        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3168            value
3169        }
3170    }
3171
3172    unsafe impl fidl::encoding::TypeMarker for BandCapability {
3173        type Owned = Self;
3174
3175        #[inline(always)]
3176        fn inline_align(_context: fidl::encoding::Context) -> usize {
3177            8
3178        }
3179
3180        #[inline(always)]
3181        fn inline_size(_context: fidl::encoding::Context) -> usize {
3182            16
3183        }
3184    }
3185
3186    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandCapability, D>
3187        for &BandCapability
3188    {
3189        unsafe fn encode(
3190            self,
3191            encoder: &mut fidl::encoding::Encoder<'_, D>,
3192            offset: usize,
3193            mut depth: fidl::encoding::Depth,
3194        ) -> fidl::Result<()> {
3195            encoder.debug_check_bounds::<BandCapability>(offset);
3196            // Vector header
3197            let max_ordinal: u64 = self.max_ordinal_present();
3198            encoder.write_num(max_ordinal, offset);
3199            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3200            // Calling encoder.out_of_line_offset(0) is not allowed.
3201            if max_ordinal == 0 {
3202                return Ok(());
3203            }
3204            depth.increment()?;
3205            let envelope_size = 8;
3206            let bytes_len = max_ordinal as usize * envelope_size;
3207            #[allow(unused_variables)]
3208            let offset = encoder.out_of_line_offset(bytes_len);
3209            let mut _prev_end_offset: usize = 0;
3210            if 1 > max_ordinal {
3211                return Ok(());
3212            }
3213
3214            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3215            // are envelope_size bytes.
3216            let cur_offset: usize = (1 - 1) * envelope_size;
3217
3218            // Zero reserved fields.
3219            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3220
3221            // Safety:
3222            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3223            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3224            //   envelope_size bytes, there is always sufficient room.
3225            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::WlanBand, D>(
3226            self.band.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow),
3227            encoder, offset + cur_offset, depth
3228        )?;
3229
3230            _prev_end_offset = cur_offset + envelope_size;
3231            if 2 > max_ordinal {
3232                return Ok(());
3233            }
3234
3235            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3236            // are envelope_size bytes.
3237            let cur_offset: usize = (2 - 1) * envelope_size;
3238
3239            // Zero reserved fields.
3240            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3241
3242            // Safety:
3243            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3244            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3245            //   envelope_size bytes, there is always sufficient room.
3246            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 12>, D>(
3247                self.basic_rates.as_ref().map(
3248                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::ValueTypeMarker>::borrow,
3249                ),
3250                encoder,
3251                offset + cur_offset,
3252                depth,
3253            )?;
3254
3255            _prev_end_offset = cur_offset + envelope_size;
3256            if 3 > max_ordinal {
3257                return Ok(());
3258            }
3259
3260            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3261            // are envelope_size bytes.
3262            let cur_offset: usize = (3 - 1) * envelope_size;
3263
3264            // Zero reserved fields.
3265            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3266
3267            // Safety:
3268            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3269            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3270            //   envelope_size bytes, there is always sufficient room.
3271            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities, D>(
3272            self.ht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3273            encoder, offset + cur_offset, depth
3274        )?;
3275
3276            _prev_end_offset = cur_offset + envelope_size;
3277            if 4 > max_ordinal {
3278                return Ok(());
3279            }
3280
3281            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3282            // are envelope_size bytes.
3283            let cur_offset: usize = (4 - 1) * envelope_size;
3284
3285            // Zero reserved fields.
3286            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3287
3288            // Safety:
3289            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3290            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3291            //   envelope_size bytes, there is always sufficient room.
3292            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities, D>(
3293            self.vht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3294            encoder, offset + cur_offset, depth
3295        )?;
3296
3297            _prev_end_offset = cur_offset + envelope_size;
3298            if 5 > max_ordinal {
3299                return Ok(());
3300            }
3301
3302            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3303            // are envelope_size bytes.
3304            let cur_offset: usize = (5 - 1) * envelope_size;
3305
3306            // Zero reserved fields.
3307            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3308
3309            // Safety:
3310            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3311            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3312            //   envelope_size bytes, there is always sufficient room.
3313            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 256>, D>(
3314                self.operating_channels.as_ref().map(
3315                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow,
3316                ),
3317                encoder,
3318                offset + cur_offset,
3319                depth,
3320            )?;
3321
3322            _prev_end_offset = cur_offset + envelope_size;
3323
3324            Ok(())
3325        }
3326    }
3327
3328    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandCapability {
3329        #[inline(always)]
3330        fn new_empty() -> Self {
3331            Self::default()
3332        }
3333
3334        unsafe fn decode(
3335            &mut self,
3336            decoder: &mut fidl::encoding::Decoder<'_, D>,
3337            offset: usize,
3338            mut depth: fidl::encoding::Depth,
3339        ) -> fidl::Result<()> {
3340            decoder.debug_check_bounds::<Self>(offset);
3341            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3342                None => return Err(fidl::Error::NotNullable),
3343                Some(len) => len,
3344            };
3345            // Calling decoder.out_of_line_offset(0) is not allowed.
3346            if len == 0 {
3347                return Ok(());
3348            };
3349            depth.increment()?;
3350            let envelope_size = 8;
3351            let bytes_len = len * envelope_size;
3352            let offset = decoder.out_of_line_offset(bytes_len)?;
3353            // Decode the envelope for each type.
3354            let mut _next_ordinal_to_read = 0;
3355            let mut next_offset = offset;
3356            let end_offset = offset + bytes_len;
3357            _next_ordinal_to_read += 1;
3358            if next_offset >= end_offset {
3359                return Ok(());
3360            }
3361
3362            // Decode unknown envelopes for gaps in ordinals.
3363            while _next_ordinal_to_read < 1 {
3364                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3365                _next_ordinal_to_read += 1;
3366                next_offset += envelope_size;
3367            }
3368
3369            let next_out_of_line = decoder.next_out_of_line();
3370            let handles_before = decoder.remaining_handles();
3371            if let Some((inlined, num_bytes, num_handles)) =
3372                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3373            {
3374                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::WlanBand as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3375                if inlined != (member_inline_size <= 4) {
3376                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3377                }
3378                let inner_offset;
3379                let mut inner_depth = depth.clone();
3380                if inlined {
3381                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3382                    inner_offset = next_offset;
3383                } else {
3384                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3385                    inner_depth.increment()?;
3386                }
3387                let val_ref = self.band.get_or_insert_with(|| {
3388                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::WlanBand, D)
3389                });
3390                fidl::decode!(
3391                    fidl_fuchsia_wlan_ieee80211_common::WlanBand,
3392                    D,
3393                    val_ref,
3394                    decoder,
3395                    inner_offset,
3396                    inner_depth
3397                )?;
3398                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3399                {
3400                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3401                }
3402                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3403                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3404                }
3405            }
3406
3407            next_offset += envelope_size;
3408            _next_ordinal_to_read += 1;
3409            if next_offset >= end_offset {
3410                return Ok(());
3411            }
3412
3413            // Decode unknown envelopes for gaps in ordinals.
3414            while _next_ordinal_to_read < 2 {
3415                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3416                _next_ordinal_to_read += 1;
3417                next_offset += envelope_size;
3418            }
3419
3420            let next_out_of_line = decoder.next_out_of_line();
3421            let handles_before = decoder.remaining_handles();
3422            if let Some((inlined, num_bytes, num_handles)) =
3423                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3424            {
3425                let member_inline_size =
3426                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::TypeMarker>::inline_size(
3427                        decoder.context,
3428                    );
3429                if inlined != (member_inline_size <= 4) {
3430                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3431                }
3432                let inner_offset;
3433                let mut inner_depth = depth.clone();
3434                if inlined {
3435                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3436                    inner_offset = next_offset;
3437                } else {
3438                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3439                    inner_depth.increment()?;
3440                }
3441                let val_ref = self
3442                    .basic_rates
3443                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 12>, D));
3444                fidl::decode!(fidl::encoding::Vector<u8, 12>, D, val_ref, decoder, inner_offset, inner_depth)?;
3445                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3446                {
3447                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3448                }
3449                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3450                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3451                }
3452            }
3453
3454            next_offset += envelope_size;
3455            _next_ordinal_to_read += 1;
3456            if next_offset >= end_offset {
3457                return Ok(());
3458            }
3459
3460            // Decode unknown envelopes for gaps in ordinals.
3461            while _next_ordinal_to_read < 3 {
3462                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3463                _next_ordinal_to_read += 1;
3464                next_offset += envelope_size;
3465            }
3466
3467            let next_out_of_line = decoder.next_out_of_line();
3468            let handles_before = decoder.remaining_handles();
3469            if let Some((inlined, num_bytes, num_handles)) =
3470                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3471            {
3472                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::HtCapabilities as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3473                if inlined != (member_inline_size <= 4) {
3474                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3475                }
3476                let inner_offset;
3477                let mut inner_depth = depth.clone();
3478                if inlined {
3479                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3480                    inner_offset = next_offset;
3481                } else {
3482                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3483                    inner_depth.increment()?;
3484                }
3485                let val_ref = self.ht_caps.get_or_insert_with(|| {
3486                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::HtCapabilities, D)
3487                });
3488                fidl::decode!(
3489                    fidl_fuchsia_wlan_ieee80211_common::HtCapabilities,
3490                    D,
3491                    val_ref,
3492                    decoder,
3493                    inner_offset,
3494                    inner_depth
3495                )?;
3496                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3497                {
3498                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3499                }
3500                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3501                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3502                }
3503            }
3504
3505            next_offset += envelope_size;
3506            _next_ordinal_to_read += 1;
3507            if next_offset >= end_offset {
3508                return Ok(());
3509            }
3510
3511            // Decode unknown envelopes for gaps in ordinals.
3512            while _next_ordinal_to_read < 4 {
3513                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3514                _next_ordinal_to_read += 1;
3515                next_offset += envelope_size;
3516            }
3517
3518            let next_out_of_line = decoder.next_out_of_line();
3519            let handles_before = decoder.remaining_handles();
3520            if let Some((inlined, num_bytes, num_handles)) =
3521                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3522            {
3523                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3524                if inlined != (member_inline_size <= 4) {
3525                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3526                }
3527                let inner_offset;
3528                let mut inner_depth = depth.clone();
3529                if inlined {
3530                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3531                    inner_offset = next_offset;
3532                } else {
3533                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3534                    inner_depth.increment()?;
3535                }
3536                let val_ref = self.vht_caps.get_or_insert_with(|| {
3537                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities, D)
3538                });
3539                fidl::decode!(
3540                    fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities,
3541                    D,
3542                    val_ref,
3543                    decoder,
3544                    inner_offset,
3545                    inner_depth
3546                )?;
3547                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3548                {
3549                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3550                }
3551                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3552                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3553                }
3554            }
3555
3556            next_offset += envelope_size;
3557            _next_ordinal_to_read += 1;
3558            if next_offset >= end_offset {
3559                return Ok(());
3560            }
3561
3562            // Decode unknown envelopes for gaps in ordinals.
3563            while _next_ordinal_to_read < 5 {
3564                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3565                _next_ordinal_to_read += 1;
3566                next_offset += envelope_size;
3567            }
3568
3569            let next_out_of_line = decoder.next_out_of_line();
3570            let handles_before = decoder.remaining_handles();
3571            if let Some((inlined, num_bytes, num_handles)) =
3572                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3573            {
3574                let member_inline_size =
3575                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::TypeMarker>::inline_size(
3576                        decoder.context,
3577                    );
3578                if inlined != (member_inline_size <= 4) {
3579                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3580                }
3581                let inner_offset;
3582                let mut inner_depth = depth.clone();
3583                if inlined {
3584                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3585                    inner_offset = next_offset;
3586                } else {
3587                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3588                    inner_depth.increment()?;
3589                }
3590                let val_ref = self
3591                    .operating_channels
3592                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D));
3593                fidl::decode!(fidl::encoding::Vector<u8, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
3594                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3595                {
3596                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3597                }
3598                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3599                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3600                }
3601            }
3602
3603            next_offset += envelope_size;
3604
3605            // Decode the remaining unknown envelopes.
3606            while next_offset < end_offset {
3607                _next_ordinal_to_read += 1;
3608                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3609                next_offset += envelope_size;
3610            }
3611
3612            Ok(())
3613        }
3614    }
3615
3616    impl SaeFrame {
3617        #[inline(always)]
3618        fn max_ordinal_present(&self) -> u64 {
3619            if let Some(_) = self.sae_fields {
3620                return 4;
3621            }
3622            if let Some(_) = self.seq_num {
3623                return 3;
3624            }
3625            if let Some(_) = self.status_code {
3626                return 2;
3627            }
3628            if let Some(_) = self.peer_sta_address {
3629                return 1;
3630            }
3631            0
3632        }
3633    }
3634
3635    impl fidl::encoding::ValueTypeMarker for SaeFrame {
3636        type Borrowed<'a> = &'a Self;
3637        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3638            value
3639        }
3640    }
3641
3642    unsafe impl fidl::encoding::TypeMarker for SaeFrame {
3643        type Owned = Self;
3644
3645        #[inline(always)]
3646        fn inline_align(_context: fidl::encoding::Context) -> usize {
3647            8
3648        }
3649
3650        #[inline(always)]
3651        fn inline_size(_context: fidl::encoding::Context) -> usize {
3652            16
3653        }
3654    }
3655
3656    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFrame, D> for &SaeFrame {
3657        unsafe fn encode(
3658            self,
3659            encoder: &mut fidl::encoding::Encoder<'_, D>,
3660            offset: usize,
3661            mut depth: fidl::encoding::Depth,
3662        ) -> fidl::Result<()> {
3663            encoder.debug_check_bounds::<SaeFrame>(offset);
3664            // Vector header
3665            let max_ordinal: u64 = self.max_ordinal_present();
3666            encoder.write_num(max_ordinal, offset);
3667            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3668            // Calling encoder.out_of_line_offset(0) is not allowed.
3669            if max_ordinal == 0 {
3670                return Ok(());
3671            }
3672            depth.increment()?;
3673            let envelope_size = 8;
3674            let bytes_len = max_ordinal as usize * envelope_size;
3675            #[allow(unused_variables)]
3676            let offset = encoder.out_of_line_offset(bytes_len);
3677            let mut _prev_end_offset: usize = 0;
3678            if 1 > max_ordinal {
3679                return Ok(());
3680            }
3681
3682            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3683            // are envelope_size bytes.
3684            let cur_offset: usize = (1 - 1) * envelope_size;
3685
3686            // Zero reserved fields.
3687            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3688
3689            // Safety:
3690            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3691            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3692            //   envelope_size bytes, there is always sufficient room.
3693            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3694                self.peer_sta_address
3695                    .as_ref()
3696                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3697                encoder,
3698                offset + cur_offset,
3699                depth,
3700            )?;
3701
3702            _prev_end_offset = cur_offset + envelope_size;
3703            if 2 > max_ordinal {
3704                return Ok(());
3705            }
3706
3707            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3708            // are envelope_size bytes.
3709            let cur_offset: usize = (2 - 1) * envelope_size;
3710
3711            // Zero reserved fields.
3712            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3713
3714            // Safety:
3715            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3716            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3717            //   envelope_size bytes, there is always sufficient room.
3718            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
3719            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
3720            encoder, offset + cur_offset, depth
3721        )?;
3722
3723            _prev_end_offset = cur_offset + envelope_size;
3724            if 3 > max_ordinal {
3725                return Ok(());
3726            }
3727
3728            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3729            // are envelope_size bytes.
3730            let cur_offset: usize = (3 - 1) * envelope_size;
3731
3732            // Zero reserved fields.
3733            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3734
3735            // Safety:
3736            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3737            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3738            //   envelope_size bytes, there is always sufficient room.
3739            fidl::encoding::encode_in_envelope_optional::<u16, D>(
3740                self.seq_num.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3741                encoder,
3742                offset + cur_offset,
3743                depth,
3744            )?;
3745
3746            _prev_end_offset = cur_offset + envelope_size;
3747            if 4 > max_ordinal {
3748                return Ok(());
3749            }
3750
3751            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3752            // are envelope_size bytes.
3753            let cur_offset: usize = (4 - 1) * envelope_size;
3754
3755            // Zero reserved fields.
3756            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3757
3758            // Safety:
3759            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3760            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3761            //   envelope_size bytes, there is always sufficient room.
3762            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
3763            self.sae_fields.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
3764            encoder, offset + cur_offset, depth
3765        )?;
3766
3767            _prev_end_offset = cur_offset + envelope_size;
3768
3769            Ok(())
3770        }
3771    }
3772
3773    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFrame {
3774        #[inline(always)]
3775        fn new_empty() -> Self {
3776            Self::default()
3777        }
3778
3779        unsafe fn decode(
3780            &mut self,
3781            decoder: &mut fidl::encoding::Decoder<'_, D>,
3782            offset: usize,
3783            mut depth: fidl::encoding::Depth,
3784        ) -> fidl::Result<()> {
3785            decoder.debug_check_bounds::<Self>(offset);
3786            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3787                None => return Err(fidl::Error::NotNullable),
3788                Some(len) => len,
3789            };
3790            // Calling decoder.out_of_line_offset(0) is not allowed.
3791            if len == 0 {
3792                return Ok(());
3793            };
3794            depth.increment()?;
3795            let envelope_size = 8;
3796            let bytes_len = len * envelope_size;
3797            let offset = decoder.out_of_line_offset(bytes_len)?;
3798            // Decode the envelope for each type.
3799            let mut _next_ordinal_to_read = 0;
3800            let mut next_offset = offset;
3801            let end_offset = offset + bytes_len;
3802            _next_ordinal_to_read += 1;
3803            if next_offset >= end_offset {
3804                return Ok(());
3805            }
3806
3807            // Decode unknown envelopes for gaps in ordinals.
3808            while _next_ordinal_to_read < 1 {
3809                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3810                _next_ordinal_to_read += 1;
3811                next_offset += envelope_size;
3812            }
3813
3814            let next_out_of_line = decoder.next_out_of_line();
3815            let handles_before = decoder.remaining_handles();
3816            if let Some((inlined, num_bytes, num_handles)) =
3817                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3818            {
3819                let member_inline_size =
3820                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3821                        decoder.context,
3822                    );
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
3836                    .peer_sta_address
3837                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
3838                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
3839                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3840                {
3841                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3842                }
3843                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3844                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3845                }
3846            }
3847
3848            next_offset += envelope_size;
3849            _next_ordinal_to_read += 1;
3850            if next_offset >= end_offset {
3851                return Ok(());
3852            }
3853
3854            // Decode unknown envelopes for gaps in ordinals.
3855            while _next_ordinal_to_read < 2 {
3856                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3857                _next_ordinal_to_read += 1;
3858                next_offset += envelope_size;
3859            }
3860
3861            let next_out_of_line = decoder.next_out_of_line();
3862            let handles_before = decoder.remaining_handles();
3863            if let Some((inlined, num_bytes, num_handles)) =
3864                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3865            {
3866                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3867                if inlined != (member_inline_size <= 4) {
3868                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3869                }
3870                let inner_offset;
3871                let mut inner_depth = depth.clone();
3872                if inlined {
3873                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3874                    inner_offset = next_offset;
3875                } else {
3876                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3877                    inner_depth.increment()?;
3878                }
3879                let val_ref = self.status_code.get_or_insert_with(|| {
3880                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
3881                });
3882                fidl::decode!(
3883                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
3884                    D,
3885                    val_ref,
3886                    decoder,
3887                    inner_offset,
3888                    inner_depth
3889                )?;
3890                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3891                {
3892                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3893                }
3894                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3895                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3896                }
3897            }
3898
3899            next_offset += envelope_size;
3900            _next_ordinal_to_read += 1;
3901            if next_offset >= end_offset {
3902                return Ok(());
3903            }
3904
3905            // Decode unknown envelopes for gaps in ordinals.
3906            while _next_ordinal_to_read < 3 {
3907                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3908                _next_ordinal_to_read += 1;
3909                next_offset += envelope_size;
3910            }
3911
3912            let next_out_of_line = decoder.next_out_of_line();
3913            let handles_before = decoder.remaining_handles();
3914            if let Some((inlined, num_bytes, num_handles)) =
3915                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3916            {
3917                let member_inline_size =
3918                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3919                if inlined != (member_inline_size <= 4) {
3920                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3921                }
3922                let inner_offset;
3923                let mut inner_depth = depth.clone();
3924                if inlined {
3925                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3926                    inner_offset = next_offset;
3927                } else {
3928                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3929                    inner_depth.increment()?;
3930                }
3931                let val_ref = self.seq_num.get_or_insert_with(|| fidl::new_empty!(u16, D));
3932                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3933                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3934                {
3935                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3936                }
3937                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3938                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3939                }
3940            }
3941
3942            next_offset += envelope_size;
3943            _next_ordinal_to_read += 1;
3944            if next_offset >= end_offset {
3945                return Ok(());
3946            }
3947
3948            // Decode unknown envelopes for gaps in ordinals.
3949            while _next_ordinal_to_read < 4 {
3950                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3951                _next_ordinal_to_read += 1;
3952                next_offset += envelope_size;
3953            }
3954
3955            let next_out_of_line = decoder.next_out_of_line();
3956            let handles_before = decoder.remaining_handles();
3957            if let Some((inlined, num_bytes, num_handles)) =
3958                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3959            {
3960                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3961                if inlined != (member_inline_size <= 4) {
3962                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3963                }
3964                let inner_offset;
3965                let mut inner_depth = depth.clone();
3966                if inlined {
3967                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3968                    inner_offset = next_offset;
3969                } else {
3970                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3971                    inner_depth.increment()?;
3972                }
3973                let val_ref = self.sae_fields.get_or_insert_with(|| {
3974                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
3975                });
3976                fidl::decode!(
3977                    fidl::encoding::UnboundedVector<u8>,
3978                    D,
3979                    val_ref,
3980                    decoder,
3981                    inner_offset,
3982                    inner_depth
3983                )?;
3984                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3985                {
3986                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3987                }
3988                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3989                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3990                }
3991            }
3992
3993            next_offset += envelope_size;
3994
3995            // Decode the remaining unknown envelopes.
3996            while next_offset < end_offset {
3997                _next_ordinal_to_read += 1;
3998                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3999                next_offset += envelope_size;
4000            }
4001
4002            Ok(())
4003        }
4004    }
4005
4006    impl WlanFullmacImplAssocRespRequest {
4007        #[inline(always)]
4008        fn max_ordinal_present(&self) -> u64 {
4009            if let Some(_) = self.association_id {
4010                return 3;
4011            }
4012            if let Some(_) = self.result_code {
4013                return 2;
4014            }
4015            if let Some(_) = self.peer_sta_address {
4016                return 1;
4017            }
4018            0
4019        }
4020    }
4021
4022    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAssocRespRequest {
4023        type Borrowed<'a> = &'a Self;
4024        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4025            value
4026        }
4027    }
4028
4029    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAssocRespRequest {
4030        type Owned = Self;
4031
4032        #[inline(always)]
4033        fn inline_align(_context: fidl::encoding::Context) -> usize {
4034            8
4035        }
4036
4037        #[inline(always)]
4038        fn inline_size(_context: fidl::encoding::Context) -> usize {
4039            16
4040        }
4041    }
4042
4043    unsafe impl<D: fidl::encoding::ResourceDialect>
4044        fidl::encoding::Encode<WlanFullmacImplAssocRespRequest, D>
4045        for &WlanFullmacImplAssocRespRequest
4046    {
4047        unsafe fn encode(
4048            self,
4049            encoder: &mut fidl::encoding::Encoder<'_, D>,
4050            offset: usize,
4051            mut depth: fidl::encoding::Depth,
4052        ) -> fidl::Result<()> {
4053            encoder.debug_check_bounds::<WlanFullmacImplAssocRespRequest>(offset);
4054            // Vector header
4055            let max_ordinal: u64 = self.max_ordinal_present();
4056            encoder.write_num(max_ordinal, offset);
4057            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4058            // Calling encoder.out_of_line_offset(0) is not allowed.
4059            if max_ordinal == 0 {
4060                return Ok(());
4061            }
4062            depth.increment()?;
4063            let envelope_size = 8;
4064            let bytes_len = max_ordinal as usize * envelope_size;
4065            #[allow(unused_variables)]
4066            let offset = encoder.out_of_line_offset(bytes_len);
4067            let mut _prev_end_offset: usize = 0;
4068            if 1 > max_ordinal {
4069                return Ok(());
4070            }
4071
4072            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4073            // are envelope_size bytes.
4074            let cur_offset: usize = (1 - 1) * envelope_size;
4075
4076            // Zero reserved fields.
4077            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4078
4079            // Safety:
4080            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4081            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4082            //   envelope_size bytes, there is always sufficient room.
4083            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4084                self.peer_sta_address
4085                    .as_ref()
4086                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4087                encoder,
4088                offset + cur_offset,
4089                depth,
4090            )?;
4091
4092            _prev_end_offset = cur_offset + envelope_size;
4093            if 2 > max_ordinal {
4094                return Ok(());
4095            }
4096
4097            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4098            // are envelope_size bytes.
4099            let cur_offset: usize = (2 - 1) * envelope_size;
4100
4101            // Zero reserved fields.
4102            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4103
4104            // Safety:
4105            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4106            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4107            //   envelope_size bytes, there is always sufficient room.
4108            fidl::encoding::encode_in_envelope_optional::<WlanAssocResult, D>(
4109                self.result_code
4110                    .as_ref()
4111                    .map(<WlanAssocResult as fidl::encoding::ValueTypeMarker>::borrow),
4112                encoder,
4113                offset + cur_offset,
4114                depth,
4115            )?;
4116
4117            _prev_end_offset = cur_offset + envelope_size;
4118            if 3 > max_ordinal {
4119                return Ok(());
4120            }
4121
4122            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4123            // are envelope_size bytes.
4124            let cur_offset: usize = (3 - 1) * envelope_size;
4125
4126            // Zero reserved fields.
4127            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4128
4129            // Safety:
4130            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4131            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4132            //   envelope_size bytes, there is always sufficient room.
4133            fidl::encoding::encode_in_envelope_optional::<u16, D>(
4134                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4135                encoder,
4136                offset + cur_offset,
4137                depth,
4138            )?;
4139
4140            _prev_end_offset = cur_offset + envelope_size;
4141
4142            Ok(())
4143        }
4144    }
4145
4146    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4147        for WlanFullmacImplAssocRespRequest
4148    {
4149        #[inline(always)]
4150        fn new_empty() -> Self {
4151            Self::default()
4152        }
4153
4154        unsafe fn decode(
4155            &mut self,
4156            decoder: &mut fidl::encoding::Decoder<'_, D>,
4157            offset: usize,
4158            mut depth: fidl::encoding::Depth,
4159        ) -> fidl::Result<()> {
4160            decoder.debug_check_bounds::<Self>(offset);
4161            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4162                None => return Err(fidl::Error::NotNullable),
4163                Some(len) => len,
4164            };
4165            // Calling decoder.out_of_line_offset(0) is not allowed.
4166            if len == 0 {
4167                return Ok(());
4168            };
4169            depth.increment()?;
4170            let envelope_size = 8;
4171            let bytes_len = len * envelope_size;
4172            let offset = decoder.out_of_line_offset(bytes_len)?;
4173            // Decode the envelope for each type.
4174            let mut _next_ordinal_to_read = 0;
4175            let mut next_offset = offset;
4176            let end_offset = offset + bytes_len;
4177            _next_ordinal_to_read += 1;
4178            if next_offset >= end_offset {
4179                return Ok(());
4180            }
4181
4182            // Decode unknown envelopes for gaps in ordinals.
4183            while _next_ordinal_to_read < 1 {
4184                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4185                _next_ordinal_to_read += 1;
4186                next_offset += envelope_size;
4187            }
4188
4189            let next_out_of_line = decoder.next_out_of_line();
4190            let handles_before = decoder.remaining_handles();
4191            if let Some((inlined, num_bytes, num_handles)) =
4192                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4193            {
4194                let member_inline_size =
4195                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4196                        decoder.context,
4197                    );
4198                if inlined != (member_inline_size <= 4) {
4199                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4200                }
4201                let inner_offset;
4202                let mut inner_depth = depth.clone();
4203                if inlined {
4204                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4205                    inner_offset = next_offset;
4206                } else {
4207                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4208                    inner_depth.increment()?;
4209                }
4210                let val_ref = self
4211                    .peer_sta_address
4212                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4213                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4214                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4215                {
4216                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4217                }
4218                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4219                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4220                }
4221            }
4222
4223            next_offset += envelope_size;
4224            _next_ordinal_to_read += 1;
4225            if next_offset >= end_offset {
4226                return Ok(());
4227            }
4228
4229            // Decode unknown envelopes for gaps in ordinals.
4230            while _next_ordinal_to_read < 2 {
4231                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4232                _next_ordinal_to_read += 1;
4233                next_offset += envelope_size;
4234            }
4235
4236            let next_out_of_line = decoder.next_out_of_line();
4237            let handles_before = decoder.remaining_handles();
4238            if let Some((inlined, num_bytes, num_handles)) =
4239                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4240            {
4241                let member_inline_size =
4242                    <WlanAssocResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4243                if inlined != (member_inline_size <= 4) {
4244                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4245                }
4246                let inner_offset;
4247                let mut inner_depth = depth.clone();
4248                if inlined {
4249                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4250                    inner_offset = next_offset;
4251                } else {
4252                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4253                    inner_depth.increment()?;
4254                }
4255                let val_ref =
4256                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAssocResult, D));
4257                fidl::decode!(WlanAssocResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4258                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4259                {
4260                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4261                }
4262                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4263                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4264                }
4265            }
4266
4267            next_offset += envelope_size;
4268            _next_ordinal_to_read += 1;
4269            if next_offset >= end_offset {
4270                return Ok(());
4271            }
4272
4273            // Decode unknown envelopes for gaps in ordinals.
4274            while _next_ordinal_to_read < 3 {
4275                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4276                _next_ordinal_to_read += 1;
4277                next_offset += envelope_size;
4278            }
4279
4280            let next_out_of_line = decoder.next_out_of_line();
4281            let handles_before = decoder.remaining_handles();
4282            if let Some((inlined, num_bytes, num_handles)) =
4283                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4284            {
4285                let member_inline_size =
4286                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4287                if inlined != (member_inline_size <= 4) {
4288                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4289                }
4290                let inner_offset;
4291                let mut inner_depth = depth.clone();
4292                if inlined {
4293                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4294                    inner_offset = next_offset;
4295                } else {
4296                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4297                    inner_depth.increment()?;
4298                }
4299                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
4300                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4301                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4302                {
4303                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4304                }
4305                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4306                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4307                }
4308            }
4309
4310            next_offset += envelope_size;
4311
4312            // Decode the remaining unknown envelopes.
4313            while next_offset < end_offset {
4314                _next_ordinal_to_read += 1;
4315                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4316                next_offset += envelope_size;
4317            }
4318
4319            Ok(())
4320        }
4321    }
4322
4323    impl WlanFullmacImplAuthRespRequest {
4324        #[inline(always)]
4325        fn max_ordinal_present(&self) -> u64 {
4326            if let Some(_) = self.result_code {
4327                return 2;
4328            }
4329            if let Some(_) = self.peer_sta_address {
4330                return 1;
4331            }
4332            0
4333        }
4334    }
4335
4336    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAuthRespRequest {
4337        type Borrowed<'a> = &'a Self;
4338        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4339            value
4340        }
4341    }
4342
4343    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAuthRespRequest {
4344        type Owned = Self;
4345
4346        #[inline(always)]
4347        fn inline_align(_context: fidl::encoding::Context) -> usize {
4348            8
4349        }
4350
4351        #[inline(always)]
4352        fn inline_size(_context: fidl::encoding::Context) -> usize {
4353            16
4354        }
4355    }
4356
4357    unsafe impl<D: fidl::encoding::ResourceDialect>
4358        fidl::encoding::Encode<WlanFullmacImplAuthRespRequest, D>
4359        for &WlanFullmacImplAuthRespRequest
4360    {
4361        unsafe fn encode(
4362            self,
4363            encoder: &mut fidl::encoding::Encoder<'_, D>,
4364            offset: usize,
4365            mut depth: fidl::encoding::Depth,
4366        ) -> fidl::Result<()> {
4367            encoder.debug_check_bounds::<WlanFullmacImplAuthRespRequest>(offset);
4368            // Vector header
4369            let max_ordinal: u64 = self.max_ordinal_present();
4370            encoder.write_num(max_ordinal, offset);
4371            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4372            // Calling encoder.out_of_line_offset(0) is not allowed.
4373            if max_ordinal == 0 {
4374                return Ok(());
4375            }
4376            depth.increment()?;
4377            let envelope_size = 8;
4378            let bytes_len = max_ordinal as usize * envelope_size;
4379            #[allow(unused_variables)]
4380            let offset = encoder.out_of_line_offset(bytes_len);
4381            let mut _prev_end_offset: usize = 0;
4382            if 1 > max_ordinal {
4383                return Ok(());
4384            }
4385
4386            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4387            // are envelope_size bytes.
4388            let cur_offset: usize = (1 - 1) * envelope_size;
4389
4390            // Zero reserved fields.
4391            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4392
4393            // Safety:
4394            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4395            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4396            //   envelope_size bytes, there is always sufficient room.
4397            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4398                self.peer_sta_address
4399                    .as_ref()
4400                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4401                encoder,
4402                offset + cur_offset,
4403                depth,
4404            )?;
4405
4406            _prev_end_offset = cur_offset + envelope_size;
4407            if 2 > max_ordinal {
4408                return Ok(());
4409            }
4410
4411            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4412            // are envelope_size bytes.
4413            let cur_offset: usize = (2 - 1) * envelope_size;
4414
4415            // Zero reserved fields.
4416            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4417
4418            // Safety:
4419            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4420            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4421            //   envelope_size bytes, there is always sufficient room.
4422            fidl::encoding::encode_in_envelope_optional::<WlanAuthResult, D>(
4423                self.result_code
4424                    .as_ref()
4425                    .map(<WlanAuthResult as fidl::encoding::ValueTypeMarker>::borrow),
4426                encoder,
4427                offset + cur_offset,
4428                depth,
4429            )?;
4430
4431            _prev_end_offset = cur_offset + envelope_size;
4432
4433            Ok(())
4434        }
4435    }
4436
4437    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4438        for WlanFullmacImplAuthRespRequest
4439    {
4440        #[inline(always)]
4441        fn new_empty() -> Self {
4442            Self::default()
4443        }
4444
4445        unsafe fn decode(
4446            &mut self,
4447            decoder: &mut fidl::encoding::Decoder<'_, D>,
4448            offset: usize,
4449            mut depth: fidl::encoding::Depth,
4450        ) -> fidl::Result<()> {
4451            decoder.debug_check_bounds::<Self>(offset);
4452            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4453                None => return Err(fidl::Error::NotNullable),
4454                Some(len) => len,
4455            };
4456            // Calling decoder.out_of_line_offset(0) is not allowed.
4457            if len == 0 {
4458                return Ok(());
4459            };
4460            depth.increment()?;
4461            let envelope_size = 8;
4462            let bytes_len = len * envelope_size;
4463            let offset = decoder.out_of_line_offset(bytes_len)?;
4464            // Decode the envelope for each type.
4465            let mut _next_ordinal_to_read = 0;
4466            let mut next_offset = offset;
4467            let end_offset = offset + bytes_len;
4468            _next_ordinal_to_read += 1;
4469            if next_offset >= end_offset {
4470                return Ok(());
4471            }
4472
4473            // Decode unknown envelopes for gaps in ordinals.
4474            while _next_ordinal_to_read < 1 {
4475                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4476                _next_ordinal_to_read += 1;
4477                next_offset += envelope_size;
4478            }
4479
4480            let next_out_of_line = decoder.next_out_of_line();
4481            let handles_before = decoder.remaining_handles();
4482            if let Some((inlined, num_bytes, num_handles)) =
4483                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4484            {
4485                let member_inline_size =
4486                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4487                        decoder.context,
4488                    );
4489                if inlined != (member_inline_size <= 4) {
4490                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4491                }
4492                let inner_offset;
4493                let mut inner_depth = depth.clone();
4494                if inlined {
4495                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4496                    inner_offset = next_offset;
4497                } else {
4498                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4499                    inner_depth.increment()?;
4500                }
4501                let val_ref = self
4502                    .peer_sta_address
4503                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4504                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4505                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4506                {
4507                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4508                }
4509                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4510                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4511                }
4512            }
4513
4514            next_offset += envelope_size;
4515            _next_ordinal_to_read += 1;
4516            if next_offset >= end_offset {
4517                return Ok(());
4518            }
4519
4520            // Decode unknown envelopes for gaps in ordinals.
4521            while _next_ordinal_to_read < 2 {
4522                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4523                _next_ordinal_to_read += 1;
4524                next_offset += envelope_size;
4525            }
4526
4527            let next_out_of_line = decoder.next_out_of_line();
4528            let handles_before = decoder.remaining_handles();
4529            if let Some((inlined, num_bytes, num_handles)) =
4530                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4531            {
4532                let member_inline_size =
4533                    <WlanAuthResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4534                if inlined != (member_inline_size <= 4) {
4535                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4536                }
4537                let inner_offset;
4538                let mut inner_depth = depth.clone();
4539                if inlined {
4540                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4541                    inner_offset = next_offset;
4542                } else {
4543                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4544                    inner_depth.increment()?;
4545                }
4546                let val_ref =
4547                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAuthResult, D));
4548                fidl::decode!(WlanAuthResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4549                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4550                {
4551                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4552                }
4553                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4554                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4555                }
4556            }
4557
4558            next_offset += envelope_size;
4559
4560            // Decode the remaining unknown envelopes.
4561            while next_offset < end_offset {
4562                _next_ordinal_to_read += 1;
4563                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4564                next_offset += envelope_size;
4565            }
4566
4567            Ok(())
4568        }
4569    }
4570
4571    impl WlanFullmacImplConnectRequest {
4572        #[inline(always)]
4573        fn max_ordinal_present(&self) -> u64 {
4574            if let Some(_) = self.owe_public_key {
4575                return 8;
4576            }
4577            if let Some(_) = self.wep_key_desc {
4578                return 7;
4579            }
4580            if let Some(_) = self.security_ie {
4581                return 6;
4582            }
4583            if let Some(_) = self.wep_key {
4584                return 5;
4585            }
4586            if let Some(_) = self.sae_password {
4587                return 4;
4588            }
4589            if let Some(_) = self.auth_type {
4590                return 3;
4591            }
4592            if let Some(_) = self.connect_failure_timeout {
4593                return 2;
4594            }
4595            if let Some(_) = self.selected_bss {
4596                return 1;
4597            }
4598            0
4599        }
4600    }
4601
4602    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplConnectRequest {
4603        type Borrowed<'a> = &'a Self;
4604        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4605            value
4606        }
4607    }
4608
4609    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplConnectRequest {
4610        type Owned = Self;
4611
4612        #[inline(always)]
4613        fn inline_align(_context: fidl::encoding::Context) -> usize {
4614            8
4615        }
4616
4617        #[inline(always)]
4618        fn inline_size(_context: fidl::encoding::Context) -> usize {
4619            16
4620        }
4621    }
4622
4623    unsafe impl<D: fidl::encoding::ResourceDialect>
4624        fidl::encoding::Encode<WlanFullmacImplConnectRequest, D>
4625        for &WlanFullmacImplConnectRequest
4626    {
4627        unsafe fn encode(
4628            self,
4629            encoder: &mut fidl::encoding::Encoder<'_, D>,
4630            offset: usize,
4631            mut depth: fidl::encoding::Depth,
4632        ) -> fidl::Result<()> {
4633            encoder.debug_check_bounds::<WlanFullmacImplConnectRequest>(offset);
4634            // Vector header
4635            let max_ordinal: u64 = self.max_ordinal_present();
4636            encoder.write_num(max_ordinal, offset);
4637            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4638            // Calling encoder.out_of_line_offset(0) is not allowed.
4639            if max_ordinal == 0 {
4640                return Ok(());
4641            }
4642            depth.increment()?;
4643            let envelope_size = 8;
4644            let bytes_len = max_ordinal as usize * envelope_size;
4645            #[allow(unused_variables)]
4646            let offset = encoder.out_of_line_offset(bytes_len);
4647            let mut _prev_end_offset: usize = 0;
4648            if 1 > max_ordinal {
4649                return Ok(());
4650            }
4651
4652            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4653            // are envelope_size bytes.
4654            let cur_offset: usize = (1 - 1) * envelope_size;
4655
4656            // Zero reserved fields.
4657            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4658
4659            // Safety:
4660            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4661            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4662            //   envelope_size bytes, there is always sufficient room.
4663            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>(
4664            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
4665            encoder, offset + cur_offset, depth
4666        )?;
4667
4668            _prev_end_offset = cur_offset + envelope_size;
4669            if 2 > max_ordinal {
4670                return Ok(());
4671            }
4672
4673            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4674            // are envelope_size bytes.
4675            let cur_offset: usize = (2 - 1) * envelope_size;
4676
4677            // Zero reserved fields.
4678            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4679
4680            // Safety:
4681            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4682            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4683            //   envelope_size bytes, there is always sufficient room.
4684            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4685                self.connect_failure_timeout
4686                    .as_ref()
4687                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4688                encoder,
4689                offset + cur_offset,
4690                depth,
4691            )?;
4692
4693            _prev_end_offset = cur_offset + envelope_size;
4694            if 3 > max_ordinal {
4695                return Ok(());
4696            }
4697
4698            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4699            // are envelope_size bytes.
4700            let cur_offset: usize = (3 - 1) * envelope_size;
4701
4702            // Zero reserved fields.
4703            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4704
4705            // Safety:
4706            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4707            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4708            //   envelope_size bytes, there is always sufficient room.
4709            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
4710                self.auth_type
4711                    .as_ref()
4712                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
4713                encoder,
4714                offset + cur_offset,
4715                depth,
4716            )?;
4717
4718            _prev_end_offset = cur_offset + envelope_size;
4719            if 4 > max_ordinal {
4720                return Ok(());
4721            }
4722
4723            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4724            // are envelope_size bytes.
4725            let cur_offset: usize = (4 - 1) * envelope_size;
4726
4727            // Zero reserved fields.
4728            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4729
4730            // Safety:
4731            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4732            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4733            //   envelope_size bytes, there is always sufficient room.
4734            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
4735            self.sae_password.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
4736            encoder, offset + cur_offset, depth
4737        )?;
4738
4739            _prev_end_offset = cur_offset + envelope_size;
4740            if 5 > max_ordinal {
4741                return Ok(());
4742            }
4743
4744            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4745            // are envelope_size bytes.
4746            let cur_offset: usize = (5 - 1) * envelope_size;
4747
4748            // Zero reserved fields.
4749            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4750
4751            // Safety:
4752            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4753            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4754            //   envelope_size bytes, there is always sufficient room.
4755            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, D>(
4756            self.wep_key.as_ref().map(<fidl_fuchsia_wlan_driver_common::WlanKeyConfig as fidl::encoding::ValueTypeMarker>::borrow),
4757            encoder, offset + cur_offset, depth
4758        )?;
4759
4760            _prev_end_offset = cur_offset + envelope_size;
4761            if 6 > max_ordinal {
4762                return Ok(());
4763            }
4764
4765            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4766            // are envelope_size bytes.
4767            let cur_offset: usize = (6 - 1) * envelope_size;
4768
4769            // Zero reserved fields.
4770            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4771
4772            // Safety:
4773            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4774            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4775            //   envelope_size bytes, there is always sufficient room.
4776            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
4777                self.security_ie.as_ref().map(
4778                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
4779                ),
4780                encoder,
4781                offset + cur_offset,
4782                depth,
4783            )?;
4784
4785            _prev_end_offset = cur_offset + envelope_size;
4786            if 7 > max_ordinal {
4787                return Ok(());
4788            }
4789
4790            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4791            // are envelope_size bytes.
4792            let cur_offset: usize = (7 - 1) * envelope_size;
4793
4794            // Zero reserved fields.
4795            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4796
4797            // Safety:
4798            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4799            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4800            //   envelope_size bytes, there is always sufficient room.
4801            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, D>(
4802            self.wep_key_desc.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor as fidl::encoding::ValueTypeMarker>::borrow),
4803            encoder, offset + cur_offset, depth
4804        )?;
4805
4806            _prev_end_offset = cur_offset + envelope_size;
4807            if 8 > max_ordinal {
4808                return Ok(());
4809            }
4810
4811            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4812            // are envelope_size bytes.
4813            let cur_offset: usize = (8 - 1) * envelope_size;
4814
4815            // Zero reserved fields.
4816            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4817
4818            // Safety:
4819            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4820            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4821            //   envelope_size bytes, there is always sufficient room.
4822            fidl::encoding::encode_in_envelope_optional::<WlanFullmacOwePublicKey, D>(
4823                self.owe_public_key
4824                    .as_ref()
4825                    .map(<WlanFullmacOwePublicKey as fidl::encoding::ValueTypeMarker>::borrow),
4826                encoder,
4827                offset + cur_offset,
4828                depth,
4829            )?;
4830
4831            _prev_end_offset = cur_offset + envelope_size;
4832
4833            Ok(())
4834        }
4835    }
4836
4837    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4838        for WlanFullmacImplConnectRequest
4839    {
4840        #[inline(always)]
4841        fn new_empty() -> Self {
4842            Self::default()
4843        }
4844
4845        unsafe fn decode(
4846            &mut self,
4847            decoder: &mut fidl::encoding::Decoder<'_, D>,
4848            offset: usize,
4849            mut depth: fidl::encoding::Depth,
4850        ) -> fidl::Result<()> {
4851            decoder.debug_check_bounds::<Self>(offset);
4852            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4853                None => return Err(fidl::Error::NotNullable),
4854                Some(len) => len,
4855            };
4856            // Calling decoder.out_of_line_offset(0) is not allowed.
4857            if len == 0 {
4858                return Ok(());
4859            };
4860            depth.increment()?;
4861            let envelope_size = 8;
4862            let bytes_len = len * envelope_size;
4863            let offset = decoder.out_of_line_offset(bytes_len)?;
4864            // Decode the envelope for each type.
4865            let mut _next_ordinal_to_read = 0;
4866            let mut next_offset = offset;
4867            let end_offset = offset + bytes_len;
4868            _next_ordinal_to_read += 1;
4869            if next_offset >= end_offset {
4870                return Ok(());
4871            }
4872
4873            // Decode unknown envelopes for gaps in ordinals.
4874            while _next_ordinal_to_read < 1 {
4875                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4876                _next_ordinal_to_read += 1;
4877                next_offset += envelope_size;
4878            }
4879
4880            let next_out_of_line = decoder.next_out_of_line();
4881            let handles_before = decoder.remaining_handles();
4882            if let Some((inlined, num_bytes, num_handles)) =
4883                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4884            {
4885                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssDescription 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 = self.selected_bss.get_or_insert_with(|| {
4899                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D)
4900                });
4901                fidl::decode!(
4902                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
4903                    D,
4904                    val_ref,
4905                    decoder,
4906                    inner_offset,
4907                    inner_depth
4908                )?;
4909                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4910                {
4911                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4912                }
4913                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4914                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4915                }
4916            }
4917
4918            next_offset += envelope_size;
4919            _next_ordinal_to_read += 1;
4920            if next_offset >= end_offset {
4921                return Ok(());
4922            }
4923
4924            // Decode unknown envelopes for gaps in ordinals.
4925            while _next_ordinal_to_read < 2 {
4926                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4927                _next_ordinal_to_read += 1;
4928                next_offset += envelope_size;
4929            }
4930
4931            let next_out_of_line = decoder.next_out_of_line();
4932            let handles_before = decoder.remaining_handles();
4933            if let Some((inlined, num_bytes, num_handles)) =
4934                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4935            {
4936                let member_inline_size =
4937                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4938                if inlined != (member_inline_size <= 4) {
4939                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4940                }
4941                let inner_offset;
4942                let mut inner_depth = depth.clone();
4943                if inlined {
4944                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4945                    inner_offset = next_offset;
4946                } else {
4947                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4948                    inner_depth.increment()?;
4949                }
4950                let val_ref =
4951                    self.connect_failure_timeout.get_or_insert_with(|| fidl::new_empty!(u32, D));
4952                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4953                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4954                {
4955                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4956                }
4957                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4958                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4959                }
4960            }
4961
4962            next_offset += envelope_size;
4963            _next_ordinal_to_read += 1;
4964            if next_offset >= end_offset {
4965                return Ok(());
4966            }
4967
4968            // Decode unknown envelopes for gaps in ordinals.
4969            while _next_ordinal_to_read < 3 {
4970                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4971                _next_ordinal_to_read += 1;
4972                next_offset += envelope_size;
4973            }
4974
4975            let next_out_of_line = decoder.next_out_of_line();
4976            let handles_before = decoder.remaining_handles();
4977            if let Some((inlined, num_bytes, num_handles)) =
4978                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4979            {
4980                let member_inline_size =
4981                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4982                if inlined != (member_inline_size <= 4) {
4983                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4984                }
4985                let inner_offset;
4986                let mut inner_depth = depth.clone();
4987                if inlined {
4988                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4989                    inner_offset = next_offset;
4990                } else {
4991                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4992                    inner_depth.increment()?;
4993                }
4994                let val_ref =
4995                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
4996                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
4997                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4998                {
4999                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5000                }
5001                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5002                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5003                }
5004            }
5005
5006            next_offset += envelope_size;
5007            _next_ordinal_to_read += 1;
5008            if next_offset >= end_offset {
5009                return Ok(());
5010            }
5011
5012            // Decode unknown envelopes for gaps in ordinals.
5013            while _next_ordinal_to_read < 4 {
5014                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5015                _next_ordinal_to_read += 1;
5016                next_offset += envelope_size;
5017            }
5018
5019            let next_out_of_line = decoder.next_out_of_line();
5020            let handles_before = decoder.remaining_handles();
5021            if let Some((inlined, num_bytes, num_handles)) =
5022                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5023            {
5024                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5025                if inlined != (member_inline_size <= 4) {
5026                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5027                }
5028                let inner_offset;
5029                let mut inner_depth = depth.clone();
5030                if inlined {
5031                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5032                    inner_offset = next_offset;
5033                } else {
5034                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5035                    inner_depth.increment()?;
5036                }
5037                let val_ref = self.sae_password.get_or_insert_with(|| {
5038                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
5039                });
5040                fidl::decode!(
5041                    fidl::encoding::UnboundedVector<u8>,
5042                    D,
5043                    val_ref,
5044                    decoder,
5045                    inner_offset,
5046                    inner_depth
5047                )?;
5048                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5049                {
5050                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5051                }
5052                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5053                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5054                }
5055            }
5056
5057            next_offset += envelope_size;
5058            _next_ordinal_to_read += 1;
5059            if next_offset >= end_offset {
5060                return Ok(());
5061            }
5062
5063            // Decode unknown envelopes for gaps in ordinals.
5064            while _next_ordinal_to_read < 5 {
5065                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5066                _next_ordinal_to_read += 1;
5067                next_offset += envelope_size;
5068            }
5069
5070            let next_out_of_line = decoder.next_out_of_line();
5071            let handles_before = decoder.remaining_handles();
5072            if let Some((inlined, num_bytes, num_handles)) =
5073                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5074            {
5075                let member_inline_size = <fidl_fuchsia_wlan_driver_common::WlanKeyConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5076                if inlined != (member_inline_size <= 4) {
5077                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5078                }
5079                let inner_offset;
5080                let mut inner_depth = depth.clone();
5081                if inlined {
5082                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5083                    inner_offset = next_offset;
5084                } else {
5085                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5086                    inner_depth.increment()?;
5087                }
5088                let val_ref = self.wep_key.get_or_insert_with(|| {
5089                    fidl::new_empty!(fidl_fuchsia_wlan_driver_common::WlanKeyConfig, D)
5090                });
5091                fidl::decode!(
5092                    fidl_fuchsia_wlan_driver_common::WlanKeyConfig,
5093                    D,
5094                    val_ref,
5095                    decoder,
5096                    inner_offset,
5097                    inner_depth
5098                )?;
5099                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5100                {
5101                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5102                }
5103                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5104                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5105                }
5106            }
5107
5108            next_offset += envelope_size;
5109            _next_ordinal_to_read += 1;
5110            if next_offset >= end_offset {
5111                return Ok(());
5112            }
5113
5114            // Decode unknown envelopes for gaps in ordinals.
5115            while _next_ordinal_to_read < 6 {
5116                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5117                _next_ordinal_to_read += 1;
5118                next_offset += envelope_size;
5119            }
5120
5121            let next_out_of_line = decoder.next_out_of_line();
5122            let handles_before = decoder.remaining_handles();
5123            if let Some((inlined, num_bytes, num_handles)) =
5124                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5125            {
5126                let member_inline_size =
5127                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
5128                        decoder.context,
5129                    );
5130                if inlined != (member_inline_size <= 4) {
5131                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5132                }
5133                let inner_offset;
5134                let mut inner_depth = depth.clone();
5135                if inlined {
5136                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5137                    inner_offset = next_offset;
5138                } else {
5139                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5140                    inner_depth.increment()?;
5141                }
5142                let val_ref = self
5143                    .security_ie
5144                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
5145                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
5146                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5147                {
5148                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5149                }
5150                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5151                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5152                }
5153            }
5154
5155            next_offset += envelope_size;
5156            _next_ordinal_to_read += 1;
5157            if next_offset >= end_offset {
5158                return Ok(());
5159            }
5160
5161            // Decode unknown envelopes for gaps in ordinals.
5162            while _next_ordinal_to_read < 7 {
5163                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5164                _next_ordinal_to_read += 1;
5165                next_offset += envelope_size;
5166            }
5167
5168            let next_out_of_line = decoder.next_out_of_line();
5169            let handles_before = decoder.remaining_handles();
5170            if let Some((inlined, num_bytes, num_handles)) =
5171                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5172            {
5173                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5174                if inlined != (member_inline_size <= 4) {
5175                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5176                }
5177                let inner_offset;
5178                let mut inner_depth = depth.clone();
5179                if inlined {
5180                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5181                    inner_offset = next_offset;
5182                } else {
5183                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5184                    inner_depth.increment()?;
5185                }
5186                let val_ref = self.wep_key_desc.get_or_insert_with(|| {
5187                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, D)
5188                });
5189                fidl::decode!(
5190                    fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor,
5191                    D,
5192                    val_ref,
5193                    decoder,
5194                    inner_offset,
5195                    inner_depth
5196                )?;
5197                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5198                {
5199                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5200                }
5201                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5202                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5203                }
5204            }
5205
5206            next_offset += envelope_size;
5207            _next_ordinal_to_read += 1;
5208            if next_offset >= end_offset {
5209                return Ok(());
5210            }
5211
5212            // Decode unknown envelopes for gaps in ordinals.
5213            while _next_ordinal_to_read < 8 {
5214                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5215                _next_ordinal_to_read += 1;
5216                next_offset += envelope_size;
5217            }
5218
5219            let next_out_of_line = decoder.next_out_of_line();
5220            let handles_before = decoder.remaining_handles();
5221            if let Some((inlined, num_bytes, num_handles)) =
5222                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5223            {
5224                let member_inline_size =
5225                    <WlanFullmacOwePublicKey as fidl::encoding::TypeMarker>::inline_size(
5226                        decoder.context,
5227                    );
5228                if inlined != (member_inline_size <= 4) {
5229                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5230                }
5231                let inner_offset;
5232                let mut inner_depth = depth.clone();
5233                if inlined {
5234                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5235                    inner_offset = next_offset;
5236                } else {
5237                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5238                    inner_depth.increment()?;
5239                }
5240                let val_ref = self
5241                    .owe_public_key
5242                    .get_or_insert_with(|| fidl::new_empty!(WlanFullmacOwePublicKey, D));
5243                fidl::decode!(
5244                    WlanFullmacOwePublicKey,
5245                    D,
5246                    val_ref,
5247                    decoder,
5248                    inner_offset,
5249                    inner_depth
5250                )?;
5251                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5252                {
5253                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5254                }
5255                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5256                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5257                }
5258            }
5259
5260            next_offset += envelope_size;
5261
5262            // Decode the remaining unknown envelopes.
5263            while next_offset < end_offset {
5264                _next_ordinal_to_read += 1;
5265                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5266                next_offset += envelope_size;
5267            }
5268
5269            Ok(())
5270        }
5271    }
5272
5273    impl WlanFullmacImplDeauthRequest {
5274        #[inline(always)]
5275        fn max_ordinal_present(&self) -> u64 {
5276            if let Some(_) = self.reason_code {
5277                return 2;
5278            }
5279            if let Some(_) = self.peer_sta_address {
5280                return 1;
5281            }
5282            0
5283        }
5284    }
5285
5286    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDeauthRequest {
5287        type Borrowed<'a> = &'a Self;
5288        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5289            value
5290        }
5291    }
5292
5293    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDeauthRequest {
5294        type Owned = Self;
5295
5296        #[inline(always)]
5297        fn inline_align(_context: fidl::encoding::Context) -> usize {
5298            8
5299        }
5300
5301        #[inline(always)]
5302        fn inline_size(_context: fidl::encoding::Context) -> usize {
5303            16
5304        }
5305    }
5306
5307    unsafe impl<D: fidl::encoding::ResourceDialect>
5308        fidl::encoding::Encode<WlanFullmacImplDeauthRequest, D> for &WlanFullmacImplDeauthRequest
5309    {
5310        unsafe fn encode(
5311            self,
5312            encoder: &mut fidl::encoding::Encoder<'_, D>,
5313            offset: usize,
5314            mut depth: fidl::encoding::Depth,
5315        ) -> fidl::Result<()> {
5316            encoder.debug_check_bounds::<WlanFullmacImplDeauthRequest>(offset);
5317            // Vector header
5318            let max_ordinal: u64 = self.max_ordinal_present();
5319            encoder.write_num(max_ordinal, offset);
5320            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5321            // Calling encoder.out_of_line_offset(0) is not allowed.
5322            if max_ordinal == 0 {
5323                return Ok(());
5324            }
5325            depth.increment()?;
5326            let envelope_size = 8;
5327            let bytes_len = max_ordinal as usize * envelope_size;
5328            #[allow(unused_variables)]
5329            let offset = encoder.out_of_line_offset(bytes_len);
5330            let mut _prev_end_offset: usize = 0;
5331            if 1 > max_ordinal {
5332                return Ok(());
5333            }
5334
5335            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5336            // are envelope_size bytes.
5337            let cur_offset: usize = (1 - 1) * envelope_size;
5338
5339            // Zero reserved fields.
5340            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5341
5342            // Safety:
5343            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5344            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5345            //   envelope_size bytes, there is always sufficient room.
5346            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5347                self.peer_sta_address
5348                    .as_ref()
5349                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5350                encoder,
5351                offset + cur_offset,
5352                depth,
5353            )?;
5354
5355            _prev_end_offset = cur_offset + envelope_size;
5356            if 2 > max_ordinal {
5357                return Ok(());
5358            }
5359
5360            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5361            // are envelope_size bytes.
5362            let cur_offset: usize = (2 - 1) * envelope_size;
5363
5364            // Zero reserved fields.
5365            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5366
5367            // Safety:
5368            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5369            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5370            //   envelope_size bytes, there is always sufficient room.
5371            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>(
5372            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5373            encoder, offset + cur_offset, depth
5374        )?;
5375
5376            _prev_end_offset = cur_offset + envelope_size;
5377
5378            Ok(())
5379        }
5380    }
5381
5382    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5383        for WlanFullmacImplDeauthRequest
5384    {
5385        #[inline(always)]
5386        fn new_empty() -> Self {
5387            Self::default()
5388        }
5389
5390        unsafe fn decode(
5391            &mut self,
5392            decoder: &mut fidl::encoding::Decoder<'_, D>,
5393            offset: usize,
5394            mut depth: fidl::encoding::Depth,
5395        ) -> fidl::Result<()> {
5396            decoder.debug_check_bounds::<Self>(offset);
5397            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5398                None => return Err(fidl::Error::NotNullable),
5399                Some(len) => len,
5400            };
5401            // Calling decoder.out_of_line_offset(0) is not allowed.
5402            if len == 0 {
5403                return Ok(());
5404            };
5405            depth.increment()?;
5406            let envelope_size = 8;
5407            let bytes_len = len * envelope_size;
5408            let offset = decoder.out_of_line_offset(bytes_len)?;
5409            // Decode the envelope for each type.
5410            let mut _next_ordinal_to_read = 0;
5411            let mut next_offset = offset;
5412            let end_offset = offset + bytes_len;
5413            _next_ordinal_to_read += 1;
5414            if next_offset >= end_offset {
5415                return Ok(());
5416            }
5417
5418            // Decode unknown envelopes for gaps in ordinals.
5419            while _next_ordinal_to_read < 1 {
5420                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5421                _next_ordinal_to_read += 1;
5422                next_offset += envelope_size;
5423            }
5424
5425            let next_out_of_line = decoder.next_out_of_line();
5426            let handles_before = decoder.remaining_handles();
5427            if let Some((inlined, num_bytes, num_handles)) =
5428                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5429            {
5430                let member_inline_size =
5431                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5432                        decoder.context,
5433                    );
5434                if inlined != (member_inline_size <= 4) {
5435                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5436                }
5437                let inner_offset;
5438                let mut inner_depth = depth.clone();
5439                if inlined {
5440                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5441                    inner_offset = next_offset;
5442                } else {
5443                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5444                    inner_depth.increment()?;
5445                }
5446                let val_ref = self
5447                    .peer_sta_address
5448                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5449                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5450                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5451                {
5452                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5453                }
5454                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5455                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5456                }
5457            }
5458
5459            next_offset += envelope_size;
5460            _next_ordinal_to_read += 1;
5461            if next_offset >= end_offset {
5462                return Ok(());
5463            }
5464
5465            // Decode unknown envelopes for gaps in ordinals.
5466            while _next_ordinal_to_read < 2 {
5467                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5468                _next_ordinal_to_read += 1;
5469                next_offset += envelope_size;
5470            }
5471
5472            let next_out_of_line = decoder.next_out_of_line();
5473            let handles_before = decoder.remaining_handles();
5474            if let Some((inlined, num_bytes, num_handles)) =
5475                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5476            {
5477                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5478                if inlined != (member_inline_size <= 4) {
5479                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5480                }
5481                let inner_offset;
5482                let mut inner_depth = depth.clone();
5483                if inlined {
5484                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5485                    inner_offset = next_offset;
5486                } else {
5487                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5488                    inner_depth.increment()?;
5489                }
5490                let val_ref = self.reason_code.get_or_insert_with(|| {
5491                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D)
5492                });
5493                fidl::decode!(
5494                    fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
5495                    D,
5496                    val_ref,
5497                    decoder,
5498                    inner_offset,
5499                    inner_depth
5500                )?;
5501                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5502                {
5503                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5504                }
5505                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5506                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5507                }
5508            }
5509
5510            next_offset += envelope_size;
5511
5512            // Decode the remaining unknown envelopes.
5513            while next_offset < end_offset {
5514                _next_ordinal_to_read += 1;
5515                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5516                next_offset += envelope_size;
5517            }
5518
5519            Ok(())
5520        }
5521    }
5522
5523    impl WlanFullmacImplDisassocRequest {
5524        #[inline(always)]
5525        fn max_ordinal_present(&self) -> u64 {
5526            if let Some(_) = self.reason_code {
5527                return 2;
5528            }
5529            if let Some(_) = self.peer_sta_address {
5530                return 1;
5531            }
5532            0
5533        }
5534    }
5535
5536    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDisassocRequest {
5537        type Borrowed<'a> = &'a Self;
5538        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5539            value
5540        }
5541    }
5542
5543    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDisassocRequest {
5544        type Owned = Self;
5545
5546        #[inline(always)]
5547        fn inline_align(_context: fidl::encoding::Context) -> usize {
5548            8
5549        }
5550
5551        #[inline(always)]
5552        fn inline_size(_context: fidl::encoding::Context) -> usize {
5553            16
5554        }
5555    }
5556
5557    unsafe impl<D: fidl::encoding::ResourceDialect>
5558        fidl::encoding::Encode<WlanFullmacImplDisassocRequest, D>
5559        for &WlanFullmacImplDisassocRequest
5560    {
5561        unsafe fn encode(
5562            self,
5563            encoder: &mut fidl::encoding::Encoder<'_, D>,
5564            offset: usize,
5565            mut depth: fidl::encoding::Depth,
5566        ) -> fidl::Result<()> {
5567            encoder.debug_check_bounds::<WlanFullmacImplDisassocRequest>(offset);
5568            // Vector header
5569            let max_ordinal: u64 = self.max_ordinal_present();
5570            encoder.write_num(max_ordinal, offset);
5571            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5572            // Calling encoder.out_of_line_offset(0) is not allowed.
5573            if max_ordinal == 0 {
5574                return Ok(());
5575            }
5576            depth.increment()?;
5577            let envelope_size = 8;
5578            let bytes_len = max_ordinal as usize * envelope_size;
5579            #[allow(unused_variables)]
5580            let offset = encoder.out_of_line_offset(bytes_len);
5581            let mut _prev_end_offset: usize = 0;
5582            if 1 > max_ordinal {
5583                return Ok(());
5584            }
5585
5586            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5587            // are envelope_size bytes.
5588            let cur_offset: usize = (1 - 1) * envelope_size;
5589
5590            // Zero reserved fields.
5591            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5592
5593            // Safety:
5594            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5595            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5596            //   envelope_size bytes, there is always sufficient room.
5597            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5598                self.peer_sta_address
5599                    .as_ref()
5600                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5601                encoder,
5602                offset + cur_offset,
5603                depth,
5604            )?;
5605
5606            _prev_end_offset = cur_offset + envelope_size;
5607            if 2 > max_ordinal {
5608                return Ok(());
5609            }
5610
5611            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5612            // are envelope_size bytes.
5613            let cur_offset: usize = (2 - 1) * envelope_size;
5614
5615            // Zero reserved fields.
5616            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5617
5618            // Safety:
5619            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5620            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5621            //   envelope_size bytes, there is always sufficient room.
5622            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>(
5623            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5624            encoder, offset + cur_offset, depth
5625        )?;
5626
5627            _prev_end_offset = cur_offset + envelope_size;
5628
5629            Ok(())
5630        }
5631    }
5632
5633    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5634        for WlanFullmacImplDisassocRequest
5635    {
5636        #[inline(always)]
5637        fn new_empty() -> Self {
5638            Self::default()
5639        }
5640
5641        unsafe fn decode(
5642            &mut self,
5643            decoder: &mut fidl::encoding::Decoder<'_, D>,
5644            offset: usize,
5645            mut depth: fidl::encoding::Depth,
5646        ) -> fidl::Result<()> {
5647            decoder.debug_check_bounds::<Self>(offset);
5648            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5649                None => return Err(fidl::Error::NotNullable),
5650                Some(len) => len,
5651            };
5652            // Calling decoder.out_of_line_offset(0) is not allowed.
5653            if len == 0 {
5654                return Ok(());
5655            };
5656            depth.increment()?;
5657            let envelope_size = 8;
5658            let bytes_len = len * envelope_size;
5659            let offset = decoder.out_of_line_offset(bytes_len)?;
5660            // Decode the envelope for each type.
5661            let mut _next_ordinal_to_read = 0;
5662            let mut next_offset = offset;
5663            let end_offset = offset + bytes_len;
5664            _next_ordinal_to_read += 1;
5665            if next_offset >= end_offset {
5666                return Ok(());
5667            }
5668
5669            // Decode unknown envelopes for gaps in ordinals.
5670            while _next_ordinal_to_read < 1 {
5671                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5672                _next_ordinal_to_read += 1;
5673                next_offset += envelope_size;
5674            }
5675
5676            let next_out_of_line = decoder.next_out_of_line();
5677            let handles_before = decoder.remaining_handles();
5678            if let Some((inlined, num_bytes, num_handles)) =
5679                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5680            {
5681                let member_inline_size =
5682                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5683                        decoder.context,
5684                    );
5685                if inlined != (member_inline_size <= 4) {
5686                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5687                }
5688                let inner_offset;
5689                let mut inner_depth = depth.clone();
5690                if inlined {
5691                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5692                    inner_offset = next_offset;
5693                } else {
5694                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5695                    inner_depth.increment()?;
5696                }
5697                let val_ref = self
5698                    .peer_sta_address
5699                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5700                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5701                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5702                {
5703                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5704                }
5705                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5706                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5707                }
5708            }
5709
5710            next_offset += envelope_size;
5711            _next_ordinal_to_read += 1;
5712            if next_offset >= end_offset {
5713                return Ok(());
5714            }
5715
5716            // Decode unknown envelopes for gaps in ordinals.
5717            while _next_ordinal_to_read < 2 {
5718                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5719                _next_ordinal_to_read += 1;
5720                next_offset += envelope_size;
5721            }
5722
5723            let next_out_of_line = decoder.next_out_of_line();
5724            let handles_before = decoder.remaining_handles();
5725            if let Some((inlined, num_bytes, num_handles)) =
5726                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5727            {
5728                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5729                if inlined != (member_inline_size <= 4) {
5730                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5731                }
5732                let inner_offset;
5733                let mut inner_depth = depth.clone();
5734                if inlined {
5735                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5736                    inner_offset = next_offset;
5737                } else {
5738                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5739                    inner_depth.increment()?;
5740                }
5741                let val_ref = self.reason_code.get_or_insert_with(|| {
5742                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D)
5743                });
5744                fidl::decode!(
5745                    fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
5746                    D,
5747                    val_ref,
5748                    decoder,
5749                    inner_offset,
5750                    inner_depth
5751                )?;
5752                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5753                {
5754                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5755                }
5756                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5757                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5758                }
5759            }
5760
5761            next_offset += envelope_size;
5762
5763            // Decode the remaining unknown envelopes.
5764            while next_offset < end_offset {
5765                _next_ordinal_to_read += 1;
5766                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5767                next_offset += envelope_size;
5768            }
5769
5770            Ok(())
5771        }
5772    }
5773
5774    impl WlanFullmacImplEapolTxRequest {
5775        #[inline(always)]
5776        fn max_ordinal_present(&self) -> u64 {
5777            if let Some(_) = self.data {
5778                return 3;
5779            }
5780            if let Some(_) = self.dst_addr {
5781                return 2;
5782            }
5783            if let Some(_) = self.src_addr {
5784                return 1;
5785            }
5786            0
5787        }
5788    }
5789
5790    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplEapolTxRequest {
5791        type Borrowed<'a> = &'a Self;
5792        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5793            value
5794        }
5795    }
5796
5797    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplEapolTxRequest {
5798        type Owned = Self;
5799
5800        #[inline(always)]
5801        fn inline_align(_context: fidl::encoding::Context) -> usize {
5802            8
5803        }
5804
5805        #[inline(always)]
5806        fn inline_size(_context: fidl::encoding::Context) -> usize {
5807            16
5808        }
5809    }
5810
5811    unsafe impl<D: fidl::encoding::ResourceDialect>
5812        fidl::encoding::Encode<WlanFullmacImplEapolTxRequest, D>
5813        for &WlanFullmacImplEapolTxRequest
5814    {
5815        unsafe fn encode(
5816            self,
5817            encoder: &mut fidl::encoding::Encoder<'_, D>,
5818            offset: usize,
5819            mut depth: fidl::encoding::Depth,
5820        ) -> fidl::Result<()> {
5821            encoder.debug_check_bounds::<WlanFullmacImplEapolTxRequest>(offset);
5822            // Vector header
5823            let max_ordinal: u64 = self.max_ordinal_present();
5824            encoder.write_num(max_ordinal, offset);
5825            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5826            // Calling encoder.out_of_line_offset(0) is not allowed.
5827            if max_ordinal == 0 {
5828                return Ok(());
5829            }
5830            depth.increment()?;
5831            let envelope_size = 8;
5832            let bytes_len = max_ordinal as usize * envelope_size;
5833            #[allow(unused_variables)]
5834            let offset = encoder.out_of_line_offset(bytes_len);
5835            let mut _prev_end_offset: usize = 0;
5836            if 1 > max_ordinal {
5837                return Ok(());
5838            }
5839
5840            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5841            // are envelope_size bytes.
5842            let cur_offset: usize = (1 - 1) * envelope_size;
5843
5844            // Zero reserved fields.
5845            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5846
5847            // Safety:
5848            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5849            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5850            //   envelope_size bytes, there is always sufficient room.
5851            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5852                self.src_addr
5853                    .as_ref()
5854                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5855                encoder,
5856                offset + cur_offset,
5857                depth,
5858            )?;
5859
5860            _prev_end_offset = cur_offset + envelope_size;
5861            if 2 > max_ordinal {
5862                return Ok(());
5863            }
5864
5865            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5866            // are envelope_size bytes.
5867            let cur_offset: usize = (2 - 1) * envelope_size;
5868
5869            // Zero reserved fields.
5870            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5871
5872            // Safety:
5873            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5874            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5875            //   envelope_size bytes, there is always sufficient room.
5876            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5877                self.dst_addr
5878                    .as_ref()
5879                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5880                encoder,
5881                offset + cur_offset,
5882                depth,
5883            )?;
5884
5885            _prev_end_offset = cur_offset + envelope_size;
5886            if 3 > max_ordinal {
5887                return Ok(());
5888            }
5889
5890            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5891            // are envelope_size bytes.
5892            let cur_offset: usize = (3 - 1) * envelope_size;
5893
5894            // Zero reserved fields.
5895            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5896
5897            // Safety:
5898            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5899            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5900            //   envelope_size bytes, there is always sufficient room.
5901            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
5902            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
5903            encoder, offset + cur_offset, depth
5904        )?;
5905
5906            _prev_end_offset = cur_offset + envelope_size;
5907
5908            Ok(())
5909        }
5910    }
5911
5912    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5913        for WlanFullmacImplEapolTxRequest
5914    {
5915        #[inline(always)]
5916        fn new_empty() -> Self {
5917            Self::default()
5918        }
5919
5920        unsafe fn decode(
5921            &mut self,
5922            decoder: &mut fidl::encoding::Decoder<'_, D>,
5923            offset: usize,
5924            mut depth: fidl::encoding::Depth,
5925        ) -> fidl::Result<()> {
5926            decoder.debug_check_bounds::<Self>(offset);
5927            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5928                None => return Err(fidl::Error::NotNullable),
5929                Some(len) => len,
5930            };
5931            // Calling decoder.out_of_line_offset(0) is not allowed.
5932            if len == 0 {
5933                return Ok(());
5934            };
5935            depth.increment()?;
5936            let envelope_size = 8;
5937            let bytes_len = len * envelope_size;
5938            let offset = decoder.out_of_line_offset(bytes_len)?;
5939            // Decode the envelope for each type.
5940            let mut _next_ordinal_to_read = 0;
5941            let mut next_offset = offset;
5942            let end_offset = offset + bytes_len;
5943            _next_ordinal_to_read += 1;
5944            if next_offset >= end_offset {
5945                return Ok(());
5946            }
5947
5948            // Decode unknown envelopes for gaps in ordinals.
5949            while _next_ordinal_to_read < 1 {
5950                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5951                _next_ordinal_to_read += 1;
5952                next_offset += envelope_size;
5953            }
5954
5955            let next_out_of_line = decoder.next_out_of_line();
5956            let handles_before = decoder.remaining_handles();
5957            if let Some((inlined, num_bytes, num_handles)) =
5958                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5959            {
5960                let member_inline_size =
5961                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5962                        decoder.context,
5963                    );
5964                if inlined != (member_inline_size <= 4) {
5965                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5966                }
5967                let inner_offset;
5968                let mut inner_depth = depth.clone();
5969                if inlined {
5970                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5971                    inner_offset = next_offset;
5972                } else {
5973                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5974                    inner_depth.increment()?;
5975                }
5976                let val_ref = self
5977                    .src_addr
5978                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5979                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5980                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5981                {
5982                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5983                }
5984                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5985                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5986                }
5987            }
5988
5989            next_offset += envelope_size;
5990            _next_ordinal_to_read += 1;
5991            if next_offset >= end_offset {
5992                return Ok(());
5993            }
5994
5995            // Decode unknown envelopes for gaps in ordinals.
5996            while _next_ordinal_to_read < 2 {
5997                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5998                _next_ordinal_to_read += 1;
5999                next_offset += envelope_size;
6000            }
6001
6002            let next_out_of_line = decoder.next_out_of_line();
6003            let handles_before = decoder.remaining_handles();
6004            if let Some((inlined, num_bytes, num_handles)) =
6005                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6006            {
6007                let member_inline_size =
6008                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6009                        decoder.context,
6010                    );
6011                if inlined != (member_inline_size <= 4) {
6012                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6013                }
6014                let inner_offset;
6015                let mut inner_depth = depth.clone();
6016                if inlined {
6017                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6018                    inner_offset = next_offset;
6019                } else {
6020                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6021                    inner_depth.increment()?;
6022                }
6023                let val_ref = self
6024                    .dst_addr
6025                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6026                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6027                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6028                {
6029                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6030                }
6031                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6032                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6033                }
6034            }
6035
6036            next_offset += envelope_size;
6037            _next_ordinal_to_read += 1;
6038            if next_offset >= end_offset {
6039                return Ok(());
6040            }
6041
6042            // Decode unknown envelopes for gaps in ordinals.
6043            while _next_ordinal_to_read < 3 {
6044                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6045                _next_ordinal_to_read += 1;
6046                next_offset += envelope_size;
6047            }
6048
6049            let next_out_of_line = decoder.next_out_of_line();
6050            let handles_before = decoder.remaining_handles();
6051            if let Some((inlined, num_bytes, num_handles)) =
6052                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6053            {
6054                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6055                if inlined != (member_inline_size <= 4) {
6056                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6057                }
6058                let inner_offset;
6059                let mut inner_depth = depth.clone();
6060                if inlined {
6061                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6062                    inner_offset = next_offset;
6063                } else {
6064                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6065                    inner_depth.increment()?;
6066                }
6067                let val_ref = self.data.get_or_insert_with(|| {
6068                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
6069                });
6070                fidl::decode!(
6071                    fidl::encoding::UnboundedVector<u8>,
6072                    D,
6073                    val_ref,
6074                    decoder,
6075                    inner_offset,
6076                    inner_depth
6077                )?;
6078                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6079                {
6080                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6081                }
6082                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6083                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6084                }
6085            }
6086
6087            next_offset += envelope_size;
6088
6089            // Decode the remaining unknown envelopes.
6090            while next_offset < end_offset {
6091                _next_ordinal_to_read += 1;
6092                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6093                next_offset += envelope_size;
6094            }
6095
6096            Ok(())
6097        }
6098    }
6099
6100    impl WlanFullmacImplIfcAssocIndRequest {
6101        #[inline(always)]
6102        fn max_ordinal_present(&self) -> u64 {
6103            if let Some(_) = self.vendor_ie {
6104                return 5;
6105            }
6106            if let Some(_) = self.rsne {
6107                return 4;
6108            }
6109            if let Some(_) = self.ssid {
6110                return 3;
6111            }
6112            if let Some(_) = self.listen_interval {
6113                return 2;
6114            }
6115            if let Some(_) = self.peer_sta_address {
6116                return 1;
6117            }
6118            0
6119        }
6120    }
6121
6122    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAssocIndRequest {
6123        type Borrowed<'a> = &'a Self;
6124        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6125            value
6126        }
6127    }
6128
6129    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAssocIndRequest {
6130        type Owned = Self;
6131
6132        #[inline(always)]
6133        fn inline_align(_context: fidl::encoding::Context) -> usize {
6134            8
6135        }
6136
6137        #[inline(always)]
6138        fn inline_size(_context: fidl::encoding::Context) -> usize {
6139            16
6140        }
6141    }
6142
6143    unsafe impl<D: fidl::encoding::ResourceDialect>
6144        fidl::encoding::Encode<WlanFullmacImplIfcAssocIndRequest, D>
6145        for &WlanFullmacImplIfcAssocIndRequest
6146    {
6147        unsafe fn encode(
6148            self,
6149            encoder: &mut fidl::encoding::Encoder<'_, D>,
6150            offset: usize,
6151            mut depth: fidl::encoding::Depth,
6152        ) -> fidl::Result<()> {
6153            encoder.debug_check_bounds::<WlanFullmacImplIfcAssocIndRequest>(offset);
6154            // Vector header
6155            let max_ordinal: u64 = self.max_ordinal_present();
6156            encoder.write_num(max_ordinal, offset);
6157            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6158            // Calling encoder.out_of_line_offset(0) is not allowed.
6159            if max_ordinal == 0 {
6160                return Ok(());
6161            }
6162            depth.increment()?;
6163            let envelope_size = 8;
6164            let bytes_len = max_ordinal as usize * envelope_size;
6165            #[allow(unused_variables)]
6166            let offset = encoder.out_of_line_offset(bytes_len);
6167            let mut _prev_end_offset: usize = 0;
6168            if 1 > max_ordinal {
6169                return Ok(());
6170            }
6171
6172            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6173            // are envelope_size bytes.
6174            let cur_offset: usize = (1 - 1) * envelope_size;
6175
6176            // Zero reserved fields.
6177            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6178
6179            // Safety:
6180            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6181            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6182            //   envelope_size bytes, there is always sufficient room.
6183            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6184                self.peer_sta_address
6185                    .as_ref()
6186                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6187                encoder,
6188                offset + cur_offset,
6189                depth,
6190            )?;
6191
6192            _prev_end_offset = cur_offset + envelope_size;
6193            if 2 > max_ordinal {
6194                return Ok(());
6195            }
6196
6197            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6198            // are envelope_size bytes.
6199            let cur_offset: usize = (2 - 1) * envelope_size;
6200
6201            // Zero reserved fields.
6202            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6203
6204            // Safety:
6205            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6206            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6207            //   envelope_size bytes, there is always sufficient room.
6208            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6209                self.listen_interval.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6210                encoder,
6211                offset + cur_offset,
6212                depth,
6213            )?;
6214
6215            _prev_end_offset = cur_offset + envelope_size;
6216            if 3 > max_ordinal {
6217                return Ok(());
6218            }
6219
6220            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6221            // are envelope_size bytes.
6222            let cur_offset: usize = (3 - 1) * envelope_size;
6223
6224            // Zero reserved fields.
6225            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6226
6227            // Safety:
6228            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6229            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6230            //   envelope_size bytes, there is always sufficient room.
6231            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
6232                self.ssid.as_ref().map(
6233                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
6234                ),
6235                encoder,
6236                offset + cur_offset,
6237                depth,
6238            )?;
6239
6240            _prev_end_offset = cur_offset + envelope_size;
6241            if 4 > max_ordinal {
6242                return Ok(());
6243            }
6244
6245            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6246            // are envelope_size bytes.
6247            let cur_offset: usize = (4 - 1) * envelope_size;
6248
6249            // Zero reserved fields.
6250            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6251
6252            // Safety:
6253            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6254            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6255            //   envelope_size bytes, there is always sufficient room.
6256            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
6257                self.rsne.as_ref().map(
6258                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
6259                ),
6260                encoder,
6261                offset + cur_offset,
6262                depth,
6263            )?;
6264
6265            _prev_end_offset = cur_offset + envelope_size;
6266            if 5 > max_ordinal {
6267                return Ok(());
6268            }
6269
6270            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6271            // are envelope_size bytes.
6272            let cur_offset: usize = (5 - 1) * envelope_size;
6273
6274            // Zero reserved fields.
6275            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6276
6277            // Safety:
6278            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6279            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6280            //   envelope_size bytes, there is always sufficient room.
6281            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
6282                self.vendor_ie.as_ref().map(
6283                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
6284                ),
6285                encoder,
6286                offset + cur_offset,
6287                depth,
6288            )?;
6289
6290            _prev_end_offset = cur_offset + envelope_size;
6291
6292            Ok(())
6293        }
6294    }
6295
6296    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6297        for WlanFullmacImplIfcAssocIndRequest
6298    {
6299        #[inline(always)]
6300        fn new_empty() -> Self {
6301            Self::default()
6302        }
6303
6304        unsafe fn decode(
6305            &mut self,
6306            decoder: &mut fidl::encoding::Decoder<'_, D>,
6307            offset: usize,
6308            mut depth: fidl::encoding::Depth,
6309        ) -> fidl::Result<()> {
6310            decoder.debug_check_bounds::<Self>(offset);
6311            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6312                None => return Err(fidl::Error::NotNullable),
6313                Some(len) => len,
6314            };
6315            // Calling decoder.out_of_line_offset(0) is not allowed.
6316            if len == 0 {
6317                return Ok(());
6318            };
6319            depth.increment()?;
6320            let envelope_size = 8;
6321            let bytes_len = len * envelope_size;
6322            let offset = decoder.out_of_line_offset(bytes_len)?;
6323            // Decode the envelope for each type.
6324            let mut _next_ordinal_to_read = 0;
6325            let mut next_offset = offset;
6326            let end_offset = offset + bytes_len;
6327            _next_ordinal_to_read += 1;
6328            if next_offset >= end_offset {
6329                return Ok(());
6330            }
6331
6332            // Decode unknown envelopes for gaps in ordinals.
6333            while _next_ordinal_to_read < 1 {
6334                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6335                _next_ordinal_to_read += 1;
6336                next_offset += envelope_size;
6337            }
6338
6339            let next_out_of_line = decoder.next_out_of_line();
6340            let handles_before = decoder.remaining_handles();
6341            if let Some((inlined, num_bytes, num_handles)) =
6342                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6343            {
6344                let member_inline_size =
6345                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6346                        decoder.context,
6347                    );
6348                if inlined != (member_inline_size <= 4) {
6349                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6350                }
6351                let inner_offset;
6352                let mut inner_depth = depth.clone();
6353                if inlined {
6354                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6355                    inner_offset = next_offset;
6356                } else {
6357                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6358                    inner_depth.increment()?;
6359                }
6360                let val_ref = self
6361                    .peer_sta_address
6362                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6363                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6364                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6365                {
6366                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6367                }
6368                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6369                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6370                }
6371            }
6372
6373            next_offset += envelope_size;
6374            _next_ordinal_to_read += 1;
6375            if next_offset >= end_offset {
6376                return Ok(());
6377            }
6378
6379            // Decode unknown envelopes for gaps in ordinals.
6380            while _next_ordinal_to_read < 2 {
6381                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6382                _next_ordinal_to_read += 1;
6383                next_offset += envelope_size;
6384            }
6385
6386            let next_out_of_line = decoder.next_out_of_line();
6387            let handles_before = decoder.remaining_handles();
6388            if let Some((inlined, num_bytes, num_handles)) =
6389                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6390            {
6391                let member_inline_size =
6392                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6393                if inlined != (member_inline_size <= 4) {
6394                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6395                }
6396                let inner_offset;
6397                let mut inner_depth = depth.clone();
6398                if inlined {
6399                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6400                    inner_offset = next_offset;
6401                } else {
6402                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6403                    inner_depth.increment()?;
6404                }
6405                let val_ref = self.listen_interval.get_or_insert_with(|| fidl::new_empty!(u16, D));
6406                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6407                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6408                {
6409                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6410                }
6411                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6412                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6413                }
6414            }
6415
6416            next_offset += envelope_size;
6417            _next_ordinal_to_read += 1;
6418            if next_offset >= end_offset {
6419                return Ok(());
6420            }
6421
6422            // Decode unknown envelopes for gaps in ordinals.
6423            while _next_ordinal_to_read < 3 {
6424                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6425                _next_ordinal_to_read += 1;
6426                next_offset += envelope_size;
6427            }
6428
6429            let next_out_of_line = decoder.next_out_of_line();
6430            let handles_before = decoder.remaining_handles();
6431            if let Some((inlined, num_bytes, num_handles)) =
6432                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6433            {
6434                let member_inline_size =
6435                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
6436                        decoder.context,
6437                    );
6438                if inlined != (member_inline_size <= 4) {
6439                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6440                }
6441                let inner_offset;
6442                let mut inner_depth = depth.clone();
6443                if inlined {
6444                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6445                    inner_offset = next_offset;
6446                } else {
6447                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6448                    inner_depth.increment()?;
6449                }
6450                let val_ref = self
6451                    .ssid
6452                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
6453                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
6454                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6455                {
6456                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6457                }
6458                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6459                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6460                }
6461            }
6462
6463            next_offset += envelope_size;
6464            _next_ordinal_to_read += 1;
6465            if next_offset >= end_offset {
6466                return Ok(());
6467            }
6468
6469            // Decode unknown envelopes for gaps in ordinals.
6470            while _next_ordinal_to_read < 4 {
6471                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6472                _next_ordinal_to_read += 1;
6473                next_offset += envelope_size;
6474            }
6475
6476            let next_out_of_line = decoder.next_out_of_line();
6477            let handles_before = decoder.remaining_handles();
6478            if let Some((inlined, num_bytes, num_handles)) =
6479                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6480            {
6481                let member_inline_size =
6482                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
6483                        decoder.context,
6484                    );
6485                if inlined != (member_inline_size <= 4) {
6486                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6487                }
6488                let inner_offset;
6489                let mut inner_depth = depth.clone();
6490                if inlined {
6491                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6492                    inner_offset = next_offset;
6493                } else {
6494                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6495                    inner_depth.increment()?;
6496                }
6497                let val_ref = self
6498                    .rsne
6499                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
6500                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
6501                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6502                {
6503                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6504                }
6505                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6506                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6507                }
6508            }
6509
6510            next_offset += envelope_size;
6511            _next_ordinal_to_read += 1;
6512            if next_offset >= end_offset {
6513                return Ok(());
6514            }
6515
6516            // Decode unknown envelopes for gaps in ordinals.
6517            while _next_ordinal_to_read < 5 {
6518                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6519                _next_ordinal_to_read += 1;
6520                next_offset += envelope_size;
6521            }
6522
6523            let next_out_of_line = decoder.next_out_of_line();
6524            let handles_before = decoder.remaining_handles();
6525            if let Some((inlined, num_bytes, num_handles)) =
6526                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6527            {
6528                let member_inline_size =
6529                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
6530                        decoder.context,
6531                    );
6532                if inlined != (member_inline_size <= 4) {
6533                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6534                }
6535                let inner_offset;
6536                let mut inner_depth = depth.clone();
6537                if inlined {
6538                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6539                    inner_offset = next_offset;
6540                } else {
6541                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6542                    inner_depth.increment()?;
6543                }
6544                let val_ref = self
6545                    .vendor_ie
6546                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
6547                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
6548                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6549                {
6550                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6551                }
6552                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6553                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6554                }
6555            }
6556
6557            next_offset += envelope_size;
6558
6559            // Decode the remaining unknown envelopes.
6560            while next_offset < end_offset {
6561                _next_ordinal_to_read += 1;
6562                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6563                next_offset += envelope_size;
6564            }
6565
6566            Ok(())
6567        }
6568    }
6569
6570    impl WlanFullmacImplIfcAuthIndRequest {
6571        #[inline(always)]
6572        fn max_ordinal_present(&self) -> u64 {
6573            if let Some(_) = self.auth_type {
6574                return 2;
6575            }
6576            if let Some(_) = self.peer_sta_address {
6577                return 1;
6578            }
6579            0
6580        }
6581    }
6582
6583    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAuthIndRequest {
6584        type Borrowed<'a> = &'a Self;
6585        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6586            value
6587        }
6588    }
6589
6590    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAuthIndRequest {
6591        type Owned = Self;
6592
6593        #[inline(always)]
6594        fn inline_align(_context: fidl::encoding::Context) -> usize {
6595            8
6596        }
6597
6598        #[inline(always)]
6599        fn inline_size(_context: fidl::encoding::Context) -> usize {
6600            16
6601        }
6602    }
6603
6604    unsafe impl<D: fidl::encoding::ResourceDialect>
6605        fidl::encoding::Encode<WlanFullmacImplIfcAuthIndRequest, D>
6606        for &WlanFullmacImplIfcAuthIndRequest
6607    {
6608        unsafe fn encode(
6609            self,
6610            encoder: &mut fidl::encoding::Encoder<'_, D>,
6611            offset: usize,
6612            mut depth: fidl::encoding::Depth,
6613        ) -> fidl::Result<()> {
6614            encoder.debug_check_bounds::<WlanFullmacImplIfcAuthIndRequest>(offset);
6615            // Vector header
6616            let max_ordinal: u64 = self.max_ordinal_present();
6617            encoder.write_num(max_ordinal, offset);
6618            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6619            // Calling encoder.out_of_line_offset(0) is not allowed.
6620            if max_ordinal == 0 {
6621                return Ok(());
6622            }
6623            depth.increment()?;
6624            let envelope_size = 8;
6625            let bytes_len = max_ordinal as usize * envelope_size;
6626            #[allow(unused_variables)]
6627            let offset = encoder.out_of_line_offset(bytes_len);
6628            let mut _prev_end_offset: usize = 0;
6629            if 1 > max_ordinal {
6630                return Ok(());
6631            }
6632
6633            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6634            // are envelope_size bytes.
6635            let cur_offset: usize = (1 - 1) * envelope_size;
6636
6637            // Zero reserved fields.
6638            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6639
6640            // Safety:
6641            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6642            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6643            //   envelope_size bytes, there is always sufficient room.
6644            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6645                self.peer_sta_address
6646                    .as_ref()
6647                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6648                encoder,
6649                offset + cur_offset,
6650                depth,
6651            )?;
6652
6653            _prev_end_offset = cur_offset + envelope_size;
6654            if 2 > max_ordinal {
6655                return Ok(());
6656            }
6657
6658            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6659            // are envelope_size bytes.
6660            let cur_offset: usize = (2 - 1) * envelope_size;
6661
6662            // Zero reserved fields.
6663            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6664
6665            // Safety:
6666            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6667            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6668            //   envelope_size bytes, there is always sufficient room.
6669            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
6670                self.auth_type
6671                    .as_ref()
6672                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
6673                encoder,
6674                offset + cur_offset,
6675                depth,
6676            )?;
6677
6678            _prev_end_offset = cur_offset + envelope_size;
6679
6680            Ok(())
6681        }
6682    }
6683
6684    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6685        for WlanFullmacImplIfcAuthIndRequest
6686    {
6687        #[inline(always)]
6688        fn new_empty() -> Self {
6689            Self::default()
6690        }
6691
6692        unsafe fn decode(
6693            &mut self,
6694            decoder: &mut fidl::encoding::Decoder<'_, D>,
6695            offset: usize,
6696            mut depth: fidl::encoding::Depth,
6697        ) -> fidl::Result<()> {
6698            decoder.debug_check_bounds::<Self>(offset);
6699            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6700                None => return Err(fidl::Error::NotNullable),
6701                Some(len) => len,
6702            };
6703            // Calling decoder.out_of_line_offset(0) is not allowed.
6704            if len == 0 {
6705                return Ok(());
6706            };
6707            depth.increment()?;
6708            let envelope_size = 8;
6709            let bytes_len = len * envelope_size;
6710            let offset = decoder.out_of_line_offset(bytes_len)?;
6711            // Decode the envelope for each type.
6712            let mut _next_ordinal_to_read = 0;
6713            let mut next_offset = offset;
6714            let end_offset = offset + bytes_len;
6715            _next_ordinal_to_read += 1;
6716            if next_offset >= end_offset {
6717                return Ok(());
6718            }
6719
6720            // Decode unknown envelopes for gaps in ordinals.
6721            while _next_ordinal_to_read < 1 {
6722                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6723                _next_ordinal_to_read += 1;
6724                next_offset += envelope_size;
6725            }
6726
6727            let next_out_of_line = decoder.next_out_of_line();
6728            let handles_before = decoder.remaining_handles();
6729            if let Some((inlined, num_bytes, num_handles)) =
6730                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6731            {
6732                let member_inline_size =
6733                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6734                        decoder.context,
6735                    );
6736                if inlined != (member_inline_size <= 4) {
6737                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6738                }
6739                let inner_offset;
6740                let mut inner_depth = depth.clone();
6741                if inlined {
6742                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6743                    inner_offset = next_offset;
6744                } else {
6745                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6746                    inner_depth.increment()?;
6747                }
6748                let val_ref = self
6749                    .peer_sta_address
6750                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6751                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6752                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6753                {
6754                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6755                }
6756                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6757                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6758                }
6759            }
6760
6761            next_offset += envelope_size;
6762            _next_ordinal_to_read += 1;
6763            if next_offset >= end_offset {
6764                return Ok(());
6765            }
6766
6767            // Decode unknown envelopes for gaps in ordinals.
6768            while _next_ordinal_to_read < 2 {
6769                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6770                _next_ordinal_to_read += 1;
6771                next_offset += envelope_size;
6772            }
6773
6774            let next_out_of_line = decoder.next_out_of_line();
6775            let handles_before = decoder.remaining_handles();
6776            if let Some((inlined, num_bytes, num_handles)) =
6777                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6778            {
6779                let member_inline_size =
6780                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6781                if inlined != (member_inline_size <= 4) {
6782                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6783                }
6784                let inner_offset;
6785                let mut inner_depth = depth.clone();
6786                if inlined {
6787                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6788                    inner_offset = next_offset;
6789                } else {
6790                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6791                    inner_depth.increment()?;
6792                }
6793                let val_ref =
6794                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
6795                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
6796                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6797                {
6798                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6799                }
6800                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6801                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6802                }
6803            }
6804
6805            next_offset += envelope_size;
6806
6807            // Decode the remaining unknown envelopes.
6808            while next_offset < end_offset {
6809                _next_ordinal_to_read += 1;
6810                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6811                next_offset += envelope_size;
6812            }
6813
6814            Ok(())
6815        }
6816    }
6817
6818    impl WlanFullmacImplIfcConnectConfRequest {
6819        #[inline(always)]
6820        fn max_ordinal_present(&self) -> u64 {
6821            if let Some(_) = self.association_ies {
6822                return 4;
6823            }
6824            if let Some(_) = self.association_id {
6825                return 3;
6826            }
6827            if let Some(_) = self.result_code {
6828                return 2;
6829            }
6830            if let Some(_) = self.peer_sta_address {
6831                return 1;
6832            }
6833            0
6834        }
6835    }
6836
6837    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcConnectConfRequest {
6838        type Borrowed<'a> = &'a Self;
6839        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6840            value
6841        }
6842    }
6843
6844    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcConnectConfRequest {
6845        type Owned = Self;
6846
6847        #[inline(always)]
6848        fn inline_align(_context: fidl::encoding::Context) -> usize {
6849            8
6850        }
6851
6852        #[inline(always)]
6853        fn inline_size(_context: fidl::encoding::Context) -> usize {
6854            16
6855        }
6856    }
6857
6858    unsafe impl<D: fidl::encoding::ResourceDialect>
6859        fidl::encoding::Encode<WlanFullmacImplIfcConnectConfRequest, D>
6860        for &WlanFullmacImplIfcConnectConfRequest
6861    {
6862        unsafe fn encode(
6863            self,
6864            encoder: &mut fidl::encoding::Encoder<'_, D>,
6865            offset: usize,
6866            mut depth: fidl::encoding::Depth,
6867        ) -> fidl::Result<()> {
6868            encoder.debug_check_bounds::<WlanFullmacImplIfcConnectConfRequest>(offset);
6869            // Vector header
6870            let max_ordinal: u64 = self.max_ordinal_present();
6871            encoder.write_num(max_ordinal, offset);
6872            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6873            // Calling encoder.out_of_line_offset(0) is not allowed.
6874            if max_ordinal == 0 {
6875                return Ok(());
6876            }
6877            depth.increment()?;
6878            let envelope_size = 8;
6879            let bytes_len = max_ordinal as usize * envelope_size;
6880            #[allow(unused_variables)]
6881            let offset = encoder.out_of_line_offset(bytes_len);
6882            let mut _prev_end_offset: usize = 0;
6883            if 1 > max_ordinal {
6884                return Ok(());
6885            }
6886
6887            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6888            // are envelope_size bytes.
6889            let cur_offset: usize = (1 - 1) * envelope_size;
6890
6891            // Zero reserved fields.
6892            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6893
6894            // Safety:
6895            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6896            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6897            //   envelope_size bytes, there is always sufficient room.
6898            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6899                self.peer_sta_address
6900                    .as_ref()
6901                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6902                encoder,
6903                offset + cur_offset,
6904                depth,
6905            )?;
6906
6907            _prev_end_offset = cur_offset + envelope_size;
6908            if 2 > max_ordinal {
6909                return Ok(());
6910            }
6911
6912            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6913            // are envelope_size bytes.
6914            let cur_offset: usize = (2 - 1) * envelope_size;
6915
6916            // Zero reserved fields.
6917            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6918
6919            // Safety:
6920            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6921            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6922            //   envelope_size bytes, there is always sufficient room.
6923            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
6924            self.result_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
6925            encoder, offset + cur_offset, depth
6926        )?;
6927
6928            _prev_end_offset = cur_offset + envelope_size;
6929            if 3 > max_ordinal {
6930                return Ok(());
6931            }
6932
6933            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6934            // are envelope_size bytes.
6935            let cur_offset: usize = (3 - 1) * envelope_size;
6936
6937            // Zero reserved fields.
6938            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6939
6940            // Safety:
6941            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6942            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6943            //   envelope_size bytes, there is always sufficient room.
6944            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6945                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6946                encoder,
6947                offset + cur_offset,
6948                depth,
6949            )?;
6950
6951            _prev_end_offset = cur_offset + envelope_size;
6952            if 4 > max_ordinal {
6953                return Ok(());
6954            }
6955
6956            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6957            // are envelope_size bytes.
6958            let cur_offset: usize = (4 - 1) * envelope_size;
6959
6960            // Zero reserved fields.
6961            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6962
6963            // Safety:
6964            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6965            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6966            //   envelope_size bytes, there is always sufficient room.
6967            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
6968            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
6969            encoder, offset + cur_offset, depth
6970        )?;
6971
6972            _prev_end_offset = cur_offset + envelope_size;
6973
6974            Ok(())
6975        }
6976    }
6977
6978    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6979        for WlanFullmacImplIfcConnectConfRequest
6980    {
6981        #[inline(always)]
6982        fn new_empty() -> Self {
6983            Self::default()
6984        }
6985
6986        unsafe fn decode(
6987            &mut self,
6988            decoder: &mut fidl::encoding::Decoder<'_, D>,
6989            offset: usize,
6990            mut depth: fidl::encoding::Depth,
6991        ) -> fidl::Result<()> {
6992            decoder.debug_check_bounds::<Self>(offset);
6993            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6994                None => return Err(fidl::Error::NotNullable),
6995                Some(len) => len,
6996            };
6997            // Calling decoder.out_of_line_offset(0) is not allowed.
6998            if len == 0 {
6999                return Ok(());
7000            };
7001            depth.increment()?;
7002            let envelope_size = 8;
7003            let bytes_len = len * envelope_size;
7004            let offset = decoder.out_of_line_offset(bytes_len)?;
7005            // Decode the envelope for each type.
7006            let mut _next_ordinal_to_read = 0;
7007            let mut next_offset = offset;
7008            let end_offset = offset + bytes_len;
7009            _next_ordinal_to_read += 1;
7010            if next_offset >= end_offset {
7011                return Ok(());
7012            }
7013
7014            // Decode unknown envelopes for gaps in ordinals.
7015            while _next_ordinal_to_read < 1 {
7016                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7017                _next_ordinal_to_read += 1;
7018                next_offset += envelope_size;
7019            }
7020
7021            let next_out_of_line = decoder.next_out_of_line();
7022            let handles_before = decoder.remaining_handles();
7023            if let Some((inlined, num_bytes, num_handles)) =
7024                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7025            {
7026                let member_inline_size =
7027                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7028                        decoder.context,
7029                    );
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
7043                    .peer_sta_address
7044                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7045                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7046                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7047                {
7048                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7049                }
7050                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7051                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7052                }
7053            }
7054
7055            next_offset += envelope_size;
7056            _next_ordinal_to_read += 1;
7057            if next_offset >= end_offset {
7058                return Ok(());
7059            }
7060
7061            // Decode unknown envelopes for gaps in ordinals.
7062            while _next_ordinal_to_read < 2 {
7063                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7064                _next_ordinal_to_read += 1;
7065                next_offset += envelope_size;
7066            }
7067
7068            let next_out_of_line = decoder.next_out_of_line();
7069            let handles_before = decoder.remaining_handles();
7070            if let Some((inlined, num_bytes, num_handles)) =
7071                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7072            {
7073                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7074                if inlined != (member_inline_size <= 4) {
7075                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7076                }
7077                let inner_offset;
7078                let mut inner_depth = depth.clone();
7079                if inlined {
7080                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7081                    inner_offset = next_offset;
7082                } else {
7083                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7084                    inner_depth.increment()?;
7085                }
7086                let val_ref = self.result_code.get_or_insert_with(|| {
7087                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
7088                });
7089                fidl::decode!(
7090                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
7091                    D,
7092                    val_ref,
7093                    decoder,
7094                    inner_offset,
7095                    inner_depth
7096                )?;
7097                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7098                {
7099                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7100                }
7101                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7102                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7103                }
7104            }
7105
7106            next_offset += envelope_size;
7107            _next_ordinal_to_read += 1;
7108            if next_offset >= end_offset {
7109                return Ok(());
7110            }
7111
7112            // Decode unknown envelopes for gaps in ordinals.
7113            while _next_ordinal_to_read < 3 {
7114                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7115                _next_ordinal_to_read += 1;
7116                next_offset += envelope_size;
7117            }
7118
7119            let next_out_of_line = decoder.next_out_of_line();
7120            let handles_before = decoder.remaining_handles();
7121            if let Some((inlined, num_bytes, num_handles)) =
7122                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7123            {
7124                let member_inline_size =
7125                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7126                if inlined != (member_inline_size <= 4) {
7127                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7128                }
7129                let inner_offset;
7130                let mut inner_depth = depth.clone();
7131                if inlined {
7132                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7133                    inner_offset = next_offset;
7134                } else {
7135                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7136                    inner_depth.increment()?;
7137                }
7138                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
7139                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7140                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7141                {
7142                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7143                }
7144                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7145                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7146                }
7147            }
7148
7149            next_offset += envelope_size;
7150            _next_ordinal_to_read += 1;
7151            if next_offset >= end_offset {
7152                return Ok(());
7153            }
7154
7155            // Decode unknown envelopes for gaps in ordinals.
7156            while _next_ordinal_to_read < 4 {
7157                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7158                _next_ordinal_to_read += 1;
7159                next_offset += envelope_size;
7160            }
7161
7162            let next_out_of_line = decoder.next_out_of_line();
7163            let handles_before = decoder.remaining_handles();
7164            if let Some((inlined, num_bytes, num_handles)) =
7165                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7166            {
7167                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7168                if inlined != (member_inline_size <= 4) {
7169                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7170                }
7171                let inner_offset;
7172                let mut inner_depth = depth.clone();
7173                if inlined {
7174                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7175                    inner_offset = next_offset;
7176                } else {
7177                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7178                    inner_depth.increment()?;
7179                }
7180                let val_ref = self.association_ies.get_or_insert_with(|| {
7181                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
7182                });
7183                fidl::decode!(
7184                    fidl::encoding::UnboundedVector<u8>,
7185                    D,
7186                    val_ref,
7187                    decoder,
7188                    inner_offset,
7189                    inner_depth
7190                )?;
7191                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7192                {
7193                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7194                }
7195                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7196                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7197                }
7198            }
7199
7200            next_offset += envelope_size;
7201
7202            // Decode the remaining unknown envelopes.
7203            while next_offset < end_offset {
7204                _next_ordinal_to_read += 1;
7205                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7206                next_offset += envelope_size;
7207            }
7208
7209            Ok(())
7210        }
7211    }
7212
7213    impl WlanFullmacImplIfcDeauthConfRequest {
7214        #[inline(always)]
7215        fn max_ordinal_present(&self) -> u64 {
7216            if let Some(_) = self.peer_sta_address {
7217                return 1;
7218            }
7219            0
7220        }
7221    }
7222
7223    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7224        type Borrowed<'a> = &'a Self;
7225        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7226            value
7227        }
7228    }
7229
7230    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7231        type Owned = Self;
7232
7233        #[inline(always)]
7234        fn inline_align(_context: fidl::encoding::Context) -> usize {
7235            8
7236        }
7237
7238        #[inline(always)]
7239        fn inline_size(_context: fidl::encoding::Context) -> usize {
7240            16
7241        }
7242    }
7243
7244    unsafe impl<D: fidl::encoding::ResourceDialect>
7245        fidl::encoding::Encode<WlanFullmacImplIfcDeauthConfRequest, D>
7246        for &WlanFullmacImplIfcDeauthConfRequest
7247    {
7248        unsafe fn encode(
7249            self,
7250            encoder: &mut fidl::encoding::Encoder<'_, D>,
7251            offset: usize,
7252            mut depth: fidl::encoding::Depth,
7253        ) -> fidl::Result<()> {
7254            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthConfRequest>(offset);
7255            // Vector header
7256            let max_ordinal: u64 = self.max_ordinal_present();
7257            encoder.write_num(max_ordinal, offset);
7258            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7259            // Calling encoder.out_of_line_offset(0) is not allowed.
7260            if max_ordinal == 0 {
7261                return Ok(());
7262            }
7263            depth.increment()?;
7264            let envelope_size = 8;
7265            let bytes_len = max_ordinal as usize * envelope_size;
7266            #[allow(unused_variables)]
7267            let offset = encoder.out_of_line_offset(bytes_len);
7268            let mut _prev_end_offset: usize = 0;
7269            if 1 > max_ordinal {
7270                return Ok(());
7271            }
7272
7273            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7274            // are envelope_size bytes.
7275            let cur_offset: usize = (1 - 1) * envelope_size;
7276
7277            // Zero reserved fields.
7278            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7279
7280            // Safety:
7281            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7282            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7283            //   envelope_size bytes, there is always sufficient room.
7284            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7285                self.peer_sta_address
7286                    .as_ref()
7287                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7288                encoder,
7289                offset + cur_offset,
7290                depth,
7291            )?;
7292
7293            _prev_end_offset = cur_offset + envelope_size;
7294
7295            Ok(())
7296        }
7297    }
7298
7299    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7300        for WlanFullmacImplIfcDeauthConfRequest
7301    {
7302        #[inline(always)]
7303        fn new_empty() -> Self {
7304            Self::default()
7305        }
7306
7307        unsafe fn decode(
7308            &mut self,
7309            decoder: &mut fidl::encoding::Decoder<'_, D>,
7310            offset: usize,
7311            mut depth: fidl::encoding::Depth,
7312        ) -> fidl::Result<()> {
7313            decoder.debug_check_bounds::<Self>(offset);
7314            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7315                None => return Err(fidl::Error::NotNullable),
7316                Some(len) => len,
7317            };
7318            // Calling decoder.out_of_line_offset(0) is not allowed.
7319            if len == 0 {
7320                return Ok(());
7321            };
7322            depth.increment()?;
7323            let envelope_size = 8;
7324            let bytes_len = len * envelope_size;
7325            let offset = decoder.out_of_line_offset(bytes_len)?;
7326            // Decode the envelope for each type.
7327            let mut _next_ordinal_to_read = 0;
7328            let mut next_offset = offset;
7329            let end_offset = offset + bytes_len;
7330            _next_ordinal_to_read += 1;
7331            if next_offset >= end_offset {
7332                return Ok(());
7333            }
7334
7335            // Decode unknown envelopes for gaps in ordinals.
7336            while _next_ordinal_to_read < 1 {
7337                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7338                _next_ordinal_to_read += 1;
7339                next_offset += envelope_size;
7340            }
7341
7342            let next_out_of_line = decoder.next_out_of_line();
7343            let handles_before = decoder.remaining_handles();
7344            if let Some((inlined, num_bytes, num_handles)) =
7345                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7346            {
7347                let member_inline_size =
7348                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7349                        decoder.context,
7350                    );
7351                if inlined != (member_inline_size <= 4) {
7352                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7353                }
7354                let inner_offset;
7355                let mut inner_depth = depth.clone();
7356                if inlined {
7357                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7358                    inner_offset = next_offset;
7359                } else {
7360                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7361                    inner_depth.increment()?;
7362                }
7363                let val_ref = self
7364                    .peer_sta_address
7365                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7366                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7367                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7368                {
7369                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7370                }
7371                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7372                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7373                }
7374            }
7375
7376            next_offset += envelope_size;
7377
7378            // Decode the remaining unknown envelopes.
7379            while next_offset < end_offset {
7380                _next_ordinal_to_read += 1;
7381                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7382                next_offset += envelope_size;
7383            }
7384
7385            Ok(())
7386        }
7387    }
7388
7389    impl WlanFullmacImplIfcDeauthIndRequest {
7390        #[inline(always)]
7391        fn max_ordinal_present(&self) -> u64 {
7392            if let Some(_) = self.locally_initiated {
7393                return 3;
7394            }
7395            if let Some(_) = self.reason_code {
7396                return 2;
7397            }
7398            if let Some(_) = self.peer_sta_address {
7399                return 1;
7400            }
7401            0
7402        }
7403    }
7404
7405    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7406        type Borrowed<'a> = &'a Self;
7407        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7408            value
7409        }
7410    }
7411
7412    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7413        type Owned = Self;
7414
7415        #[inline(always)]
7416        fn inline_align(_context: fidl::encoding::Context) -> usize {
7417            8
7418        }
7419
7420        #[inline(always)]
7421        fn inline_size(_context: fidl::encoding::Context) -> usize {
7422            16
7423        }
7424    }
7425
7426    unsafe impl<D: fidl::encoding::ResourceDialect>
7427        fidl::encoding::Encode<WlanFullmacImplIfcDeauthIndRequest, D>
7428        for &WlanFullmacImplIfcDeauthIndRequest
7429    {
7430        unsafe fn encode(
7431            self,
7432            encoder: &mut fidl::encoding::Encoder<'_, D>,
7433            offset: usize,
7434            mut depth: fidl::encoding::Depth,
7435        ) -> fidl::Result<()> {
7436            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthIndRequest>(offset);
7437            // Vector header
7438            let max_ordinal: u64 = self.max_ordinal_present();
7439            encoder.write_num(max_ordinal, offset);
7440            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7441            // Calling encoder.out_of_line_offset(0) is not allowed.
7442            if max_ordinal == 0 {
7443                return Ok(());
7444            }
7445            depth.increment()?;
7446            let envelope_size = 8;
7447            let bytes_len = max_ordinal as usize * envelope_size;
7448            #[allow(unused_variables)]
7449            let offset = encoder.out_of_line_offset(bytes_len);
7450            let mut _prev_end_offset: usize = 0;
7451            if 1 > max_ordinal {
7452                return Ok(());
7453            }
7454
7455            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7456            // are envelope_size bytes.
7457            let cur_offset: usize = (1 - 1) * envelope_size;
7458
7459            // Zero reserved fields.
7460            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7461
7462            // Safety:
7463            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7464            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7465            //   envelope_size bytes, there is always sufficient room.
7466            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7467                self.peer_sta_address
7468                    .as_ref()
7469                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7470                encoder,
7471                offset + cur_offset,
7472                depth,
7473            )?;
7474
7475            _prev_end_offset = cur_offset + envelope_size;
7476            if 2 > max_ordinal {
7477                return Ok(());
7478            }
7479
7480            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7481            // are envelope_size bytes.
7482            let cur_offset: usize = (2 - 1) * envelope_size;
7483
7484            // Zero reserved fields.
7485            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7486
7487            // Safety:
7488            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7489            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7490            //   envelope_size bytes, there is always sufficient room.
7491            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>(
7492            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
7493            encoder, offset + cur_offset, depth
7494        )?;
7495
7496            _prev_end_offset = cur_offset + envelope_size;
7497            if 3 > max_ordinal {
7498                return Ok(());
7499            }
7500
7501            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7502            // are envelope_size bytes.
7503            let cur_offset: usize = (3 - 1) * envelope_size;
7504
7505            // Zero reserved fields.
7506            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7507
7508            // Safety:
7509            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7510            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7511            //   envelope_size bytes, there is always sufficient room.
7512            fidl::encoding::encode_in_envelope_optional::<bool, D>(
7513                self.locally_initiated
7514                    .as_ref()
7515                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7516                encoder,
7517                offset + cur_offset,
7518                depth,
7519            )?;
7520
7521            _prev_end_offset = cur_offset + envelope_size;
7522
7523            Ok(())
7524        }
7525    }
7526
7527    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7528        for WlanFullmacImplIfcDeauthIndRequest
7529    {
7530        #[inline(always)]
7531        fn new_empty() -> Self {
7532            Self::default()
7533        }
7534
7535        unsafe fn decode(
7536            &mut self,
7537            decoder: &mut fidl::encoding::Decoder<'_, D>,
7538            offset: usize,
7539            mut depth: fidl::encoding::Depth,
7540        ) -> fidl::Result<()> {
7541            decoder.debug_check_bounds::<Self>(offset);
7542            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7543                None => return Err(fidl::Error::NotNullable),
7544                Some(len) => len,
7545            };
7546            // Calling decoder.out_of_line_offset(0) is not allowed.
7547            if len == 0 {
7548                return Ok(());
7549            };
7550            depth.increment()?;
7551            let envelope_size = 8;
7552            let bytes_len = len * envelope_size;
7553            let offset = decoder.out_of_line_offset(bytes_len)?;
7554            // Decode the envelope for each type.
7555            let mut _next_ordinal_to_read = 0;
7556            let mut next_offset = offset;
7557            let end_offset = offset + bytes_len;
7558            _next_ordinal_to_read += 1;
7559            if next_offset >= end_offset {
7560                return Ok(());
7561            }
7562
7563            // Decode unknown envelopes for gaps in ordinals.
7564            while _next_ordinal_to_read < 1 {
7565                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7566                _next_ordinal_to_read += 1;
7567                next_offset += envelope_size;
7568            }
7569
7570            let next_out_of_line = decoder.next_out_of_line();
7571            let handles_before = decoder.remaining_handles();
7572            if let Some((inlined, num_bytes, num_handles)) =
7573                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7574            {
7575                let member_inline_size =
7576                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7577                        decoder.context,
7578                    );
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 = self
7592                    .peer_sta_address
7593                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7594                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7595                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7596                {
7597                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7598                }
7599                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7600                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7601                }
7602            }
7603
7604            next_offset += envelope_size;
7605            _next_ordinal_to_read += 1;
7606            if next_offset >= end_offset {
7607                return Ok(());
7608            }
7609
7610            // Decode unknown envelopes for gaps in ordinals.
7611            while _next_ordinal_to_read < 2 {
7612                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7613                _next_ordinal_to_read += 1;
7614                next_offset += envelope_size;
7615            }
7616
7617            let next_out_of_line = decoder.next_out_of_line();
7618            let handles_before = decoder.remaining_handles();
7619            if let Some((inlined, num_bytes, num_handles)) =
7620                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7621            {
7622                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7623                if inlined != (member_inline_size <= 4) {
7624                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7625                }
7626                let inner_offset;
7627                let mut inner_depth = depth.clone();
7628                if inlined {
7629                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7630                    inner_offset = next_offset;
7631                } else {
7632                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7633                    inner_depth.increment()?;
7634                }
7635                let val_ref = self.reason_code.get_or_insert_with(|| {
7636                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D)
7637                });
7638                fidl::decode!(
7639                    fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
7640                    D,
7641                    val_ref,
7642                    decoder,
7643                    inner_offset,
7644                    inner_depth
7645                )?;
7646                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7647                {
7648                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7649                }
7650                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7651                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7652                }
7653            }
7654
7655            next_offset += envelope_size;
7656            _next_ordinal_to_read += 1;
7657            if next_offset >= end_offset {
7658                return Ok(());
7659            }
7660
7661            // Decode unknown envelopes for gaps in ordinals.
7662            while _next_ordinal_to_read < 3 {
7663                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7664                _next_ordinal_to_read += 1;
7665                next_offset += envelope_size;
7666            }
7667
7668            let next_out_of_line = decoder.next_out_of_line();
7669            let handles_before = decoder.remaining_handles();
7670            if let Some((inlined, num_bytes, num_handles)) =
7671                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7672            {
7673                let member_inline_size =
7674                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7675                if inlined != (member_inline_size <= 4) {
7676                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7677                }
7678                let inner_offset;
7679                let mut inner_depth = depth.clone();
7680                if inlined {
7681                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7682                    inner_offset = next_offset;
7683                } else {
7684                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7685                    inner_depth.increment()?;
7686                }
7687                let val_ref =
7688                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
7689                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7690                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7691                {
7692                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7693                }
7694                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7695                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7696                }
7697            }
7698
7699            next_offset += envelope_size;
7700
7701            // Decode the remaining unknown envelopes.
7702            while next_offset < end_offset {
7703                _next_ordinal_to_read += 1;
7704                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7705                next_offset += envelope_size;
7706            }
7707
7708            Ok(())
7709        }
7710    }
7711
7712    impl WlanFullmacImplIfcDisassocConfRequest {
7713        #[inline(always)]
7714        fn max_ordinal_present(&self) -> u64 {
7715            if let Some(_) = self.status {
7716                return 1;
7717            }
7718            0
7719        }
7720    }
7721
7722    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7723        type Borrowed<'a> = &'a Self;
7724        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7725            value
7726        }
7727    }
7728
7729    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7730        type Owned = Self;
7731
7732        #[inline(always)]
7733        fn inline_align(_context: fidl::encoding::Context) -> usize {
7734            8
7735        }
7736
7737        #[inline(always)]
7738        fn inline_size(_context: fidl::encoding::Context) -> usize {
7739            16
7740        }
7741    }
7742
7743    unsafe impl<D: fidl::encoding::ResourceDialect>
7744        fidl::encoding::Encode<WlanFullmacImplIfcDisassocConfRequest, D>
7745        for &WlanFullmacImplIfcDisassocConfRequest
7746    {
7747        unsafe fn encode(
7748            self,
7749            encoder: &mut fidl::encoding::Encoder<'_, D>,
7750            offset: usize,
7751            mut depth: fidl::encoding::Depth,
7752        ) -> fidl::Result<()> {
7753            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocConfRequest>(offset);
7754            // Vector header
7755            let max_ordinal: u64 = self.max_ordinal_present();
7756            encoder.write_num(max_ordinal, offset);
7757            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7758            // Calling encoder.out_of_line_offset(0) is not allowed.
7759            if max_ordinal == 0 {
7760                return Ok(());
7761            }
7762            depth.increment()?;
7763            let envelope_size = 8;
7764            let bytes_len = max_ordinal as usize * envelope_size;
7765            #[allow(unused_variables)]
7766            let offset = encoder.out_of_line_offset(bytes_len);
7767            let mut _prev_end_offset: usize = 0;
7768            if 1 > max_ordinal {
7769                return Ok(());
7770            }
7771
7772            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7773            // are envelope_size bytes.
7774            let cur_offset: usize = (1 - 1) * envelope_size;
7775
7776            // Zero reserved fields.
7777            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7778
7779            // Safety:
7780            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7781            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7782            //   envelope_size bytes, there is always sufficient room.
7783            fidl::encoding::encode_in_envelope_optional::<i32, D>(
7784                self.status.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
7785                encoder,
7786                offset + cur_offset,
7787                depth,
7788            )?;
7789
7790            _prev_end_offset = cur_offset + envelope_size;
7791
7792            Ok(())
7793        }
7794    }
7795
7796    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7797        for WlanFullmacImplIfcDisassocConfRequest
7798    {
7799        #[inline(always)]
7800        fn new_empty() -> Self {
7801            Self::default()
7802        }
7803
7804        unsafe fn decode(
7805            &mut self,
7806            decoder: &mut fidl::encoding::Decoder<'_, D>,
7807            offset: usize,
7808            mut depth: fidl::encoding::Depth,
7809        ) -> fidl::Result<()> {
7810            decoder.debug_check_bounds::<Self>(offset);
7811            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7812                None => return Err(fidl::Error::NotNullable),
7813                Some(len) => len,
7814            };
7815            // Calling decoder.out_of_line_offset(0) is not allowed.
7816            if len == 0 {
7817                return Ok(());
7818            };
7819            depth.increment()?;
7820            let envelope_size = 8;
7821            let bytes_len = len * envelope_size;
7822            let offset = decoder.out_of_line_offset(bytes_len)?;
7823            // Decode the envelope for each type.
7824            let mut _next_ordinal_to_read = 0;
7825            let mut next_offset = offset;
7826            let end_offset = offset + bytes_len;
7827            _next_ordinal_to_read += 1;
7828            if next_offset >= end_offset {
7829                return Ok(());
7830            }
7831
7832            // Decode unknown envelopes for gaps in ordinals.
7833            while _next_ordinal_to_read < 1 {
7834                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7835                _next_ordinal_to_read += 1;
7836                next_offset += envelope_size;
7837            }
7838
7839            let next_out_of_line = decoder.next_out_of_line();
7840            let handles_before = decoder.remaining_handles();
7841            if let Some((inlined, num_bytes, num_handles)) =
7842                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7843            {
7844                let member_inline_size =
7845                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7846                if inlined != (member_inline_size <= 4) {
7847                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7848                }
7849                let inner_offset;
7850                let mut inner_depth = depth.clone();
7851                if inlined {
7852                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7853                    inner_offset = next_offset;
7854                } else {
7855                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7856                    inner_depth.increment()?;
7857                }
7858                let val_ref = self.status.get_or_insert_with(|| fidl::new_empty!(i32, D));
7859                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
7860                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7861                {
7862                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7863                }
7864                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7865                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7866                }
7867            }
7868
7869            next_offset += envelope_size;
7870
7871            // Decode the remaining unknown envelopes.
7872            while next_offset < end_offset {
7873                _next_ordinal_to_read += 1;
7874                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7875                next_offset += envelope_size;
7876            }
7877
7878            Ok(())
7879        }
7880    }
7881
7882    impl WlanFullmacImplIfcDisassocIndRequest {
7883        #[inline(always)]
7884        fn max_ordinal_present(&self) -> u64 {
7885            if let Some(_) = self.locally_initiated {
7886                return 3;
7887            }
7888            if let Some(_) = self.reason_code {
7889                return 2;
7890            }
7891            if let Some(_) = self.peer_sta_address {
7892                return 1;
7893            }
7894            0
7895        }
7896    }
7897
7898    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocIndRequest {
7899        type Borrowed<'a> = &'a Self;
7900        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7901            value
7902        }
7903    }
7904
7905    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocIndRequest {
7906        type Owned = Self;
7907
7908        #[inline(always)]
7909        fn inline_align(_context: fidl::encoding::Context) -> usize {
7910            8
7911        }
7912
7913        #[inline(always)]
7914        fn inline_size(_context: fidl::encoding::Context) -> usize {
7915            16
7916        }
7917    }
7918
7919    unsafe impl<D: fidl::encoding::ResourceDialect>
7920        fidl::encoding::Encode<WlanFullmacImplIfcDisassocIndRequest, D>
7921        for &WlanFullmacImplIfcDisassocIndRequest
7922    {
7923        unsafe fn encode(
7924            self,
7925            encoder: &mut fidl::encoding::Encoder<'_, D>,
7926            offset: usize,
7927            mut depth: fidl::encoding::Depth,
7928        ) -> fidl::Result<()> {
7929            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocIndRequest>(offset);
7930            // Vector header
7931            let max_ordinal: u64 = self.max_ordinal_present();
7932            encoder.write_num(max_ordinal, offset);
7933            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7934            // Calling encoder.out_of_line_offset(0) is not allowed.
7935            if max_ordinal == 0 {
7936                return Ok(());
7937            }
7938            depth.increment()?;
7939            let envelope_size = 8;
7940            let bytes_len = max_ordinal as usize * envelope_size;
7941            #[allow(unused_variables)]
7942            let offset = encoder.out_of_line_offset(bytes_len);
7943            let mut _prev_end_offset: usize = 0;
7944            if 1 > max_ordinal {
7945                return Ok(());
7946            }
7947
7948            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7949            // are envelope_size bytes.
7950            let cur_offset: usize = (1 - 1) * envelope_size;
7951
7952            // Zero reserved fields.
7953            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7954
7955            // Safety:
7956            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7957            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7958            //   envelope_size bytes, there is always sufficient room.
7959            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7960                self.peer_sta_address
7961                    .as_ref()
7962                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7963                encoder,
7964                offset + cur_offset,
7965                depth,
7966            )?;
7967
7968            _prev_end_offset = cur_offset + envelope_size;
7969            if 2 > max_ordinal {
7970                return Ok(());
7971            }
7972
7973            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7974            // are envelope_size bytes.
7975            let cur_offset: usize = (2 - 1) * envelope_size;
7976
7977            // Zero reserved fields.
7978            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7979
7980            // Safety:
7981            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7982            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7983            //   envelope_size bytes, there is always sufficient room.
7984            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>(
7985            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
7986            encoder, offset + cur_offset, depth
7987        )?;
7988
7989            _prev_end_offset = cur_offset + envelope_size;
7990            if 3 > max_ordinal {
7991                return Ok(());
7992            }
7993
7994            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7995            // are envelope_size bytes.
7996            let cur_offset: usize = (3 - 1) * envelope_size;
7997
7998            // Zero reserved fields.
7999            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8000
8001            // Safety:
8002            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8003            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8004            //   envelope_size bytes, there is always sufficient room.
8005            fidl::encoding::encode_in_envelope_optional::<bool, D>(
8006                self.locally_initiated
8007                    .as_ref()
8008                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8009                encoder,
8010                offset + cur_offset,
8011                depth,
8012            )?;
8013
8014            _prev_end_offset = cur_offset + envelope_size;
8015
8016            Ok(())
8017        }
8018    }
8019
8020    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8021        for WlanFullmacImplIfcDisassocIndRequest
8022    {
8023        #[inline(always)]
8024        fn new_empty() -> Self {
8025            Self::default()
8026        }
8027
8028        unsafe fn decode(
8029            &mut self,
8030            decoder: &mut fidl::encoding::Decoder<'_, D>,
8031            offset: usize,
8032            mut depth: fidl::encoding::Depth,
8033        ) -> fidl::Result<()> {
8034            decoder.debug_check_bounds::<Self>(offset);
8035            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8036                None => return Err(fidl::Error::NotNullable),
8037                Some(len) => len,
8038            };
8039            // Calling decoder.out_of_line_offset(0) is not allowed.
8040            if len == 0 {
8041                return Ok(());
8042            };
8043            depth.increment()?;
8044            let envelope_size = 8;
8045            let bytes_len = len * envelope_size;
8046            let offset = decoder.out_of_line_offset(bytes_len)?;
8047            // Decode the envelope for each type.
8048            let mut _next_ordinal_to_read = 0;
8049            let mut next_offset = offset;
8050            let end_offset = offset + bytes_len;
8051            _next_ordinal_to_read += 1;
8052            if next_offset >= end_offset {
8053                return Ok(());
8054            }
8055
8056            // Decode unknown envelopes for gaps in ordinals.
8057            while _next_ordinal_to_read < 1 {
8058                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8059                _next_ordinal_to_read += 1;
8060                next_offset += envelope_size;
8061            }
8062
8063            let next_out_of_line = decoder.next_out_of_line();
8064            let handles_before = decoder.remaining_handles();
8065            if let Some((inlined, num_bytes, num_handles)) =
8066                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8067            {
8068                let member_inline_size =
8069                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8070                        decoder.context,
8071                    );
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 = self
8085                    .peer_sta_address
8086                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8087                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8088                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8089                {
8090                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8091                }
8092                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8093                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8094                }
8095            }
8096
8097            next_offset += envelope_size;
8098            _next_ordinal_to_read += 1;
8099            if next_offset >= end_offset {
8100                return Ok(());
8101            }
8102
8103            // Decode unknown envelopes for gaps in ordinals.
8104            while _next_ordinal_to_read < 2 {
8105                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8106                _next_ordinal_to_read += 1;
8107                next_offset += envelope_size;
8108            }
8109
8110            let next_out_of_line = decoder.next_out_of_line();
8111            let handles_before = decoder.remaining_handles();
8112            if let Some((inlined, num_bytes, num_handles)) =
8113                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8114            {
8115                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8116                if inlined != (member_inline_size <= 4) {
8117                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8118                }
8119                let inner_offset;
8120                let mut inner_depth = depth.clone();
8121                if inlined {
8122                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8123                    inner_offset = next_offset;
8124                } else {
8125                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8126                    inner_depth.increment()?;
8127                }
8128                let val_ref = self.reason_code.get_or_insert_with(|| {
8129                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D)
8130                });
8131                fidl::decode!(
8132                    fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
8133                    D,
8134                    val_ref,
8135                    decoder,
8136                    inner_offset,
8137                    inner_depth
8138                )?;
8139                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8140                {
8141                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8142                }
8143                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8144                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8145                }
8146            }
8147
8148            next_offset += envelope_size;
8149            _next_ordinal_to_read += 1;
8150            if next_offset >= end_offset {
8151                return Ok(());
8152            }
8153
8154            // Decode unknown envelopes for gaps in ordinals.
8155            while _next_ordinal_to_read < 3 {
8156                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8157                _next_ordinal_to_read += 1;
8158                next_offset += envelope_size;
8159            }
8160
8161            let next_out_of_line = decoder.next_out_of_line();
8162            let handles_before = decoder.remaining_handles();
8163            if let Some((inlined, num_bytes, num_handles)) =
8164                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8165            {
8166                let member_inline_size =
8167                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8168                if inlined != (member_inline_size <= 4) {
8169                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8170                }
8171                let inner_offset;
8172                let mut inner_depth = depth.clone();
8173                if inlined {
8174                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8175                    inner_offset = next_offset;
8176                } else {
8177                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8178                    inner_depth.increment()?;
8179                }
8180                let val_ref =
8181                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
8182                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8183                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8184                {
8185                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8186                }
8187                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8188                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8189                }
8190            }
8191
8192            next_offset += envelope_size;
8193
8194            // Decode the remaining unknown envelopes.
8195            while next_offset < end_offset {
8196                _next_ordinal_to_read += 1;
8197                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8198                next_offset += envelope_size;
8199            }
8200
8201            Ok(())
8202        }
8203    }
8204
8205    impl WlanFullmacImplIfcEapolConfRequest {
8206        #[inline(always)]
8207        fn max_ordinal_present(&self) -> u64 {
8208            if let Some(_) = self.dst_addr {
8209                return 2;
8210            }
8211            if let Some(_) = self.result_code {
8212                return 1;
8213            }
8214            0
8215        }
8216    }
8217
8218    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolConfRequest {
8219        type Borrowed<'a> = &'a Self;
8220        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8221            value
8222        }
8223    }
8224
8225    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolConfRequest {
8226        type Owned = Self;
8227
8228        #[inline(always)]
8229        fn inline_align(_context: fidl::encoding::Context) -> usize {
8230            8
8231        }
8232
8233        #[inline(always)]
8234        fn inline_size(_context: fidl::encoding::Context) -> usize {
8235            16
8236        }
8237    }
8238
8239    unsafe impl<D: fidl::encoding::ResourceDialect>
8240        fidl::encoding::Encode<WlanFullmacImplIfcEapolConfRequest, D>
8241        for &WlanFullmacImplIfcEapolConfRequest
8242    {
8243        unsafe fn encode(
8244            self,
8245            encoder: &mut fidl::encoding::Encoder<'_, D>,
8246            offset: usize,
8247            mut depth: fidl::encoding::Depth,
8248        ) -> fidl::Result<()> {
8249            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolConfRequest>(offset);
8250            // Vector header
8251            let max_ordinal: u64 = self.max_ordinal_present();
8252            encoder.write_num(max_ordinal, offset);
8253            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8254            // Calling encoder.out_of_line_offset(0) is not allowed.
8255            if max_ordinal == 0 {
8256                return Ok(());
8257            }
8258            depth.increment()?;
8259            let envelope_size = 8;
8260            let bytes_len = max_ordinal as usize * envelope_size;
8261            #[allow(unused_variables)]
8262            let offset = encoder.out_of_line_offset(bytes_len);
8263            let mut _prev_end_offset: usize = 0;
8264            if 1 > max_ordinal {
8265                return Ok(());
8266            }
8267
8268            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8269            // are envelope_size bytes.
8270            let cur_offset: usize = (1 - 1) * envelope_size;
8271
8272            // Zero reserved fields.
8273            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8274
8275            // Safety:
8276            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8277            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8278            //   envelope_size bytes, there is always sufficient room.
8279            fidl::encoding::encode_in_envelope_optional::<EapolTxResult, D>(
8280                self.result_code
8281                    .as_ref()
8282                    .map(<EapolTxResult as fidl::encoding::ValueTypeMarker>::borrow),
8283                encoder,
8284                offset + cur_offset,
8285                depth,
8286            )?;
8287
8288            _prev_end_offset = cur_offset + envelope_size;
8289            if 2 > max_ordinal {
8290                return Ok(());
8291            }
8292
8293            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8294            // are envelope_size bytes.
8295            let cur_offset: usize = (2 - 1) * envelope_size;
8296
8297            // Zero reserved fields.
8298            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8299
8300            // Safety:
8301            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8302            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8303            //   envelope_size bytes, there is always sufficient room.
8304            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8305                self.dst_addr
8306                    .as_ref()
8307                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8308                encoder,
8309                offset + cur_offset,
8310                depth,
8311            )?;
8312
8313            _prev_end_offset = cur_offset + envelope_size;
8314
8315            Ok(())
8316        }
8317    }
8318
8319    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8320        for WlanFullmacImplIfcEapolConfRequest
8321    {
8322        #[inline(always)]
8323        fn new_empty() -> Self {
8324            Self::default()
8325        }
8326
8327        unsafe fn decode(
8328            &mut self,
8329            decoder: &mut fidl::encoding::Decoder<'_, D>,
8330            offset: usize,
8331            mut depth: fidl::encoding::Depth,
8332        ) -> fidl::Result<()> {
8333            decoder.debug_check_bounds::<Self>(offset);
8334            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8335                None => return Err(fidl::Error::NotNullable),
8336                Some(len) => len,
8337            };
8338            // Calling decoder.out_of_line_offset(0) is not allowed.
8339            if len == 0 {
8340                return Ok(());
8341            };
8342            depth.increment()?;
8343            let envelope_size = 8;
8344            let bytes_len = len * envelope_size;
8345            let offset = decoder.out_of_line_offset(bytes_len)?;
8346            // Decode the envelope for each type.
8347            let mut _next_ordinal_to_read = 0;
8348            let mut next_offset = offset;
8349            let end_offset = offset + bytes_len;
8350            _next_ordinal_to_read += 1;
8351            if next_offset >= end_offset {
8352                return Ok(());
8353            }
8354
8355            // Decode unknown envelopes for gaps in ordinals.
8356            while _next_ordinal_to_read < 1 {
8357                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8358                _next_ordinal_to_read += 1;
8359                next_offset += envelope_size;
8360            }
8361
8362            let next_out_of_line = decoder.next_out_of_line();
8363            let handles_before = decoder.remaining_handles();
8364            if let Some((inlined, num_bytes, num_handles)) =
8365                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8366            {
8367                let member_inline_size =
8368                    <EapolTxResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8369                if inlined != (member_inline_size <= 4) {
8370                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8371                }
8372                let inner_offset;
8373                let mut inner_depth = depth.clone();
8374                if inlined {
8375                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8376                    inner_offset = next_offset;
8377                } else {
8378                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8379                    inner_depth.increment()?;
8380                }
8381                let val_ref =
8382                    self.result_code.get_or_insert_with(|| fidl::new_empty!(EapolTxResult, D));
8383                fidl::decode!(EapolTxResult, D, val_ref, decoder, inner_offset, inner_depth)?;
8384                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8385                {
8386                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8387                }
8388                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8389                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8390                }
8391            }
8392
8393            next_offset += envelope_size;
8394            _next_ordinal_to_read += 1;
8395            if next_offset >= end_offset {
8396                return Ok(());
8397            }
8398
8399            // Decode unknown envelopes for gaps in ordinals.
8400            while _next_ordinal_to_read < 2 {
8401                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8402                _next_ordinal_to_read += 1;
8403                next_offset += envelope_size;
8404            }
8405
8406            let next_out_of_line = decoder.next_out_of_line();
8407            let handles_before = decoder.remaining_handles();
8408            if let Some((inlined, num_bytes, num_handles)) =
8409                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8410            {
8411                let member_inline_size =
8412                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8413                        decoder.context,
8414                    );
8415                if inlined != (member_inline_size <= 4) {
8416                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8417                }
8418                let inner_offset;
8419                let mut inner_depth = depth.clone();
8420                if inlined {
8421                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8422                    inner_offset = next_offset;
8423                } else {
8424                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8425                    inner_depth.increment()?;
8426                }
8427                let val_ref = self
8428                    .dst_addr
8429                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8430                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8431                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8432                {
8433                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8434                }
8435                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8436                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8437                }
8438            }
8439
8440            next_offset += envelope_size;
8441
8442            // Decode the remaining unknown envelopes.
8443            while next_offset < end_offset {
8444                _next_ordinal_to_read += 1;
8445                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8446                next_offset += envelope_size;
8447            }
8448
8449            Ok(())
8450        }
8451    }
8452
8453    impl WlanFullmacImplIfcEapolIndRequest {
8454        #[inline(always)]
8455        fn max_ordinal_present(&self) -> u64 {
8456            if let Some(_) = self.data {
8457                return 3;
8458            }
8459            if let Some(_) = self.dst_addr {
8460                return 2;
8461            }
8462            if let Some(_) = self.src_addr {
8463                return 1;
8464            }
8465            0
8466        }
8467    }
8468
8469    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolIndRequest {
8470        type Borrowed<'a> = &'a Self;
8471        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8472            value
8473        }
8474    }
8475
8476    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolIndRequest {
8477        type Owned = Self;
8478
8479        #[inline(always)]
8480        fn inline_align(_context: fidl::encoding::Context) -> usize {
8481            8
8482        }
8483
8484        #[inline(always)]
8485        fn inline_size(_context: fidl::encoding::Context) -> usize {
8486            16
8487        }
8488    }
8489
8490    unsafe impl<D: fidl::encoding::ResourceDialect>
8491        fidl::encoding::Encode<WlanFullmacImplIfcEapolIndRequest, D>
8492        for &WlanFullmacImplIfcEapolIndRequest
8493    {
8494        unsafe fn encode(
8495            self,
8496            encoder: &mut fidl::encoding::Encoder<'_, D>,
8497            offset: usize,
8498            mut depth: fidl::encoding::Depth,
8499        ) -> fidl::Result<()> {
8500            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolIndRequest>(offset);
8501            // Vector header
8502            let max_ordinal: u64 = self.max_ordinal_present();
8503            encoder.write_num(max_ordinal, offset);
8504            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8505            // Calling encoder.out_of_line_offset(0) is not allowed.
8506            if max_ordinal == 0 {
8507                return Ok(());
8508            }
8509            depth.increment()?;
8510            let envelope_size = 8;
8511            let bytes_len = max_ordinal as usize * envelope_size;
8512            #[allow(unused_variables)]
8513            let offset = encoder.out_of_line_offset(bytes_len);
8514            let mut _prev_end_offset: usize = 0;
8515            if 1 > max_ordinal {
8516                return Ok(());
8517            }
8518
8519            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8520            // are envelope_size bytes.
8521            let cur_offset: usize = (1 - 1) * envelope_size;
8522
8523            // Zero reserved fields.
8524            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8525
8526            // Safety:
8527            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8528            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8529            //   envelope_size bytes, there is always sufficient room.
8530            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8531                self.src_addr
8532                    .as_ref()
8533                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8534                encoder,
8535                offset + cur_offset,
8536                depth,
8537            )?;
8538
8539            _prev_end_offset = cur_offset + envelope_size;
8540            if 2 > max_ordinal {
8541                return Ok(());
8542            }
8543
8544            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8545            // are envelope_size bytes.
8546            let cur_offset: usize = (2 - 1) * envelope_size;
8547
8548            // Zero reserved fields.
8549            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8550
8551            // Safety:
8552            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8553            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8554            //   envelope_size bytes, there is always sufficient room.
8555            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8556                self.dst_addr
8557                    .as_ref()
8558                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8559                encoder,
8560                offset + cur_offset,
8561                depth,
8562            )?;
8563
8564            _prev_end_offset = cur_offset + envelope_size;
8565            if 3 > max_ordinal {
8566                return Ok(());
8567            }
8568
8569            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8570            // are envelope_size bytes.
8571            let cur_offset: usize = (3 - 1) * envelope_size;
8572
8573            // Zero reserved fields.
8574            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8575
8576            // Safety:
8577            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8578            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8579            //   envelope_size bytes, there is always sufficient room.
8580            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8581            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8582            encoder, offset + cur_offset, depth
8583        )?;
8584
8585            _prev_end_offset = cur_offset + envelope_size;
8586
8587            Ok(())
8588        }
8589    }
8590
8591    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8592        for WlanFullmacImplIfcEapolIndRequest
8593    {
8594        #[inline(always)]
8595        fn new_empty() -> Self {
8596            Self::default()
8597        }
8598
8599        unsafe fn decode(
8600            &mut self,
8601            decoder: &mut fidl::encoding::Decoder<'_, D>,
8602            offset: usize,
8603            mut depth: fidl::encoding::Depth,
8604        ) -> fidl::Result<()> {
8605            decoder.debug_check_bounds::<Self>(offset);
8606            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8607                None => return Err(fidl::Error::NotNullable),
8608                Some(len) => len,
8609            };
8610            // Calling decoder.out_of_line_offset(0) is not allowed.
8611            if len == 0 {
8612                return Ok(());
8613            };
8614            depth.increment()?;
8615            let envelope_size = 8;
8616            let bytes_len = len * envelope_size;
8617            let offset = decoder.out_of_line_offset(bytes_len)?;
8618            // Decode the envelope for each type.
8619            let mut _next_ordinal_to_read = 0;
8620            let mut next_offset = offset;
8621            let end_offset = offset + bytes_len;
8622            _next_ordinal_to_read += 1;
8623            if next_offset >= end_offset {
8624                return Ok(());
8625            }
8626
8627            // Decode unknown envelopes for gaps in ordinals.
8628            while _next_ordinal_to_read < 1 {
8629                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8630                _next_ordinal_to_read += 1;
8631                next_offset += envelope_size;
8632            }
8633
8634            let next_out_of_line = decoder.next_out_of_line();
8635            let handles_before = decoder.remaining_handles();
8636            if let Some((inlined, num_bytes, num_handles)) =
8637                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8638            {
8639                let member_inline_size =
8640                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8641                        decoder.context,
8642                    );
8643                if inlined != (member_inline_size <= 4) {
8644                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8645                }
8646                let inner_offset;
8647                let mut inner_depth = depth.clone();
8648                if inlined {
8649                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8650                    inner_offset = next_offset;
8651                } else {
8652                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8653                    inner_depth.increment()?;
8654                }
8655                let val_ref = self
8656                    .src_addr
8657                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8658                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8659                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8660                {
8661                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8662                }
8663                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8664                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8665                }
8666            }
8667
8668            next_offset += envelope_size;
8669            _next_ordinal_to_read += 1;
8670            if next_offset >= end_offset {
8671                return Ok(());
8672            }
8673
8674            // Decode unknown envelopes for gaps in ordinals.
8675            while _next_ordinal_to_read < 2 {
8676                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8677                _next_ordinal_to_read += 1;
8678                next_offset += envelope_size;
8679            }
8680
8681            let next_out_of_line = decoder.next_out_of_line();
8682            let handles_before = decoder.remaining_handles();
8683            if let Some((inlined, num_bytes, num_handles)) =
8684                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8685            {
8686                let member_inline_size =
8687                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8688                        decoder.context,
8689                    );
8690                if inlined != (member_inline_size <= 4) {
8691                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8692                }
8693                let inner_offset;
8694                let mut inner_depth = depth.clone();
8695                if inlined {
8696                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8697                    inner_offset = next_offset;
8698                } else {
8699                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8700                    inner_depth.increment()?;
8701                }
8702                let val_ref = self
8703                    .dst_addr
8704                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8705                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8706                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8707                {
8708                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8709                }
8710                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8711                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8712                }
8713            }
8714
8715            next_offset += envelope_size;
8716            _next_ordinal_to_read += 1;
8717            if next_offset >= end_offset {
8718                return Ok(());
8719            }
8720
8721            // Decode unknown envelopes for gaps in ordinals.
8722            while _next_ordinal_to_read < 3 {
8723                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8724                _next_ordinal_to_read += 1;
8725                next_offset += envelope_size;
8726            }
8727
8728            let next_out_of_line = decoder.next_out_of_line();
8729            let handles_before = decoder.remaining_handles();
8730            if let Some((inlined, num_bytes, num_handles)) =
8731                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8732            {
8733                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8734                if inlined != (member_inline_size <= 4) {
8735                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8736                }
8737                let inner_offset;
8738                let mut inner_depth = depth.clone();
8739                if inlined {
8740                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8741                    inner_offset = next_offset;
8742                } else {
8743                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8744                    inner_depth.increment()?;
8745                }
8746                let val_ref = self.data.get_or_insert_with(|| {
8747                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8748                });
8749                fidl::decode!(
8750                    fidl::encoding::UnboundedVector<u8>,
8751                    D,
8752                    val_ref,
8753                    decoder,
8754                    inner_offset,
8755                    inner_depth
8756                )?;
8757                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8758                {
8759                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8760                }
8761                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8762                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8763                }
8764            }
8765
8766            next_offset += envelope_size;
8767
8768            // Decode the remaining unknown envelopes.
8769            while next_offset < end_offset {
8770                _next_ordinal_to_read += 1;
8771                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8772                next_offset += envelope_size;
8773            }
8774
8775            Ok(())
8776        }
8777    }
8778
8779    impl WlanFullmacImplIfcOnPmkAvailableRequest {
8780        #[inline(always)]
8781        fn max_ordinal_present(&self) -> u64 {
8782            if let Some(_) = self.pmkid {
8783                return 2;
8784            }
8785            if let Some(_) = self.pmk {
8786                return 1;
8787            }
8788            0
8789        }
8790    }
8791
8792    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8793        type Borrowed<'a> = &'a Self;
8794        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8795            value
8796        }
8797    }
8798
8799    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8800        type Owned = Self;
8801
8802        #[inline(always)]
8803        fn inline_align(_context: fidl::encoding::Context) -> usize {
8804            8
8805        }
8806
8807        #[inline(always)]
8808        fn inline_size(_context: fidl::encoding::Context) -> usize {
8809            16
8810        }
8811    }
8812
8813    unsafe impl<D: fidl::encoding::ResourceDialect>
8814        fidl::encoding::Encode<WlanFullmacImplIfcOnPmkAvailableRequest, D>
8815        for &WlanFullmacImplIfcOnPmkAvailableRequest
8816    {
8817        unsafe fn encode(
8818            self,
8819            encoder: &mut fidl::encoding::Encoder<'_, D>,
8820            offset: usize,
8821            mut depth: fidl::encoding::Depth,
8822        ) -> fidl::Result<()> {
8823            encoder.debug_check_bounds::<WlanFullmacImplIfcOnPmkAvailableRequest>(offset);
8824            // Vector header
8825            let max_ordinal: u64 = self.max_ordinal_present();
8826            encoder.write_num(max_ordinal, offset);
8827            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8828            // Calling encoder.out_of_line_offset(0) is not allowed.
8829            if max_ordinal == 0 {
8830                return Ok(());
8831            }
8832            depth.increment()?;
8833            let envelope_size = 8;
8834            let bytes_len = max_ordinal as usize * envelope_size;
8835            #[allow(unused_variables)]
8836            let offset = encoder.out_of_line_offset(bytes_len);
8837            let mut _prev_end_offset: usize = 0;
8838            if 1 > max_ordinal {
8839                return Ok(());
8840            }
8841
8842            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8843            // are envelope_size bytes.
8844            let cur_offset: usize = (1 - 1) * envelope_size;
8845
8846            // Zero reserved fields.
8847            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8848
8849            // Safety:
8850            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8851            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8852            //   envelope_size bytes, there is always sufficient room.
8853            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8854            self.pmk.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8855            encoder, offset + cur_offset, depth
8856        )?;
8857
8858            _prev_end_offset = cur_offset + envelope_size;
8859            if 2 > max_ordinal {
8860                return Ok(());
8861            }
8862
8863            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8864            // are envelope_size bytes.
8865            let cur_offset: usize = (2 - 1) * envelope_size;
8866
8867            // Zero reserved fields.
8868            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8869
8870            // Safety:
8871            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8872            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8873            //   envelope_size bytes, there is always sufficient room.
8874            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8875            self.pmkid.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8876            encoder, offset + cur_offset, depth
8877        )?;
8878
8879            _prev_end_offset = cur_offset + envelope_size;
8880
8881            Ok(())
8882        }
8883    }
8884
8885    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8886        for WlanFullmacImplIfcOnPmkAvailableRequest
8887    {
8888        #[inline(always)]
8889        fn new_empty() -> Self {
8890            Self::default()
8891        }
8892
8893        unsafe fn decode(
8894            &mut self,
8895            decoder: &mut fidl::encoding::Decoder<'_, D>,
8896            offset: usize,
8897            mut depth: fidl::encoding::Depth,
8898        ) -> fidl::Result<()> {
8899            decoder.debug_check_bounds::<Self>(offset);
8900            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8901                None => return Err(fidl::Error::NotNullable),
8902                Some(len) => len,
8903            };
8904            // Calling decoder.out_of_line_offset(0) is not allowed.
8905            if len == 0 {
8906                return Ok(());
8907            };
8908            depth.increment()?;
8909            let envelope_size = 8;
8910            let bytes_len = len * envelope_size;
8911            let offset = decoder.out_of_line_offset(bytes_len)?;
8912            // Decode the envelope for each type.
8913            let mut _next_ordinal_to_read = 0;
8914            let mut next_offset = offset;
8915            let end_offset = offset + bytes_len;
8916            _next_ordinal_to_read += 1;
8917            if next_offset >= end_offset {
8918                return Ok(());
8919            }
8920
8921            // Decode unknown envelopes for gaps in ordinals.
8922            while _next_ordinal_to_read < 1 {
8923                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8924                _next_ordinal_to_read += 1;
8925                next_offset += envelope_size;
8926            }
8927
8928            let next_out_of_line = decoder.next_out_of_line();
8929            let handles_before = decoder.remaining_handles();
8930            if let Some((inlined, num_bytes, num_handles)) =
8931                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8932            {
8933                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8934                if inlined != (member_inline_size <= 4) {
8935                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8936                }
8937                let inner_offset;
8938                let mut inner_depth = depth.clone();
8939                if inlined {
8940                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8941                    inner_offset = next_offset;
8942                } else {
8943                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8944                    inner_depth.increment()?;
8945                }
8946                let val_ref = self.pmk.get_or_insert_with(|| {
8947                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8948                });
8949                fidl::decode!(
8950                    fidl::encoding::UnboundedVector<u8>,
8951                    D,
8952                    val_ref,
8953                    decoder,
8954                    inner_offset,
8955                    inner_depth
8956                )?;
8957                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8958                {
8959                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8960                }
8961                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8962                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8963                }
8964            }
8965
8966            next_offset += envelope_size;
8967            _next_ordinal_to_read += 1;
8968            if next_offset >= end_offset {
8969                return Ok(());
8970            }
8971
8972            // Decode unknown envelopes for gaps in ordinals.
8973            while _next_ordinal_to_read < 2 {
8974                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8975                _next_ordinal_to_read += 1;
8976                next_offset += envelope_size;
8977            }
8978
8979            let next_out_of_line = decoder.next_out_of_line();
8980            let handles_before = decoder.remaining_handles();
8981            if let Some((inlined, num_bytes, num_handles)) =
8982                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8983            {
8984                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8985                if inlined != (member_inline_size <= 4) {
8986                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8987                }
8988                let inner_offset;
8989                let mut inner_depth = depth.clone();
8990                if inlined {
8991                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8992                    inner_offset = next_offset;
8993                } else {
8994                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8995                    inner_depth.increment()?;
8996                }
8997                let val_ref = self.pmkid.get_or_insert_with(|| {
8998                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8999                });
9000                fidl::decode!(
9001                    fidl::encoding::UnboundedVector<u8>,
9002                    D,
9003                    val_ref,
9004                    decoder,
9005                    inner_offset,
9006                    inner_depth
9007                )?;
9008                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9009                {
9010                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9011                }
9012                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9013                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9014                }
9015            }
9016
9017            next_offset += envelope_size;
9018
9019            // Decode the remaining unknown envelopes.
9020            while next_offset < end_offset {
9021                _next_ordinal_to_read += 1;
9022                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9023                next_offset += envelope_size;
9024            }
9025
9026            Ok(())
9027        }
9028    }
9029
9030    impl WlanFullmacImplIfcOnScanEndRequest {
9031        #[inline(always)]
9032        fn max_ordinal_present(&self) -> u64 {
9033            if let Some(_) = self.code {
9034                return 2;
9035            }
9036            if let Some(_) = self.txn_id {
9037                return 1;
9038            }
9039            0
9040        }
9041    }
9042
9043    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanEndRequest {
9044        type Borrowed<'a> = &'a Self;
9045        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9046            value
9047        }
9048    }
9049
9050    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanEndRequest {
9051        type Owned = Self;
9052
9053        #[inline(always)]
9054        fn inline_align(_context: fidl::encoding::Context) -> usize {
9055            8
9056        }
9057
9058        #[inline(always)]
9059        fn inline_size(_context: fidl::encoding::Context) -> usize {
9060            16
9061        }
9062    }
9063
9064    unsafe impl<D: fidl::encoding::ResourceDialect>
9065        fidl::encoding::Encode<WlanFullmacImplIfcOnScanEndRequest, D>
9066        for &WlanFullmacImplIfcOnScanEndRequest
9067    {
9068        unsafe fn encode(
9069            self,
9070            encoder: &mut fidl::encoding::Encoder<'_, D>,
9071            offset: usize,
9072            mut depth: fidl::encoding::Depth,
9073        ) -> fidl::Result<()> {
9074            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanEndRequest>(offset);
9075            // Vector header
9076            let max_ordinal: u64 = self.max_ordinal_present();
9077            encoder.write_num(max_ordinal, offset);
9078            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9079            // Calling encoder.out_of_line_offset(0) is not allowed.
9080            if max_ordinal == 0 {
9081                return Ok(());
9082            }
9083            depth.increment()?;
9084            let envelope_size = 8;
9085            let bytes_len = max_ordinal as usize * envelope_size;
9086            #[allow(unused_variables)]
9087            let offset = encoder.out_of_line_offset(bytes_len);
9088            let mut _prev_end_offset: usize = 0;
9089            if 1 > max_ordinal {
9090                return Ok(());
9091            }
9092
9093            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9094            // are envelope_size bytes.
9095            let cur_offset: usize = (1 - 1) * envelope_size;
9096
9097            // Zero reserved fields.
9098            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9099
9100            // Safety:
9101            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9102            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9103            //   envelope_size bytes, there is always sufficient room.
9104            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9105                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9106                encoder,
9107                offset + cur_offset,
9108                depth,
9109            )?;
9110
9111            _prev_end_offset = cur_offset + envelope_size;
9112            if 2 > max_ordinal {
9113                return Ok(());
9114            }
9115
9116            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9117            // are envelope_size bytes.
9118            let cur_offset: usize = (2 - 1) * envelope_size;
9119
9120            // Zero reserved fields.
9121            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9122
9123            // Safety:
9124            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9125            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9126            //   envelope_size bytes, there is always sufficient room.
9127            fidl::encoding::encode_in_envelope_optional::<WlanScanResult, D>(
9128                self.code.as_ref().map(<WlanScanResult as fidl::encoding::ValueTypeMarker>::borrow),
9129                encoder,
9130                offset + cur_offset,
9131                depth,
9132            )?;
9133
9134            _prev_end_offset = cur_offset + envelope_size;
9135
9136            Ok(())
9137        }
9138    }
9139
9140    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9141        for WlanFullmacImplIfcOnScanEndRequest
9142    {
9143        #[inline(always)]
9144        fn new_empty() -> Self {
9145            Self::default()
9146        }
9147
9148        unsafe fn decode(
9149            &mut self,
9150            decoder: &mut fidl::encoding::Decoder<'_, D>,
9151            offset: usize,
9152            mut depth: fidl::encoding::Depth,
9153        ) -> fidl::Result<()> {
9154            decoder.debug_check_bounds::<Self>(offset);
9155            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9156                None => return Err(fidl::Error::NotNullable),
9157                Some(len) => len,
9158            };
9159            // Calling decoder.out_of_line_offset(0) is not allowed.
9160            if len == 0 {
9161                return Ok(());
9162            };
9163            depth.increment()?;
9164            let envelope_size = 8;
9165            let bytes_len = len * envelope_size;
9166            let offset = decoder.out_of_line_offset(bytes_len)?;
9167            // Decode the envelope for each type.
9168            let mut _next_ordinal_to_read = 0;
9169            let mut next_offset = offset;
9170            let end_offset = offset + bytes_len;
9171            _next_ordinal_to_read += 1;
9172            if next_offset >= end_offset {
9173                return Ok(());
9174            }
9175
9176            // Decode unknown envelopes for gaps in ordinals.
9177            while _next_ordinal_to_read < 1 {
9178                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9179                _next_ordinal_to_read += 1;
9180                next_offset += envelope_size;
9181            }
9182
9183            let next_out_of_line = decoder.next_out_of_line();
9184            let handles_before = decoder.remaining_handles();
9185            if let Some((inlined, num_bytes, num_handles)) =
9186                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9187            {
9188                let member_inline_size =
9189                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9190                if inlined != (member_inline_size <= 4) {
9191                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9192                }
9193                let inner_offset;
9194                let mut inner_depth = depth.clone();
9195                if inlined {
9196                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9197                    inner_offset = next_offset;
9198                } else {
9199                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9200                    inner_depth.increment()?;
9201                }
9202                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9203                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9204                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9205                {
9206                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9207                }
9208                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9209                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9210                }
9211            }
9212
9213            next_offset += envelope_size;
9214            _next_ordinal_to_read += 1;
9215            if next_offset >= end_offset {
9216                return Ok(());
9217            }
9218
9219            // Decode unknown envelopes for gaps in ordinals.
9220            while _next_ordinal_to_read < 2 {
9221                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9222                _next_ordinal_to_read += 1;
9223                next_offset += envelope_size;
9224            }
9225
9226            let next_out_of_line = decoder.next_out_of_line();
9227            let handles_before = decoder.remaining_handles();
9228            if let Some((inlined, num_bytes, num_handles)) =
9229                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9230            {
9231                let member_inline_size =
9232                    <WlanScanResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9233                if inlined != (member_inline_size <= 4) {
9234                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9235                }
9236                let inner_offset;
9237                let mut inner_depth = depth.clone();
9238                if inlined {
9239                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9240                    inner_offset = next_offset;
9241                } else {
9242                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9243                    inner_depth.increment()?;
9244                }
9245                let val_ref = self.code.get_or_insert_with(|| fidl::new_empty!(WlanScanResult, D));
9246                fidl::decode!(WlanScanResult, D, val_ref, decoder, inner_offset, inner_depth)?;
9247                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9248                {
9249                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9250                }
9251                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9252                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9253                }
9254            }
9255
9256            next_offset += envelope_size;
9257
9258            // Decode the remaining unknown envelopes.
9259            while next_offset < end_offset {
9260                _next_ordinal_to_read += 1;
9261                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9262                next_offset += envelope_size;
9263            }
9264
9265            Ok(())
9266        }
9267    }
9268
9269    impl WlanFullmacImplIfcOnScanResultRequest {
9270        #[inline(always)]
9271        fn max_ordinal_present(&self) -> u64 {
9272            if let Some(_) = self.bss {
9273                return 3;
9274            }
9275            if let Some(_) = self.timestamp_nanos {
9276                return 2;
9277            }
9278            if let Some(_) = self.txn_id {
9279                return 1;
9280            }
9281            0
9282        }
9283    }
9284
9285    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9286        type Borrowed<'a> = &'a Self;
9287        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9288            value
9289        }
9290    }
9291
9292    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9293        type Owned = Self;
9294
9295        #[inline(always)]
9296        fn inline_align(_context: fidl::encoding::Context) -> usize {
9297            8
9298        }
9299
9300        #[inline(always)]
9301        fn inline_size(_context: fidl::encoding::Context) -> usize {
9302            16
9303        }
9304    }
9305
9306    unsafe impl<D: fidl::encoding::ResourceDialect>
9307        fidl::encoding::Encode<WlanFullmacImplIfcOnScanResultRequest, D>
9308        for &WlanFullmacImplIfcOnScanResultRequest
9309    {
9310        unsafe fn encode(
9311            self,
9312            encoder: &mut fidl::encoding::Encoder<'_, D>,
9313            offset: usize,
9314            mut depth: fidl::encoding::Depth,
9315        ) -> fidl::Result<()> {
9316            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanResultRequest>(offset);
9317            // Vector header
9318            let max_ordinal: u64 = self.max_ordinal_present();
9319            encoder.write_num(max_ordinal, offset);
9320            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9321            // Calling encoder.out_of_line_offset(0) is not allowed.
9322            if max_ordinal == 0 {
9323                return Ok(());
9324            }
9325            depth.increment()?;
9326            let envelope_size = 8;
9327            let bytes_len = max_ordinal as usize * envelope_size;
9328            #[allow(unused_variables)]
9329            let offset = encoder.out_of_line_offset(bytes_len);
9330            let mut _prev_end_offset: usize = 0;
9331            if 1 > max_ordinal {
9332                return Ok(());
9333            }
9334
9335            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9336            // are envelope_size bytes.
9337            let cur_offset: usize = (1 - 1) * envelope_size;
9338
9339            // Zero reserved fields.
9340            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9341
9342            // Safety:
9343            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9344            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9345            //   envelope_size bytes, there is always sufficient room.
9346            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9347                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9348                encoder,
9349                offset + cur_offset,
9350                depth,
9351            )?;
9352
9353            _prev_end_offset = cur_offset + envelope_size;
9354            if 2 > max_ordinal {
9355                return Ok(());
9356            }
9357
9358            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9359            // are envelope_size bytes.
9360            let cur_offset: usize = (2 - 1) * envelope_size;
9361
9362            // Zero reserved fields.
9363            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9364
9365            // Safety:
9366            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9367            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9368            //   envelope_size bytes, there is always sufficient room.
9369            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9370                self.timestamp_nanos.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9371                encoder,
9372                offset + cur_offset,
9373                depth,
9374            )?;
9375
9376            _prev_end_offset = cur_offset + envelope_size;
9377            if 3 > max_ordinal {
9378                return Ok(());
9379            }
9380
9381            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9382            // are envelope_size bytes.
9383            let cur_offset: usize = (3 - 1) * envelope_size;
9384
9385            // Zero reserved fields.
9386            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9387
9388            // Safety:
9389            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9390            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9391            //   envelope_size bytes, there is always sufficient room.
9392            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>(
9393            self.bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
9394            encoder, offset + cur_offset, depth
9395        )?;
9396
9397            _prev_end_offset = cur_offset + envelope_size;
9398
9399            Ok(())
9400        }
9401    }
9402
9403    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9404        for WlanFullmacImplIfcOnScanResultRequest
9405    {
9406        #[inline(always)]
9407        fn new_empty() -> Self {
9408            Self::default()
9409        }
9410
9411        unsafe fn decode(
9412            &mut self,
9413            decoder: &mut fidl::encoding::Decoder<'_, D>,
9414            offset: usize,
9415            mut depth: fidl::encoding::Depth,
9416        ) -> fidl::Result<()> {
9417            decoder.debug_check_bounds::<Self>(offset);
9418            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9419                None => return Err(fidl::Error::NotNullable),
9420                Some(len) => len,
9421            };
9422            // Calling decoder.out_of_line_offset(0) is not allowed.
9423            if len == 0 {
9424                return Ok(());
9425            };
9426            depth.increment()?;
9427            let envelope_size = 8;
9428            let bytes_len = len * envelope_size;
9429            let offset = decoder.out_of_line_offset(bytes_len)?;
9430            // Decode the envelope for each type.
9431            let mut _next_ordinal_to_read = 0;
9432            let mut next_offset = offset;
9433            let end_offset = offset + bytes_len;
9434            _next_ordinal_to_read += 1;
9435            if next_offset >= end_offset {
9436                return Ok(());
9437            }
9438
9439            // Decode unknown envelopes for gaps in ordinals.
9440            while _next_ordinal_to_read < 1 {
9441                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9442                _next_ordinal_to_read += 1;
9443                next_offset += envelope_size;
9444            }
9445
9446            let next_out_of_line = decoder.next_out_of_line();
9447            let handles_before = decoder.remaining_handles();
9448            if let Some((inlined, num_bytes, num_handles)) =
9449                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9450            {
9451                let member_inline_size =
9452                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9453                if inlined != (member_inline_size <= 4) {
9454                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9455                }
9456                let inner_offset;
9457                let mut inner_depth = depth.clone();
9458                if inlined {
9459                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9460                    inner_offset = next_offset;
9461                } else {
9462                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9463                    inner_depth.increment()?;
9464                }
9465                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9466                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9467                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9468                {
9469                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9470                }
9471                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9472                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9473                }
9474            }
9475
9476            next_offset += envelope_size;
9477            _next_ordinal_to_read += 1;
9478            if next_offset >= end_offset {
9479                return Ok(());
9480            }
9481
9482            // Decode unknown envelopes for gaps in ordinals.
9483            while _next_ordinal_to_read < 2 {
9484                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9485                _next_ordinal_to_read += 1;
9486                next_offset += envelope_size;
9487            }
9488
9489            let next_out_of_line = decoder.next_out_of_line();
9490            let handles_before = decoder.remaining_handles();
9491            if let Some((inlined, num_bytes, num_handles)) =
9492                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9493            {
9494                let member_inline_size =
9495                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9496                if inlined != (member_inline_size <= 4) {
9497                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9498                }
9499                let inner_offset;
9500                let mut inner_depth = depth.clone();
9501                if inlined {
9502                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9503                    inner_offset = next_offset;
9504                } else {
9505                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9506                    inner_depth.increment()?;
9507                }
9508                let val_ref = self.timestamp_nanos.get_or_insert_with(|| fidl::new_empty!(i64, D));
9509                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9510                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9511                {
9512                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9513                }
9514                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9515                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9516                }
9517            }
9518
9519            next_offset += envelope_size;
9520            _next_ordinal_to_read += 1;
9521            if next_offset >= end_offset {
9522                return Ok(());
9523            }
9524
9525            // Decode unknown envelopes for gaps in ordinals.
9526            while _next_ordinal_to_read < 3 {
9527                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9528                _next_ordinal_to_read += 1;
9529                next_offset += envelope_size;
9530            }
9531
9532            let next_out_of_line = decoder.next_out_of_line();
9533            let handles_before = decoder.remaining_handles();
9534            if let Some((inlined, num_bytes, num_handles)) =
9535                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9536            {
9537                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9538                if inlined != (member_inline_size <= 4) {
9539                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9540                }
9541                let inner_offset;
9542                let mut inner_depth = depth.clone();
9543                if inlined {
9544                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9545                    inner_offset = next_offset;
9546                } else {
9547                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9548                    inner_depth.increment()?;
9549                }
9550                let val_ref = self.bss.get_or_insert_with(|| {
9551                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D)
9552                });
9553                fidl::decode!(
9554                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
9555                    D,
9556                    val_ref,
9557                    decoder,
9558                    inner_offset,
9559                    inner_depth
9560                )?;
9561                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9562                {
9563                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9564                }
9565                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9566                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9567                }
9568            }
9569
9570            next_offset += envelope_size;
9571
9572            // Decode the remaining unknown envelopes.
9573            while next_offset < end_offset {
9574                _next_ordinal_to_read += 1;
9575                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9576                next_offset += envelope_size;
9577            }
9578
9579            Ok(())
9580        }
9581    }
9582
9583    impl WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {
9584        #[inline(always)]
9585        fn max_ordinal_present(&self) -> u64 {
9586            if let Some(_) = self.txn_id {
9587                return 1;
9588            }
9589            0
9590        }
9591    }
9592
9593    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {
9594        type Borrowed<'a> = &'a Self;
9595        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9596            value
9597        }
9598    }
9599
9600    unsafe impl fidl::encoding::TypeMarker
9601        for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest
9602    {
9603        type Owned = Self;
9604
9605        #[inline(always)]
9606        fn inline_align(_context: fidl::encoding::Context) -> usize {
9607            8
9608        }
9609
9610        #[inline(always)]
9611        fn inline_size(_context: fidl::encoding::Context) -> usize {
9612            16
9613        }
9614    }
9615
9616    unsafe impl<D: fidl::encoding::ResourceDialect>
9617        fidl::encoding::Encode<WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest, D>
9618        for &WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest
9619    {
9620        unsafe fn encode(
9621            self,
9622            encoder: &mut fidl::encoding::Encoder<'_, D>,
9623            offset: usize,
9624            mut depth: fidl::encoding::Depth,
9625        ) -> fidl::Result<()> {
9626            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest>(
9627                offset,
9628            );
9629            // Vector header
9630            let max_ordinal: u64 = self.max_ordinal_present();
9631            encoder.write_num(max_ordinal, offset);
9632            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9633            // Calling encoder.out_of_line_offset(0) is not allowed.
9634            if max_ordinal == 0 {
9635                return Ok(());
9636            }
9637            depth.increment()?;
9638            let envelope_size = 8;
9639            let bytes_len = max_ordinal as usize * envelope_size;
9640            #[allow(unused_variables)]
9641            let offset = encoder.out_of_line_offset(bytes_len);
9642            let mut _prev_end_offset: usize = 0;
9643            if 1 > max_ordinal {
9644                return Ok(());
9645            }
9646
9647            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9648            // are envelope_size bytes.
9649            let cur_offset: usize = (1 - 1) * envelope_size;
9650
9651            // Zero reserved fields.
9652            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9653
9654            // Safety:
9655            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9656            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9657            //   envelope_size bytes, there is always sufficient room.
9658            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9659                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9660                encoder,
9661                offset + cur_offset,
9662                depth,
9663            )?;
9664
9665            _prev_end_offset = cur_offset + envelope_size;
9666
9667            Ok(())
9668        }
9669    }
9670
9671    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9672        for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest
9673    {
9674        #[inline(always)]
9675        fn new_empty() -> Self {
9676            Self::default()
9677        }
9678
9679        unsafe fn decode(
9680            &mut self,
9681            decoder: &mut fidl::encoding::Decoder<'_, D>,
9682            offset: usize,
9683            mut depth: fidl::encoding::Depth,
9684        ) -> fidl::Result<()> {
9685            decoder.debug_check_bounds::<Self>(offset);
9686            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9687                None => return Err(fidl::Error::NotNullable),
9688                Some(len) => len,
9689            };
9690            // Calling decoder.out_of_line_offset(0) is not allowed.
9691            if len == 0 {
9692                return Ok(());
9693            };
9694            depth.increment()?;
9695            let envelope_size = 8;
9696            let bytes_len = len * envelope_size;
9697            let offset = decoder.out_of_line_offset(bytes_len)?;
9698            // Decode the envelope for each type.
9699            let mut _next_ordinal_to_read = 0;
9700            let mut next_offset = offset;
9701            let end_offset = offset + bytes_len;
9702            _next_ordinal_to_read += 1;
9703            if next_offset >= end_offset {
9704                return Ok(());
9705            }
9706
9707            // Decode unknown envelopes for gaps in ordinals.
9708            while _next_ordinal_to_read < 1 {
9709                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9710                _next_ordinal_to_read += 1;
9711                next_offset += envelope_size;
9712            }
9713
9714            let next_out_of_line = decoder.next_out_of_line();
9715            let handles_before = decoder.remaining_handles();
9716            if let Some((inlined, num_bytes, num_handles)) =
9717                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9718            {
9719                let member_inline_size =
9720                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9721                if inlined != (member_inline_size <= 4) {
9722                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9723                }
9724                let inner_offset;
9725                let mut inner_depth = depth.clone();
9726                if inlined {
9727                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9728                    inner_offset = next_offset;
9729                } else {
9730                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9731                    inner_depth.increment()?;
9732                }
9733                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9734                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9735                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9736                {
9737                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9738                }
9739                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9740                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9741                }
9742            }
9743
9744            next_offset += envelope_size;
9745
9746            // Decode the remaining unknown envelopes.
9747            while next_offset < end_offset {
9748                _next_ordinal_to_read += 1;
9749                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9750                next_offset += envelope_size;
9751            }
9752
9753            Ok(())
9754        }
9755    }
9756
9757    impl WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {
9758        #[inline(always)]
9759        fn max_ordinal_present(&self) -> u64 {
9760            if let Some(_) = self.txn_id {
9761                return 1;
9762            }
9763            0
9764        }
9765    }
9766
9767    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {
9768        type Borrowed<'a> = &'a Self;
9769        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9770            value
9771        }
9772    }
9773
9774    unsafe impl fidl::encoding::TypeMarker
9775        for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest
9776    {
9777        type Owned = Self;
9778
9779        #[inline(always)]
9780        fn inline_align(_context: fidl::encoding::Context) -> usize {
9781            8
9782        }
9783
9784        #[inline(always)]
9785        fn inline_size(_context: fidl::encoding::Context) -> usize {
9786            16
9787        }
9788    }
9789
9790    unsafe impl<D: fidl::encoding::ResourceDialect>
9791        fidl::encoding::Encode<WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest, D>
9792        for &WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest
9793    {
9794        unsafe fn encode(
9795            self,
9796            encoder: &mut fidl::encoding::Encoder<'_, D>,
9797            offset: usize,
9798            mut depth: fidl::encoding::Depth,
9799        ) -> fidl::Result<()> {
9800            encoder
9801                .debug_check_bounds::<WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest>(
9802                    offset,
9803                );
9804            // Vector header
9805            let max_ordinal: u64 = self.max_ordinal_present();
9806            encoder.write_num(max_ordinal, offset);
9807            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9808            // Calling encoder.out_of_line_offset(0) is not allowed.
9809            if max_ordinal == 0 {
9810                return Ok(());
9811            }
9812            depth.increment()?;
9813            let envelope_size = 8;
9814            let bytes_len = max_ordinal as usize * envelope_size;
9815            #[allow(unused_variables)]
9816            let offset = encoder.out_of_line_offset(bytes_len);
9817            let mut _prev_end_offset: usize = 0;
9818            if 1 > max_ordinal {
9819                return Ok(());
9820            }
9821
9822            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9823            // are envelope_size bytes.
9824            let cur_offset: usize = (1 - 1) * envelope_size;
9825
9826            // Zero reserved fields.
9827            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9828
9829            // Safety:
9830            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9831            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9832            //   envelope_size bytes, there is always sufficient room.
9833            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9834                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9835                encoder,
9836                offset + cur_offset,
9837                depth,
9838            )?;
9839
9840            _prev_end_offset = cur_offset + envelope_size;
9841
9842            Ok(())
9843        }
9844    }
9845
9846    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9847        for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest
9848    {
9849        #[inline(always)]
9850        fn new_empty() -> Self {
9851            Self::default()
9852        }
9853
9854        unsafe fn decode(
9855            &mut self,
9856            decoder: &mut fidl::encoding::Decoder<'_, D>,
9857            offset: usize,
9858            mut depth: fidl::encoding::Depth,
9859        ) -> fidl::Result<()> {
9860            decoder.debug_check_bounds::<Self>(offset);
9861            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9862                None => return Err(fidl::Error::NotNullable),
9863                Some(len) => len,
9864            };
9865            // Calling decoder.out_of_line_offset(0) is not allowed.
9866            if len == 0 {
9867                return Ok(());
9868            };
9869            depth.increment()?;
9870            let envelope_size = 8;
9871            let bytes_len = len * envelope_size;
9872            let offset = decoder.out_of_line_offset(bytes_len)?;
9873            // Decode the envelope for each type.
9874            let mut _next_ordinal_to_read = 0;
9875            let mut next_offset = offset;
9876            let end_offset = offset + bytes_len;
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 < 1 {
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                    <u64 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 = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9909                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9910                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9911                {
9912                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9913                }
9914                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9915                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9916                }
9917            }
9918
9919            next_offset += envelope_size;
9920
9921            // Decode the remaining unknown envelopes.
9922            while next_offset < end_offset {
9923                _next_ordinal_to_read += 1;
9924                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9925                next_offset += envelope_size;
9926            }
9927
9928            Ok(())
9929        }
9930    }
9931
9932    impl WlanFullmacImplIfcRoamConfRequest {
9933        #[inline(always)]
9934        fn max_ordinal_present(&self) -> u64 {
9935            if let Some(_) = self.association_ies {
9936                return 6;
9937            }
9938            if let Some(_) = self.association_id {
9939                return 5;
9940            }
9941            if let Some(_) = self.target_bss_authenticated {
9942                return 4;
9943            }
9944            if let Some(_) = self.original_association_maintained {
9945                return 3;
9946            }
9947            if let Some(_) = self.status_code {
9948                return 2;
9949            }
9950            if let Some(_) = self.selected_bssid {
9951                return 1;
9952            }
9953            0
9954        }
9955    }
9956
9957    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamConfRequest {
9958        type Borrowed<'a> = &'a Self;
9959        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9960            value
9961        }
9962    }
9963
9964    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamConfRequest {
9965        type Owned = Self;
9966
9967        #[inline(always)]
9968        fn inline_align(_context: fidl::encoding::Context) -> usize {
9969            8
9970        }
9971
9972        #[inline(always)]
9973        fn inline_size(_context: fidl::encoding::Context) -> usize {
9974            16
9975        }
9976    }
9977
9978    unsafe impl<D: fidl::encoding::ResourceDialect>
9979        fidl::encoding::Encode<WlanFullmacImplIfcRoamConfRequest, D>
9980        for &WlanFullmacImplIfcRoamConfRequest
9981    {
9982        unsafe fn encode(
9983            self,
9984            encoder: &mut fidl::encoding::Encoder<'_, D>,
9985            offset: usize,
9986            mut depth: fidl::encoding::Depth,
9987        ) -> fidl::Result<()> {
9988            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamConfRequest>(offset);
9989            // Vector header
9990            let max_ordinal: u64 = self.max_ordinal_present();
9991            encoder.write_num(max_ordinal, offset);
9992            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9993            // Calling encoder.out_of_line_offset(0) is not allowed.
9994            if max_ordinal == 0 {
9995                return Ok(());
9996            }
9997            depth.increment()?;
9998            let envelope_size = 8;
9999            let bytes_len = max_ordinal as usize * envelope_size;
10000            #[allow(unused_variables)]
10001            let offset = encoder.out_of_line_offset(bytes_len);
10002            let mut _prev_end_offset: usize = 0;
10003            if 1 > max_ordinal {
10004                return Ok(());
10005            }
10006
10007            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10008            // are envelope_size bytes.
10009            let cur_offset: usize = (1 - 1) * envelope_size;
10010
10011            // Zero reserved fields.
10012            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10013
10014            // Safety:
10015            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10016            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10017            //   envelope_size bytes, there is always sufficient room.
10018            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10019                self.selected_bssid
10020                    .as_ref()
10021                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10022                encoder,
10023                offset + cur_offset,
10024                depth,
10025            )?;
10026
10027            _prev_end_offset = cur_offset + envelope_size;
10028            if 2 > max_ordinal {
10029                return Ok(());
10030            }
10031
10032            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10033            // are envelope_size bytes.
10034            let cur_offset: usize = (2 - 1) * envelope_size;
10035
10036            // Zero reserved fields.
10037            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10038
10039            // Safety:
10040            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10041            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10042            //   envelope_size bytes, there is always sufficient room.
10043            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
10044            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
10045            encoder, offset + cur_offset, depth
10046        )?;
10047
10048            _prev_end_offset = cur_offset + envelope_size;
10049            if 3 > max_ordinal {
10050                return Ok(());
10051            }
10052
10053            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10054            // are envelope_size bytes.
10055            let cur_offset: usize = (3 - 1) * envelope_size;
10056
10057            // Zero reserved fields.
10058            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10059
10060            // Safety:
10061            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10062            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10063            //   envelope_size bytes, there is always sufficient room.
10064            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10065                self.original_association_maintained
10066                    .as_ref()
10067                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10068                encoder,
10069                offset + cur_offset,
10070                depth,
10071            )?;
10072
10073            _prev_end_offset = cur_offset + envelope_size;
10074            if 4 > max_ordinal {
10075                return Ok(());
10076            }
10077
10078            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10079            // are envelope_size bytes.
10080            let cur_offset: usize = (4 - 1) * envelope_size;
10081
10082            // Zero reserved fields.
10083            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10084
10085            // Safety:
10086            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10087            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10088            //   envelope_size bytes, there is always sufficient room.
10089            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10090                self.target_bss_authenticated
10091                    .as_ref()
10092                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10093                encoder,
10094                offset + cur_offset,
10095                depth,
10096            )?;
10097
10098            _prev_end_offset = cur_offset + envelope_size;
10099            if 5 > max_ordinal {
10100                return Ok(());
10101            }
10102
10103            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10104            // are envelope_size bytes.
10105            let cur_offset: usize = (5 - 1) * envelope_size;
10106
10107            // Zero reserved fields.
10108            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10109
10110            // Safety:
10111            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10112            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10113            //   envelope_size bytes, there is always sufficient room.
10114            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10115                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10116                encoder,
10117                offset + cur_offset,
10118                depth,
10119            )?;
10120
10121            _prev_end_offset = cur_offset + envelope_size;
10122            if 6 > max_ordinal {
10123                return Ok(());
10124            }
10125
10126            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10127            // are envelope_size bytes.
10128            let cur_offset: usize = (6 - 1) * envelope_size;
10129
10130            // Zero reserved fields.
10131            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10132
10133            // Safety:
10134            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10135            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10136            //   envelope_size bytes, there is always sufficient room.
10137            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10138            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10139            encoder, offset + cur_offset, depth
10140        )?;
10141
10142            _prev_end_offset = cur_offset + envelope_size;
10143
10144            Ok(())
10145        }
10146    }
10147
10148    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10149        for WlanFullmacImplIfcRoamConfRequest
10150    {
10151        #[inline(always)]
10152        fn new_empty() -> Self {
10153            Self::default()
10154        }
10155
10156        unsafe fn decode(
10157            &mut self,
10158            decoder: &mut fidl::encoding::Decoder<'_, D>,
10159            offset: usize,
10160            mut depth: fidl::encoding::Depth,
10161        ) -> fidl::Result<()> {
10162            decoder.debug_check_bounds::<Self>(offset);
10163            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10164                None => return Err(fidl::Error::NotNullable),
10165                Some(len) => len,
10166            };
10167            // Calling decoder.out_of_line_offset(0) is not allowed.
10168            if len == 0 {
10169                return Ok(());
10170            };
10171            depth.increment()?;
10172            let envelope_size = 8;
10173            let bytes_len = len * envelope_size;
10174            let offset = decoder.out_of_line_offset(bytes_len)?;
10175            // Decode the envelope for each type.
10176            let mut _next_ordinal_to_read = 0;
10177            let mut next_offset = offset;
10178            let end_offset = offset + bytes_len;
10179            _next_ordinal_to_read += 1;
10180            if next_offset >= end_offset {
10181                return Ok(());
10182            }
10183
10184            // Decode unknown envelopes for gaps in ordinals.
10185            while _next_ordinal_to_read < 1 {
10186                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10187                _next_ordinal_to_read += 1;
10188                next_offset += envelope_size;
10189            }
10190
10191            let next_out_of_line = decoder.next_out_of_line();
10192            let handles_before = decoder.remaining_handles();
10193            if let Some((inlined, num_bytes, num_handles)) =
10194                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10195            {
10196                let member_inline_size =
10197                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10198                        decoder.context,
10199                    );
10200                if inlined != (member_inline_size <= 4) {
10201                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10202                }
10203                let inner_offset;
10204                let mut inner_depth = depth.clone();
10205                if inlined {
10206                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10207                    inner_offset = next_offset;
10208                } else {
10209                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10210                    inner_depth.increment()?;
10211                }
10212                let val_ref = self
10213                    .selected_bssid
10214                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10215                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
10216                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10217                {
10218                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10219                }
10220                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10221                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10222                }
10223            }
10224
10225            next_offset += envelope_size;
10226            _next_ordinal_to_read += 1;
10227            if next_offset >= end_offset {
10228                return Ok(());
10229            }
10230
10231            // Decode unknown envelopes for gaps in ordinals.
10232            while _next_ordinal_to_read < 2 {
10233                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10234                _next_ordinal_to_read += 1;
10235                next_offset += envelope_size;
10236            }
10237
10238            let next_out_of_line = decoder.next_out_of_line();
10239            let handles_before = decoder.remaining_handles();
10240            if let Some((inlined, num_bytes, num_handles)) =
10241                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10242            {
10243                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10244                if inlined != (member_inline_size <= 4) {
10245                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10246                }
10247                let inner_offset;
10248                let mut inner_depth = depth.clone();
10249                if inlined {
10250                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10251                    inner_offset = next_offset;
10252                } else {
10253                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10254                    inner_depth.increment()?;
10255                }
10256                let val_ref = self.status_code.get_or_insert_with(|| {
10257                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
10258                });
10259                fidl::decode!(
10260                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
10261                    D,
10262                    val_ref,
10263                    decoder,
10264                    inner_offset,
10265                    inner_depth
10266                )?;
10267                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10268                {
10269                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10270                }
10271                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10272                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10273                }
10274            }
10275
10276            next_offset += envelope_size;
10277            _next_ordinal_to_read += 1;
10278            if next_offset >= end_offset {
10279                return Ok(());
10280            }
10281
10282            // Decode unknown envelopes for gaps in ordinals.
10283            while _next_ordinal_to_read < 3 {
10284                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10285                _next_ordinal_to_read += 1;
10286                next_offset += envelope_size;
10287            }
10288
10289            let next_out_of_line = decoder.next_out_of_line();
10290            let handles_before = decoder.remaining_handles();
10291            if let Some((inlined, num_bytes, num_handles)) =
10292                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10293            {
10294                let member_inline_size =
10295                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10296                if inlined != (member_inline_size <= 4) {
10297                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10298                }
10299                let inner_offset;
10300                let mut inner_depth = depth.clone();
10301                if inlined {
10302                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10303                    inner_offset = next_offset;
10304                } else {
10305                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10306                    inner_depth.increment()?;
10307                }
10308                let val_ref = self
10309                    .original_association_maintained
10310                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
10311                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10312                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10313                {
10314                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10315                }
10316                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10317                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10318                }
10319            }
10320
10321            next_offset += envelope_size;
10322            _next_ordinal_to_read += 1;
10323            if next_offset >= end_offset {
10324                return Ok(());
10325            }
10326
10327            // Decode unknown envelopes for gaps in ordinals.
10328            while _next_ordinal_to_read < 4 {
10329                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10330                _next_ordinal_to_read += 1;
10331                next_offset += envelope_size;
10332            }
10333
10334            let next_out_of_line = decoder.next_out_of_line();
10335            let handles_before = decoder.remaining_handles();
10336            if let Some((inlined, num_bytes, num_handles)) =
10337                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10338            {
10339                let member_inline_size =
10340                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10341                if inlined != (member_inline_size <= 4) {
10342                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10343                }
10344                let inner_offset;
10345                let mut inner_depth = depth.clone();
10346                if inlined {
10347                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10348                    inner_offset = next_offset;
10349                } else {
10350                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10351                    inner_depth.increment()?;
10352                }
10353                let val_ref =
10354                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
10355                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10356                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10357                {
10358                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10359                }
10360                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10361                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10362                }
10363            }
10364
10365            next_offset += envelope_size;
10366            _next_ordinal_to_read += 1;
10367            if next_offset >= end_offset {
10368                return Ok(());
10369            }
10370
10371            // Decode unknown envelopes for gaps in ordinals.
10372            while _next_ordinal_to_read < 5 {
10373                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10374                _next_ordinal_to_read += 1;
10375                next_offset += envelope_size;
10376            }
10377
10378            let next_out_of_line = decoder.next_out_of_line();
10379            let handles_before = decoder.remaining_handles();
10380            if let Some((inlined, num_bytes, num_handles)) =
10381                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10382            {
10383                let member_inline_size =
10384                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10385                if inlined != (member_inline_size <= 4) {
10386                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10387                }
10388                let inner_offset;
10389                let mut inner_depth = depth.clone();
10390                if inlined {
10391                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10392                    inner_offset = next_offset;
10393                } else {
10394                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10395                    inner_depth.increment()?;
10396                }
10397                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10398                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10399                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10400                {
10401                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10402                }
10403                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10404                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10405                }
10406            }
10407
10408            next_offset += envelope_size;
10409            _next_ordinal_to_read += 1;
10410            if next_offset >= end_offset {
10411                return Ok(());
10412            }
10413
10414            // Decode unknown envelopes for gaps in ordinals.
10415            while _next_ordinal_to_read < 6 {
10416                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10417                _next_ordinal_to_read += 1;
10418                next_offset += envelope_size;
10419            }
10420
10421            let next_out_of_line = decoder.next_out_of_line();
10422            let handles_before = decoder.remaining_handles();
10423            if let Some((inlined, num_bytes, num_handles)) =
10424                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10425            {
10426                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10427                if inlined != (member_inline_size <= 4) {
10428                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10429                }
10430                let inner_offset;
10431                let mut inner_depth = depth.clone();
10432                if inlined {
10433                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10434                    inner_offset = next_offset;
10435                } else {
10436                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10437                    inner_depth.increment()?;
10438                }
10439                let val_ref = self.association_ies.get_or_insert_with(|| {
10440                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
10441                });
10442                fidl::decode!(
10443                    fidl::encoding::UnboundedVector<u8>,
10444                    D,
10445                    val_ref,
10446                    decoder,
10447                    inner_offset,
10448                    inner_depth
10449                )?;
10450                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10451                {
10452                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10453                }
10454                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10455                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10456                }
10457            }
10458
10459            next_offset += envelope_size;
10460
10461            // Decode the remaining unknown envelopes.
10462            while next_offset < end_offset {
10463                _next_ordinal_to_read += 1;
10464                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10465                next_offset += envelope_size;
10466            }
10467
10468            Ok(())
10469        }
10470    }
10471
10472    impl WlanFullmacImplIfcRoamResultIndRequest {
10473        #[inline(always)]
10474        fn max_ordinal_present(&self) -> u64 {
10475            if let Some(_) = self.association_ies {
10476                return 6;
10477            }
10478            if let Some(_) = self.association_id {
10479                return 5;
10480            }
10481            if let Some(_) = self.target_bss_authenticated {
10482                return 4;
10483            }
10484            if let Some(_) = self.original_association_maintained {
10485                return 3;
10486            }
10487            if let Some(_) = self.status_code {
10488                return 2;
10489            }
10490            if let Some(_) = self.selected_bssid {
10491                return 1;
10492            }
10493            0
10494        }
10495    }
10496
10497    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
10498        type Borrowed<'a> = &'a Self;
10499        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10500            value
10501        }
10502    }
10503
10504    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
10505        type Owned = Self;
10506
10507        #[inline(always)]
10508        fn inline_align(_context: fidl::encoding::Context) -> usize {
10509            8
10510        }
10511
10512        #[inline(always)]
10513        fn inline_size(_context: fidl::encoding::Context) -> usize {
10514            16
10515        }
10516    }
10517
10518    unsafe impl<D: fidl::encoding::ResourceDialect>
10519        fidl::encoding::Encode<WlanFullmacImplIfcRoamResultIndRequest, D>
10520        for &WlanFullmacImplIfcRoamResultIndRequest
10521    {
10522        unsafe fn encode(
10523            self,
10524            encoder: &mut fidl::encoding::Encoder<'_, D>,
10525            offset: usize,
10526            mut depth: fidl::encoding::Depth,
10527        ) -> fidl::Result<()> {
10528            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamResultIndRequest>(offset);
10529            // Vector header
10530            let max_ordinal: u64 = self.max_ordinal_present();
10531            encoder.write_num(max_ordinal, offset);
10532            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10533            // Calling encoder.out_of_line_offset(0) is not allowed.
10534            if max_ordinal == 0 {
10535                return Ok(());
10536            }
10537            depth.increment()?;
10538            let envelope_size = 8;
10539            let bytes_len = max_ordinal as usize * envelope_size;
10540            #[allow(unused_variables)]
10541            let offset = encoder.out_of_line_offset(bytes_len);
10542            let mut _prev_end_offset: usize = 0;
10543            if 1 > max_ordinal {
10544                return Ok(());
10545            }
10546
10547            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10548            // are envelope_size bytes.
10549            let cur_offset: usize = (1 - 1) * envelope_size;
10550
10551            // Zero reserved fields.
10552            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10553
10554            // Safety:
10555            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10556            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10557            //   envelope_size bytes, there is always sufficient room.
10558            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10559                self.selected_bssid
10560                    .as_ref()
10561                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10562                encoder,
10563                offset + cur_offset,
10564                depth,
10565            )?;
10566
10567            _prev_end_offset = cur_offset + envelope_size;
10568            if 2 > max_ordinal {
10569                return Ok(());
10570            }
10571
10572            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10573            // are envelope_size bytes.
10574            let cur_offset: usize = (2 - 1) * envelope_size;
10575
10576            // Zero reserved fields.
10577            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10578
10579            // Safety:
10580            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10581            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10582            //   envelope_size bytes, there is always sufficient room.
10583            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
10584            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
10585            encoder, offset + cur_offset, depth
10586        )?;
10587
10588            _prev_end_offset = cur_offset + envelope_size;
10589            if 3 > max_ordinal {
10590                return Ok(());
10591            }
10592
10593            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10594            // are envelope_size bytes.
10595            let cur_offset: usize = (3 - 1) * envelope_size;
10596
10597            // Zero reserved fields.
10598            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10599
10600            // Safety:
10601            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10602            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10603            //   envelope_size bytes, there is always sufficient room.
10604            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10605                self.original_association_maintained
10606                    .as_ref()
10607                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10608                encoder,
10609                offset + cur_offset,
10610                depth,
10611            )?;
10612
10613            _prev_end_offset = cur_offset + envelope_size;
10614            if 4 > max_ordinal {
10615                return Ok(());
10616            }
10617
10618            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10619            // are envelope_size bytes.
10620            let cur_offset: usize = (4 - 1) * envelope_size;
10621
10622            // Zero reserved fields.
10623            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10624
10625            // Safety:
10626            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10627            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10628            //   envelope_size bytes, there is always sufficient room.
10629            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10630                self.target_bss_authenticated
10631                    .as_ref()
10632                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10633                encoder,
10634                offset + cur_offset,
10635                depth,
10636            )?;
10637
10638            _prev_end_offset = cur_offset + envelope_size;
10639            if 5 > max_ordinal {
10640                return Ok(());
10641            }
10642
10643            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10644            // are envelope_size bytes.
10645            let cur_offset: usize = (5 - 1) * envelope_size;
10646
10647            // Zero reserved fields.
10648            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10649
10650            // Safety:
10651            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10652            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10653            //   envelope_size bytes, there is always sufficient room.
10654            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10655                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10656                encoder,
10657                offset + cur_offset,
10658                depth,
10659            )?;
10660
10661            _prev_end_offset = cur_offset + envelope_size;
10662            if 6 > max_ordinal {
10663                return Ok(());
10664            }
10665
10666            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10667            // are envelope_size bytes.
10668            let cur_offset: usize = (6 - 1) * envelope_size;
10669
10670            // Zero reserved fields.
10671            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10672
10673            // Safety:
10674            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10675            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10676            //   envelope_size bytes, there is always sufficient room.
10677            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10678            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10679            encoder, offset + cur_offset, depth
10680        )?;
10681
10682            _prev_end_offset = cur_offset + envelope_size;
10683
10684            Ok(())
10685        }
10686    }
10687
10688    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10689        for WlanFullmacImplIfcRoamResultIndRequest
10690    {
10691        #[inline(always)]
10692        fn new_empty() -> Self {
10693            Self::default()
10694        }
10695
10696        unsafe fn decode(
10697            &mut self,
10698            decoder: &mut fidl::encoding::Decoder<'_, D>,
10699            offset: usize,
10700            mut depth: fidl::encoding::Depth,
10701        ) -> fidl::Result<()> {
10702            decoder.debug_check_bounds::<Self>(offset);
10703            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10704                None => return Err(fidl::Error::NotNullable),
10705                Some(len) => len,
10706            };
10707            // Calling decoder.out_of_line_offset(0) is not allowed.
10708            if len == 0 {
10709                return Ok(());
10710            };
10711            depth.increment()?;
10712            let envelope_size = 8;
10713            let bytes_len = len * envelope_size;
10714            let offset = decoder.out_of_line_offset(bytes_len)?;
10715            // Decode the envelope for each type.
10716            let mut _next_ordinal_to_read = 0;
10717            let mut next_offset = offset;
10718            let end_offset = offset + bytes_len;
10719            _next_ordinal_to_read += 1;
10720            if next_offset >= end_offset {
10721                return Ok(());
10722            }
10723
10724            // Decode unknown envelopes for gaps in ordinals.
10725            while _next_ordinal_to_read < 1 {
10726                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10727                _next_ordinal_to_read += 1;
10728                next_offset += envelope_size;
10729            }
10730
10731            let next_out_of_line = decoder.next_out_of_line();
10732            let handles_before = decoder.remaining_handles();
10733            if let Some((inlined, num_bytes, num_handles)) =
10734                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10735            {
10736                let member_inline_size =
10737                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10738                        decoder.context,
10739                    );
10740                if inlined != (member_inline_size <= 4) {
10741                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10742                }
10743                let inner_offset;
10744                let mut inner_depth = depth.clone();
10745                if inlined {
10746                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10747                    inner_offset = next_offset;
10748                } else {
10749                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10750                    inner_depth.increment()?;
10751                }
10752                let val_ref = self
10753                    .selected_bssid
10754                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10755                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
10756                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10757                {
10758                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10759                }
10760                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10761                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10762                }
10763            }
10764
10765            next_offset += envelope_size;
10766            _next_ordinal_to_read += 1;
10767            if next_offset >= end_offset {
10768                return Ok(());
10769            }
10770
10771            // Decode unknown envelopes for gaps in ordinals.
10772            while _next_ordinal_to_read < 2 {
10773                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10774                _next_ordinal_to_read += 1;
10775                next_offset += envelope_size;
10776            }
10777
10778            let next_out_of_line = decoder.next_out_of_line();
10779            let handles_before = decoder.remaining_handles();
10780            if let Some((inlined, num_bytes, num_handles)) =
10781                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10782            {
10783                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10784                if inlined != (member_inline_size <= 4) {
10785                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10786                }
10787                let inner_offset;
10788                let mut inner_depth = depth.clone();
10789                if inlined {
10790                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10791                    inner_offset = next_offset;
10792                } else {
10793                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10794                    inner_depth.increment()?;
10795                }
10796                let val_ref = self.status_code.get_or_insert_with(|| {
10797                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
10798                });
10799                fidl::decode!(
10800                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
10801                    D,
10802                    val_ref,
10803                    decoder,
10804                    inner_offset,
10805                    inner_depth
10806                )?;
10807                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10808                {
10809                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10810                }
10811                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10812                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10813                }
10814            }
10815
10816            next_offset += envelope_size;
10817            _next_ordinal_to_read += 1;
10818            if next_offset >= end_offset {
10819                return Ok(());
10820            }
10821
10822            // Decode unknown envelopes for gaps in ordinals.
10823            while _next_ordinal_to_read < 3 {
10824                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10825                _next_ordinal_to_read += 1;
10826                next_offset += envelope_size;
10827            }
10828
10829            let next_out_of_line = decoder.next_out_of_line();
10830            let handles_before = decoder.remaining_handles();
10831            if let Some((inlined, num_bytes, num_handles)) =
10832                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10833            {
10834                let member_inline_size =
10835                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10836                if inlined != (member_inline_size <= 4) {
10837                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10838                }
10839                let inner_offset;
10840                let mut inner_depth = depth.clone();
10841                if inlined {
10842                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10843                    inner_offset = next_offset;
10844                } else {
10845                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10846                    inner_depth.increment()?;
10847                }
10848                let val_ref = self
10849                    .original_association_maintained
10850                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
10851                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10852                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10853                {
10854                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10855                }
10856                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10857                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10858                }
10859            }
10860
10861            next_offset += envelope_size;
10862            _next_ordinal_to_read += 1;
10863            if next_offset >= end_offset {
10864                return Ok(());
10865            }
10866
10867            // Decode unknown envelopes for gaps in ordinals.
10868            while _next_ordinal_to_read < 4 {
10869                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10870                _next_ordinal_to_read += 1;
10871                next_offset += envelope_size;
10872            }
10873
10874            let next_out_of_line = decoder.next_out_of_line();
10875            let handles_before = decoder.remaining_handles();
10876            if let Some((inlined, num_bytes, num_handles)) =
10877                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10878            {
10879                let member_inline_size =
10880                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10881                if inlined != (member_inline_size <= 4) {
10882                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10883                }
10884                let inner_offset;
10885                let mut inner_depth = depth.clone();
10886                if inlined {
10887                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10888                    inner_offset = next_offset;
10889                } else {
10890                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10891                    inner_depth.increment()?;
10892                }
10893                let val_ref =
10894                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
10895                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10896                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10897                {
10898                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10899                }
10900                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10901                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10902                }
10903            }
10904
10905            next_offset += envelope_size;
10906            _next_ordinal_to_read += 1;
10907            if next_offset >= end_offset {
10908                return Ok(());
10909            }
10910
10911            // Decode unknown envelopes for gaps in ordinals.
10912            while _next_ordinal_to_read < 5 {
10913                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10914                _next_ordinal_to_read += 1;
10915                next_offset += envelope_size;
10916            }
10917
10918            let next_out_of_line = decoder.next_out_of_line();
10919            let handles_before = decoder.remaining_handles();
10920            if let Some((inlined, num_bytes, num_handles)) =
10921                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10922            {
10923                let member_inline_size =
10924                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10925                if inlined != (member_inline_size <= 4) {
10926                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10927                }
10928                let inner_offset;
10929                let mut inner_depth = depth.clone();
10930                if inlined {
10931                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10932                    inner_offset = next_offset;
10933                } else {
10934                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10935                    inner_depth.increment()?;
10936                }
10937                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10938                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10939                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10940                {
10941                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10942                }
10943                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10944                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10945                }
10946            }
10947
10948            next_offset += envelope_size;
10949            _next_ordinal_to_read += 1;
10950            if next_offset >= end_offset {
10951                return Ok(());
10952            }
10953
10954            // Decode unknown envelopes for gaps in ordinals.
10955            while _next_ordinal_to_read < 6 {
10956                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10957                _next_ordinal_to_read += 1;
10958                next_offset += envelope_size;
10959            }
10960
10961            let next_out_of_line = decoder.next_out_of_line();
10962            let handles_before = decoder.remaining_handles();
10963            if let Some((inlined, num_bytes, num_handles)) =
10964                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10965            {
10966                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10967                if inlined != (member_inline_size <= 4) {
10968                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10969                }
10970                let inner_offset;
10971                let mut inner_depth = depth.clone();
10972                if inlined {
10973                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10974                    inner_offset = next_offset;
10975                } else {
10976                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10977                    inner_depth.increment()?;
10978                }
10979                let val_ref = self.association_ies.get_or_insert_with(|| {
10980                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
10981                });
10982                fidl::decode!(
10983                    fidl::encoding::UnboundedVector<u8>,
10984                    D,
10985                    val_ref,
10986                    decoder,
10987                    inner_offset,
10988                    inner_depth
10989                )?;
10990                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10991                {
10992                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10993                }
10994                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10995                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10996                }
10997            }
10998
10999            next_offset += envelope_size;
11000
11001            // Decode the remaining unknown envelopes.
11002            while next_offset < end_offset {
11003                _next_ordinal_to_read += 1;
11004                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11005                next_offset += envelope_size;
11006            }
11007
11008            Ok(())
11009        }
11010    }
11011
11012    impl WlanFullmacImplIfcRoamStartIndRequest {
11013        #[inline(always)]
11014        fn max_ordinal_present(&self) -> u64 {
11015            if let Some(_) = self.original_association_maintained {
11016                return 3;
11017            }
11018            if let Some(_) = self.selected_bss {
11019                return 2;
11020            }
11021            if let Some(_) = self.selected_bssid {
11022                return 1;
11023            }
11024            0
11025        }
11026    }
11027
11028    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
11029        type Borrowed<'a> = &'a Self;
11030        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11031            value
11032        }
11033    }
11034
11035    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
11036        type Owned = Self;
11037
11038        #[inline(always)]
11039        fn inline_align(_context: fidl::encoding::Context) -> usize {
11040            8
11041        }
11042
11043        #[inline(always)]
11044        fn inline_size(_context: fidl::encoding::Context) -> usize {
11045            16
11046        }
11047    }
11048
11049    unsafe impl<D: fidl::encoding::ResourceDialect>
11050        fidl::encoding::Encode<WlanFullmacImplIfcRoamStartIndRequest, D>
11051        for &WlanFullmacImplIfcRoamStartIndRequest
11052    {
11053        unsafe fn encode(
11054            self,
11055            encoder: &mut fidl::encoding::Encoder<'_, D>,
11056            offset: usize,
11057            mut depth: fidl::encoding::Depth,
11058        ) -> fidl::Result<()> {
11059            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamStartIndRequest>(offset);
11060            // Vector header
11061            let max_ordinal: u64 = self.max_ordinal_present();
11062            encoder.write_num(max_ordinal, offset);
11063            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11064            // Calling encoder.out_of_line_offset(0) is not allowed.
11065            if max_ordinal == 0 {
11066                return Ok(());
11067            }
11068            depth.increment()?;
11069            let envelope_size = 8;
11070            let bytes_len = max_ordinal as usize * envelope_size;
11071            #[allow(unused_variables)]
11072            let offset = encoder.out_of_line_offset(bytes_len);
11073            let mut _prev_end_offset: usize = 0;
11074            if 1 > max_ordinal {
11075                return Ok(());
11076            }
11077
11078            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11079            // are envelope_size bytes.
11080            let cur_offset: usize = (1 - 1) * envelope_size;
11081
11082            // Zero reserved fields.
11083            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11084
11085            // Safety:
11086            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11087            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11088            //   envelope_size bytes, there is always sufficient room.
11089            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
11090                self.selected_bssid
11091                    .as_ref()
11092                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
11093                encoder,
11094                offset + cur_offset,
11095                depth,
11096            )?;
11097
11098            _prev_end_offset = cur_offset + envelope_size;
11099            if 2 > max_ordinal {
11100                return Ok(());
11101            }
11102
11103            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11104            // are envelope_size bytes.
11105            let cur_offset: usize = (2 - 1) * envelope_size;
11106
11107            // Zero reserved fields.
11108            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11109
11110            // Safety:
11111            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11112            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11113            //   envelope_size bytes, there is always sufficient room.
11114            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>(
11115            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
11116            encoder, offset + cur_offset, depth
11117        )?;
11118
11119            _prev_end_offset = cur_offset + envelope_size;
11120            if 3 > max_ordinal {
11121                return Ok(());
11122            }
11123
11124            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11125            // are envelope_size bytes.
11126            let cur_offset: usize = (3 - 1) * envelope_size;
11127
11128            // Zero reserved fields.
11129            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11130
11131            // Safety:
11132            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11133            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11134            //   envelope_size bytes, there is always sufficient room.
11135            fidl::encoding::encode_in_envelope_optional::<bool, D>(
11136                self.original_association_maintained
11137                    .as_ref()
11138                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
11139                encoder,
11140                offset + cur_offset,
11141                depth,
11142            )?;
11143
11144            _prev_end_offset = cur_offset + envelope_size;
11145
11146            Ok(())
11147        }
11148    }
11149
11150    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11151        for WlanFullmacImplIfcRoamStartIndRequest
11152    {
11153        #[inline(always)]
11154        fn new_empty() -> Self {
11155            Self::default()
11156        }
11157
11158        unsafe fn decode(
11159            &mut self,
11160            decoder: &mut fidl::encoding::Decoder<'_, D>,
11161            offset: usize,
11162            mut depth: fidl::encoding::Depth,
11163        ) -> fidl::Result<()> {
11164            decoder.debug_check_bounds::<Self>(offset);
11165            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11166                None => return Err(fidl::Error::NotNullable),
11167                Some(len) => len,
11168            };
11169            // Calling decoder.out_of_line_offset(0) is not allowed.
11170            if len == 0 {
11171                return Ok(());
11172            };
11173            depth.increment()?;
11174            let envelope_size = 8;
11175            let bytes_len = len * envelope_size;
11176            let offset = decoder.out_of_line_offset(bytes_len)?;
11177            // Decode the envelope for each type.
11178            let mut _next_ordinal_to_read = 0;
11179            let mut next_offset = offset;
11180            let end_offset = offset + bytes_len;
11181            _next_ordinal_to_read += 1;
11182            if next_offset >= end_offset {
11183                return Ok(());
11184            }
11185
11186            // Decode unknown envelopes for gaps in ordinals.
11187            while _next_ordinal_to_read < 1 {
11188                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11189                _next_ordinal_to_read += 1;
11190                next_offset += envelope_size;
11191            }
11192
11193            let next_out_of_line = decoder.next_out_of_line();
11194            let handles_before = decoder.remaining_handles();
11195            if let Some((inlined, num_bytes, num_handles)) =
11196                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11197            {
11198                let member_inline_size =
11199                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11200                        decoder.context,
11201                    );
11202                if inlined != (member_inline_size <= 4) {
11203                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11204                }
11205                let inner_offset;
11206                let mut inner_depth = depth.clone();
11207                if inlined {
11208                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11209                    inner_offset = next_offset;
11210                } else {
11211                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11212                    inner_depth.increment()?;
11213                }
11214                let val_ref = self
11215                    .selected_bssid
11216                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11217                fidl::decode!(fidl::encoding::Array<u8, 6>, 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            _next_ordinal_to_read += 1;
11229            if next_offset >= end_offset {
11230                return Ok(());
11231            }
11232
11233            // Decode unknown envelopes for gaps in ordinals.
11234            while _next_ordinal_to_read < 2 {
11235                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11236                _next_ordinal_to_read += 1;
11237                next_offset += envelope_size;
11238            }
11239
11240            let next_out_of_line = decoder.next_out_of_line();
11241            let handles_before = decoder.remaining_handles();
11242            if let Some((inlined, num_bytes, num_handles)) =
11243                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11244            {
11245                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11246                if inlined != (member_inline_size <= 4) {
11247                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11248                }
11249                let inner_offset;
11250                let mut inner_depth = depth.clone();
11251                if inlined {
11252                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11253                    inner_offset = next_offset;
11254                } else {
11255                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11256                    inner_depth.increment()?;
11257                }
11258                let val_ref = self.selected_bss.get_or_insert_with(|| {
11259                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D)
11260                });
11261                fidl::decode!(
11262                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
11263                    D,
11264                    val_ref,
11265                    decoder,
11266                    inner_offset,
11267                    inner_depth
11268                )?;
11269                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11270                {
11271                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11272                }
11273                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11274                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11275                }
11276            }
11277
11278            next_offset += envelope_size;
11279            _next_ordinal_to_read += 1;
11280            if next_offset >= end_offset {
11281                return Ok(());
11282            }
11283
11284            // Decode unknown envelopes for gaps in ordinals.
11285            while _next_ordinal_to_read < 3 {
11286                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11287                _next_ordinal_to_read += 1;
11288                next_offset += envelope_size;
11289            }
11290
11291            let next_out_of_line = decoder.next_out_of_line();
11292            let handles_before = decoder.remaining_handles();
11293            if let Some((inlined, num_bytes, num_handles)) =
11294                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11295            {
11296                let member_inline_size =
11297                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11298                if inlined != (member_inline_size <= 4) {
11299                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11300                }
11301                let inner_offset;
11302                let mut inner_depth = depth.clone();
11303                if inlined {
11304                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11305                    inner_offset = next_offset;
11306                } else {
11307                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11308                    inner_depth.increment()?;
11309                }
11310                let val_ref = self
11311                    .original_association_maintained
11312                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
11313                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11314                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11315                {
11316                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11317                }
11318                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11319                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11320                }
11321            }
11322
11323            next_offset += envelope_size;
11324
11325            // Decode the remaining unknown envelopes.
11326            while next_offset < end_offset {
11327                _next_ordinal_to_read += 1;
11328                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11329                next_offset += envelope_size;
11330            }
11331
11332            Ok(())
11333        }
11334    }
11335
11336    impl WlanFullmacImplIfcSaeHandshakeIndRequest {
11337        #[inline(always)]
11338        fn max_ordinal_present(&self) -> u64 {
11339            if let Some(_) = self.peer_sta_address {
11340                return 1;
11341            }
11342            0
11343        }
11344    }
11345
11346    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
11347        type Borrowed<'a> = &'a Self;
11348        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11349            value
11350        }
11351    }
11352
11353    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
11354        type Owned = Self;
11355
11356        #[inline(always)]
11357        fn inline_align(_context: fidl::encoding::Context) -> usize {
11358            8
11359        }
11360
11361        #[inline(always)]
11362        fn inline_size(_context: fidl::encoding::Context) -> usize {
11363            16
11364        }
11365    }
11366
11367    unsafe impl<D: fidl::encoding::ResourceDialect>
11368        fidl::encoding::Encode<WlanFullmacImplIfcSaeHandshakeIndRequest, D>
11369        for &WlanFullmacImplIfcSaeHandshakeIndRequest
11370    {
11371        unsafe fn encode(
11372            self,
11373            encoder: &mut fidl::encoding::Encoder<'_, D>,
11374            offset: usize,
11375            mut depth: fidl::encoding::Depth,
11376        ) -> fidl::Result<()> {
11377            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeHandshakeIndRequest>(offset);
11378            // Vector header
11379            let max_ordinal: u64 = self.max_ordinal_present();
11380            encoder.write_num(max_ordinal, offset);
11381            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11382            // Calling encoder.out_of_line_offset(0) is not allowed.
11383            if max_ordinal == 0 {
11384                return Ok(());
11385            }
11386            depth.increment()?;
11387            let envelope_size = 8;
11388            let bytes_len = max_ordinal as usize * envelope_size;
11389            #[allow(unused_variables)]
11390            let offset = encoder.out_of_line_offset(bytes_len);
11391            let mut _prev_end_offset: usize = 0;
11392            if 1 > max_ordinal {
11393                return Ok(());
11394            }
11395
11396            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11397            // are envelope_size bytes.
11398            let cur_offset: usize = (1 - 1) * envelope_size;
11399
11400            // Zero reserved fields.
11401            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11402
11403            // Safety:
11404            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11405            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11406            //   envelope_size bytes, there is always sufficient room.
11407            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
11408                self.peer_sta_address
11409                    .as_ref()
11410                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
11411                encoder,
11412                offset + cur_offset,
11413                depth,
11414            )?;
11415
11416            _prev_end_offset = cur_offset + envelope_size;
11417
11418            Ok(())
11419        }
11420    }
11421
11422    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11423        for WlanFullmacImplIfcSaeHandshakeIndRequest
11424    {
11425        #[inline(always)]
11426        fn new_empty() -> Self {
11427            Self::default()
11428        }
11429
11430        unsafe fn decode(
11431            &mut self,
11432            decoder: &mut fidl::encoding::Decoder<'_, D>,
11433            offset: usize,
11434            mut depth: fidl::encoding::Depth,
11435        ) -> fidl::Result<()> {
11436            decoder.debug_check_bounds::<Self>(offset);
11437            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11438                None => return Err(fidl::Error::NotNullable),
11439                Some(len) => len,
11440            };
11441            // Calling decoder.out_of_line_offset(0) is not allowed.
11442            if len == 0 {
11443                return Ok(());
11444            };
11445            depth.increment()?;
11446            let envelope_size = 8;
11447            let bytes_len = len * envelope_size;
11448            let offset = decoder.out_of_line_offset(bytes_len)?;
11449            // Decode the envelope for each type.
11450            let mut _next_ordinal_to_read = 0;
11451            let mut next_offset = offset;
11452            let end_offset = offset + bytes_len;
11453            _next_ordinal_to_read += 1;
11454            if next_offset >= end_offset {
11455                return Ok(());
11456            }
11457
11458            // Decode unknown envelopes for gaps in ordinals.
11459            while _next_ordinal_to_read < 1 {
11460                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11461                _next_ordinal_to_read += 1;
11462                next_offset += envelope_size;
11463            }
11464
11465            let next_out_of_line = decoder.next_out_of_line();
11466            let handles_before = decoder.remaining_handles();
11467            if let Some((inlined, num_bytes, num_handles)) =
11468                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11469            {
11470                let member_inline_size =
11471                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11472                        decoder.context,
11473                    );
11474                if inlined != (member_inline_size <= 4) {
11475                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11476                }
11477                let inner_offset;
11478                let mut inner_depth = depth.clone();
11479                if inlined {
11480                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11481                    inner_offset = next_offset;
11482                } else {
11483                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11484                    inner_depth.increment()?;
11485                }
11486                let val_ref = self
11487                    .peer_sta_address
11488                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11489                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
11490                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11491                {
11492                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11493                }
11494                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11495                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11496                }
11497            }
11498
11499            next_offset += envelope_size;
11500
11501            // Decode the remaining unknown envelopes.
11502            while next_offset < end_offset {
11503                _next_ordinal_to_read += 1;
11504                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11505                next_offset += envelope_size;
11506            }
11507
11508            Ok(())
11509        }
11510    }
11511
11512    impl WlanFullmacImplIfcStartConfRequest {
11513        #[inline(always)]
11514        fn max_ordinal_present(&self) -> u64 {
11515            if let Some(_) = self.result_code {
11516                return 1;
11517            }
11518            0
11519        }
11520    }
11521
11522    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStartConfRequest {
11523        type Borrowed<'a> = &'a Self;
11524        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11525            value
11526        }
11527    }
11528
11529    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStartConfRequest {
11530        type Owned = Self;
11531
11532        #[inline(always)]
11533        fn inline_align(_context: fidl::encoding::Context) -> usize {
11534            8
11535        }
11536
11537        #[inline(always)]
11538        fn inline_size(_context: fidl::encoding::Context) -> usize {
11539            16
11540        }
11541    }
11542
11543    unsafe impl<D: fidl::encoding::ResourceDialect>
11544        fidl::encoding::Encode<WlanFullmacImplIfcStartConfRequest, D>
11545        for &WlanFullmacImplIfcStartConfRequest
11546    {
11547        unsafe fn encode(
11548            self,
11549            encoder: &mut fidl::encoding::Encoder<'_, D>,
11550            offset: usize,
11551            mut depth: fidl::encoding::Depth,
11552        ) -> fidl::Result<()> {
11553            encoder.debug_check_bounds::<WlanFullmacImplIfcStartConfRequest>(offset);
11554            // Vector header
11555            let max_ordinal: u64 = self.max_ordinal_present();
11556            encoder.write_num(max_ordinal, offset);
11557            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11558            // Calling encoder.out_of_line_offset(0) is not allowed.
11559            if max_ordinal == 0 {
11560                return Ok(());
11561            }
11562            depth.increment()?;
11563            let envelope_size = 8;
11564            let bytes_len = max_ordinal as usize * envelope_size;
11565            #[allow(unused_variables)]
11566            let offset = encoder.out_of_line_offset(bytes_len);
11567            let mut _prev_end_offset: usize = 0;
11568            if 1 > max_ordinal {
11569                return Ok(());
11570            }
11571
11572            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11573            // are envelope_size bytes.
11574            let cur_offset: usize = (1 - 1) * envelope_size;
11575
11576            // Zero reserved fields.
11577            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11578
11579            // Safety:
11580            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11581            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11582            //   envelope_size bytes, there is always sufficient room.
11583            fidl::encoding::encode_in_envelope_optional::<StartResult, D>(
11584                self.result_code
11585                    .as_ref()
11586                    .map(<StartResult as fidl::encoding::ValueTypeMarker>::borrow),
11587                encoder,
11588                offset + cur_offset,
11589                depth,
11590            )?;
11591
11592            _prev_end_offset = cur_offset + envelope_size;
11593
11594            Ok(())
11595        }
11596    }
11597
11598    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11599        for WlanFullmacImplIfcStartConfRequest
11600    {
11601        #[inline(always)]
11602        fn new_empty() -> Self {
11603            Self::default()
11604        }
11605
11606        unsafe fn decode(
11607            &mut self,
11608            decoder: &mut fidl::encoding::Decoder<'_, D>,
11609            offset: usize,
11610            mut depth: fidl::encoding::Depth,
11611        ) -> fidl::Result<()> {
11612            decoder.debug_check_bounds::<Self>(offset);
11613            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11614                None => return Err(fidl::Error::NotNullable),
11615                Some(len) => len,
11616            };
11617            // Calling decoder.out_of_line_offset(0) is not allowed.
11618            if len == 0 {
11619                return Ok(());
11620            };
11621            depth.increment()?;
11622            let envelope_size = 8;
11623            let bytes_len = len * envelope_size;
11624            let offset = decoder.out_of_line_offset(bytes_len)?;
11625            // Decode the envelope for each type.
11626            let mut _next_ordinal_to_read = 0;
11627            let mut next_offset = offset;
11628            let end_offset = offset + bytes_len;
11629            _next_ordinal_to_read += 1;
11630            if next_offset >= end_offset {
11631                return Ok(());
11632            }
11633
11634            // Decode unknown envelopes for gaps in ordinals.
11635            while _next_ordinal_to_read < 1 {
11636                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11637                _next_ordinal_to_read += 1;
11638                next_offset += envelope_size;
11639            }
11640
11641            let next_out_of_line = decoder.next_out_of_line();
11642            let handles_before = decoder.remaining_handles();
11643            if let Some((inlined, num_bytes, num_handles)) =
11644                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11645            {
11646                let member_inline_size =
11647                    <StartResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11648                if inlined != (member_inline_size <= 4) {
11649                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11650                }
11651                let inner_offset;
11652                let mut inner_depth = depth.clone();
11653                if inlined {
11654                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11655                    inner_offset = next_offset;
11656                } else {
11657                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11658                    inner_depth.increment()?;
11659                }
11660                let val_ref =
11661                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StartResult, D));
11662                fidl::decode!(StartResult, D, val_ref, decoder, inner_offset, inner_depth)?;
11663                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11664                {
11665                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11666                }
11667                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11668                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11669                }
11670            }
11671
11672            next_offset += envelope_size;
11673
11674            // Decode the remaining unknown envelopes.
11675            while next_offset < end_offset {
11676                _next_ordinal_to_read += 1;
11677                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11678                next_offset += envelope_size;
11679            }
11680
11681            Ok(())
11682        }
11683    }
11684
11685    impl WlanFullmacImplIfcStopConfRequest {
11686        #[inline(always)]
11687        fn max_ordinal_present(&self) -> u64 {
11688            if let Some(_) = self.result_code {
11689                return 1;
11690            }
11691            0
11692        }
11693    }
11694
11695    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStopConfRequest {
11696        type Borrowed<'a> = &'a Self;
11697        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11698            value
11699        }
11700    }
11701
11702    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStopConfRequest {
11703        type Owned = Self;
11704
11705        #[inline(always)]
11706        fn inline_align(_context: fidl::encoding::Context) -> usize {
11707            8
11708        }
11709
11710        #[inline(always)]
11711        fn inline_size(_context: fidl::encoding::Context) -> usize {
11712            16
11713        }
11714    }
11715
11716    unsafe impl<D: fidl::encoding::ResourceDialect>
11717        fidl::encoding::Encode<WlanFullmacImplIfcStopConfRequest, D>
11718        for &WlanFullmacImplIfcStopConfRequest
11719    {
11720        unsafe fn encode(
11721            self,
11722            encoder: &mut fidl::encoding::Encoder<'_, D>,
11723            offset: usize,
11724            mut depth: fidl::encoding::Depth,
11725        ) -> fidl::Result<()> {
11726            encoder.debug_check_bounds::<WlanFullmacImplIfcStopConfRequest>(offset);
11727            // Vector header
11728            let max_ordinal: u64 = self.max_ordinal_present();
11729            encoder.write_num(max_ordinal, offset);
11730            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11731            // Calling encoder.out_of_line_offset(0) is not allowed.
11732            if max_ordinal == 0 {
11733                return Ok(());
11734            }
11735            depth.increment()?;
11736            let envelope_size = 8;
11737            let bytes_len = max_ordinal as usize * envelope_size;
11738            #[allow(unused_variables)]
11739            let offset = encoder.out_of_line_offset(bytes_len);
11740            let mut _prev_end_offset: usize = 0;
11741            if 1 > max_ordinal {
11742                return Ok(());
11743            }
11744
11745            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11746            // are envelope_size bytes.
11747            let cur_offset: usize = (1 - 1) * envelope_size;
11748
11749            // Zero reserved fields.
11750            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11751
11752            // Safety:
11753            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11754            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11755            //   envelope_size bytes, there is always sufficient room.
11756            fidl::encoding::encode_in_envelope_optional::<StopResult, D>(
11757                self.result_code
11758                    .as_ref()
11759                    .map(<StopResult as fidl::encoding::ValueTypeMarker>::borrow),
11760                encoder,
11761                offset + cur_offset,
11762                depth,
11763            )?;
11764
11765            _prev_end_offset = cur_offset + envelope_size;
11766
11767            Ok(())
11768        }
11769    }
11770
11771    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11772        for WlanFullmacImplIfcStopConfRequest
11773    {
11774        #[inline(always)]
11775        fn new_empty() -> Self {
11776            Self::default()
11777        }
11778
11779        unsafe fn decode(
11780            &mut self,
11781            decoder: &mut fidl::encoding::Decoder<'_, D>,
11782            offset: usize,
11783            mut depth: fidl::encoding::Depth,
11784        ) -> fidl::Result<()> {
11785            decoder.debug_check_bounds::<Self>(offset);
11786            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11787                None => return Err(fidl::Error::NotNullable),
11788                Some(len) => len,
11789            };
11790            // Calling decoder.out_of_line_offset(0) is not allowed.
11791            if len == 0 {
11792                return Ok(());
11793            };
11794            depth.increment()?;
11795            let envelope_size = 8;
11796            let bytes_len = len * envelope_size;
11797            let offset = decoder.out_of_line_offset(bytes_len)?;
11798            // Decode the envelope for each type.
11799            let mut _next_ordinal_to_read = 0;
11800            let mut next_offset = offset;
11801            let end_offset = offset + bytes_len;
11802            _next_ordinal_to_read += 1;
11803            if next_offset >= end_offset {
11804                return Ok(());
11805            }
11806
11807            // Decode unknown envelopes for gaps in ordinals.
11808            while _next_ordinal_to_read < 1 {
11809                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11810                _next_ordinal_to_read += 1;
11811                next_offset += envelope_size;
11812            }
11813
11814            let next_out_of_line = decoder.next_out_of_line();
11815            let handles_before = decoder.remaining_handles();
11816            if let Some((inlined, num_bytes, num_handles)) =
11817                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11818            {
11819                let member_inline_size =
11820                    <StopResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11821                if inlined != (member_inline_size <= 4) {
11822                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11823                }
11824                let inner_offset;
11825                let mut inner_depth = depth.clone();
11826                if inlined {
11827                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11828                    inner_offset = next_offset;
11829                } else {
11830                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11831                    inner_depth.increment()?;
11832                }
11833                let val_ref =
11834                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StopResult, D));
11835                fidl::decode!(StopResult, D, val_ref, decoder, inner_offset, inner_depth)?;
11836                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11837                {
11838                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11839                }
11840                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11841                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11842                }
11843            }
11844
11845            next_offset += envelope_size;
11846
11847            // Decode the remaining unknown envelopes.
11848            while next_offset < end_offset {
11849                _next_ordinal_to_read += 1;
11850                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11851                next_offset += envelope_size;
11852            }
11853
11854            Ok(())
11855        }
11856    }
11857
11858    impl WlanFullmacImplInstallApfPacketFilterRequest {
11859        #[inline(always)]
11860        fn max_ordinal_present(&self) -> u64 {
11861            if let Some(_) = self.program {
11862                return 1;
11863            }
11864            0
11865        }
11866    }
11867
11868    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplInstallApfPacketFilterRequest {
11869        type Borrowed<'a> = &'a Self;
11870        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11871            value
11872        }
11873    }
11874
11875    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplInstallApfPacketFilterRequest {
11876        type Owned = Self;
11877
11878        #[inline(always)]
11879        fn inline_align(_context: fidl::encoding::Context) -> usize {
11880            8
11881        }
11882
11883        #[inline(always)]
11884        fn inline_size(_context: fidl::encoding::Context) -> usize {
11885            16
11886        }
11887    }
11888
11889    unsafe impl<D: fidl::encoding::ResourceDialect>
11890        fidl::encoding::Encode<WlanFullmacImplInstallApfPacketFilterRequest, D>
11891        for &WlanFullmacImplInstallApfPacketFilterRequest
11892    {
11893        unsafe fn encode(
11894            self,
11895            encoder: &mut fidl::encoding::Encoder<'_, D>,
11896            offset: usize,
11897            mut depth: fidl::encoding::Depth,
11898        ) -> fidl::Result<()> {
11899            encoder.debug_check_bounds::<WlanFullmacImplInstallApfPacketFilterRequest>(offset);
11900            // Vector header
11901            let max_ordinal: u64 = self.max_ordinal_present();
11902            encoder.write_num(max_ordinal, offset);
11903            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11904            // Calling encoder.out_of_line_offset(0) is not allowed.
11905            if max_ordinal == 0 {
11906                return Ok(());
11907            }
11908            depth.increment()?;
11909            let envelope_size = 8;
11910            let bytes_len = max_ordinal as usize * envelope_size;
11911            #[allow(unused_variables)]
11912            let offset = encoder.out_of_line_offset(bytes_len);
11913            let mut _prev_end_offset: usize = 0;
11914            if 1 > max_ordinal {
11915                return Ok(());
11916            }
11917
11918            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11919            // are envelope_size bytes.
11920            let cur_offset: usize = (1 - 1) * envelope_size;
11921
11922            // Zero reserved fields.
11923            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11924
11925            // Safety:
11926            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11927            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11928            //   envelope_size bytes, there is always sufficient room.
11929            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
11930            self.program.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
11931            encoder, offset + cur_offset, depth
11932        )?;
11933
11934            _prev_end_offset = cur_offset + envelope_size;
11935
11936            Ok(())
11937        }
11938    }
11939
11940    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11941        for WlanFullmacImplInstallApfPacketFilterRequest
11942    {
11943        #[inline(always)]
11944        fn new_empty() -> Self {
11945            Self::default()
11946        }
11947
11948        unsafe fn decode(
11949            &mut self,
11950            decoder: &mut fidl::encoding::Decoder<'_, D>,
11951            offset: usize,
11952            mut depth: fidl::encoding::Depth,
11953        ) -> fidl::Result<()> {
11954            decoder.debug_check_bounds::<Self>(offset);
11955            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11956                None => return Err(fidl::Error::NotNullable),
11957                Some(len) => len,
11958            };
11959            // Calling decoder.out_of_line_offset(0) is not allowed.
11960            if len == 0 {
11961                return Ok(());
11962            };
11963            depth.increment()?;
11964            let envelope_size = 8;
11965            let bytes_len = len * envelope_size;
11966            let offset = decoder.out_of_line_offset(bytes_len)?;
11967            // Decode the envelope for each type.
11968            let mut _next_ordinal_to_read = 0;
11969            let mut next_offset = offset;
11970            let end_offset = offset + bytes_len;
11971            _next_ordinal_to_read += 1;
11972            if next_offset >= end_offset {
11973                return Ok(());
11974            }
11975
11976            // Decode unknown envelopes for gaps in ordinals.
11977            while _next_ordinal_to_read < 1 {
11978                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11979                _next_ordinal_to_read += 1;
11980                next_offset += envelope_size;
11981            }
11982
11983            let next_out_of_line = decoder.next_out_of_line();
11984            let handles_before = decoder.remaining_handles();
11985            if let Some((inlined, num_bytes, num_handles)) =
11986                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11987            {
11988                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11989                if inlined != (member_inline_size <= 4) {
11990                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11991                }
11992                let inner_offset;
11993                let mut inner_depth = depth.clone();
11994                if inlined {
11995                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11996                    inner_offset = next_offset;
11997                } else {
11998                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11999                    inner_depth.increment()?;
12000                }
12001                let val_ref = self.program.get_or_insert_with(|| {
12002                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
12003                });
12004                fidl::decode!(
12005                    fidl::encoding::UnboundedVector<u8>,
12006                    D,
12007                    val_ref,
12008                    decoder,
12009                    inner_offset,
12010                    inner_depth
12011                )?;
12012                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12013                {
12014                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12015                }
12016                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12017                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12018                }
12019            }
12020
12021            next_offset += envelope_size;
12022
12023            // Decode the remaining unknown envelopes.
12024            while next_offset < end_offset {
12025                _next_ordinal_to_read += 1;
12026                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12027                next_offset += envelope_size;
12028            }
12029
12030            Ok(())
12031        }
12032    }
12033
12034    impl WlanFullmacImplOnLinkStateChangedRequest {
12035        #[inline(always)]
12036        fn max_ordinal_present(&self) -> u64 {
12037            if let Some(_) = self.online {
12038                return 1;
12039            }
12040            0
12041        }
12042    }
12043
12044    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
12045        type Borrowed<'a> = &'a Self;
12046        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12047            value
12048        }
12049    }
12050
12051    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
12052        type Owned = Self;
12053
12054        #[inline(always)]
12055        fn inline_align(_context: fidl::encoding::Context) -> usize {
12056            8
12057        }
12058
12059        #[inline(always)]
12060        fn inline_size(_context: fidl::encoding::Context) -> usize {
12061            16
12062        }
12063    }
12064
12065    unsafe impl<D: fidl::encoding::ResourceDialect>
12066        fidl::encoding::Encode<WlanFullmacImplOnLinkStateChangedRequest, D>
12067        for &WlanFullmacImplOnLinkStateChangedRequest
12068    {
12069        unsafe fn encode(
12070            self,
12071            encoder: &mut fidl::encoding::Encoder<'_, D>,
12072            offset: usize,
12073            mut depth: fidl::encoding::Depth,
12074        ) -> fidl::Result<()> {
12075            encoder.debug_check_bounds::<WlanFullmacImplOnLinkStateChangedRequest>(offset);
12076            // Vector header
12077            let max_ordinal: u64 = self.max_ordinal_present();
12078            encoder.write_num(max_ordinal, offset);
12079            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12080            // Calling encoder.out_of_line_offset(0) is not allowed.
12081            if max_ordinal == 0 {
12082                return Ok(());
12083            }
12084            depth.increment()?;
12085            let envelope_size = 8;
12086            let bytes_len = max_ordinal as usize * envelope_size;
12087            #[allow(unused_variables)]
12088            let offset = encoder.out_of_line_offset(bytes_len);
12089            let mut _prev_end_offset: usize = 0;
12090            if 1 > max_ordinal {
12091                return Ok(());
12092            }
12093
12094            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12095            // are envelope_size bytes.
12096            let cur_offset: usize = (1 - 1) * envelope_size;
12097
12098            // Zero reserved fields.
12099            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12100
12101            // Safety:
12102            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12103            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12104            //   envelope_size bytes, there is always sufficient room.
12105            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12106                self.online.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12107                encoder,
12108                offset + cur_offset,
12109                depth,
12110            )?;
12111
12112            _prev_end_offset = cur_offset + envelope_size;
12113
12114            Ok(())
12115        }
12116    }
12117
12118    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12119        for WlanFullmacImplOnLinkStateChangedRequest
12120    {
12121        #[inline(always)]
12122        fn new_empty() -> Self {
12123            Self::default()
12124        }
12125
12126        unsafe fn decode(
12127            &mut self,
12128            decoder: &mut fidl::encoding::Decoder<'_, D>,
12129            offset: usize,
12130            mut depth: fidl::encoding::Depth,
12131        ) -> fidl::Result<()> {
12132            decoder.debug_check_bounds::<Self>(offset);
12133            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12134                None => return Err(fidl::Error::NotNullable),
12135                Some(len) => len,
12136            };
12137            // Calling decoder.out_of_line_offset(0) is not allowed.
12138            if len == 0 {
12139                return Ok(());
12140            };
12141            depth.increment()?;
12142            let envelope_size = 8;
12143            let bytes_len = len * envelope_size;
12144            let offset = decoder.out_of_line_offset(bytes_len)?;
12145            // Decode the envelope for each type.
12146            let mut _next_ordinal_to_read = 0;
12147            let mut next_offset = offset;
12148            let end_offset = offset + bytes_len;
12149            _next_ordinal_to_read += 1;
12150            if next_offset >= end_offset {
12151                return Ok(());
12152            }
12153
12154            // Decode unknown envelopes for gaps in ordinals.
12155            while _next_ordinal_to_read < 1 {
12156                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12157                _next_ordinal_to_read += 1;
12158                next_offset += envelope_size;
12159            }
12160
12161            let next_out_of_line = decoder.next_out_of_line();
12162            let handles_before = decoder.remaining_handles();
12163            if let Some((inlined, num_bytes, num_handles)) =
12164                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12165            {
12166                let member_inline_size =
12167                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12168                if inlined != (member_inline_size <= 4) {
12169                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12170                }
12171                let inner_offset;
12172                let mut inner_depth = depth.clone();
12173                if inlined {
12174                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12175                    inner_offset = next_offset;
12176                } else {
12177                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12178                    inner_depth.increment()?;
12179                }
12180                let val_ref = self.online.get_or_insert_with(|| fidl::new_empty!(bool, D));
12181                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12182                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12183                {
12184                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12185                }
12186                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12187                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12188                }
12189            }
12190
12191            next_offset += envelope_size;
12192
12193            // Decode the remaining unknown envelopes.
12194            while next_offset < end_offset {
12195                _next_ordinal_to_read += 1;
12196                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12197                next_offset += envelope_size;
12198            }
12199
12200            Ok(())
12201        }
12202    }
12203
12204    impl WlanFullmacImplReconnectRequest {
12205        #[inline(always)]
12206        fn max_ordinal_present(&self) -> u64 {
12207            if let Some(_) = self.peer_sta_address {
12208                return 1;
12209            }
12210            0
12211        }
12212    }
12213
12214    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplReconnectRequest {
12215        type Borrowed<'a> = &'a Self;
12216        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12217            value
12218        }
12219    }
12220
12221    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplReconnectRequest {
12222        type Owned = Self;
12223
12224        #[inline(always)]
12225        fn inline_align(_context: fidl::encoding::Context) -> usize {
12226            8
12227        }
12228
12229        #[inline(always)]
12230        fn inline_size(_context: fidl::encoding::Context) -> usize {
12231            16
12232        }
12233    }
12234
12235    unsafe impl<D: fidl::encoding::ResourceDialect>
12236        fidl::encoding::Encode<WlanFullmacImplReconnectRequest, D>
12237        for &WlanFullmacImplReconnectRequest
12238    {
12239        unsafe fn encode(
12240            self,
12241            encoder: &mut fidl::encoding::Encoder<'_, D>,
12242            offset: usize,
12243            mut depth: fidl::encoding::Depth,
12244        ) -> fidl::Result<()> {
12245            encoder.debug_check_bounds::<WlanFullmacImplReconnectRequest>(offset);
12246            // Vector header
12247            let max_ordinal: u64 = self.max_ordinal_present();
12248            encoder.write_num(max_ordinal, offset);
12249            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12250            // Calling encoder.out_of_line_offset(0) is not allowed.
12251            if max_ordinal == 0 {
12252                return Ok(());
12253            }
12254            depth.increment()?;
12255            let envelope_size = 8;
12256            let bytes_len = max_ordinal as usize * envelope_size;
12257            #[allow(unused_variables)]
12258            let offset = encoder.out_of_line_offset(bytes_len);
12259            let mut _prev_end_offset: usize = 0;
12260            if 1 > max_ordinal {
12261                return Ok(());
12262            }
12263
12264            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12265            // are envelope_size bytes.
12266            let cur_offset: usize = (1 - 1) * envelope_size;
12267
12268            // Zero reserved fields.
12269            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12270
12271            // Safety:
12272            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12273            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12274            //   envelope_size bytes, there is always sufficient room.
12275            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
12276                self.peer_sta_address
12277                    .as_ref()
12278                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
12279                encoder,
12280                offset + cur_offset,
12281                depth,
12282            )?;
12283
12284            _prev_end_offset = cur_offset + envelope_size;
12285
12286            Ok(())
12287        }
12288    }
12289
12290    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12291        for WlanFullmacImplReconnectRequest
12292    {
12293        #[inline(always)]
12294        fn new_empty() -> Self {
12295            Self::default()
12296        }
12297
12298        unsafe fn decode(
12299            &mut self,
12300            decoder: &mut fidl::encoding::Decoder<'_, D>,
12301            offset: usize,
12302            mut depth: fidl::encoding::Depth,
12303        ) -> fidl::Result<()> {
12304            decoder.debug_check_bounds::<Self>(offset);
12305            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12306                None => return Err(fidl::Error::NotNullable),
12307                Some(len) => len,
12308            };
12309            // Calling decoder.out_of_line_offset(0) is not allowed.
12310            if len == 0 {
12311                return Ok(());
12312            };
12313            depth.increment()?;
12314            let envelope_size = 8;
12315            let bytes_len = len * envelope_size;
12316            let offset = decoder.out_of_line_offset(bytes_len)?;
12317            // Decode the envelope for each type.
12318            let mut _next_ordinal_to_read = 0;
12319            let mut next_offset = offset;
12320            let end_offset = offset + bytes_len;
12321            _next_ordinal_to_read += 1;
12322            if next_offset >= end_offset {
12323                return Ok(());
12324            }
12325
12326            // Decode unknown envelopes for gaps in ordinals.
12327            while _next_ordinal_to_read < 1 {
12328                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12329                _next_ordinal_to_read += 1;
12330                next_offset += envelope_size;
12331            }
12332
12333            let next_out_of_line = decoder.next_out_of_line();
12334            let handles_before = decoder.remaining_handles();
12335            if let Some((inlined, num_bytes, num_handles)) =
12336                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12337            {
12338                let member_inline_size =
12339                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
12340                        decoder.context,
12341                    );
12342                if inlined != (member_inline_size <= 4) {
12343                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12344                }
12345                let inner_offset;
12346                let mut inner_depth = depth.clone();
12347                if inlined {
12348                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12349                    inner_offset = next_offset;
12350                } else {
12351                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12352                    inner_depth.increment()?;
12353                }
12354                let val_ref = self
12355                    .peer_sta_address
12356                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
12357                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
12358                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12359                {
12360                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12361                }
12362                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12363                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12364                }
12365            }
12366
12367            next_offset += envelope_size;
12368
12369            // Decode the remaining unknown envelopes.
12370            while next_offset < end_offset {
12371                _next_ordinal_to_read += 1;
12372                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12373                next_offset += envelope_size;
12374            }
12375
12376            Ok(())
12377        }
12378    }
12379
12380    impl WlanFullmacImplRoamRequest {
12381        #[inline(always)]
12382        fn max_ordinal_present(&self) -> u64 {
12383            if let Some(_) = self.selected_bss {
12384                return 1;
12385            }
12386            0
12387        }
12388    }
12389
12390    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplRoamRequest {
12391        type Borrowed<'a> = &'a Self;
12392        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12393            value
12394        }
12395    }
12396
12397    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplRoamRequest {
12398        type Owned = Self;
12399
12400        #[inline(always)]
12401        fn inline_align(_context: fidl::encoding::Context) -> usize {
12402            8
12403        }
12404
12405        #[inline(always)]
12406        fn inline_size(_context: fidl::encoding::Context) -> usize {
12407            16
12408        }
12409    }
12410
12411    unsafe impl<D: fidl::encoding::ResourceDialect>
12412        fidl::encoding::Encode<WlanFullmacImplRoamRequest, D> for &WlanFullmacImplRoamRequest
12413    {
12414        unsafe fn encode(
12415            self,
12416            encoder: &mut fidl::encoding::Encoder<'_, D>,
12417            offset: usize,
12418            mut depth: fidl::encoding::Depth,
12419        ) -> fidl::Result<()> {
12420            encoder.debug_check_bounds::<WlanFullmacImplRoamRequest>(offset);
12421            // Vector header
12422            let max_ordinal: u64 = self.max_ordinal_present();
12423            encoder.write_num(max_ordinal, offset);
12424            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12425            // Calling encoder.out_of_line_offset(0) is not allowed.
12426            if max_ordinal == 0 {
12427                return Ok(());
12428            }
12429            depth.increment()?;
12430            let envelope_size = 8;
12431            let bytes_len = max_ordinal as usize * envelope_size;
12432            #[allow(unused_variables)]
12433            let offset = encoder.out_of_line_offset(bytes_len);
12434            let mut _prev_end_offset: usize = 0;
12435            if 1 > max_ordinal {
12436                return Ok(());
12437            }
12438
12439            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12440            // are envelope_size bytes.
12441            let cur_offset: usize = (1 - 1) * envelope_size;
12442
12443            // Zero reserved fields.
12444            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12445
12446            // Safety:
12447            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12448            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12449            //   envelope_size bytes, there is always sufficient room.
12450            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>(
12451            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
12452            encoder, offset + cur_offset, depth
12453        )?;
12454
12455            _prev_end_offset = cur_offset + envelope_size;
12456
12457            Ok(())
12458        }
12459    }
12460
12461    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12462        for WlanFullmacImplRoamRequest
12463    {
12464        #[inline(always)]
12465        fn new_empty() -> Self {
12466            Self::default()
12467        }
12468
12469        unsafe fn decode(
12470            &mut self,
12471            decoder: &mut fidl::encoding::Decoder<'_, D>,
12472            offset: usize,
12473            mut depth: fidl::encoding::Depth,
12474        ) -> fidl::Result<()> {
12475            decoder.debug_check_bounds::<Self>(offset);
12476            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12477                None => return Err(fidl::Error::NotNullable),
12478                Some(len) => len,
12479            };
12480            // Calling decoder.out_of_line_offset(0) is not allowed.
12481            if len == 0 {
12482                return Ok(());
12483            };
12484            depth.increment()?;
12485            let envelope_size = 8;
12486            let bytes_len = len * envelope_size;
12487            let offset = decoder.out_of_line_offset(bytes_len)?;
12488            // Decode the envelope for each type.
12489            let mut _next_ordinal_to_read = 0;
12490            let mut next_offset = offset;
12491            let end_offset = offset + bytes_len;
12492            _next_ordinal_to_read += 1;
12493            if next_offset >= end_offset {
12494                return Ok(());
12495            }
12496
12497            // Decode unknown envelopes for gaps in ordinals.
12498            while _next_ordinal_to_read < 1 {
12499                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12500                _next_ordinal_to_read += 1;
12501                next_offset += envelope_size;
12502            }
12503
12504            let next_out_of_line = decoder.next_out_of_line();
12505            let handles_before = decoder.remaining_handles();
12506            if let Some((inlined, num_bytes, num_handles)) =
12507                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12508            {
12509                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12510                if inlined != (member_inline_size <= 4) {
12511                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12512                }
12513                let inner_offset;
12514                let mut inner_depth = depth.clone();
12515                if inlined {
12516                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12517                    inner_offset = next_offset;
12518                } else {
12519                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12520                    inner_depth.increment()?;
12521                }
12522                let val_ref = self.selected_bss.get_or_insert_with(|| {
12523                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D)
12524                });
12525                fidl::decode!(
12526                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
12527                    D,
12528                    val_ref,
12529                    decoder,
12530                    inner_offset,
12531                    inner_depth
12532                )?;
12533                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12534                {
12535                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12536                }
12537                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12538                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12539                }
12540            }
12541
12542            next_offset += envelope_size;
12543
12544            // Decode the remaining unknown envelopes.
12545            while next_offset < end_offset {
12546                _next_ordinal_to_read += 1;
12547                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12548                next_offset += envelope_size;
12549            }
12550
12551            Ok(())
12552        }
12553    }
12554
12555    impl WlanFullmacImplSaeHandshakeRespRequest {
12556        #[inline(always)]
12557        fn max_ordinal_present(&self) -> u64 {
12558            if let Some(_) = self.status_code {
12559                return 2;
12560            }
12561            if let Some(_) = self.peer_sta_address {
12562                return 1;
12563            }
12564            0
12565        }
12566    }
12567
12568    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
12569        type Borrowed<'a> = &'a Self;
12570        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12571            value
12572        }
12573    }
12574
12575    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
12576        type Owned = Self;
12577
12578        #[inline(always)]
12579        fn inline_align(_context: fidl::encoding::Context) -> usize {
12580            8
12581        }
12582
12583        #[inline(always)]
12584        fn inline_size(_context: fidl::encoding::Context) -> usize {
12585            16
12586        }
12587    }
12588
12589    unsafe impl<D: fidl::encoding::ResourceDialect>
12590        fidl::encoding::Encode<WlanFullmacImplSaeHandshakeRespRequest, D>
12591        for &WlanFullmacImplSaeHandshakeRespRequest
12592    {
12593        unsafe fn encode(
12594            self,
12595            encoder: &mut fidl::encoding::Encoder<'_, D>,
12596            offset: usize,
12597            mut depth: fidl::encoding::Depth,
12598        ) -> fidl::Result<()> {
12599            encoder.debug_check_bounds::<WlanFullmacImplSaeHandshakeRespRequest>(offset);
12600            // Vector header
12601            let max_ordinal: u64 = self.max_ordinal_present();
12602            encoder.write_num(max_ordinal, offset);
12603            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12604            // Calling encoder.out_of_line_offset(0) is not allowed.
12605            if max_ordinal == 0 {
12606                return Ok(());
12607            }
12608            depth.increment()?;
12609            let envelope_size = 8;
12610            let bytes_len = max_ordinal as usize * envelope_size;
12611            #[allow(unused_variables)]
12612            let offset = encoder.out_of_line_offset(bytes_len);
12613            let mut _prev_end_offset: usize = 0;
12614            if 1 > max_ordinal {
12615                return Ok(());
12616            }
12617
12618            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12619            // are envelope_size bytes.
12620            let cur_offset: usize = (1 - 1) * envelope_size;
12621
12622            // Zero reserved fields.
12623            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12624
12625            // Safety:
12626            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12627            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12628            //   envelope_size bytes, there is always sufficient room.
12629            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
12630                self.peer_sta_address
12631                    .as_ref()
12632                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
12633                encoder,
12634                offset + cur_offset,
12635                depth,
12636            )?;
12637
12638            _prev_end_offset = cur_offset + envelope_size;
12639            if 2 > max_ordinal {
12640                return Ok(());
12641            }
12642
12643            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12644            // are envelope_size bytes.
12645            let cur_offset: usize = (2 - 1) * envelope_size;
12646
12647            // Zero reserved fields.
12648            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12649
12650            // Safety:
12651            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12652            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12653            //   envelope_size bytes, there is always sufficient room.
12654            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
12655            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
12656            encoder, offset + cur_offset, depth
12657        )?;
12658
12659            _prev_end_offset = cur_offset + envelope_size;
12660
12661            Ok(())
12662        }
12663    }
12664
12665    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12666        for WlanFullmacImplSaeHandshakeRespRequest
12667    {
12668        #[inline(always)]
12669        fn new_empty() -> Self {
12670            Self::default()
12671        }
12672
12673        unsafe fn decode(
12674            &mut self,
12675            decoder: &mut fidl::encoding::Decoder<'_, D>,
12676            offset: usize,
12677            mut depth: fidl::encoding::Depth,
12678        ) -> fidl::Result<()> {
12679            decoder.debug_check_bounds::<Self>(offset);
12680            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12681                None => return Err(fidl::Error::NotNullable),
12682                Some(len) => len,
12683            };
12684            // Calling decoder.out_of_line_offset(0) is not allowed.
12685            if len == 0 {
12686                return Ok(());
12687            };
12688            depth.increment()?;
12689            let envelope_size = 8;
12690            let bytes_len = len * envelope_size;
12691            let offset = decoder.out_of_line_offset(bytes_len)?;
12692            // Decode the envelope for each type.
12693            let mut _next_ordinal_to_read = 0;
12694            let mut next_offset = offset;
12695            let end_offset = offset + bytes_len;
12696            _next_ordinal_to_read += 1;
12697            if next_offset >= end_offset {
12698                return Ok(());
12699            }
12700
12701            // Decode unknown envelopes for gaps in ordinals.
12702            while _next_ordinal_to_read < 1 {
12703                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12704                _next_ordinal_to_read += 1;
12705                next_offset += envelope_size;
12706            }
12707
12708            let next_out_of_line = decoder.next_out_of_line();
12709            let handles_before = decoder.remaining_handles();
12710            if let Some((inlined, num_bytes, num_handles)) =
12711                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12712            {
12713                let member_inline_size =
12714                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
12715                        decoder.context,
12716                    );
12717                if inlined != (member_inline_size <= 4) {
12718                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12719                }
12720                let inner_offset;
12721                let mut inner_depth = depth.clone();
12722                if inlined {
12723                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12724                    inner_offset = next_offset;
12725                } else {
12726                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12727                    inner_depth.increment()?;
12728                }
12729                let val_ref = self
12730                    .peer_sta_address
12731                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
12732                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
12733                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12734                {
12735                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12736                }
12737                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12738                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12739                }
12740            }
12741
12742            next_offset += envelope_size;
12743            _next_ordinal_to_read += 1;
12744            if next_offset >= end_offset {
12745                return Ok(());
12746            }
12747
12748            // Decode unknown envelopes for gaps in ordinals.
12749            while _next_ordinal_to_read < 2 {
12750                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12751                _next_ordinal_to_read += 1;
12752                next_offset += envelope_size;
12753            }
12754
12755            let next_out_of_line = decoder.next_out_of_line();
12756            let handles_before = decoder.remaining_handles();
12757            if let Some((inlined, num_bytes, num_handles)) =
12758                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12759            {
12760                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12761                if inlined != (member_inline_size <= 4) {
12762                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12763                }
12764                let inner_offset;
12765                let mut inner_depth = depth.clone();
12766                if inlined {
12767                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12768                    inner_offset = next_offset;
12769                } else {
12770                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12771                    inner_depth.increment()?;
12772                }
12773                let val_ref = self.status_code.get_or_insert_with(|| {
12774                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
12775                });
12776                fidl::decode!(
12777                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
12778                    D,
12779                    val_ref,
12780                    decoder,
12781                    inner_offset,
12782                    inner_depth
12783                )?;
12784                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12785                {
12786                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12787                }
12788                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12789                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12790                }
12791            }
12792
12793            next_offset += envelope_size;
12794
12795            // Decode the remaining unknown envelopes.
12796            while next_offset < end_offset {
12797                _next_ordinal_to_read += 1;
12798                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12799                next_offset += envelope_size;
12800            }
12801
12802            Ok(())
12803        }
12804    }
12805
12806    impl WlanFullmacImplSetApfPacketFilterEnabledRequest {
12807        #[inline(always)]
12808        fn max_ordinal_present(&self) -> u64 {
12809            if let Some(_) = self.enabled {
12810                return 1;
12811            }
12812            0
12813        }
12814    }
12815
12816    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetApfPacketFilterEnabledRequest {
12817        type Borrowed<'a> = &'a Self;
12818        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12819            value
12820        }
12821    }
12822
12823    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetApfPacketFilterEnabledRequest {
12824        type Owned = Self;
12825
12826        #[inline(always)]
12827        fn inline_align(_context: fidl::encoding::Context) -> usize {
12828            8
12829        }
12830
12831        #[inline(always)]
12832        fn inline_size(_context: fidl::encoding::Context) -> usize {
12833            16
12834        }
12835    }
12836
12837    unsafe impl<D: fidl::encoding::ResourceDialect>
12838        fidl::encoding::Encode<WlanFullmacImplSetApfPacketFilterEnabledRequest, D>
12839        for &WlanFullmacImplSetApfPacketFilterEnabledRequest
12840    {
12841        unsafe fn encode(
12842            self,
12843            encoder: &mut fidl::encoding::Encoder<'_, D>,
12844            offset: usize,
12845            mut depth: fidl::encoding::Depth,
12846        ) -> fidl::Result<()> {
12847            encoder.debug_check_bounds::<WlanFullmacImplSetApfPacketFilterEnabledRequest>(offset);
12848            // Vector header
12849            let max_ordinal: u64 = self.max_ordinal_present();
12850            encoder.write_num(max_ordinal, offset);
12851            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12852            // Calling encoder.out_of_line_offset(0) is not allowed.
12853            if max_ordinal == 0 {
12854                return Ok(());
12855            }
12856            depth.increment()?;
12857            let envelope_size = 8;
12858            let bytes_len = max_ordinal as usize * envelope_size;
12859            #[allow(unused_variables)]
12860            let offset = encoder.out_of_line_offset(bytes_len);
12861            let mut _prev_end_offset: usize = 0;
12862            if 1 > max_ordinal {
12863                return Ok(());
12864            }
12865
12866            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12867            // are envelope_size bytes.
12868            let cur_offset: usize = (1 - 1) * envelope_size;
12869
12870            // Zero reserved fields.
12871            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12872
12873            // Safety:
12874            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12875            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12876            //   envelope_size bytes, there is always sufficient room.
12877            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12878                self.enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12879                encoder,
12880                offset + cur_offset,
12881                depth,
12882            )?;
12883
12884            _prev_end_offset = cur_offset + envelope_size;
12885
12886            Ok(())
12887        }
12888    }
12889
12890    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12891        for WlanFullmacImplSetApfPacketFilterEnabledRequest
12892    {
12893        #[inline(always)]
12894        fn new_empty() -> Self {
12895            Self::default()
12896        }
12897
12898        unsafe fn decode(
12899            &mut self,
12900            decoder: &mut fidl::encoding::Decoder<'_, D>,
12901            offset: usize,
12902            mut depth: fidl::encoding::Depth,
12903        ) -> fidl::Result<()> {
12904            decoder.debug_check_bounds::<Self>(offset);
12905            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12906                None => return Err(fidl::Error::NotNullable),
12907                Some(len) => len,
12908            };
12909            // Calling decoder.out_of_line_offset(0) is not allowed.
12910            if len == 0 {
12911                return Ok(());
12912            };
12913            depth.increment()?;
12914            let envelope_size = 8;
12915            let bytes_len = len * envelope_size;
12916            let offset = decoder.out_of_line_offset(bytes_len)?;
12917            // Decode the envelope for each type.
12918            let mut _next_ordinal_to_read = 0;
12919            let mut next_offset = offset;
12920            let end_offset = offset + bytes_len;
12921            _next_ordinal_to_read += 1;
12922            if next_offset >= end_offset {
12923                return Ok(());
12924            }
12925
12926            // Decode unknown envelopes for gaps in ordinals.
12927            while _next_ordinal_to_read < 1 {
12928                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12929                _next_ordinal_to_read += 1;
12930                next_offset += envelope_size;
12931            }
12932
12933            let next_out_of_line = decoder.next_out_of_line();
12934            let handles_before = decoder.remaining_handles();
12935            if let Some((inlined, num_bytes, num_handles)) =
12936                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12937            {
12938                let member_inline_size =
12939                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12940                if inlined != (member_inline_size <= 4) {
12941                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12942                }
12943                let inner_offset;
12944                let mut inner_depth = depth.clone();
12945                if inlined {
12946                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12947                    inner_offset = next_offset;
12948                } else {
12949                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12950                    inner_depth.increment()?;
12951                }
12952                let val_ref = self.enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
12953                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12954                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12955                {
12956                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12957                }
12958                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12959                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12960                }
12961            }
12962
12963            next_offset += envelope_size;
12964
12965            // Decode the remaining unknown envelopes.
12966            while next_offset < end_offset {
12967                _next_ordinal_to_read += 1;
12968                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12969                next_offset += envelope_size;
12970            }
12971
12972            Ok(())
12973        }
12974    }
12975
12976    impl WlanFullmacImplSetKeysRequest {
12977        #[inline(always)]
12978        fn max_ordinal_present(&self) -> u64 {
12979            if let Some(_) = self.key_descriptors {
12980                return 2;
12981            }
12982            if let Some(_) = self.keylist {
12983                return 1;
12984            }
12985            0
12986        }
12987    }
12988
12989    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysRequest {
12990        type Borrowed<'a> = &'a Self;
12991        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12992            value
12993        }
12994    }
12995
12996    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysRequest {
12997        type Owned = Self;
12998
12999        #[inline(always)]
13000        fn inline_align(_context: fidl::encoding::Context) -> usize {
13001            8
13002        }
13003
13004        #[inline(always)]
13005        fn inline_size(_context: fidl::encoding::Context) -> usize {
13006            16
13007        }
13008    }
13009
13010    unsafe impl<D: fidl::encoding::ResourceDialect>
13011        fidl::encoding::Encode<WlanFullmacImplSetKeysRequest, D>
13012        for &WlanFullmacImplSetKeysRequest
13013    {
13014        unsafe fn encode(
13015            self,
13016            encoder: &mut fidl::encoding::Encoder<'_, D>,
13017            offset: usize,
13018            mut depth: fidl::encoding::Depth,
13019        ) -> fidl::Result<()> {
13020            encoder.debug_check_bounds::<WlanFullmacImplSetKeysRequest>(offset);
13021            // Vector header
13022            let max_ordinal: u64 = self.max_ordinal_present();
13023            encoder.write_num(max_ordinal, offset);
13024            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13025            // Calling encoder.out_of_line_offset(0) is not allowed.
13026            if max_ordinal == 0 {
13027                return Ok(());
13028            }
13029            depth.increment()?;
13030            let envelope_size = 8;
13031            let bytes_len = max_ordinal as usize * envelope_size;
13032            #[allow(unused_variables)]
13033            let offset = encoder.out_of_line_offset(bytes_len);
13034            let mut _prev_end_offset: usize = 0;
13035            if 1 > max_ordinal {
13036                return Ok(());
13037            }
13038
13039            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13040            // are envelope_size bytes.
13041            let cur_offset: usize = (1 - 1) * envelope_size;
13042
13043            // Zero reserved fields.
13044            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13045
13046            // Safety:
13047            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13048            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13049            //   envelope_size bytes, there is always sufficient room.
13050            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, 4>, D>(
13051            self.keylist.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, 4> as fidl::encoding::ValueTypeMarker>::borrow),
13052            encoder, offset + cur_offset, depth
13053        )?;
13054
13055            _prev_end_offset = cur_offset + envelope_size;
13056            if 2 > max_ordinal {
13057                return Ok(());
13058            }
13059
13060            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13061            // are envelope_size bytes.
13062            let cur_offset: usize = (2 - 1) * envelope_size;
13063
13064            // Zero reserved fields.
13065            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13066
13067            // Safety:
13068            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13069            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13070            //   envelope_size bytes, there is always sufficient room.
13071            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, 4>, D>(
13072            self.key_descriptors.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, 4> as fidl::encoding::ValueTypeMarker>::borrow),
13073            encoder, offset + cur_offset, depth
13074        )?;
13075
13076            _prev_end_offset = cur_offset + envelope_size;
13077
13078            Ok(())
13079        }
13080    }
13081
13082    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13083        for WlanFullmacImplSetKeysRequest
13084    {
13085        #[inline(always)]
13086        fn new_empty() -> Self {
13087            Self::default()
13088        }
13089
13090        unsafe fn decode(
13091            &mut self,
13092            decoder: &mut fidl::encoding::Decoder<'_, D>,
13093            offset: usize,
13094            mut depth: fidl::encoding::Depth,
13095        ) -> fidl::Result<()> {
13096            decoder.debug_check_bounds::<Self>(offset);
13097            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13098                None => return Err(fidl::Error::NotNullable),
13099                Some(len) => len,
13100            };
13101            // Calling decoder.out_of_line_offset(0) is not allowed.
13102            if len == 0 {
13103                return Ok(());
13104            };
13105            depth.increment()?;
13106            let envelope_size = 8;
13107            let bytes_len = len * envelope_size;
13108            let offset = decoder.out_of_line_offset(bytes_len)?;
13109            // Decode the envelope for each type.
13110            let mut _next_ordinal_to_read = 0;
13111            let mut next_offset = offset;
13112            let end_offset = offset + bytes_len;
13113            _next_ordinal_to_read += 1;
13114            if next_offset >= end_offset {
13115                return Ok(());
13116            }
13117
13118            // Decode unknown envelopes for gaps in ordinals.
13119            while _next_ordinal_to_read < 1 {
13120                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13121                _next_ordinal_to_read += 1;
13122                next_offset += envelope_size;
13123            }
13124
13125            let next_out_of_line = decoder.next_out_of_line();
13126            let handles_before = decoder.remaining_handles();
13127            if let Some((inlined, num_bytes, num_handles)) =
13128                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13129            {
13130                let member_inline_size = <fidl::encoding::Vector<
13131                    fidl_fuchsia_wlan_driver_common::WlanKeyConfig,
13132                    4,
13133                > as fidl::encoding::TypeMarker>::inline_size(
13134                    decoder.context
13135                );
13136                if inlined != (member_inline_size <= 4) {
13137                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13138                }
13139                let inner_offset;
13140                let mut inner_depth = depth.clone();
13141                if inlined {
13142                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13143                    inner_offset = next_offset;
13144                } else {
13145                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13146                    inner_depth.increment()?;
13147                }
13148                let val_ref =
13149                self.keylist.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, 4>, D));
13150                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
13151                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13152                {
13153                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13154                }
13155                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13156                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13157                }
13158            }
13159
13160            next_offset += envelope_size;
13161            _next_ordinal_to_read += 1;
13162            if next_offset >= end_offset {
13163                return Ok(());
13164            }
13165
13166            // Decode unknown envelopes for gaps in ordinals.
13167            while _next_ordinal_to_read < 2 {
13168                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13169                _next_ordinal_to_read += 1;
13170                next_offset += envelope_size;
13171            }
13172
13173            let next_out_of_line = decoder.next_out_of_line();
13174            let handles_before = decoder.remaining_handles();
13175            if let Some((inlined, num_bytes, num_handles)) =
13176                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13177            {
13178                let member_inline_size = <fidl::encoding::Vector<
13179                    fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor,
13180                    4,
13181                > as fidl::encoding::TypeMarker>::inline_size(
13182                    decoder.context
13183                );
13184                if inlined != (member_inline_size <= 4) {
13185                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13186                }
13187                let inner_offset;
13188                let mut inner_depth = depth.clone();
13189                if inlined {
13190                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13191                    inner_offset = next_offset;
13192                } else {
13193                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13194                    inner_depth.increment()?;
13195                }
13196                let val_ref =
13197                self.key_descriptors.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, 4>, D));
13198                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
13199                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13200                {
13201                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13202                }
13203                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13204                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13205                }
13206            }
13207
13208            next_offset += envelope_size;
13209
13210            // Decode the remaining unknown envelopes.
13211            while next_offset < end_offset {
13212                _next_ordinal_to_read += 1;
13213                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13214                next_offset += envelope_size;
13215            }
13216
13217            Ok(())
13218        }
13219    }
13220
13221    impl WlanFullmacImplStartBssRequest {
13222        #[inline(always)]
13223        fn max_ordinal_present(&self) -> u64 {
13224            if let Some(_) = self.vendor_ie {
13225                return 7;
13226            }
13227            if let Some(_) = self.rsne {
13228                return 6;
13229            }
13230            if let Some(_) = self.channel {
13231                return 5;
13232            }
13233            if let Some(_) = self.dtim_period {
13234                return 4;
13235            }
13236            if let Some(_) = self.beacon_period {
13237                return 3;
13238            }
13239            if let Some(_) = self.bss_type {
13240                return 2;
13241            }
13242            if let Some(_) = self.ssid {
13243                return 1;
13244            }
13245            0
13246        }
13247    }
13248
13249    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartBssRequest {
13250        type Borrowed<'a> = &'a Self;
13251        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13252            value
13253        }
13254    }
13255
13256    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartBssRequest {
13257        type Owned = Self;
13258
13259        #[inline(always)]
13260        fn inline_align(_context: fidl::encoding::Context) -> usize {
13261            8
13262        }
13263
13264        #[inline(always)]
13265        fn inline_size(_context: fidl::encoding::Context) -> usize {
13266            16
13267        }
13268    }
13269
13270    unsafe impl<D: fidl::encoding::ResourceDialect>
13271        fidl::encoding::Encode<WlanFullmacImplStartBssRequest, D>
13272        for &WlanFullmacImplStartBssRequest
13273    {
13274        unsafe fn encode(
13275            self,
13276            encoder: &mut fidl::encoding::Encoder<'_, D>,
13277            offset: usize,
13278            mut depth: fidl::encoding::Depth,
13279        ) -> fidl::Result<()> {
13280            encoder.debug_check_bounds::<WlanFullmacImplStartBssRequest>(offset);
13281            // Vector header
13282            let max_ordinal: u64 = self.max_ordinal_present();
13283            encoder.write_num(max_ordinal, offset);
13284            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13285            // Calling encoder.out_of_line_offset(0) is not allowed.
13286            if max_ordinal == 0 {
13287                return Ok(());
13288            }
13289            depth.increment()?;
13290            let envelope_size = 8;
13291            let bytes_len = max_ordinal as usize * envelope_size;
13292            #[allow(unused_variables)]
13293            let offset = encoder.out_of_line_offset(bytes_len);
13294            let mut _prev_end_offset: usize = 0;
13295            if 1 > max_ordinal {
13296                return Ok(());
13297            }
13298
13299            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13300            // are envelope_size bytes.
13301            let cur_offset: usize = (1 - 1) * envelope_size;
13302
13303            // Zero reserved fields.
13304            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13305
13306            // Safety:
13307            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13308            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13309            //   envelope_size bytes, there is always sufficient room.
13310            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
13311                self.ssid.as_ref().map(
13312                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
13313                ),
13314                encoder,
13315                offset + cur_offset,
13316                depth,
13317            )?;
13318
13319            _prev_end_offset = cur_offset + envelope_size;
13320            if 2 > max_ordinal {
13321                return Ok(());
13322            }
13323
13324            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13325            // are envelope_size bytes.
13326            let cur_offset: usize = (2 - 1) * envelope_size;
13327
13328            // Zero reserved fields.
13329            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13330
13331            // Safety:
13332            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13333            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13334            //   envelope_size bytes, there is always sufficient room.
13335            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssType, D>(
13336            self.bss_type.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssType as fidl::encoding::ValueTypeMarker>::borrow),
13337            encoder, offset + cur_offset, depth
13338        )?;
13339
13340            _prev_end_offset = cur_offset + envelope_size;
13341            if 3 > max_ordinal {
13342                return Ok(());
13343            }
13344
13345            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13346            // are envelope_size bytes.
13347            let cur_offset: usize = (3 - 1) * envelope_size;
13348
13349            // Zero reserved fields.
13350            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13351
13352            // Safety:
13353            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13354            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13355            //   envelope_size bytes, there is always sufficient room.
13356            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13357                self.beacon_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13358                encoder,
13359                offset + cur_offset,
13360                depth,
13361            )?;
13362
13363            _prev_end_offset = cur_offset + envelope_size;
13364            if 4 > max_ordinal {
13365                return Ok(());
13366            }
13367
13368            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13369            // are envelope_size bytes.
13370            let cur_offset: usize = (4 - 1) * envelope_size;
13371
13372            // Zero reserved fields.
13373            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13374
13375            // Safety:
13376            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13377            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13378            //   envelope_size bytes, there is always sufficient room.
13379            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13380                self.dtim_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13381                encoder,
13382                offset + cur_offset,
13383                depth,
13384            )?;
13385
13386            _prev_end_offset = cur_offset + envelope_size;
13387            if 5 > max_ordinal {
13388                return Ok(());
13389            }
13390
13391            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13392            // are envelope_size bytes.
13393            let cur_offset: usize = (5 - 1) * envelope_size;
13394
13395            // Zero reserved fields.
13396            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13397
13398            // Safety:
13399            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13400            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13401            //   envelope_size bytes, there is always sufficient room.
13402            fidl::encoding::encode_in_envelope_optional::<u8, D>(
13403                self.channel.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13404                encoder,
13405                offset + cur_offset,
13406                depth,
13407            )?;
13408
13409            _prev_end_offset = cur_offset + envelope_size;
13410            if 6 > max_ordinal {
13411                return Ok(());
13412            }
13413
13414            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13415            // are envelope_size bytes.
13416            let cur_offset: usize = (6 - 1) * envelope_size;
13417
13418            // Zero reserved fields.
13419            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13420
13421            // Safety:
13422            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13423            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13424            //   envelope_size bytes, there is always sufficient room.
13425            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
13426                self.rsne.as_ref().map(
13427                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
13428                ),
13429                encoder,
13430                offset + cur_offset,
13431                depth,
13432            )?;
13433
13434            _prev_end_offset = cur_offset + envelope_size;
13435            if 7 > max_ordinal {
13436                return Ok(());
13437            }
13438
13439            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13440            // are envelope_size bytes.
13441            let cur_offset: usize = (7 - 1) * envelope_size;
13442
13443            // Zero reserved fields.
13444            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13445
13446            // Safety:
13447            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13448            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13449            //   envelope_size bytes, there is always sufficient room.
13450            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
13451                self.vendor_ie.as_ref().map(
13452                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
13453                ),
13454                encoder,
13455                offset + cur_offset,
13456                depth,
13457            )?;
13458
13459            _prev_end_offset = cur_offset + envelope_size;
13460
13461            Ok(())
13462        }
13463    }
13464
13465    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13466        for WlanFullmacImplStartBssRequest
13467    {
13468        #[inline(always)]
13469        fn new_empty() -> Self {
13470            Self::default()
13471        }
13472
13473        unsafe fn decode(
13474            &mut self,
13475            decoder: &mut fidl::encoding::Decoder<'_, D>,
13476            offset: usize,
13477            mut depth: fidl::encoding::Depth,
13478        ) -> fidl::Result<()> {
13479            decoder.debug_check_bounds::<Self>(offset);
13480            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13481                None => return Err(fidl::Error::NotNullable),
13482                Some(len) => len,
13483            };
13484            // Calling decoder.out_of_line_offset(0) is not allowed.
13485            if len == 0 {
13486                return Ok(());
13487            };
13488            depth.increment()?;
13489            let envelope_size = 8;
13490            let bytes_len = len * envelope_size;
13491            let offset = decoder.out_of_line_offset(bytes_len)?;
13492            // Decode the envelope for each type.
13493            let mut _next_ordinal_to_read = 0;
13494            let mut next_offset = offset;
13495            let end_offset = offset + bytes_len;
13496            _next_ordinal_to_read += 1;
13497            if next_offset >= end_offset {
13498                return Ok(());
13499            }
13500
13501            // Decode unknown envelopes for gaps in ordinals.
13502            while _next_ordinal_to_read < 1 {
13503                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13504                _next_ordinal_to_read += 1;
13505                next_offset += envelope_size;
13506            }
13507
13508            let next_out_of_line = decoder.next_out_of_line();
13509            let handles_before = decoder.remaining_handles();
13510            if let Some((inlined, num_bytes, num_handles)) =
13511                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13512            {
13513                let member_inline_size =
13514                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
13515                        decoder.context,
13516                    );
13517                if inlined != (member_inline_size <= 4) {
13518                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13519                }
13520                let inner_offset;
13521                let mut inner_depth = depth.clone();
13522                if inlined {
13523                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13524                    inner_offset = next_offset;
13525                } else {
13526                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13527                    inner_depth.increment()?;
13528                }
13529                let val_ref = self
13530                    .ssid
13531                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
13532                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
13533                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13534                {
13535                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13536                }
13537                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13538                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13539                }
13540            }
13541
13542            next_offset += envelope_size;
13543            _next_ordinal_to_read += 1;
13544            if next_offset >= end_offset {
13545                return Ok(());
13546            }
13547
13548            // Decode unknown envelopes for gaps in ordinals.
13549            while _next_ordinal_to_read < 2 {
13550                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13551                _next_ordinal_to_read += 1;
13552                next_offset += envelope_size;
13553            }
13554
13555            let next_out_of_line = decoder.next_out_of_line();
13556            let handles_before = decoder.remaining_handles();
13557            if let Some((inlined, num_bytes, num_handles)) =
13558                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13559            {
13560                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13561                if inlined != (member_inline_size <= 4) {
13562                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13563                }
13564                let inner_offset;
13565                let mut inner_depth = depth.clone();
13566                if inlined {
13567                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13568                    inner_offset = next_offset;
13569                } else {
13570                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13571                    inner_depth.increment()?;
13572                }
13573                let val_ref = self.bss_type.get_or_insert_with(|| {
13574                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssType, D)
13575                });
13576                fidl::decode!(
13577                    fidl_fuchsia_wlan_ieee80211_common::BssType,
13578                    D,
13579                    val_ref,
13580                    decoder,
13581                    inner_offset,
13582                    inner_depth
13583                )?;
13584                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13585                {
13586                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13587                }
13588                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13589                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13590                }
13591            }
13592
13593            next_offset += envelope_size;
13594            _next_ordinal_to_read += 1;
13595            if next_offset >= end_offset {
13596                return Ok(());
13597            }
13598
13599            // Decode unknown envelopes for gaps in ordinals.
13600            while _next_ordinal_to_read < 3 {
13601                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13602                _next_ordinal_to_read += 1;
13603                next_offset += envelope_size;
13604            }
13605
13606            let next_out_of_line = decoder.next_out_of_line();
13607            let handles_before = decoder.remaining_handles();
13608            if let Some((inlined, num_bytes, num_handles)) =
13609                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13610            {
13611                let member_inline_size =
13612                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13613                if inlined != (member_inline_size <= 4) {
13614                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13615                }
13616                let inner_offset;
13617                let mut inner_depth = depth.clone();
13618                if inlined {
13619                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13620                    inner_offset = next_offset;
13621                } else {
13622                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13623                    inner_depth.increment()?;
13624                }
13625                let val_ref = self.beacon_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
13626                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13627                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13628                {
13629                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13630                }
13631                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13632                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13633                }
13634            }
13635
13636            next_offset += envelope_size;
13637            _next_ordinal_to_read += 1;
13638            if next_offset >= end_offset {
13639                return Ok(());
13640            }
13641
13642            // Decode unknown envelopes for gaps in ordinals.
13643            while _next_ordinal_to_read < 4 {
13644                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13645                _next_ordinal_to_read += 1;
13646                next_offset += envelope_size;
13647            }
13648
13649            let next_out_of_line = decoder.next_out_of_line();
13650            let handles_before = decoder.remaining_handles();
13651            if let Some((inlined, num_bytes, num_handles)) =
13652                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13653            {
13654                let member_inline_size =
13655                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13656                if inlined != (member_inline_size <= 4) {
13657                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13658                }
13659                let inner_offset;
13660                let mut inner_depth = depth.clone();
13661                if inlined {
13662                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13663                    inner_offset = next_offset;
13664                } else {
13665                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13666                    inner_depth.increment()?;
13667                }
13668                let val_ref = self.dtim_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
13669                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13670                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13671                {
13672                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13673                }
13674                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13675                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13676                }
13677            }
13678
13679            next_offset += envelope_size;
13680            _next_ordinal_to_read += 1;
13681            if next_offset >= end_offset {
13682                return Ok(());
13683            }
13684
13685            // Decode unknown envelopes for gaps in ordinals.
13686            while _next_ordinal_to_read < 5 {
13687                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13688                _next_ordinal_to_read += 1;
13689                next_offset += envelope_size;
13690            }
13691
13692            let next_out_of_line = decoder.next_out_of_line();
13693            let handles_before = decoder.remaining_handles();
13694            if let Some((inlined, num_bytes, num_handles)) =
13695                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13696            {
13697                let member_inline_size =
13698                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13699                if inlined != (member_inline_size <= 4) {
13700                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13701                }
13702                let inner_offset;
13703                let mut inner_depth = depth.clone();
13704                if inlined {
13705                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13706                    inner_offset = next_offset;
13707                } else {
13708                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13709                    inner_depth.increment()?;
13710                }
13711                let val_ref = self.channel.get_or_insert_with(|| fidl::new_empty!(u8, D));
13712                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
13713                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13714                {
13715                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13716                }
13717                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13718                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13719                }
13720            }
13721
13722            next_offset += envelope_size;
13723            _next_ordinal_to_read += 1;
13724            if next_offset >= end_offset {
13725                return Ok(());
13726            }
13727
13728            // Decode unknown envelopes for gaps in ordinals.
13729            while _next_ordinal_to_read < 6 {
13730                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13731                _next_ordinal_to_read += 1;
13732                next_offset += envelope_size;
13733            }
13734
13735            let next_out_of_line = decoder.next_out_of_line();
13736            let handles_before = decoder.remaining_handles();
13737            if let Some((inlined, num_bytes, num_handles)) =
13738                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13739            {
13740                let member_inline_size =
13741                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
13742                        decoder.context,
13743                    );
13744                if inlined != (member_inline_size <= 4) {
13745                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13746                }
13747                let inner_offset;
13748                let mut inner_depth = depth.clone();
13749                if inlined {
13750                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13751                    inner_offset = next_offset;
13752                } else {
13753                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13754                    inner_depth.increment()?;
13755                }
13756                let val_ref = self
13757                    .rsne
13758                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
13759                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
13760                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13761                {
13762                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13763                }
13764                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13765                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13766                }
13767            }
13768
13769            next_offset += envelope_size;
13770            _next_ordinal_to_read += 1;
13771            if next_offset >= end_offset {
13772                return Ok(());
13773            }
13774
13775            // Decode unknown envelopes for gaps in ordinals.
13776            while _next_ordinal_to_read < 7 {
13777                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13778                _next_ordinal_to_read += 1;
13779                next_offset += envelope_size;
13780            }
13781
13782            let next_out_of_line = decoder.next_out_of_line();
13783            let handles_before = decoder.remaining_handles();
13784            if let Some((inlined, num_bytes, num_handles)) =
13785                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13786            {
13787                let member_inline_size =
13788                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
13789                        decoder.context,
13790                    );
13791                if inlined != (member_inline_size <= 4) {
13792                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13793                }
13794                let inner_offset;
13795                let mut inner_depth = depth.clone();
13796                if inlined {
13797                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13798                    inner_offset = next_offset;
13799                } else {
13800                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13801                    inner_depth.increment()?;
13802                }
13803                let val_ref = self
13804                    .vendor_ie
13805                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
13806                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
13807                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13808                {
13809                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13810                }
13811                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13812                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13813                }
13814            }
13815
13816            next_offset += envelope_size;
13817
13818            // Decode the remaining unknown envelopes.
13819            while next_offset < end_offset {
13820                _next_ordinal_to_read += 1;
13821                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13822                next_offset += envelope_size;
13823            }
13824
13825            Ok(())
13826        }
13827    }
13828
13829    impl WlanFullmacImplStartScanRequest {
13830        #[inline(always)]
13831        fn max_ordinal_present(&self) -> u64 {
13832            if let Some(_) = self.max_channel_time {
13833                return 6;
13834            }
13835            if let Some(_) = self.min_channel_time {
13836                return 5;
13837            }
13838            if let Some(_) = self.ssids {
13839                return 4;
13840            }
13841            if let Some(_) = self.channels {
13842                return 3;
13843            }
13844            if let Some(_) = self.scan_type {
13845                return 2;
13846            }
13847            if let Some(_) = self.txn_id {
13848                return 1;
13849            }
13850            0
13851        }
13852    }
13853
13854    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartScanRequest {
13855        type Borrowed<'a> = &'a Self;
13856        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13857            value
13858        }
13859    }
13860
13861    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartScanRequest {
13862        type Owned = Self;
13863
13864        #[inline(always)]
13865        fn inline_align(_context: fidl::encoding::Context) -> usize {
13866            8
13867        }
13868
13869        #[inline(always)]
13870        fn inline_size(_context: fidl::encoding::Context) -> usize {
13871            16
13872        }
13873    }
13874
13875    unsafe impl<D: fidl::encoding::ResourceDialect>
13876        fidl::encoding::Encode<WlanFullmacImplStartScanRequest, D>
13877        for &WlanFullmacImplStartScanRequest
13878    {
13879        unsafe fn encode(
13880            self,
13881            encoder: &mut fidl::encoding::Encoder<'_, D>,
13882            offset: usize,
13883            mut depth: fidl::encoding::Depth,
13884        ) -> fidl::Result<()> {
13885            encoder.debug_check_bounds::<WlanFullmacImplStartScanRequest>(offset);
13886            // Vector header
13887            let max_ordinal: u64 = self.max_ordinal_present();
13888            encoder.write_num(max_ordinal, offset);
13889            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13890            // Calling encoder.out_of_line_offset(0) is not allowed.
13891            if max_ordinal == 0 {
13892                return Ok(());
13893            }
13894            depth.increment()?;
13895            let envelope_size = 8;
13896            let bytes_len = max_ordinal as usize * envelope_size;
13897            #[allow(unused_variables)]
13898            let offset = encoder.out_of_line_offset(bytes_len);
13899            let mut _prev_end_offset: usize = 0;
13900            if 1 > max_ordinal {
13901                return Ok(());
13902            }
13903
13904            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13905            // are envelope_size bytes.
13906            let cur_offset: usize = (1 - 1) * envelope_size;
13907
13908            // Zero reserved fields.
13909            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13910
13911            // Safety:
13912            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13913            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13914            //   envelope_size bytes, there is always sufficient room.
13915            fidl::encoding::encode_in_envelope_optional::<u64, D>(
13916                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
13917                encoder,
13918                offset + cur_offset,
13919                depth,
13920            )?;
13921
13922            _prev_end_offset = cur_offset + envelope_size;
13923            if 2 > max_ordinal {
13924                return Ok(());
13925            }
13926
13927            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13928            // are envelope_size bytes.
13929            let cur_offset: usize = (2 - 1) * envelope_size;
13930
13931            // Zero reserved fields.
13932            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13933
13934            // Safety:
13935            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13936            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13937            //   envelope_size bytes, there is always sufficient room.
13938            fidl::encoding::encode_in_envelope_optional::<WlanScanType, D>(
13939                self.scan_type
13940                    .as_ref()
13941                    .map(<WlanScanType as fidl::encoding::ValueTypeMarker>::borrow),
13942                encoder,
13943                offset + cur_offset,
13944                depth,
13945            )?;
13946
13947            _prev_end_offset = cur_offset + envelope_size;
13948            if 3 > max_ordinal {
13949                return Ok(());
13950            }
13951
13952            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13953            // are envelope_size bytes.
13954            let cur_offset: usize = (3 - 1) * envelope_size;
13955
13956            // Zero reserved fields.
13957            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13958
13959            // Safety:
13960            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13961            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13962            //   envelope_size bytes, there is always sufficient room.
13963            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 256>, D>(
13964                self.channels.as_ref().map(
13965                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow,
13966                ),
13967                encoder,
13968                offset + cur_offset,
13969                depth,
13970            )?;
13971
13972            _prev_end_offset = cur_offset + envelope_size;
13973            if 4 > max_ordinal {
13974                return Ok(());
13975            }
13976
13977            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13978            // are envelope_size bytes.
13979            let cur_offset: usize = (4 - 1) * envelope_size;
13980
13981            // Zero reserved fields.
13982            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13983
13984            // Safety:
13985            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13986            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13987            //   envelope_size bytes, there is always sufficient room.
13988            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>(
13989            self.ssids.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow),
13990            encoder, offset + cur_offset, depth
13991        )?;
13992
13993            _prev_end_offset = cur_offset + envelope_size;
13994            if 5 > max_ordinal {
13995                return Ok(());
13996            }
13997
13998            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13999            // are envelope_size bytes.
14000            let cur_offset: usize = (5 - 1) * envelope_size;
14001
14002            // Zero reserved fields.
14003            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14004
14005            // Safety:
14006            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14007            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14008            //   envelope_size bytes, there is always sufficient room.
14009            fidl::encoding::encode_in_envelope_optional::<u32, D>(
14010                self.min_channel_time
14011                    .as_ref()
14012                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
14013                encoder,
14014                offset + cur_offset,
14015                depth,
14016            )?;
14017
14018            _prev_end_offset = cur_offset + envelope_size;
14019            if 6 > max_ordinal {
14020                return Ok(());
14021            }
14022
14023            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14024            // are envelope_size bytes.
14025            let cur_offset: usize = (6 - 1) * envelope_size;
14026
14027            // Zero reserved fields.
14028            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14029
14030            // Safety:
14031            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14032            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14033            //   envelope_size bytes, there is always sufficient room.
14034            fidl::encoding::encode_in_envelope_optional::<u32, D>(
14035                self.max_channel_time
14036                    .as_ref()
14037                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
14038                encoder,
14039                offset + cur_offset,
14040                depth,
14041            )?;
14042
14043            _prev_end_offset = cur_offset + envelope_size;
14044
14045            Ok(())
14046        }
14047    }
14048
14049    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14050        for WlanFullmacImplStartScanRequest
14051    {
14052        #[inline(always)]
14053        fn new_empty() -> Self {
14054            Self::default()
14055        }
14056
14057        unsafe fn decode(
14058            &mut self,
14059            decoder: &mut fidl::encoding::Decoder<'_, D>,
14060            offset: usize,
14061            mut depth: fidl::encoding::Depth,
14062        ) -> fidl::Result<()> {
14063            decoder.debug_check_bounds::<Self>(offset);
14064            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14065                None => return Err(fidl::Error::NotNullable),
14066                Some(len) => len,
14067            };
14068            // Calling decoder.out_of_line_offset(0) is not allowed.
14069            if len == 0 {
14070                return Ok(());
14071            };
14072            depth.increment()?;
14073            let envelope_size = 8;
14074            let bytes_len = len * envelope_size;
14075            let offset = decoder.out_of_line_offset(bytes_len)?;
14076            // Decode the envelope for each type.
14077            let mut _next_ordinal_to_read = 0;
14078            let mut next_offset = offset;
14079            let end_offset = offset + bytes_len;
14080            _next_ordinal_to_read += 1;
14081            if next_offset >= end_offset {
14082                return Ok(());
14083            }
14084
14085            // Decode unknown envelopes for gaps in ordinals.
14086            while _next_ordinal_to_read < 1 {
14087                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14088                _next_ordinal_to_read += 1;
14089                next_offset += envelope_size;
14090            }
14091
14092            let next_out_of_line = decoder.next_out_of_line();
14093            let handles_before = decoder.remaining_handles();
14094            if let Some((inlined, num_bytes, num_handles)) =
14095                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14096            {
14097                let member_inline_size =
14098                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14099                if inlined != (member_inline_size <= 4) {
14100                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14101                }
14102                let inner_offset;
14103                let mut inner_depth = depth.clone();
14104                if inlined {
14105                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14106                    inner_offset = next_offset;
14107                } else {
14108                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14109                    inner_depth.increment()?;
14110                }
14111                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
14112                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
14113                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14114                {
14115                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14116                }
14117                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14118                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14119                }
14120            }
14121
14122            next_offset += envelope_size;
14123            _next_ordinal_to_read += 1;
14124            if next_offset >= end_offset {
14125                return Ok(());
14126            }
14127
14128            // Decode unknown envelopes for gaps in ordinals.
14129            while _next_ordinal_to_read < 2 {
14130                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14131                _next_ordinal_to_read += 1;
14132                next_offset += envelope_size;
14133            }
14134
14135            let next_out_of_line = decoder.next_out_of_line();
14136            let handles_before = decoder.remaining_handles();
14137            if let Some((inlined, num_bytes, num_handles)) =
14138                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14139            {
14140                let member_inline_size =
14141                    <WlanScanType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14142                if inlined != (member_inline_size <= 4) {
14143                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14144                }
14145                let inner_offset;
14146                let mut inner_depth = depth.clone();
14147                if inlined {
14148                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14149                    inner_offset = next_offset;
14150                } else {
14151                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14152                    inner_depth.increment()?;
14153                }
14154                let val_ref =
14155                    self.scan_type.get_or_insert_with(|| fidl::new_empty!(WlanScanType, D));
14156                fidl::decode!(WlanScanType, D, val_ref, decoder, inner_offset, inner_depth)?;
14157                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14158                {
14159                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14160                }
14161                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14162                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14163                }
14164            }
14165
14166            next_offset += envelope_size;
14167            _next_ordinal_to_read += 1;
14168            if next_offset >= end_offset {
14169                return Ok(());
14170            }
14171
14172            // Decode unknown envelopes for gaps in ordinals.
14173            while _next_ordinal_to_read < 3 {
14174                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14175                _next_ordinal_to_read += 1;
14176                next_offset += envelope_size;
14177            }
14178
14179            let next_out_of_line = decoder.next_out_of_line();
14180            let handles_before = decoder.remaining_handles();
14181            if let Some((inlined, num_bytes, num_handles)) =
14182                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14183            {
14184                let member_inline_size =
14185                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::TypeMarker>::inline_size(
14186                        decoder.context,
14187                    );
14188                if inlined != (member_inline_size <= 4) {
14189                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14190                }
14191                let inner_offset;
14192                let mut inner_depth = depth.clone();
14193                if inlined {
14194                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14195                    inner_offset = next_offset;
14196                } else {
14197                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14198                    inner_depth.increment()?;
14199                }
14200                let val_ref = self
14201                    .channels
14202                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D));
14203                fidl::decode!(fidl::encoding::Vector<u8, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
14204                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14205                {
14206                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14207                }
14208                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14209                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14210                }
14211            }
14212
14213            next_offset += envelope_size;
14214            _next_ordinal_to_read += 1;
14215            if next_offset >= end_offset {
14216                return Ok(());
14217            }
14218
14219            // Decode unknown envelopes for gaps in ordinals.
14220            while _next_ordinal_to_read < 4 {
14221                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14222                _next_ordinal_to_read += 1;
14223                next_offset += envelope_size;
14224            }
14225
14226            let next_out_of_line = decoder.next_out_of_line();
14227            let handles_before = decoder.remaining_handles();
14228            if let Some((inlined, num_bytes, num_handles)) =
14229                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14230            {
14231                let member_inline_size = <fidl::encoding::UnboundedVector<
14232                    fidl::encoding::Vector<u8, 32>,
14233                > as fidl::encoding::TypeMarker>::inline_size(
14234                    decoder.context
14235                );
14236                if inlined != (member_inline_size <= 4) {
14237                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14238                }
14239                let inner_offset;
14240                let mut inner_depth = depth.clone();
14241                if inlined {
14242                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14243                    inner_offset = next_offset;
14244                } else {
14245                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14246                    inner_depth.increment()?;
14247                }
14248                let val_ref = self.ssids.get_or_insert_with(|| {
14249                    fidl::new_empty!(
14250                        fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
14251                        D
14252                    )
14253                });
14254                fidl::decode!(
14255                    fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
14256                    D,
14257                    val_ref,
14258                    decoder,
14259                    inner_offset,
14260                    inner_depth
14261                )?;
14262                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14263                {
14264                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14265                }
14266                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14267                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14268                }
14269            }
14270
14271            next_offset += envelope_size;
14272            _next_ordinal_to_read += 1;
14273            if next_offset >= end_offset {
14274                return Ok(());
14275            }
14276
14277            // Decode unknown envelopes for gaps in ordinals.
14278            while _next_ordinal_to_read < 5 {
14279                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14280                _next_ordinal_to_read += 1;
14281                next_offset += envelope_size;
14282            }
14283
14284            let next_out_of_line = decoder.next_out_of_line();
14285            let handles_before = decoder.remaining_handles();
14286            if let Some((inlined, num_bytes, num_handles)) =
14287                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14288            {
14289                let member_inline_size =
14290                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14291                if inlined != (member_inline_size <= 4) {
14292                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14293                }
14294                let inner_offset;
14295                let mut inner_depth = depth.clone();
14296                if inlined {
14297                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14298                    inner_offset = next_offset;
14299                } else {
14300                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14301                    inner_depth.increment()?;
14302                }
14303                let val_ref = self.min_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
14304                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
14305                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14306                {
14307                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14308                }
14309                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14310                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14311                }
14312            }
14313
14314            next_offset += envelope_size;
14315            _next_ordinal_to_read += 1;
14316            if next_offset >= end_offset {
14317                return Ok(());
14318            }
14319
14320            // Decode unknown envelopes for gaps in ordinals.
14321            while _next_ordinal_to_read < 6 {
14322                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14323                _next_ordinal_to_read += 1;
14324                next_offset += envelope_size;
14325            }
14326
14327            let next_out_of_line = decoder.next_out_of_line();
14328            let handles_before = decoder.remaining_handles();
14329            if let Some((inlined, num_bytes, num_handles)) =
14330                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14331            {
14332                let member_inline_size =
14333                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14334                if inlined != (member_inline_size <= 4) {
14335                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14336                }
14337                let inner_offset;
14338                let mut inner_depth = depth.clone();
14339                if inlined {
14340                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14341                    inner_offset = next_offset;
14342                } else {
14343                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14344                    inner_depth.increment()?;
14345                }
14346                let val_ref = self.max_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
14347                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
14348                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14349                {
14350                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14351                }
14352                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14353                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14354                }
14355            }
14356
14357            next_offset += envelope_size;
14358
14359            // Decode the remaining unknown envelopes.
14360            while next_offset < end_offset {
14361                _next_ordinal_to_read += 1;
14362                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14363                next_offset += envelope_size;
14364            }
14365
14366            Ok(())
14367        }
14368    }
14369
14370    impl WlanFullmacImplStartScheduledScanRequest {
14371        #[inline(always)]
14372        fn max_ordinal_present(&self) -> u64 {
14373            if let Some(_) = self.req {
14374                return 2;
14375            }
14376            if let Some(_) = self.txn_id {
14377                return 1;
14378            }
14379            0
14380        }
14381    }
14382
14383    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartScheduledScanRequest {
14384        type Borrowed<'a> = &'a Self;
14385        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14386            value
14387        }
14388    }
14389
14390    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartScheduledScanRequest {
14391        type Owned = Self;
14392
14393        #[inline(always)]
14394        fn inline_align(_context: fidl::encoding::Context) -> usize {
14395            8
14396        }
14397
14398        #[inline(always)]
14399        fn inline_size(_context: fidl::encoding::Context) -> usize {
14400            16
14401        }
14402    }
14403
14404    unsafe impl<D: fidl::encoding::ResourceDialect>
14405        fidl::encoding::Encode<WlanFullmacImplStartScheduledScanRequest, D>
14406        for &WlanFullmacImplStartScheduledScanRequest
14407    {
14408        unsafe fn encode(
14409            self,
14410            encoder: &mut fidl::encoding::Encoder<'_, D>,
14411            offset: usize,
14412            mut depth: fidl::encoding::Depth,
14413        ) -> fidl::Result<()> {
14414            encoder.debug_check_bounds::<WlanFullmacImplStartScheduledScanRequest>(offset);
14415            // Vector header
14416            let max_ordinal: u64 = self.max_ordinal_present();
14417            encoder.write_num(max_ordinal, offset);
14418            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14419            // Calling encoder.out_of_line_offset(0) is not allowed.
14420            if max_ordinal == 0 {
14421                return Ok(());
14422            }
14423            depth.increment()?;
14424            let envelope_size = 8;
14425            let bytes_len = max_ordinal as usize * envelope_size;
14426            #[allow(unused_variables)]
14427            let offset = encoder.out_of_line_offset(bytes_len);
14428            let mut _prev_end_offset: usize = 0;
14429            if 1 > max_ordinal {
14430                return Ok(());
14431            }
14432
14433            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14434            // are envelope_size bytes.
14435            let cur_offset: usize = (1 - 1) * envelope_size;
14436
14437            // Zero reserved fields.
14438            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14439
14440            // Safety:
14441            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14442            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14443            //   envelope_size bytes, there is always sufficient room.
14444            fidl::encoding::encode_in_envelope_optional::<u64, D>(
14445                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
14446                encoder,
14447                offset + cur_offset,
14448                depth,
14449            )?;
14450
14451            _prev_end_offset = cur_offset + envelope_size;
14452            if 2 > max_ordinal {
14453                return Ok(());
14454            }
14455
14456            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14457            // are envelope_size bytes.
14458            let cur_offset: usize = (2 - 1) * envelope_size;
14459
14460            // Zero reserved fields.
14461            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14462
14463            // Safety:
14464            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14465            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14466            //   envelope_size bytes, there is always sufficient room.
14467            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::ScheduledScanRequest, D>(
14468            self.req.as_ref().map(<fidl_fuchsia_wlan_common_common::ScheduledScanRequest as fidl::encoding::ValueTypeMarker>::borrow),
14469            encoder, offset + cur_offset, depth
14470        )?;
14471
14472            _prev_end_offset = cur_offset + envelope_size;
14473
14474            Ok(())
14475        }
14476    }
14477
14478    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14479        for WlanFullmacImplStartScheduledScanRequest
14480    {
14481        #[inline(always)]
14482        fn new_empty() -> Self {
14483            Self::default()
14484        }
14485
14486        unsafe fn decode(
14487            &mut self,
14488            decoder: &mut fidl::encoding::Decoder<'_, D>,
14489            offset: usize,
14490            mut depth: fidl::encoding::Depth,
14491        ) -> fidl::Result<()> {
14492            decoder.debug_check_bounds::<Self>(offset);
14493            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14494                None => return Err(fidl::Error::NotNullable),
14495                Some(len) => len,
14496            };
14497            // Calling decoder.out_of_line_offset(0) is not allowed.
14498            if len == 0 {
14499                return Ok(());
14500            };
14501            depth.increment()?;
14502            let envelope_size = 8;
14503            let bytes_len = len * envelope_size;
14504            let offset = decoder.out_of_line_offset(bytes_len)?;
14505            // Decode the envelope for each type.
14506            let mut _next_ordinal_to_read = 0;
14507            let mut next_offset = offset;
14508            let end_offset = offset + bytes_len;
14509            _next_ordinal_to_read += 1;
14510            if next_offset >= end_offset {
14511                return Ok(());
14512            }
14513
14514            // Decode unknown envelopes for gaps in ordinals.
14515            while _next_ordinal_to_read < 1 {
14516                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14517                _next_ordinal_to_read += 1;
14518                next_offset += envelope_size;
14519            }
14520
14521            let next_out_of_line = decoder.next_out_of_line();
14522            let handles_before = decoder.remaining_handles();
14523            if let Some((inlined, num_bytes, num_handles)) =
14524                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14525            {
14526                let member_inline_size =
14527                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14528                if inlined != (member_inline_size <= 4) {
14529                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14530                }
14531                let inner_offset;
14532                let mut inner_depth = depth.clone();
14533                if inlined {
14534                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14535                    inner_offset = next_offset;
14536                } else {
14537                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14538                    inner_depth.increment()?;
14539                }
14540                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
14541                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
14542                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14543                {
14544                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14545                }
14546                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14547                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14548                }
14549            }
14550
14551            next_offset += envelope_size;
14552            _next_ordinal_to_read += 1;
14553            if next_offset >= end_offset {
14554                return Ok(());
14555            }
14556
14557            // Decode unknown envelopes for gaps in ordinals.
14558            while _next_ordinal_to_read < 2 {
14559                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14560                _next_ordinal_to_read += 1;
14561                next_offset += envelope_size;
14562            }
14563
14564            let next_out_of_line = decoder.next_out_of_line();
14565            let handles_before = decoder.remaining_handles();
14566            if let Some((inlined, num_bytes, num_handles)) =
14567                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14568            {
14569                let member_inline_size = <fidl_fuchsia_wlan_common_common::ScheduledScanRequest as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14570                if inlined != (member_inline_size <= 4) {
14571                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14572                }
14573                let inner_offset;
14574                let mut inner_depth = depth.clone();
14575                if inlined {
14576                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14577                    inner_offset = next_offset;
14578                } else {
14579                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14580                    inner_depth.increment()?;
14581                }
14582                let val_ref = self.req.get_or_insert_with(|| {
14583                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::ScheduledScanRequest, D)
14584                });
14585                fidl::decode!(
14586                    fidl_fuchsia_wlan_common_common::ScheduledScanRequest,
14587                    D,
14588                    val_ref,
14589                    decoder,
14590                    inner_offset,
14591                    inner_depth
14592                )?;
14593                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14594                {
14595                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14596                }
14597                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14598                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14599                }
14600            }
14601
14602            next_offset += envelope_size;
14603
14604            // Decode the remaining unknown envelopes.
14605            while next_offset < end_offset {
14606                _next_ordinal_to_read += 1;
14607                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14608                next_offset += envelope_size;
14609            }
14610
14611            Ok(())
14612        }
14613    }
14614
14615    impl WlanFullmacImplStopBssRequest {
14616        #[inline(always)]
14617        fn max_ordinal_present(&self) -> u64 {
14618            if let Some(_) = self.ssid {
14619                return 1;
14620            }
14621            0
14622        }
14623    }
14624
14625    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStopBssRequest {
14626        type Borrowed<'a> = &'a Self;
14627        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14628            value
14629        }
14630    }
14631
14632    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStopBssRequest {
14633        type Owned = Self;
14634
14635        #[inline(always)]
14636        fn inline_align(_context: fidl::encoding::Context) -> usize {
14637            8
14638        }
14639
14640        #[inline(always)]
14641        fn inline_size(_context: fidl::encoding::Context) -> usize {
14642            16
14643        }
14644    }
14645
14646    unsafe impl<D: fidl::encoding::ResourceDialect>
14647        fidl::encoding::Encode<WlanFullmacImplStopBssRequest, D>
14648        for &WlanFullmacImplStopBssRequest
14649    {
14650        unsafe fn encode(
14651            self,
14652            encoder: &mut fidl::encoding::Encoder<'_, D>,
14653            offset: usize,
14654            mut depth: fidl::encoding::Depth,
14655        ) -> fidl::Result<()> {
14656            encoder.debug_check_bounds::<WlanFullmacImplStopBssRequest>(offset);
14657            // Vector header
14658            let max_ordinal: u64 = self.max_ordinal_present();
14659            encoder.write_num(max_ordinal, offset);
14660            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14661            // Calling encoder.out_of_line_offset(0) is not allowed.
14662            if max_ordinal == 0 {
14663                return Ok(());
14664            }
14665            depth.increment()?;
14666            let envelope_size = 8;
14667            let bytes_len = max_ordinal as usize * envelope_size;
14668            #[allow(unused_variables)]
14669            let offset = encoder.out_of_line_offset(bytes_len);
14670            let mut _prev_end_offset: usize = 0;
14671            if 1 > max_ordinal {
14672                return Ok(());
14673            }
14674
14675            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14676            // are envelope_size bytes.
14677            let cur_offset: usize = (1 - 1) * envelope_size;
14678
14679            // Zero reserved fields.
14680            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14681
14682            // Safety:
14683            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14684            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14685            //   envelope_size bytes, there is always sufficient room.
14686            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
14687                self.ssid.as_ref().map(
14688                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
14689                ),
14690                encoder,
14691                offset + cur_offset,
14692                depth,
14693            )?;
14694
14695            _prev_end_offset = cur_offset + envelope_size;
14696
14697            Ok(())
14698        }
14699    }
14700
14701    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14702        for WlanFullmacImplStopBssRequest
14703    {
14704        #[inline(always)]
14705        fn new_empty() -> Self {
14706            Self::default()
14707        }
14708
14709        unsafe fn decode(
14710            &mut self,
14711            decoder: &mut fidl::encoding::Decoder<'_, D>,
14712            offset: usize,
14713            mut depth: fidl::encoding::Depth,
14714        ) -> fidl::Result<()> {
14715            decoder.debug_check_bounds::<Self>(offset);
14716            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14717                None => return Err(fidl::Error::NotNullable),
14718                Some(len) => len,
14719            };
14720            // Calling decoder.out_of_line_offset(0) is not allowed.
14721            if len == 0 {
14722                return Ok(());
14723            };
14724            depth.increment()?;
14725            let envelope_size = 8;
14726            let bytes_len = len * envelope_size;
14727            let offset = decoder.out_of_line_offset(bytes_len)?;
14728            // Decode the envelope for each type.
14729            let mut _next_ordinal_to_read = 0;
14730            let mut next_offset = offset;
14731            let end_offset = offset + bytes_len;
14732            _next_ordinal_to_read += 1;
14733            if next_offset >= end_offset {
14734                return Ok(());
14735            }
14736
14737            // Decode unknown envelopes for gaps in ordinals.
14738            while _next_ordinal_to_read < 1 {
14739                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14740                _next_ordinal_to_read += 1;
14741                next_offset += envelope_size;
14742            }
14743
14744            let next_out_of_line = decoder.next_out_of_line();
14745            let handles_before = decoder.remaining_handles();
14746            if let Some((inlined, num_bytes, num_handles)) =
14747                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14748            {
14749                let member_inline_size =
14750                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
14751                        decoder.context,
14752                    );
14753                if inlined != (member_inline_size <= 4) {
14754                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14755                }
14756                let inner_offset;
14757                let mut inner_depth = depth.clone();
14758                if inlined {
14759                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14760                    inner_offset = next_offset;
14761                } else {
14762                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14763                    inner_depth.increment()?;
14764                }
14765                let val_ref = self
14766                    .ssid
14767                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
14768                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
14769                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14770                {
14771                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14772                }
14773                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14774                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14775                }
14776            }
14777
14778            next_offset += envelope_size;
14779
14780            // Decode the remaining unknown envelopes.
14781            while next_offset < end_offset {
14782                _next_ordinal_to_read += 1;
14783                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14784                next_offset += envelope_size;
14785            }
14786
14787            Ok(())
14788        }
14789    }
14790
14791    impl WlanFullmacImplStopScheduledScanRequest {
14792        #[inline(always)]
14793        fn max_ordinal_present(&self) -> u64 {
14794            if let Some(_) = self.txn_id {
14795                return 1;
14796            }
14797            0
14798        }
14799    }
14800
14801    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStopScheduledScanRequest {
14802        type Borrowed<'a> = &'a Self;
14803        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14804            value
14805        }
14806    }
14807
14808    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStopScheduledScanRequest {
14809        type Owned = Self;
14810
14811        #[inline(always)]
14812        fn inline_align(_context: fidl::encoding::Context) -> usize {
14813            8
14814        }
14815
14816        #[inline(always)]
14817        fn inline_size(_context: fidl::encoding::Context) -> usize {
14818            16
14819        }
14820    }
14821
14822    unsafe impl<D: fidl::encoding::ResourceDialect>
14823        fidl::encoding::Encode<WlanFullmacImplStopScheduledScanRequest, D>
14824        for &WlanFullmacImplStopScheduledScanRequest
14825    {
14826        unsafe fn encode(
14827            self,
14828            encoder: &mut fidl::encoding::Encoder<'_, D>,
14829            offset: usize,
14830            mut depth: fidl::encoding::Depth,
14831        ) -> fidl::Result<()> {
14832            encoder.debug_check_bounds::<WlanFullmacImplStopScheduledScanRequest>(offset);
14833            // Vector header
14834            let max_ordinal: u64 = self.max_ordinal_present();
14835            encoder.write_num(max_ordinal, offset);
14836            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14837            // Calling encoder.out_of_line_offset(0) is not allowed.
14838            if max_ordinal == 0 {
14839                return Ok(());
14840            }
14841            depth.increment()?;
14842            let envelope_size = 8;
14843            let bytes_len = max_ordinal as usize * envelope_size;
14844            #[allow(unused_variables)]
14845            let offset = encoder.out_of_line_offset(bytes_len);
14846            let mut _prev_end_offset: usize = 0;
14847            if 1 > max_ordinal {
14848                return Ok(());
14849            }
14850
14851            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14852            // are envelope_size bytes.
14853            let cur_offset: usize = (1 - 1) * envelope_size;
14854
14855            // Zero reserved fields.
14856            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14857
14858            // Safety:
14859            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14860            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14861            //   envelope_size bytes, there is always sufficient room.
14862            fidl::encoding::encode_in_envelope_optional::<u64, D>(
14863                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
14864                encoder,
14865                offset + cur_offset,
14866                depth,
14867            )?;
14868
14869            _prev_end_offset = cur_offset + envelope_size;
14870
14871            Ok(())
14872        }
14873    }
14874
14875    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14876        for WlanFullmacImplStopScheduledScanRequest
14877    {
14878        #[inline(always)]
14879        fn new_empty() -> Self {
14880            Self::default()
14881        }
14882
14883        unsafe fn decode(
14884            &mut self,
14885            decoder: &mut fidl::encoding::Decoder<'_, D>,
14886            offset: usize,
14887            mut depth: fidl::encoding::Depth,
14888        ) -> fidl::Result<()> {
14889            decoder.debug_check_bounds::<Self>(offset);
14890            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14891                None => return Err(fidl::Error::NotNullable),
14892                Some(len) => len,
14893            };
14894            // Calling decoder.out_of_line_offset(0) is not allowed.
14895            if len == 0 {
14896                return Ok(());
14897            };
14898            depth.increment()?;
14899            let envelope_size = 8;
14900            let bytes_len = len * envelope_size;
14901            let offset = decoder.out_of_line_offset(bytes_len)?;
14902            // Decode the envelope for each type.
14903            let mut _next_ordinal_to_read = 0;
14904            let mut next_offset = offset;
14905            let end_offset = offset + bytes_len;
14906            _next_ordinal_to_read += 1;
14907            if next_offset >= end_offset {
14908                return Ok(());
14909            }
14910
14911            // Decode unknown envelopes for gaps in ordinals.
14912            while _next_ordinal_to_read < 1 {
14913                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14914                _next_ordinal_to_read += 1;
14915                next_offset += envelope_size;
14916            }
14917
14918            let next_out_of_line = decoder.next_out_of_line();
14919            let handles_before = decoder.remaining_handles();
14920            if let Some((inlined, num_bytes, num_handles)) =
14921                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14922            {
14923                let member_inline_size =
14924                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14925                if inlined != (member_inline_size <= 4) {
14926                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14927                }
14928                let inner_offset;
14929                let mut inner_depth = depth.clone();
14930                if inlined {
14931                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14932                    inner_offset = next_offset;
14933                } else {
14934                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14935                    inner_depth.increment()?;
14936                }
14937                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
14938                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
14939                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14940                {
14941                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14942                }
14943                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14944                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14945                }
14946            }
14947
14948            next_offset += envelope_size;
14949
14950            // Decode the remaining unknown envelopes.
14951            while next_offset < end_offset {
14952                _next_ordinal_to_read += 1;
14953                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14954                next_offset += envelope_size;
14955            }
14956
14957            Ok(())
14958        }
14959    }
14960
14961    impl WlanFullmacImplGetApfPacketFilterEnabledResponse {
14962        #[inline(always)]
14963        fn max_ordinal_present(&self) -> u64 {
14964            if let Some(_) = self.enabled {
14965                return 1;
14966            }
14967            0
14968        }
14969    }
14970
14971    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetApfPacketFilterEnabledResponse {
14972        type Borrowed<'a> = &'a Self;
14973        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14974            value
14975        }
14976    }
14977
14978    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetApfPacketFilterEnabledResponse {
14979        type Owned = Self;
14980
14981        #[inline(always)]
14982        fn inline_align(_context: fidl::encoding::Context) -> usize {
14983            8
14984        }
14985
14986        #[inline(always)]
14987        fn inline_size(_context: fidl::encoding::Context) -> usize {
14988            16
14989        }
14990    }
14991
14992    unsafe impl<D: fidl::encoding::ResourceDialect>
14993        fidl::encoding::Encode<WlanFullmacImplGetApfPacketFilterEnabledResponse, D>
14994        for &WlanFullmacImplGetApfPacketFilterEnabledResponse
14995    {
14996        unsafe fn encode(
14997            self,
14998            encoder: &mut fidl::encoding::Encoder<'_, D>,
14999            offset: usize,
15000            mut depth: fidl::encoding::Depth,
15001        ) -> fidl::Result<()> {
15002            encoder.debug_check_bounds::<WlanFullmacImplGetApfPacketFilterEnabledResponse>(offset);
15003            // Vector header
15004            let max_ordinal: u64 = self.max_ordinal_present();
15005            encoder.write_num(max_ordinal, offset);
15006            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15007            // Calling encoder.out_of_line_offset(0) is not allowed.
15008            if max_ordinal == 0 {
15009                return Ok(());
15010            }
15011            depth.increment()?;
15012            let envelope_size = 8;
15013            let bytes_len = max_ordinal as usize * envelope_size;
15014            #[allow(unused_variables)]
15015            let offset = encoder.out_of_line_offset(bytes_len);
15016            let mut _prev_end_offset: usize = 0;
15017            if 1 > max_ordinal {
15018                return Ok(());
15019            }
15020
15021            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15022            // are envelope_size bytes.
15023            let cur_offset: usize = (1 - 1) * envelope_size;
15024
15025            // Zero reserved fields.
15026            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15027
15028            // Safety:
15029            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15030            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15031            //   envelope_size bytes, there is always sufficient room.
15032            fidl::encoding::encode_in_envelope_optional::<bool, D>(
15033                self.enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
15034                encoder,
15035                offset + cur_offset,
15036                depth,
15037            )?;
15038
15039            _prev_end_offset = cur_offset + envelope_size;
15040
15041            Ok(())
15042        }
15043    }
15044
15045    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15046        for WlanFullmacImplGetApfPacketFilterEnabledResponse
15047    {
15048        #[inline(always)]
15049        fn new_empty() -> Self {
15050            Self::default()
15051        }
15052
15053        unsafe fn decode(
15054            &mut self,
15055            decoder: &mut fidl::encoding::Decoder<'_, D>,
15056            offset: usize,
15057            mut depth: fidl::encoding::Depth,
15058        ) -> fidl::Result<()> {
15059            decoder.debug_check_bounds::<Self>(offset);
15060            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15061                None => return Err(fidl::Error::NotNullable),
15062                Some(len) => len,
15063            };
15064            // Calling decoder.out_of_line_offset(0) is not allowed.
15065            if len == 0 {
15066                return Ok(());
15067            };
15068            depth.increment()?;
15069            let envelope_size = 8;
15070            let bytes_len = len * envelope_size;
15071            let offset = decoder.out_of_line_offset(bytes_len)?;
15072            // Decode the envelope for each type.
15073            let mut _next_ordinal_to_read = 0;
15074            let mut next_offset = offset;
15075            let end_offset = offset + bytes_len;
15076            _next_ordinal_to_read += 1;
15077            if next_offset >= end_offset {
15078                return Ok(());
15079            }
15080
15081            // Decode unknown envelopes for gaps in ordinals.
15082            while _next_ordinal_to_read < 1 {
15083                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15084                _next_ordinal_to_read += 1;
15085                next_offset += envelope_size;
15086            }
15087
15088            let next_out_of_line = decoder.next_out_of_line();
15089            let handles_before = decoder.remaining_handles();
15090            if let Some((inlined, num_bytes, num_handles)) =
15091                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15092            {
15093                let member_inline_size =
15094                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15095                if inlined != (member_inline_size <= 4) {
15096                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15097                }
15098                let inner_offset;
15099                let mut inner_depth = depth.clone();
15100                if inlined {
15101                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15102                    inner_offset = next_offset;
15103                } else {
15104                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15105                    inner_depth.increment()?;
15106                }
15107                let val_ref = self.enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
15108                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
15109                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15110                {
15111                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15112                }
15113                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15114                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15115                }
15116            }
15117
15118            next_offset += envelope_size;
15119
15120            // Decode the remaining unknown envelopes.
15121            while next_offset < end_offset {
15122                _next_ordinal_to_read += 1;
15123                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15124                next_offset += envelope_size;
15125            }
15126
15127            Ok(())
15128        }
15129    }
15130
15131    impl WlanFullmacImplGetScheduledScanEnabledResponse {
15132        #[inline(always)]
15133        fn max_ordinal_present(&self) -> u64 {
15134            if let Some(_) = self.active_txn_ids {
15135                return 1;
15136            }
15137            0
15138        }
15139    }
15140
15141    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetScheduledScanEnabledResponse {
15142        type Borrowed<'a> = &'a Self;
15143        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15144            value
15145        }
15146    }
15147
15148    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetScheduledScanEnabledResponse {
15149        type Owned = Self;
15150
15151        #[inline(always)]
15152        fn inline_align(_context: fidl::encoding::Context) -> usize {
15153            8
15154        }
15155
15156        #[inline(always)]
15157        fn inline_size(_context: fidl::encoding::Context) -> usize {
15158            16
15159        }
15160    }
15161
15162    unsafe impl<D: fidl::encoding::ResourceDialect>
15163        fidl::encoding::Encode<WlanFullmacImplGetScheduledScanEnabledResponse, D>
15164        for &WlanFullmacImplGetScheduledScanEnabledResponse
15165    {
15166        unsafe fn encode(
15167            self,
15168            encoder: &mut fidl::encoding::Encoder<'_, D>,
15169            offset: usize,
15170            mut depth: fidl::encoding::Depth,
15171        ) -> fidl::Result<()> {
15172            encoder.debug_check_bounds::<WlanFullmacImplGetScheduledScanEnabledResponse>(offset);
15173            // Vector header
15174            let max_ordinal: u64 = self.max_ordinal_present();
15175            encoder.write_num(max_ordinal, offset);
15176            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15177            // Calling encoder.out_of_line_offset(0) is not allowed.
15178            if max_ordinal == 0 {
15179                return Ok(());
15180            }
15181            depth.increment()?;
15182            let envelope_size = 8;
15183            let bytes_len = max_ordinal as usize * envelope_size;
15184            #[allow(unused_variables)]
15185            let offset = encoder.out_of_line_offset(bytes_len);
15186            let mut _prev_end_offset: usize = 0;
15187            if 1 > max_ordinal {
15188                return Ok(());
15189            }
15190
15191            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15192            // are envelope_size bytes.
15193            let cur_offset: usize = (1 - 1) * envelope_size;
15194
15195            // Zero reserved fields.
15196            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15197
15198            // Safety:
15199            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15200            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15201            //   envelope_size bytes, there is always sufficient room.
15202            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
15203            self.active_txn_ids.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
15204            encoder, offset + cur_offset, depth
15205        )?;
15206
15207            _prev_end_offset = cur_offset + envelope_size;
15208
15209            Ok(())
15210        }
15211    }
15212
15213    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15214        for WlanFullmacImplGetScheduledScanEnabledResponse
15215    {
15216        #[inline(always)]
15217        fn new_empty() -> Self {
15218            Self::default()
15219        }
15220
15221        unsafe fn decode(
15222            &mut self,
15223            decoder: &mut fidl::encoding::Decoder<'_, D>,
15224            offset: usize,
15225            mut depth: fidl::encoding::Depth,
15226        ) -> fidl::Result<()> {
15227            decoder.debug_check_bounds::<Self>(offset);
15228            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15229                None => return Err(fidl::Error::NotNullable),
15230                Some(len) => len,
15231            };
15232            // Calling decoder.out_of_line_offset(0) is not allowed.
15233            if len == 0 {
15234                return Ok(());
15235            };
15236            depth.increment()?;
15237            let envelope_size = 8;
15238            let bytes_len = len * envelope_size;
15239            let offset = decoder.out_of_line_offset(bytes_len)?;
15240            // Decode the envelope for each type.
15241            let mut _next_ordinal_to_read = 0;
15242            let mut next_offset = offset;
15243            let end_offset = offset + bytes_len;
15244            _next_ordinal_to_read += 1;
15245            if next_offset >= end_offset {
15246                return Ok(());
15247            }
15248
15249            // Decode unknown envelopes for gaps in ordinals.
15250            while _next_ordinal_to_read < 1 {
15251                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15252                _next_ordinal_to_read += 1;
15253                next_offset += envelope_size;
15254            }
15255
15256            let next_out_of_line = decoder.next_out_of_line();
15257            let handles_before = decoder.remaining_handles();
15258            if let Some((inlined, num_bytes, num_handles)) =
15259                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15260            {
15261                let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15262                if inlined != (member_inline_size <= 4) {
15263                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15264                }
15265                let inner_offset;
15266                let mut inner_depth = depth.clone();
15267                if inlined {
15268                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15269                    inner_offset = next_offset;
15270                } else {
15271                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15272                    inner_depth.increment()?;
15273                }
15274                let val_ref = self.active_txn_ids.get_or_insert_with(|| {
15275                    fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
15276                });
15277                fidl::decode!(
15278                    fidl::encoding::UnboundedVector<u64>,
15279                    D,
15280                    val_ref,
15281                    decoder,
15282                    inner_offset,
15283                    inner_depth
15284                )?;
15285                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15286                {
15287                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15288                }
15289                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15290                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15291                }
15292            }
15293
15294            next_offset += envelope_size;
15295
15296            // Decode the remaining unknown envelopes.
15297            while next_offset < end_offset {
15298                _next_ordinal_to_read += 1;
15299                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15300                next_offset += envelope_size;
15301            }
15302
15303            Ok(())
15304        }
15305    }
15306
15307    impl WlanFullmacImplQueryApfPacketFilterSupportResponse {
15308        #[inline(always)]
15309        fn max_ordinal_present(&self) -> u64 {
15310            if let Some(_) = self.resp {
15311                return 1;
15312            }
15313            0
15314        }
15315    }
15316
15317    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryApfPacketFilterSupportResponse {
15318        type Borrowed<'a> = &'a Self;
15319        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15320            value
15321        }
15322    }
15323
15324    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryApfPacketFilterSupportResponse {
15325        type Owned = Self;
15326
15327        #[inline(always)]
15328        fn inline_align(_context: fidl::encoding::Context) -> usize {
15329            8
15330        }
15331
15332        #[inline(always)]
15333        fn inline_size(_context: fidl::encoding::Context) -> usize {
15334            16
15335        }
15336    }
15337
15338    unsafe impl<D: fidl::encoding::ResourceDialect>
15339        fidl::encoding::Encode<WlanFullmacImplQueryApfPacketFilterSupportResponse, D>
15340        for &WlanFullmacImplQueryApfPacketFilterSupportResponse
15341    {
15342        unsafe fn encode(
15343            self,
15344            encoder: &mut fidl::encoding::Encoder<'_, D>,
15345            offset: usize,
15346            mut depth: fidl::encoding::Depth,
15347        ) -> fidl::Result<()> {
15348            encoder
15349                .debug_check_bounds::<WlanFullmacImplQueryApfPacketFilterSupportResponse>(offset);
15350            // Vector header
15351            let max_ordinal: u64 = self.max_ordinal_present();
15352            encoder.write_num(max_ordinal, offset);
15353            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15354            // Calling encoder.out_of_line_offset(0) is not allowed.
15355            if max_ordinal == 0 {
15356                return Ok(());
15357            }
15358            depth.increment()?;
15359            let envelope_size = 8;
15360            let bytes_len = max_ordinal as usize * envelope_size;
15361            #[allow(unused_variables)]
15362            let offset = encoder.out_of_line_offset(bytes_len);
15363            let mut _prev_end_offset: usize = 0;
15364            if 1 > max_ordinal {
15365                return Ok(());
15366            }
15367
15368            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15369            // are envelope_size bytes.
15370            let cur_offset: usize = (1 - 1) * envelope_size;
15371
15372            // Zero reserved fields.
15373            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15374
15375            // Safety:
15376            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15377            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15378            //   envelope_size bytes, there is always sufficient room.
15379            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport, D>(
15380            self.resp.as_ref().map(<fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport as fidl::encoding::ValueTypeMarker>::borrow),
15381            encoder, offset + cur_offset, depth
15382        )?;
15383
15384            _prev_end_offset = cur_offset + envelope_size;
15385
15386            Ok(())
15387        }
15388    }
15389
15390    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15391        for WlanFullmacImplQueryApfPacketFilterSupportResponse
15392    {
15393        #[inline(always)]
15394        fn new_empty() -> Self {
15395            Self::default()
15396        }
15397
15398        unsafe fn decode(
15399            &mut self,
15400            decoder: &mut fidl::encoding::Decoder<'_, D>,
15401            offset: usize,
15402            mut depth: fidl::encoding::Depth,
15403        ) -> fidl::Result<()> {
15404            decoder.debug_check_bounds::<Self>(offset);
15405            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15406                None => return Err(fidl::Error::NotNullable),
15407                Some(len) => len,
15408            };
15409            // Calling decoder.out_of_line_offset(0) is not allowed.
15410            if len == 0 {
15411                return Ok(());
15412            };
15413            depth.increment()?;
15414            let envelope_size = 8;
15415            let bytes_len = len * envelope_size;
15416            let offset = decoder.out_of_line_offset(bytes_len)?;
15417            // Decode the envelope for each type.
15418            let mut _next_ordinal_to_read = 0;
15419            let mut next_offset = offset;
15420            let end_offset = offset + bytes_len;
15421            _next_ordinal_to_read += 1;
15422            if next_offset >= end_offset {
15423                return Ok(());
15424            }
15425
15426            // Decode unknown envelopes for gaps in ordinals.
15427            while _next_ordinal_to_read < 1 {
15428                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15429                _next_ordinal_to_read += 1;
15430                next_offset += envelope_size;
15431            }
15432
15433            let next_out_of_line = decoder.next_out_of_line();
15434            let handles_before = decoder.remaining_handles();
15435            if let Some((inlined, num_bytes, num_handles)) =
15436                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15437            {
15438                let member_inline_size = <fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15439                if inlined != (member_inline_size <= 4) {
15440                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15441                }
15442                let inner_offset;
15443                let mut inner_depth = depth.clone();
15444                if inlined {
15445                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15446                    inner_offset = next_offset;
15447                } else {
15448                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15449                    inner_depth.increment()?;
15450                }
15451                let val_ref = self.resp.get_or_insert_with(|| {
15452                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport, D)
15453                });
15454                fidl::decode!(
15455                    fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport,
15456                    D,
15457                    val_ref,
15458                    decoder,
15459                    inner_offset,
15460                    inner_depth
15461                )?;
15462                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15463                {
15464                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15465                }
15466                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15467                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15468                }
15469            }
15470
15471            next_offset += envelope_size;
15472
15473            // Decode the remaining unknown envelopes.
15474            while next_offset < end_offset {
15475                _next_ordinal_to_read += 1;
15476                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15477                next_offset += envelope_size;
15478            }
15479
15480            Ok(())
15481        }
15482    }
15483
15484    impl WlanFullmacImplQuerySecuritySupportResponse {
15485        #[inline(always)]
15486        fn max_ordinal_present(&self) -> u64 {
15487            if let Some(_) = self.resp {
15488                return 1;
15489            }
15490            0
15491        }
15492    }
15493
15494    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
15495        type Borrowed<'a> = &'a Self;
15496        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15497            value
15498        }
15499    }
15500
15501    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
15502        type Owned = Self;
15503
15504        #[inline(always)]
15505        fn inline_align(_context: fidl::encoding::Context) -> usize {
15506            8
15507        }
15508
15509        #[inline(always)]
15510        fn inline_size(_context: fidl::encoding::Context) -> usize {
15511            16
15512        }
15513    }
15514
15515    unsafe impl<D: fidl::encoding::ResourceDialect>
15516        fidl::encoding::Encode<WlanFullmacImplQuerySecuritySupportResponse, D>
15517        for &WlanFullmacImplQuerySecuritySupportResponse
15518    {
15519        unsafe fn encode(
15520            self,
15521            encoder: &mut fidl::encoding::Encoder<'_, D>,
15522            offset: usize,
15523            mut depth: fidl::encoding::Depth,
15524        ) -> fidl::Result<()> {
15525            encoder.debug_check_bounds::<WlanFullmacImplQuerySecuritySupportResponse>(offset);
15526            // Vector header
15527            let max_ordinal: u64 = self.max_ordinal_present();
15528            encoder.write_num(max_ordinal, offset);
15529            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15530            // Calling encoder.out_of_line_offset(0) is not allowed.
15531            if max_ordinal == 0 {
15532                return Ok(());
15533            }
15534            depth.increment()?;
15535            let envelope_size = 8;
15536            let bytes_len = max_ordinal as usize * envelope_size;
15537            #[allow(unused_variables)]
15538            let offset = encoder.out_of_line_offset(bytes_len);
15539            let mut _prev_end_offset: usize = 0;
15540            if 1 > max_ordinal {
15541                return Ok(());
15542            }
15543
15544            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15545            // are envelope_size bytes.
15546            let cur_offset: usize = (1 - 1) * envelope_size;
15547
15548            // Zero reserved fields.
15549            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15550
15551            // Safety:
15552            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15553            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15554            //   envelope_size bytes, there is always sufficient room.
15555            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::SecuritySupport, D>(
15556            self.resp.as_ref().map(<fidl_fuchsia_wlan_common_common::SecuritySupport as fidl::encoding::ValueTypeMarker>::borrow),
15557            encoder, offset + cur_offset, depth
15558        )?;
15559
15560            _prev_end_offset = cur_offset + envelope_size;
15561
15562            Ok(())
15563        }
15564    }
15565
15566    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15567        for WlanFullmacImplQuerySecuritySupportResponse
15568    {
15569        #[inline(always)]
15570        fn new_empty() -> Self {
15571            Self::default()
15572        }
15573
15574        unsafe fn decode(
15575            &mut self,
15576            decoder: &mut fidl::encoding::Decoder<'_, D>,
15577            offset: usize,
15578            mut depth: fidl::encoding::Depth,
15579        ) -> fidl::Result<()> {
15580            decoder.debug_check_bounds::<Self>(offset);
15581            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15582                None => return Err(fidl::Error::NotNullable),
15583                Some(len) => len,
15584            };
15585            // Calling decoder.out_of_line_offset(0) is not allowed.
15586            if len == 0 {
15587                return Ok(());
15588            };
15589            depth.increment()?;
15590            let envelope_size = 8;
15591            let bytes_len = len * envelope_size;
15592            let offset = decoder.out_of_line_offset(bytes_len)?;
15593            // Decode the envelope for each type.
15594            let mut _next_ordinal_to_read = 0;
15595            let mut next_offset = offset;
15596            let end_offset = offset + bytes_len;
15597            _next_ordinal_to_read += 1;
15598            if next_offset >= end_offset {
15599                return Ok(());
15600            }
15601
15602            // Decode unknown envelopes for gaps in ordinals.
15603            while _next_ordinal_to_read < 1 {
15604                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15605                _next_ordinal_to_read += 1;
15606                next_offset += envelope_size;
15607            }
15608
15609            let next_out_of_line = decoder.next_out_of_line();
15610            let handles_before = decoder.remaining_handles();
15611            if let Some((inlined, num_bytes, num_handles)) =
15612                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15613            {
15614                let member_inline_size = <fidl_fuchsia_wlan_common_common::SecuritySupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15615                if inlined != (member_inline_size <= 4) {
15616                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15617                }
15618                let inner_offset;
15619                let mut inner_depth = depth.clone();
15620                if inlined {
15621                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15622                    inner_offset = next_offset;
15623                } else {
15624                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15625                    inner_depth.increment()?;
15626                }
15627                let val_ref = self.resp.get_or_insert_with(|| {
15628                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::SecuritySupport, D)
15629                });
15630                fidl::decode!(
15631                    fidl_fuchsia_wlan_common_common::SecuritySupport,
15632                    D,
15633                    val_ref,
15634                    decoder,
15635                    inner_offset,
15636                    inner_depth
15637                )?;
15638                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15639                {
15640                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15641                }
15642                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15643                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15644                }
15645            }
15646
15647            next_offset += envelope_size;
15648
15649            // Decode the remaining unknown envelopes.
15650            while next_offset < end_offset {
15651                _next_ordinal_to_read += 1;
15652                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15653                next_offset += envelope_size;
15654            }
15655
15656            Ok(())
15657        }
15658    }
15659
15660    impl WlanFullmacImplQuerySpectrumManagementSupportResponse {
15661        #[inline(always)]
15662        fn max_ordinal_present(&self) -> u64 {
15663            if let Some(_) = self.resp {
15664                return 1;
15665            }
15666            0
15667        }
15668    }
15669
15670    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
15671        type Borrowed<'a> = &'a Self;
15672        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15673            value
15674        }
15675    }
15676
15677    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
15678        type Owned = Self;
15679
15680        #[inline(always)]
15681        fn inline_align(_context: fidl::encoding::Context) -> usize {
15682            8
15683        }
15684
15685        #[inline(always)]
15686        fn inline_size(_context: fidl::encoding::Context) -> usize {
15687            16
15688        }
15689    }
15690
15691    unsafe impl<D: fidl::encoding::ResourceDialect>
15692        fidl::encoding::Encode<WlanFullmacImplQuerySpectrumManagementSupportResponse, D>
15693        for &WlanFullmacImplQuerySpectrumManagementSupportResponse
15694    {
15695        unsafe fn encode(
15696            self,
15697            encoder: &mut fidl::encoding::Encoder<'_, D>,
15698            offset: usize,
15699            mut depth: fidl::encoding::Depth,
15700        ) -> fidl::Result<()> {
15701            encoder.debug_check_bounds::<WlanFullmacImplQuerySpectrumManagementSupportResponse>(
15702                offset,
15703            );
15704            // Vector header
15705            let max_ordinal: u64 = self.max_ordinal_present();
15706            encoder.write_num(max_ordinal, offset);
15707            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15708            // Calling encoder.out_of_line_offset(0) is not allowed.
15709            if max_ordinal == 0 {
15710                return Ok(());
15711            }
15712            depth.increment()?;
15713            let envelope_size = 8;
15714            let bytes_len = max_ordinal as usize * envelope_size;
15715            #[allow(unused_variables)]
15716            let offset = encoder.out_of_line_offset(bytes_len);
15717            let mut _prev_end_offset: usize = 0;
15718            if 1 > max_ordinal {
15719                return Ok(());
15720            }
15721
15722            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15723            // are envelope_size bytes.
15724            let cur_offset: usize = (1 - 1) * envelope_size;
15725
15726            // Zero reserved fields.
15727            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15728
15729            // Safety:
15730            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15731            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15732            //   envelope_size bytes, there is always sufficient room.
15733            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::SpectrumManagementSupport, D>(
15734            self.resp.as_ref().map(<fidl_fuchsia_wlan_common_common::SpectrumManagementSupport as fidl::encoding::ValueTypeMarker>::borrow),
15735            encoder, offset + cur_offset, depth
15736        )?;
15737
15738            _prev_end_offset = cur_offset + envelope_size;
15739
15740            Ok(())
15741        }
15742    }
15743
15744    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15745        for WlanFullmacImplQuerySpectrumManagementSupportResponse
15746    {
15747        #[inline(always)]
15748        fn new_empty() -> Self {
15749            Self::default()
15750        }
15751
15752        unsafe fn decode(
15753            &mut self,
15754            decoder: &mut fidl::encoding::Decoder<'_, D>,
15755            offset: usize,
15756            mut depth: fidl::encoding::Depth,
15757        ) -> fidl::Result<()> {
15758            decoder.debug_check_bounds::<Self>(offset);
15759            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15760                None => return Err(fidl::Error::NotNullable),
15761                Some(len) => len,
15762            };
15763            // Calling decoder.out_of_line_offset(0) is not allowed.
15764            if len == 0 {
15765                return Ok(());
15766            };
15767            depth.increment()?;
15768            let envelope_size = 8;
15769            let bytes_len = len * envelope_size;
15770            let offset = decoder.out_of_line_offset(bytes_len)?;
15771            // Decode the envelope for each type.
15772            let mut _next_ordinal_to_read = 0;
15773            let mut next_offset = offset;
15774            let end_offset = offset + bytes_len;
15775            _next_ordinal_to_read += 1;
15776            if next_offset >= end_offset {
15777                return Ok(());
15778            }
15779
15780            // Decode unknown envelopes for gaps in ordinals.
15781            while _next_ordinal_to_read < 1 {
15782                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15783                _next_ordinal_to_read += 1;
15784                next_offset += envelope_size;
15785            }
15786
15787            let next_out_of_line = decoder.next_out_of_line();
15788            let handles_before = decoder.remaining_handles();
15789            if let Some((inlined, num_bytes, num_handles)) =
15790                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15791            {
15792                let member_inline_size = <fidl_fuchsia_wlan_common_common::SpectrumManagementSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15793                if inlined != (member_inline_size <= 4) {
15794                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15795                }
15796                let inner_offset;
15797                let mut inner_depth = depth.clone();
15798                if inlined {
15799                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15800                    inner_offset = next_offset;
15801                } else {
15802                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15803                    inner_depth.increment()?;
15804                }
15805                let val_ref = self.resp.get_or_insert_with(|| {
15806                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::SpectrumManagementSupport, D)
15807                });
15808                fidl::decode!(
15809                    fidl_fuchsia_wlan_common_common::SpectrumManagementSupport,
15810                    D,
15811                    val_ref,
15812                    decoder,
15813                    inner_offset,
15814                    inner_depth
15815                )?;
15816                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15817                {
15818                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15819                }
15820                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15821                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15822                }
15823            }
15824
15825            next_offset += envelope_size;
15826
15827            // Decode the remaining unknown envelopes.
15828            while next_offset < end_offset {
15829                _next_ordinal_to_read += 1;
15830                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15831                next_offset += envelope_size;
15832            }
15833
15834            Ok(())
15835        }
15836    }
15837
15838    impl WlanFullmacImplQueryTelemetrySupportResponse {
15839        #[inline(always)]
15840        fn max_ordinal_present(&self) -> u64 {
15841            if let Some(_) = self.resp {
15842                return 1;
15843            }
15844            0
15845        }
15846    }
15847
15848    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
15849        type Borrowed<'a> = &'a Self;
15850        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15851            value
15852        }
15853    }
15854
15855    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
15856        type Owned = Self;
15857
15858        #[inline(always)]
15859        fn inline_align(_context: fidl::encoding::Context) -> usize {
15860            8
15861        }
15862
15863        #[inline(always)]
15864        fn inline_size(_context: fidl::encoding::Context) -> usize {
15865            16
15866        }
15867    }
15868
15869    unsafe impl<D: fidl::encoding::ResourceDialect>
15870        fidl::encoding::Encode<WlanFullmacImplQueryTelemetrySupportResponse, D>
15871        for &WlanFullmacImplQueryTelemetrySupportResponse
15872    {
15873        unsafe fn encode(
15874            self,
15875            encoder: &mut fidl::encoding::Encoder<'_, D>,
15876            offset: usize,
15877            mut depth: fidl::encoding::Depth,
15878        ) -> fidl::Result<()> {
15879            encoder.debug_check_bounds::<WlanFullmacImplQueryTelemetrySupportResponse>(offset);
15880            // Vector header
15881            let max_ordinal: u64 = self.max_ordinal_present();
15882            encoder.write_num(max_ordinal, offset);
15883            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15884            // Calling encoder.out_of_line_offset(0) is not allowed.
15885            if max_ordinal == 0 {
15886                return Ok(());
15887            }
15888            depth.increment()?;
15889            let envelope_size = 8;
15890            let bytes_len = max_ordinal as usize * envelope_size;
15891            #[allow(unused_variables)]
15892            let offset = encoder.out_of_line_offset(bytes_len);
15893            let mut _prev_end_offset: usize = 0;
15894            if 1 > max_ordinal {
15895                return Ok(());
15896            }
15897
15898            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15899            // are envelope_size bytes.
15900            let cur_offset: usize = (1 - 1) * envelope_size;
15901
15902            // Zero reserved fields.
15903            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15904
15905            // Safety:
15906            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15907            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15908            //   envelope_size bytes, there is always sufficient room.
15909            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_stats_common::TelemetrySupport, D>(
15910            self.resp.as_ref().map(<fidl_fuchsia_wlan_stats_common::TelemetrySupport as fidl::encoding::ValueTypeMarker>::borrow),
15911            encoder, offset + cur_offset, depth
15912        )?;
15913
15914            _prev_end_offset = cur_offset + envelope_size;
15915
15916            Ok(())
15917        }
15918    }
15919
15920    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15921        for WlanFullmacImplQueryTelemetrySupportResponse
15922    {
15923        #[inline(always)]
15924        fn new_empty() -> Self {
15925            Self::default()
15926        }
15927
15928        unsafe fn decode(
15929            &mut self,
15930            decoder: &mut fidl::encoding::Decoder<'_, D>,
15931            offset: usize,
15932            mut depth: fidl::encoding::Depth,
15933        ) -> fidl::Result<()> {
15934            decoder.debug_check_bounds::<Self>(offset);
15935            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15936                None => return Err(fidl::Error::NotNullable),
15937                Some(len) => len,
15938            };
15939            // Calling decoder.out_of_line_offset(0) is not allowed.
15940            if len == 0 {
15941                return Ok(());
15942            };
15943            depth.increment()?;
15944            let envelope_size = 8;
15945            let bytes_len = len * envelope_size;
15946            let offset = decoder.out_of_line_offset(bytes_len)?;
15947            // Decode the envelope for each type.
15948            let mut _next_ordinal_to_read = 0;
15949            let mut next_offset = offset;
15950            let end_offset = offset + bytes_len;
15951            _next_ordinal_to_read += 1;
15952            if next_offset >= end_offset {
15953                return Ok(());
15954            }
15955
15956            // Decode unknown envelopes for gaps in ordinals.
15957            while _next_ordinal_to_read < 1 {
15958                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15959                _next_ordinal_to_read += 1;
15960                next_offset += envelope_size;
15961            }
15962
15963            let next_out_of_line = decoder.next_out_of_line();
15964            let handles_before = decoder.remaining_handles();
15965            if let Some((inlined, num_bytes, num_handles)) =
15966                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15967            {
15968                let member_inline_size = <fidl_fuchsia_wlan_stats_common::TelemetrySupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15969                if inlined != (member_inline_size <= 4) {
15970                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15971                }
15972                let inner_offset;
15973                let mut inner_depth = depth.clone();
15974                if inlined {
15975                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15976                    inner_offset = next_offset;
15977                } else {
15978                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15979                    inner_depth.increment()?;
15980                }
15981                let val_ref = self.resp.get_or_insert_with(|| {
15982                    fidl::new_empty!(fidl_fuchsia_wlan_stats_common::TelemetrySupport, D)
15983                });
15984                fidl::decode!(
15985                    fidl_fuchsia_wlan_stats_common::TelemetrySupport,
15986                    D,
15987                    val_ref,
15988                    decoder,
15989                    inner_offset,
15990                    inner_depth
15991                )?;
15992                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15993                {
15994                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15995                }
15996                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15997                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15998                }
15999            }
16000
16001            next_offset += envelope_size;
16002
16003            // Decode the remaining unknown envelopes.
16004            while next_offset < end_offset {
16005                _next_ordinal_to_read += 1;
16006                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16007                next_offset += envelope_size;
16008            }
16009
16010            Ok(())
16011        }
16012    }
16013
16014    impl WlanFullmacImplQueryResponse {
16015        #[inline(always)]
16016        fn max_ordinal_present(&self) -> u64 {
16017            if let Some(_) = self.factory_addr {
16018                return 4;
16019            }
16020            if let Some(_) = self.band_caps {
16021                return 3;
16022            }
16023            if let Some(_) = self.role {
16024                return 2;
16025            }
16026            if let Some(_) = self.sta_addr {
16027                return 1;
16028            }
16029            0
16030        }
16031    }
16032
16033    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryResponse {
16034        type Borrowed<'a> = &'a Self;
16035        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16036            value
16037        }
16038    }
16039
16040    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryResponse {
16041        type Owned = Self;
16042
16043        #[inline(always)]
16044        fn inline_align(_context: fidl::encoding::Context) -> usize {
16045            8
16046        }
16047
16048        #[inline(always)]
16049        fn inline_size(_context: fidl::encoding::Context) -> usize {
16050            16
16051        }
16052    }
16053
16054    unsafe impl<D: fidl::encoding::ResourceDialect>
16055        fidl::encoding::Encode<WlanFullmacImplQueryResponse, D> for &WlanFullmacImplQueryResponse
16056    {
16057        unsafe fn encode(
16058            self,
16059            encoder: &mut fidl::encoding::Encoder<'_, D>,
16060            offset: usize,
16061            mut depth: fidl::encoding::Depth,
16062        ) -> fidl::Result<()> {
16063            encoder.debug_check_bounds::<WlanFullmacImplQueryResponse>(offset);
16064            // Vector header
16065            let max_ordinal: u64 = self.max_ordinal_present();
16066            encoder.write_num(max_ordinal, offset);
16067            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16068            // Calling encoder.out_of_line_offset(0) is not allowed.
16069            if max_ordinal == 0 {
16070                return Ok(());
16071            }
16072            depth.increment()?;
16073            let envelope_size = 8;
16074            let bytes_len = max_ordinal as usize * envelope_size;
16075            #[allow(unused_variables)]
16076            let offset = encoder.out_of_line_offset(bytes_len);
16077            let mut _prev_end_offset: usize = 0;
16078            if 1 > max_ordinal {
16079                return Ok(());
16080            }
16081
16082            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16083            // are envelope_size bytes.
16084            let cur_offset: usize = (1 - 1) * envelope_size;
16085
16086            // Zero reserved fields.
16087            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16088
16089            // Safety:
16090            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16091            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16092            //   envelope_size bytes, there is always sufficient room.
16093            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
16094                self.sta_addr
16095                    .as_ref()
16096                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
16097                encoder,
16098                offset + cur_offset,
16099                depth,
16100            )?;
16101
16102            _prev_end_offset = cur_offset + envelope_size;
16103            if 2 > max_ordinal {
16104                return Ok(());
16105            }
16106
16107            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16108            // are envelope_size bytes.
16109            let cur_offset: usize = (2 - 1) * envelope_size;
16110
16111            // Zero reserved fields.
16112            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16113
16114            // Safety:
16115            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16116            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16117            //   envelope_size bytes, there is always sufficient room.
16118            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::WlanMacRole, D>(
16119            self.role.as_ref().map(<fidl_fuchsia_wlan_common_common::WlanMacRole as fidl::encoding::ValueTypeMarker>::borrow),
16120            encoder, offset + cur_offset, depth
16121        )?;
16122
16123            _prev_end_offset = cur_offset + envelope_size;
16124            if 3 > max_ordinal {
16125                return Ok(());
16126            }
16127
16128            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16129            // are envelope_size bytes.
16130            let cur_offset: usize = (3 - 1) * envelope_size;
16131
16132            // Zero reserved fields.
16133            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16134
16135            // Safety:
16136            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16137            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16138            //   envelope_size bytes, there is always sufficient room.
16139            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BandCapability, 16>, D>(
16140            self.band_caps.as_ref().map(<fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::ValueTypeMarker>::borrow),
16141            encoder, offset + cur_offset, depth
16142        )?;
16143
16144            _prev_end_offset = cur_offset + envelope_size;
16145            if 4 > max_ordinal {
16146                return Ok(());
16147            }
16148
16149            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16150            // are envelope_size bytes.
16151            let cur_offset: usize = (4 - 1) * envelope_size;
16152
16153            // Zero reserved fields.
16154            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16155
16156            // Safety:
16157            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16158            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16159            //   envelope_size bytes, there is always sufficient room.
16160            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
16161                self.factory_addr
16162                    .as_ref()
16163                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
16164                encoder,
16165                offset + cur_offset,
16166                depth,
16167            )?;
16168
16169            _prev_end_offset = cur_offset + envelope_size;
16170
16171            Ok(())
16172        }
16173    }
16174
16175    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16176        for WlanFullmacImplQueryResponse
16177    {
16178        #[inline(always)]
16179        fn new_empty() -> Self {
16180            Self::default()
16181        }
16182
16183        unsafe fn decode(
16184            &mut self,
16185            decoder: &mut fidl::encoding::Decoder<'_, D>,
16186            offset: usize,
16187            mut depth: fidl::encoding::Depth,
16188        ) -> fidl::Result<()> {
16189            decoder.debug_check_bounds::<Self>(offset);
16190            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16191                None => return Err(fidl::Error::NotNullable),
16192                Some(len) => len,
16193            };
16194            // Calling decoder.out_of_line_offset(0) is not allowed.
16195            if len == 0 {
16196                return Ok(());
16197            };
16198            depth.increment()?;
16199            let envelope_size = 8;
16200            let bytes_len = len * envelope_size;
16201            let offset = decoder.out_of_line_offset(bytes_len)?;
16202            // Decode the envelope for each type.
16203            let mut _next_ordinal_to_read = 0;
16204            let mut next_offset = offset;
16205            let end_offset = offset + bytes_len;
16206            _next_ordinal_to_read += 1;
16207            if next_offset >= end_offset {
16208                return Ok(());
16209            }
16210
16211            // Decode unknown envelopes for gaps in ordinals.
16212            while _next_ordinal_to_read < 1 {
16213                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16214                _next_ordinal_to_read += 1;
16215                next_offset += envelope_size;
16216            }
16217
16218            let next_out_of_line = decoder.next_out_of_line();
16219            let handles_before = decoder.remaining_handles();
16220            if let Some((inlined, num_bytes, num_handles)) =
16221                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16222            {
16223                let member_inline_size =
16224                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
16225                        decoder.context,
16226                    );
16227                if inlined != (member_inline_size <= 4) {
16228                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16229                }
16230                let inner_offset;
16231                let mut inner_depth = depth.clone();
16232                if inlined {
16233                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16234                    inner_offset = next_offset;
16235                } else {
16236                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16237                    inner_depth.increment()?;
16238                }
16239                let val_ref = self
16240                    .sta_addr
16241                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
16242                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
16243                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16244                {
16245                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16246                }
16247                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16248                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16249                }
16250            }
16251
16252            next_offset += envelope_size;
16253            _next_ordinal_to_read += 1;
16254            if next_offset >= end_offset {
16255                return Ok(());
16256            }
16257
16258            // Decode unknown envelopes for gaps in ordinals.
16259            while _next_ordinal_to_read < 2 {
16260                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16261                _next_ordinal_to_read += 1;
16262                next_offset += envelope_size;
16263            }
16264
16265            let next_out_of_line = decoder.next_out_of_line();
16266            let handles_before = decoder.remaining_handles();
16267            if let Some((inlined, num_bytes, num_handles)) =
16268                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16269            {
16270                let member_inline_size = <fidl_fuchsia_wlan_common_common::WlanMacRole as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16271                if inlined != (member_inline_size <= 4) {
16272                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16273                }
16274                let inner_offset;
16275                let mut inner_depth = depth.clone();
16276                if inlined {
16277                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16278                    inner_offset = next_offset;
16279                } else {
16280                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16281                    inner_depth.increment()?;
16282                }
16283                let val_ref = self.role.get_or_insert_with(|| {
16284                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::WlanMacRole, D)
16285                });
16286                fidl::decode!(
16287                    fidl_fuchsia_wlan_common_common::WlanMacRole,
16288                    D,
16289                    val_ref,
16290                    decoder,
16291                    inner_offset,
16292                    inner_depth
16293                )?;
16294                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16295                {
16296                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16297                }
16298                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16299                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16300                }
16301            }
16302
16303            next_offset += envelope_size;
16304            _next_ordinal_to_read += 1;
16305            if next_offset >= end_offset {
16306                return Ok(());
16307            }
16308
16309            // Decode unknown envelopes for gaps in ordinals.
16310            while _next_ordinal_to_read < 3 {
16311                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16312                _next_ordinal_to_read += 1;
16313                next_offset += envelope_size;
16314            }
16315
16316            let next_out_of_line = decoder.next_out_of_line();
16317            let handles_before = decoder.remaining_handles();
16318            if let Some((inlined, num_bytes, num_handles)) =
16319                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16320            {
16321                let member_inline_size = <fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16322                if inlined != (member_inline_size <= 4) {
16323                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16324                }
16325                let inner_offset;
16326                let mut inner_depth = depth.clone();
16327                if inlined {
16328                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16329                    inner_offset = next_offset;
16330                } else {
16331                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16332                    inner_depth.increment()?;
16333                }
16334                let val_ref = self.band_caps.get_or_insert_with(
16335                    || fidl::new_empty!(fidl::encoding::Vector<BandCapability, 16>, D),
16336                );
16337                fidl::decode!(fidl::encoding::Vector<BandCapability, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
16338                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16339                {
16340                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16341                }
16342                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16343                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16344                }
16345            }
16346
16347            next_offset += envelope_size;
16348            _next_ordinal_to_read += 1;
16349            if next_offset >= end_offset {
16350                return Ok(());
16351            }
16352
16353            // Decode unknown envelopes for gaps in ordinals.
16354            while _next_ordinal_to_read < 4 {
16355                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16356                _next_ordinal_to_read += 1;
16357                next_offset += envelope_size;
16358            }
16359
16360            let next_out_of_line = decoder.next_out_of_line();
16361            let handles_before = decoder.remaining_handles();
16362            if let Some((inlined, num_bytes, num_handles)) =
16363                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16364            {
16365                let member_inline_size =
16366                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
16367                        decoder.context,
16368                    );
16369                if inlined != (member_inline_size <= 4) {
16370                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16371                }
16372                let inner_offset;
16373                let mut inner_depth = depth.clone();
16374                if inlined {
16375                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16376                    inner_offset = next_offset;
16377                } else {
16378                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16379                    inner_depth.increment()?;
16380                }
16381                let val_ref = self
16382                    .factory_addr
16383                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
16384                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
16385                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16386                {
16387                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16388                }
16389                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16390                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16391                }
16392            }
16393
16394            next_offset += envelope_size;
16395
16396            // Decode the remaining unknown envelopes.
16397            while next_offset < end_offset {
16398                _next_ordinal_to_read += 1;
16399                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16400                next_offset += envelope_size;
16401            }
16402
16403            Ok(())
16404        }
16405    }
16406
16407    impl WlanFullmacImplReadApfPacketFilterDataResponse {
16408        #[inline(always)]
16409        fn max_ordinal_present(&self) -> u64 {
16410            if let Some(_) = self.memory {
16411                return 1;
16412            }
16413            0
16414        }
16415    }
16416
16417    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplReadApfPacketFilterDataResponse {
16418        type Borrowed<'a> = &'a Self;
16419        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16420            value
16421        }
16422    }
16423
16424    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplReadApfPacketFilterDataResponse {
16425        type Owned = Self;
16426
16427        #[inline(always)]
16428        fn inline_align(_context: fidl::encoding::Context) -> usize {
16429            8
16430        }
16431
16432        #[inline(always)]
16433        fn inline_size(_context: fidl::encoding::Context) -> usize {
16434            16
16435        }
16436    }
16437
16438    unsafe impl<D: fidl::encoding::ResourceDialect>
16439        fidl::encoding::Encode<WlanFullmacImplReadApfPacketFilterDataResponse, D>
16440        for &WlanFullmacImplReadApfPacketFilterDataResponse
16441    {
16442        unsafe fn encode(
16443            self,
16444            encoder: &mut fidl::encoding::Encoder<'_, D>,
16445            offset: usize,
16446            mut depth: fidl::encoding::Depth,
16447        ) -> fidl::Result<()> {
16448            encoder.debug_check_bounds::<WlanFullmacImplReadApfPacketFilterDataResponse>(offset);
16449            // Vector header
16450            let max_ordinal: u64 = self.max_ordinal_present();
16451            encoder.write_num(max_ordinal, offset);
16452            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16453            // Calling encoder.out_of_line_offset(0) is not allowed.
16454            if max_ordinal == 0 {
16455                return Ok(());
16456            }
16457            depth.increment()?;
16458            let envelope_size = 8;
16459            let bytes_len = max_ordinal as usize * envelope_size;
16460            #[allow(unused_variables)]
16461            let offset = encoder.out_of_line_offset(bytes_len);
16462            let mut _prev_end_offset: usize = 0;
16463            if 1 > max_ordinal {
16464                return Ok(());
16465            }
16466
16467            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16468            // are envelope_size bytes.
16469            let cur_offset: usize = (1 - 1) * envelope_size;
16470
16471            // Zero reserved fields.
16472            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16473
16474            // Safety:
16475            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16476            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16477            //   envelope_size bytes, there is always sufficient room.
16478            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
16479            self.memory.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
16480            encoder, offset + cur_offset, depth
16481        )?;
16482
16483            _prev_end_offset = cur_offset + envelope_size;
16484
16485            Ok(())
16486        }
16487    }
16488
16489    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16490        for WlanFullmacImplReadApfPacketFilterDataResponse
16491    {
16492        #[inline(always)]
16493        fn new_empty() -> Self {
16494            Self::default()
16495        }
16496
16497        unsafe fn decode(
16498            &mut self,
16499            decoder: &mut fidl::encoding::Decoder<'_, D>,
16500            offset: usize,
16501            mut depth: fidl::encoding::Depth,
16502        ) -> fidl::Result<()> {
16503            decoder.debug_check_bounds::<Self>(offset);
16504            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16505                None => return Err(fidl::Error::NotNullable),
16506                Some(len) => len,
16507            };
16508            // Calling decoder.out_of_line_offset(0) is not allowed.
16509            if len == 0 {
16510                return Ok(());
16511            };
16512            depth.increment()?;
16513            let envelope_size = 8;
16514            let bytes_len = len * envelope_size;
16515            let offset = decoder.out_of_line_offset(bytes_len)?;
16516            // Decode the envelope for each type.
16517            let mut _next_ordinal_to_read = 0;
16518            let mut next_offset = offset;
16519            let end_offset = offset + bytes_len;
16520            _next_ordinal_to_read += 1;
16521            if next_offset >= end_offset {
16522                return Ok(());
16523            }
16524
16525            // Decode unknown envelopes for gaps in ordinals.
16526            while _next_ordinal_to_read < 1 {
16527                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16528                _next_ordinal_to_read += 1;
16529                next_offset += envelope_size;
16530            }
16531
16532            let next_out_of_line = decoder.next_out_of_line();
16533            let handles_before = decoder.remaining_handles();
16534            if let Some((inlined, num_bytes, num_handles)) =
16535                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16536            {
16537                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16538                if inlined != (member_inline_size <= 4) {
16539                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16540                }
16541                let inner_offset;
16542                let mut inner_depth = depth.clone();
16543                if inlined {
16544                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16545                    inner_offset = next_offset;
16546                } else {
16547                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16548                    inner_depth.increment()?;
16549                }
16550                let val_ref = self.memory.get_or_insert_with(|| {
16551                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
16552                });
16553                fidl::decode!(
16554                    fidl::encoding::UnboundedVector<u8>,
16555                    D,
16556                    val_ref,
16557                    decoder,
16558                    inner_offset,
16559                    inner_depth
16560                )?;
16561                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16562                {
16563                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16564                }
16565                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16566                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16567                }
16568            }
16569
16570            next_offset += envelope_size;
16571
16572            // Decode the remaining unknown envelopes.
16573            while next_offset < end_offset {
16574                _next_ordinal_to_read += 1;
16575                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16576                next_offset += envelope_size;
16577            }
16578
16579            Ok(())
16580        }
16581    }
16582
16583    impl WlanFullmacOwePublicKey {
16584        #[inline(always)]
16585        fn max_ordinal_present(&self) -> u64 {
16586            if let Some(_) = self.key {
16587                return 2;
16588            }
16589            if let Some(_) = self.group {
16590                return 1;
16591            }
16592            0
16593        }
16594    }
16595
16596    impl fidl::encoding::ValueTypeMarker for WlanFullmacOwePublicKey {
16597        type Borrowed<'a> = &'a Self;
16598        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16599            value
16600        }
16601    }
16602
16603    unsafe impl fidl::encoding::TypeMarker for WlanFullmacOwePublicKey {
16604        type Owned = Self;
16605
16606        #[inline(always)]
16607        fn inline_align(_context: fidl::encoding::Context) -> usize {
16608            8
16609        }
16610
16611        #[inline(always)]
16612        fn inline_size(_context: fidl::encoding::Context) -> usize {
16613            16
16614        }
16615    }
16616
16617    unsafe impl<D: fidl::encoding::ResourceDialect>
16618        fidl::encoding::Encode<WlanFullmacOwePublicKey, D> for &WlanFullmacOwePublicKey
16619    {
16620        unsafe fn encode(
16621            self,
16622            encoder: &mut fidl::encoding::Encoder<'_, D>,
16623            offset: usize,
16624            mut depth: fidl::encoding::Depth,
16625        ) -> fidl::Result<()> {
16626            encoder.debug_check_bounds::<WlanFullmacOwePublicKey>(offset);
16627            // Vector header
16628            let max_ordinal: u64 = self.max_ordinal_present();
16629            encoder.write_num(max_ordinal, offset);
16630            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16631            // Calling encoder.out_of_line_offset(0) is not allowed.
16632            if max_ordinal == 0 {
16633                return Ok(());
16634            }
16635            depth.increment()?;
16636            let envelope_size = 8;
16637            let bytes_len = max_ordinal as usize * envelope_size;
16638            #[allow(unused_variables)]
16639            let offset = encoder.out_of_line_offset(bytes_len);
16640            let mut _prev_end_offset: usize = 0;
16641            if 1 > max_ordinal {
16642                return Ok(());
16643            }
16644
16645            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16646            // are envelope_size bytes.
16647            let cur_offset: usize = (1 - 1) * envelope_size;
16648
16649            // Zero reserved fields.
16650            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16651
16652            // Safety:
16653            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16654            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16655            //   envelope_size bytes, there is always sufficient room.
16656            fidl::encoding::encode_in_envelope_optional::<u16, D>(
16657                self.group.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
16658                encoder,
16659                offset + cur_offset,
16660                depth,
16661            )?;
16662
16663            _prev_end_offset = cur_offset + envelope_size;
16664            if 2 > max_ordinal {
16665                return Ok(());
16666            }
16667
16668            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16669            // are envelope_size bytes.
16670            let cur_offset: usize = (2 - 1) * envelope_size;
16671
16672            // Zero reserved fields.
16673            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16674
16675            // Safety:
16676            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16677            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16678            //   envelope_size bytes, there is always sufficient room.
16679            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
16680            self.key.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
16681            encoder, offset + cur_offset, depth
16682        )?;
16683
16684            _prev_end_offset = cur_offset + envelope_size;
16685
16686            Ok(())
16687        }
16688    }
16689
16690    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16691        for WlanFullmacOwePublicKey
16692    {
16693        #[inline(always)]
16694        fn new_empty() -> Self {
16695            Self::default()
16696        }
16697
16698        unsafe fn decode(
16699            &mut self,
16700            decoder: &mut fidl::encoding::Decoder<'_, D>,
16701            offset: usize,
16702            mut depth: fidl::encoding::Depth,
16703        ) -> fidl::Result<()> {
16704            decoder.debug_check_bounds::<Self>(offset);
16705            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16706                None => return Err(fidl::Error::NotNullable),
16707                Some(len) => len,
16708            };
16709            // Calling decoder.out_of_line_offset(0) is not allowed.
16710            if len == 0 {
16711                return Ok(());
16712            };
16713            depth.increment()?;
16714            let envelope_size = 8;
16715            let bytes_len = len * envelope_size;
16716            let offset = decoder.out_of_line_offset(bytes_len)?;
16717            // Decode the envelope for each type.
16718            let mut _next_ordinal_to_read = 0;
16719            let mut next_offset = offset;
16720            let end_offset = offset + bytes_len;
16721            _next_ordinal_to_read += 1;
16722            if next_offset >= end_offset {
16723                return Ok(());
16724            }
16725
16726            // Decode unknown envelopes for gaps in ordinals.
16727            while _next_ordinal_to_read < 1 {
16728                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16729                _next_ordinal_to_read += 1;
16730                next_offset += envelope_size;
16731            }
16732
16733            let next_out_of_line = decoder.next_out_of_line();
16734            let handles_before = decoder.remaining_handles();
16735            if let Some((inlined, num_bytes, num_handles)) =
16736                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16737            {
16738                let member_inline_size =
16739                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16740                if inlined != (member_inline_size <= 4) {
16741                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16742                }
16743                let inner_offset;
16744                let mut inner_depth = depth.clone();
16745                if inlined {
16746                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16747                    inner_offset = next_offset;
16748                } else {
16749                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16750                    inner_depth.increment()?;
16751                }
16752                let val_ref = self.group.get_or_insert_with(|| fidl::new_empty!(u16, D));
16753                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
16754                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16755                {
16756                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16757                }
16758                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16759                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16760                }
16761            }
16762
16763            next_offset += envelope_size;
16764            _next_ordinal_to_read += 1;
16765            if next_offset >= end_offset {
16766                return Ok(());
16767            }
16768
16769            // Decode unknown envelopes for gaps in ordinals.
16770            while _next_ordinal_to_read < 2 {
16771                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16772                _next_ordinal_to_read += 1;
16773                next_offset += envelope_size;
16774            }
16775
16776            let next_out_of_line = decoder.next_out_of_line();
16777            let handles_before = decoder.remaining_handles();
16778            if let Some((inlined, num_bytes, num_handles)) =
16779                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16780            {
16781                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16782                if inlined != (member_inline_size <= 4) {
16783                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16784                }
16785                let inner_offset;
16786                let mut inner_depth = depth.clone();
16787                if inlined {
16788                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16789                    inner_offset = next_offset;
16790                } else {
16791                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16792                    inner_depth.increment()?;
16793                }
16794                let val_ref = self.key.get_or_insert_with(|| {
16795                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
16796                });
16797                fidl::decode!(
16798                    fidl::encoding::UnboundedVector<u8>,
16799                    D,
16800                    val_ref,
16801                    decoder,
16802                    inner_offset,
16803                    inner_depth
16804                )?;
16805                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16806                {
16807                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16808                }
16809                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16810                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16811                }
16812            }
16813
16814            next_offset += envelope_size;
16815
16816            // Decode the remaining unknown envelopes.
16817            while next_offset < end_offset {
16818                _next_ordinal_to_read += 1;
16819                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16820                next_offset += envelope_size;
16821            }
16822
16823            Ok(())
16824        }
16825    }
16826}