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!(
2197                    fidl_fuchsia_wlan_driver__common::WlanWmmParameters,
2198                    D
2199                ),
2200            }
2201        }
2202
2203        #[inline]
2204        unsafe fn decode(
2205            &mut self,
2206            decoder: &mut fidl::encoding::Decoder<'_, D>,
2207            offset: usize,
2208            _depth: fidl::encoding::Depth,
2209        ) -> fidl::Result<()> {
2210            decoder.debug_check_bounds::<Self>(offset);
2211            // Verify that padding bytes are zero.
2212            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(36) };
2213            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2214            let mask = 0xffff0000u32;
2215            let maskedval = padval & mask;
2216            if maskedval != 0 {
2217                return Err(fidl::Error::NonZeroPadding {
2218                    padding_start: offset + 36 + ((mask as u64).trailing_zeros() / 8) as usize,
2219                });
2220            }
2221            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
2222            fidl::decode!(
2223                fidl_fuchsia_wlan_driver__common::WlanWmmParameters,
2224                D,
2225                &mut self.wmm_params,
2226                decoder,
2227                offset + 4,
2228                _depth
2229            )?;
2230            Ok(())
2231        }
2232    }
2233
2234    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2235        type Borrowed<'a> = &'a Self;
2236        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2237            value
2238        }
2239    }
2240
2241    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2242        type Owned = Self;
2243
2244        #[inline(always)]
2245        fn inline_align(_context: fidl::encoding::Context) -> usize {
2246            8
2247        }
2248
2249        #[inline(always)]
2250        fn inline_size(_context: fidl::encoding::Context) -> usize {
2251            16
2252        }
2253    }
2254
2255    unsafe impl<D: fidl::encoding::ResourceDialect>
2256        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D>
2257        for &WlanFullmacImplIfcSaeFrameRxRequest
2258    {
2259        #[inline]
2260        unsafe fn encode(
2261            self,
2262            encoder: &mut fidl::encoding::Encoder<'_, D>,
2263            offset: usize,
2264            _depth: fidl::encoding::Depth,
2265        ) -> fidl::Result<()> {
2266            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2267            // Delegate to tuple encoding.
2268            fidl::encoding::Encode::<WlanFullmacImplIfcSaeFrameRxRequest, D>::encode(
2269                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2270                encoder,
2271                offset,
2272                _depth,
2273            )
2274        }
2275    }
2276    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2277        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D> for (T0,)
2278    {
2279        #[inline]
2280        unsafe fn encode(
2281            self,
2282            encoder: &mut fidl::encoding::Encoder<'_, D>,
2283            offset: usize,
2284            depth: fidl::encoding::Depth,
2285        ) -> fidl::Result<()> {
2286            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2287            // Zero out padding regions. There's no need to apply masks
2288            // because the unmasked parts will be overwritten by fields.
2289            // Write the fields.
2290            self.0.encode(encoder, offset + 0, depth)?;
2291            Ok(())
2292        }
2293    }
2294
2295    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2296        for WlanFullmacImplIfcSaeFrameRxRequest
2297    {
2298        #[inline(always)]
2299        fn new_empty() -> Self {
2300            Self { frame: fidl::new_empty!(SaeFrame, D) }
2301        }
2302
2303        #[inline]
2304        unsafe fn decode(
2305            &mut self,
2306            decoder: &mut fidl::encoding::Decoder<'_, D>,
2307            offset: usize,
2308            _depth: fidl::encoding::Depth,
2309        ) -> fidl::Result<()> {
2310            decoder.debug_check_bounds::<Self>(offset);
2311            // Verify that padding bytes are zero.
2312            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2313            Ok(())
2314        }
2315    }
2316
2317    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSignalReportRequest {
2318        type Borrowed<'a> = &'a Self;
2319        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2320            value
2321        }
2322    }
2323
2324    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSignalReportRequest {
2325        type Owned = Self;
2326
2327        #[inline(always)]
2328        fn inline_align(_context: fidl::encoding::Context) -> usize {
2329            1
2330        }
2331
2332        #[inline(always)]
2333        fn inline_size(_context: fidl::encoding::Context) -> usize {
2334            2
2335        }
2336        #[inline(always)]
2337        fn encode_is_copy() -> bool {
2338            true
2339        }
2340
2341        #[inline(always)]
2342        fn decode_is_copy() -> bool {
2343            true
2344        }
2345    }
2346
2347    unsafe impl<D: fidl::encoding::ResourceDialect>
2348        fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D>
2349        for &WlanFullmacImplIfcSignalReportRequest
2350    {
2351        #[inline]
2352        unsafe fn encode(
2353            self,
2354            encoder: &mut fidl::encoding::Encoder<'_, D>,
2355            offset: usize,
2356            _depth: fidl::encoding::Depth,
2357        ) -> fidl::Result<()> {
2358            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2359            unsafe {
2360                // Copy the object into the buffer.
2361                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2362                (buf_ptr as *mut WlanFullmacImplIfcSignalReportRequest)
2363                    .write_unaligned((self as *const WlanFullmacImplIfcSignalReportRequest).read());
2364                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2365                // done second because the memcpy will write garbage to these bytes.
2366            }
2367            Ok(())
2368        }
2369    }
2370    unsafe impl<
2371        D: fidl::encoding::ResourceDialect,
2372        T0: fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>,
2373    > fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D> for (T0,)
2374    {
2375        #[inline]
2376        unsafe fn encode(
2377            self,
2378            encoder: &mut fidl::encoding::Encoder<'_, D>,
2379            offset: usize,
2380            depth: fidl::encoding::Depth,
2381        ) -> fidl::Result<()> {
2382            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2383            // Zero out padding regions. There's no need to apply masks
2384            // because the unmasked parts will be overwritten by fields.
2385            // Write the fields.
2386            self.0.encode(encoder, offset + 0, depth)?;
2387            Ok(())
2388        }
2389    }
2390
2391    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2392        for WlanFullmacImplIfcSignalReportRequest
2393    {
2394        #[inline(always)]
2395        fn new_empty() -> Self {
2396            Self { ind: fidl::new_empty!(WlanFullmacSignalReportIndication, D) }
2397        }
2398
2399        #[inline]
2400        unsafe fn decode(
2401            &mut self,
2402            decoder: &mut fidl::encoding::Decoder<'_, D>,
2403            offset: usize,
2404            _depth: fidl::encoding::Depth,
2405        ) -> fidl::Result<()> {
2406            decoder.debug_check_bounds::<Self>(offset);
2407            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2408            // Verify that padding bytes are zero.
2409            // Copy from the buffer into the object.
2410            unsafe {
2411                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
2412            }
2413            Ok(())
2414        }
2415    }
2416
2417    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeFrameTxRequest {
2418        type Borrowed<'a> = &'a Self;
2419        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2420            value
2421        }
2422    }
2423
2424    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeFrameTxRequest {
2425        type Owned = Self;
2426
2427        #[inline(always)]
2428        fn inline_align(_context: fidl::encoding::Context) -> usize {
2429            8
2430        }
2431
2432        #[inline(always)]
2433        fn inline_size(_context: fidl::encoding::Context) -> usize {
2434            16
2435        }
2436    }
2437
2438    unsafe impl<D: fidl::encoding::ResourceDialect>
2439        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D>
2440        for &WlanFullmacImplSaeFrameTxRequest
2441    {
2442        #[inline]
2443        unsafe fn encode(
2444            self,
2445            encoder: &mut fidl::encoding::Encoder<'_, D>,
2446            offset: usize,
2447            _depth: fidl::encoding::Depth,
2448        ) -> fidl::Result<()> {
2449            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2450            // Delegate to tuple encoding.
2451            fidl::encoding::Encode::<WlanFullmacImplSaeFrameTxRequest, D>::encode(
2452                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2453                encoder,
2454                offset,
2455                _depth,
2456            )
2457        }
2458    }
2459    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2460        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D> for (T0,)
2461    {
2462        #[inline]
2463        unsafe fn encode(
2464            self,
2465            encoder: &mut fidl::encoding::Encoder<'_, D>,
2466            offset: usize,
2467            depth: fidl::encoding::Depth,
2468        ) -> fidl::Result<()> {
2469            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2470            // Zero out padding regions. There's no need to apply masks
2471            // because the unmasked parts will be overwritten by fields.
2472            // Write the fields.
2473            self.0.encode(encoder, offset + 0, depth)?;
2474            Ok(())
2475        }
2476    }
2477
2478    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2479        for WlanFullmacImplSaeFrameTxRequest
2480    {
2481        #[inline(always)]
2482        fn new_empty() -> Self {
2483            Self { frame: fidl::new_empty!(SaeFrame, D) }
2484        }
2485
2486        #[inline]
2487        unsafe fn decode(
2488            &mut self,
2489            decoder: &mut fidl::encoding::Decoder<'_, D>,
2490            offset: usize,
2491            _depth: fidl::encoding::Depth,
2492        ) -> fidl::Result<()> {
2493            decoder.debug_check_bounds::<Self>(offset);
2494            // Verify that padding bytes are zero.
2495            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2496            Ok(())
2497        }
2498    }
2499
2500    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysResponse {
2501        type Borrowed<'a> = &'a Self;
2502        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2503            value
2504        }
2505    }
2506
2507    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysResponse {
2508        type Owned = Self;
2509
2510        #[inline(always)]
2511        fn inline_align(_context: fidl::encoding::Context) -> usize {
2512            8
2513        }
2514
2515        #[inline(always)]
2516        fn inline_size(_context: fidl::encoding::Context) -> usize {
2517            16
2518        }
2519    }
2520
2521    unsafe impl<D: fidl::encoding::ResourceDialect>
2522        fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D>
2523        for &WlanFullmacImplSetKeysResponse
2524    {
2525        #[inline]
2526        unsafe fn encode(
2527            self,
2528            encoder: &mut fidl::encoding::Encoder<'_, D>,
2529            offset: usize,
2530            _depth: fidl::encoding::Depth,
2531        ) -> fidl::Result<()> {
2532            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2533            // Delegate to tuple encoding.
2534            fidl::encoding::Encode::<WlanFullmacImplSetKeysResponse, D>::encode(
2535                (<WlanFullmacSetKeysResp as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
2536                encoder,
2537                offset,
2538                _depth,
2539            )
2540        }
2541    }
2542    unsafe impl<
2543        D: fidl::encoding::ResourceDialect,
2544        T0: fidl::encoding::Encode<WlanFullmacSetKeysResp, D>,
2545    > fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D> for (T0,)
2546    {
2547        #[inline]
2548        unsafe fn encode(
2549            self,
2550            encoder: &mut fidl::encoding::Encoder<'_, D>,
2551            offset: usize,
2552            depth: fidl::encoding::Depth,
2553        ) -> fidl::Result<()> {
2554            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2555            // Zero out padding regions. There's no need to apply masks
2556            // because the unmasked parts will be overwritten by fields.
2557            // Write the fields.
2558            self.0.encode(encoder, offset + 0, depth)?;
2559            Ok(())
2560        }
2561    }
2562
2563    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2564        for WlanFullmacImplSetKeysResponse
2565    {
2566        #[inline(always)]
2567        fn new_empty() -> Self {
2568            Self { resp: fidl::new_empty!(WlanFullmacSetKeysResp, D) }
2569        }
2570
2571        #[inline]
2572        unsafe fn decode(
2573            &mut self,
2574            decoder: &mut fidl::encoding::Decoder<'_, D>,
2575            offset: usize,
2576            _depth: fidl::encoding::Depth,
2577        ) -> fidl::Result<()> {
2578            decoder.debug_check_bounds::<Self>(offset);
2579            // Verify that padding bytes are zero.
2580            fidl::decode!(WlanFullmacSetKeysResp, D, &mut self.resp, decoder, offset + 0, _depth)?;
2581            Ok(())
2582        }
2583    }
2584
2585    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetMacAddressRequest {
2586        type Borrowed<'a> = &'a Self;
2587        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2588            value
2589        }
2590    }
2591
2592    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetMacAddressRequest {
2593        type Owned = Self;
2594
2595        #[inline(always)]
2596        fn inline_align(_context: fidl::encoding::Context) -> usize {
2597            1
2598        }
2599
2600        #[inline(always)]
2601        fn inline_size(_context: fidl::encoding::Context) -> usize {
2602            6
2603        }
2604        #[inline(always)]
2605        fn encode_is_copy() -> bool {
2606            true
2607        }
2608
2609        #[inline(always)]
2610        fn decode_is_copy() -> bool {
2611            true
2612        }
2613    }
2614
2615    unsafe impl<D: fidl::encoding::ResourceDialect>
2616        fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D>
2617        for &WlanFullmacImplSetMacAddressRequest
2618    {
2619        #[inline]
2620        unsafe fn encode(
2621            self,
2622            encoder: &mut fidl::encoding::Encoder<'_, D>,
2623            offset: usize,
2624            _depth: fidl::encoding::Depth,
2625        ) -> fidl::Result<()> {
2626            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2627            unsafe {
2628                // Copy the object into the buffer.
2629                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2630                (buf_ptr as *mut WlanFullmacImplSetMacAddressRequest)
2631                    .write_unaligned((self as *const WlanFullmacImplSetMacAddressRequest).read());
2632                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2633                // done second because the memcpy will write garbage to these bytes.
2634            }
2635            Ok(())
2636        }
2637    }
2638    unsafe impl<
2639        D: fidl::encoding::ResourceDialect,
2640        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2641    > fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D> for (T0,)
2642    {
2643        #[inline]
2644        unsafe fn encode(
2645            self,
2646            encoder: &mut fidl::encoding::Encoder<'_, D>,
2647            offset: usize,
2648            depth: fidl::encoding::Depth,
2649        ) -> fidl::Result<()> {
2650            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2651            // Zero out padding regions. There's no need to apply masks
2652            // because the unmasked parts will be overwritten by fields.
2653            // Write the fields.
2654            self.0.encode(encoder, offset + 0, depth)?;
2655            Ok(())
2656        }
2657    }
2658
2659    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2660        for WlanFullmacImplSetMacAddressRequest
2661    {
2662        #[inline(always)]
2663        fn new_empty() -> Self {
2664            Self { mac_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
2665        }
2666
2667        #[inline]
2668        unsafe fn decode(
2669            &mut self,
2670            decoder: &mut fidl::encoding::Decoder<'_, D>,
2671            offset: usize,
2672            _depth: fidl::encoding::Depth,
2673        ) -> fidl::Result<()> {
2674            decoder.debug_check_bounds::<Self>(offset);
2675            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2676            // Verify that padding bytes are zero.
2677            // Copy from the buffer into the object.
2678            unsafe {
2679                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
2680            }
2681            Ok(())
2682        }
2683    }
2684
2685    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2686        type Borrowed<'a> = &'a Self;
2687        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2688            value
2689        }
2690    }
2691
2692    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2693        type Owned = Self;
2694
2695        #[inline(always)]
2696        fn inline_align(_context: fidl::encoding::Context) -> usize {
2697            8
2698        }
2699
2700        #[inline(always)]
2701        fn inline_size(_context: fidl::encoding::Context) -> usize {
2702            16
2703        }
2704    }
2705
2706    unsafe impl<D: fidl::encoding::ResourceDialect>
2707        fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D>
2708        for &WlanFullmacImplGetIfaceHistogramStatsResponse
2709    {
2710        #[inline]
2711        unsafe fn encode(
2712            self,
2713            encoder: &mut fidl::encoding::Encoder<'_, D>,
2714            offset: usize,
2715            _depth: fidl::encoding::Depth,
2716        ) -> fidl::Result<()> {
2717            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2718            // Delegate to tuple encoding.
2719            fidl::encoding::Encode::<WlanFullmacImplGetIfaceHistogramStatsResponse, D>::encode(
2720                (
2721                    <fidl_fuchsia_wlan_stats__common::IfaceHistogramStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2722                ),
2723                encoder, offset, _depth
2724            )
2725        }
2726    }
2727    unsafe impl<
2728        D: fidl::encoding::ResourceDialect,
2729        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D>,
2730    > fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D> for (T0,)
2731    {
2732        #[inline]
2733        unsafe fn encode(
2734            self,
2735            encoder: &mut fidl::encoding::Encoder<'_, D>,
2736            offset: usize,
2737            depth: fidl::encoding::Depth,
2738        ) -> fidl::Result<()> {
2739            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2740            // Zero out padding regions. There's no need to apply masks
2741            // because the unmasked parts will be overwritten by fields.
2742            // Write the fields.
2743            self.0.encode(encoder, offset + 0, depth)?;
2744            Ok(())
2745        }
2746    }
2747
2748    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2749        for WlanFullmacImplGetIfaceHistogramStatsResponse
2750    {
2751        #[inline(always)]
2752        fn new_empty() -> Self {
2753            Self {
2754                stats: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D),
2755            }
2756        }
2757
2758        #[inline]
2759        unsafe fn decode(
2760            &mut self,
2761            decoder: &mut fidl::encoding::Decoder<'_, D>,
2762            offset: usize,
2763            _depth: fidl::encoding::Depth,
2764        ) -> fidl::Result<()> {
2765            decoder.debug_check_bounds::<Self>(offset);
2766            // Verify that padding bytes are zero.
2767            fidl::decode!(
2768                fidl_fuchsia_wlan_stats__common::IfaceHistogramStats,
2769                D,
2770                &mut self.stats,
2771                decoder,
2772                offset + 0,
2773                _depth
2774            )?;
2775            Ok(())
2776        }
2777    }
2778
2779    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2780        type Borrowed<'a> = &'a Self;
2781        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2782            value
2783        }
2784    }
2785
2786    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2787        type Owned = Self;
2788
2789        #[inline(always)]
2790        fn inline_align(_context: fidl::encoding::Context) -> usize {
2791            8
2792        }
2793
2794        #[inline(always)]
2795        fn inline_size(_context: fidl::encoding::Context) -> usize {
2796            16
2797        }
2798    }
2799
2800    unsafe impl<D: fidl::encoding::ResourceDialect>
2801        fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D>
2802        for &WlanFullmacImplGetIfaceStatsResponse
2803    {
2804        #[inline]
2805        unsafe fn encode(
2806            self,
2807            encoder: &mut fidl::encoding::Encoder<'_, D>,
2808            offset: usize,
2809            _depth: fidl::encoding::Depth,
2810        ) -> fidl::Result<()> {
2811            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2812            // Delegate to tuple encoding.
2813            fidl::encoding::Encode::<WlanFullmacImplGetIfaceStatsResponse, D>::encode(
2814                (
2815                    <fidl_fuchsia_wlan_stats__common::IfaceStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2816                ),
2817                encoder, offset, _depth
2818            )
2819        }
2820    }
2821    unsafe impl<
2822        D: fidl::encoding::ResourceDialect,
2823        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::IfaceStats, D>,
2824    > fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D> for (T0,)
2825    {
2826        #[inline]
2827        unsafe fn encode(
2828            self,
2829            encoder: &mut fidl::encoding::Encoder<'_, D>,
2830            offset: usize,
2831            depth: fidl::encoding::Depth,
2832        ) -> fidl::Result<()> {
2833            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2834            // Zero out padding regions. There's no need to apply masks
2835            // because the unmasked parts will be overwritten by fields.
2836            // Write the fields.
2837            self.0.encode(encoder, offset + 0, depth)?;
2838            Ok(())
2839        }
2840    }
2841
2842    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2843        for WlanFullmacImplGetIfaceStatsResponse
2844    {
2845        #[inline(always)]
2846        fn new_empty() -> Self {
2847            Self { stats: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceStats, D) }
2848        }
2849
2850        #[inline]
2851        unsafe fn decode(
2852            &mut self,
2853            decoder: &mut fidl::encoding::Decoder<'_, D>,
2854            offset: usize,
2855            _depth: fidl::encoding::Depth,
2856        ) -> fidl::Result<()> {
2857            decoder.debug_check_bounds::<Self>(offset);
2858            // Verify that padding bytes are zero.
2859            fidl::decode!(
2860                fidl_fuchsia_wlan_stats__common::IfaceStats,
2861                D,
2862                &mut self.stats,
2863                decoder,
2864                offset + 0,
2865                _depth
2866            )?;
2867            Ok(())
2868        }
2869    }
2870
2871    impl fidl::encoding::ValueTypeMarker for WlanFullmacRssiStats {
2872        type Borrowed<'a> = &'a Self;
2873        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2874            value
2875        }
2876    }
2877
2878    unsafe impl fidl::encoding::TypeMarker for WlanFullmacRssiStats {
2879        type Owned = Self;
2880
2881        #[inline(always)]
2882        fn inline_align(_context: fidl::encoding::Context) -> usize {
2883            8
2884        }
2885
2886        #[inline(always)]
2887        fn inline_size(_context: fidl::encoding::Context) -> usize {
2888            16
2889        }
2890    }
2891
2892    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanFullmacRssiStats, D>
2893        for &WlanFullmacRssiStats
2894    {
2895        #[inline]
2896        unsafe fn encode(
2897            self,
2898            encoder: &mut fidl::encoding::Encoder<'_, D>,
2899            offset: usize,
2900            _depth: fidl::encoding::Depth,
2901        ) -> fidl::Result<()> {
2902            encoder.debug_check_bounds::<WlanFullmacRssiStats>(offset);
2903            // Delegate to tuple encoding.
2904            fidl::encoding::Encode::<WlanFullmacRssiStats, D>::encode(
2905                (
2906                    <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.hist),
2907                ),
2908                encoder, offset, _depth
2909            )
2910        }
2911    }
2912    unsafe impl<
2913        D: fidl::encoding::ResourceDialect,
2914        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
2915    > fidl::encoding::Encode<WlanFullmacRssiStats, D> for (T0,)
2916    {
2917        #[inline]
2918        unsafe fn encode(
2919            self,
2920            encoder: &mut fidl::encoding::Encoder<'_, D>,
2921            offset: usize,
2922            depth: fidl::encoding::Depth,
2923        ) -> fidl::Result<()> {
2924            encoder.debug_check_bounds::<WlanFullmacRssiStats>(offset);
2925            // Zero out padding regions. There's no need to apply masks
2926            // because the unmasked parts will be overwritten by fields.
2927            // Write the fields.
2928            self.0.encode(encoder, offset + 0, depth)?;
2929            Ok(())
2930        }
2931    }
2932
2933    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanFullmacRssiStats {
2934        #[inline(always)]
2935        fn new_empty() -> Self {
2936            Self { hist: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D) }
2937        }
2938
2939        #[inline]
2940        unsafe fn decode(
2941            &mut self,
2942            decoder: &mut fidl::encoding::Decoder<'_, D>,
2943            offset: usize,
2944            _depth: fidl::encoding::Depth,
2945        ) -> fidl::Result<()> {
2946            decoder.debug_check_bounds::<Self>(offset);
2947            // Verify that padding bytes are zero.
2948            fidl::decode!(
2949                fidl::encoding::UnboundedVector<u64>,
2950                D,
2951                &mut self.hist,
2952                decoder,
2953                offset + 0,
2954                _depth
2955            )?;
2956            Ok(())
2957        }
2958    }
2959
2960    impl fidl::encoding::ValueTypeMarker for WlanFullmacSetKeysResp {
2961        type Borrowed<'a> = &'a Self;
2962        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2963            value
2964        }
2965    }
2966
2967    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSetKeysResp {
2968        type Owned = Self;
2969
2970        #[inline(always)]
2971        fn inline_align(_context: fidl::encoding::Context) -> usize {
2972            8
2973        }
2974
2975        #[inline(always)]
2976        fn inline_size(_context: fidl::encoding::Context) -> usize {
2977            16
2978        }
2979    }
2980
2981    unsafe impl<D: fidl::encoding::ResourceDialect>
2982        fidl::encoding::Encode<WlanFullmacSetKeysResp, D> for &WlanFullmacSetKeysResp
2983    {
2984        #[inline]
2985        unsafe fn encode(
2986            self,
2987            encoder: &mut fidl::encoding::Encoder<'_, D>,
2988            offset: usize,
2989            _depth: fidl::encoding::Depth,
2990        ) -> fidl::Result<()> {
2991            encoder.debug_check_bounds::<WlanFullmacSetKeysResp>(offset);
2992            // Delegate to tuple encoding.
2993            fidl::encoding::Encode::<WlanFullmacSetKeysResp, D>::encode(
2994                (<fidl::encoding::Vector<i32, 4> as fidl::encoding::ValueTypeMarker>::borrow(
2995                    &self.statuslist,
2996                ),),
2997                encoder,
2998                offset,
2999                _depth,
3000            )
3001        }
3002    }
3003    unsafe impl<
3004        D: fidl::encoding::ResourceDialect,
3005        T0: fidl::encoding::Encode<fidl::encoding::Vector<i32, 4>, D>,
3006    > fidl::encoding::Encode<WlanFullmacSetKeysResp, D> for (T0,)
3007    {
3008        #[inline]
3009        unsafe fn encode(
3010            self,
3011            encoder: &mut fidl::encoding::Encoder<'_, D>,
3012            offset: usize,
3013            depth: fidl::encoding::Depth,
3014        ) -> fidl::Result<()> {
3015            encoder.debug_check_bounds::<WlanFullmacSetKeysResp>(offset);
3016            // Zero out padding regions. There's no need to apply masks
3017            // because the unmasked parts will be overwritten by fields.
3018            // Write the fields.
3019            self.0.encode(encoder, offset + 0, depth)?;
3020            Ok(())
3021        }
3022    }
3023
3024    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3025        for WlanFullmacSetKeysResp
3026    {
3027        #[inline(always)]
3028        fn new_empty() -> Self {
3029            Self { statuslist: fidl::new_empty!(fidl::encoding::Vector<i32, 4>, D) }
3030        }
3031
3032        #[inline]
3033        unsafe fn decode(
3034            &mut self,
3035            decoder: &mut fidl::encoding::Decoder<'_, D>,
3036            offset: usize,
3037            _depth: fidl::encoding::Depth,
3038        ) -> fidl::Result<()> {
3039            decoder.debug_check_bounds::<Self>(offset);
3040            // Verify that padding bytes are zero.
3041            fidl::decode!(fidl::encoding::Vector<i32, 4>, D, &mut self.statuslist, decoder, offset + 0, _depth)?;
3042            Ok(())
3043        }
3044    }
3045
3046    impl fidl::encoding::ValueTypeMarker for WlanFullmacSignalReportIndication {
3047        type Borrowed<'a> = &'a Self;
3048        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3049            value
3050        }
3051    }
3052
3053    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSignalReportIndication {
3054        type Owned = Self;
3055
3056        #[inline(always)]
3057        fn inline_align(_context: fidl::encoding::Context) -> usize {
3058            1
3059        }
3060
3061        #[inline(always)]
3062        fn inline_size(_context: fidl::encoding::Context) -> usize {
3063            2
3064        }
3065        #[inline(always)]
3066        fn encode_is_copy() -> bool {
3067            true
3068        }
3069
3070        #[inline(always)]
3071        fn decode_is_copy() -> bool {
3072            true
3073        }
3074    }
3075
3076    unsafe impl<D: fidl::encoding::ResourceDialect>
3077        fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>
3078        for &WlanFullmacSignalReportIndication
3079    {
3080        #[inline]
3081        unsafe fn encode(
3082            self,
3083            encoder: &mut fidl::encoding::Encoder<'_, D>,
3084            offset: usize,
3085            _depth: fidl::encoding::Depth,
3086        ) -> fidl::Result<()> {
3087            encoder.debug_check_bounds::<WlanFullmacSignalReportIndication>(offset);
3088            unsafe {
3089                // Copy the object into the buffer.
3090                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3091                (buf_ptr as *mut WlanFullmacSignalReportIndication)
3092                    .write_unaligned((self as *const WlanFullmacSignalReportIndication).read());
3093                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3094                // done second because the memcpy will write garbage to these bytes.
3095            }
3096            Ok(())
3097        }
3098    }
3099    unsafe impl<
3100        D: fidl::encoding::ResourceDialect,
3101        T0: fidl::encoding::Encode<i8, D>,
3102        T1: fidl::encoding::Encode<i8, D>,
3103    > fidl::encoding::Encode<WlanFullmacSignalReportIndication, D> for (T0, T1)
3104    {
3105        #[inline]
3106        unsafe fn encode(
3107            self,
3108            encoder: &mut fidl::encoding::Encoder<'_, D>,
3109            offset: usize,
3110            depth: fidl::encoding::Depth,
3111        ) -> fidl::Result<()> {
3112            encoder.debug_check_bounds::<WlanFullmacSignalReportIndication>(offset);
3113            // Zero out padding regions. There's no need to apply masks
3114            // because the unmasked parts will be overwritten by fields.
3115            // Write the fields.
3116            self.0.encode(encoder, offset + 0, depth)?;
3117            self.1.encode(encoder, offset + 1, depth)?;
3118            Ok(())
3119        }
3120    }
3121
3122    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3123        for WlanFullmacSignalReportIndication
3124    {
3125        #[inline(always)]
3126        fn new_empty() -> Self {
3127            Self { rssi_dbm: fidl::new_empty!(i8, D), snr_db: fidl::new_empty!(i8, D) }
3128        }
3129
3130        #[inline]
3131        unsafe fn decode(
3132            &mut self,
3133            decoder: &mut fidl::encoding::Decoder<'_, D>,
3134            offset: usize,
3135            _depth: fidl::encoding::Depth,
3136        ) -> fidl::Result<()> {
3137            decoder.debug_check_bounds::<Self>(offset);
3138            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3139            // Verify that padding bytes are zero.
3140            // Copy from the buffer into the object.
3141            unsafe {
3142                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
3143            }
3144            Ok(())
3145        }
3146    }
3147
3148    impl BandCapability {
3149        #[inline(always)]
3150        fn max_ordinal_present(&self) -> u64 {
3151            if let Some(_) = self.operating_channels {
3152                return 5;
3153            }
3154            if let Some(_) = self.vht_caps {
3155                return 4;
3156            }
3157            if let Some(_) = self.ht_caps {
3158                return 3;
3159            }
3160            if let Some(_) = self.basic_rates {
3161                return 2;
3162            }
3163            if let Some(_) = self.band {
3164                return 1;
3165            }
3166            0
3167        }
3168    }
3169
3170    impl fidl::encoding::ValueTypeMarker for BandCapability {
3171        type Borrowed<'a> = &'a Self;
3172        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3173            value
3174        }
3175    }
3176
3177    unsafe impl fidl::encoding::TypeMarker for BandCapability {
3178        type Owned = Self;
3179
3180        #[inline(always)]
3181        fn inline_align(_context: fidl::encoding::Context) -> usize {
3182            8
3183        }
3184
3185        #[inline(always)]
3186        fn inline_size(_context: fidl::encoding::Context) -> usize {
3187            16
3188        }
3189    }
3190
3191    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandCapability, D>
3192        for &BandCapability
3193    {
3194        unsafe fn encode(
3195            self,
3196            encoder: &mut fidl::encoding::Encoder<'_, D>,
3197            offset: usize,
3198            mut depth: fidl::encoding::Depth,
3199        ) -> fidl::Result<()> {
3200            encoder.debug_check_bounds::<BandCapability>(offset);
3201            // Vector header
3202            let max_ordinal: u64 = self.max_ordinal_present();
3203            encoder.write_num(max_ordinal, offset);
3204            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3205            // Calling encoder.out_of_line_offset(0) is not allowed.
3206            if max_ordinal == 0 {
3207                return Ok(());
3208            }
3209            depth.increment()?;
3210            let envelope_size = 8;
3211            let bytes_len = max_ordinal as usize * envelope_size;
3212            #[allow(unused_variables)]
3213            let offset = encoder.out_of_line_offset(bytes_len);
3214            let mut _prev_end_offset: usize = 0;
3215            if 1 > max_ordinal {
3216                return Ok(());
3217            }
3218
3219            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3220            // are envelope_size bytes.
3221            let cur_offset: usize = (1 - 1) * envelope_size;
3222
3223            // Zero reserved fields.
3224            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3225
3226            // Safety:
3227            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3228            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3229            //   envelope_size bytes, there is always sufficient room.
3230            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::WlanBand, D>(
3231            self.band.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow),
3232            encoder, offset + cur_offset, depth
3233        )?;
3234
3235            _prev_end_offset = cur_offset + envelope_size;
3236            if 2 > max_ordinal {
3237                return Ok(());
3238            }
3239
3240            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3241            // are envelope_size bytes.
3242            let cur_offset: usize = (2 - 1) * envelope_size;
3243
3244            // Zero reserved fields.
3245            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3246
3247            // Safety:
3248            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3249            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3250            //   envelope_size bytes, there is always sufficient room.
3251            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 12>, D>(
3252                self.basic_rates.as_ref().map(
3253                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::ValueTypeMarker>::borrow,
3254                ),
3255                encoder,
3256                offset + cur_offset,
3257                depth,
3258            )?;
3259
3260            _prev_end_offset = cur_offset + envelope_size;
3261            if 3 > max_ordinal {
3262                return Ok(());
3263            }
3264
3265            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3266            // are envelope_size bytes.
3267            let cur_offset: usize = (3 - 1) * envelope_size;
3268
3269            // Zero reserved fields.
3270            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3271
3272            // Safety:
3273            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3274            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3275            //   envelope_size bytes, there is always sufficient room.
3276            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities, D>(
3277            self.ht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3278            encoder, offset + cur_offset, depth
3279        )?;
3280
3281            _prev_end_offset = cur_offset + envelope_size;
3282            if 4 > max_ordinal {
3283                return Ok(());
3284            }
3285
3286            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3287            // are envelope_size bytes.
3288            let cur_offset: usize = (4 - 1) * envelope_size;
3289
3290            // Zero reserved fields.
3291            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3292
3293            // Safety:
3294            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3295            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3296            //   envelope_size bytes, there is always sufficient room.
3297            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities, D>(
3298            self.vht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3299            encoder, offset + cur_offset, depth
3300        )?;
3301
3302            _prev_end_offset = cur_offset + envelope_size;
3303            if 5 > max_ordinal {
3304                return Ok(());
3305            }
3306
3307            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3308            // are envelope_size bytes.
3309            let cur_offset: usize = (5 - 1) * envelope_size;
3310
3311            // Zero reserved fields.
3312            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3313
3314            // Safety:
3315            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3316            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3317            //   envelope_size bytes, there is always sufficient room.
3318            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 256>, D>(
3319                self.operating_channels.as_ref().map(
3320                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow,
3321                ),
3322                encoder,
3323                offset + cur_offset,
3324                depth,
3325            )?;
3326
3327            _prev_end_offset = cur_offset + envelope_size;
3328
3329            Ok(())
3330        }
3331    }
3332
3333    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandCapability {
3334        #[inline(always)]
3335        fn new_empty() -> Self {
3336            Self::default()
3337        }
3338
3339        unsafe fn decode(
3340            &mut self,
3341            decoder: &mut fidl::encoding::Decoder<'_, D>,
3342            offset: usize,
3343            mut depth: fidl::encoding::Depth,
3344        ) -> fidl::Result<()> {
3345            decoder.debug_check_bounds::<Self>(offset);
3346            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3347                None => return Err(fidl::Error::NotNullable),
3348                Some(len) => len,
3349            };
3350            // Calling decoder.out_of_line_offset(0) is not allowed.
3351            if len == 0 {
3352                return Ok(());
3353            };
3354            depth.increment()?;
3355            let envelope_size = 8;
3356            let bytes_len = len * envelope_size;
3357            let offset = decoder.out_of_line_offset(bytes_len)?;
3358            // Decode the envelope for each type.
3359            let mut _next_ordinal_to_read = 0;
3360            let mut next_offset = offset;
3361            let end_offset = offset + bytes_len;
3362            _next_ordinal_to_read += 1;
3363            if next_offset >= end_offset {
3364                return Ok(());
3365            }
3366
3367            // Decode unknown envelopes for gaps in ordinals.
3368            while _next_ordinal_to_read < 1 {
3369                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3370                _next_ordinal_to_read += 1;
3371                next_offset += envelope_size;
3372            }
3373
3374            let next_out_of_line = decoder.next_out_of_line();
3375            let handles_before = decoder.remaining_handles();
3376            if let Some((inlined, num_bytes, num_handles)) =
3377                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3378            {
3379                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::WlanBand as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3380                if inlined != (member_inline_size <= 4) {
3381                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3382                }
3383                let inner_offset;
3384                let mut inner_depth = depth.clone();
3385                if inlined {
3386                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3387                    inner_offset = next_offset;
3388                } else {
3389                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3390                    inner_depth.increment()?;
3391                }
3392                let val_ref = self.band.get_or_insert_with(|| {
3393                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanBand, D)
3394                });
3395                fidl::decode!(
3396                    fidl_fuchsia_wlan_ieee80211__common::WlanBand,
3397                    D,
3398                    val_ref,
3399                    decoder,
3400                    inner_offset,
3401                    inner_depth
3402                )?;
3403                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3404                {
3405                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3406                }
3407                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3408                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3409                }
3410            }
3411
3412            next_offset += envelope_size;
3413            _next_ordinal_to_read += 1;
3414            if next_offset >= end_offset {
3415                return Ok(());
3416            }
3417
3418            // Decode unknown envelopes for gaps in ordinals.
3419            while _next_ordinal_to_read < 2 {
3420                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3421                _next_ordinal_to_read += 1;
3422                next_offset += envelope_size;
3423            }
3424
3425            let next_out_of_line = decoder.next_out_of_line();
3426            let handles_before = decoder.remaining_handles();
3427            if let Some((inlined, num_bytes, num_handles)) =
3428                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3429            {
3430                let member_inline_size =
3431                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::TypeMarker>::inline_size(
3432                        decoder.context,
3433                    );
3434                if inlined != (member_inline_size <= 4) {
3435                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3436                }
3437                let inner_offset;
3438                let mut inner_depth = depth.clone();
3439                if inlined {
3440                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3441                    inner_offset = next_offset;
3442                } else {
3443                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3444                    inner_depth.increment()?;
3445                }
3446                let val_ref = self
3447                    .basic_rates
3448                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 12>, D));
3449                fidl::decode!(fidl::encoding::Vector<u8, 12>, D, val_ref, decoder, inner_offset, inner_depth)?;
3450                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3451                {
3452                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3453                }
3454                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3455                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3456                }
3457            }
3458
3459            next_offset += envelope_size;
3460            _next_ordinal_to_read += 1;
3461            if next_offset >= end_offset {
3462                return Ok(());
3463            }
3464
3465            // Decode unknown envelopes for gaps in ordinals.
3466            while _next_ordinal_to_read < 3 {
3467                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3468                _next_ordinal_to_read += 1;
3469                next_offset += envelope_size;
3470            }
3471
3472            let next_out_of_line = decoder.next_out_of_line();
3473            let handles_before = decoder.remaining_handles();
3474            if let Some((inlined, num_bytes, num_handles)) =
3475                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3476            {
3477                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::HtCapabilities as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3478                if inlined != (member_inline_size <= 4) {
3479                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3480                }
3481                let inner_offset;
3482                let mut inner_depth = depth.clone();
3483                if inlined {
3484                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3485                    inner_offset = next_offset;
3486                } else {
3487                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3488                    inner_depth.increment()?;
3489                }
3490                let val_ref = self.ht_caps.get_or_insert_with(|| {
3491                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::HtCapabilities, D)
3492                });
3493                fidl::decode!(
3494                    fidl_fuchsia_wlan_ieee80211__common::HtCapabilities,
3495                    D,
3496                    val_ref,
3497                    decoder,
3498                    inner_offset,
3499                    inner_depth
3500                )?;
3501                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3502                {
3503                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3504                }
3505                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3506                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3507                }
3508            }
3509
3510            next_offset += envelope_size;
3511            _next_ordinal_to_read += 1;
3512            if next_offset >= end_offset {
3513                return Ok(());
3514            }
3515
3516            // Decode unknown envelopes for gaps in ordinals.
3517            while _next_ordinal_to_read < 4 {
3518                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3519                _next_ordinal_to_read += 1;
3520                next_offset += envelope_size;
3521            }
3522
3523            let next_out_of_line = decoder.next_out_of_line();
3524            let handles_before = decoder.remaining_handles();
3525            if let Some((inlined, num_bytes, num_handles)) =
3526                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3527            {
3528                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3529                if inlined != (member_inline_size <= 4) {
3530                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3531                }
3532                let inner_offset;
3533                let mut inner_depth = depth.clone();
3534                if inlined {
3535                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3536                    inner_offset = next_offset;
3537                } else {
3538                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3539                    inner_depth.increment()?;
3540                }
3541                let val_ref = self.vht_caps.get_or_insert_with(|| {
3542                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities, D)
3543                });
3544                fidl::decode!(
3545                    fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities,
3546                    D,
3547                    val_ref,
3548                    decoder,
3549                    inner_offset,
3550                    inner_depth
3551                )?;
3552                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3553                {
3554                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3555                }
3556                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3557                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3558                }
3559            }
3560
3561            next_offset += envelope_size;
3562            _next_ordinal_to_read += 1;
3563            if next_offset >= end_offset {
3564                return Ok(());
3565            }
3566
3567            // Decode unknown envelopes for gaps in ordinals.
3568            while _next_ordinal_to_read < 5 {
3569                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3570                _next_ordinal_to_read += 1;
3571                next_offset += envelope_size;
3572            }
3573
3574            let next_out_of_line = decoder.next_out_of_line();
3575            let handles_before = decoder.remaining_handles();
3576            if let Some((inlined, num_bytes, num_handles)) =
3577                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3578            {
3579                let member_inline_size =
3580                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::TypeMarker>::inline_size(
3581                        decoder.context,
3582                    );
3583                if inlined != (member_inline_size <= 4) {
3584                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3585                }
3586                let inner_offset;
3587                let mut inner_depth = depth.clone();
3588                if inlined {
3589                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3590                    inner_offset = next_offset;
3591                } else {
3592                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3593                    inner_depth.increment()?;
3594                }
3595                let val_ref = self
3596                    .operating_channels
3597                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D));
3598                fidl::decode!(fidl::encoding::Vector<u8, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
3599                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3600                {
3601                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3602                }
3603                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3604                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3605                }
3606            }
3607
3608            next_offset += envelope_size;
3609
3610            // Decode the remaining unknown envelopes.
3611            while next_offset < end_offset {
3612                _next_ordinal_to_read += 1;
3613                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3614                next_offset += envelope_size;
3615            }
3616
3617            Ok(())
3618        }
3619    }
3620
3621    impl SaeFrame {
3622        #[inline(always)]
3623        fn max_ordinal_present(&self) -> u64 {
3624            if let Some(_) = self.sae_fields {
3625                return 4;
3626            }
3627            if let Some(_) = self.seq_num {
3628                return 3;
3629            }
3630            if let Some(_) = self.status_code {
3631                return 2;
3632            }
3633            if let Some(_) = self.peer_sta_address {
3634                return 1;
3635            }
3636            0
3637        }
3638    }
3639
3640    impl fidl::encoding::ValueTypeMarker for SaeFrame {
3641        type Borrowed<'a> = &'a Self;
3642        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3643            value
3644        }
3645    }
3646
3647    unsafe impl fidl::encoding::TypeMarker for SaeFrame {
3648        type Owned = Self;
3649
3650        #[inline(always)]
3651        fn inline_align(_context: fidl::encoding::Context) -> usize {
3652            8
3653        }
3654
3655        #[inline(always)]
3656        fn inline_size(_context: fidl::encoding::Context) -> usize {
3657            16
3658        }
3659    }
3660
3661    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFrame, D> for &SaeFrame {
3662        unsafe fn encode(
3663            self,
3664            encoder: &mut fidl::encoding::Encoder<'_, D>,
3665            offset: usize,
3666            mut depth: fidl::encoding::Depth,
3667        ) -> fidl::Result<()> {
3668            encoder.debug_check_bounds::<SaeFrame>(offset);
3669            // Vector header
3670            let max_ordinal: u64 = self.max_ordinal_present();
3671            encoder.write_num(max_ordinal, offset);
3672            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3673            // Calling encoder.out_of_line_offset(0) is not allowed.
3674            if max_ordinal == 0 {
3675                return Ok(());
3676            }
3677            depth.increment()?;
3678            let envelope_size = 8;
3679            let bytes_len = max_ordinal as usize * envelope_size;
3680            #[allow(unused_variables)]
3681            let offset = encoder.out_of_line_offset(bytes_len);
3682            let mut _prev_end_offset: usize = 0;
3683            if 1 > max_ordinal {
3684                return Ok(());
3685            }
3686
3687            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3688            // are envelope_size bytes.
3689            let cur_offset: usize = (1 - 1) * envelope_size;
3690
3691            // Zero reserved fields.
3692            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3693
3694            // Safety:
3695            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3696            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3697            //   envelope_size bytes, there is always sufficient room.
3698            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3699                self.peer_sta_address
3700                    .as_ref()
3701                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3702                encoder,
3703                offset + cur_offset,
3704                depth,
3705            )?;
3706
3707            _prev_end_offset = cur_offset + envelope_size;
3708            if 2 > max_ordinal {
3709                return Ok(());
3710            }
3711
3712            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3713            // are envelope_size bytes.
3714            let cur_offset: usize = (2 - 1) * envelope_size;
3715
3716            // Zero reserved fields.
3717            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3718
3719            // Safety:
3720            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3721            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3722            //   envelope_size bytes, there is always sufficient room.
3723            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
3724            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
3725            encoder, offset + cur_offset, depth
3726        )?;
3727
3728            _prev_end_offset = cur_offset + envelope_size;
3729            if 3 > max_ordinal {
3730                return Ok(());
3731            }
3732
3733            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3734            // are envelope_size bytes.
3735            let cur_offset: usize = (3 - 1) * envelope_size;
3736
3737            // Zero reserved fields.
3738            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3739
3740            // Safety:
3741            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3742            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3743            //   envelope_size bytes, there is always sufficient room.
3744            fidl::encoding::encode_in_envelope_optional::<u16, D>(
3745                self.seq_num.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3746                encoder,
3747                offset + cur_offset,
3748                depth,
3749            )?;
3750
3751            _prev_end_offset = cur_offset + envelope_size;
3752            if 4 > max_ordinal {
3753                return Ok(());
3754            }
3755
3756            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3757            // are envelope_size bytes.
3758            let cur_offset: usize = (4 - 1) * envelope_size;
3759
3760            // Zero reserved fields.
3761            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3762
3763            // Safety:
3764            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3765            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3766            //   envelope_size bytes, there is always sufficient room.
3767            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
3768            self.sae_fields.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
3769            encoder, offset + cur_offset, depth
3770        )?;
3771
3772            _prev_end_offset = cur_offset + envelope_size;
3773
3774            Ok(())
3775        }
3776    }
3777
3778    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFrame {
3779        #[inline(always)]
3780        fn new_empty() -> Self {
3781            Self::default()
3782        }
3783
3784        unsafe fn decode(
3785            &mut self,
3786            decoder: &mut fidl::encoding::Decoder<'_, D>,
3787            offset: usize,
3788            mut depth: fidl::encoding::Depth,
3789        ) -> fidl::Result<()> {
3790            decoder.debug_check_bounds::<Self>(offset);
3791            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3792                None => return Err(fidl::Error::NotNullable),
3793                Some(len) => len,
3794            };
3795            // Calling decoder.out_of_line_offset(0) is not allowed.
3796            if len == 0 {
3797                return Ok(());
3798            };
3799            depth.increment()?;
3800            let envelope_size = 8;
3801            let bytes_len = len * envelope_size;
3802            let offset = decoder.out_of_line_offset(bytes_len)?;
3803            // Decode the envelope for each type.
3804            let mut _next_ordinal_to_read = 0;
3805            let mut next_offset = offset;
3806            let end_offset = offset + bytes_len;
3807            _next_ordinal_to_read += 1;
3808            if next_offset >= end_offset {
3809                return Ok(());
3810            }
3811
3812            // Decode unknown envelopes for gaps in ordinals.
3813            while _next_ordinal_to_read < 1 {
3814                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3815                _next_ordinal_to_read += 1;
3816                next_offset += envelope_size;
3817            }
3818
3819            let next_out_of_line = decoder.next_out_of_line();
3820            let handles_before = decoder.remaining_handles();
3821            if let Some((inlined, num_bytes, num_handles)) =
3822                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3823            {
3824                let member_inline_size =
3825                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3826                        decoder.context,
3827                    );
3828                if inlined != (member_inline_size <= 4) {
3829                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3830                }
3831                let inner_offset;
3832                let mut inner_depth = depth.clone();
3833                if inlined {
3834                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3835                    inner_offset = next_offset;
3836                } else {
3837                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3838                    inner_depth.increment()?;
3839                }
3840                let val_ref = self
3841                    .peer_sta_address
3842                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
3843                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
3844                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3845                {
3846                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3847                }
3848                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3849                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3850                }
3851            }
3852
3853            next_offset += envelope_size;
3854            _next_ordinal_to_read += 1;
3855            if next_offset >= end_offset {
3856                return Ok(());
3857            }
3858
3859            // Decode unknown envelopes for gaps in ordinals.
3860            while _next_ordinal_to_read < 2 {
3861                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3862                _next_ordinal_to_read += 1;
3863                next_offset += envelope_size;
3864            }
3865
3866            let next_out_of_line = decoder.next_out_of_line();
3867            let handles_before = decoder.remaining_handles();
3868            if let Some((inlined, num_bytes, num_handles)) =
3869                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3870            {
3871                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3872                if inlined != (member_inline_size <= 4) {
3873                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3874                }
3875                let inner_offset;
3876                let mut inner_depth = depth.clone();
3877                if inlined {
3878                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3879                    inner_offset = next_offset;
3880                } else {
3881                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3882                    inner_depth.increment()?;
3883                }
3884                let val_ref = self.status_code.get_or_insert_with(|| {
3885                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
3886                });
3887                fidl::decode!(
3888                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
3889                    D,
3890                    val_ref,
3891                    decoder,
3892                    inner_offset,
3893                    inner_depth
3894                )?;
3895                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3896                {
3897                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3898                }
3899                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3900                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3901                }
3902            }
3903
3904            next_offset += envelope_size;
3905            _next_ordinal_to_read += 1;
3906            if next_offset >= end_offset {
3907                return Ok(());
3908            }
3909
3910            // Decode unknown envelopes for gaps in ordinals.
3911            while _next_ordinal_to_read < 3 {
3912                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3913                _next_ordinal_to_read += 1;
3914                next_offset += envelope_size;
3915            }
3916
3917            let next_out_of_line = decoder.next_out_of_line();
3918            let handles_before = decoder.remaining_handles();
3919            if let Some((inlined, num_bytes, num_handles)) =
3920                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3921            {
3922                let member_inline_size =
3923                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3924                if inlined != (member_inline_size <= 4) {
3925                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3926                }
3927                let inner_offset;
3928                let mut inner_depth = depth.clone();
3929                if inlined {
3930                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3931                    inner_offset = next_offset;
3932                } else {
3933                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3934                    inner_depth.increment()?;
3935                }
3936                let val_ref = self.seq_num.get_or_insert_with(|| fidl::new_empty!(u16, D));
3937                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3938                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3939                {
3940                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3941                }
3942                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3943                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3944                }
3945            }
3946
3947            next_offset += envelope_size;
3948            _next_ordinal_to_read += 1;
3949            if next_offset >= end_offset {
3950                return Ok(());
3951            }
3952
3953            // Decode unknown envelopes for gaps in ordinals.
3954            while _next_ordinal_to_read < 4 {
3955                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3956                _next_ordinal_to_read += 1;
3957                next_offset += envelope_size;
3958            }
3959
3960            let next_out_of_line = decoder.next_out_of_line();
3961            let handles_before = decoder.remaining_handles();
3962            if let Some((inlined, num_bytes, num_handles)) =
3963                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3964            {
3965                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3966                if inlined != (member_inline_size <= 4) {
3967                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3968                }
3969                let inner_offset;
3970                let mut inner_depth = depth.clone();
3971                if inlined {
3972                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3973                    inner_offset = next_offset;
3974                } else {
3975                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3976                    inner_depth.increment()?;
3977                }
3978                let val_ref = self.sae_fields.get_or_insert_with(|| {
3979                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
3980                });
3981                fidl::decode!(
3982                    fidl::encoding::UnboundedVector<u8>,
3983                    D,
3984                    val_ref,
3985                    decoder,
3986                    inner_offset,
3987                    inner_depth
3988                )?;
3989                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3990                {
3991                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3992                }
3993                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3994                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3995                }
3996            }
3997
3998            next_offset += envelope_size;
3999
4000            // Decode the remaining unknown envelopes.
4001            while next_offset < end_offset {
4002                _next_ordinal_to_read += 1;
4003                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4004                next_offset += envelope_size;
4005            }
4006
4007            Ok(())
4008        }
4009    }
4010
4011    impl WlanFullmacImplAssocRespRequest {
4012        #[inline(always)]
4013        fn max_ordinal_present(&self) -> u64 {
4014            if let Some(_) = self.association_id {
4015                return 3;
4016            }
4017            if let Some(_) = self.result_code {
4018                return 2;
4019            }
4020            if let Some(_) = self.peer_sta_address {
4021                return 1;
4022            }
4023            0
4024        }
4025    }
4026
4027    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAssocRespRequest {
4028        type Borrowed<'a> = &'a Self;
4029        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4030            value
4031        }
4032    }
4033
4034    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAssocRespRequest {
4035        type Owned = Self;
4036
4037        #[inline(always)]
4038        fn inline_align(_context: fidl::encoding::Context) -> usize {
4039            8
4040        }
4041
4042        #[inline(always)]
4043        fn inline_size(_context: fidl::encoding::Context) -> usize {
4044            16
4045        }
4046    }
4047
4048    unsafe impl<D: fidl::encoding::ResourceDialect>
4049        fidl::encoding::Encode<WlanFullmacImplAssocRespRequest, D>
4050        for &WlanFullmacImplAssocRespRequest
4051    {
4052        unsafe fn encode(
4053            self,
4054            encoder: &mut fidl::encoding::Encoder<'_, D>,
4055            offset: usize,
4056            mut depth: fidl::encoding::Depth,
4057        ) -> fidl::Result<()> {
4058            encoder.debug_check_bounds::<WlanFullmacImplAssocRespRequest>(offset);
4059            // Vector header
4060            let max_ordinal: u64 = self.max_ordinal_present();
4061            encoder.write_num(max_ordinal, offset);
4062            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4063            // Calling encoder.out_of_line_offset(0) is not allowed.
4064            if max_ordinal == 0 {
4065                return Ok(());
4066            }
4067            depth.increment()?;
4068            let envelope_size = 8;
4069            let bytes_len = max_ordinal as usize * envelope_size;
4070            #[allow(unused_variables)]
4071            let offset = encoder.out_of_line_offset(bytes_len);
4072            let mut _prev_end_offset: usize = 0;
4073            if 1 > max_ordinal {
4074                return Ok(());
4075            }
4076
4077            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4078            // are envelope_size bytes.
4079            let cur_offset: usize = (1 - 1) * envelope_size;
4080
4081            // Zero reserved fields.
4082            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4083
4084            // Safety:
4085            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4086            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4087            //   envelope_size bytes, there is always sufficient room.
4088            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4089                self.peer_sta_address
4090                    .as_ref()
4091                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4092                encoder,
4093                offset + cur_offset,
4094                depth,
4095            )?;
4096
4097            _prev_end_offset = cur_offset + envelope_size;
4098            if 2 > max_ordinal {
4099                return Ok(());
4100            }
4101
4102            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4103            // are envelope_size bytes.
4104            let cur_offset: usize = (2 - 1) * envelope_size;
4105
4106            // Zero reserved fields.
4107            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4108
4109            // Safety:
4110            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4111            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4112            //   envelope_size bytes, there is always sufficient room.
4113            fidl::encoding::encode_in_envelope_optional::<WlanAssocResult, D>(
4114                self.result_code
4115                    .as_ref()
4116                    .map(<WlanAssocResult as fidl::encoding::ValueTypeMarker>::borrow),
4117                encoder,
4118                offset + cur_offset,
4119                depth,
4120            )?;
4121
4122            _prev_end_offset = cur_offset + envelope_size;
4123            if 3 > max_ordinal {
4124                return Ok(());
4125            }
4126
4127            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4128            // are envelope_size bytes.
4129            let cur_offset: usize = (3 - 1) * envelope_size;
4130
4131            // Zero reserved fields.
4132            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4133
4134            // Safety:
4135            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4136            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4137            //   envelope_size bytes, there is always sufficient room.
4138            fidl::encoding::encode_in_envelope_optional::<u16, D>(
4139                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4140                encoder,
4141                offset + cur_offset,
4142                depth,
4143            )?;
4144
4145            _prev_end_offset = cur_offset + envelope_size;
4146
4147            Ok(())
4148        }
4149    }
4150
4151    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4152        for WlanFullmacImplAssocRespRequest
4153    {
4154        #[inline(always)]
4155        fn new_empty() -> Self {
4156            Self::default()
4157        }
4158
4159        unsafe fn decode(
4160            &mut self,
4161            decoder: &mut fidl::encoding::Decoder<'_, D>,
4162            offset: usize,
4163            mut depth: fidl::encoding::Depth,
4164        ) -> fidl::Result<()> {
4165            decoder.debug_check_bounds::<Self>(offset);
4166            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4167                None => return Err(fidl::Error::NotNullable),
4168                Some(len) => len,
4169            };
4170            // Calling decoder.out_of_line_offset(0) is not allowed.
4171            if len == 0 {
4172                return Ok(());
4173            };
4174            depth.increment()?;
4175            let envelope_size = 8;
4176            let bytes_len = len * envelope_size;
4177            let offset = decoder.out_of_line_offset(bytes_len)?;
4178            // Decode the envelope for each type.
4179            let mut _next_ordinal_to_read = 0;
4180            let mut next_offset = offset;
4181            let end_offset = offset + bytes_len;
4182            _next_ordinal_to_read += 1;
4183            if next_offset >= end_offset {
4184                return Ok(());
4185            }
4186
4187            // Decode unknown envelopes for gaps in ordinals.
4188            while _next_ordinal_to_read < 1 {
4189                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4190                _next_ordinal_to_read += 1;
4191                next_offset += envelope_size;
4192            }
4193
4194            let next_out_of_line = decoder.next_out_of_line();
4195            let handles_before = decoder.remaining_handles();
4196            if let Some((inlined, num_bytes, num_handles)) =
4197                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4198            {
4199                let member_inline_size =
4200                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4201                        decoder.context,
4202                    );
4203                if inlined != (member_inline_size <= 4) {
4204                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4205                }
4206                let inner_offset;
4207                let mut inner_depth = depth.clone();
4208                if inlined {
4209                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4210                    inner_offset = next_offset;
4211                } else {
4212                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4213                    inner_depth.increment()?;
4214                }
4215                let val_ref = self
4216                    .peer_sta_address
4217                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4218                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4219                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4220                {
4221                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4222                }
4223                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4224                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4225                }
4226            }
4227
4228            next_offset += envelope_size;
4229            _next_ordinal_to_read += 1;
4230            if next_offset >= end_offset {
4231                return Ok(());
4232            }
4233
4234            // Decode unknown envelopes for gaps in ordinals.
4235            while _next_ordinal_to_read < 2 {
4236                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4237                _next_ordinal_to_read += 1;
4238                next_offset += envelope_size;
4239            }
4240
4241            let next_out_of_line = decoder.next_out_of_line();
4242            let handles_before = decoder.remaining_handles();
4243            if let Some((inlined, num_bytes, num_handles)) =
4244                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4245            {
4246                let member_inline_size =
4247                    <WlanAssocResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4248                if inlined != (member_inline_size <= 4) {
4249                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4250                }
4251                let inner_offset;
4252                let mut inner_depth = depth.clone();
4253                if inlined {
4254                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4255                    inner_offset = next_offset;
4256                } else {
4257                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4258                    inner_depth.increment()?;
4259                }
4260                let val_ref =
4261                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAssocResult, D));
4262                fidl::decode!(WlanAssocResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4263                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4264                {
4265                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4266                }
4267                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4268                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4269                }
4270            }
4271
4272            next_offset += envelope_size;
4273            _next_ordinal_to_read += 1;
4274            if next_offset >= end_offset {
4275                return Ok(());
4276            }
4277
4278            // Decode unknown envelopes for gaps in ordinals.
4279            while _next_ordinal_to_read < 3 {
4280                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4281                _next_ordinal_to_read += 1;
4282                next_offset += envelope_size;
4283            }
4284
4285            let next_out_of_line = decoder.next_out_of_line();
4286            let handles_before = decoder.remaining_handles();
4287            if let Some((inlined, num_bytes, num_handles)) =
4288                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4289            {
4290                let member_inline_size =
4291                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4292                if inlined != (member_inline_size <= 4) {
4293                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4294                }
4295                let inner_offset;
4296                let mut inner_depth = depth.clone();
4297                if inlined {
4298                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4299                    inner_offset = next_offset;
4300                } else {
4301                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4302                    inner_depth.increment()?;
4303                }
4304                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
4305                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4306                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4307                {
4308                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4309                }
4310                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4311                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4312                }
4313            }
4314
4315            next_offset += envelope_size;
4316
4317            // Decode the remaining unknown envelopes.
4318            while next_offset < end_offset {
4319                _next_ordinal_to_read += 1;
4320                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4321                next_offset += envelope_size;
4322            }
4323
4324            Ok(())
4325        }
4326    }
4327
4328    impl WlanFullmacImplAuthRespRequest {
4329        #[inline(always)]
4330        fn max_ordinal_present(&self) -> u64 {
4331            if let Some(_) = self.result_code {
4332                return 2;
4333            }
4334            if let Some(_) = self.peer_sta_address {
4335                return 1;
4336            }
4337            0
4338        }
4339    }
4340
4341    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAuthRespRequest {
4342        type Borrowed<'a> = &'a Self;
4343        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4344            value
4345        }
4346    }
4347
4348    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAuthRespRequest {
4349        type Owned = Self;
4350
4351        #[inline(always)]
4352        fn inline_align(_context: fidl::encoding::Context) -> usize {
4353            8
4354        }
4355
4356        #[inline(always)]
4357        fn inline_size(_context: fidl::encoding::Context) -> usize {
4358            16
4359        }
4360    }
4361
4362    unsafe impl<D: fidl::encoding::ResourceDialect>
4363        fidl::encoding::Encode<WlanFullmacImplAuthRespRequest, D>
4364        for &WlanFullmacImplAuthRespRequest
4365    {
4366        unsafe fn encode(
4367            self,
4368            encoder: &mut fidl::encoding::Encoder<'_, D>,
4369            offset: usize,
4370            mut depth: fidl::encoding::Depth,
4371        ) -> fidl::Result<()> {
4372            encoder.debug_check_bounds::<WlanFullmacImplAuthRespRequest>(offset);
4373            // Vector header
4374            let max_ordinal: u64 = self.max_ordinal_present();
4375            encoder.write_num(max_ordinal, offset);
4376            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4377            // Calling encoder.out_of_line_offset(0) is not allowed.
4378            if max_ordinal == 0 {
4379                return Ok(());
4380            }
4381            depth.increment()?;
4382            let envelope_size = 8;
4383            let bytes_len = max_ordinal as usize * envelope_size;
4384            #[allow(unused_variables)]
4385            let offset = encoder.out_of_line_offset(bytes_len);
4386            let mut _prev_end_offset: usize = 0;
4387            if 1 > max_ordinal {
4388                return Ok(());
4389            }
4390
4391            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4392            // are envelope_size bytes.
4393            let cur_offset: usize = (1 - 1) * envelope_size;
4394
4395            // Zero reserved fields.
4396            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4397
4398            // Safety:
4399            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4400            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4401            //   envelope_size bytes, there is always sufficient room.
4402            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4403                self.peer_sta_address
4404                    .as_ref()
4405                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4406                encoder,
4407                offset + cur_offset,
4408                depth,
4409            )?;
4410
4411            _prev_end_offset = cur_offset + envelope_size;
4412            if 2 > max_ordinal {
4413                return Ok(());
4414            }
4415
4416            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4417            // are envelope_size bytes.
4418            let cur_offset: usize = (2 - 1) * envelope_size;
4419
4420            // Zero reserved fields.
4421            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4422
4423            // Safety:
4424            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4425            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4426            //   envelope_size bytes, there is always sufficient room.
4427            fidl::encoding::encode_in_envelope_optional::<WlanAuthResult, D>(
4428                self.result_code
4429                    .as_ref()
4430                    .map(<WlanAuthResult as fidl::encoding::ValueTypeMarker>::borrow),
4431                encoder,
4432                offset + cur_offset,
4433                depth,
4434            )?;
4435
4436            _prev_end_offset = cur_offset + envelope_size;
4437
4438            Ok(())
4439        }
4440    }
4441
4442    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4443        for WlanFullmacImplAuthRespRequest
4444    {
4445        #[inline(always)]
4446        fn new_empty() -> Self {
4447            Self::default()
4448        }
4449
4450        unsafe fn decode(
4451            &mut self,
4452            decoder: &mut fidl::encoding::Decoder<'_, D>,
4453            offset: usize,
4454            mut depth: fidl::encoding::Depth,
4455        ) -> fidl::Result<()> {
4456            decoder.debug_check_bounds::<Self>(offset);
4457            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4458                None => return Err(fidl::Error::NotNullable),
4459                Some(len) => len,
4460            };
4461            // Calling decoder.out_of_line_offset(0) is not allowed.
4462            if len == 0 {
4463                return Ok(());
4464            };
4465            depth.increment()?;
4466            let envelope_size = 8;
4467            let bytes_len = len * envelope_size;
4468            let offset = decoder.out_of_line_offset(bytes_len)?;
4469            // Decode the envelope for each type.
4470            let mut _next_ordinal_to_read = 0;
4471            let mut next_offset = offset;
4472            let end_offset = offset + bytes_len;
4473            _next_ordinal_to_read += 1;
4474            if next_offset >= end_offset {
4475                return Ok(());
4476            }
4477
4478            // Decode unknown envelopes for gaps in ordinals.
4479            while _next_ordinal_to_read < 1 {
4480                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4481                _next_ordinal_to_read += 1;
4482                next_offset += envelope_size;
4483            }
4484
4485            let next_out_of_line = decoder.next_out_of_line();
4486            let handles_before = decoder.remaining_handles();
4487            if let Some((inlined, num_bytes, num_handles)) =
4488                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4489            {
4490                let member_inline_size =
4491                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4492                        decoder.context,
4493                    );
4494                if inlined != (member_inline_size <= 4) {
4495                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4496                }
4497                let inner_offset;
4498                let mut inner_depth = depth.clone();
4499                if inlined {
4500                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4501                    inner_offset = next_offset;
4502                } else {
4503                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4504                    inner_depth.increment()?;
4505                }
4506                let val_ref = self
4507                    .peer_sta_address
4508                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4509                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4510                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4511                {
4512                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4513                }
4514                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4515                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4516                }
4517            }
4518
4519            next_offset += envelope_size;
4520            _next_ordinal_to_read += 1;
4521            if next_offset >= end_offset {
4522                return Ok(());
4523            }
4524
4525            // Decode unknown envelopes for gaps in ordinals.
4526            while _next_ordinal_to_read < 2 {
4527                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4528                _next_ordinal_to_read += 1;
4529                next_offset += envelope_size;
4530            }
4531
4532            let next_out_of_line = decoder.next_out_of_line();
4533            let handles_before = decoder.remaining_handles();
4534            if let Some((inlined, num_bytes, num_handles)) =
4535                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4536            {
4537                let member_inline_size =
4538                    <WlanAuthResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4539                if inlined != (member_inline_size <= 4) {
4540                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4541                }
4542                let inner_offset;
4543                let mut inner_depth = depth.clone();
4544                if inlined {
4545                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4546                    inner_offset = next_offset;
4547                } else {
4548                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4549                    inner_depth.increment()?;
4550                }
4551                let val_ref =
4552                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAuthResult, D));
4553                fidl::decode!(WlanAuthResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4554                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4555                {
4556                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4557                }
4558                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4559                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4560                }
4561            }
4562
4563            next_offset += envelope_size;
4564
4565            // Decode the remaining unknown envelopes.
4566            while next_offset < end_offset {
4567                _next_ordinal_to_read += 1;
4568                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4569                next_offset += envelope_size;
4570            }
4571
4572            Ok(())
4573        }
4574    }
4575
4576    impl WlanFullmacImplConnectRequest {
4577        #[inline(always)]
4578        fn max_ordinal_present(&self) -> u64 {
4579            if let Some(_) = self.owe_public_key {
4580                return 8;
4581            }
4582            if let Some(_) = self.wep_key_desc {
4583                return 7;
4584            }
4585            if let Some(_) = self.security_ie {
4586                return 6;
4587            }
4588            if let Some(_) = self.wep_key {
4589                return 5;
4590            }
4591            if let Some(_) = self.sae_password {
4592                return 4;
4593            }
4594            if let Some(_) = self.auth_type {
4595                return 3;
4596            }
4597            if let Some(_) = self.connect_failure_timeout {
4598                return 2;
4599            }
4600            if let Some(_) = self.selected_bss {
4601                return 1;
4602            }
4603            0
4604        }
4605    }
4606
4607    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplConnectRequest {
4608        type Borrowed<'a> = &'a Self;
4609        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4610            value
4611        }
4612    }
4613
4614    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplConnectRequest {
4615        type Owned = Self;
4616
4617        #[inline(always)]
4618        fn inline_align(_context: fidl::encoding::Context) -> usize {
4619            8
4620        }
4621
4622        #[inline(always)]
4623        fn inline_size(_context: fidl::encoding::Context) -> usize {
4624            16
4625        }
4626    }
4627
4628    unsafe impl<D: fidl::encoding::ResourceDialect>
4629        fidl::encoding::Encode<WlanFullmacImplConnectRequest, D>
4630        for &WlanFullmacImplConnectRequest
4631    {
4632        unsafe fn encode(
4633            self,
4634            encoder: &mut fidl::encoding::Encoder<'_, D>,
4635            offset: usize,
4636            mut depth: fidl::encoding::Depth,
4637        ) -> fidl::Result<()> {
4638            encoder.debug_check_bounds::<WlanFullmacImplConnectRequest>(offset);
4639            // Vector header
4640            let max_ordinal: u64 = self.max_ordinal_present();
4641            encoder.write_num(max_ordinal, offset);
4642            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4643            // Calling encoder.out_of_line_offset(0) is not allowed.
4644            if max_ordinal == 0 {
4645                return Ok(());
4646            }
4647            depth.increment()?;
4648            let envelope_size = 8;
4649            let bytes_len = max_ordinal as usize * envelope_size;
4650            #[allow(unused_variables)]
4651            let offset = encoder.out_of_line_offset(bytes_len);
4652            let mut _prev_end_offset: usize = 0;
4653            if 1 > max_ordinal {
4654                return Ok(());
4655            }
4656
4657            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4658            // are envelope_size bytes.
4659            let cur_offset: usize = (1 - 1) * envelope_size;
4660
4661            // Zero reserved fields.
4662            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4663
4664            // Safety:
4665            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4666            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4667            //   envelope_size bytes, there is always sufficient room.
4668            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::BssDescription, D>(
4669            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
4670            encoder, offset + cur_offset, depth
4671        )?;
4672
4673            _prev_end_offset = cur_offset + envelope_size;
4674            if 2 > max_ordinal {
4675                return Ok(());
4676            }
4677
4678            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4679            // are envelope_size bytes.
4680            let cur_offset: usize = (2 - 1) * envelope_size;
4681
4682            // Zero reserved fields.
4683            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4684
4685            // Safety:
4686            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4687            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4688            //   envelope_size bytes, there is always sufficient room.
4689            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4690                self.connect_failure_timeout
4691                    .as_ref()
4692                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4693                encoder,
4694                offset + cur_offset,
4695                depth,
4696            )?;
4697
4698            _prev_end_offset = cur_offset + envelope_size;
4699            if 3 > max_ordinal {
4700                return Ok(());
4701            }
4702
4703            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4704            // are envelope_size bytes.
4705            let cur_offset: usize = (3 - 1) * envelope_size;
4706
4707            // Zero reserved fields.
4708            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4709
4710            // Safety:
4711            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4712            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4713            //   envelope_size bytes, there is always sufficient room.
4714            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
4715                self.auth_type
4716                    .as_ref()
4717                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
4718                encoder,
4719                offset + cur_offset,
4720                depth,
4721            )?;
4722
4723            _prev_end_offset = cur_offset + envelope_size;
4724            if 4 > max_ordinal {
4725                return Ok(());
4726            }
4727
4728            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4729            // are envelope_size bytes.
4730            let cur_offset: usize = (4 - 1) * envelope_size;
4731
4732            // Zero reserved fields.
4733            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4734
4735            // Safety:
4736            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4737            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4738            //   envelope_size bytes, there is always sufficient room.
4739            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
4740            self.sae_password.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
4741            encoder, offset + cur_offset, depth
4742        )?;
4743
4744            _prev_end_offset = cur_offset + envelope_size;
4745            if 5 > max_ordinal {
4746                return Ok(());
4747            }
4748
4749            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4750            // are envelope_size bytes.
4751            let cur_offset: usize = (5 - 1) * envelope_size;
4752
4753            // Zero reserved fields.
4754            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4755
4756            // Safety:
4757            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4758            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4759            //   envelope_size bytes, there is always sufficient room.
4760            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_driver__common::WlanKeyConfig, D>(
4761            self.wep_key.as_ref().map(<fidl_fuchsia_wlan_driver__common::WlanKeyConfig as fidl::encoding::ValueTypeMarker>::borrow),
4762            encoder, offset + cur_offset, depth
4763        )?;
4764
4765            _prev_end_offset = cur_offset + envelope_size;
4766            if 6 > max_ordinal {
4767                return Ok(());
4768            }
4769
4770            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4771            // are envelope_size bytes.
4772            let cur_offset: usize = (6 - 1) * envelope_size;
4773
4774            // Zero reserved fields.
4775            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4776
4777            // Safety:
4778            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4779            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4780            //   envelope_size bytes, there is always sufficient room.
4781            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
4782                self.security_ie.as_ref().map(
4783                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
4784                ),
4785                encoder,
4786                offset + cur_offset,
4787                depth,
4788            )?;
4789
4790            _prev_end_offset = cur_offset + envelope_size;
4791            if 7 > max_ordinal {
4792                return Ok(());
4793            }
4794
4795            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4796            // are envelope_size bytes.
4797            let cur_offset: usize = (7 - 1) * envelope_size;
4798
4799            // Zero reserved fields.
4800            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4801
4802            // Safety:
4803            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4804            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4805            //   envelope_size bytes, there is always sufficient room.
4806            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, D>(
4807            self.wep_key_desc.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor as fidl::encoding::ValueTypeMarker>::borrow),
4808            encoder, offset + cur_offset, depth
4809        )?;
4810
4811            _prev_end_offset = cur_offset + envelope_size;
4812            if 8 > max_ordinal {
4813                return Ok(());
4814            }
4815
4816            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4817            // are envelope_size bytes.
4818            let cur_offset: usize = (8 - 1) * envelope_size;
4819
4820            // Zero reserved fields.
4821            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4822
4823            // Safety:
4824            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4825            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4826            //   envelope_size bytes, there is always sufficient room.
4827            fidl::encoding::encode_in_envelope_optional::<WlanFullmacOwePublicKey, D>(
4828                self.owe_public_key
4829                    .as_ref()
4830                    .map(<WlanFullmacOwePublicKey as fidl::encoding::ValueTypeMarker>::borrow),
4831                encoder,
4832                offset + cur_offset,
4833                depth,
4834            )?;
4835
4836            _prev_end_offset = cur_offset + envelope_size;
4837
4838            Ok(())
4839        }
4840    }
4841
4842    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4843        for WlanFullmacImplConnectRequest
4844    {
4845        #[inline(always)]
4846        fn new_empty() -> Self {
4847            Self::default()
4848        }
4849
4850        unsafe fn decode(
4851            &mut self,
4852            decoder: &mut fidl::encoding::Decoder<'_, D>,
4853            offset: usize,
4854            mut depth: fidl::encoding::Depth,
4855        ) -> fidl::Result<()> {
4856            decoder.debug_check_bounds::<Self>(offset);
4857            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4858                None => return Err(fidl::Error::NotNullable),
4859                Some(len) => len,
4860            };
4861            // Calling decoder.out_of_line_offset(0) is not allowed.
4862            if len == 0 {
4863                return Ok(());
4864            };
4865            depth.increment()?;
4866            let envelope_size = 8;
4867            let bytes_len = len * envelope_size;
4868            let offset = decoder.out_of_line_offset(bytes_len)?;
4869            // Decode the envelope for each type.
4870            let mut _next_ordinal_to_read = 0;
4871            let mut next_offset = offset;
4872            let end_offset = offset + bytes_len;
4873            _next_ordinal_to_read += 1;
4874            if next_offset >= end_offset {
4875                return Ok(());
4876            }
4877
4878            // Decode unknown envelopes for gaps in ordinals.
4879            while _next_ordinal_to_read < 1 {
4880                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4881                _next_ordinal_to_read += 1;
4882                next_offset += envelope_size;
4883            }
4884
4885            let next_out_of_line = decoder.next_out_of_line();
4886            let handles_before = decoder.remaining_handles();
4887            if let Some((inlined, num_bytes, num_handles)) =
4888                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4889            {
4890                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4891                if inlined != (member_inline_size <= 4) {
4892                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4893                }
4894                let inner_offset;
4895                let mut inner_depth = depth.clone();
4896                if inlined {
4897                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4898                    inner_offset = next_offset;
4899                } else {
4900                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4901                    inner_depth.increment()?;
4902                }
4903                let val_ref = self.selected_bss.get_or_insert_with(|| {
4904                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::BssDescription, D)
4905                });
4906                fidl::decode!(
4907                    fidl_fuchsia_wlan_ieee80211__common::BssDescription,
4908                    D,
4909                    val_ref,
4910                    decoder,
4911                    inner_offset,
4912                    inner_depth
4913                )?;
4914                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4915                {
4916                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4917                }
4918                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4919                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4920                }
4921            }
4922
4923            next_offset += envelope_size;
4924            _next_ordinal_to_read += 1;
4925            if next_offset >= end_offset {
4926                return Ok(());
4927            }
4928
4929            // Decode unknown envelopes for gaps in ordinals.
4930            while _next_ordinal_to_read < 2 {
4931                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4932                _next_ordinal_to_read += 1;
4933                next_offset += envelope_size;
4934            }
4935
4936            let next_out_of_line = decoder.next_out_of_line();
4937            let handles_before = decoder.remaining_handles();
4938            if let Some((inlined, num_bytes, num_handles)) =
4939                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4940            {
4941                let member_inline_size =
4942                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4943                if inlined != (member_inline_size <= 4) {
4944                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4945                }
4946                let inner_offset;
4947                let mut inner_depth = depth.clone();
4948                if inlined {
4949                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4950                    inner_offset = next_offset;
4951                } else {
4952                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4953                    inner_depth.increment()?;
4954                }
4955                let val_ref =
4956                    self.connect_failure_timeout.get_or_insert_with(|| fidl::new_empty!(u32, D));
4957                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4958                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4959                {
4960                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4961                }
4962                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4963                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4964                }
4965            }
4966
4967            next_offset += envelope_size;
4968            _next_ordinal_to_read += 1;
4969            if next_offset >= end_offset {
4970                return Ok(());
4971            }
4972
4973            // Decode unknown envelopes for gaps in ordinals.
4974            while _next_ordinal_to_read < 3 {
4975                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4976                _next_ordinal_to_read += 1;
4977                next_offset += envelope_size;
4978            }
4979
4980            let next_out_of_line = decoder.next_out_of_line();
4981            let handles_before = decoder.remaining_handles();
4982            if let Some((inlined, num_bytes, num_handles)) =
4983                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4984            {
4985                let member_inline_size =
4986                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4987                if inlined != (member_inline_size <= 4) {
4988                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4989                }
4990                let inner_offset;
4991                let mut inner_depth = depth.clone();
4992                if inlined {
4993                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4994                    inner_offset = next_offset;
4995                } else {
4996                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4997                    inner_depth.increment()?;
4998                }
4999                let val_ref =
5000                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
5001                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
5002                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5003                {
5004                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5005                }
5006                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5007                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5008                }
5009            }
5010
5011            next_offset += envelope_size;
5012            _next_ordinal_to_read += 1;
5013            if next_offset >= end_offset {
5014                return Ok(());
5015            }
5016
5017            // Decode unknown envelopes for gaps in ordinals.
5018            while _next_ordinal_to_read < 4 {
5019                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5020                _next_ordinal_to_read += 1;
5021                next_offset += envelope_size;
5022            }
5023
5024            let next_out_of_line = decoder.next_out_of_line();
5025            let handles_before = decoder.remaining_handles();
5026            if let Some((inlined, num_bytes, num_handles)) =
5027                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5028            {
5029                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5030                if inlined != (member_inline_size <= 4) {
5031                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5032                }
5033                let inner_offset;
5034                let mut inner_depth = depth.clone();
5035                if inlined {
5036                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5037                    inner_offset = next_offset;
5038                } else {
5039                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5040                    inner_depth.increment()?;
5041                }
5042                let val_ref = self.sae_password.get_or_insert_with(|| {
5043                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
5044                });
5045                fidl::decode!(
5046                    fidl::encoding::UnboundedVector<u8>,
5047                    D,
5048                    val_ref,
5049                    decoder,
5050                    inner_offset,
5051                    inner_depth
5052                )?;
5053                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5054                {
5055                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5056                }
5057                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5058                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5059                }
5060            }
5061
5062            next_offset += envelope_size;
5063            _next_ordinal_to_read += 1;
5064            if next_offset >= end_offset {
5065                return Ok(());
5066            }
5067
5068            // Decode unknown envelopes for gaps in ordinals.
5069            while _next_ordinal_to_read < 5 {
5070                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5071                _next_ordinal_to_read += 1;
5072                next_offset += envelope_size;
5073            }
5074
5075            let next_out_of_line = decoder.next_out_of_line();
5076            let handles_before = decoder.remaining_handles();
5077            if let Some((inlined, num_bytes, num_handles)) =
5078                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5079            {
5080                let member_inline_size = <fidl_fuchsia_wlan_driver__common::WlanKeyConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5081                if inlined != (member_inline_size <= 4) {
5082                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5083                }
5084                let inner_offset;
5085                let mut inner_depth = depth.clone();
5086                if inlined {
5087                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5088                    inner_offset = next_offset;
5089                } else {
5090                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5091                    inner_depth.increment()?;
5092                }
5093                let val_ref = self.wep_key.get_or_insert_with(|| {
5094                    fidl::new_empty!(fidl_fuchsia_wlan_driver__common::WlanKeyConfig, D)
5095                });
5096                fidl::decode!(
5097                    fidl_fuchsia_wlan_driver__common::WlanKeyConfig,
5098                    D,
5099                    val_ref,
5100                    decoder,
5101                    inner_offset,
5102                    inner_depth
5103                )?;
5104                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5105                {
5106                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5107                }
5108                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5109                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5110                }
5111            }
5112
5113            next_offset += envelope_size;
5114            _next_ordinal_to_read += 1;
5115            if next_offset >= end_offset {
5116                return Ok(());
5117            }
5118
5119            // Decode unknown envelopes for gaps in ordinals.
5120            while _next_ordinal_to_read < 6 {
5121                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5122                _next_ordinal_to_read += 1;
5123                next_offset += envelope_size;
5124            }
5125
5126            let next_out_of_line = decoder.next_out_of_line();
5127            let handles_before = decoder.remaining_handles();
5128            if let Some((inlined, num_bytes, num_handles)) =
5129                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5130            {
5131                let member_inline_size =
5132                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
5133                        decoder.context,
5134                    );
5135                if inlined != (member_inline_size <= 4) {
5136                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5137                }
5138                let inner_offset;
5139                let mut inner_depth = depth.clone();
5140                if inlined {
5141                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5142                    inner_offset = next_offset;
5143                } else {
5144                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5145                    inner_depth.increment()?;
5146                }
5147                let val_ref = self
5148                    .security_ie
5149                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
5150                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
5151                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5152                {
5153                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5154                }
5155                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5156                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5157                }
5158            }
5159
5160            next_offset += envelope_size;
5161            _next_ordinal_to_read += 1;
5162            if next_offset >= end_offset {
5163                return Ok(());
5164            }
5165
5166            // Decode unknown envelopes for gaps in ordinals.
5167            while _next_ordinal_to_read < 7 {
5168                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5169                _next_ordinal_to_read += 1;
5170                next_offset += envelope_size;
5171            }
5172
5173            let next_out_of_line = decoder.next_out_of_line();
5174            let handles_before = decoder.remaining_handles();
5175            if let Some((inlined, num_bytes, num_handles)) =
5176                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5177            {
5178                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5179                if inlined != (member_inline_size <= 4) {
5180                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5181                }
5182                let inner_offset;
5183                let mut inner_depth = depth.clone();
5184                if inlined {
5185                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5186                    inner_offset = next_offset;
5187                } else {
5188                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5189                    inner_depth.increment()?;
5190                }
5191                let val_ref = self.wep_key_desc.get_or_insert_with(|| {
5192                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, D)
5193                });
5194                fidl::decode!(
5195                    fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor,
5196                    D,
5197                    val_ref,
5198                    decoder,
5199                    inner_offset,
5200                    inner_depth
5201                )?;
5202                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5203                {
5204                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5205                }
5206                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5207                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5208                }
5209            }
5210
5211            next_offset += envelope_size;
5212            _next_ordinal_to_read += 1;
5213            if next_offset >= end_offset {
5214                return Ok(());
5215            }
5216
5217            // Decode unknown envelopes for gaps in ordinals.
5218            while _next_ordinal_to_read < 8 {
5219                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5220                _next_ordinal_to_read += 1;
5221                next_offset += envelope_size;
5222            }
5223
5224            let next_out_of_line = decoder.next_out_of_line();
5225            let handles_before = decoder.remaining_handles();
5226            if let Some((inlined, num_bytes, num_handles)) =
5227                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5228            {
5229                let member_inline_size =
5230                    <WlanFullmacOwePublicKey as fidl::encoding::TypeMarker>::inline_size(
5231                        decoder.context,
5232                    );
5233                if inlined != (member_inline_size <= 4) {
5234                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5235                }
5236                let inner_offset;
5237                let mut inner_depth = depth.clone();
5238                if inlined {
5239                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5240                    inner_offset = next_offset;
5241                } else {
5242                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5243                    inner_depth.increment()?;
5244                }
5245                let val_ref = self
5246                    .owe_public_key
5247                    .get_or_insert_with(|| fidl::new_empty!(WlanFullmacOwePublicKey, D));
5248                fidl::decode!(
5249                    WlanFullmacOwePublicKey,
5250                    D,
5251                    val_ref,
5252                    decoder,
5253                    inner_offset,
5254                    inner_depth
5255                )?;
5256                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5257                {
5258                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5259                }
5260                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5261                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5262                }
5263            }
5264
5265            next_offset += envelope_size;
5266
5267            // Decode the remaining unknown envelopes.
5268            while next_offset < end_offset {
5269                _next_ordinal_to_read += 1;
5270                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5271                next_offset += envelope_size;
5272            }
5273
5274            Ok(())
5275        }
5276    }
5277
5278    impl WlanFullmacImplDeauthRequest {
5279        #[inline(always)]
5280        fn max_ordinal_present(&self) -> u64 {
5281            if let Some(_) = self.reason_code {
5282                return 2;
5283            }
5284            if let Some(_) = self.peer_sta_address {
5285                return 1;
5286            }
5287            0
5288        }
5289    }
5290
5291    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDeauthRequest {
5292        type Borrowed<'a> = &'a Self;
5293        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5294            value
5295        }
5296    }
5297
5298    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDeauthRequest {
5299        type Owned = Self;
5300
5301        #[inline(always)]
5302        fn inline_align(_context: fidl::encoding::Context) -> usize {
5303            8
5304        }
5305
5306        #[inline(always)]
5307        fn inline_size(_context: fidl::encoding::Context) -> usize {
5308            16
5309        }
5310    }
5311
5312    unsafe impl<D: fidl::encoding::ResourceDialect>
5313        fidl::encoding::Encode<WlanFullmacImplDeauthRequest, D> for &WlanFullmacImplDeauthRequest
5314    {
5315        unsafe fn encode(
5316            self,
5317            encoder: &mut fidl::encoding::Encoder<'_, D>,
5318            offset: usize,
5319            mut depth: fidl::encoding::Depth,
5320        ) -> fidl::Result<()> {
5321            encoder.debug_check_bounds::<WlanFullmacImplDeauthRequest>(offset);
5322            // Vector header
5323            let max_ordinal: u64 = self.max_ordinal_present();
5324            encoder.write_num(max_ordinal, offset);
5325            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5326            // Calling encoder.out_of_line_offset(0) is not allowed.
5327            if max_ordinal == 0 {
5328                return Ok(());
5329            }
5330            depth.increment()?;
5331            let envelope_size = 8;
5332            let bytes_len = max_ordinal as usize * envelope_size;
5333            #[allow(unused_variables)]
5334            let offset = encoder.out_of_line_offset(bytes_len);
5335            let mut _prev_end_offset: usize = 0;
5336            if 1 > max_ordinal {
5337                return Ok(());
5338            }
5339
5340            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5341            // are envelope_size bytes.
5342            let cur_offset: usize = (1 - 1) * envelope_size;
5343
5344            // Zero reserved fields.
5345            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5346
5347            // Safety:
5348            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5349            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5350            //   envelope_size bytes, there is always sufficient room.
5351            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5352                self.peer_sta_address
5353                    .as_ref()
5354                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5355                encoder,
5356                offset + cur_offset,
5357                depth,
5358            )?;
5359
5360            _prev_end_offset = cur_offset + envelope_size;
5361            if 2 > max_ordinal {
5362                return Ok(());
5363            }
5364
5365            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5366            // are envelope_size bytes.
5367            let cur_offset: usize = (2 - 1) * envelope_size;
5368
5369            // Zero reserved fields.
5370            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5371
5372            // Safety:
5373            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5374            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5375            //   envelope_size bytes, there is always sufficient room.
5376            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
5377            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5378            encoder, offset + cur_offset, depth
5379        )?;
5380
5381            _prev_end_offset = cur_offset + envelope_size;
5382
5383            Ok(())
5384        }
5385    }
5386
5387    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5388        for WlanFullmacImplDeauthRequest
5389    {
5390        #[inline(always)]
5391        fn new_empty() -> Self {
5392            Self::default()
5393        }
5394
5395        unsafe fn decode(
5396            &mut self,
5397            decoder: &mut fidl::encoding::Decoder<'_, D>,
5398            offset: usize,
5399            mut depth: fidl::encoding::Depth,
5400        ) -> fidl::Result<()> {
5401            decoder.debug_check_bounds::<Self>(offset);
5402            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5403                None => return Err(fidl::Error::NotNullable),
5404                Some(len) => len,
5405            };
5406            // Calling decoder.out_of_line_offset(0) is not allowed.
5407            if len == 0 {
5408                return Ok(());
5409            };
5410            depth.increment()?;
5411            let envelope_size = 8;
5412            let bytes_len = len * envelope_size;
5413            let offset = decoder.out_of_line_offset(bytes_len)?;
5414            // Decode the envelope for each type.
5415            let mut _next_ordinal_to_read = 0;
5416            let mut next_offset = offset;
5417            let end_offset = offset + bytes_len;
5418            _next_ordinal_to_read += 1;
5419            if next_offset >= end_offset {
5420                return Ok(());
5421            }
5422
5423            // Decode unknown envelopes for gaps in ordinals.
5424            while _next_ordinal_to_read < 1 {
5425                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5426                _next_ordinal_to_read += 1;
5427                next_offset += envelope_size;
5428            }
5429
5430            let next_out_of_line = decoder.next_out_of_line();
5431            let handles_before = decoder.remaining_handles();
5432            if let Some((inlined, num_bytes, num_handles)) =
5433                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5434            {
5435                let member_inline_size =
5436                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5437                        decoder.context,
5438                    );
5439                if inlined != (member_inline_size <= 4) {
5440                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5441                }
5442                let inner_offset;
5443                let mut inner_depth = depth.clone();
5444                if inlined {
5445                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5446                    inner_offset = next_offset;
5447                } else {
5448                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5449                    inner_depth.increment()?;
5450                }
5451                let val_ref = self
5452                    .peer_sta_address
5453                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5454                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5455                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5456                {
5457                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5458                }
5459                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5460                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5461                }
5462            }
5463
5464            next_offset += envelope_size;
5465            _next_ordinal_to_read += 1;
5466            if next_offset >= end_offset {
5467                return Ok(());
5468            }
5469
5470            // Decode unknown envelopes for gaps in ordinals.
5471            while _next_ordinal_to_read < 2 {
5472                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5473                _next_ordinal_to_read += 1;
5474                next_offset += envelope_size;
5475            }
5476
5477            let next_out_of_line = decoder.next_out_of_line();
5478            let handles_before = decoder.remaining_handles();
5479            if let Some((inlined, num_bytes, num_handles)) =
5480                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5481            {
5482                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5483                if inlined != (member_inline_size <= 4) {
5484                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5485                }
5486                let inner_offset;
5487                let mut inner_depth = depth.clone();
5488                if inlined {
5489                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5490                    inner_offset = next_offset;
5491                } else {
5492                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5493                    inner_depth.increment()?;
5494                }
5495                let val_ref = self.reason_code.get_or_insert_with(|| {
5496                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
5497                });
5498                fidl::decode!(
5499                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
5500                    D,
5501                    val_ref,
5502                    decoder,
5503                    inner_offset,
5504                    inner_depth
5505                )?;
5506                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5507                {
5508                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5509                }
5510                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5511                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5512                }
5513            }
5514
5515            next_offset += envelope_size;
5516
5517            // Decode the remaining unknown envelopes.
5518            while next_offset < end_offset {
5519                _next_ordinal_to_read += 1;
5520                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5521                next_offset += envelope_size;
5522            }
5523
5524            Ok(())
5525        }
5526    }
5527
5528    impl WlanFullmacImplDisassocRequest {
5529        #[inline(always)]
5530        fn max_ordinal_present(&self) -> u64 {
5531            if let Some(_) = self.reason_code {
5532                return 2;
5533            }
5534            if let Some(_) = self.peer_sta_address {
5535                return 1;
5536            }
5537            0
5538        }
5539    }
5540
5541    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDisassocRequest {
5542        type Borrowed<'a> = &'a Self;
5543        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5544            value
5545        }
5546    }
5547
5548    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDisassocRequest {
5549        type Owned = Self;
5550
5551        #[inline(always)]
5552        fn inline_align(_context: fidl::encoding::Context) -> usize {
5553            8
5554        }
5555
5556        #[inline(always)]
5557        fn inline_size(_context: fidl::encoding::Context) -> usize {
5558            16
5559        }
5560    }
5561
5562    unsafe impl<D: fidl::encoding::ResourceDialect>
5563        fidl::encoding::Encode<WlanFullmacImplDisassocRequest, D>
5564        for &WlanFullmacImplDisassocRequest
5565    {
5566        unsafe fn encode(
5567            self,
5568            encoder: &mut fidl::encoding::Encoder<'_, D>,
5569            offset: usize,
5570            mut depth: fidl::encoding::Depth,
5571        ) -> fidl::Result<()> {
5572            encoder.debug_check_bounds::<WlanFullmacImplDisassocRequest>(offset);
5573            // Vector header
5574            let max_ordinal: u64 = self.max_ordinal_present();
5575            encoder.write_num(max_ordinal, offset);
5576            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5577            // Calling encoder.out_of_line_offset(0) is not allowed.
5578            if max_ordinal == 0 {
5579                return Ok(());
5580            }
5581            depth.increment()?;
5582            let envelope_size = 8;
5583            let bytes_len = max_ordinal as usize * envelope_size;
5584            #[allow(unused_variables)]
5585            let offset = encoder.out_of_line_offset(bytes_len);
5586            let mut _prev_end_offset: usize = 0;
5587            if 1 > max_ordinal {
5588                return Ok(());
5589            }
5590
5591            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5592            // are envelope_size bytes.
5593            let cur_offset: usize = (1 - 1) * envelope_size;
5594
5595            // Zero reserved fields.
5596            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5597
5598            // Safety:
5599            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5600            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5601            //   envelope_size bytes, there is always sufficient room.
5602            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5603                self.peer_sta_address
5604                    .as_ref()
5605                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5606                encoder,
5607                offset + cur_offset,
5608                depth,
5609            )?;
5610
5611            _prev_end_offset = cur_offset + envelope_size;
5612            if 2 > max_ordinal {
5613                return Ok(());
5614            }
5615
5616            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5617            // are envelope_size bytes.
5618            let cur_offset: usize = (2 - 1) * envelope_size;
5619
5620            // Zero reserved fields.
5621            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5622
5623            // Safety:
5624            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5625            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5626            //   envelope_size bytes, there is always sufficient room.
5627            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
5628            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5629            encoder, offset + cur_offset, depth
5630        )?;
5631
5632            _prev_end_offset = cur_offset + envelope_size;
5633
5634            Ok(())
5635        }
5636    }
5637
5638    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5639        for WlanFullmacImplDisassocRequest
5640    {
5641        #[inline(always)]
5642        fn new_empty() -> Self {
5643            Self::default()
5644        }
5645
5646        unsafe fn decode(
5647            &mut self,
5648            decoder: &mut fidl::encoding::Decoder<'_, D>,
5649            offset: usize,
5650            mut depth: fidl::encoding::Depth,
5651        ) -> fidl::Result<()> {
5652            decoder.debug_check_bounds::<Self>(offset);
5653            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5654                None => return Err(fidl::Error::NotNullable),
5655                Some(len) => len,
5656            };
5657            // Calling decoder.out_of_line_offset(0) is not allowed.
5658            if len == 0 {
5659                return Ok(());
5660            };
5661            depth.increment()?;
5662            let envelope_size = 8;
5663            let bytes_len = len * envelope_size;
5664            let offset = decoder.out_of_line_offset(bytes_len)?;
5665            // Decode the envelope for each type.
5666            let mut _next_ordinal_to_read = 0;
5667            let mut next_offset = offset;
5668            let end_offset = offset + bytes_len;
5669            _next_ordinal_to_read += 1;
5670            if next_offset >= end_offset {
5671                return Ok(());
5672            }
5673
5674            // Decode unknown envelopes for gaps in ordinals.
5675            while _next_ordinal_to_read < 1 {
5676                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5677                _next_ordinal_to_read += 1;
5678                next_offset += envelope_size;
5679            }
5680
5681            let next_out_of_line = decoder.next_out_of_line();
5682            let handles_before = decoder.remaining_handles();
5683            if let Some((inlined, num_bytes, num_handles)) =
5684                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5685            {
5686                let member_inline_size =
5687                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5688                        decoder.context,
5689                    );
5690                if inlined != (member_inline_size <= 4) {
5691                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5692                }
5693                let inner_offset;
5694                let mut inner_depth = depth.clone();
5695                if inlined {
5696                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5697                    inner_offset = next_offset;
5698                } else {
5699                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5700                    inner_depth.increment()?;
5701                }
5702                let val_ref = self
5703                    .peer_sta_address
5704                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5705                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5706                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5707                {
5708                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5709                }
5710                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5711                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5712                }
5713            }
5714
5715            next_offset += envelope_size;
5716            _next_ordinal_to_read += 1;
5717            if next_offset >= end_offset {
5718                return Ok(());
5719            }
5720
5721            // Decode unknown envelopes for gaps in ordinals.
5722            while _next_ordinal_to_read < 2 {
5723                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5724                _next_ordinal_to_read += 1;
5725                next_offset += envelope_size;
5726            }
5727
5728            let next_out_of_line = decoder.next_out_of_line();
5729            let handles_before = decoder.remaining_handles();
5730            if let Some((inlined, num_bytes, num_handles)) =
5731                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5732            {
5733                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5734                if inlined != (member_inline_size <= 4) {
5735                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5736                }
5737                let inner_offset;
5738                let mut inner_depth = depth.clone();
5739                if inlined {
5740                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5741                    inner_offset = next_offset;
5742                } else {
5743                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5744                    inner_depth.increment()?;
5745                }
5746                let val_ref = self.reason_code.get_or_insert_with(|| {
5747                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
5748                });
5749                fidl::decode!(
5750                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
5751                    D,
5752                    val_ref,
5753                    decoder,
5754                    inner_offset,
5755                    inner_depth
5756                )?;
5757                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5758                {
5759                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5760                }
5761                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5762                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5763                }
5764            }
5765
5766            next_offset += envelope_size;
5767
5768            // Decode the remaining unknown envelopes.
5769            while next_offset < end_offset {
5770                _next_ordinal_to_read += 1;
5771                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5772                next_offset += envelope_size;
5773            }
5774
5775            Ok(())
5776        }
5777    }
5778
5779    impl WlanFullmacImplEapolTxRequest {
5780        #[inline(always)]
5781        fn max_ordinal_present(&self) -> u64 {
5782            if let Some(_) = self.data {
5783                return 3;
5784            }
5785            if let Some(_) = self.dst_addr {
5786                return 2;
5787            }
5788            if let Some(_) = self.src_addr {
5789                return 1;
5790            }
5791            0
5792        }
5793    }
5794
5795    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplEapolTxRequest {
5796        type Borrowed<'a> = &'a Self;
5797        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5798            value
5799        }
5800    }
5801
5802    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplEapolTxRequest {
5803        type Owned = Self;
5804
5805        #[inline(always)]
5806        fn inline_align(_context: fidl::encoding::Context) -> usize {
5807            8
5808        }
5809
5810        #[inline(always)]
5811        fn inline_size(_context: fidl::encoding::Context) -> usize {
5812            16
5813        }
5814    }
5815
5816    unsafe impl<D: fidl::encoding::ResourceDialect>
5817        fidl::encoding::Encode<WlanFullmacImplEapolTxRequest, D>
5818        for &WlanFullmacImplEapolTxRequest
5819    {
5820        unsafe fn encode(
5821            self,
5822            encoder: &mut fidl::encoding::Encoder<'_, D>,
5823            offset: usize,
5824            mut depth: fidl::encoding::Depth,
5825        ) -> fidl::Result<()> {
5826            encoder.debug_check_bounds::<WlanFullmacImplEapolTxRequest>(offset);
5827            // Vector header
5828            let max_ordinal: u64 = self.max_ordinal_present();
5829            encoder.write_num(max_ordinal, offset);
5830            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5831            // Calling encoder.out_of_line_offset(0) is not allowed.
5832            if max_ordinal == 0 {
5833                return Ok(());
5834            }
5835            depth.increment()?;
5836            let envelope_size = 8;
5837            let bytes_len = max_ordinal as usize * envelope_size;
5838            #[allow(unused_variables)]
5839            let offset = encoder.out_of_line_offset(bytes_len);
5840            let mut _prev_end_offset: usize = 0;
5841            if 1 > max_ordinal {
5842                return Ok(());
5843            }
5844
5845            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5846            // are envelope_size bytes.
5847            let cur_offset: usize = (1 - 1) * envelope_size;
5848
5849            // Zero reserved fields.
5850            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5851
5852            // Safety:
5853            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5854            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5855            //   envelope_size bytes, there is always sufficient room.
5856            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5857                self.src_addr
5858                    .as_ref()
5859                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5860                encoder,
5861                offset + cur_offset,
5862                depth,
5863            )?;
5864
5865            _prev_end_offset = cur_offset + envelope_size;
5866            if 2 > max_ordinal {
5867                return Ok(());
5868            }
5869
5870            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5871            // are envelope_size bytes.
5872            let cur_offset: usize = (2 - 1) * envelope_size;
5873
5874            // Zero reserved fields.
5875            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5876
5877            // Safety:
5878            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5879            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5880            //   envelope_size bytes, there is always sufficient room.
5881            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5882                self.dst_addr
5883                    .as_ref()
5884                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5885                encoder,
5886                offset + cur_offset,
5887                depth,
5888            )?;
5889
5890            _prev_end_offset = cur_offset + envelope_size;
5891            if 3 > max_ordinal {
5892                return Ok(());
5893            }
5894
5895            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5896            // are envelope_size bytes.
5897            let cur_offset: usize = (3 - 1) * envelope_size;
5898
5899            // Zero reserved fields.
5900            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5901
5902            // Safety:
5903            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5904            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5905            //   envelope_size bytes, there is always sufficient room.
5906            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
5907            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
5908            encoder, offset + cur_offset, depth
5909        )?;
5910
5911            _prev_end_offset = cur_offset + envelope_size;
5912
5913            Ok(())
5914        }
5915    }
5916
5917    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5918        for WlanFullmacImplEapolTxRequest
5919    {
5920        #[inline(always)]
5921        fn new_empty() -> Self {
5922            Self::default()
5923        }
5924
5925        unsafe fn decode(
5926            &mut self,
5927            decoder: &mut fidl::encoding::Decoder<'_, D>,
5928            offset: usize,
5929            mut depth: fidl::encoding::Depth,
5930        ) -> fidl::Result<()> {
5931            decoder.debug_check_bounds::<Self>(offset);
5932            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5933                None => return Err(fidl::Error::NotNullable),
5934                Some(len) => len,
5935            };
5936            // Calling decoder.out_of_line_offset(0) is not allowed.
5937            if len == 0 {
5938                return Ok(());
5939            };
5940            depth.increment()?;
5941            let envelope_size = 8;
5942            let bytes_len = len * envelope_size;
5943            let offset = decoder.out_of_line_offset(bytes_len)?;
5944            // Decode the envelope for each type.
5945            let mut _next_ordinal_to_read = 0;
5946            let mut next_offset = offset;
5947            let end_offset = offset + bytes_len;
5948            _next_ordinal_to_read += 1;
5949            if next_offset >= end_offset {
5950                return Ok(());
5951            }
5952
5953            // Decode unknown envelopes for gaps in ordinals.
5954            while _next_ordinal_to_read < 1 {
5955                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5956                _next_ordinal_to_read += 1;
5957                next_offset += envelope_size;
5958            }
5959
5960            let next_out_of_line = decoder.next_out_of_line();
5961            let handles_before = decoder.remaining_handles();
5962            if let Some((inlined, num_bytes, num_handles)) =
5963                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5964            {
5965                let member_inline_size =
5966                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5967                        decoder.context,
5968                    );
5969                if inlined != (member_inline_size <= 4) {
5970                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5971                }
5972                let inner_offset;
5973                let mut inner_depth = depth.clone();
5974                if inlined {
5975                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5976                    inner_offset = next_offset;
5977                } else {
5978                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5979                    inner_depth.increment()?;
5980                }
5981                let val_ref = self
5982                    .src_addr
5983                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5984                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5985                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5986                {
5987                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5988                }
5989                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5990                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5991                }
5992            }
5993
5994            next_offset += envelope_size;
5995            _next_ordinal_to_read += 1;
5996            if next_offset >= end_offset {
5997                return Ok(());
5998            }
5999
6000            // Decode unknown envelopes for gaps in ordinals.
6001            while _next_ordinal_to_read < 2 {
6002                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6003                _next_ordinal_to_read += 1;
6004                next_offset += envelope_size;
6005            }
6006
6007            let next_out_of_line = decoder.next_out_of_line();
6008            let handles_before = decoder.remaining_handles();
6009            if let Some((inlined, num_bytes, num_handles)) =
6010                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6011            {
6012                let member_inline_size =
6013                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6014                        decoder.context,
6015                    );
6016                if inlined != (member_inline_size <= 4) {
6017                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6018                }
6019                let inner_offset;
6020                let mut inner_depth = depth.clone();
6021                if inlined {
6022                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6023                    inner_offset = next_offset;
6024                } else {
6025                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6026                    inner_depth.increment()?;
6027                }
6028                let val_ref = self
6029                    .dst_addr
6030                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6031                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6032                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6033                {
6034                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6035                }
6036                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6037                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6038                }
6039            }
6040
6041            next_offset += envelope_size;
6042            _next_ordinal_to_read += 1;
6043            if next_offset >= end_offset {
6044                return Ok(());
6045            }
6046
6047            // Decode unknown envelopes for gaps in ordinals.
6048            while _next_ordinal_to_read < 3 {
6049                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6050                _next_ordinal_to_read += 1;
6051                next_offset += envelope_size;
6052            }
6053
6054            let next_out_of_line = decoder.next_out_of_line();
6055            let handles_before = decoder.remaining_handles();
6056            if let Some((inlined, num_bytes, num_handles)) =
6057                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6058            {
6059                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6060                if inlined != (member_inline_size <= 4) {
6061                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6062                }
6063                let inner_offset;
6064                let mut inner_depth = depth.clone();
6065                if inlined {
6066                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6067                    inner_offset = next_offset;
6068                } else {
6069                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6070                    inner_depth.increment()?;
6071                }
6072                let val_ref = self.data.get_or_insert_with(|| {
6073                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
6074                });
6075                fidl::decode!(
6076                    fidl::encoding::UnboundedVector<u8>,
6077                    D,
6078                    val_ref,
6079                    decoder,
6080                    inner_offset,
6081                    inner_depth
6082                )?;
6083                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6084                {
6085                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6086                }
6087                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6088                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6089                }
6090            }
6091
6092            next_offset += envelope_size;
6093
6094            // Decode the remaining unknown envelopes.
6095            while next_offset < end_offset {
6096                _next_ordinal_to_read += 1;
6097                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6098                next_offset += envelope_size;
6099            }
6100
6101            Ok(())
6102        }
6103    }
6104
6105    impl WlanFullmacImplIfcAssocIndRequest {
6106        #[inline(always)]
6107        fn max_ordinal_present(&self) -> u64 {
6108            if let Some(_) = self.vendor_ie {
6109                return 5;
6110            }
6111            if let Some(_) = self.rsne {
6112                return 4;
6113            }
6114            if let Some(_) = self.ssid {
6115                return 3;
6116            }
6117            if let Some(_) = self.listen_interval {
6118                return 2;
6119            }
6120            if let Some(_) = self.peer_sta_address {
6121                return 1;
6122            }
6123            0
6124        }
6125    }
6126
6127    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAssocIndRequest {
6128        type Borrowed<'a> = &'a Self;
6129        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6130            value
6131        }
6132    }
6133
6134    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAssocIndRequest {
6135        type Owned = Self;
6136
6137        #[inline(always)]
6138        fn inline_align(_context: fidl::encoding::Context) -> usize {
6139            8
6140        }
6141
6142        #[inline(always)]
6143        fn inline_size(_context: fidl::encoding::Context) -> usize {
6144            16
6145        }
6146    }
6147
6148    unsafe impl<D: fidl::encoding::ResourceDialect>
6149        fidl::encoding::Encode<WlanFullmacImplIfcAssocIndRequest, D>
6150        for &WlanFullmacImplIfcAssocIndRequest
6151    {
6152        unsafe fn encode(
6153            self,
6154            encoder: &mut fidl::encoding::Encoder<'_, D>,
6155            offset: usize,
6156            mut depth: fidl::encoding::Depth,
6157        ) -> fidl::Result<()> {
6158            encoder.debug_check_bounds::<WlanFullmacImplIfcAssocIndRequest>(offset);
6159            // Vector header
6160            let max_ordinal: u64 = self.max_ordinal_present();
6161            encoder.write_num(max_ordinal, offset);
6162            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6163            // Calling encoder.out_of_line_offset(0) is not allowed.
6164            if max_ordinal == 0 {
6165                return Ok(());
6166            }
6167            depth.increment()?;
6168            let envelope_size = 8;
6169            let bytes_len = max_ordinal as usize * envelope_size;
6170            #[allow(unused_variables)]
6171            let offset = encoder.out_of_line_offset(bytes_len);
6172            let mut _prev_end_offset: usize = 0;
6173            if 1 > max_ordinal {
6174                return Ok(());
6175            }
6176
6177            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6178            // are envelope_size bytes.
6179            let cur_offset: usize = (1 - 1) * envelope_size;
6180
6181            // Zero reserved fields.
6182            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6183
6184            // Safety:
6185            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6186            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6187            //   envelope_size bytes, there is always sufficient room.
6188            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6189                self.peer_sta_address
6190                    .as_ref()
6191                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6192                encoder,
6193                offset + cur_offset,
6194                depth,
6195            )?;
6196
6197            _prev_end_offset = cur_offset + envelope_size;
6198            if 2 > max_ordinal {
6199                return Ok(());
6200            }
6201
6202            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6203            // are envelope_size bytes.
6204            let cur_offset: usize = (2 - 1) * envelope_size;
6205
6206            // Zero reserved fields.
6207            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6208
6209            // Safety:
6210            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6211            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6212            //   envelope_size bytes, there is always sufficient room.
6213            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6214                self.listen_interval.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6215                encoder,
6216                offset + cur_offset,
6217                depth,
6218            )?;
6219
6220            _prev_end_offset = cur_offset + envelope_size;
6221            if 3 > max_ordinal {
6222                return Ok(());
6223            }
6224
6225            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6226            // are envelope_size bytes.
6227            let cur_offset: usize = (3 - 1) * envelope_size;
6228
6229            // Zero reserved fields.
6230            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6231
6232            // Safety:
6233            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6234            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6235            //   envelope_size bytes, there is always sufficient room.
6236            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
6237                self.ssid.as_ref().map(
6238                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
6239                ),
6240                encoder,
6241                offset + cur_offset,
6242                depth,
6243            )?;
6244
6245            _prev_end_offset = cur_offset + envelope_size;
6246            if 4 > max_ordinal {
6247                return Ok(());
6248            }
6249
6250            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6251            // are envelope_size bytes.
6252            let cur_offset: usize = (4 - 1) * envelope_size;
6253
6254            // Zero reserved fields.
6255            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6256
6257            // Safety:
6258            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6259            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6260            //   envelope_size bytes, there is always sufficient room.
6261            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
6262                self.rsne.as_ref().map(
6263                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
6264                ),
6265                encoder,
6266                offset + cur_offset,
6267                depth,
6268            )?;
6269
6270            _prev_end_offset = cur_offset + envelope_size;
6271            if 5 > max_ordinal {
6272                return Ok(());
6273            }
6274
6275            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6276            // are envelope_size bytes.
6277            let cur_offset: usize = (5 - 1) * envelope_size;
6278
6279            // Zero reserved fields.
6280            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6281
6282            // Safety:
6283            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6284            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6285            //   envelope_size bytes, there is always sufficient room.
6286            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
6287                self.vendor_ie.as_ref().map(
6288                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
6289                ),
6290                encoder,
6291                offset + cur_offset,
6292                depth,
6293            )?;
6294
6295            _prev_end_offset = cur_offset + envelope_size;
6296
6297            Ok(())
6298        }
6299    }
6300
6301    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6302        for WlanFullmacImplIfcAssocIndRequest
6303    {
6304        #[inline(always)]
6305        fn new_empty() -> Self {
6306            Self::default()
6307        }
6308
6309        unsafe fn decode(
6310            &mut self,
6311            decoder: &mut fidl::encoding::Decoder<'_, D>,
6312            offset: usize,
6313            mut depth: fidl::encoding::Depth,
6314        ) -> fidl::Result<()> {
6315            decoder.debug_check_bounds::<Self>(offset);
6316            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6317                None => return Err(fidl::Error::NotNullable),
6318                Some(len) => len,
6319            };
6320            // Calling decoder.out_of_line_offset(0) is not allowed.
6321            if len == 0 {
6322                return Ok(());
6323            };
6324            depth.increment()?;
6325            let envelope_size = 8;
6326            let bytes_len = len * envelope_size;
6327            let offset = decoder.out_of_line_offset(bytes_len)?;
6328            // Decode the envelope for each type.
6329            let mut _next_ordinal_to_read = 0;
6330            let mut next_offset = offset;
6331            let end_offset = offset + bytes_len;
6332            _next_ordinal_to_read += 1;
6333            if next_offset >= end_offset {
6334                return Ok(());
6335            }
6336
6337            // Decode unknown envelopes for gaps in ordinals.
6338            while _next_ordinal_to_read < 1 {
6339                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6340                _next_ordinal_to_read += 1;
6341                next_offset += envelope_size;
6342            }
6343
6344            let next_out_of_line = decoder.next_out_of_line();
6345            let handles_before = decoder.remaining_handles();
6346            if let Some((inlined, num_bytes, num_handles)) =
6347                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6348            {
6349                let member_inline_size =
6350                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6351                        decoder.context,
6352                    );
6353                if inlined != (member_inline_size <= 4) {
6354                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6355                }
6356                let inner_offset;
6357                let mut inner_depth = depth.clone();
6358                if inlined {
6359                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6360                    inner_offset = next_offset;
6361                } else {
6362                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6363                    inner_depth.increment()?;
6364                }
6365                let val_ref = self
6366                    .peer_sta_address
6367                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6368                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6369                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6370                {
6371                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6372                }
6373                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6374                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6375                }
6376            }
6377
6378            next_offset += envelope_size;
6379            _next_ordinal_to_read += 1;
6380            if next_offset >= end_offset {
6381                return Ok(());
6382            }
6383
6384            // Decode unknown envelopes for gaps in ordinals.
6385            while _next_ordinal_to_read < 2 {
6386                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6387                _next_ordinal_to_read += 1;
6388                next_offset += envelope_size;
6389            }
6390
6391            let next_out_of_line = decoder.next_out_of_line();
6392            let handles_before = decoder.remaining_handles();
6393            if let Some((inlined, num_bytes, num_handles)) =
6394                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6395            {
6396                let member_inline_size =
6397                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6398                if inlined != (member_inline_size <= 4) {
6399                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6400                }
6401                let inner_offset;
6402                let mut inner_depth = depth.clone();
6403                if inlined {
6404                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6405                    inner_offset = next_offset;
6406                } else {
6407                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6408                    inner_depth.increment()?;
6409                }
6410                let val_ref = self.listen_interval.get_or_insert_with(|| fidl::new_empty!(u16, D));
6411                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6412                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6413                {
6414                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6415                }
6416                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6417                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6418                }
6419            }
6420
6421            next_offset += envelope_size;
6422            _next_ordinal_to_read += 1;
6423            if next_offset >= end_offset {
6424                return Ok(());
6425            }
6426
6427            // Decode unknown envelopes for gaps in ordinals.
6428            while _next_ordinal_to_read < 3 {
6429                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6430                _next_ordinal_to_read += 1;
6431                next_offset += envelope_size;
6432            }
6433
6434            let next_out_of_line = decoder.next_out_of_line();
6435            let handles_before = decoder.remaining_handles();
6436            if let Some((inlined, num_bytes, num_handles)) =
6437                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6438            {
6439                let member_inline_size =
6440                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
6441                        decoder.context,
6442                    );
6443                if inlined != (member_inline_size <= 4) {
6444                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6445                }
6446                let inner_offset;
6447                let mut inner_depth = depth.clone();
6448                if inlined {
6449                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6450                    inner_offset = next_offset;
6451                } else {
6452                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6453                    inner_depth.increment()?;
6454                }
6455                let val_ref = self
6456                    .ssid
6457                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
6458                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
6459                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6460                {
6461                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6462                }
6463                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6464                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6465                }
6466            }
6467
6468            next_offset += envelope_size;
6469            _next_ordinal_to_read += 1;
6470            if next_offset >= end_offset {
6471                return Ok(());
6472            }
6473
6474            // Decode unknown envelopes for gaps in ordinals.
6475            while _next_ordinal_to_read < 4 {
6476                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6477                _next_ordinal_to_read += 1;
6478                next_offset += envelope_size;
6479            }
6480
6481            let next_out_of_line = decoder.next_out_of_line();
6482            let handles_before = decoder.remaining_handles();
6483            if let Some((inlined, num_bytes, num_handles)) =
6484                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6485            {
6486                let member_inline_size =
6487                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
6488                        decoder.context,
6489                    );
6490                if inlined != (member_inline_size <= 4) {
6491                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6492                }
6493                let inner_offset;
6494                let mut inner_depth = depth.clone();
6495                if inlined {
6496                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6497                    inner_offset = next_offset;
6498                } else {
6499                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6500                    inner_depth.increment()?;
6501                }
6502                let val_ref = self
6503                    .rsne
6504                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
6505                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
6506                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6507                {
6508                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6509                }
6510                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6511                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6512                }
6513            }
6514
6515            next_offset += envelope_size;
6516            _next_ordinal_to_read += 1;
6517            if next_offset >= end_offset {
6518                return Ok(());
6519            }
6520
6521            // Decode unknown envelopes for gaps in ordinals.
6522            while _next_ordinal_to_read < 5 {
6523                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6524                _next_ordinal_to_read += 1;
6525                next_offset += envelope_size;
6526            }
6527
6528            let next_out_of_line = decoder.next_out_of_line();
6529            let handles_before = decoder.remaining_handles();
6530            if let Some((inlined, num_bytes, num_handles)) =
6531                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6532            {
6533                let member_inline_size =
6534                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
6535                        decoder.context,
6536                    );
6537                if inlined != (member_inline_size <= 4) {
6538                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6539                }
6540                let inner_offset;
6541                let mut inner_depth = depth.clone();
6542                if inlined {
6543                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6544                    inner_offset = next_offset;
6545                } else {
6546                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6547                    inner_depth.increment()?;
6548                }
6549                let val_ref = self
6550                    .vendor_ie
6551                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
6552                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
6553                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6554                {
6555                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6556                }
6557                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6558                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6559                }
6560            }
6561
6562            next_offset += envelope_size;
6563
6564            // Decode the remaining unknown envelopes.
6565            while next_offset < end_offset {
6566                _next_ordinal_to_read += 1;
6567                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6568                next_offset += envelope_size;
6569            }
6570
6571            Ok(())
6572        }
6573    }
6574
6575    impl WlanFullmacImplIfcAuthIndRequest {
6576        #[inline(always)]
6577        fn max_ordinal_present(&self) -> u64 {
6578            if let Some(_) = self.auth_type {
6579                return 2;
6580            }
6581            if let Some(_) = self.peer_sta_address {
6582                return 1;
6583            }
6584            0
6585        }
6586    }
6587
6588    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAuthIndRequest {
6589        type Borrowed<'a> = &'a Self;
6590        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6591            value
6592        }
6593    }
6594
6595    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAuthIndRequest {
6596        type Owned = Self;
6597
6598        #[inline(always)]
6599        fn inline_align(_context: fidl::encoding::Context) -> usize {
6600            8
6601        }
6602
6603        #[inline(always)]
6604        fn inline_size(_context: fidl::encoding::Context) -> usize {
6605            16
6606        }
6607    }
6608
6609    unsafe impl<D: fidl::encoding::ResourceDialect>
6610        fidl::encoding::Encode<WlanFullmacImplIfcAuthIndRequest, D>
6611        for &WlanFullmacImplIfcAuthIndRequest
6612    {
6613        unsafe fn encode(
6614            self,
6615            encoder: &mut fidl::encoding::Encoder<'_, D>,
6616            offset: usize,
6617            mut depth: fidl::encoding::Depth,
6618        ) -> fidl::Result<()> {
6619            encoder.debug_check_bounds::<WlanFullmacImplIfcAuthIndRequest>(offset);
6620            // Vector header
6621            let max_ordinal: u64 = self.max_ordinal_present();
6622            encoder.write_num(max_ordinal, offset);
6623            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6624            // Calling encoder.out_of_line_offset(0) is not allowed.
6625            if max_ordinal == 0 {
6626                return Ok(());
6627            }
6628            depth.increment()?;
6629            let envelope_size = 8;
6630            let bytes_len = max_ordinal as usize * envelope_size;
6631            #[allow(unused_variables)]
6632            let offset = encoder.out_of_line_offset(bytes_len);
6633            let mut _prev_end_offset: usize = 0;
6634            if 1 > max_ordinal {
6635                return Ok(());
6636            }
6637
6638            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6639            // are envelope_size bytes.
6640            let cur_offset: usize = (1 - 1) * envelope_size;
6641
6642            // Zero reserved fields.
6643            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6644
6645            // Safety:
6646            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6647            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6648            //   envelope_size bytes, there is always sufficient room.
6649            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6650                self.peer_sta_address
6651                    .as_ref()
6652                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6653                encoder,
6654                offset + cur_offset,
6655                depth,
6656            )?;
6657
6658            _prev_end_offset = cur_offset + envelope_size;
6659            if 2 > max_ordinal {
6660                return Ok(());
6661            }
6662
6663            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6664            // are envelope_size bytes.
6665            let cur_offset: usize = (2 - 1) * envelope_size;
6666
6667            // Zero reserved fields.
6668            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6669
6670            // Safety:
6671            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6672            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6673            //   envelope_size bytes, there is always sufficient room.
6674            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
6675                self.auth_type
6676                    .as_ref()
6677                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
6678                encoder,
6679                offset + cur_offset,
6680                depth,
6681            )?;
6682
6683            _prev_end_offset = cur_offset + envelope_size;
6684
6685            Ok(())
6686        }
6687    }
6688
6689    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6690        for WlanFullmacImplIfcAuthIndRequest
6691    {
6692        #[inline(always)]
6693        fn new_empty() -> Self {
6694            Self::default()
6695        }
6696
6697        unsafe fn decode(
6698            &mut self,
6699            decoder: &mut fidl::encoding::Decoder<'_, D>,
6700            offset: usize,
6701            mut depth: fidl::encoding::Depth,
6702        ) -> fidl::Result<()> {
6703            decoder.debug_check_bounds::<Self>(offset);
6704            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6705                None => return Err(fidl::Error::NotNullable),
6706                Some(len) => len,
6707            };
6708            // Calling decoder.out_of_line_offset(0) is not allowed.
6709            if len == 0 {
6710                return Ok(());
6711            };
6712            depth.increment()?;
6713            let envelope_size = 8;
6714            let bytes_len = len * envelope_size;
6715            let offset = decoder.out_of_line_offset(bytes_len)?;
6716            // Decode the envelope for each type.
6717            let mut _next_ordinal_to_read = 0;
6718            let mut next_offset = offset;
6719            let end_offset = offset + bytes_len;
6720            _next_ordinal_to_read += 1;
6721            if next_offset >= end_offset {
6722                return Ok(());
6723            }
6724
6725            // Decode unknown envelopes for gaps in ordinals.
6726            while _next_ordinal_to_read < 1 {
6727                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6728                _next_ordinal_to_read += 1;
6729                next_offset += envelope_size;
6730            }
6731
6732            let next_out_of_line = decoder.next_out_of_line();
6733            let handles_before = decoder.remaining_handles();
6734            if let Some((inlined, num_bytes, num_handles)) =
6735                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6736            {
6737                let member_inline_size =
6738                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6739                        decoder.context,
6740                    );
6741                if inlined != (member_inline_size <= 4) {
6742                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6743                }
6744                let inner_offset;
6745                let mut inner_depth = depth.clone();
6746                if inlined {
6747                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6748                    inner_offset = next_offset;
6749                } else {
6750                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6751                    inner_depth.increment()?;
6752                }
6753                let val_ref = self
6754                    .peer_sta_address
6755                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6756                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6757                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6758                {
6759                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6760                }
6761                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6762                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6763                }
6764            }
6765
6766            next_offset += envelope_size;
6767            _next_ordinal_to_read += 1;
6768            if next_offset >= end_offset {
6769                return Ok(());
6770            }
6771
6772            // Decode unknown envelopes for gaps in ordinals.
6773            while _next_ordinal_to_read < 2 {
6774                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6775                _next_ordinal_to_read += 1;
6776                next_offset += envelope_size;
6777            }
6778
6779            let next_out_of_line = decoder.next_out_of_line();
6780            let handles_before = decoder.remaining_handles();
6781            if let Some((inlined, num_bytes, num_handles)) =
6782                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6783            {
6784                let member_inline_size =
6785                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6786                if inlined != (member_inline_size <= 4) {
6787                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6788                }
6789                let inner_offset;
6790                let mut inner_depth = depth.clone();
6791                if inlined {
6792                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6793                    inner_offset = next_offset;
6794                } else {
6795                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6796                    inner_depth.increment()?;
6797                }
6798                let val_ref =
6799                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
6800                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
6801                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6802                {
6803                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6804                }
6805                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6806                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6807                }
6808            }
6809
6810            next_offset += envelope_size;
6811
6812            // Decode the remaining unknown envelopes.
6813            while next_offset < end_offset {
6814                _next_ordinal_to_read += 1;
6815                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6816                next_offset += envelope_size;
6817            }
6818
6819            Ok(())
6820        }
6821    }
6822
6823    impl WlanFullmacImplIfcConnectConfRequest {
6824        #[inline(always)]
6825        fn max_ordinal_present(&self) -> u64 {
6826            if let Some(_) = self.association_ies {
6827                return 4;
6828            }
6829            if let Some(_) = self.association_id {
6830                return 3;
6831            }
6832            if let Some(_) = self.result_code {
6833                return 2;
6834            }
6835            if let Some(_) = self.peer_sta_address {
6836                return 1;
6837            }
6838            0
6839        }
6840    }
6841
6842    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcConnectConfRequest {
6843        type Borrowed<'a> = &'a Self;
6844        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6845            value
6846        }
6847    }
6848
6849    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcConnectConfRequest {
6850        type Owned = Self;
6851
6852        #[inline(always)]
6853        fn inline_align(_context: fidl::encoding::Context) -> usize {
6854            8
6855        }
6856
6857        #[inline(always)]
6858        fn inline_size(_context: fidl::encoding::Context) -> usize {
6859            16
6860        }
6861    }
6862
6863    unsafe impl<D: fidl::encoding::ResourceDialect>
6864        fidl::encoding::Encode<WlanFullmacImplIfcConnectConfRequest, D>
6865        for &WlanFullmacImplIfcConnectConfRequest
6866    {
6867        unsafe fn encode(
6868            self,
6869            encoder: &mut fidl::encoding::Encoder<'_, D>,
6870            offset: usize,
6871            mut depth: fidl::encoding::Depth,
6872        ) -> fidl::Result<()> {
6873            encoder.debug_check_bounds::<WlanFullmacImplIfcConnectConfRequest>(offset);
6874            // Vector header
6875            let max_ordinal: u64 = self.max_ordinal_present();
6876            encoder.write_num(max_ordinal, offset);
6877            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6878            // Calling encoder.out_of_line_offset(0) is not allowed.
6879            if max_ordinal == 0 {
6880                return Ok(());
6881            }
6882            depth.increment()?;
6883            let envelope_size = 8;
6884            let bytes_len = max_ordinal as usize * envelope_size;
6885            #[allow(unused_variables)]
6886            let offset = encoder.out_of_line_offset(bytes_len);
6887            let mut _prev_end_offset: usize = 0;
6888            if 1 > max_ordinal {
6889                return Ok(());
6890            }
6891
6892            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6893            // are envelope_size bytes.
6894            let cur_offset: usize = (1 - 1) * envelope_size;
6895
6896            // Zero reserved fields.
6897            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6898
6899            // Safety:
6900            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6901            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6902            //   envelope_size bytes, there is always sufficient room.
6903            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6904                self.peer_sta_address
6905                    .as_ref()
6906                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6907                encoder,
6908                offset + cur_offset,
6909                depth,
6910            )?;
6911
6912            _prev_end_offset = cur_offset + envelope_size;
6913            if 2 > max_ordinal {
6914                return Ok(());
6915            }
6916
6917            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6918            // are envelope_size bytes.
6919            let cur_offset: usize = (2 - 1) * envelope_size;
6920
6921            // Zero reserved fields.
6922            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6923
6924            // Safety:
6925            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6926            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6927            //   envelope_size bytes, there is always sufficient room.
6928            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
6929            self.result_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
6930            encoder, offset + cur_offset, depth
6931        )?;
6932
6933            _prev_end_offset = cur_offset + envelope_size;
6934            if 3 > max_ordinal {
6935                return Ok(());
6936            }
6937
6938            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6939            // are envelope_size bytes.
6940            let cur_offset: usize = (3 - 1) * envelope_size;
6941
6942            // Zero reserved fields.
6943            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6944
6945            // Safety:
6946            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6947            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6948            //   envelope_size bytes, there is always sufficient room.
6949            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6950                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6951                encoder,
6952                offset + cur_offset,
6953                depth,
6954            )?;
6955
6956            _prev_end_offset = cur_offset + envelope_size;
6957            if 4 > max_ordinal {
6958                return Ok(());
6959            }
6960
6961            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6962            // are envelope_size bytes.
6963            let cur_offset: usize = (4 - 1) * envelope_size;
6964
6965            // Zero reserved fields.
6966            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6967
6968            // Safety:
6969            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6970            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6971            //   envelope_size bytes, there is always sufficient room.
6972            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
6973            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
6974            encoder, offset + cur_offset, depth
6975        )?;
6976
6977            _prev_end_offset = cur_offset + envelope_size;
6978
6979            Ok(())
6980        }
6981    }
6982
6983    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6984        for WlanFullmacImplIfcConnectConfRequest
6985    {
6986        #[inline(always)]
6987        fn new_empty() -> Self {
6988            Self::default()
6989        }
6990
6991        unsafe fn decode(
6992            &mut self,
6993            decoder: &mut fidl::encoding::Decoder<'_, D>,
6994            offset: usize,
6995            mut depth: fidl::encoding::Depth,
6996        ) -> fidl::Result<()> {
6997            decoder.debug_check_bounds::<Self>(offset);
6998            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6999                None => return Err(fidl::Error::NotNullable),
7000                Some(len) => len,
7001            };
7002            // Calling decoder.out_of_line_offset(0) is not allowed.
7003            if len == 0 {
7004                return Ok(());
7005            };
7006            depth.increment()?;
7007            let envelope_size = 8;
7008            let bytes_len = len * envelope_size;
7009            let offset = decoder.out_of_line_offset(bytes_len)?;
7010            // Decode the envelope for each type.
7011            let mut _next_ordinal_to_read = 0;
7012            let mut next_offset = offset;
7013            let end_offset = offset + bytes_len;
7014            _next_ordinal_to_read += 1;
7015            if next_offset >= end_offset {
7016                return Ok(());
7017            }
7018
7019            // Decode unknown envelopes for gaps in ordinals.
7020            while _next_ordinal_to_read < 1 {
7021                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7022                _next_ordinal_to_read += 1;
7023                next_offset += envelope_size;
7024            }
7025
7026            let next_out_of_line = decoder.next_out_of_line();
7027            let handles_before = decoder.remaining_handles();
7028            if let Some((inlined, num_bytes, num_handles)) =
7029                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7030            {
7031                let member_inline_size =
7032                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7033                        decoder.context,
7034                    );
7035                if inlined != (member_inline_size <= 4) {
7036                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7037                }
7038                let inner_offset;
7039                let mut inner_depth = depth.clone();
7040                if inlined {
7041                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7042                    inner_offset = next_offset;
7043                } else {
7044                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7045                    inner_depth.increment()?;
7046                }
7047                let val_ref = self
7048                    .peer_sta_address
7049                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7050                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7051                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7052                {
7053                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7054                }
7055                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7056                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7057                }
7058            }
7059
7060            next_offset += envelope_size;
7061            _next_ordinal_to_read += 1;
7062            if next_offset >= end_offset {
7063                return Ok(());
7064            }
7065
7066            // Decode unknown envelopes for gaps in ordinals.
7067            while _next_ordinal_to_read < 2 {
7068                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7069                _next_ordinal_to_read += 1;
7070                next_offset += envelope_size;
7071            }
7072
7073            let next_out_of_line = decoder.next_out_of_line();
7074            let handles_before = decoder.remaining_handles();
7075            if let Some((inlined, num_bytes, num_handles)) =
7076                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7077            {
7078                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7079                if inlined != (member_inline_size <= 4) {
7080                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7081                }
7082                let inner_offset;
7083                let mut inner_depth = depth.clone();
7084                if inlined {
7085                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7086                    inner_offset = next_offset;
7087                } else {
7088                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7089                    inner_depth.increment()?;
7090                }
7091                let val_ref = self.result_code.get_or_insert_with(|| {
7092                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
7093                });
7094                fidl::decode!(
7095                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
7096                    D,
7097                    val_ref,
7098                    decoder,
7099                    inner_offset,
7100                    inner_depth
7101                )?;
7102                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7103                {
7104                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7105                }
7106                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7107                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7108                }
7109            }
7110
7111            next_offset += envelope_size;
7112            _next_ordinal_to_read += 1;
7113            if next_offset >= end_offset {
7114                return Ok(());
7115            }
7116
7117            // Decode unknown envelopes for gaps in ordinals.
7118            while _next_ordinal_to_read < 3 {
7119                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7120                _next_ordinal_to_read += 1;
7121                next_offset += envelope_size;
7122            }
7123
7124            let next_out_of_line = decoder.next_out_of_line();
7125            let handles_before = decoder.remaining_handles();
7126            if let Some((inlined, num_bytes, num_handles)) =
7127                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7128            {
7129                let member_inline_size =
7130                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7131                if inlined != (member_inline_size <= 4) {
7132                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7133                }
7134                let inner_offset;
7135                let mut inner_depth = depth.clone();
7136                if inlined {
7137                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7138                    inner_offset = next_offset;
7139                } else {
7140                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7141                    inner_depth.increment()?;
7142                }
7143                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
7144                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7145                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7146                {
7147                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7148                }
7149                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7150                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7151                }
7152            }
7153
7154            next_offset += envelope_size;
7155            _next_ordinal_to_read += 1;
7156            if next_offset >= end_offset {
7157                return Ok(());
7158            }
7159
7160            // Decode unknown envelopes for gaps in ordinals.
7161            while _next_ordinal_to_read < 4 {
7162                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7163                _next_ordinal_to_read += 1;
7164                next_offset += envelope_size;
7165            }
7166
7167            let next_out_of_line = decoder.next_out_of_line();
7168            let handles_before = decoder.remaining_handles();
7169            if let Some((inlined, num_bytes, num_handles)) =
7170                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7171            {
7172                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7173                if inlined != (member_inline_size <= 4) {
7174                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7175                }
7176                let inner_offset;
7177                let mut inner_depth = depth.clone();
7178                if inlined {
7179                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7180                    inner_offset = next_offset;
7181                } else {
7182                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7183                    inner_depth.increment()?;
7184                }
7185                let val_ref = self.association_ies.get_or_insert_with(|| {
7186                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
7187                });
7188                fidl::decode!(
7189                    fidl::encoding::UnboundedVector<u8>,
7190                    D,
7191                    val_ref,
7192                    decoder,
7193                    inner_offset,
7194                    inner_depth
7195                )?;
7196                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7197                {
7198                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7199                }
7200                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7201                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7202                }
7203            }
7204
7205            next_offset += envelope_size;
7206
7207            // Decode the remaining unknown envelopes.
7208            while next_offset < end_offset {
7209                _next_ordinal_to_read += 1;
7210                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7211                next_offset += envelope_size;
7212            }
7213
7214            Ok(())
7215        }
7216    }
7217
7218    impl WlanFullmacImplIfcDeauthConfRequest {
7219        #[inline(always)]
7220        fn max_ordinal_present(&self) -> u64 {
7221            if let Some(_) = self.peer_sta_address {
7222                return 1;
7223            }
7224            0
7225        }
7226    }
7227
7228    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7229        type Borrowed<'a> = &'a Self;
7230        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7231            value
7232        }
7233    }
7234
7235    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7236        type Owned = Self;
7237
7238        #[inline(always)]
7239        fn inline_align(_context: fidl::encoding::Context) -> usize {
7240            8
7241        }
7242
7243        #[inline(always)]
7244        fn inline_size(_context: fidl::encoding::Context) -> usize {
7245            16
7246        }
7247    }
7248
7249    unsafe impl<D: fidl::encoding::ResourceDialect>
7250        fidl::encoding::Encode<WlanFullmacImplIfcDeauthConfRequest, D>
7251        for &WlanFullmacImplIfcDeauthConfRequest
7252    {
7253        unsafe fn encode(
7254            self,
7255            encoder: &mut fidl::encoding::Encoder<'_, D>,
7256            offset: usize,
7257            mut depth: fidl::encoding::Depth,
7258        ) -> fidl::Result<()> {
7259            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthConfRequest>(offset);
7260            // Vector header
7261            let max_ordinal: u64 = self.max_ordinal_present();
7262            encoder.write_num(max_ordinal, offset);
7263            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7264            // Calling encoder.out_of_line_offset(0) is not allowed.
7265            if max_ordinal == 0 {
7266                return Ok(());
7267            }
7268            depth.increment()?;
7269            let envelope_size = 8;
7270            let bytes_len = max_ordinal as usize * envelope_size;
7271            #[allow(unused_variables)]
7272            let offset = encoder.out_of_line_offset(bytes_len);
7273            let mut _prev_end_offset: usize = 0;
7274            if 1 > max_ordinal {
7275                return Ok(());
7276            }
7277
7278            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7279            // are envelope_size bytes.
7280            let cur_offset: usize = (1 - 1) * envelope_size;
7281
7282            // Zero reserved fields.
7283            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7284
7285            // Safety:
7286            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7287            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7288            //   envelope_size bytes, there is always sufficient room.
7289            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7290                self.peer_sta_address
7291                    .as_ref()
7292                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7293                encoder,
7294                offset + cur_offset,
7295                depth,
7296            )?;
7297
7298            _prev_end_offset = cur_offset + envelope_size;
7299
7300            Ok(())
7301        }
7302    }
7303
7304    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7305        for WlanFullmacImplIfcDeauthConfRequest
7306    {
7307        #[inline(always)]
7308        fn new_empty() -> Self {
7309            Self::default()
7310        }
7311
7312        unsafe fn decode(
7313            &mut self,
7314            decoder: &mut fidl::encoding::Decoder<'_, D>,
7315            offset: usize,
7316            mut depth: fidl::encoding::Depth,
7317        ) -> fidl::Result<()> {
7318            decoder.debug_check_bounds::<Self>(offset);
7319            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7320                None => return Err(fidl::Error::NotNullable),
7321                Some(len) => len,
7322            };
7323            // Calling decoder.out_of_line_offset(0) is not allowed.
7324            if len == 0 {
7325                return Ok(());
7326            };
7327            depth.increment()?;
7328            let envelope_size = 8;
7329            let bytes_len = len * envelope_size;
7330            let offset = decoder.out_of_line_offset(bytes_len)?;
7331            // Decode the envelope for each type.
7332            let mut _next_ordinal_to_read = 0;
7333            let mut next_offset = offset;
7334            let end_offset = offset + bytes_len;
7335            _next_ordinal_to_read += 1;
7336            if next_offset >= end_offset {
7337                return Ok(());
7338            }
7339
7340            // Decode unknown envelopes for gaps in ordinals.
7341            while _next_ordinal_to_read < 1 {
7342                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7343                _next_ordinal_to_read += 1;
7344                next_offset += envelope_size;
7345            }
7346
7347            let next_out_of_line = decoder.next_out_of_line();
7348            let handles_before = decoder.remaining_handles();
7349            if let Some((inlined, num_bytes, num_handles)) =
7350                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7351            {
7352                let member_inline_size =
7353                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7354                        decoder.context,
7355                    );
7356                if inlined != (member_inline_size <= 4) {
7357                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7358                }
7359                let inner_offset;
7360                let mut inner_depth = depth.clone();
7361                if inlined {
7362                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7363                    inner_offset = next_offset;
7364                } else {
7365                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7366                    inner_depth.increment()?;
7367                }
7368                let val_ref = self
7369                    .peer_sta_address
7370                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7371                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7372                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7373                {
7374                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7375                }
7376                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7377                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7378                }
7379            }
7380
7381            next_offset += envelope_size;
7382
7383            // Decode the remaining unknown envelopes.
7384            while next_offset < end_offset {
7385                _next_ordinal_to_read += 1;
7386                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7387                next_offset += envelope_size;
7388            }
7389
7390            Ok(())
7391        }
7392    }
7393
7394    impl WlanFullmacImplIfcDeauthIndRequest {
7395        #[inline(always)]
7396        fn max_ordinal_present(&self) -> u64 {
7397            if let Some(_) = self.locally_initiated {
7398                return 3;
7399            }
7400            if let Some(_) = self.reason_code {
7401                return 2;
7402            }
7403            if let Some(_) = self.peer_sta_address {
7404                return 1;
7405            }
7406            0
7407        }
7408    }
7409
7410    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7411        type Borrowed<'a> = &'a Self;
7412        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7413            value
7414        }
7415    }
7416
7417    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7418        type Owned = Self;
7419
7420        #[inline(always)]
7421        fn inline_align(_context: fidl::encoding::Context) -> usize {
7422            8
7423        }
7424
7425        #[inline(always)]
7426        fn inline_size(_context: fidl::encoding::Context) -> usize {
7427            16
7428        }
7429    }
7430
7431    unsafe impl<D: fidl::encoding::ResourceDialect>
7432        fidl::encoding::Encode<WlanFullmacImplIfcDeauthIndRequest, D>
7433        for &WlanFullmacImplIfcDeauthIndRequest
7434    {
7435        unsafe fn encode(
7436            self,
7437            encoder: &mut fidl::encoding::Encoder<'_, D>,
7438            offset: usize,
7439            mut depth: fidl::encoding::Depth,
7440        ) -> fidl::Result<()> {
7441            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthIndRequest>(offset);
7442            // Vector header
7443            let max_ordinal: u64 = self.max_ordinal_present();
7444            encoder.write_num(max_ordinal, offset);
7445            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7446            // Calling encoder.out_of_line_offset(0) is not allowed.
7447            if max_ordinal == 0 {
7448                return Ok(());
7449            }
7450            depth.increment()?;
7451            let envelope_size = 8;
7452            let bytes_len = max_ordinal as usize * envelope_size;
7453            #[allow(unused_variables)]
7454            let offset = encoder.out_of_line_offset(bytes_len);
7455            let mut _prev_end_offset: usize = 0;
7456            if 1 > max_ordinal {
7457                return Ok(());
7458            }
7459
7460            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7461            // are envelope_size bytes.
7462            let cur_offset: usize = (1 - 1) * envelope_size;
7463
7464            // Zero reserved fields.
7465            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7466
7467            // Safety:
7468            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7469            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7470            //   envelope_size bytes, there is always sufficient room.
7471            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7472                self.peer_sta_address
7473                    .as_ref()
7474                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7475                encoder,
7476                offset + cur_offset,
7477                depth,
7478            )?;
7479
7480            _prev_end_offset = cur_offset + envelope_size;
7481            if 2 > max_ordinal {
7482                return Ok(());
7483            }
7484
7485            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7486            // are envelope_size bytes.
7487            let cur_offset: usize = (2 - 1) * envelope_size;
7488
7489            // Zero reserved fields.
7490            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7491
7492            // Safety:
7493            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7494            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7495            //   envelope_size bytes, there is always sufficient room.
7496            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
7497            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
7498            encoder, offset + cur_offset, depth
7499        )?;
7500
7501            _prev_end_offset = cur_offset + envelope_size;
7502            if 3 > max_ordinal {
7503                return Ok(());
7504            }
7505
7506            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7507            // are envelope_size bytes.
7508            let cur_offset: usize = (3 - 1) * envelope_size;
7509
7510            // Zero reserved fields.
7511            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7512
7513            // Safety:
7514            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7515            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7516            //   envelope_size bytes, there is always sufficient room.
7517            fidl::encoding::encode_in_envelope_optional::<bool, D>(
7518                self.locally_initiated
7519                    .as_ref()
7520                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7521                encoder,
7522                offset + cur_offset,
7523                depth,
7524            )?;
7525
7526            _prev_end_offset = cur_offset + envelope_size;
7527
7528            Ok(())
7529        }
7530    }
7531
7532    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7533        for WlanFullmacImplIfcDeauthIndRequest
7534    {
7535        #[inline(always)]
7536        fn new_empty() -> Self {
7537            Self::default()
7538        }
7539
7540        unsafe fn decode(
7541            &mut self,
7542            decoder: &mut fidl::encoding::Decoder<'_, D>,
7543            offset: usize,
7544            mut depth: fidl::encoding::Depth,
7545        ) -> fidl::Result<()> {
7546            decoder.debug_check_bounds::<Self>(offset);
7547            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7548                None => return Err(fidl::Error::NotNullable),
7549                Some(len) => len,
7550            };
7551            // Calling decoder.out_of_line_offset(0) is not allowed.
7552            if len == 0 {
7553                return Ok(());
7554            };
7555            depth.increment()?;
7556            let envelope_size = 8;
7557            let bytes_len = len * envelope_size;
7558            let offset = decoder.out_of_line_offset(bytes_len)?;
7559            // Decode the envelope for each type.
7560            let mut _next_ordinal_to_read = 0;
7561            let mut next_offset = offset;
7562            let end_offset = offset + bytes_len;
7563            _next_ordinal_to_read += 1;
7564            if next_offset >= end_offset {
7565                return Ok(());
7566            }
7567
7568            // Decode unknown envelopes for gaps in ordinals.
7569            while _next_ordinal_to_read < 1 {
7570                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7571                _next_ordinal_to_read += 1;
7572                next_offset += envelope_size;
7573            }
7574
7575            let next_out_of_line = decoder.next_out_of_line();
7576            let handles_before = decoder.remaining_handles();
7577            if let Some((inlined, num_bytes, num_handles)) =
7578                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7579            {
7580                let member_inline_size =
7581                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7582                        decoder.context,
7583                    );
7584                if inlined != (member_inline_size <= 4) {
7585                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7586                }
7587                let inner_offset;
7588                let mut inner_depth = depth.clone();
7589                if inlined {
7590                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7591                    inner_offset = next_offset;
7592                } else {
7593                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7594                    inner_depth.increment()?;
7595                }
7596                let val_ref = self
7597                    .peer_sta_address
7598                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7599                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7600                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7601                {
7602                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7603                }
7604                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7605                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7606                }
7607            }
7608
7609            next_offset += envelope_size;
7610            _next_ordinal_to_read += 1;
7611            if next_offset >= end_offset {
7612                return Ok(());
7613            }
7614
7615            // Decode unknown envelopes for gaps in ordinals.
7616            while _next_ordinal_to_read < 2 {
7617                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7618                _next_ordinal_to_read += 1;
7619                next_offset += envelope_size;
7620            }
7621
7622            let next_out_of_line = decoder.next_out_of_line();
7623            let handles_before = decoder.remaining_handles();
7624            if let Some((inlined, num_bytes, num_handles)) =
7625                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7626            {
7627                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7628                if inlined != (member_inline_size <= 4) {
7629                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7630                }
7631                let inner_offset;
7632                let mut inner_depth = depth.clone();
7633                if inlined {
7634                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7635                    inner_offset = next_offset;
7636                } else {
7637                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7638                    inner_depth.increment()?;
7639                }
7640                let val_ref = self.reason_code.get_or_insert_with(|| {
7641                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
7642                });
7643                fidl::decode!(
7644                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
7645                    D,
7646                    val_ref,
7647                    decoder,
7648                    inner_offset,
7649                    inner_depth
7650                )?;
7651                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7652                {
7653                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7654                }
7655                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7656                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7657                }
7658            }
7659
7660            next_offset += envelope_size;
7661            _next_ordinal_to_read += 1;
7662            if next_offset >= end_offset {
7663                return Ok(());
7664            }
7665
7666            // Decode unknown envelopes for gaps in ordinals.
7667            while _next_ordinal_to_read < 3 {
7668                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7669                _next_ordinal_to_read += 1;
7670                next_offset += envelope_size;
7671            }
7672
7673            let next_out_of_line = decoder.next_out_of_line();
7674            let handles_before = decoder.remaining_handles();
7675            if let Some((inlined, num_bytes, num_handles)) =
7676                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7677            {
7678                let member_inline_size =
7679                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7680                if inlined != (member_inline_size <= 4) {
7681                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7682                }
7683                let inner_offset;
7684                let mut inner_depth = depth.clone();
7685                if inlined {
7686                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7687                    inner_offset = next_offset;
7688                } else {
7689                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7690                    inner_depth.increment()?;
7691                }
7692                let val_ref =
7693                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
7694                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7695                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7696                {
7697                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7698                }
7699                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7700                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7701                }
7702            }
7703
7704            next_offset += envelope_size;
7705
7706            // Decode the remaining unknown envelopes.
7707            while next_offset < end_offset {
7708                _next_ordinal_to_read += 1;
7709                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7710                next_offset += envelope_size;
7711            }
7712
7713            Ok(())
7714        }
7715    }
7716
7717    impl WlanFullmacImplIfcDisassocConfRequest {
7718        #[inline(always)]
7719        fn max_ordinal_present(&self) -> u64 {
7720            if let Some(_) = self.status {
7721                return 1;
7722            }
7723            0
7724        }
7725    }
7726
7727    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7728        type Borrowed<'a> = &'a Self;
7729        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7730            value
7731        }
7732    }
7733
7734    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7735        type Owned = Self;
7736
7737        #[inline(always)]
7738        fn inline_align(_context: fidl::encoding::Context) -> usize {
7739            8
7740        }
7741
7742        #[inline(always)]
7743        fn inline_size(_context: fidl::encoding::Context) -> usize {
7744            16
7745        }
7746    }
7747
7748    unsafe impl<D: fidl::encoding::ResourceDialect>
7749        fidl::encoding::Encode<WlanFullmacImplIfcDisassocConfRequest, D>
7750        for &WlanFullmacImplIfcDisassocConfRequest
7751    {
7752        unsafe fn encode(
7753            self,
7754            encoder: &mut fidl::encoding::Encoder<'_, D>,
7755            offset: usize,
7756            mut depth: fidl::encoding::Depth,
7757        ) -> fidl::Result<()> {
7758            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocConfRequest>(offset);
7759            // Vector header
7760            let max_ordinal: u64 = self.max_ordinal_present();
7761            encoder.write_num(max_ordinal, offset);
7762            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7763            // Calling encoder.out_of_line_offset(0) is not allowed.
7764            if max_ordinal == 0 {
7765                return Ok(());
7766            }
7767            depth.increment()?;
7768            let envelope_size = 8;
7769            let bytes_len = max_ordinal as usize * envelope_size;
7770            #[allow(unused_variables)]
7771            let offset = encoder.out_of_line_offset(bytes_len);
7772            let mut _prev_end_offset: usize = 0;
7773            if 1 > max_ordinal {
7774                return Ok(());
7775            }
7776
7777            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7778            // are envelope_size bytes.
7779            let cur_offset: usize = (1 - 1) * envelope_size;
7780
7781            // Zero reserved fields.
7782            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7783
7784            // Safety:
7785            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7786            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7787            //   envelope_size bytes, there is always sufficient room.
7788            fidl::encoding::encode_in_envelope_optional::<i32, D>(
7789                self.status.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
7790                encoder,
7791                offset + cur_offset,
7792                depth,
7793            )?;
7794
7795            _prev_end_offset = cur_offset + envelope_size;
7796
7797            Ok(())
7798        }
7799    }
7800
7801    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7802        for WlanFullmacImplIfcDisassocConfRequest
7803    {
7804        #[inline(always)]
7805        fn new_empty() -> Self {
7806            Self::default()
7807        }
7808
7809        unsafe fn decode(
7810            &mut self,
7811            decoder: &mut fidl::encoding::Decoder<'_, D>,
7812            offset: usize,
7813            mut depth: fidl::encoding::Depth,
7814        ) -> fidl::Result<()> {
7815            decoder.debug_check_bounds::<Self>(offset);
7816            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7817                None => return Err(fidl::Error::NotNullable),
7818                Some(len) => len,
7819            };
7820            // Calling decoder.out_of_line_offset(0) is not allowed.
7821            if len == 0 {
7822                return Ok(());
7823            };
7824            depth.increment()?;
7825            let envelope_size = 8;
7826            let bytes_len = len * envelope_size;
7827            let offset = decoder.out_of_line_offset(bytes_len)?;
7828            // Decode the envelope for each type.
7829            let mut _next_ordinal_to_read = 0;
7830            let mut next_offset = offset;
7831            let end_offset = offset + bytes_len;
7832            _next_ordinal_to_read += 1;
7833            if next_offset >= end_offset {
7834                return Ok(());
7835            }
7836
7837            // Decode unknown envelopes for gaps in ordinals.
7838            while _next_ordinal_to_read < 1 {
7839                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7840                _next_ordinal_to_read += 1;
7841                next_offset += envelope_size;
7842            }
7843
7844            let next_out_of_line = decoder.next_out_of_line();
7845            let handles_before = decoder.remaining_handles();
7846            if let Some((inlined, num_bytes, num_handles)) =
7847                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7848            {
7849                let member_inline_size =
7850                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7851                if inlined != (member_inline_size <= 4) {
7852                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7853                }
7854                let inner_offset;
7855                let mut inner_depth = depth.clone();
7856                if inlined {
7857                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7858                    inner_offset = next_offset;
7859                } else {
7860                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7861                    inner_depth.increment()?;
7862                }
7863                let val_ref = self.status.get_or_insert_with(|| fidl::new_empty!(i32, D));
7864                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
7865                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7866                {
7867                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7868                }
7869                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7870                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7871                }
7872            }
7873
7874            next_offset += envelope_size;
7875
7876            // Decode the remaining unknown envelopes.
7877            while next_offset < end_offset {
7878                _next_ordinal_to_read += 1;
7879                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7880                next_offset += envelope_size;
7881            }
7882
7883            Ok(())
7884        }
7885    }
7886
7887    impl WlanFullmacImplIfcDisassocIndRequest {
7888        #[inline(always)]
7889        fn max_ordinal_present(&self) -> u64 {
7890            if let Some(_) = self.locally_initiated {
7891                return 3;
7892            }
7893            if let Some(_) = self.reason_code {
7894                return 2;
7895            }
7896            if let Some(_) = self.peer_sta_address {
7897                return 1;
7898            }
7899            0
7900        }
7901    }
7902
7903    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocIndRequest {
7904        type Borrowed<'a> = &'a Self;
7905        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7906            value
7907        }
7908    }
7909
7910    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocIndRequest {
7911        type Owned = Self;
7912
7913        #[inline(always)]
7914        fn inline_align(_context: fidl::encoding::Context) -> usize {
7915            8
7916        }
7917
7918        #[inline(always)]
7919        fn inline_size(_context: fidl::encoding::Context) -> usize {
7920            16
7921        }
7922    }
7923
7924    unsafe impl<D: fidl::encoding::ResourceDialect>
7925        fidl::encoding::Encode<WlanFullmacImplIfcDisassocIndRequest, D>
7926        for &WlanFullmacImplIfcDisassocIndRequest
7927    {
7928        unsafe fn encode(
7929            self,
7930            encoder: &mut fidl::encoding::Encoder<'_, D>,
7931            offset: usize,
7932            mut depth: fidl::encoding::Depth,
7933        ) -> fidl::Result<()> {
7934            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocIndRequest>(offset);
7935            // Vector header
7936            let max_ordinal: u64 = self.max_ordinal_present();
7937            encoder.write_num(max_ordinal, offset);
7938            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7939            // Calling encoder.out_of_line_offset(0) is not allowed.
7940            if max_ordinal == 0 {
7941                return Ok(());
7942            }
7943            depth.increment()?;
7944            let envelope_size = 8;
7945            let bytes_len = max_ordinal as usize * envelope_size;
7946            #[allow(unused_variables)]
7947            let offset = encoder.out_of_line_offset(bytes_len);
7948            let mut _prev_end_offset: usize = 0;
7949            if 1 > max_ordinal {
7950                return Ok(());
7951            }
7952
7953            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7954            // are envelope_size bytes.
7955            let cur_offset: usize = (1 - 1) * envelope_size;
7956
7957            // Zero reserved fields.
7958            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7959
7960            // Safety:
7961            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7962            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7963            //   envelope_size bytes, there is always sufficient room.
7964            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7965                self.peer_sta_address
7966                    .as_ref()
7967                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7968                encoder,
7969                offset + cur_offset,
7970                depth,
7971            )?;
7972
7973            _prev_end_offset = cur_offset + envelope_size;
7974            if 2 > max_ordinal {
7975                return Ok(());
7976            }
7977
7978            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7979            // are envelope_size bytes.
7980            let cur_offset: usize = (2 - 1) * envelope_size;
7981
7982            // Zero reserved fields.
7983            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7984
7985            // Safety:
7986            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7987            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7988            //   envelope_size bytes, there is always sufficient room.
7989            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
7990            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
7991            encoder, offset + cur_offset, depth
7992        )?;
7993
7994            _prev_end_offset = cur_offset + envelope_size;
7995            if 3 > max_ordinal {
7996                return Ok(());
7997            }
7998
7999            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8000            // are envelope_size bytes.
8001            let cur_offset: usize = (3 - 1) * envelope_size;
8002
8003            // Zero reserved fields.
8004            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8005
8006            // Safety:
8007            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8008            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8009            //   envelope_size bytes, there is always sufficient room.
8010            fidl::encoding::encode_in_envelope_optional::<bool, D>(
8011                self.locally_initiated
8012                    .as_ref()
8013                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8014                encoder,
8015                offset + cur_offset,
8016                depth,
8017            )?;
8018
8019            _prev_end_offset = cur_offset + envelope_size;
8020
8021            Ok(())
8022        }
8023    }
8024
8025    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8026        for WlanFullmacImplIfcDisassocIndRequest
8027    {
8028        #[inline(always)]
8029        fn new_empty() -> Self {
8030            Self::default()
8031        }
8032
8033        unsafe fn decode(
8034            &mut self,
8035            decoder: &mut fidl::encoding::Decoder<'_, D>,
8036            offset: usize,
8037            mut depth: fidl::encoding::Depth,
8038        ) -> fidl::Result<()> {
8039            decoder.debug_check_bounds::<Self>(offset);
8040            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8041                None => return Err(fidl::Error::NotNullable),
8042                Some(len) => len,
8043            };
8044            // Calling decoder.out_of_line_offset(0) is not allowed.
8045            if len == 0 {
8046                return Ok(());
8047            };
8048            depth.increment()?;
8049            let envelope_size = 8;
8050            let bytes_len = len * envelope_size;
8051            let offset = decoder.out_of_line_offset(bytes_len)?;
8052            // Decode the envelope for each type.
8053            let mut _next_ordinal_to_read = 0;
8054            let mut next_offset = offset;
8055            let end_offset = offset + bytes_len;
8056            _next_ordinal_to_read += 1;
8057            if next_offset >= end_offset {
8058                return Ok(());
8059            }
8060
8061            // Decode unknown envelopes for gaps in ordinals.
8062            while _next_ordinal_to_read < 1 {
8063                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8064                _next_ordinal_to_read += 1;
8065                next_offset += envelope_size;
8066            }
8067
8068            let next_out_of_line = decoder.next_out_of_line();
8069            let handles_before = decoder.remaining_handles();
8070            if let Some((inlined, num_bytes, num_handles)) =
8071                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8072            {
8073                let member_inline_size =
8074                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8075                        decoder.context,
8076                    );
8077                if inlined != (member_inline_size <= 4) {
8078                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8079                }
8080                let inner_offset;
8081                let mut inner_depth = depth.clone();
8082                if inlined {
8083                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8084                    inner_offset = next_offset;
8085                } else {
8086                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8087                    inner_depth.increment()?;
8088                }
8089                let val_ref = self
8090                    .peer_sta_address
8091                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8092                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8093                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8094                {
8095                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8096                }
8097                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8098                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8099                }
8100            }
8101
8102            next_offset += envelope_size;
8103            _next_ordinal_to_read += 1;
8104            if next_offset >= end_offset {
8105                return Ok(());
8106            }
8107
8108            // Decode unknown envelopes for gaps in ordinals.
8109            while _next_ordinal_to_read < 2 {
8110                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8111                _next_ordinal_to_read += 1;
8112                next_offset += envelope_size;
8113            }
8114
8115            let next_out_of_line = decoder.next_out_of_line();
8116            let handles_before = decoder.remaining_handles();
8117            if let Some((inlined, num_bytes, num_handles)) =
8118                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8119            {
8120                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8121                if inlined != (member_inline_size <= 4) {
8122                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8123                }
8124                let inner_offset;
8125                let mut inner_depth = depth.clone();
8126                if inlined {
8127                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8128                    inner_offset = next_offset;
8129                } else {
8130                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8131                    inner_depth.increment()?;
8132                }
8133                let val_ref = self.reason_code.get_or_insert_with(|| {
8134                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
8135                });
8136                fidl::decode!(
8137                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
8138                    D,
8139                    val_ref,
8140                    decoder,
8141                    inner_offset,
8142                    inner_depth
8143                )?;
8144                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8145                {
8146                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8147                }
8148                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8149                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8150                }
8151            }
8152
8153            next_offset += envelope_size;
8154            _next_ordinal_to_read += 1;
8155            if next_offset >= end_offset {
8156                return Ok(());
8157            }
8158
8159            // Decode unknown envelopes for gaps in ordinals.
8160            while _next_ordinal_to_read < 3 {
8161                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8162                _next_ordinal_to_read += 1;
8163                next_offset += envelope_size;
8164            }
8165
8166            let next_out_of_line = decoder.next_out_of_line();
8167            let handles_before = decoder.remaining_handles();
8168            if let Some((inlined, num_bytes, num_handles)) =
8169                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8170            {
8171                let member_inline_size =
8172                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8173                if inlined != (member_inline_size <= 4) {
8174                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8175                }
8176                let inner_offset;
8177                let mut inner_depth = depth.clone();
8178                if inlined {
8179                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8180                    inner_offset = next_offset;
8181                } else {
8182                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8183                    inner_depth.increment()?;
8184                }
8185                let val_ref =
8186                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
8187                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8188                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8189                {
8190                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8191                }
8192                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8193                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8194                }
8195            }
8196
8197            next_offset += envelope_size;
8198
8199            // Decode the remaining unknown envelopes.
8200            while next_offset < end_offset {
8201                _next_ordinal_to_read += 1;
8202                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8203                next_offset += envelope_size;
8204            }
8205
8206            Ok(())
8207        }
8208    }
8209
8210    impl WlanFullmacImplIfcEapolConfRequest {
8211        #[inline(always)]
8212        fn max_ordinal_present(&self) -> u64 {
8213            if let Some(_) = self.dst_addr {
8214                return 2;
8215            }
8216            if let Some(_) = self.result_code {
8217                return 1;
8218            }
8219            0
8220        }
8221    }
8222
8223    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolConfRequest {
8224        type Borrowed<'a> = &'a Self;
8225        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8226            value
8227        }
8228    }
8229
8230    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolConfRequest {
8231        type Owned = Self;
8232
8233        #[inline(always)]
8234        fn inline_align(_context: fidl::encoding::Context) -> usize {
8235            8
8236        }
8237
8238        #[inline(always)]
8239        fn inline_size(_context: fidl::encoding::Context) -> usize {
8240            16
8241        }
8242    }
8243
8244    unsafe impl<D: fidl::encoding::ResourceDialect>
8245        fidl::encoding::Encode<WlanFullmacImplIfcEapolConfRequest, D>
8246        for &WlanFullmacImplIfcEapolConfRequest
8247    {
8248        unsafe fn encode(
8249            self,
8250            encoder: &mut fidl::encoding::Encoder<'_, D>,
8251            offset: usize,
8252            mut depth: fidl::encoding::Depth,
8253        ) -> fidl::Result<()> {
8254            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolConfRequest>(offset);
8255            // Vector header
8256            let max_ordinal: u64 = self.max_ordinal_present();
8257            encoder.write_num(max_ordinal, offset);
8258            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8259            // Calling encoder.out_of_line_offset(0) is not allowed.
8260            if max_ordinal == 0 {
8261                return Ok(());
8262            }
8263            depth.increment()?;
8264            let envelope_size = 8;
8265            let bytes_len = max_ordinal as usize * envelope_size;
8266            #[allow(unused_variables)]
8267            let offset = encoder.out_of_line_offset(bytes_len);
8268            let mut _prev_end_offset: usize = 0;
8269            if 1 > max_ordinal {
8270                return Ok(());
8271            }
8272
8273            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8274            // are envelope_size bytes.
8275            let cur_offset: usize = (1 - 1) * envelope_size;
8276
8277            // Zero reserved fields.
8278            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8279
8280            // Safety:
8281            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8282            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8283            //   envelope_size bytes, there is always sufficient room.
8284            fidl::encoding::encode_in_envelope_optional::<EapolTxResult, D>(
8285                self.result_code
8286                    .as_ref()
8287                    .map(<EapolTxResult as fidl::encoding::ValueTypeMarker>::borrow),
8288                encoder,
8289                offset + cur_offset,
8290                depth,
8291            )?;
8292
8293            _prev_end_offset = cur_offset + envelope_size;
8294            if 2 > max_ordinal {
8295                return Ok(());
8296            }
8297
8298            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8299            // are envelope_size bytes.
8300            let cur_offset: usize = (2 - 1) * envelope_size;
8301
8302            // Zero reserved fields.
8303            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8304
8305            // Safety:
8306            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8307            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8308            //   envelope_size bytes, there is always sufficient room.
8309            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8310                self.dst_addr
8311                    .as_ref()
8312                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8313                encoder,
8314                offset + cur_offset,
8315                depth,
8316            )?;
8317
8318            _prev_end_offset = cur_offset + envelope_size;
8319
8320            Ok(())
8321        }
8322    }
8323
8324    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8325        for WlanFullmacImplIfcEapolConfRequest
8326    {
8327        #[inline(always)]
8328        fn new_empty() -> Self {
8329            Self::default()
8330        }
8331
8332        unsafe fn decode(
8333            &mut self,
8334            decoder: &mut fidl::encoding::Decoder<'_, D>,
8335            offset: usize,
8336            mut depth: fidl::encoding::Depth,
8337        ) -> fidl::Result<()> {
8338            decoder.debug_check_bounds::<Self>(offset);
8339            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8340                None => return Err(fidl::Error::NotNullable),
8341                Some(len) => len,
8342            };
8343            // Calling decoder.out_of_line_offset(0) is not allowed.
8344            if len == 0 {
8345                return Ok(());
8346            };
8347            depth.increment()?;
8348            let envelope_size = 8;
8349            let bytes_len = len * envelope_size;
8350            let offset = decoder.out_of_line_offset(bytes_len)?;
8351            // Decode the envelope for each type.
8352            let mut _next_ordinal_to_read = 0;
8353            let mut next_offset = offset;
8354            let end_offset = offset + bytes_len;
8355            _next_ordinal_to_read += 1;
8356            if next_offset >= end_offset {
8357                return Ok(());
8358            }
8359
8360            // Decode unknown envelopes for gaps in ordinals.
8361            while _next_ordinal_to_read < 1 {
8362                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8363                _next_ordinal_to_read += 1;
8364                next_offset += envelope_size;
8365            }
8366
8367            let next_out_of_line = decoder.next_out_of_line();
8368            let handles_before = decoder.remaining_handles();
8369            if let Some((inlined, num_bytes, num_handles)) =
8370                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8371            {
8372                let member_inline_size =
8373                    <EapolTxResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8374                if inlined != (member_inline_size <= 4) {
8375                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8376                }
8377                let inner_offset;
8378                let mut inner_depth = depth.clone();
8379                if inlined {
8380                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8381                    inner_offset = next_offset;
8382                } else {
8383                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8384                    inner_depth.increment()?;
8385                }
8386                let val_ref =
8387                    self.result_code.get_or_insert_with(|| fidl::new_empty!(EapolTxResult, D));
8388                fidl::decode!(EapolTxResult, D, val_ref, decoder, inner_offset, inner_depth)?;
8389                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8390                {
8391                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8392                }
8393                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8394                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8395                }
8396            }
8397
8398            next_offset += envelope_size;
8399            _next_ordinal_to_read += 1;
8400            if next_offset >= end_offset {
8401                return Ok(());
8402            }
8403
8404            // Decode unknown envelopes for gaps in ordinals.
8405            while _next_ordinal_to_read < 2 {
8406                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8407                _next_ordinal_to_read += 1;
8408                next_offset += envelope_size;
8409            }
8410
8411            let next_out_of_line = decoder.next_out_of_line();
8412            let handles_before = decoder.remaining_handles();
8413            if let Some((inlined, num_bytes, num_handles)) =
8414                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8415            {
8416                let member_inline_size =
8417                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8418                        decoder.context,
8419                    );
8420                if inlined != (member_inline_size <= 4) {
8421                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8422                }
8423                let inner_offset;
8424                let mut inner_depth = depth.clone();
8425                if inlined {
8426                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8427                    inner_offset = next_offset;
8428                } else {
8429                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8430                    inner_depth.increment()?;
8431                }
8432                let val_ref = self
8433                    .dst_addr
8434                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8435                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8436                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8437                {
8438                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8439                }
8440                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8441                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8442                }
8443            }
8444
8445            next_offset += envelope_size;
8446
8447            // Decode the remaining unknown envelopes.
8448            while next_offset < end_offset {
8449                _next_ordinal_to_read += 1;
8450                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8451                next_offset += envelope_size;
8452            }
8453
8454            Ok(())
8455        }
8456    }
8457
8458    impl WlanFullmacImplIfcEapolIndRequest {
8459        #[inline(always)]
8460        fn max_ordinal_present(&self) -> u64 {
8461            if let Some(_) = self.data {
8462                return 3;
8463            }
8464            if let Some(_) = self.dst_addr {
8465                return 2;
8466            }
8467            if let Some(_) = self.src_addr {
8468                return 1;
8469            }
8470            0
8471        }
8472    }
8473
8474    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolIndRequest {
8475        type Borrowed<'a> = &'a Self;
8476        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8477            value
8478        }
8479    }
8480
8481    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolIndRequest {
8482        type Owned = Self;
8483
8484        #[inline(always)]
8485        fn inline_align(_context: fidl::encoding::Context) -> usize {
8486            8
8487        }
8488
8489        #[inline(always)]
8490        fn inline_size(_context: fidl::encoding::Context) -> usize {
8491            16
8492        }
8493    }
8494
8495    unsafe impl<D: fidl::encoding::ResourceDialect>
8496        fidl::encoding::Encode<WlanFullmacImplIfcEapolIndRequest, D>
8497        for &WlanFullmacImplIfcEapolIndRequest
8498    {
8499        unsafe fn encode(
8500            self,
8501            encoder: &mut fidl::encoding::Encoder<'_, D>,
8502            offset: usize,
8503            mut depth: fidl::encoding::Depth,
8504        ) -> fidl::Result<()> {
8505            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolIndRequest>(offset);
8506            // Vector header
8507            let max_ordinal: u64 = self.max_ordinal_present();
8508            encoder.write_num(max_ordinal, offset);
8509            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8510            // Calling encoder.out_of_line_offset(0) is not allowed.
8511            if max_ordinal == 0 {
8512                return Ok(());
8513            }
8514            depth.increment()?;
8515            let envelope_size = 8;
8516            let bytes_len = max_ordinal as usize * envelope_size;
8517            #[allow(unused_variables)]
8518            let offset = encoder.out_of_line_offset(bytes_len);
8519            let mut _prev_end_offset: usize = 0;
8520            if 1 > max_ordinal {
8521                return Ok(());
8522            }
8523
8524            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8525            // are envelope_size bytes.
8526            let cur_offset: usize = (1 - 1) * envelope_size;
8527
8528            // Zero reserved fields.
8529            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8530
8531            // Safety:
8532            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8533            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8534            //   envelope_size bytes, there is always sufficient room.
8535            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8536                self.src_addr
8537                    .as_ref()
8538                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8539                encoder,
8540                offset + cur_offset,
8541                depth,
8542            )?;
8543
8544            _prev_end_offset = cur_offset + envelope_size;
8545            if 2 > max_ordinal {
8546                return Ok(());
8547            }
8548
8549            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8550            // are envelope_size bytes.
8551            let cur_offset: usize = (2 - 1) * envelope_size;
8552
8553            // Zero reserved fields.
8554            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8555
8556            // Safety:
8557            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8558            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8559            //   envelope_size bytes, there is always sufficient room.
8560            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8561                self.dst_addr
8562                    .as_ref()
8563                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8564                encoder,
8565                offset + cur_offset,
8566                depth,
8567            )?;
8568
8569            _prev_end_offset = cur_offset + envelope_size;
8570            if 3 > max_ordinal {
8571                return Ok(());
8572            }
8573
8574            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8575            // are envelope_size bytes.
8576            let cur_offset: usize = (3 - 1) * envelope_size;
8577
8578            // Zero reserved fields.
8579            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8580
8581            // Safety:
8582            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8583            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8584            //   envelope_size bytes, there is always sufficient room.
8585            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8586            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8587            encoder, offset + cur_offset, depth
8588        )?;
8589
8590            _prev_end_offset = cur_offset + envelope_size;
8591
8592            Ok(())
8593        }
8594    }
8595
8596    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8597        for WlanFullmacImplIfcEapolIndRequest
8598    {
8599        #[inline(always)]
8600        fn new_empty() -> Self {
8601            Self::default()
8602        }
8603
8604        unsafe fn decode(
8605            &mut self,
8606            decoder: &mut fidl::encoding::Decoder<'_, D>,
8607            offset: usize,
8608            mut depth: fidl::encoding::Depth,
8609        ) -> fidl::Result<()> {
8610            decoder.debug_check_bounds::<Self>(offset);
8611            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8612                None => return Err(fidl::Error::NotNullable),
8613                Some(len) => len,
8614            };
8615            // Calling decoder.out_of_line_offset(0) is not allowed.
8616            if len == 0 {
8617                return Ok(());
8618            };
8619            depth.increment()?;
8620            let envelope_size = 8;
8621            let bytes_len = len * envelope_size;
8622            let offset = decoder.out_of_line_offset(bytes_len)?;
8623            // Decode the envelope for each type.
8624            let mut _next_ordinal_to_read = 0;
8625            let mut next_offset = offset;
8626            let end_offset = offset + bytes_len;
8627            _next_ordinal_to_read += 1;
8628            if next_offset >= end_offset {
8629                return Ok(());
8630            }
8631
8632            // Decode unknown envelopes for gaps in ordinals.
8633            while _next_ordinal_to_read < 1 {
8634                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8635                _next_ordinal_to_read += 1;
8636                next_offset += envelope_size;
8637            }
8638
8639            let next_out_of_line = decoder.next_out_of_line();
8640            let handles_before = decoder.remaining_handles();
8641            if let Some((inlined, num_bytes, num_handles)) =
8642                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8643            {
8644                let member_inline_size =
8645                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8646                        decoder.context,
8647                    );
8648                if inlined != (member_inline_size <= 4) {
8649                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8650                }
8651                let inner_offset;
8652                let mut inner_depth = depth.clone();
8653                if inlined {
8654                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8655                    inner_offset = next_offset;
8656                } else {
8657                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8658                    inner_depth.increment()?;
8659                }
8660                let val_ref = self
8661                    .src_addr
8662                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8663                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8664                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8665                {
8666                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8667                }
8668                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8669                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8670                }
8671            }
8672
8673            next_offset += envelope_size;
8674            _next_ordinal_to_read += 1;
8675            if next_offset >= end_offset {
8676                return Ok(());
8677            }
8678
8679            // Decode unknown envelopes for gaps in ordinals.
8680            while _next_ordinal_to_read < 2 {
8681                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8682                _next_ordinal_to_read += 1;
8683                next_offset += envelope_size;
8684            }
8685
8686            let next_out_of_line = decoder.next_out_of_line();
8687            let handles_before = decoder.remaining_handles();
8688            if let Some((inlined, num_bytes, num_handles)) =
8689                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8690            {
8691                let member_inline_size =
8692                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8693                        decoder.context,
8694                    );
8695                if inlined != (member_inline_size <= 4) {
8696                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8697                }
8698                let inner_offset;
8699                let mut inner_depth = depth.clone();
8700                if inlined {
8701                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8702                    inner_offset = next_offset;
8703                } else {
8704                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8705                    inner_depth.increment()?;
8706                }
8707                let val_ref = self
8708                    .dst_addr
8709                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8710                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8711                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8712                {
8713                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8714                }
8715                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8716                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8717                }
8718            }
8719
8720            next_offset += envelope_size;
8721            _next_ordinal_to_read += 1;
8722            if next_offset >= end_offset {
8723                return Ok(());
8724            }
8725
8726            // Decode unknown envelopes for gaps in ordinals.
8727            while _next_ordinal_to_read < 3 {
8728                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8729                _next_ordinal_to_read += 1;
8730                next_offset += envelope_size;
8731            }
8732
8733            let next_out_of_line = decoder.next_out_of_line();
8734            let handles_before = decoder.remaining_handles();
8735            if let Some((inlined, num_bytes, num_handles)) =
8736                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8737            {
8738                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8739                if inlined != (member_inline_size <= 4) {
8740                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8741                }
8742                let inner_offset;
8743                let mut inner_depth = depth.clone();
8744                if inlined {
8745                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8746                    inner_offset = next_offset;
8747                } else {
8748                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8749                    inner_depth.increment()?;
8750                }
8751                let val_ref = self.data.get_or_insert_with(|| {
8752                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8753                });
8754                fidl::decode!(
8755                    fidl::encoding::UnboundedVector<u8>,
8756                    D,
8757                    val_ref,
8758                    decoder,
8759                    inner_offset,
8760                    inner_depth
8761                )?;
8762                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8763                {
8764                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8765                }
8766                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8767                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8768                }
8769            }
8770
8771            next_offset += envelope_size;
8772
8773            // Decode the remaining unknown envelopes.
8774            while next_offset < end_offset {
8775                _next_ordinal_to_read += 1;
8776                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8777                next_offset += envelope_size;
8778            }
8779
8780            Ok(())
8781        }
8782    }
8783
8784    impl WlanFullmacImplIfcOnPmkAvailableRequest {
8785        #[inline(always)]
8786        fn max_ordinal_present(&self) -> u64 {
8787            if let Some(_) = self.pmkid {
8788                return 2;
8789            }
8790            if let Some(_) = self.pmk {
8791                return 1;
8792            }
8793            0
8794        }
8795    }
8796
8797    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8798        type Borrowed<'a> = &'a Self;
8799        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8800            value
8801        }
8802    }
8803
8804    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8805        type Owned = Self;
8806
8807        #[inline(always)]
8808        fn inline_align(_context: fidl::encoding::Context) -> usize {
8809            8
8810        }
8811
8812        #[inline(always)]
8813        fn inline_size(_context: fidl::encoding::Context) -> usize {
8814            16
8815        }
8816    }
8817
8818    unsafe impl<D: fidl::encoding::ResourceDialect>
8819        fidl::encoding::Encode<WlanFullmacImplIfcOnPmkAvailableRequest, D>
8820        for &WlanFullmacImplIfcOnPmkAvailableRequest
8821    {
8822        unsafe fn encode(
8823            self,
8824            encoder: &mut fidl::encoding::Encoder<'_, D>,
8825            offset: usize,
8826            mut depth: fidl::encoding::Depth,
8827        ) -> fidl::Result<()> {
8828            encoder.debug_check_bounds::<WlanFullmacImplIfcOnPmkAvailableRequest>(offset);
8829            // Vector header
8830            let max_ordinal: u64 = self.max_ordinal_present();
8831            encoder.write_num(max_ordinal, offset);
8832            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8833            // Calling encoder.out_of_line_offset(0) is not allowed.
8834            if max_ordinal == 0 {
8835                return Ok(());
8836            }
8837            depth.increment()?;
8838            let envelope_size = 8;
8839            let bytes_len = max_ordinal as usize * envelope_size;
8840            #[allow(unused_variables)]
8841            let offset = encoder.out_of_line_offset(bytes_len);
8842            let mut _prev_end_offset: usize = 0;
8843            if 1 > max_ordinal {
8844                return Ok(());
8845            }
8846
8847            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8848            // are envelope_size bytes.
8849            let cur_offset: usize = (1 - 1) * envelope_size;
8850
8851            // Zero reserved fields.
8852            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8853
8854            // Safety:
8855            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8856            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8857            //   envelope_size bytes, there is always sufficient room.
8858            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8859            self.pmk.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8860            encoder, offset + cur_offset, depth
8861        )?;
8862
8863            _prev_end_offset = cur_offset + envelope_size;
8864            if 2 > max_ordinal {
8865                return Ok(());
8866            }
8867
8868            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8869            // are envelope_size bytes.
8870            let cur_offset: usize = (2 - 1) * envelope_size;
8871
8872            // Zero reserved fields.
8873            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8874
8875            // Safety:
8876            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8877            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8878            //   envelope_size bytes, there is always sufficient room.
8879            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8880            self.pmkid.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8881            encoder, offset + cur_offset, depth
8882        )?;
8883
8884            _prev_end_offset = cur_offset + envelope_size;
8885
8886            Ok(())
8887        }
8888    }
8889
8890    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8891        for WlanFullmacImplIfcOnPmkAvailableRequest
8892    {
8893        #[inline(always)]
8894        fn new_empty() -> Self {
8895            Self::default()
8896        }
8897
8898        unsafe fn decode(
8899            &mut self,
8900            decoder: &mut fidl::encoding::Decoder<'_, D>,
8901            offset: usize,
8902            mut depth: fidl::encoding::Depth,
8903        ) -> fidl::Result<()> {
8904            decoder.debug_check_bounds::<Self>(offset);
8905            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8906                None => return Err(fidl::Error::NotNullable),
8907                Some(len) => len,
8908            };
8909            // Calling decoder.out_of_line_offset(0) is not allowed.
8910            if len == 0 {
8911                return Ok(());
8912            };
8913            depth.increment()?;
8914            let envelope_size = 8;
8915            let bytes_len = len * envelope_size;
8916            let offset = decoder.out_of_line_offset(bytes_len)?;
8917            // Decode the envelope for each type.
8918            let mut _next_ordinal_to_read = 0;
8919            let mut next_offset = offset;
8920            let end_offset = offset + bytes_len;
8921            _next_ordinal_to_read += 1;
8922            if next_offset >= end_offset {
8923                return Ok(());
8924            }
8925
8926            // Decode unknown envelopes for gaps in ordinals.
8927            while _next_ordinal_to_read < 1 {
8928                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8929                _next_ordinal_to_read += 1;
8930                next_offset += envelope_size;
8931            }
8932
8933            let next_out_of_line = decoder.next_out_of_line();
8934            let handles_before = decoder.remaining_handles();
8935            if let Some((inlined, num_bytes, num_handles)) =
8936                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8937            {
8938                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8939                if inlined != (member_inline_size <= 4) {
8940                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8941                }
8942                let inner_offset;
8943                let mut inner_depth = depth.clone();
8944                if inlined {
8945                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8946                    inner_offset = next_offset;
8947                } else {
8948                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8949                    inner_depth.increment()?;
8950                }
8951                let val_ref = self.pmk.get_or_insert_with(|| {
8952                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8953                });
8954                fidl::decode!(
8955                    fidl::encoding::UnboundedVector<u8>,
8956                    D,
8957                    val_ref,
8958                    decoder,
8959                    inner_offset,
8960                    inner_depth
8961                )?;
8962                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8963                {
8964                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8965                }
8966                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8967                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8968                }
8969            }
8970
8971            next_offset += envelope_size;
8972            _next_ordinal_to_read += 1;
8973            if next_offset >= end_offset {
8974                return Ok(());
8975            }
8976
8977            // Decode unknown envelopes for gaps in ordinals.
8978            while _next_ordinal_to_read < 2 {
8979                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8980                _next_ordinal_to_read += 1;
8981                next_offset += envelope_size;
8982            }
8983
8984            let next_out_of_line = decoder.next_out_of_line();
8985            let handles_before = decoder.remaining_handles();
8986            if let Some((inlined, num_bytes, num_handles)) =
8987                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8988            {
8989                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8990                if inlined != (member_inline_size <= 4) {
8991                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8992                }
8993                let inner_offset;
8994                let mut inner_depth = depth.clone();
8995                if inlined {
8996                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8997                    inner_offset = next_offset;
8998                } else {
8999                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9000                    inner_depth.increment()?;
9001                }
9002                let val_ref = self.pmkid.get_or_insert_with(|| {
9003                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
9004                });
9005                fidl::decode!(
9006                    fidl::encoding::UnboundedVector<u8>,
9007                    D,
9008                    val_ref,
9009                    decoder,
9010                    inner_offset,
9011                    inner_depth
9012                )?;
9013                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9014                {
9015                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9016                }
9017                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9018                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9019                }
9020            }
9021
9022            next_offset += envelope_size;
9023
9024            // Decode the remaining unknown envelopes.
9025            while next_offset < end_offset {
9026                _next_ordinal_to_read += 1;
9027                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9028                next_offset += envelope_size;
9029            }
9030
9031            Ok(())
9032        }
9033    }
9034
9035    impl WlanFullmacImplIfcOnScanEndRequest {
9036        #[inline(always)]
9037        fn max_ordinal_present(&self) -> u64 {
9038            if let Some(_) = self.code {
9039                return 2;
9040            }
9041            if let Some(_) = self.txn_id {
9042                return 1;
9043            }
9044            0
9045        }
9046    }
9047
9048    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanEndRequest {
9049        type Borrowed<'a> = &'a Self;
9050        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9051            value
9052        }
9053    }
9054
9055    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanEndRequest {
9056        type Owned = Self;
9057
9058        #[inline(always)]
9059        fn inline_align(_context: fidl::encoding::Context) -> usize {
9060            8
9061        }
9062
9063        #[inline(always)]
9064        fn inline_size(_context: fidl::encoding::Context) -> usize {
9065            16
9066        }
9067    }
9068
9069    unsafe impl<D: fidl::encoding::ResourceDialect>
9070        fidl::encoding::Encode<WlanFullmacImplIfcOnScanEndRequest, D>
9071        for &WlanFullmacImplIfcOnScanEndRequest
9072    {
9073        unsafe fn encode(
9074            self,
9075            encoder: &mut fidl::encoding::Encoder<'_, D>,
9076            offset: usize,
9077            mut depth: fidl::encoding::Depth,
9078        ) -> fidl::Result<()> {
9079            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanEndRequest>(offset);
9080            // Vector header
9081            let max_ordinal: u64 = self.max_ordinal_present();
9082            encoder.write_num(max_ordinal, offset);
9083            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9084            // Calling encoder.out_of_line_offset(0) is not allowed.
9085            if max_ordinal == 0 {
9086                return Ok(());
9087            }
9088            depth.increment()?;
9089            let envelope_size = 8;
9090            let bytes_len = max_ordinal as usize * envelope_size;
9091            #[allow(unused_variables)]
9092            let offset = encoder.out_of_line_offset(bytes_len);
9093            let mut _prev_end_offset: usize = 0;
9094            if 1 > max_ordinal {
9095                return Ok(());
9096            }
9097
9098            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9099            // are envelope_size bytes.
9100            let cur_offset: usize = (1 - 1) * envelope_size;
9101
9102            // Zero reserved fields.
9103            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9104
9105            // Safety:
9106            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9107            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9108            //   envelope_size bytes, there is always sufficient room.
9109            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9110                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9111                encoder,
9112                offset + cur_offset,
9113                depth,
9114            )?;
9115
9116            _prev_end_offset = cur_offset + envelope_size;
9117            if 2 > max_ordinal {
9118                return Ok(());
9119            }
9120
9121            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9122            // are envelope_size bytes.
9123            let cur_offset: usize = (2 - 1) * envelope_size;
9124
9125            // Zero reserved fields.
9126            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9127
9128            // Safety:
9129            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9130            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9131            //   envelope_size bytes, there is always sufficient room.
9132            fidl::encoding::encode_in_envelope_optional::<WlanScanResult, D>(
9133                self.code.as_ref().map(<WlanScanResult as fidl::encoding::ValueTypeMarker>::borrow),
9134                encoder,
9135                offset + cur_offset,
9136                depth,
9137            )?;
9138
9139            _prev_end_offset = cur_offset + envelope_size;
9140
9141            Ok(())
9142        }
9143    }
9144
9145    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9146        for WlanFullmacImplIfcOnScanEndRequest
9147    {
9148        #[inline(always)]
9149        fn new_empty() -> Self {
9150            Self::default()
9151        }
9152
9153        unsafe fn decode(
9154            &mut self,
9155            decoder: &mut fidl::encoding::Decoder<'_, D>,
9156            offset: usize,
9157            mut depth: fidl::encoding::Depth,
9158        ) -> fidl::Result<()> {
9159            decoder.debug_check_bounds::<Self>(offset);
9160            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9161                None => return Err(fidl::Error::NotNullable),
9162                Some(len) => len,
9163            };
9164            // Calling decoder.out_of_line_offset(0) is not allowed.
9165            if len == 0 {
9166                return Ok(());
9167            };
9168            depth.increment()?;
9169            let envelope_size = 8;
9170            let bytes_len = len * envelope_size;
9171            let offset = decoder.out_of_line_offset(bytes_len)?;
9172            // Decode the envelope for each type.
9173            let mut _next_ordinal_to_read = 0;
9174            let mut next_offset = offset;
9175            let end_offset = offset + bytes_len;
9176            _next_ordinal_to_read += 1;
9177            if next_offset >= end_offset {
9178                return Ok(());
9179            }
9180
9181            // Decode unknown envelopes for gaps in ordinals.
9182            while _next_ordinal_to_read < 1 {
9183                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9184                _next_ordinal_to_read += 1;
9185                next_offset += envelope_size;
9186            }
9187
9188            let next_out_of_line = decoder.next_out_of_line();
9189            let handles_before = decoder.remaining_handles();
9190            if let Some((inlined, num_bytes, num_handles)) =
9191                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9192            {
9193                let member_inline_size =
9194                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9195                if inlined != (member_inline_size <= 4) {
9196                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9197                }
9198                let inner_offset;
9199                let mut inner_depth = depth.clone();
9200                if inlined {
9201                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9202                    inner_offset = next_offset;
9203                } else {
9204                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9205                    inner_depth.increment()?;
9206                }
9207                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9208                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9209                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9210                {
9211                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9212                }
9213                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9214                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9215                }
9216            }
9217
9218            next_offset += envelope_size;
9219            _next_ordinal_to_read += 1;
9220            if next_offset >= end_offset {
9221                return Ok(());
9222            }
9223
9224            // Decode unknown envelopes for gaps in ordinals.
9225            while _next_ordinal_to_read < 2 {
9226                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9227                _next_ordinal_to_read += 1;
9228                next_offset += envelope_size;
9229            }
9230
9231            let next_out_of_line = decoder.next_out_of_line();
9232            let handles_before = decoder.remaining_handles();
9233            if let Some((inlined, num_bytes, num_handles)) =
9234                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9235            {
9236                let member_inline_size =
9237                    <WlanScanResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9238                if inlined != (member_inline_size <= 4) {
9239                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9240                }
9241                let inner_offset;
9242                let mut inner_depth = depth.clone();
9243                if inlined {
9244                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9245                    inner_offset = next_offset;
9246                } else {
9247                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9248                    inner_depth.increment()?;
9249                }
9250                let val_ref = self.code.get_or_insert_with(|| fidl::new_empty!(WlanScanResult, D));
9251                fidl::decode!(WlanScanResult, D, val_ref, decoder, inner_offset, inner_depth)?;
9252                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9253                {
9254                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9255                }
9256                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9257                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9258                }
9259            }
9260
9261            next_offset += envelope_size;
9262
9263            // Decode the remaining unknown envelopes.
9264            while next_offset < end_offset {
9265                _next_ordinal_to_read += 1;
9266                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9267                next_offset += envelope_size;
9268            }
9269
9270            Ok(())
9271        }
9272    }
9273
9274    impl WlanFullmacImplIfcOnScanResultRequest {
9275        #[inline(always)]
9276        fn max_ordinal_present(&self) -> u64 {
9277            if let Some(_) = self.bss {
9278                return 3;
9279            }
9280            if let Some(_) = self.timestamp_nanos {
9281                return 2;
9282            }
9283            if let Some(_) = self.txn_id {
9284                return 1;
9285            }
9286            0
9287        }
9288    }
9289
9290    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9291        type Borrowed<'a> = &'a Self;
9292        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9293            value
9294        }
9295    }
9296
9297    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9298        type Owned = Self;
9299
9300        #[inline(always)]
9301        fn inline_align(_context: fidl::encoding::Context) -> usize {
9302            8
9303        }
9304
9305        #[inline(always)]
9306        fn inline_size(_context: fidl::encoding::Context) -> usize {
9307            16
9308        }
9309    }
9310
9311    unsafe impl<D: fidl::encoding::ResourceDialect>
9312        fidl::encoding::Encode<WlanFullmacImplIfcOnScanResultRequest, D>
9313        for &WlanFullmacImplIfcOnScanResultRequest
9314    {
9315        unsafe fn encode(
9316            self,
9317            encoder: &mut fidl::encoding::Encoder<'_, D>,
9318            offset: usize,
9319            mut depth: fidl::encoding::Depth,
9320        ) -> fidl::Result<()> {
9321            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanResultRequest>(offset);
9322            // Vector header
9323            let max_ordinal: u64 = self.max_ordinal_present();
9324            encoder.write_num(max_ordinal, offset);
9325            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9326            // Calling encoder.out_of_line_offset(0) is not allowed.
9327            if max_ordinal == 0 {
9328                return Ok(());
9329            }
9330            depth.increment()?;
9331            let envelope_size = 8;
9332            let bytes_len = max_ordinal as usize * envelope_size;
9333            #[allow(unused_variables)]
9334            let offset = encoder.out_of_line_offset(bytes_len);
9335            let mut _prev_end_offset: usize = 0;
9336            if 1 > max_ordinal {
9337                return Ok(());
9338            }
9339
9340            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9341            // are envelope_size bytes.
9342            let cur_offset: usize = (1 - 1) * envelope_size;
9343
9344            // Zero reserved fields.
9345            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9346
9347            // Safety:
9348            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9349            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9350            //   envelope_size bytes, there is always sufficient room.
9351            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9352                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9353                encoder,
9354                offset + cur_offset,
9355                depth,
9356            )?;
9357
9358            _prev_end_offset = cur_offset + envelope_size;
9359            if 2 > max_ordinal {
9360                return Ok(());
9361            }
9362
9363            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9364            // are envelope_size bytes.
9365            let cur_offset: usize = (2 - 1) * envelope_size;
9366
9367            // Zero reserved fields.
9368            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9369
9370            // Safety:
9371            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9372            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9373            //   envelope_size bytes, there is always sufficient room.
9374            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9375                self.timestamp_nanos.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9376                encoder,
9377                offset + cur_offset,
9378                depth,
9379            )?;
9380
9381            _prev_end_offset = cur_offset + envelope_size;
9382            if 3 > max_ordinal {
9383                return Ok(());
9384            }
9385
9386            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9387            // are envelope_size bytes.
9388            let cur_offset: usize = (3 - 1) * envelope_size;
9389
9390            // Zero reserved fields.
9391            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9392
9393            // Safety:
9394            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9395            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9396            //   envelope_size bytes, there is always sufficient room.
9397            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::BssDescription, D>(
9398            self.bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
9399            encoder, offset + cur_offset, depth
9400        )?;
9401
9402            _prev_end_offset = cur_offset + envelope_size;
9403
9404            Ok(())
9405        }
9406    }
9407
9408    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9409        for WlanFullmacImplIfcOnScanResultRequest
9410    {
9411        #[inline(always)]
9412        fn new_empty() -> Self {
9413            Self::default()
9414        }
9415
9416        unsafe fn decode(
9417            &mut self,
9418            decoder: &mut fidl::encoding::Decoder<'_, D>,
9419            offset: usize,
9420            mut depth: fidl::encoding::Depth,
9421        ) -> fidl::Result<()> {
9422            decoder.debug_check_bounds::<Self>(offset);
9423            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9424                None => return Err(fidl::Error::NotNullable),
9425                Some(len) => len,
9426            };
9427            // Calling decoder.out_of_line_offset(0) is not allowed.
9428            if len == 0 {
9429                return Ok(());
9430            };
9431            depth.increment()?;
9432            let envelope_size = 8;
9433            let bytes_len = len * envelope_size;
9434            let offset = decoder.out_of_line_offset(bytes_len)?;
9435            // Decode the envelope for each type.
9436            let mut _next_ordinal_to_read = 0;
9437            let mut next_offset = offset;
9438            let end_offset = offset + bytes_len;
9439            _next_ordinal_to_read += 1;
9440            if next_offset >= end_offset {
9441                return Ok(());
9442            }
9443
9444            // Decode unknown envelopes for gaps in ordinals.
9445            while _next_ordinal_to_read < 1 {
9446                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9447                _next_ordinal_to_read += 1;
9448                next_offset += envelope_size;
9449            }
9450
9451            let next_out_of_line = decoder.next_out_of_line();
9452            let handles_before = decoder.remaining_handles();
9453            if let Some((inlined, num_bytes, num_handles)) =
9454                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9455            {
9456                let member_inline_size =
9457                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9458                if inlined != (member_inline_size <= 4) {
9459                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9460                }
9461                let inner_offset;
9462                let mut inner_depth = depth.clone();
9463                if inlined {
9464                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9465                    inner_offset = next_offset;
9466                } else {
9467                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9468                    inner_depth.increment()?;
9469                }
9470                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9471                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9472                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9473                {
9474                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9475                }
9476                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9477                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9478                }
9479            }
9480
9481            next_offset += envelope_size;
9482            _next_ordinal_to_read += 1;
9483            if next_offset >= end_offset {
9484                return Ok(());
9485            }
9486
9487            // Decode unknown envelopes for gaps in ordinals.
9488            while _next_ordinal_to_read < 2 {
9489                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9490                _next_ordinal_to_read += 1;
9491                next_offset += envelope_size;
9492            }
9493
9494            let next_out_of_line = decoder.next_out_of_line();
9495            let handles_before = decoder.remaining_handles();
9496            if let Some((inlined, num_bytes, num_handles)) =
9497                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9498            {
9499                let member_inline_size =
9500                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9501                if inlined != (member_inline_size <= 4) {
9502                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9503                }
9504                let inner_offset;
9505                let mut inner_depth = depth.clone();
9506                if inlined {
9507                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9508                    inner_offset = next_offset;
9509                } else {
9510                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9511                    inner_depth.increment()?;
9512                }
9513                let val_ref = self.timestamp_nanos.get_or_insert_with(|| fidl::new_empty!(i64, D));
9514                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9515                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9516                {
9517                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9518                }
9519                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9520                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9521                }
9522            }
9523
9524            next_offset += envelope_size;
9525            _next_ordinal_to_read += 1;
9526            if next_offset >= end_offset {
9527                return Ok(());
9528            }
9529
9530            // Decode unknown envelopes for gaps in ordinals.
9531            while _next_ordinal_to_read < 3 {
9532                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9533                _next_ordinal_to_read += 1;
9534                next_offset += envelope_size;
9535            }
9536
9537            let next_out_of_line = decoder.next_out_of_line();
9538            let handles_before = decoder.remaining_handles();
9539            if let Some((inlined, num_bytes, num_handles)) =
9540                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9541            {
9542                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9543                if inlined != (member_inline_size <= 4) {
9544                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9545                }
9546                let inner_offset;
9547                let mut inner_depth = depth.clone();
9548                if inlined {
9549                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9550                    inner_offset = next_offset;
9551                } else {
9552                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9553                    inner_depth.increment()?;
9554                }
9555                let val_ref = self.bss.get_or_insert_with(|| {
9556                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::BssDescription, D)
9557                });
9558                fidl::decode!(
9559                    fidl_fuchsia_wlan_ieee80211__common::BssDescription,
9560                    D,
9561                    val_ref,
9562                    decoder,
9563                    inner_offset,
9564                    inner_depth
9565                )?;
9566                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9567                {
9568                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9569                }
9570                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9571                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9572                }
9573            }
9574
9575            next_offset += envelope_size;
9576
9577            // Decode the remaining unknown envelopes.
9578            while next_offset < end_offset {
9579                _next_ordinal_to_read += 1;
9580                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9581                next_offset += envelope_size;
9582            }
9583
9584            Ok(())
9585        }
9586    }
9587
9588    impl WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {
9589        #[inline(always)]
9590        fn max_ordinal_present(&self) -> u64 {
9591            if let Some(_) = self.txn_id {
9592                return 1;
9593            }
9594            0
9595        }
9596    }
9597
9598    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {
9599        type Borrowed<'a> = &'a Self;
9600        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9601            value
9602        }
9603    }
9604
9605    unsafe impl fidl::encoding::TypeMarker
9606        for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest
9607    {
9608        type Owned = Self;
9609
9610        #[inline(always)]
9611        fn inline_align(_context: fidl::encoding::Context) -> usize {
9612            8
9613        }
9614
9615        #[inline(always)]
9616        fn inline_size(_context: fidl::encoding::Context) -> usize {
9617            16
9618        }
9619    }
9620
9621    unsafe impl<D: fidl::encoding::ResourceDialect>
9622        fidl::encoding::Encode<WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest, D>
9623        for &WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest
9624    {
9625        unsafe fn encode(
9626            self,
9627            encoder: &mut fidl::encoding::Encoder<'_, D>,
9628            offset: usize,
9629            mut depth: fidl::encoding::Depth,
9630        ) -> fidl::Result<()> {
9631            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest>(
9632                offset,
9633            );
9634            // Vector header
9635            let max_ordinal: u64 = self.max_ordinal_present();
9636            encoder.write_num(max_ordinal, offset);
9637            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9638            // Calling encoder.out_of_line_offset(0) is not allowed.
9639            if max_ordinal == 0 {
9640                return Ok(());
9641            }
9642            depth.increment()?;
9643            let envelope_size = 8;
9644            let bytes_len = max_ordinal as usize * envelope_size;
9645            #[allow(unused_variables)]
9646            let offset = encoder.out_of_line_offset(bytes_len);
9647            let mut _prev_end_offset: usize = 0;
9648            if 1 > max_ordinal {
9649                return Ok(());
9650            }
9651
9652            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9653            // are envelope_size bytes.
9654            let cur_offset: usize = (1 - 1) * envelope_size;
9655
9656            // Zero reserved fields.
9657            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9658
9659            // Safety:
9660            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9661            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9662            //   envelope_size bytes, there is always sufficient room.
9663            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9664                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9665                encoder,
9666                offset + cur_offset,
9667                depth,
9668            )?;
9669
9670            _prev_end_offset = cur_offset + envelope_size;
9671
9672            Ok(())
9673        }
9674    }
9675
9676    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9677        for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest
9678    {
9679        #[inline(always)]
9680        fn new_empty() -> Self {
9681            Self::default()
9682        }
9683
9684        unsafe fn decode(
9685            &mut self,
9686            decoder: &mut fidl::encoding::Decoder<'_, D>,
9687            offset: usize,
9688            mut depth: fidl::encoding::Depth,
9689        ) -> fidl::Result<()> {
9690            decoder.debug_check_bounds::<Self>(offset);
9691            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9692                None => return Err(fidl::Error::NotNullable),
9693                Some(len) => len,
9694            };
9695            // Calling decoder.out_of_line_offset(0) is not allowed.
9696            if len == 0 {
9697                return Ok(());
9698            };
9699            depth.increment()?;
9700            let envelope_size = 8;
9701            let bytes_len = len * envelope_size;
9702            let offset = decoder.out_of_line_offset(bytes_len)?;
9703            // Decode the envelope for each type.
9704            let mut _next_ordinal_to_read = 0;
9705            let mut next_offset = offset;
9706            let end_offset = offset + bytes_len;
9707            _next_ordinal_to_read += 1;
9708            if next_offset >= end_offset {
9709                return Ok(());
9710            }
9711
9712            // Decode unknown envelopes for gaps in ordinals.
9713            while _next_ordinal_to_read < 1 {
9714                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9715                _next_ordinal_to_read += 1;
9716                next_offset += envelope_size;
9717            }
9718
9719            let next_out_of_line = decoder.next_out_of_line();
9720            let handles_before = decoder.remaining_handles();
9721            if let Some((inlined, num_bytes, num_handles)) =
9722                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9723            {
9724                let member_inline_size =
9725                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9726                if inlined != (member_inline_size <= 4) {
9727                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9728                }
9729                let inner_offset;
9730                let mut inner_depth = depth.clone();
9731                if inlined {
9732                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9733                    inner_offset = next_offset;
9734                } else {
9735                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9736                    inner_depth.increment()?;
9737                }
9738                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9739                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9740                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9741                {
9742                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9743                }
9744                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9745                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9746                }
9747            }
9748
9749            next_offset += envelope_size;
9750
9751            // Decode the remaining unknown envelopes.
9752            while next_offset < end_offset {
9753                _next_ordinal_to_read += 1;
9754                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9755                next_offset += envelope_size;
9756            }
9757
9758            Ok(())
9759        }
9760    }
9761
9762    impl WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {
9763        #[inline(always)]
9764        fn max_ordinal_present(&self) -> u64 {
9765            if let Some(_) = self.txn_id {
9766                return 1;
9767            }
9768            0
9769        }
9770    }
9771
9772    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {
9773        type Borrowed<'a> = &'a Self;
9774        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9775            value
9776        }
9777    }
9778
9779    unsafe impl fidl::encoding::TypeMarker
9780        for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest
9781    {
9782        type Owned = Self;
9783
9784        #[inline(always)]
9785        fn inline_align(_context: fidl::encoding::Context) -> usize {
9786            8
9787        }
9788
9789        #[inline(always)]
9790        fn inline_size(_context: fidl::encoding::Context) -> usize {
9791            16
9792        }
9793    }
9794
9795    unsafe impl<D: fidl::encoding::ResourceDialect>
9796        fidl::encoding::Encode<WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest, D>
9797        for &WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest
9798    {
9799        unsafe fn encode(
9800            self,
9801            encoder: &mut fidl::encoding::Encoder<'_, D>,
9802            offset: usize,
9803            mut depth: fidl::encoding::Depth,
9804        ) -> fidl::Result<()> {
9805            encoder
9806                .debug_check_bounds::<WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest>(
9807                    offset,
9808                );
9809            // Vector header
9810            let max_ordinal: u64 = self.max_ordinal_present();
9811            encoder.write_num(max_ordinal, offset);
9812            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9813            // Calling encoder.out_of_line_offset(0) is not allowed.
9814            if max_ordinal == 0 {
9815                return Ok(());
9816            }
9817            depth.increment()?;
9818            let envelope_size = 8;
9819            let bytes_len = max_ordinal as usize * envelope_size;
9820            #[allow(unused_variables)]
9821            let offset = encoder.out_of_line_offset(bytes_len);
9822            let mut _prev_end_offset: usize = 0;
9823            if 1 > max_ordinal {
9824                return Ok(());
9825            }
9826
9827            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9828            // are envelope_size bytes.
9829            let cur_offset: usize = (1 - 1) * envelope_size;
9830
9831            // Zero reserved fields.
9832            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9833
9834            // Safety:
9835            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9836            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9837            //   envelope_size bytes, there is always sufficient room.
9838            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9839                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9840                encoder,
9841                offset + cur_offset,
9842                depth,
9843            )?;
9844
9845            _prev_end_offset = cur_offset + envelope_size;
9846
9847            Ok(())
9848        }
9849    }
9850
9851    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9852        for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest
9853    {
9854        #[inline(always)]
9855        fn new_empty() -> Self {
9856            Self::default()
9857        }
9858
9859        unsafe fn decode(
9860            &mut self,
9861            decoder: &mut fidl::encoding::Decoder<'_, D>,
9862            offset: usize,
9863            mut depth: fidl::encoding::Depth,
9864        ) -> fidl::Result<()> {
9865            decoder.debug_check_bounds::<Self>(offset);
9866            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9867                None => return Err(fidl::Error::NotNullable),
9868                Some(len) => len,
9869            };
9870            // Calling decoder.out_of_line_offset(0) is not allowed.
9871            if len == 0 {
9872                return Ok(());
9873            };
9874            depth.increment()?;
9875            let envelope_size = 8;
9876            let bytes_len = len * envelope_size;
9877            let offset = decoder.out_of_line_offset(bytes_len)?;
9878            // Decode the envelope for each type.
9879            let mut _next_ordinal_to_read = 0;
9880            let mut next_offset = offset;
9881            let end_offset = offset + bytes_len;
9882            _next_ordinal_to_read += 1;
9883            if next_offset >= end_offset {
9884                return Ok(());
9885            }
9886
9887            // Decode unknown envelopes for gaps in ordinals.
9888            while _next_ordinal_to_read < 1 {
9889                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9890                _next_ordinal_to_read += 1;
9891                next_offset += envelope_size;
9892            }
9893
9894            let next_out_of_line = decoder.next_out_of_line();
9895            let handles_before = decoder.remaining_handles();
9896            if let Some((inlined, num_bytes, num_handles)) =
9897                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9898            {
9899                let member_inline_size =
9900                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9901                if inlined != (member_inline_size <= 4) {
9902                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9903                }
9904                let inner_offset;
9905                let mut inner_depth = depth.clone();
9906                if inlined {
9907                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9908                    inner_offset = next_offset;
9909                } else {
9910                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9911                    inner_depth.increment()?;
9912                }
9913                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9914                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9915                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9916                {
9917                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9918                }
9919                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9920                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9921                }
9922            }
9923
9924            next_offset += envelope_size;
9925
9926            // Decode the remaining unknown envelopes.
9927            while next_offset < end_offset {
9928                _next_ordinal_to_read += 1;
9929                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9930                next_offset += envelope_size;
9931            }
9932
9933            Ok(())
9934        }
9935    }
9936
9937    impl WlanFullmacImplIfcRoamConfRequest {
9938        #[inline(always)]
9939        fn max_ordinal_present(&self) -> u64 {
9940            if let Some(_) = self.association_ies {
9941                return 6;
9942            }
9943            if let Some(_) = self.association_id {
9944                return 5;
9945            }
9946            if let Some(_) = self.target_bss_authenticated {
9947                return 4;
9948            }
9949            if let Some(_) = self.original_association_maintained {
9950                return 3;
9951            }
9952            if let Some(_) = self.status_code {
9953                return 2;
9954            }
9955            if let Some(_) = self.selected_bssid {
9956                return 1;
9957            }
9958            0
9959        }
9960    }
9961
9962    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamConfRequest {
9963        type Borrowed<'a> = &'a Self;
9964        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9965            value
9966        }
9967    }
9968
9969    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamConfRequest {
9970        type Owned = Self;
9971
9972        #[inline(always)]
9973        fn inline_align(_context: fidl::encoding::Context) -> usize {
9974            8
9975        }
9976
9977        #[inline(always)]
9978        fn inline_size(_context: fidl::encoding::Context) -> usize {
9979            16
9980        }
9981    }
9982
9983    unsafe impl<D: fidl::encoding::ResourceDialect>
9984        fidl::encoding::Encode<WlanFullmacImplIfcRoamConfRequest, D>
9985        for &WlanFullmacImplIfcRoamConfRequest
9986    {
9987        unsafe fn encode(
9988            self,
9989            encoder: &mut fidl::encoding::Encoder<'_, D>,
9990            offset: usize,
9991            mut depth: fidl::encoding::Depth,
9992        ) -> fidl::Result<()> {
9993            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamConfRequest>(offset);
9994            // Vector header
9995            let max_ordinal: u64 = self.max_ordinal_present();
9996            encoder.write_num(max_ordinal, offset);
9997            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9998            // Calling encoder.out_of_line_offset(0) is not allowed.
9999            if max_ordinal == 0 {
10000                return Ok(());
10001            }
10002            depth.increment()?;
10003            let envelope_size = 8;
10004            let bytes_len = max_ordinal as usize * envelope_size;
10005            #[allow(unused_variables)]
10006            let offset = encoder.out_of_line_offset(bytes_len);
10007            let mut _prev_end_offset: usize = 0;
10008            if 1 > max_ordinal {
10009                return Ok(());
10010            }
10011
10012            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10013            // are envelope_size bytes.
10014            let cur_offset: usize = (1 - 1) * envelope_size;
10015
10016            // Zero reserved fields.
10017            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10018
10019            // Safety:
10020            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10021            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10022            //   envelope_size bytes, there is always sufficient room.
10023            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10024                self.selected_bssid
10025                    .as_ref()
10026                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10027                encoder,
10028                offset + cur_offset,
10029                depth,
10030            )?;
10031
10032            _prev_end_offset = cur_offset + envelope_size;
10033            if 2 > max_ordinal {
10034                return Ok(());
10035            }
10036
10037            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10038            // are envelope_size bytes.
10039            let cur_offset: usize = (2 - 1) * envelope_size;
10040
10041            // Zero reserved fields.
10042            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10043
10044            // Safety:
10045            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10046            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10047            //   envelope_size bytes, there is always sufficient room.
10048            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
10049            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
10050            encoder, offset + cur_offset, depth
10051        )?;
10052
10053            _prev_end_offset = cur_offset + envelope_size;
10054            if 3 > max_ordinal {
10055                return Ok(());
10056            }
10057
10058            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10059            // are envelope_size bytes.
10060            let cur_offset: usize = (3 - 1) * envelope_size;
10061
10062            // Zero reserved fields.
10063            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10064
10065            // Safety:
10066            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10067            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10068            //   envelope_size bytes, there is always sufficient room.
10069            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10070                self.original_association_maintained
10071                    .as_ref()
10072                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10073                encoder,
10074                offset + cur_offset,
10075                depth,
10076            )?;
10077
10078            _prev_end_offset = cur_offset + envelope_size;
10079            if 4 > max_ordinal {
10080                return Ok(());
10081            }
10082
10083            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10084            // are envelope_size bytes.
10085            let cur_offset: usize = (4 - 1) * envelope_size;
10086
10087            // Zero reserved fields.
10088            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10089
10090            // Safety:
10091            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10092            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10093            //   envelope_size bytes, there is always sufficient room.
10094            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10095                self.target_bss_authenticated
10096                    .as_ref()
10097                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10098                encoder,
10099                offset + cur_offset,
10100                depth,
10101            )?;
10102
10103            _prev_end_offset = cur_offset + envelope_size;
10104            if 5 > max_ordinal {
10105                return Ok(());
10106            }
10107
10108            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10109            // are envelope_size bytes.
10110            let cur_offset: usize = (5 - 1) * envelope_size;
10111
10112            // Zero reserved fields.
10113            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10114
10115            // Safety:
10116            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10117            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10118            //   envelope_size bytes, there is always sufficient room.
10119            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10120                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10121                encoder,
10122                offset + cur_offset,
10123                depth,
10124            )?;
10125
10126            _prev_end_offset = cur_offset + envelope_size;
10127            if 6 > max_ordinal {
10128                return Ok(());
10129            }
10130
10131            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10132            // are envelope_size bytes.
10133            let cur_offset: usize = (6 - 1) * envelope_size;
10134
10135            // Zero reserved fields.
10136            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10137
10138            // Safety:
10139            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10140            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10141            //   envelope_size bytes, there is always sufficient room.
10142            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10143            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10144            encoder, offset + cur_offset, depth
10145        )?;
10146
10147            _prev_end_offset = cur_offset + envelope_size;
10148
10149            Ok(())
10150        }
10151    }
10152
10153    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10154        for WlanFullmacImplIfcRoamConfRequest
10155    {
10156        #[inline(always)]
10157        fn new_empty() -> Self {
10158            Self::default()
10159        }
10160
10161        unsafe fn decode(
10162            &mut self,
10163            decoder: &mut fidl::encoding::Decoder<'_, D>,
10164            offset: usize,
10165            mut depth: fidl::encoding::Depth,
10166        ) -> fidl::Result<()> {
10167            decoder.debug_check_bounds::<Self>(offset);
10168            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10169                None => return Err(fidl::Error::NotNullable),
10170                Some(len) => len,
10171            };
10172            // Calling decoder.out_of_line_offset(0) is not allowed.
10173            if len == 0 {
10174                return Ok(());
10175            };
10176            depth.increment()?;
10177            let envelope_size = 8;
10178            let bytes_len = len * envelope_size;
10179            let offset = decoder.out_of_line_offset(bytes_len)?;
10180            // Decode the envelope for each type.
10181            let mut _next_ordinal_to_read = 0;
10182            let mut next_offset = offset;
10183            let end_offset = offset + bytes_len;
10184            _next_ordinal_to_read += 1;
10185            if next_offset >= end_offset {
10186                return Ok(());
10187            }
10188
10189            // Decode unknown envelopes for gaps in ordinals.
10190            while _next_ordinal_to_read < 1 {
10191                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10192                _next_ordinal_to_read += 1;
10193                next_offset += envelope_size;
10194            }
10195
10196            let next_out_of_line = decoder.next_out_of_line();
10197            let handles_before = decoder.remaining_handles();
10198            if let Some((inlined, num_bytes, num_handles)) =
10199                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10200            {
10201                let member_inline_size =
10202                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10203                        decoder.context,
10204                    );
10205                if inlined != (member_inline_size <= 4) {
10206                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10207                }
10208                let inner_offset;
10209                let mut inner_depth = depth.clone();
10210                if inlined {
10211                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10212                    inner_offset = next_offset;
10213                } else {
10214                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10215                    inner_depth.increment()?;
10216                }
10217                let val_ref = self
10218                    .selected_bssid
10219                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10220                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
10221                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10222                {
10223                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10224                }
10225                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10226                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10227                }
10228            }
10229
10230            next_offset += envelope_size;
10231            _next_ordinal_to_read += 1;
10232            if next_offset >= end_offset {
10233                return Ok(());
10234            }
10235
10236            // Decode unknown envelopes for gaps in ordinals.
10237            while _next_ordinal_to_read < 2 {
10238                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10239                _next_ordinal_to_read += 1;
10240                next_offset += envelope_size;
10241            }
10242
10243            let next_out_of_line = decoder.next_out_of_line();
10244            let handles_before = decoder.remaining_handles();
10245            if let Some((inlined, num_bytes, num_handles)) =
10246                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10247            {
10248                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10249                if inlined != (member_inline_size <= 4) {
10250                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10251                }
10252                let inner_offset;
10253                let mut inner_depth = depth.clone();
10254                if inlined {
10255                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10256                    inner_offset = next_offset;
10257                } else {
10258                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10259                    inner_depth.increment()?;
10260                }
10261                let val_ref = self.status_code.get_or_insert_with(|| {
10262                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
10263                });
10264                fidl::decode!(
10265                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10266                    D,
10267                    val_ref,
10268                    decoder,
10269                    inner_offset,
10270                    inner_depth
10271                )?;
10272                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10273                {
10274                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10275                }
10276                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10277                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10278                }
10279            }
10280
10281            next_offset += envelope_size;
10282            _next_ordinal_to_read += 1;
10283            if next_offset >= end_offset {
10284                return Ok(());
10285            }
10286
10287            // Decode unknown envelopes for gaps in ordinals.
10288            while _next_ordinal_to_read < 3 {
10289                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10290                _next_ordinal_to_read += 1;
10291                next_offset += envelope_size;
10292            }
10293
10294            let next_out_of_line = decoder.next_out_of_line();
10295            let handles_before = decoder.remaining_handles();
10296            if let Some((inlined, num_bytes, num_handles)) =
10297                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10298            {
10299                let member_inline_size =
10300                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10301                if inlined != (member_inline_size <= 4) {
10302                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10303                }
10304                let inner_offset;
10305                let mut inner_depth = depth.clone();
10306                if inlined {
10307                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10308                    inner_offset = next_offset;
10309                } else {
10310                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10311                    inner_depth.increment()?;
10312                }
10313                let val_ref = self
10314                    .original_association_maintained
10315                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
10316                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10317                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10318                {
10319                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10320                }
10321                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10322                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10323                }
10324            }
10325
10326            next_offset += envelope_size;
10327            _next_ordinal_to_read += 1;
10328            if next_offset >= end_offset {
10329                return Ok(());
10330            }
10331
10332            // Decode unknown envelopes for gaps in ordinals.
10333            while _next_ordinal_to_read < 4 {
10334                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10335                _next_ordinal_to_read += 1;
10336                next_offset += envelope_size;
10337            }
10338
10339            let next_out_of_line = decoder.next_out_of_line();
10340            let handles_before = decoder.remaining_handles();
10341            if let Some((inlined, num_bytes, num_handles)) =
10342                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10343            {
10344                let member_inline_size =
10345                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10346                if inlined != (member_inline_size <= 4) {
10347                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10348                }
10349                let inner_offset;
10350                let mut inner_depth = depth.clone();
10351                if inlined {
10352                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10353                    inner_offset = next_offset;
10354                } else {
10355                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10356                    inner_depth.increment()?;
10357                }
10358                let val_ref =
10359                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
10360                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10361                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10362                {
10363                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10364                }
10365                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10366                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10367                }
10368            }
10369
10370            next_offset += envelope_size;
10371            _next_ordinal_to_read += 1;
10372            if next_offset >= end_offset {
10373                return Ok(());
10374            }
10375
10376            // Decode unknown envelopes for gaps in ordinals.
10377            while _next_ordinal_to_read < 5 {
10378                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10379                _next_ordinal_to_read += 1;
10380                next_offset += envelope_size;
10381            }
10382
10383            let next_out_of_line = decoder.next_out_of_line();
10384            let handles_before = decoder.remaining_handles();
10385            if let Some((inlined, num_bytes, num_handles)) =
10386                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10387            {
10388                let member_inline_size =
10389                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10390                if inlined != (member_inline_size <= 4) {
10391                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10392                }
10393                let inner_offset;
10394                let mut inner_depth = depth.clone();
10395                if inlined {
10396                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10397                    inner_offset = next_offset;
10398                } else {
10399                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10400                    inner_depth.increment()?;
10401                }
10402                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10403                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10404                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10405                {
10406                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10407                }
10408                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10409                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10410                }
10411            }
10412
10413            next_offset += envelope_size;
10414            _next_ordinal_to_read += 1;
10415            if next_offset >= end_offset {
10416                return Ok(());
10417            }
10418
10419            // Decode unknown envelopes for gaps in ordinals.
10420            while _next_ordinal_to_read < 6 {
10421                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10422                _next_ordinal_to_read += 1;
10423                next_offset += envelope_size;
10424            }
10425
10426            let next_out_of_line = decoder.next_out_of_line();
10427            let handles_before = decoder.remaining_handles();
10428            if let Some((inlined, num_bytes, num_handles)) =
10429                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10430            {
10431                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10432                if inlined != (member_inline_size <= 4) {
10433                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10434                }
10435                let inner_offset;
10436                let mut inner_depth = depth.clone();
10437                if inlined {
10438                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10439                    inner_offset = next_offset;
10440                } else {
10441                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10442                    inner_depth.increment()?;
10443                }
10444                let val_ref = self.association_ies.get_or_insert_with(|| {
10445                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
10446                });
10447                fidl::decode!(
10448                    fidl::encoding::UnboundedVector<u8>,
10449                    D,
10450                    val_ref,
10451                    decoder,
10452                    inner_offset,
10453                    inner_depth
10454                )?;
10455                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10456                {
10457                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10458                }
10459                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10460                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10461                }
10462            }
10463
10464            next_offset += envelope_size;
10465
10466            // Decode the remaining unknown envelopes.
10467            while next_offset < end_offset {
10468                _next_ordinal_to_read += 1;
10469                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10470                next_offset += envelope_size;
10471            }
10472
10473            Ok(())
10474        }
10475    }
10476
10477    impl WlanFullmacImplIfcRoamResultIndRequest {
10478        #[inline(always)]
10479        fn max_ordinal_present(&self) -> u64 {
10480            if let Some(_) = self.association_ies {
10481                return 6;
10482            }
10483            if let Some(_) = self.association_id {
10484                return 5;
10485            }
10486            if let Some(_) = self.target_bss_authenticated {
10487                return 4;
10488            }
10489            if let Some(_) = self.original_association_maintained {
10490                return 3;
10491            }
10492            if let Some(_) = self.status_code {
10493                return 2;
10494            }
10495            if let Some(_) = self.selected_bssid {
10496                return 1;
10497            }
10498            0
10499        }
10500    }
10501
10502    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
10503        type Borrowed<'a> = &'a Self;
10504        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10505            value
10506        }
10507    }
10508
10509    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
10510        type Owned = Self;
10511
10512        #[inline(always)]
10513        fn inline_align(_context: fidl::encoding::Context) -> usize {
10514            8
10515        }
10516
10517        #[inline(always)]
10518        fn inline_size(_context: fidl::encoding::Context) -> usize {
10519            16
10520        }
10521    }
10522
10523    unsafe impl<D: fidl::encoding::ResourceDialect>
10524        fidl::encoding::Encode<WlanFullmacImplIfcRoamResultIndRequest, D>
10525        for &WlanFullmacImplIfcRoamResultIndRequest
10526    {
10527        unsafe fn encode(
10528            self,
10529            encoder: &mut fidl::encoding::Encoder<'_, D>,
10530            offset: usize,
10531            mut depth: fidl::encoding::Depth,
10532        ) -> fidl::Result<()> {
10533            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamResultIndRequest>(offset);
10534            // Vector header
10535            let max_ordinal: u64 = self.max_ordinal_present();
10536            encoder.write_num(max_ordinal, offset);
10537            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10538            // Calling encoder.out_of_line_offset(0) is not allowed.
10539            if max_ordinal == 0 {
10540                return Ok(());
10541            }
10542            depth.increment()?;
10543            let envelope_size = 8;
10544            let bytes_len = max_ordinal as usize * envelope_size;
10545            #[allow(unused_variables)]
10546            let offset = encoder.out_of_line_offset(bytes_len);
10547            let mut _prev_end_offset: usize = 0;
10548            if 1 > max_ordinal {
10549                return Ok(());
10550            }
10551
10552            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10553            // are envelope_size bytes.
10554            let cur_offset: usize = (1 - 1) * envelope_size;
10555
10556            // Zero reserved fields.
10557            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10558
10559            // Safety:
10560            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10561            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10562            //   envelope_size bytes, there is always sufficient room.
10563            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10564                self.selected_bssid
10565                    .as_ref()
10566                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10567                encoder,
10568                offset + cur_offset,
10569                depth,
10570            )?;
10571
10572            _prev_end_offset = cur_offset + envelope_size;
10573            if 2 > max_ordinal {
10574                return Ok(());
10575            }
10576
10577            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10578            // are envelope_size bytes.
10579            let cur_offset: usize = (2 - 1) * envelope_size;
10580
10581            // Zero reserved fields.
10582            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10583
10584            // Safety:
10585            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10586            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10587            //   envelope_size bytes, there is always sufficient room.
10588            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
10589            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
10590            encoder, offset + cur_offset, depth
10591        )?;
10592
10593            _prev_end_offset = cur_offset + envelope_size;
10594            if 3 > max_ordinal {
10595                return Ok(());
10596            }
10597
10598            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10599            // are envelope_size bytes.
10600            let cur_offset: usize = (3 - 1) * envelope_size;
10601
10602            // Zero reserved fields.
10603            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10604
10605            // Safety:
10606            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10607            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10608            //   envelope_size bytes, there is always sufficient room.
10609            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10610                self.original_association_maintained
10611                    .as_ref()
10612                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10613                encoder,
10614                offset + cur_offset,
10615                depth,
10616            )?;
10617
10618            _prev_end_offset = cur_offset + envelope_size;
10619            if 4 > max_ordinal {
10620                return Ok(());
10621            }
10622
10623            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10624            // are envelope_size bytes.
10625            let cur_offset: usize = (4 - 1) * envelope_size;
10626
10627            // Zero reserved fields.
10628            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10629
10630            // Safety:
10631            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10632            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10633            //   envelope_size bytes, there is always sufficient room.
10634            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10635                self.target_bss_authenticated
10636                    .as_ref()
10637                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10638                encoder,
10639                offset + cur_offset,
10640                depth,
10641            )?;
10642
10643            _prev_end_offset = cur_offset + envelope_size;
10644            if 5 > max_ordinal {
10645                return Ok(());
10646            }
10647
10648            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10649            // are envelope_size bytes.
10650            let cur_offset: usize = (5 - 1) * envelope_size;
10651
10652            // Zero reserved fields.
10653            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10654
10655            // Safety:
10656            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10657            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10658            //   envelope_size bytes, there is always sufficient room.
10659            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10660                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10661                encoder,
10662                offset + cur_offset,
10663                depth,
10664            )?;
10665
10666            _prev_end_offset = cur_offset + envelope_size;
10667            if 6 > max_ordinal {
10668                return Ok(());
10669            }
10670
10671            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10672            // are envelope_size bytes.
10673            let cur_offset: usize = (6 - 1) * envelope_size;
10674
10675            // Zero reserved fields.
10676            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10677
10678            // Safety:
10679            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10680            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10681            //   envelope_size bytes, there is always sufficient room.
10682            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10683            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10684            encoder, offset + cur_offset, depth
10685        )?;
10686
10687            _prev_end_offset = cur_offset + envelope_size;
10688
10689            Ok(())
10690        }
10691    }
10692
10693    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10694        for WlanFullmacImplIfcRoamResultIndRequest
10695    {
10696        #[inline(always)]
10697        fn new_empty() -> Self {
10698            Self::default()
10699        }
10700
10701        unsafe fn decode(
10702            &mut self,
10703            decoder: &mut fidl::encoding::Decoder<'_, D>,
10704            offset: usize,
10705            mut depth: fidl::encoding::Depth,
10706        ) -> fidl::Result<()> {
10707            decoder.debug_check_bounds::<Self>(offset);
10708            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10709                None => return Err(fidl::Error::NotNullable),
10710                Some(len) => len,
10711            };
10712            // Calling decoder.out_of_line_offset(0) is not allowed.
10713            if len == 0 {
10714                return Ok(());
10715            };
10716            depth.increment()?;
10717            let envelope_size = 8;
10718            let bytes_len = len * envelope_size;
10719            let offset = decoder.out_of_line_offset(bytes_len)?;
10720            // Decode the envelope for each type.
10721            let mut _next_ordinal_to_read = 0;
10722            let mut next_offset = offset;
10723            let end_offset = offset + bytes_len;
10724            _next_ordinal_to_read += 1;
10725            if next_offset >= end_offset {
10726                return Ok(());
10727            }
10728
10729            // Decode unknown envelopes for gaps in ordinals.
10730            while _next_ordinal_to_read < 1 {
10731                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10732                _next_ordinal_to_read += 1;
10733                next_offset += envelope_size;
10734            }
10735
10736            let next_out_of_line = decoder.next_out_of_line();
10737            let handles_before = decoder.remaining_handles();
10738            if let Some((inlined, num_bytes, num_handles)) =
10739                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10740            {
10741                let member_inline_size =
10742                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10743                        decoder.context,
10744                    );
10745                if inlined != (member_inline_size <= 4) {
10746                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10747                }
10748                let inner_offset;
10749                let mut inner_depth = depth.clone();
10750                if inlined {
10751                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10752                    inner_offset = next_offset;
10753                } else {
10754                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10755                    inner_depth.increment()?;
10756                }
10757                let val_ref = self
10758                    .selected_bssid
10759                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10760                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
10761                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10762                {
10763                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10764                }
10765                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10766                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10767                }
10768            }
10769
10770            next_offset += envelope_size;
10771            _next_ordinal_to_read += 1;
10772            if next_offset >= end_offset {
10773                return Ok(());
10774            }
10775
10776            // Decode unknown envelopes for gaps in ordinals.
10777            while _next_ordinal_to_read < 2 {
10778                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10779                _next_ordinal_to_read += 1;
10780                next_offset += envelope_size;
10781            }
10782
10783            let next_out_of_line = decoder.next_out_of_line();
10784            let handles_before = decoder.remaining_handles();
10785            if let Some((inlined, num_bytes, num_handles)) =
10786                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10787            {
10788                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10789                if inlined != (member_inline_size <= 4) {
10790                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10791                }
10792                let inner_offset;
10793                let mut inner_depth = depth.clone();
10794                if inlined {
10795                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10796                    inner_offset = next_offset;
10797                } else {
10798                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10799                    inner_depth.increment()?;
10800                }
10801                let val_ref = self.status_code.get_or_insert_with(|| {
10802                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
10803                });
10804                fidl::decode!(
10805                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10806                    D,
10807                    val_ref,
10808                    decoder,
10809                    inner_offset,
10810                    inner_depth
10811                )?;
10812                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10813                {
10814                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10815                }
10816                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10817                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10818                }
10819            }
10820
10821            next_offset += envelope_size;
10822            _next_ordinal_to_read += 1;
10823            if next_offset >= end_offset {
10824                return Ok(());
10825            }
10826
10827            // Decode unknown envelopes for gaps in ordinals.
10828            while _next_ordinal_to_read < 3 {
10829                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10830                _next_ordinal_to_read += 1;
10831                next_offset += envelope_size;
10832            }
10833
10834            let next_out_of_line = decoder.next_out_of_line();
10835            let handles_before = decoder.remaining_handles();
10836            if let Some((inlined, num_bytes, num_handles)) =
10837                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10838            {
10839                let member_inline_size =
10840                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10841                if inlined != (member_inline_size <= 4) {
10842                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10843                }
10844                let inner_offset;
10845                let mut inner_depth = depth.clone();
10846                if inlined {
10847                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10848                    inner_offset = next_offset;
10849                } else {
10850                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10851                    inner_depth.increment()?;
10852                }
10853                let val_ref = self
10854                    .original_association_maintained
10855                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
10856                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10857                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10858                {
10859                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10860                }
10861                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10862                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10863                }
10864            }
10865
10866            next_offset += envelope_size;
10867            _next_ordinal_to_read += 1;
10868            if next_offset >= end_offset {
10869                return Ok(());
10870            }
10871
10872            // Decode unknown envelopes for gaps in ordinals.
10873            while _next_ordinal_to_read < 4 {
10874                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10875                _next_ordinal_to_read += 1;
10876                next_offset += envelope_size;
10877            }
10878
10879            let next_out_of_line = decoder.next_out_of_line();
10880            let handles_before = decoder.remaining_handles();
10881            if let Some((inlined, num_bytes, num_handles)) =
10882                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10883            {
10884                let member_inline_size =
10885                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10886                if inlined != (member_inline_size <= 4) {
10887                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10888                }
10889                let inner_offset;
10890                let mut inner_depth = depth.clone();
10891                if inlined {
10892                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10893                    inner_offset = next_offset;
10894                } else {
10895                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10896                    inner_depth.increment()?;
10897                }
10898                let val_ref =
10899                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
10900                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10901                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10902                {
10903                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10904                }
10905                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10906                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10907                }
10908            }
10909
10910            next_offset += envelope_size;
10911            _next_ordinal_to_read += 1;
10912            if next_offset >= end_offset {
10913                return Ok(());
10914            }
10915
10916            // Decode unknown envelopes for gaps in ordinals.
10917            while _next_ordinal_to_read < 5 {
10918                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10919                _next_ordinal_to_read += 1;
10920                next_offset += envelope_size;
10921            }
10922
10923            let next_out_of_line = decoder.next_out_of_line();
10924            let handles_before = decoder.remaining_handles();
10925            if let Some((inlined, num_bytes, num_handles)) =
10926                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10927            {
10928                let member_inline_size =
10929                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10930                if inlined != (member_inline_size <= 4) {
10931                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10932                }
10933                let inner_offset;
10934                let mut inner_depth = depth.clone();
10935                if inlined {
10936                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10937                    inner_offset = next_offset;
10938                } else {
10939                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10940                    inner_depth.increment()?;
10941                }
10942                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10943                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10944                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10945                {
10946                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10947                }
10948                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10949                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10950                }
10951            }
10952
10953            next_offset += envelope_size;
10954            _next_ordinal_to_read += 1;
10955            if next_offset >= end_offset {
10956                return Ok(());
10957            }
10958
10959            // Decode unknown envelopes for gaps in ordinals.
10960            while _next_ordinal_to_read < 6 {
10961                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10962                _next_ordinal_to_read += 1;
10963                next_offset += envelope_size;
10964            }
10965
10966            let next_out_of_line = decoder.next_out_of_line();
10967            let handles_before = decoder.remaining_handles();
10968            if let Some((inlined, num_bytes, num_handles)) =
10969                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10970            {
10971                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10972                if inlined != (member_inline_size <= 4) {
10973                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10974                }
10975                let inner_offset;
10976                let mut inner_depth = depth.clone();
10977                if inlined {
10978                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10979                    inner_offset = next_offset;
10980                } else {
10981                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10982                    inner_depth.increment()?;
10983                }
10984                let val_ref = self.association_ies.get_or_insert_with(|| {
10985                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
10986                });
10987                fidl::decode!(
10988                    fidl::encoding::UnboundedVector<u8>,
10989                    D,
10990                    val_ref,
10991                    decoder,
10992                    inner_offset,
10993                    inner_depth
10994                )?;
10995                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10996                {
10997                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10998                }
10999                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11000                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11001                }
11002            }
11003
11004            next_offset += envelope_size;
11005
11006            // Decode the remaining unknown envelopes.
11007            while next_offset < end_offset {
11008                _next_ordinal_to_read += 1;
11009                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11010                next_offset += envelope_size;
11011            }
11012
11013            Ok(())
11014        }
11015    }
11016
11017    impl WlanFullmacImplIfcRoamStartIndRequest {
11018        #[inline(always)]
11019        fn max_ordinal_present(&self) -> u64 {
11020            if let Some(_) = self.original_association_maintained {
11021                return 3;
11022            }
11023            if let Some(_) = self.selected_bss {
11024                return 2;
11025            }
11026            if let Some(_) = self.selected_bssid {
11027                return 1;
11028            }
11029            0
11030        }
11031    }
11032
11033    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
11034        type Borrowed<'a> = &'a Self;
11035        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11036            value
11037        }
11038    }
11039
11040    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
11041        type Owned = Self;
11042
11043        #[inline(always)]
11044        fn inline_align(_context: fidl::encoding::Context) -> usize {
11045            8
11046        }
11047
11048        #[inline(always)]
11049        fn inline_size(_context: fidl::encoding::Context) -> usize {
11050            16
11051        }
11052    }
11053
11054    unsafe impl<D: fidl::encoding::ResourceDialect>
11055        fidl::encoding::Encode<WlanFullmacImplIfcRoamStartIndRequest, D>
11056        for &WlanFullmacImplIfcRoamStartIndRequest
11057    {
11058        unsafe fn encode(
11059            self,
11060            encoder: &mut fidl::encoding::Encoder<'_, D>,
11061            offset: usize,
11062            mut depth: fidl::encoding::Depth,
11063        ) -> fidl::Result<()> {
11064            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamStartIndRequest>(offset);
11065            // Vector header
11066            let max_ordinal: u64 = self.max_ordinal_present();
11067            encoder.write_num(max_ordinal, offset);
11068            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11069            // Calling encoder.out_of_line_offset(0) is not allowed.
11070            if max_ordinal == 0 {
11071                return Ok(());
11072            }
11073            depth.increment()?;
11074            let envelope_size = 8;
11075            let bytes_len = max_ordinal as usize * envelope_size;
11076            #[allow(unused_variables)]
11077            let offset = encoder.out_of_line_offset(bytes_len);
11078            let mut _prev_end_offset: usize = 0;
11079            if 1 > max_ordinal {
11080                return Ok(());
11081            }
11082
11083            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11084            // are envelope_size bytes.
11085            let cur_offset: usize = (1 - 1) * envelope_size;
11086
11087            // Zero reserved fields.
11088            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11089
11090            // Safety:
11091            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11092            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11093            //   envelope_size bytes, there is always sufficient room.
11094            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
11095                self.selected_bssid
11096                    .as_ref()
11097                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
11098                encoder,
11099                offset + cur_offset,
11100                depth,
11101            )?;
11102
11103            _prev_end_offset = cur_offset + envelope_size;
11104            if 2 > max_ordinal {
11105                return Ok(());
11106            }
11107
11108            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11109            // are envelope_size bytes.
11110            let cur_offset: usize = (2 - 1) * envelope_size;
11111
11112            // Zero reserved fields.
11113            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11114
11115            // Safety:
11116            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11117            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11118            //   envelope_size bytes, there is always sufficient room.
11119            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::BssDescription, D>(
11120            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
11121            encoder, offset + cur_offset, depth
11122        )?;
11123
11124            _prev_end_offset = cur_offset + envelope_size;
11125            if 3 > max_ordinal {
11126                return Ok(());
11127            }
11128
11129            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11130            // are envelope_size bytes.
11131            let cur_offset: usize = (3 - 1) * envelope_size;
11132
11133            // Zero reserved fields.
11134            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11135
11136            // Safety:
11137            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11138            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11139            //   envelope_size bytes, there is always sufficient room.
11140            fidl::encoding::encode_in_envelope_optional::<bool, D>(
11141                self.original_association_maintained
11142                    .as_ref()
11143                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
11144                encoder,
11145                offset + cur_offset,
11146                depth,
11147            )?;
11148
11149            _prev_end_offset = cur_offset + envelope_size;
11150
11151            Ok(())
11152        }
11153    }
11154
11155    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11156        for WlanFullmacImplIfcRoamStartIndRequest
11157    {
11158        #[inline(always)]
11159        fn new_empty() -> Self {
11160            Self::default()
11161        }
11162
11163        unsafe fn decode(
11164            &mut self,
11165            decoder: &mut fidl::encoding::Decoder<'_, D>,
11166            offset: usize,
11167            mut depth: fidl::encoding::Depth,
11168        ) -> fidl::Result<()> {
11169            decoder.debug_check_bounds::<Self>(offset);
11170            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11171                None => return Err(fidl::Error::NotNullable),
11172                Some(len) => len,
11173            };
11174            // Calling decoder.out_of_line_offset(0) is not allowed.
11175            if len == 0 {
11176                return Ok(());
11177            };
11178            depth.increment()?;
11179            let envelope_size = 8;
11180            let bytes_len = len * envelope_size;
11181            let offset = decoder.out_of_line_offset(bytes_len)?;
11182            // Decode the envelope for each type.
11183            let mut _next_ordinal_to_read = 0;
11184            let mut next_offset = offset;
11185            let end_offset = offset + bytes_len;
11186            _next_ordinal_to_read += 1;
11187            if next_offset >= end_offset {
11188                return Ok(());
11189            }
11190
11191            // Decode unknown envelopes for gaps in ordinals.
11192            while _next_ordinal_to_read < 1 {
11193                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11194                _next_ordinal_to_read += 1;
11195                next_offset += envelope_size;
11196            }
11197
11198            let next_out_of_line = decoder.next_out_of_line();
11199            let handles_before = decoder.remaining_handles();
11200            if let Some((inlined, num_bytes, num_handles)) =
11201                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11202            {
11203                let member_inline_size =
11204                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11205                        decoder.context,
11206                    );
11207                if inlined != (member_inline_size <= 4) {
11208                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11209                }
11210                let inner_offset;
11211                let mut inner_depth = depth.clone();
11212                if inlined {
11213                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11214                    inner_offset = next_offset;
11215                } else {
11216                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11217                    inner_depth.increment()?;
11218                }
11219                let val_ref = self
11220                    .selected_bssid
11221                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11222                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
11223                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11224                {
11225                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11226                }
11227                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11228                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11229                }
11230            }
11231
11232            next_offset += envelope_size;
11233            _next_ordinal_to_read += 1;
11234            if next_offset >= end_offset {
11235                return Ok(());
11236            }
11237
11238            // Decode unknown envelopes for gaps in ordinals.
11239            while _next_ordinal_to_read < 2 {
11240                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11241                _next_ordinal_to_read += 1;
11242                next_offset += envelope_size;
11243            }
11244
11245            let next_out_of_line = decoder.next_out_of_line();
11246            let handles_before = decoder.remaining_handles();
11247            if let Some((inlined, num_bytes, num_handles)) =
11248                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11249            {
11250                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11251                if inlined != (member_inline_size <= 4) {
11252                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11253                }
11254                let inner_offset;
11255                let mut inner_depth = depth.clone();
11256                if inlined {
11257                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11258                    inner_offset = next_offset;
11259                } else {
11260                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11261                    inner_depth.increment()?;
11262                }
11263                let val_ref = self.selected_bss.get_or_insert_with(|| {
11264                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::BssDescription, D)
11265                });
11266                fidl::decode!(
11267                    fidl_fuchsia_wlan_ieee80211__common::BssDescription,
11268                    D,
11269                    val_ref,
11270                    decoder,
11271                    inner_offset,
11272                    inner_depth
11273                )?;
11274                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11275                {
11276                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11277                }
11278                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11279                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11280                }
11281            }
11282
11283            next_offset += envelope_size;
11284            _next_ordinal_to_read += 1;
11285            if next_offset >= end_offset {
11286                return Ok(());
11287            }
11288
11289            // Decode unknown envelopes for gaps in ordinals.
11290            while _next_ordinal_to_read < 3 {
11291                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11292                _next_ordinal_to_read += 1;
11293                next_offset += envelope_size;
11294            }
11295
11296            let next_out_of_line = decoder.next_out_of_line();
11297            let handles_before = decoder.remaining_handles();
11298            if let Some((inlined, num_bytes, num_handles)) =
11299                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11300            {
11301                let member_inline_size =
11302                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11303                if inlined != (member_inline_size <= 4) {
11304                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11305                }
11306                let inner_offset;
11307                let mut inner_depth = depth.clone();
11308                if inlined {
11309                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11310                    inner_offset = next_offset;
11311                } else {
11312                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11313                    inner_depth.increment()?;
11314                }
11315                let val_ref = self
11316                    .original_association_maintained
11317                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
11318                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11319                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11320                {
11321                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11322                }
11323                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11324                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11325                }
11326            }
11327
11328            next_offset += envelope_size;
11329
11330            // Decode the remaining unknown envelopes.
11331            while next_offset < end_offset {
11332                _next_ordinal_to_read += 1;
11333                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11334                next_offset += envelope_size;
11335            }
11336
11337            Ok(())
11338        }
11339    }
11340
11341    impl WlanFullmacImplIfcSaeHandshakeIndRequest {
11342        #[inline(always)]
11343        fn max_ordinal_present(&self) -> u64 {
11344            if let Some(_) = self.peer_sta_address {
11345                return 1;
11346            }
11347            0
11348        }
11349    }
11350
11351    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
11352        type Borrowed<'a> = &'a Self;
11353        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11354            value
11355        }
11356    }
11357
11358    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
11359        type Owned = Self;
11360
11361        #[inline(always)]
11362        fn inline_align(_context: fidl::encoding::Context) -> usize {
11363            8
11364        }
11365
11366        #[inline(always)]
11367        fn inline_size(_context: fidl::encoding::Context) -> usize {
11368            16
11369        }
11370    }
11371
11372    unsafe impl<D: fidl::encoding::ResourceDialect>
11373        fidl::encoding::Encode<WlanFullmacImplIfcSaeHandshakeIndRequest, D>
11374        for &WlanFullmacImplIfcSaeHandshakeIndRequest
11375    {
11376        unsafe fn encode(
11377            self,
11378            encoder: &mut fidl::encoding::Encoder<'_, D>,
11379            offset: usize,
11380            mut depth: fidl::encoding::Depth,
11381        ) -> fidl::Result<()> {
11382            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeHandshakeIndRequest>(offset);
11383            // Vector header
11384            let max_ordinal: u64 = self.max_ordinal_present();
11385            encoder.write_num(max_ordinal, offset);
11386            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11387            // Calling encoder.out_of_line_offset(0) is not allowed.
11388            if max_ordinal == 0 {
11389                return Ok(());
11390            }
11391            depth.increment()?;
11392            let envelope_size = 8;
11393            let bytes_len = max_ordinal as usize * envelope_size;
11394            #[allow(unused_variables)]
11395            let offset = encoder.out_of_line_offset(bytes_len);
11396            let mut _prev_end_offset: usize = 0;
11397            if 1 > max_ordinal {
11398                return Ok(());
11399            }
11400
11401            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11402            // are envelope_size bytes.
11403            let cur_offset: usize = (1 - 1) * envelope_size;
11404
11405            // Zero reserved fields.
11406            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11407
11408            // Safety:
11409            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11410            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11411            //   envelope_size bytes, there is always sufficient room.
11412            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
11413                self.peer_sta_address
11414                    .as_ref()
11415                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
11416                encoder,
11417                offset + cur_offset,
11418                depth,
11419            )?;
11420
11421            _prev_end_offset = cur_offset + envelope_size;
11422
11423            Ok(())
11424        }
11425    }
11426
11427    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11428        for WlanFullmacImplIfcSaeHandshakeIndRequest
11429    {
11430        #[inline(always)]
11431        fn new_empty() -> Self {
11432            Self::default()
11433        }
11434
11435        unsafe fn decode(
11436            &mut self,
11437            decoder: &mut fidl::encoding::Decoder<'_, D>,
11438            offset: usize,
11439            mut depth: fidl::encoding::Depth,
11440        ) -> fidl::Result<()> {
11441            decoder.debug_check_bounds::<Self>(offset);
11442            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11443                None => return Err(fidl::Error::NotNullable),
11444                Some(len) => len,
11445            };
11446            // Calling decoder.out_of_line_offset(0) is not allowed.
11447            if len == 0 {
11448                return Ok(());
11449            };
11450            depth.increment()?;
11451            let envelope_size = 8;
11452            let bytes_len = len * envelope_size;
11453            let offset = decoder.out_of_line_offset(bytes_len)?;
11454            // Decode the envelope for each type.
11455            let mut _next_ordinal_to_read = 0;
11456            let mut next_offset = offset;
11457            let end_offset = offset + bytes_len;
11458            _next_ordinal_to_read += 1;
11459            if next_offset >= end_offset {
11460                return Ok(());
11461            }
11462
11463            // Decode unknown envelopes for gaps in ordinals.
11464            while _next_ordinal_to_read < 1 {
11465                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11466                _next_ordinal_to_read += 1;
11467                next_offset += envelope_size;
11468            }
11469
11470            let next_out_of_line = decoder.next_out_of_line();
11471            let handles_before = decoder.remaining_handles();
11472            if let Some((inlined, num_bytes, num_handles)) =
11473                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11474            {
11475                let member_inline_size =
11476                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11477                        decoder.context,
11478                    );
11479                if inlined != (member_inline_size <= 4) {
11480                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11481                }
11482                let inner_offset;
11483                let mut inner_depth = depth.clone();
11484                if inlined {
11485                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11486                    inner_offset = next_offset;
11487                } else {
11488                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11489                    inner_depth.increment()?;
11490                }
11491                let val_ref = self
11492                    .peer_sta_address
11493                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11494                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
11495                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11496                {
11497                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11498                }
11499                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11500                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11501                }
11502            }
11503
11504            next_offset += envelope_size;
11505
11506            // Decode the remaining unknown envelopes.
11507            while next_offset < end_offset {
11508                _next_ordinal_to_read += 1;
11509                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11510                next_offset += envelope_size;
11511            }
11512
11513            Ok(())
11514        }
11515    }
11516
11517    impl WlanFullmacImplIfcStartConfRequest {
11518        #[inline(always)]
11519        fn max_ordinal_present(&self) -> u64 {
11520            if let Some(_) = self.result_code {
11521                return 1;
11522            }
11523            0
11524        }
11525    }
11526
11527    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStartConfRequest {
11528        type Borrowed<'a> = &'a Self;
11529        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11530            value
11531        }
11532    }
11533
11534    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStartConfRequest {
11535        type Owned = Self;
11536
11537        #[inline(always)]
11538        fn inline_align(_context: fidl::encoding::Context) -> usize {
11539            8
11540        }
11541
11542        #[inline(always)]
11543        fn inline_size(_context: fidl::encoding::Context) -> usize {
11544            16
11545        }
11546    }
11547
11548    unsafe impl<D: fidl::encoding::ResourceDialect>
11549        fidl::encoding::Encode<WlanFullmacImplIfcStartConfRequest, D>
11550        for &WlanFullmacImplIfcStartConfRequest
11551    {
11552        unsafe fn encode(
11553            self,
11554            encoder: &mut fidl::encoding::Encoder<'_, D>,
11555            offset: usize,
11556            mut depth: fidl::encoding::Depth,
11557        ) -> fidl::Result<()> {
11558            encoder.debug_check_bounds::<WlanFullmacImplIfcStartConfRequest>(offset);
11559            // Vector header
11560            let max_ordinal: u64 = self.max_ordinal_present();
11561            encoder.write_num(max_ordinal, offset);
11562            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11563            // Calling encoder.out_of_line_offset(0) is not allowed.
11564            if max_ordinal == 0 {
11565                return Ok(());
11566            }
11567            depth.increment()?;
11568            let envelope_size = 8;
11569            let bytes_len = max_ordinal as usize * envelope_size;
11570            #[allow(unused_variables)]
11571            let offset = encoder.out_of_line_offset(bytes_len);
11572            let mut _prev_end_offset: usize = 0;
11573            if 1 > max_ordinal {
11574                return Ok(());
11575            }
11576
11577            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11578            // are envelope_size bytes.
11579            let cur_offset: usize = (1 - 1) * envelope_size;
11580
11581            // Zero reserved fields.
11582            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11583
11584            // Safety:
11585            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11586            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11587            //   envelope_size bytes, there is always sufficient room.
11588            fidl::encoding::encode_in_envelope_optional::<StartResult, D>(
11589                self.result_code
11590                    .as_ref()
11591                    .map(<StartResult as fidl::encoding::ValueTypeMarker>::borrow),
11592                encoder,
11593                offset + cur_offset,
11594                depth,
11595            )?;
11596
11597            _prev_end_offset = cur_offset + envelope_size;
11598
11599            Ok(())
11600        }
11601    }
11602
11603    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11604        for WlanFullmacImplIfcStartConfRequest
11605    {
11606        #[inline(always)]
11607        fn new_empty() -> Self {
11608            Self::default()
11609        }
11610
11611        unsafe fn decode(
11612            &mut self,
11613            decoder: &mut fidl::encoding::Decoder<'_, D>,
11614            offset: usize,
11615            mut depth: fidl::encoding::Depth,
11616        ) -> fidl::Result<()> {
11617            decoder.debug_check_bounds::<Self>(offset);
11618            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11619                None => return Err(fidl::Error::NotNullable),
11620                Some(len) => len,
11621            };
11622            // Calling decoder.out_of_line_offset(0) is not allowed.
11623            if len == 0 {
11624                return Ok(());
11625            };
11626            depth.increment()?;
11627            let envelope_size = 8;
11628            let bytes_len = len * envelope_size;
11629            let offset = decoder.out_of_line_offset(bytes_len)?;
11630            // Decode the envelope for each type.
11631            let mut _next_ordinal_to_read = 0;
11632            let mut next_offset = offset;
11633            let end_offset = offset + bytes_len;
11634            _next_ordinal_to_read += 1;
11635            if next_offset >= end_offset {
11636                return Ok(());
11637            }
11638
11639            // Decode unknown envelopes for gaps in ordinals.
11640            while _next_ordinal_to_read < 1 {
11641                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11642                _next_ordinal_to_read += 1;
11643                next_offset += envelope_size;
11644            }
11645
11646            let next_out_of_line = decoder.next_out_of_line();
11647            let handles_before = decoder.remaining_handles();
11648            if let Some((inlined, num_bytes, num_handles)) =
11649                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11650            {
11651                let member_inline_size =
11652                    <StartResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11653                if inlined != (member_inline_size <= 4) {
11654                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11655                }
11656                let inner_offset;
11657                let mut inner_depth = depth.clone();
11658                if inlined {
11659                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11660                    inner_offset = next_offset;
11661                } else {
11662                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11663                    inner_depth.increment()?;
11664                }
11665                let val_ref =
11666                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StartResult, D));
11667                fidl::decode!(StartResult, D, val_ref, decoder, inner_offset, inner_depth)?;
11668                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11669                {
11670                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11671                }
11672                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11673                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11674                }
11675            }
11676
11677            next_offset += envelope_size;
11678
11679            // Decode the remaining unknown envelopes.
11680            while next_offset < end_offset {
11681                _next_ordinal_to_read += 1;
11682                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11683                next_offset += envelope_size;
11684            }
11685
11686            Ok(())
11687        }
11688    }
11689
11690    impl WlanFullmacImplIfcStopConfRequest {
11691        #[inline(always)]
11692        fn max_ordinal_present(&self) -> u64 {
11693            if let Some(_) = self.result_code {
11694                return 1;
11695            }
11696            0
11697        }
11698    }
11699
11700    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStopConfRequest {
11701        type Borrowed<'a> = &'a Self;
11702        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11703            value
11704        }
11705    }
11706
11707    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStopConfRequest {
11708        type Owned = Self;
11709
11710        #[inline(always)]
11711        fn inline_align(_context: fidl::encoding::Context) -> usize {
11712            8
11713        }
11714
11715        #[inline(always)]
11716        fn inline_size(_context: fidl::encoding::Context) -> usize {
11717            16
11718        }
11719    }
11720
11721    unsafe impl<D: fidl::encoding::ResourceDialect>
11722        fidl::encoding::Encode<WlanFullmacImplIfcStopConfRequest, D>
11723        for &WlanFullmacImplIfcStopConfRequest
11724    {
11725        unsafe fn encode(
11726            self,
11727            encoder: &mut fidl::encoding::Encoder<'_, D>,
11728            offset: usize,
11729            mut depth: fidl::encoding::Depth,
11730        ) -> fidl::Result<()> {
11731            encoder.debug_check_bounds::<WlanFullmacImplIfcStopConfRequest>(offset);
11732            // Vector header
11733            let max_ordinal: u64 = self.max_ordinal_present();
11734            encoder.write_num(max_ordinal, offset);
11735            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11736            // Calling encoder.out_of_line_offset(0) is not allowed.
11737            if max_ordinal == 0 {
11738                return Ok(());
11739            }
11740            depth.increment()?;
11741            let envelope_size = 8;
11742            let bytes_len = max_ordinal as usize * envelope_size;
11743            #[allow(unused_variables)]
11744            let offset = encoder.out_of_line_offset(bytes_len);
11745            let mut _prev_end_offset: usize = 0;
11746            if 1 > max_ordinal {
11747                return Ok(());
11748            }
11749
11750            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11751            // are envelope_size bytes.
11752            let cur_offset: usize = (1 - 1) * envelope_size;
11753
11754            // Zero reserved fields.
11755            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11756
11757            // Safety:
11758            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11759            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11760            //   envelope_size bytes, there is always sufficient room.
11761            fidl::encoding::encode_in_envelope_optional::<StopResult, D>(
11762                self.result_code
11763                    .as_ref()
11764                    .map(<StopResult as fidl::encoding::ValueTypeMarker>::borrow),
11765                encoder,
11766                offset + cur_offset,
11767                depth,
11768            )?;
11769
11770            _prev_end_offset = cur_offset + envelope_size;
11771
11772            Ok(())
11773        }
11774    }
11775
11776    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11777        for WlanFullmacImplIfcStopConfRequest
11778    {
11779        #[inline(always)]
11780        fn new_empty() -> Self {
11781            Self::default()
11782        }
11783
11784        unsafe fn decode(
11785            &mut self,
11786            decoder: &mut fidl::encoding::Decoder<'_, D>,
11787            offset: usize,
11788            mut depth: fidl::encoding::Depth,
11789        ) -> fidl::Result<()> {
11790            decoder.debug_check_bounds::<Self>(offset);
11791            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11792                None => return Err(fidl::Error::NotNullable),
11793                Some(len) => len,
11794            };
11795            // Calling decoder.out_of_line_offset(0) is not allowed.
11796            if len == 0 {
11797                return Ok(());
11798            };
11799            depth.increment()?;
11800            let envelope_size = 8;
11801            let bytes_len = len * envelope_size;
11802            let offset = decoder.out_of_line_offset(bytes_len)?;
11803            // Decode the envelope for each type.
11804            let mut _next_ordinal_to_read = 0;
11805            let mut next_offset = offset;
11806            let end_offset = offset + bytes_len;
11807            _next_ordinal_to_read += 1;
11808            if next_offset >= end_offset {
11809                return Ok(());
11810            }
11811
11812            // Decode unknown envelopes for gaps in ordinals.
11813            while _next_ordinal_to_read < 1 {
11814                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11815                _next_ordinal_to_read += 1;
11816                next_offset += envelope_size;
11817            }
11818
11819            let next_out_of_line = decoder.next_out_of_line();
11820            let handles_before = decoder.remaining_handles();
11821            if let Some((inlined, num_bytes, num_handles)) =
11822                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11823            {
11824                let member_inline_size =
11825                    <StopResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11826                if inlined != (member_inline_size <= 4) {
11827                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11828                }
11829                let inner_offset;
11830                let mut inner_depth = depth.clone();
11831                if inlined {
11832                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11833                    inner_offset = next_offset;
11834                } else {
11835                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11836                    inner_depth.increment()?;
11837                }
11838                let val_ref =
11839                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StopResult, D));
11840                fidl::decode!(StopResult, D, val_ref, decoder, inner_offset, inner_depth)?;
11841                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11842                {
11843                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11844                }
11845                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11846                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11847                }
11848            }
11849
11850            next_offset += envelope_size;
11851
11852            // Decode the remaining unknown envelopes.
11853            while next_offset < end_offset {
11854                _next_ordinal_to_read += 1;
11855                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11856                next_offset += envelope_size;
11857            }
11858
11859            Ok(())
11860        }
11861    }
11862
11863    impl WlanFullmacImplInstallApfPacketFilterRequest {
11864        #[inline(always)]
11865        fn max_ordinal_present(&self) -> u64 {
11866            if let Some(_) = self.program {
11867                return 1;
11868            }
11869            0
11870        }
11871    }
11872
11873    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplInstallApfPacketFilterRequest {
11874        type Borrowed<'a> = &'a Self;
11875        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11876            value
11877        }
11878    }
11879
11880    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplInstallApfPacketFilterRequest {
11881        type Owned = Self;
11882
11883        #[inline(always)]
11884        fn inline_align(_context: fidl::encoding::Context) -> usize {
11885            8
11886        }
11887
11888        #[inline(always)]
11889        fn inline_size(_context: fidl::encoding::Context) -> usize {
11890            16
11891        }
11892    }
11893
11894    unsafe impl<D: fidl::encoding::ResourceDialect>
11895        fidl::encoding::Encode<WlanFullmacImplInstallApfPacketFilterRequest, D>
11896        for &WlanFullmacImplInstallApfPacketFilterRequest
11897    {
11898        unsafe fn encode(
11899            self,
11900            encoder: &mut fidl::encoding::Encoder<'_, D>,
11901            offset: usize,
11902            mut depth: fidl::encoding::Depth,
11903        ) -> fidl::Result<()> {
11904            encoder.debug_check_bounds::<WlanFullmacImplInstallApfPacketFilterRequest>(offset);
11905            // Vector header
11906            let max_ordinal: u64 = self.max_ordinal_present();
11907            encoder.write_num(max_ordinal, offset);
11908            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11909            // Calling encoder.out_of_line_offset(0) is not allowed.
11910            if max_ordinal == 0 {
11911                return Ok(());
11912            }
11913            depth.increment()?;
11914            let envelope_size = 8;
11915            let bytes_len = max_ordinal as usize * envelope_size;
11916            #[allow(unused_variables)]
11917            let offset = encoder.out_of_line_offset(bytes_len);
11918            let mut _prev_end_offset: usize = 0;
11919            if 1 > max_ordinal {
11920                return Ok(());
11921            }
11922
11923            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11924            // are envelope_size bytes.
11925            let cur_offset: usize = (1 - 1) * envelope_size;
11926
11927            // Zero reserved fields.
11928            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11929
11930            // Safety:
11931            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11932            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11933            //   envelope_size bytes, there is always sufficient room.
11934            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
11935            self.program.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
11936            encoder, offset + cur_offset, depth
11937        )?;
11938
11939            _prev_end_offset = cur_offset + envelope_size;
11940
11941            Ok(())
11942        }
11943    }
11944
11945    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11946        for WlanFullmacImplInstallApfPacketFilterRequest
11947    {
11948        #[inline(always)]
11949        fn new_empty() -> Self {
11950            Self::default()
11951        }
11952
11953        unsafe fn decode(
11954            &mut self,
11955            decoder: &mut fidl::encoding::Decoder<'_, D>,
11956            offset: usize,
11957            mut depth: fidl::encoding::Depth,
11958        ) -> fidl::Result<()> {
11959            decoder.debug_check_bounds::<Self>(offset);
11960            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11961                None => return Err(fidl::Error::NotNullable),
11962                Some(len) => len,
11963            };
11964            // Calling decoder.out_of_line_offset(0) is not allowed.
11965            if len == 0 {
11966                return Ok(());
11967            };
11968            depth.increment()?;
11969            let envelope_size = 8;
11970            let bytes_len = len * envelope_size;
11971            let offset = decoder.out_of_line_offset(bytes_len)?;
11972            // Decode the envelope for each type.
11973            let mut _next_ordinal_to_read = 0;
11974            let mut next_offset = offset;
11975            let end_offset = offset + bytes_len;
11976            _next_ordinal_to_read += 1;
11977            if next_offset >= end_offset {
11978                return Ok(());
11979            }
11980
11981            // Decode unknown envelopes for gaps in ordinals.
11982            while _next_ordinal_to_read < 1 {
11983                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11984                _next_ordinal_to_read += 1;
11985                next_offset += envelope_size;
11986            }
11987
11988            let next_out_of_line = decoder.next_out_of_line();
11989            let handles_before = decoder.remaining_handles();
11990            if let Some((inlined, num_bytes, num_handles)) =
11991                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11992            {
11993                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11994                if inlined != (member_inline_size <= 4) {
11995                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11996                }
11997                let inner_offset;
11998                let mut inner_depth = depth.clone();
11999                if inlined {
12000                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12001                    inner_offset = next_offset;
12002                } else {
12003                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12004                    inner_depth.increment()?;
12005                }
12006                let val_ref = self.program.get_or_insert_with(|| {
12007                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
12008                });
12009                fidl::decode!(
12010                    fidl::encoding::UnboundedVector<u8>,
12011                    D,
12012                    val_ref,
12013                    decoder,
12014                    inner_offset,
12015                    inner_depth
12016                )?;
12017                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12018                {
12019                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12020                }
12021                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12022                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12023                }
12024            }
12025
12026            next_offset += envelope_size;
12027
12028            // Decode the remaining unknown envelopes.
12029            while next_offset < end_offset {
12030                _next_ordinal_to_read += 1;
12031                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12032                next_offset += envelope_size;
12033            }
12034
12035            Ok(())
12036        }
12037    }
12038
12039    impl WlanFullmacImplOnLinkStateChangedRequest {
12040        #[inline(always)]
12041        fn max_ordinal_present(&self) -> u64 {
12042            if let Some(_) = self.online {
12043                return 1;
12044            }
12045            0
12046        }
12047    }
12048
12049    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
12050        type Borrowed<'a> = &'a Self;
12051        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12052            value
12053        }
12054    }
12055
12056    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
12057        type Owned = Self;
12058
12059        #[inline(always)]
12060        fn inline_align(_context: fidl::encoding::Context) -> usize {
12061            8
12062        }
12063
12064        #[inline(always)]
12065        fn inline_size(_context: fidl::encoding::Context) -> usize {
12066            16
12067        }
12068    }
12069
12070    unsafe impl<D: fidl::encoding::ResourceDialect>
12071        fidl::encoding::Encode<WlanFullmacImplOnLinkStateChangedRequest, D>
12072        for &WlanFullmacImplOnLinkStateChangedRequest
12073    {
12074        unsafe fn encode(
12075            self,
12076            encoder: &mut fidl::encoding::Encoder<'_, D>,
12077            offset: usize,
12078            mut depth: fidl::encoding::Depth,
12079        ) -> fidl::Result<()> {
12080            encoder.debug_check_bounds::<WlanFullmacImplOnLinkStateChangedRequest>(offset);
12081            // Vector header
12082            let max_ordinal: u64 = self.max_ordinal_present();
12083            encoder.write_num(max_ordinal, offset);
12084            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12085            // Calling encoder.out_of_line_offset(0) is not allowed.
12086            if max_ordinal == 0 {
12087                return Ok(());
12088            }
12089            depth.increment()?;
12090            let envelope_size = 8;
12091            let bytes_len = max_ordinal as usize * envelope_size;
12092            #[allow(unused_variables)]
12093            let offset = encoder.out_of_line_offset(bytes_len);
12094            let mut _prev_end_offset: usize = 0;
12095            if 1 > max_ordinal {
12096                return Ok(());
12097            }
12098
12099            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12100            // are envelope_size bytes.
12101            let cur_offset: usize = (1 - 1) * envelope_size;
12102
12103            // Zero reserved fields.
12104            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12105
12106            // Safety:
12107            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12108            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12109            //   envelope_size bytes, there is always sufficient room.
12110            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12111                self.online.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12112                encoder,
12113                offset + cur_offset,
12114                depth,
12115            )?;
12116
12117            _prev_end_offset = cur_offset + envelope_size;
12118
12119            Ok(())
12120        }
12121    }
12122
12123    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12124        for WlanFullmacImplOnLinkStateChangedRequest
12125    {
12126        #[inline(always)]
12127        fn new_empty() -> Self {
12128            Self::default()
12129        }
12130
12131        unsafe fn decode(
12132            &mut self,
12133            decoder: &mut fidl::encoding::Decoder<'_, D>,
12134            offset: usize,
12135            mut depth: fidl::encoding::Depth,
12136        ) -> fidl::Result<()> {
12137            decoder.debug_check_bounds::<Self>(offset);
12138            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12139                None => return Err(fidl::Error::NotNullable),
12140                Some(len) => len,
12141            };
12142            // Calling decoder.out_of_line_offset(0) is not allowed.
12143            if len == 0 {
12144                return Ok(());
12145            };
12146            depth.increment()?;
12147            let envelope_size = 8;
12148            let bytes_len = len * envelope_size;
12149            let offset = decoder.out_of_line_offset(bytes_len)?;
12150            // Decode the envelope for each type.
12151            let mut _next_ordinal_to_read = 0;
12152            let mut next_offset = offset;
12153            let end_offset = offset + bytes_len;
12154            _next_ordinal_to_read += 1;
12155            if next_offset >= end_offset {
12156                return Ok(());
12157            }
12158
12159            // Decode unknown envelopes for gaps in ordinals.
12160            while _next_ordinal_to_read < 1 {
12161                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12162                _next_ordinal_to_read += 1;
12163                next_offset += envelope_size;
12164            }
12165
12166            let next_out_of_line = decoder.next_out_of_line();
12167            let handles_before = decoder.remaining_handles();
12168            if let Some((inlined, num_bytes, num_handles)) =
12169                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12170            {
12171                let member_inline_size =
12172                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12173                if inlined != (member_inline_size <= 4) {
12174                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12175                }
12176                let inner_offset;
12177                let mut inner_depth = depth.clone();
12178                if inlined {
12179                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12180                    inner_offset = next_offset;
12181                } else {
12182                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12183                    inner_depth.increment()?;
12184                }
12185                let val_ref = self.online.get_or_insert_with(|| fidl::new_empty!(bool, D));
12186                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12187                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12188                {
12189                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12190                }
12191                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12192                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12193                }
12194            }
12195
12196            next_offset += envelope_size;
12197
12198            // Decode the remaining unknown envelopes.
12199            while next_offset < end_offset {
12200                _next_ordinal_to_read += 1;
12201                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12202                next_offset += envelope_size;
12203            }
12204
12205            Ok(())
12206        }
12207    }
12208
12209    impl WlanFullmacImplReconnectRequest {
12210        #[inline(always)]
12211        fn max_ordinal_present(&self) -> u64 {
12212            if let Some(_) = self.peer_sta_address {
12213                return 1;
12214            }
12215            0
12216        }
12217    }
12218
12219    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplReconnectRequest {
12220        type Borrowed<'a> = &'a Self;
12221        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12222            value
12223        }
12224    }
12225
12226    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplReconnectRequest {
12227        type Owned = Self;
12228
12229        #[inline(always)]
12230        fn inline_align(_context: fidl::encoding::Context) -> usize {
12231            8
12232        }
12233
12234        #[inline(always)]
12235        fn inline_size(_context: fidl::encoding::Context) -> usize {
12236            16
12237        }
12238    }
12239
12240    unsafe impl<D: fidl::encoding::ResourceDialect>
12241        fidl::encoding::Encode<WlanFullmacImplReconnectRequest, D>
12242        for &WlanFullmacImplReconnectRequest
12243    {
12244        unsafe fn encode(
12245            self,
12246            encoder: &mut fidl::encoding::Encoder<'_, D>,
12247            offset: usize,
12248            mut depth: fidl::encoding::Depth,
12249        ) -> fidl::Result<()> {
12250            encoder.debug_check_bounds::<WlanFullmacImplReconnectRequest>(offset);
12251            // Vector header
12252            let max_ordinal: u64 = self.max_ordinal_present();
12253            encoder.write_num(max_ordinal, offset);
12254            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12255            // Calling encoder.out_of_line_offset(0) is not allowed.
12256            if max_ordinal == 0 {
12257                return Ok(());
12258            }
12259            depth.increment()?;
12260            let envelope_size = 8;
12261            let bytes_len = max_ordinal as usize * envelope_size;
12262            #[allow(unused_variables)]
12263            let offset = encoder.out_of_line_offset(bytes_len);
12264            let mut _prev_end_offset: usize = 0;
12265            if 1 > max_ordinal {
12266                return Ok(());
12267            }
12268
12269            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12270            // are envelope_size bytes.
12271            let cur_offset: usize = (1 - 1) * envelope_size;
12272
12273            // Zero reserved fields.
12274            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12275
12276            // Safety:
12277            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12278            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12279            //   envelope_size bytes, there is always sufficient room.
12280            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
12281                self.peer_sta_address
12282                    .as_ref()
12283                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
12284                encoder,
12285                offset + cur_offset,
12286                depth,
12287            )?;
12288
12289            _prev_end_offset = cur_offset + envelope_size;
12290
12291            Ok(())
12292        }
12293    }
12294
12295    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12296        for WlanFullmacImplReconnectRequest
12297    {
12298        #[inline(always)]
12299        fn new_empty() -> Self {
12300            Self::default()
12301        }
12302
12303        unsafe fn decode(
12304            &mut self,
12305            decoder: &mut fidl::encoding::Decoder<'_, D>,
12306            offset: usize,
12307            mut depth: fidl::encoding::Depth,
12308        ) -> fidl::Result<()> {
12309            decoder.debug_check_bounds::<Self>(offset);
12310            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12311                None => return Err(fidl::Error::NotNullable),
12312                Some(len) => len,
12313            };
12314            // Calling decoder.out_of_line_offset(0) is not allowed.
12315            if len == 0 {
12316                return Ok(());
12317            };
12318            depth.increment()?;
12319            let envelope_size = 8;
12320            let bytes_len = len * envelope_size;
12321            let offset = decoder.out_of_line_offset(bytes_len)?;
12322            // Decode the envelope for each type.
12323            let mut _next_ordinal_to_read = 0;
12324            let mut next_offset = offset;
12325            let end_offset = offset + bytes_len;
12326            _next_ordinal_to_read += 1;
12327            if next_offset >= end_offset {
12328                return Ok(());
12329            }
12330
12331            // Decode unknown envelopes for gaps in ordinals.
12332            while _next_ordinal_to_read < 1 {
12333                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12334                _next_ordinal_to_read += 1;
12335                next_offset += envelope_size;
12336            }
12337
12338            let next_out_of_line = decoder.next_out_of_line();
12339            let handles_before = decoder.remaining_handles();
12340            if let Some((inlined, num_bytes, num_handles)) =
12341                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12342            {
12343                let member_inline_size =
12344                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
12345                        decoder.context,
12346                    );
12347                if inlined != (member_inline_size <= 4) {
12348                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12349                }
12350                let inner_offset;
12351                let mut inner_depth = depth.clone();
12352                if inlined {
12353                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12354                    inner_offset = next_offset;
12355                } else {
12356                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12357                    inner_depth.increment()?;
12358                }
12359                let val_ref = self
12360                    .peer_sta_address
12361                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
12362                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
12363                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12364                {
12365                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12366                }
12367                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12368                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12369                }
12370            }
12371
12372            next_offset += envelope_size;
12373
12374            // Decode the remaining unknown envelopes.
12375            while next_offset < end_offset {
12376                _next_ordinal_to_read += 1;
12377                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12378                next_offset += envelope_size;
12379            }
12380
12381            Ok(())
12382        }
12383    }
12384
12385    impl WlanFullmacImplRoamRequest {
12386        #[inline(always)]
12387        fn max_ordinal_present(&self) -> u64 {
12388            if let Some(_) = self.selected_bss {
12389                return 1;
12390            }
12391            0
12392        }
12393    }
12394
12395    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplRoamRequest {
12396        type Borrowed<'a> = &'a Self;
12397        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12398            value
12399        }
12400    }
12401
12402    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplRoamRequest {
12403        type Owned = Self;
12404
12405        #[inline(always)]
12406        fn inline_align(_context: fidl::encoding::Context) -> usize {
12407            8
12408        }
12409
12410        #[inline(always)]
12411        fn inline_size(_context: fidl::encoding::Context) -> usize {
12412            16
12413        }
12414    }
12415
12416    unsafe impl<D: fidl::encoding::ResourceDialect>
12417        fidl::encoding::Encode<WlanFullmacImplRoamRequest, D> for &WlanFullmacImplRoamRequest
12418    {
12419        unsafe fn encode(
12420            self,
12421            encoder: &mut fidl::encoding::Encoder<'_, D>,
12422            offset: usize,
12423            mut depth: fidl::encoding::Depth,
12424        ) -> fidl::Result<()> {
12425            encoder.debug_check_bounds::<WlanFullmacImplRoamRequest>(offset);
12426            // Vector header
12427            let max_ordinal: u64 = self.max_ordinal_present();
12428            encoder.write_num(max_ordinal, offset);
12429            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12430            // Calling encoder.out_of_line_offset(0) is not allowed.
12431            if max_ordinal == 0 {
12432                return Ok(());
12433            }
12434            depth.increment()?;
12435            let envelope_size = 8;
12436            let bytes_len = max_ordinal as usize * envelope_size;
12437            #[allow(unused_variables)]
12438            let offset = encoder.out_of_line_offset(bytes_len);
12439            let mut _prev_end_offset: usize = 0;
12440            if 1 > max_ordinal {
12441                return Ok(());
12442            }
12443
12444            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12445            // are envelope_size bytes.
12446            let cur_offset: usize = (1 - 1) * envelope_size;
12447
12448            // Zero reserved fields.
12449            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12450
12451            // Safety:
12452            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12453            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12454            //   envelope_size bytes, there is always sufficient room.
12455            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::BssDescription, D>(
12456            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
12457            encoder, offset + cur_offset, depth
12458        )?;
12459
12460            _prev_end_offset = cur_offset + envelope_size;
12461
12462            Ok(())
12463        }
12464    }
12465
12466    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12467        for WlanFullmacImplRoamRequest
12468    {
12469        #[inline(always)]
12470        fn new_empty() -> Self {
12471            Self::default()
12472        }
12473
12474        unsafe fn decode(
12475            &mut self,
12476            decoder: &mut fidl::encoding::Decoder<'_, D>,
12477            offset: usize,
12478            mut depth: fidl::encoding::Depth,
12479        ) -> fidl::Result<()> {
12480            decoder.debug_check_bounds::<Self>(offset);
12481            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12482                None => return Err(fidl::Error::NotNullable),
12483                Some(len) => len,
12484            };
12485            // Calling decoder.out_of_line_offset(0) is not allowed.
12486            if len == 0 {
12487                return Ok(());
12488            };
12489            depth.increment()?;
12490            let envelope_size = 8;
12491            let bytes_len = len * envelope_size;
12492            let offset = decoder.out_of_line_offset(bytes_len)?;
12493            // Decode the envelope for each type.
12494            let mut _next_ordinal_to_read = 0;
12495            let mut next_offset = offset;
12496            let end_offset = offset + bytes_len;
12497            _next_ordinal_to_read += 1;
12498            if next_offset >= end_offset {
12499                return Ok(());
12500            }
12501
12502            // Decode unknown envelopes for gaps in ordinals.
12503            while _next_ordinal_to_read < 1 {
12504                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12505                _next_ordinal_to_read += 1;
12506                next_offset += envelope_size;
12507            }
12508
12509            let next_out_of_line = decoder.next_out_of_line();
12510            let handles_before = decoder.remaining_handles();
12511            if let Some((inlined, num_bytes, num_handles)) =
12512                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12513            {
12514                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12515                if inlined != (member_inline_size <= 4) {
12516                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12517                }
12518                let inner_offset;
12519                let mut inner_depth = depth.clone();
12520                if inlined {
12521                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12522                    inner_offset = next_offset;
12523                } else {
12524                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12525                    inner_depth.increment()?;
12526                }
12527                let val_ref = self.selected_bss.get_or_insert_with(|| {
12528                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::BssDescription, D)
12529                });
12530                fidl::decode!(
12531                    fidl_fuchsia_wlan_ieee80211__common::BssDescription,
12532                    D,
12533                    val_ref,
12534                    decoder,
12535                    inner_offset,
12536                    inner_depth
12537                )?;
12538                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12539                {
12540                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12541                }
12542                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12543                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12544                }
12545            }
12546
12547            next_offset += envelope_size;
12548
12549            // Decode the remaining unknown envelopes.
12550            while next_offset < end_offset {
12551                _next_ordinal_to_read += 1;
12552                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12553                next_offset += envelope_size;
12554            }
12555
12556            Ok(())
12557        }
12558    }
12559
12560    impl WlanFullmacImplSaeHandshakeRespRequest {
12561        #[inline(always)]
12562        fn max_ordinal_present(&self) -> u64 {
12563            if let Some(_) = self.status_code {
12564                return 2;
12565            }
12566            if let Some(_) = self.peer_sta_address {
12567                return 1;
12568            }
12569            0
12570        }
12571    }
12572
12573    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
12574        type Borrowed<'a> = &'a Self;
12575        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12576            value
12577        }
12578    }
12579
12580    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
12581        type Owned = Self;
12582
12583        #[inline(always)]
12584        fn inline_align(_context: fidl::encoding::Context) -> usize {
12585            8
12586        }
12587
12588        #[inline(always)]
12589        fn inline_size(_context: fidl::encoding::Context) -> usize {
12590            16
12591        }
12592    }
12593
12594    unsafe impl<D: fidl::encoding::ResourceDialect>
12595        fidl::encoding::Encode<WlanFullmacImplSaeHandshakeRespRequest, D>
12596        for &WlanFullmacImplSaeHandshakeRespRequest
12597    {
12598        unsafe fn encode(
12599            self,
12600            encoder: &mut fidl::encoding::Encoder<'_, D>,
12601            offset: usize,
12602            mut depth: fidl::encoding::Depth,
12603        ) -> fidl::Result<()> {
12604            encoder.debug_check_bounds::<WlanFullmacImplSaeHandshakeRespRequest>(offset);
12605            // Vector header
12606            let max_ordinal: u64 = self.max_ordinal_present();
12607            encoder.write_num(max_ordinal, offset);
12608            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12609            // Calling encoder.out_of_line_offset(0) is not allowed.
12610            if max_ordinal == 0 {
12611                return Ok(());
12612            }
12613            depth.increment()?;
12614            let envelope_size = 8;
12615            let bytes_len = max_ordinal as usize * envelope_size;
12616            #[allow(unused_variables)]
12617            let offset = encoder.out_of_line_offset(bytes_len);
12618            let mut _prev_end_offset: usize = 0;
12619            if 1 > max_ordinal {
12620                return Ok(());
12621            }
12622
12623            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12624            // are envelope_size bytes.
12625            let cur_offset: usize = (1 - 1) * envelope_size;
12626
12627            // Zero reserved fields.
12628            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12629
12630            // Safety:
12631            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12632            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12633            //   envelope_size bytes, there is always sufficient room.
12634            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
12635                self.peer_sta_address
12636                    .as_ref()
12637                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
12638                encoder,
12639                offset + cur_offset,
12640                depth,
12641            )?;
12642
12643            _prev_end_offset = cur_offset + envelope_size;
12644            if 2 > max_ordinal {
12645                return Ok(());
12646            }
12647
12648            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12649            // are envelope_size bytes.
12650            let cur_offset: usize = (2 - 1) * envelope_size;
12651
12652            // Zero reserved fields.
12653            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12654
12655            // Safety:
12656            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12657            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12658            //   envelope_size bytes, there is always sufficient room.
12659            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
12660            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
12661            encoder, offset + cur_offset, depth
12662        )?;
12663
12664            _prev_end_offset = cur_offset + envelope_size;
12665
12666            Ok(())
12667        }
12668    }
12669
12670    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12671        for WlanFullmacImplSaeHandshakeRespRequest
12672    {
12673        #[inline(always)]
12674        fn new_empty() -> Self {
12675            Self::default()
12676        }
12677
12678        unsafe fn decode(
12679            &mut self,
12680            decoder: &mut fidl::encoding::Decoder<'_, D>,
12681            offset: usize,
12682            mut depth: fidl::encoding::Depth,
12683        ) -> fidl::Result<()> {
12684            decoder.debug_check_bounds::<Self>(offset);
12685            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12686                None => return Err(fidl::Error::NotNullable),
12687                Some(len) => len,
12688            };
12689            // Calling decoder.out_of_line_offset(0) is not allowed.
12690            if len == 0 {
12691                return Ok(());
12692            };
12693            depth.increment()?;
12694            let envelope_size = 8;
12695            let bytes_len = len * envelope_size;
12696            let offset = decoder.out_of_line_offset(bytes_len)?;
12697            // Decode the envelope for each type.
12698            let mut _next_ordinal_to_read = 0;
12699            let mut next_offset = offset;
12700            let end_offset = offset + bytes_len;
12701            _next_ordinal_to_read += 1;
12702            if next_offset >= end_offset {
12703                return Ok(());
12704            }
12705
12706            // Decode unknown envelopes for gaps in ordinals.
12707            while _next_ordinal_to_read < 1 {
12708                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12709                _next_ordinal_to_read += 1;
12710                next_offset += envelope_size;
12711            }
12712
12713            let next_out_of_line = decoder.next_out_of_line();
12714            let handles_before = decoder.remaining_handles();
12715            if let Some((inlined, num_bytes, num_handles)) =
12716                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12717            {
12718                let member_inline_size =
12719                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
12720                        decoder.context,
12721                    );
12722                if inlined != (member_inline_size <= 4) {
12723                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12724                }
12725                let inner_offset;
12726                let mut inner_depth = depth.clone();
12727                if inlined {
12728                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12729                    inner_offset = next_offset;
12730                } else {
12731                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12732                    inner_depth.increment()?;
12733                }
12734                let val_ref = self
12735                    .peer_sta_address
12736                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
12737                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
12738                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12739                {
12740                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12741                }
12742                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12743                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12744                }
12745            }
12746
12747            next_offset += envelope_size;
12748            _next_ordinal_to_read += 1;
12749            if next_offset >= end_offset {
12750                return Ok(());
12751            }
12752
12753            // Decode unknown envelopes for gaps in ordinals.
12754            while _next_ordinal_to_read < 2 {
12755                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12756                _next_ordinal_to_read += 1;
12757                next_offset += envelope_size;
12758            }
12759
12760            let next_out_of_line = decoder.next_out_of_line();
12761            let handles_before = decoder.remaining_handles();
12762            if let Some((inlined, num_bytes, num_handles)) =
12763                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12764            {
12765                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12766                if inlined != (member_inline_size <= 4) {
12767                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12768                }
12769                let inner_offset;
12770                let mut inner_depth = depth.clone();
12771                if inlined {
12772                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12773                    inner_offset = next_offset;
12774                } else {
12775                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12776                    inner_depth.increment()?;
12777                }
12778                let val_ref = self.status_code.get_or_insert_with(|| {
12779                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
12780                });
12781                fidl::decode!(
12782                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
12783                    D,
12784                    val_ref,
12785                    decoder,
12786                    inner_offset,
12787                    inner_depth
12788                )?;
12789                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12790                {
12791                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12792                }
12793                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12794                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12795                }
12796            }
12797
12798            next_offset += envelope_size;
12799
12800            // Decode the remaining unknown envelopes.
12801            while next_offset < end_offset {
12802                _next_ordinal_to_read += 1;
12803                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12804                next_offset += envelope_size;
12805            }
12806
12807            Ok(())
12808        }
12809    }
12810
12811    impl WlanFullmacImplSetApfPacketFilterEnabledRequest {
12812        #[inline(always)]
12813        fn max_ordinal_present(&self) -> u64 {
12814            if let Some(_) = self.enabled {
12815                return 1;
12816            }
12817            0
12818        }
12819    }
12820
12821    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetApfPacketFilterEnabledRequest {
12822        type Borrowed<'a> = &'a Self;
12823        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12824            value
12825        }
12826    }
12827
12828    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetApfPacketFilterEnabledRequest {
12829        type Owned = Self;
12830
12831        #[inline(always)]
12832        fn inline_align(_context: fidl::encoding::Context) -> usize {
12833            8
12834        }
12835
12836        #[inline(always)]
12837        fn inline_size(_context: fidl::encoding::Context) -> usize {
12838            16
12839        }
12840    }
12841
12842    unsafe impl<D: fidl::encoding::ResourceDialect>
12843        fidl::encoding::Encode<WlanFullmacImplSetApfPacketFilterEnabledRequest, D>
12844        for &WlanFullmacImplSetApfPacketFilterEnabledRequest
12845    {
12846        unsafe fn encode(
12847            self,
12848            encoder: &mut fidl::encoding::Encoder<'_, D>,
12849            offset: usize,
12850            mut depth: fidl::encoding::Depth,
12851        ) -> fidl::Result<()> {
12852            encoder.debug_check_bounds::<WlanFullmacImplSetApfPacketFilterEnabledRequest>(offset);
12853            // Vector header
12854            let max_ordinal: u64 = self.max_ordinal_present();
12855            encoder.write_num(max_ordinal, offset);
12856            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12857            // Calling encoder.out_of_line_offset(0) is not allowed.
12858            if max_ordinal == 0 {
12859                return Ok(());
12860            }
12861            depth.increment()?;
12862            let envelope_size = 8;
12863            let bytes_len = max_ordinal as usize * envelope_size;
12864            #[allow(unused_variables)]
12865            let offset = encoder.out_of_line_offset(bytes_len);
12866            let mut _prev_end_offset: usize = 0;
12867            if 1 > max_ordinal {
12868                return Ok(());
12869            }
12870
12871            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12872            // are envelope_size bytes.
12873            let cur_offset: usize = (1 - 1) * envelope_size;
12874
12875            // Zero reserved fields.
12876            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12877
12878            // Safety:
12879            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12880            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12881            //   envelope_size bytes, there is always sufficient room.
12882            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12883                self.enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12884                encoder,
12885                offset + cur_offset,
12886                depth,
12887            )?;
12888
12889            _prev_end_offset = cur_offset + envelope_size;
12890
12891            Ok(())
12892        }
12893    }
12894
12895    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12896        for WlanFullmacImplSetApfPacketFilterEnabledRequest
12897    {
12898        #[inline(always)]
12899        fn new_empty() -> Self {
12900            Self::default()
12901        }
12902
12903        unsafe fn decode(
12904            &mut self,
12905            decoder: &mut fidl::encoding::Decoder<'_, D>,
12906            offset: usize,
12907            mut depth: fidl::encoding::Depth,
12908        ) -> fidl::Result<()> {
12909            decoder.debug_check_bounds::<Self>(offset);
12910            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12911                None => return Err(fidl::Error::NotNullable),
12912                Some(len) => len,
12913            };
12914            // Calling decoder.out_of_line_offset(0) is not allowed.
12915            if len == 0 {
12916                return Ok(());
12917            };
12918            depth.increment()?;
12919            let envelope_size = 8;
12920            let bytes_len = len * envelope_size;
12921            let offset = decoder.out_of_line_offset(bytes_len)?;
12922            // Decode the envelope for each type.
12923            let mut _next_ordinal_to_read = 0;
12924            let mut next_offset = offset;
12925            let end_offset = offset + bytes_len;
12926            _next_ordinal_to_read += 1;
12927            if next_offset >= end_offset {
12928                return Ok(());
12929            }
12930
12931            // Decode unknown envelopes for gaps in ordinals.
12932            while _next_ordinal_to_read < 1 {
12933                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12934                _next_ordinal_to_read += 1;
12935                next_offset += envelope_size;
12936            }
12937
12938            let next_out_of_line = decoder.next_out_of_line();
12939            let handles_before = decoder.remaining_handles();
12940            if let Some((inlined, num_bytes, num_handles)) =
12941                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12942            {
12943                let member_inline_size =
12944                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12945                if inlined != (member_inline_size <= 4) {
12946                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12947                }
12948                let inner_offset;
12949                let mut inner_depth = depth.clone();
12950                if inlined {
12951                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12952                    inner_offset = next_offset;
12953                } else {
12954                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12955                    inner_depth.increment()?;
12956                }
12957                let val_ref = self.enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
12958                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12959                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12960                {
12961                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12962                }
12963                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12964                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12965                }
12966            }
12967
12968            next_offset += envelope_size;
12969
12970            // Decode the remaining unknown envelopes.
12971            while next_offset < end_offset {
12972                _next_ordinal_to_read += 1;
12973                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12974                next_offset += envelope_size;
12975            }
12976
12977            Ok(())
12978        }
12979    }
12980
12981    impl WlanFullmacImplSetKeysRequest {
12982        #[inline(always)]
12983        fn max_ordinal_present(&self) -> u64 {
12984            if let Some(_) = self.key_descriptors {
12985                return 2;
12986            }
12987            if let Some(_) = self.keylist {
12988                return 1;
12989            }
12990            0
12991        }
12992    }
12993
12994    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysRequest {
12995        type Borrowed<'a> = &'a Self;
12996        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12997            value
12998        }
12999    }
13000
13001    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysRequest {
13002        type Owned = Self;
13003
13004        #[inline(always)]
13005        fn inline_align(_context: fidl::encoding::Context) -> usize {
13006            8
13007        }
13008
13009        #[inline(always)]
13010        fn inline_size(_context: fidl::encoding::Context) -> usize {
13011            16
13012        }
13013    }
13014
13015    unsafe impl<D: fidl::encoding::ResourceDialect>
13016        fidl::encoding::Encode<WlanFullmacImplSetKeysRequest, D>
13017        for &WlanFullmacImplSetKeysRequest
13018    {
13019        unsafe fn encode(
13020            self,
13021            encoder: &mut fidl::encoding::Encoder<'_, D>,
13022            offset: usize,
13023            mut depth: fidl::encoding::Depth,
13024        ) -> fidl::Result<()> {
13025            encoder.debug_check_bounds::<WlanFullmacImplSetKeysRequest>(offset);
13026            // Vector header
13027            let max_ordinal: u64 = self.max_ordinal_present();
13028            encoder.write_num(max_ordinal, offset);
13029            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13030            // Calling encoder.out_of_line_offset(0) is not allowed.
13031            if max_ordinal == 0 {
13032                return Ok(());
13033            }
13034            depth.increment()?;
13035            let envelope_size = 8;
13036            let bytes_len = max_ordinal as usize * envelope_size;
13037            #[allow(unused_variables)]
13038            let offset = encoder.out_of_line_offset(bytes_len);
13039            let mut _prev_end_offset: usize = 0;
13040            if 1 > max_ordinal {
13041                return Ok(());
13042            }
13043
13044            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13045            // are envelope_size bytes.
13046            let cur_offset: usize = (1 - 1) * envelope_size;
13047
13048            // Zero reserved fields.
13049            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13050
13051            // Safety:
13052            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13053            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13054            //   envelope_size bytes, there is always sufficient room.
13055            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_driver__common::WlanKeyConfig, 4>, D>(
13056            self.keylist.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_driver__common::WlanKeyConfig, 4> as fidl::encoding::ValueTypeMarker>::borrow),
13057            encoder, offset + cur_offset, depth
13058        )?;
13059
13060            _prev_end_offset = cur_offset + envelope_size;
13061            if 2 > max_ordinal {
13062                return Ok(());
13063            }
13064
13065            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13066            // are envelope_size bytes.
13067            let cur_offset: usize = (2 - 1) * envelope_size;
13068
13069            // Zero reserved fields.
13070            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13071
13072            // Safety:
13073            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13074            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13075            //   envelope_size bytes, there is always sufficient room.
13076            fidl::encoding::encode_in_envelope_optional::<
13077                fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, 4>,
13078                D,
13079            >(
13080                self.key_descriptors.as_ref().map(
13081                    <fidl::encoding::Vector<
13082                        fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor,
13083                        4,
13084                    > as fidl::encoding::ValueTypeMarker>::borrow,
13085                ),
13086                encoder,
13087                offset + cur_offset,
13088                depth,
13089            )?;
13090
13091            _prev_end_offset = cur_offset + envelope_size;
13092
13093            Ok(())
13094        }
13095    }
13096
13097    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13098        for WlanFullmacImplSetKeysRequest
13099    {
13100        #[inline(always)]
13101        fn new_empty() -> Self {
13102            Self::default()
13103        }
13104
13105        unsafe fn decode(
13106            &mut self,
13107            decoder: &mut fidl::encoding::Decoder<'_, D>,
13108            offset: usize,
13109            mut depth: fidl::encoding::Depth,
13110        ) -> fidl::Result<()> {
13111            decoder.debug_check_bounds::<Self>(offset);
13112            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13113                None => return Err(fidl::Error::NotNullable),
13114                Some(len) => len,
13115            };
13116            // Calling decoder.out_of_line_offset(0) is not allowed.
13117            if len == 0 {
13118                return Ok(());
13119            };
13120            depth.increment()?;
13121            let envelope_size = 8;
13122            let bytes_len = len * envelope_size;
13123            let offset = decoder.out_of_line_offset(bytes_len)?;
13124            // Decode the envelope for each type.
13125            let mut _next_ordinal_to_read = 0;
13126            let mut next_offset = offset;
13127            let end_offset = offset + bytes_len;
13128            _next_ordinal_to_read += 1;
13129            if next_offset >= end_offset {
13130                return Ok(());
13131            }
13132
13133            // Decode unknown envelopes for gaps in ordinals.
13134            while _next_ordinal_to_read < 1 {
13135                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13136                _next_ordinal_to_read += 1;
13137                next_offset += envelope_size;
13138            }
13139
13140            let next_out_of_line = decoder.next_out_of_line();
13141            let handles_before = decoder.remaining_handles();
13142            if let Some((inlined, num_bytes, num_handles)) =
13143                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13144            {
13145                let member_inline_size = <fidl::encoding::Vector<
13146                    fidl_fuchsia_wlan_driver__common::WlanKeyConfig,
13147                    4,
13148                > as fidl::encoding::TypeMarker>::inline_size(
13149                    decoder.context
13150                );
13151                if inlined != (member_inline_size <= 4) {
13152                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13153                }
13154                let inner_offset;
13155                let mut inner_depth = depth.clone();
13156                if inlined {
13157                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13158                    inner_offset = next_offset;
13159                } else {
13160                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13161                    inner_depth.increment()?;
13162                }
13163                let val_ref =
13164                self.keylist.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_driver__common::WlanKeyConfig, 4>, D));
13165                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_driver__common::WlanKeyConfig, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
13166                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13167                {
13168                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13169                }
13170                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13171                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13172                }
13173            }
13174
13175            next_offset += envelope_size;
13176            _next_ordinal_to_read += 1;
13177            if next_offset >= end_offset {
13178                return Ok(());
13179            }
13180
13181            // Decode unknown envelopes for gaps in ordinals.
13182            while _next_ordinal_to_read < 2 {
13183                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13184                _next_ordinal_to_read += 1;
13185                next_offset += envelope_size;
13186            }
13187
13188            let next_out_of_line = decoder.next_out_of_line();
13189            let handles_before = decoder.remaining_handles();
13190            if let Some((inlined, num_bytes, num_handles)) =
13191                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13192            {
13193                let member_inline_size = <fidl::encoding::Vector<
13194                    fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor,
13195                    4,
13196                > as fidl::encoding::TypeMarker>::inline_size(
13197                    decoder.context
13198                );
13199                if inlined != (member_inline_size <= 4) {
13200                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13201                }
13202                let inner_offset;
13203                let mut inner_depth = depth.clone();
13204                if inlined {
13205                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13206                    inner_offset = next_offset;
13207                } else {
13208                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13209                    inner_depth.increment()?;
13210                }
13211                let val_ref =
13212                self.key_descriptors.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, 4>, D));
13213                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
13214                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13215                {
13216                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13217                }
13218                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13219                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13220                }
13221            }
13222
13223            next_offset += envelope_size;
13224
13225            // Decode the remaining unknown envelopes.
13226            while next_offset < end_offset {
13227                _next_ordinal_to_read += 1;
13228                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13229                next_offset += envelope_size;
13230            }
13231
13232            Ok(())
13233        }
13234    }
13235
13236    impl WlanFullmacImplStartBssRequest {
13237        #[inline(always)]
13238        fn max_ordinal_present(&self) -> u64 {
13239            if let Some(_) = self.vendor_ie {
13240                return 7;
13241            }
13242            if let Some(_) = self.rsne {
13243                return 6;
13244            }
13245            if let Some(_) = self.channel {
13246                return 5;
13247            }
13248            if let Some(_) = self.dtim_period {
13249                return 4;
13250            }
13251            if let Some(_) = self.beacon_period {
13252                return 3;
13253            }
13254            if let Some(_) = self.bss_type {
13255                return 2;
13256            }
13257            if let Some(_) = self.ssid {
13258                return 1;
13259            }
13260            0
13261        }
13262    }
13263
13264    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartBssRequest {
13265        type Borrowed<'a> = &'a Self;
13266        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13267            value
13268        }
13269    }
13270
13271    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartBssRequest {
13272        type Owned = Self;
13273
13274        #[inline(always)]
13275        fn inline_align(_context: fidl::encoding::Context) -> usize {
13276            8
13277        }
13278
13279        #[inline(always)]
13280        fn inline_size(_context: fidl::encoding::Context) -> usize {
13281            16
13282        }
13283    }
13284
13285    unsafe impl<D: fidl::encoding::ResourceDialect>
13286        fidl::encoding::Encode<WlanFullmacImplStartBssRequest, D>
13287        for &WlanFullmacImplStartBssRequest
13288    {
13289        unsafe fn encode(
13290            self,
13291            encoder: &mut fidl::encoding::Encoder<'_, D>,
13292            offset: usize,
13293            mut depth: fidl::encoding::Depth,
13294        ) -> fidl::Result<()> {
13295            encoder.debug_check_bounds::<WlanFullmacImplStartBssRequest>(offset);
13296            // Vector header
13297            let max_ordinal: u64 = self.max_ordinal_present();
13298            encoder.write_num(max_ordinal, offset);
13299            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13300            // Calling encoder.out_of_line_offset(0) is not allowed.
13301            if max_ordinal == 0 {
13302                return Ok(());
13303            }
13304            depth.increment()?;
13305            let envelope_size = 8;
13306            let bytes_len = max_ordinal as usize * envelope_size;
13307            #[allow(unused_variables)]
13308            let offset = encoder.out_of_line_offset(bytes_len);
13309            let mut _prev_end_offset: usize = 0;
13310            if 1 > max_ordinal {
13311                return Ok(());
13312            }
13313
13314            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13315            // are envelope_size bytes.
13316            let cur_offset: usize = (1 - 1) * envelope_size;
13317
13318            // Zero reserved fields.
13319            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13320
13321            // Safety:
13322            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13323            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13324            //   envelope_size bytes, there is always sufficient room.
13325            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
13326                self.ssid.as_ref().map(
13327                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
13328                ),
13329                encoder,
13330                offset + cur_offset,
13331                depth,
13332            )?;
13333
13334            _prev_end_offset = cur_offset + envelope_size;
13335            if 2 > max_ordinal {
13336                return Ok(());
13337            }
13338
13339            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13340            // are envelope_size bytes.
13341            let cur_offset: usize = (2 - 1) * envelope_size;
13342
13343            // Zero reserved fields.
13344            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13345
13346            // Safety:
13347            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13348            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13349            //   envelope_size bytes, there is always sufficient room.
13350            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::BssType, D>(
13351            self.bss_type.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::BssType as fidl::encoding::ValueTypeMarker>::borrow),
13352            encoder, offset + cur_offset, depth
13353        )?;
13354
13355            _prev_end_offset = cur_offset + envelope_size;
13356            if 3 > max_ordinal {
13357                return Ok(());
13358            }
13359
13360            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13361            // are envelope_size bytes.
13362            let cur_offset: usize = (3 - 1) * envelope_size;
13363
13364            // Zero reserved fields.
13365            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13366
13367            // Safety:
13368            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13369            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13370            //   envelope_size bytes, there is always sufficient room.
13371            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13372                self.beacon_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13373                encoder,
13374                offset + cur_offset,
13375                depth,
13376            )?;
13377
13378            _prev_end_offset = cur_offset + envelope_size;
13379            if 4 > max_ordinal {
13380                return Ok(());
13381            }
13382
13383            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13384            // are envelope_size bytes.
13385            let cur_offset: usize = (4 - 1) * envelope_size;
13386
13387            // Zero reserved fields.
13388            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13389
13390            // Safety:
13391            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13392            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13393            //   envelope_size bytes, there is always sufficient room.
13394            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13395                self.dtim_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13396                encoder,
13397                offset + cur_offset,
13398                depth,
13399            )?;
13400
13401            _prev_end_offset = cur_offset + envelope_size;
13402            if 5 > max_ordinal {
13403                return Ok(());
13404            }
13405
13406            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13407            // are envelope_size bytes.
13408            let cur_offset: usize = (5 - 1) * envelope_size;
13409
13410            // Zero reserved fields.
13411            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13412
13413            // Safety:
13414            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13415            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13416            //   envelope_size bytes, there is always sufficient room.
13417            fidl::encoding::encode_in_envelope_optional::<u8, D>(
13418                self.channel.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13419                encoder,
13420                offset + cur_offset,
13421                depth,
13422            )?;
13423
13424            _prev_end_offset = cur_offset + envelope_size;
13425            if 6 > max_ordinal {
13426                return Ok(());
13427            }
13428
13429            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13430            // are envelope_size bytes.
13431            let cur_offset: usize = (6 - 1) * envelope_size;
13432
13433            // Zero reserved fields.
13434            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13435
13436            // Safety:
13437            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13438            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13439            //   envelope_size bytes, there is always sufficient room.
13440            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
13441                self.rsne.as_ref().map(
13442                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
13443                ),
13444                encoder,
13445                offset + cur_offset,
13446                depth,
13447            )?;
13448
13449            _prev_end_offset = cur_offset + envelope_size;
13450            if 7 > max_ordinal {
13451                return Ok(());
13452            }
13453
13454            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13455            // are envelope_size bytes.
13456            let cur_offset: usize = (7 - 1) * envelope_size;
13457
13458            // Zero reserved fields.
13459            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13460
13461            // Safety:
13462            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13463            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13464            //   envelope_size bytes, there is always sufficient room.
13465            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
13466                self.vendor_ie.as_ref().map(
13467                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
13468                ),
13469                encoder,
13470                offset + cur_offset,
13471                depth,
13472            )?;
13473
13474            _prev_end_offset = cur_offset + envelope_size;
13475
13476            Ok(())
13477        }
13478    }
13479
13480    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13481        for WlanFullmacImplStartBssRequest
13482    {
13483        #[inline(always)]
13484        fn new_empty() -> Self {
13485            Self::default()
13486        }
13487
13488        unsafe fn decode(
13489            &mut self,
13490            decoder: &mut fidl::encoding::Decoder<'_, D>,
13491            offset: usize,
13492            mut depth: fidl::encoding::Depth,
13493        ) -> fidl::Result<()> {
13494            decoder.debug_check_bounds::<Self>(offset);
13495            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13496                None => return Err(fidl::Error::NotNullable),
13497                Some(len) => len,
13498            };
13499            // Calling decoder.out_of_line_offset(0) is not allowed.
13500            if len == 0 {
13501                return Ok(());
13502            };
13503            depth.increment()?;
13504            let envelope_size = 8;
13505            let bytes_len = len * envelope_size;
13506            let offset = decoder.out_of_line_offset(bytes_len)?;
13507            // Decode the envelope for each type.
13508            let mut _next_ordinal_to_read = 0;
13509            let mut next_offset = offset;
13510            let end_offset = offset + bytes_len;
13511            _next_ordinal_to_read += 1;
13512            if next_offset >= end_offset {
13513                return Ok(());
13514            }
13515
13516            // Decode unknown envelopes for gaps in ordinals.
13517            while _next_ordinal_to_read < 1 {
13518                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13519                _next_ordinal_to_read += 1;
13520                next_offset += envelope_size;
13521            }
13522
13523            let next_out_of_line = decoder.next_out_of_line();
13524            let handles_before = decoder.remaining_handles();
13525            if let Some((inlined, num_bytes, num_handles)) =
13526                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13527            {
13528                let member_inline_size =
13529                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
13530                        decoder.context,
13531                    );
13532                if inlined != (member_inline_size <= 4) {
13533                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13534                }
13535                let inner_offset;
13536                let mut inner_depth = depth.clone();
13537                if inlined {
13538                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13539                    inner_offset = next_offset;
13540                } else {
13541                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13542                    inner_depth.increment()?;
13543                }
13544                let val_ref = self
13545                    .ssid
13546                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
13547                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
13548                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13549                {
13550                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13551                }
13552                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13553                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13554                }
13555            }
13556
13557            next_offset += envelope_size;
13558            _next_ordinal_to_read += 1;
13559            if next_offset >= end_offset {
13560                return Ok(());
13561            }
13562
13563            // Decode unknown envelopes for gaps in ordinals.
13564            while _next_ordinal_to_read < 2 {
13565                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13566                _next_ordinal_to_read += 1;
13567                next_offset += envelope_size;
13568            }
13569
13570            let next_out_of_line = decoder.next_out_of_line();
13571            let handles_before = decoder.remaining_handles();
13572            if let Some((inlined, num_bytes, num_handles)) =
13573                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13574            {
13575                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::BssType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13576                if inlined != (member_inline_size <= 4) {
13577                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13578                }
13579                let inner_offset;
13580                let mut inner_depth = depth.clone();
13581                if inlined {
13582                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13583                    inner_offset = next_offset;
13584                } else {
13585                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13586                    inner_depth.increment()?;
13587                }
13588                let val_ref = self.bss_type.get_or_insert_with(|| {
13589                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::BssType, D)
13590                });
13591                fidl::decode!(
13592                    fidl_fuchsia_wlan_ieee80211__common::BssType,
13593                    D,
13594                    val_ref,
13595                    decoder,
13596                    inner_offset,
13597                    inner_depth
13598                )?;
13599                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13600                {
13601                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13602                }
13603                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13604                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13605                }
13606            }
13607
13608            next_offset += envelope_size;
13609            _next_ordinal_to_read += 1;
13610            if next_offset >= end_offset {
13611                return Ok(());
13612            }
13613
13614            // Decode unknown envelopes for gaps in ordinals.
13615            while _next_ordinal_to_read < 3 {
13616                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13617                _next_ordinal_to_read += 1;
13618                next_offset += envelope_size;
13619            }
13620
13621            let next_out_of_line = decoder.next_out_of_line();
13622            let handles_before = decoder.remaining_handles();
13623            if let Some((inlined, num_bytes, num_handles)) =
13624                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13625            {
13626                let member_inline_size =
13627                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13628                if inlined != (member_inline_size <= 4) {
13629                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13630                }
13631                let inner_offset;
13632                let mut inner_depth = depth.clone();
13633                if inlined {
13634                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13635                    inner_offset = next_offset;
13636                } else {
13637                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13638                    inner_depth.increment()?;
13639                }
13640                let val_ref = self.beacon_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
13641                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13642                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13643                {
13644                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13645                }
13646                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13647                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13648                }
13649            }
13650
13651            next_offset += envelope_size;
13652            _next_ordinal_to_read += 1;
13653            if next_offset >= end_offset {
13654                return Ok(());
13655            }
13656
13657            // Decode unknown envelopes for gaps in ordinals.
13658            while _next_ordinal_to_read < 4 {
13659                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13660                _next_ordinal_to_read += 1;
13661                next_offset += envelope_size;
13662            }
13663
13664            let next_out_of_line = decoder.next_out_of_line();
13665            let handles_before = decoder.remaining_handles();
13666            if let Some((inlined, num_bytes, num_handles)) =
13667                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13668            {
13669                let member_inline_size =
13670                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13671                if inlined != (member_inline_size <= 4) {
13672                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13673                }
13674                let inner_offset;
13675                let mut inner_depth = depth.clone();
13676                if inlined {
13677                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13678                    inner_offset = next_offset;
13679                } else {
13680                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13681                    inner_depth.increment()?;
13682                }
13683                let val_ref = self.dtim_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
13684                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13685                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13686                {
13687                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13688                }
13689                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13690                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13691                }
13692            }
13693
13694            next_offset += envelope_size;
13695            _next_ordinal_to_read += 1;
13696            if next_offset >= end_offset {
13697                return Ok(());
13698            }
13699
13700            // Decode unknown envelopes for gaps in ordinals.
13701            while _next_ordinal_to_read < 5 {
13702                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13703                _next_ordinal_to_read += 1;
13704                next_offset += envelope_size;
13705            }
13706
13707            let next_out_of_line = decoder.next_out_of_line();
13708            let handles_before = decoder.remaining_handles();
13709            if let Some((inlined, num_bytes, num_handles)) =
13710                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13711            {
13712                let member_inline_size =
13713                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13714                if inlined != (member_inline_size <= 4) {
13715                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13716                }
13717                let inner_offset;
13718                let mut inner_depth = depth.clone();
13719                if inlined {
13720                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13721                    inner_offset = next_offset;
13722                } else {
13723                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13724                    inner_depth.increment()?;
13725                }
13726                let val_ref = self.channel.get_or_insert_with(|| fidl::new_empty!(u8, D));
13727                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
13728                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13729                {
13730                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13731                }
13732                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13733                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13734                }
13735            }
13736
13737            next_offset += envelope_size;
13738            _next_ordinal_to_read += 1;
13739            if next_offset >= end_offset {
13740                return Ok(());
13741            }
13742
13743            // Decode unknown envelopes for gaps in ordinals.
13744            while _next_ordinal_to_read < 6 {
13745                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13746                _next_ordinal_to_read += 1;
13747                next_offset += envelope_size;
13748            }
13749
13750            let next_out_of_line = decoder.next_out_of_line();
13751            let handles_before = decoder.remaining_handles();
13752            if let Some((inlined, num_bytes, num_handles)) =
13753                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13754            {
13755                let member_inline_size =
13756                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
13757                        decoder.context,
13758                    );
13759                if inlined != (member_inline_size <= 4) {
13760                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13761                }
13762                let inner_offset;
13763                let mut inner_depth = depth.clone();
13764                if inlined {
13765                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13766                    inner_offset = next_offset;
13767                } else {
13768                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13769                    inner_depth.increment()?;
13770                }
13771                let val_ref = self
13772                    .rsne
13773                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
13774                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
13775                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13776                {
13777                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13778                }
13779                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13780                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13781                }
13782            }
13783
13784            next_offset += envelope_size;
13785            _next_ordinal_to_read += 1;
13786            if next_offset >= end_offset {
13787                return Ok(());
13788            }
13789
13790            // Decode unknown envelopes for gaps in ordinals.
13791            while _next_ordinal_to_read < 7 {
13792                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13793                _next_ordinal_to_read += 1;
13794                next_offset += envelope_size;
13795            }
13796
13797            let next_out_of_line = decoder.next_out_of_line();
13798            let handles_before = decoder.remaining_handles();
13799            if let Some((inlined, num_bytes, num_handles)) =
13800                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13801            {
13802                let member_inline_size =
13803                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
13804                        decoder.context,
13805                    );
13806                if inlined != (member_inline_size <= 4) {
13807                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13808                }
13809                let inner_offset;
13810                let mut inner_depth = depth.clone();
13811                if inlined {
13812                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13813                    inner_offset = next_offset;
13814                } else {
13815                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13816                    inner_depth.increment()?;
13817                }
13818                let val_ref = self
13819                    .vendor_ie
13820                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
13821                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
13822                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13823                {
13824                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13825                }
13826                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13827                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13828                }
13829            }
13830
13831            next_offset += envelope_size;
13832
13833            // Decode the remaining unknown envelopes.
13834            while next_offset < end_offset {
13835                _next_ordinal_to_read += 1;
13836                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13837                next_offset += envelope_size;
13838            }
13839
13840            Ok(())
13841        }
13842    }
13843
13844    impl WlanFullmacImplStartScanRequest {
13845        #[inline(always)]
13846        fn max_ordinal_present(&self) -> u64 {
13847            if let Some(_) = self.max_channel_time {
13848                return 6;
13849            }
13850            if let Some(_) = self.min_channel_time {
13851                return 5;
13852            }
13853            if let Some(_) = self.ssids {
13854                return 4;
13855            }
13856            if let Some(_) = self.channels {
13857                return 3;
13858            }
13859            if let Some(_) = self.scan_type {
13860                return 2;
13861            }
13862            if let Some(_) = self.txn_id {
13863                return 1;
13864            }
13865            0
13866        }
13867    }
13868
13869    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartScanRequest {
13870        type Borrowed<'a> = &'a Self;
13871        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13872            value
13873        }
13874    }
13875
13876    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartScanRequest {
13877        type Owned = Self;
13878
13879        #[inline(always)]
13880        fn inline_align(_context: fidl::encoding::Context) -> usize {
13881            8
13882        }
13883
13884        #[inline(always)]
13885        fn inline_size(_context: fidl::encoding::Context) -> usize {
13886            16
13887        }
13888    }
13889
13890    unsafe impl<D: fidl::encoding::ResourceDialect>
13891        fidl::encoding::Encode<WlanFullmacImplStartScanRequest, D>
13892        for &WlanFullmacImplStartScanRequest
13893    {
13894        unsafe fn encode(
13895            self,
13896            encoder: &mut fidl::encoding::Encoder<'_, D>,
13897            offset: usize,
13898            mut depth: fidl::encoding::Depth,
13899        ) -> fidl::Result<()> {
13900            encoder.debug_check_bounds::<WlanFullmacImplStartScanRequest>(offset);
13901            // Vector header
13902            let max_ordinal: u64 = self.max_ordinal_present();
13903            encoder.write_num(max_ordinal, offset);
13904            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13905            // Calling encoder.out_of_line_offset(0) is not allowed.
13906            if max_ordinal == 0 {
13907                return Ok(());
13908            }
13909            depth.increment()?;
13910            let envelope_size = 8;
13911            let bytes_len = max_ordinal as usize * envelope_size;
13912            #[allow(unused_variables)]
13913            let offset = encoder.out_of_line_offset(bytes_len);
13914            let mut _prev_end_offset: usize = 0;
13915            if 1 > max_ordinal {
13916                return Ok(());
13917            }
13918
13919            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13920            // are envelope_size bytes.
13921            let cur_offset: usize = (1 - 1) * envelope_size;
13922
13923            // Zero reserved fields.
13924            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13925
13926            // Safety:
13927            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13928            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13929            //   envelope_size bytes, there is always sufficient room.
13930            fidl::encoding::encode_in_envelope_optional::<u64, D>(
13931                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
13932                encoder,
13933                offset + cur_offset,
13934                depth,
13935            )?;
13936
13937            _prev_end_offset = cur_offset + envelope_size;
13938            if 2 > max_ordinal {
13939                return Ok(());
13940            }
13941
13942            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13943            // are envelope_size bytes.
13944            let cur_offset: usize = (2 - 1) * envelope_size;
13945
13946            // Zero reserved fields.
13947            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13948
13949            // Safety:
13950            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13951            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13952            //   envelope_size bytes, there is always sufficient room.
13953            fidl::encoding::encode_in_envelope_optional::<WlanScanType, D>(
13954                self.scan_type
13955                    .as_ref()
13956                    .map(<WlanScanType as fidl::encoding::ValueTypeMarker>::borrow),
13957                encoder,
13958                offset + cur_offset,
13959                depth,
13960            )?;
13961
13962            _prev_end_offset = cur_offset + envelope_size;
13963            if 3 > max_ordinal {
13964                return Ok(());
13965            }
13966
13967            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13968            // are envelope_size bytes.
13969            let cur_offset: usize = (3 - 1) * envelope_size;
13970
13971            // Zero reserved fields.
13972            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13973
13974            // Safety:
13975            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13976            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13977            //   envelope_size bytes, there is always sufficient room.
13978            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 256>, D>(
13979                self.channels.as_ref().map(
13980                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow,
13981                ),
13982                encoder,
13983                offset + cur_offset,
13984                depth,
13985            )?;
13986
13987            _prev_end_offset = cur_offset + envelope_size;
13988            if 4 > max_ordinal {
13989                return Ok(());
13990            }
13991
13992            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13993            // are envelope_size bytes.
13994            let cur_offset: usize = (4 - 1) * envelope_size;
13995
13996            // Zero reserved fields.
13997            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13998
13999            // Safety:
14000            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14001            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14002            //   envelope_size bytes, there is always sufficient room.
14003            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>(
14004            self.ssids.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow),
14005            encoder, offset + cur_offset, depth
14006        )?;
14007
14008            _prev_end_offset = cur_offset + envelope_size;
14009            if 5 > max_ordinal {
14010                return Ok(());
14011            }
14012
14013            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14014            // are envelope_size bytes.
14015            let cur_offset: usize = (5 - 1) * envelope_size;
14016
14017            // Zero reserved fields.
14018            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14019
14020            // Safety:
14021            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14022            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14023            //   envelope_size bytes, there is always sufficient room.
14024            fidl::encoding::encode_in_envelope_optional::<u32, D>(
14025                self.min_channel_time
14026                    .as_ref()
14027                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
14028                encoder,
14029                offset + cur_offset,
14030                depth,
14031            )?;
14032
14033            _prev_end_offset = cur_offset + envelope_size;
14034            if 6 > max_ordinal {
14035                return Ok(());
14036            }
14037
14038            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14039            // are envelope_size bytes.
14040            let cur_offset: usize = (6 - 1) * envelope_size;
14041
14042            // Zero reserved fields.
14043            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14044
14045            // Safety:
14046            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14047            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14048            //   envelope_size bytes, there is always sufficient room.
14049            fidl::encoding::encode_in_envelope_optional::<u32, D>(
14050                self.max_channel_time
14051                    .as_ref()
14052                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
14053                encoder,
14054                offset + cur_offset,
14055                depth,
14056            )?;
14057
14058            _prev_end_offset = cur_offset + envelope_size;
14059
14060            Ok(())
14061        }
14062    }
14063
14064    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14065        for WlanFullmacImplStartScanRequest
14066    {
14067        #[inline(always)]
14068        fn new_empty() -> Self {
14069            Self::default()
14070        }
14071
14072        unsafe fn decode(
14073            &mut self,
14074            decoder: &mut fidl::encoding::Decoder<'_, D>,
14075            offset: usize,
14076            mut depth: fidl::encoding::Depth,
14077        ) -> fidl::Result<()> {
14078            decoder.debug_check_bounds::<Self>(offset);
14079            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14080                None => return Err(fidl::Error::NotNullable),
14081                Some(len) => len,
14082            };
14083            // Calling decoder.out_of_line_offset(0) is not allowed.
14084            if len == 0 {
14085                return Ok(());
14086            };
14087            depth.increment()?;
14088            let envelope_size = 8;
14089            let bytes_len = len * envelope_size;
14090            let offset = decoder.out_of_line_offset(bytes_len)?;
14091            // Decode the envelope for each type.
14092            let mut _next_ordinal_to_read = 0;
14093            let mut next_offset = offset;
14094            let end_offset = offset + bytes_len;
14095            _next_ordinal_to_read += 1;
14096            if next_offset >= end_offset {
14097                return Ok(());
14098            }
14099
14100            // Decode unknown envelopes for gaps in ordinals.
14101            while _next_ordinal_to_read < 1 {
14102                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14103                _next_ordinal_to_read += 1;
14104                next_offset += envelope_size;
14105            }
14106
14107            let next_out_of_line = decoder.next_out_of_line();
14108            let handles_before = decoder.remaining_handles();
14109            if let Some((inlined, num_bytes, num_handles)) =
14110                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14111            {
14112                let member_inline_size =
14113                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14114                if inlined != (member_inline_size <= 4) {
14115                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14116                }
14117                let inner_offset;
14118                let mut inner_depth = depth.clone();
14119                if inlined {
14120                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14121                    inner_offset = next_offset;
14122                } else {
14123                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14124                    inner_depth.increment()?;
14125                }
14126                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
14127                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
14128                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14129                {
14130                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14131                }
14132                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14133                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14134                }
14135            }
14136
14137            next_offset += envelope_size;
14138            _next_ordinal_to_read += 1;
14139            if next_offset >= end_offset {
14140                return Ok(());
14141            }
14142
14143            // Decode unknown envelopes for gaps in ordinals.
14144            while _next_ordinal_to_read < 2 {
14145                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14146                _next_ordinal_to_read += 1;
14147                next_offset += envelope_size;
14148            }
14149
14150            let next_out_of_line = decoder.next_out_of_line();
14151            let handles_before = decoder.remaining_handles();
14152            if let Some((inlined, num_bytes, num_handles)) =
14153                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14154            {
14155                let member_inline_size =
14156                    <WlanScanType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14157                if inlined != (member_inline_size <= 4) {
14158                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14159                }
14160                let inner_offset;
14161                let mut inner_depth = depth.clone();
14162                if inlined {
14163                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14164                    inner_offset = next_offset;
14165                } else {
14166                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14167                    inner_depth.increment()?;
14168                }
14169                let val_ref =
14170                    self.scan_type.get_or_insert_with(|| fidl::new_empty!(WlanScanType, D));
14171                fidl::decode!(WlanScanType, D, val_ref, decoder, inner_offset, inner_depth)?;
14172                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14173                {
14174                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14175                }
14176                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14177                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14178                }
14179            }
14180
14181            next_offset += envelope_size;
14182            _next_ordinal_to_read += 1;
14183            if next_offset >= end_offset {
14184                return Ok(());
14185            }
14186
14187            // Decode unknown envelopes for gaps in ordinals.
14188            while _next_ordinal_to_read < 3 {
14189                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14190                _next_ordinal_to_read += 1;
14191                next_offset += envelope_size;
14192            }
14193
14194            let next_out_of_line = decoder.next_out_of_line();
14195            let handles_before = decoder.remaining_handles();
14196            if let Some((inlined, num_bytes, num_handles)) =
14197                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14198            {
14199                let member_inline_size =
14200                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::TypeMarker>::inline_size(
14201                        decoder.context,
14202                    );
14203                if inlined != (member_inline_size <= 4) {
14204                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14205                }
14206                let inner_offset;
14207                let mut inner_depth = depth.clone();
14208                if inlined {
14209                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14210                    inner_offset = next_offset;
14211                } else {
14212                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14213                    inner_depth.increment()?;
14214                }
14215                let val_ref = self
14216                    .channels
14217                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D));
14218                fidl::decode!(fidl::encoding::Vector<u8, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
14219                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14220                {
14221                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14222                }
14223                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14224                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14225                }
14226            }
14227
14228            next_offset += envelope_size;
14229            _next_ordinal_to_read += 1;
14230            if next_offset >= end_offset {
14231                return Ok(());
14232            }
14233
14234            // Decode unknown envelopes for gaps in ordinals.
14235            while _next_ordinal_to_read < 4 {
14236                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14237                _next_ordinal_to_read += 1;
14238                next_offset += envelope_size;
14239            }
14240
14241            let next_out_of_line = decoder.next_out_of_line();
14242            let handles_before = decoder.remaining_handles();
14243            if let Some((inlined, num_bytes, num_handles)) =
14244                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14245            {
14246                let member_inline_size = <fidl::encoding::UnboundedVector<
14247                    fidl::encoding::Vector<u8, 32>,
14248                > as fidl::encoding::TypeMarker>::inline_size(
14249                    decoder.context
14250                );
14251                if inlined != (member_inline_size <= 4) {
14252                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14253                }
14254                let inner_offset;
14255                let mut inner_depth = depth.clone();
14256                if inlined {
14257                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14258                    inner_offset = next_offset;
14259                } else {
14260                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14261                    inner_depth.increment()?;
14262                }
14263                let val_ref = self.ssids.get_or_insert_with(|| {
14264                    fidl::new_empty!(
14265                        fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
14266                        D
14267                    )
14268                });
14269                fidl::decode!(
14270                    fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
14271                    D,
14272                    val_ref,
14273                    decoder,
14274                    inner_offset,
14275                    inner_depth
14276                )?;
14277                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14278                {
14279                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14280                }
14281                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14282                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14283                }
14284            }
14285
14286            next_offset += envelope_size;
14287            _next_ordinal_to_read += 1;
14288            if next_offset >= end_offset {
14289                return Ok(());
14290            }
14291
14292            // Decode unknown envelopes for gaps in ordinals.
14293            while _next_ordinal_to_read < 5 {
14294                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14295                _next_ordinal_to_read += 1;
14296                next_offset += envelope_size;
14297            }
14298
14299            let next_out_of_line = decoder.next_out_of_line();
14300            let handles_before = decoder.remaining_handles();
14301            if let Some((inlined, num_bytes, num_handles)) =
14302                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14303            {
14304                let member_inline_size =
14305                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14306                if inlined != (member_inline_size <= 4) {
14307                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14308                }
14309                let inner_offset;
14310                let mut inner_depth = depth.clone();
14311                if inlined {
14312                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14313                    inner_offset = next_offset;
14314                } else {
14315                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14316                    inner_depth.increment()?;
14317                }
14318                let val_ref = self.min_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
14319                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
14320                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14321                {
14322                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14323                }
14324                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14325                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14326                }
14327            }
14328
14329            next_offset += envelope_size;
14330            _next_ordinal_to_read += 1;
14331            if next_offset >= end_offset {
14332                return Ok(());
14333            }
14334
14335            // Decode unknown envelopes for gaps in ordinals.
14336            while _next_ordinal_to_read < 6 {
14337                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14338                _next_ordinal_to_read += 1;
14339                next_offset += envelope_size;
14340            }
14341
14342            let next_out_of_line = decoder.next_out_of_line();
14343            let handles_before = decoder.remaining_handles();
14344            if let Some((inlined, num_bytes, num_handles)) =
14345                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14346            {
14347                let member_inline_size =
14348                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14349                if inlined != (member_inline_size <= 4) {
14350                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14351                }
14352                let inner_offset;
14353                let mut inner_depth = depth.clone();
14354                if inlined {
14355                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14356                    inner_offset = next_offset;
14357                } else {
14358                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14359                    inner_depth.increment()?;
14360                }
14361                let val_ref = self.max_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
14362                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
14363                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14364                {
14365                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14366                }
14367                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14368                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14369                }
14370            }
14371
14372            next_offset += envelope_size;
14373
14374            // Decode the remaining unknown envelopes.
14375            while next_offset < end_offset {
14376                _next_ordinal_to_read += 1;
14377                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14378                next_offset += envelope_size;
14379            }
14380
14381            Ok(())
14382        }
14383    }
14384
14385    impl WlanFullmacImplStartScheduledScanRequest {
14386        #[inline(always)]
14387        fn max_ordinal_present(&self) -> u64 {
14388            if let Some(_) = self.req {
14389                return 2;
14390            }
14391            if let Some(_) = self.txn_id {
14392                return 1;
14393            }
14394            0
14395        }
14396    }
14397
14398    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartScheduledScanRequest {
14399        type Borrowed<'a> = &'a Self;
14400        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14401            value
14402        }
14403    }
14404
14405    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartScheduledScanRequest {
14406        type Owned = Self;
14407
14408        #[inline(always)]
14409        fn inline_align(_context: fidl::encoding::Context) -> usize {
14410            8
14411        }
14412
14413        #[inline(always)]
14414        fn inline_size(_context: fidl::encoding::Context) -> usize {
14415            16
14416        }
14417    }
14418
14419    unsafe impl<D: fidl::encoding::ResourceDialect>
14420        fidl::encoding::Encode<WlanFullmacImplStartScheduledScanRequest, D>
14421        for &WlanFullmacImplStartScheduledScanRequest
14422    {
14423        unsafe fn encode(
14424            self,
14425            encoder: &mut fidl::encoding::Encoder<'_, D>,
14426            offset: usize,
14427            mut depth: fidl::encoding::Depth,
14428        ) -> fidl::Result<()> {
14429            encoder.debug_check_bounds::<WlanFullmacImplStartScheduledScanRequest>(offset);
14430            // Vector header
14431            let max_ordinal: u64 = self.max_ordinal_present();
14432            encoder.write_num(max_ordinal, offset);
14433            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14434            // Calling encoder.out_of_line_offset(0) is not allowed.
14435            if max_ordinal == 0 {
14436                return Ok(());
14437            }
14438            depth.increment()?;
14439            let envelope_size = 8;
14440            let bytes_len = max_ordinal as usize * envelope_size;
14441            #[allow(unused_variables)]
14442            let offset = encoder.out_of_line_offset(bytes_len);
14443            let mut _prev_end_offset: usize = 0;
14444            if 1 > max_ordinal {
14445                return Ok(());
14446            }
14447
14448            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14449            // are envelope_size bytes.
14450            let cur_offset: usize = (1 - 1) * envelope_size;
14451
14452            // Zero reserved fields.
14453            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14454
14455            // Safety:
14456            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14457            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14458            //   envelope_size bytes, there is always sufficient room.
14459            fidl::encoding::encode_in_envelope_optional::<u64, D>(
14460                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
14461                encoder,
14462                offset + cur_offset,
14463                depth,
14464            )?;
14465
14466            _prev_end_offset = cur_offset + envelope_size;
14467            if 2 > max_ordinal {
14468                return Ok(());
14469            }
14470
14471            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14472            // are envelope_size bytes.
14473            let cur_offset: usize = (2 - 1) * envelope_size;
14474
14475            // Zero reserved fields.
14476            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14477
14478            // Safety:
14479            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14480            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14481            //   envelope_size bytes, there is always sufficient room.
14482            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::ScheduledScanRequest, D>(
14483            self.req.as_ref().map(<fidl_fuchsia_wlan_common__common::ScheduledScanRequest as fidl::encoding::ValueTypeMarker>::borrow),
14484            encoder, offset + cur_offset, depth
14485        )?;
14486
14487            _prev_end_offset = cur_offset + envelope_size;
14488
14489            Ok(())
14490        }
14491    }
14492
14493    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14494        for WlanFullmacImplStartScheduledScanRequest
14495    {
14496        #[inline(always)]
14497        fn new_empty() -> Self {
14498            Self::default()
14499        }
14500
14501        unsafe fn decode(
14502            &mut self,
14503            decoder: &mut fidl::encoding::Decoder<'_, D>,
14504            offset: usize,
14505            mut depth: fidl::encoding::Depth,
14506        ) -> fidl::Result<()> {
14507            decoder.debug_check_bounds::<Self>(offset);
14508            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14509                None => return Err(fidl::Error::NotNullable),
14510                Some(len) => len,
14511            };
14512            // Calling decoder.out_of_line_offset(0) is not allowed.
14513            if len == 0 {
14514                return Ok(());
14515            };
14516            depth.increment()?;
14517            let envelope_size = 8;
14518            let bytes_len = len * envelope_size;
14519            let offset = decoder.out_of_line_offset(bytes_len)?;
14520            // Decode the envelope for each type.
14521            let mut _next_ordinal_to_read = 0;
14522            let mut next_offset = offset;
14523            let end_offset = offset + bytes_len;
14524            _next_ordinal_to_read += 1;
14525            if next_offset >= end_offset {
14526                return Ok(());
14527            }
14528
14529            // Decode unknown envelopes for gaps in ordinals.
14530            while _next_ordinal_to_read < 1 {
14531                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14532                _next_ordinal_to_read += 1;
14533                next_offset += envelope_size;
14534            }
14535
14536            let next_out_of_line = decoder.next_out_of_line();
14537            let handles_before = decoder.remaining_handles();
14538            if let Some((inlined, num_bytes, num_handles)) =
14539                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14540            {
14541                let member_inline_size =
14542                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14543                if inlined != (member_inline_size <= 4) {
14544                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14545                }
14546                let inner_offset;
14547                let mut inner_depth = depth.clone();
14548                if inlined {
14549                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14550                    inner_offset = next_offset;
14551                } else {
14552                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14553                    inner_depth.increment()?;
14554                }
14555                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
14556                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
14557                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14558                {
14559                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14560                }
14561                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14562                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14563                }
14564            }
14565
14566            next_offset += envelope_size;
14567            _next_ordinal_to_read += 1;
14568            if next_offset >= end_offset {
14569                return Ok(());
14570            }
14571
14572            // Decode unknown envelopes for gaps in ordinals.
14573            while _next_ordinal_to_read < 2 {
14574                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14575                _next_ordinal_to_read += 1;
14576                next_offset += envelope_size;
14577            }
14578
14579            let next_out_of_line = decoder.next_out_of_line();
14580            let handles_before = decoder.remaining_handles();
14581            if let Some((inlined, num_bytes, num_handles)) =
14582                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14583            {
14584                let member_inline_size = <fidl_fuchsia_wlan_common__common::ScheduledScanRequest as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14585                if inlined != (member_inline_size <= 4) {
14586                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14587                }
14588                let inner_offset;
14589                let mut inner_depth = depth.clone();
14590                if inlined {
14591                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14592                    inner_offset = next_offset;
14593                } else {
14594                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14595                    inner_depth.increment()?;
14596                }
14597                let val_ref = self.req.get_or_insert_with(|| {
14598                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::ScheduledScanRequest, D)
14599                });
14600                fidl::decode!(
14601                    fidl_fuchsia_wlan_common__common::ScheduledScanRequest,
14602                    D,
14603                    val_ref,
14604                    decoder,
14605                    inner_offset,
14606                    inner_depth
14607                )?;
14608                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14609                {
14610                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14611                }
14612                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14613                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14614                }
14615            }
14616
14617            next_offset += envelope_size;
14618
14619            // Decode the remaining unknown envelopes.
14620            while next_offset < end_offset {
14621                _next_ordinal_to_read += 1;
14622                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14623                next_offset += envelope_size;
14624            }
14625
14626            Ok(())
14627        }
14628    }
14629
14630    impl WlanFullmacImplStopBssRequest {
14631        #[inline(always)]
14632        fn max_ordinal_present(&self) -> u64 {
14633            if let Some(_) = self.ssid {
14634                return 1;
14635            }
14636            0
14637        }
14638    }
14639
14640    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStopBssRequest {
14641        type Borrowed<'a> = &'a Self;
14642        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14643            value
14644        }
14645    }
14646
14647    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStopBssRequest {
14648        type Owned = Self;
14649
14650        #[inline(always)]
14651        fn inline_align(_context: fidl::encoding::Context) -> usize {
14652            8
14653        }
14654
14655        #[inline(always)]
14656        fn inline_size(_context: fidl::encoding::Context) -> usize {
14657            16
14658        }
14659    }
14660
14661    unsafe impl<D: fidl::encoding::ResourceDialect>
14662        fidl::encoding::Encode<WlanFullmacImplStopBssRequest, D>
14663        for &WlanFullmacImplStopBssRequest
14664    {
14665        unsafe fn encode(
14666            self,
14667            encoder: &mut fidl::encoding::Encoder<'_, D>,
14668            offset: usize,
14669            mut depth: fidl::encoding::Depth,
14670        ) -> fidl::Result<()> {
14671            encoder.debug_check_bounds::<WlanFullmacImplStopBssRequest>(offset);
14672            // Vector header
14673            let max_ordinal: u64 = self.max_ordinal_present();
14674            encoder.write_num(max_ordinal, offset);
14675            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14676            // Calling encoder.out_of_line_offset(0) is not allowed.
14677            if max_ordinal == 0 {
14678                return Ok(());
14679            }
14680            depth.increment()?;
14681            let envelope_size = 8;
14682            let bytes_len = max_ordinal as usize * envelope_size;
14683            #[allow(unused_variables)]
14684            let offset = encoder.out_of_line_offset(bytes_len);
14685            let mut _prev_end_offset: usize = 0;
14686            if 1 > max_ordinal {
14687                return Ok(());
14688            }
14689
14690            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14691            // are envelope_size bytes.
14692            let cur_offset: usize = (1 - 1) * envelope_size;
14693
14694            // Zero reserved fields.
14695            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14696
14697            // Safety:
14698            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14699            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14700            //   envelope_size bytes, there is always sufficient room.
14701            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
14702                self.ssid.as_ref().map(
14703                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
14704                ),
14705                encoder,
14706                offset + cur_offset,
14707                depth,
14708            )?;
14709
14710            _prev_end_offset = cur_offset + envelope_size;
14711
14712            Ok(())
14713        }
14714    }
14715
14716    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14717        for WlanFullmacImplStopBssRequest
14718    {
14719        #[inline(always)]
14720        fn new_empty() -> Self {
14721            Self::default()
14722        }
14723
14724        unsafe fn decode(
14725            &mut self,
14726            decoder: &mut fidl::encoding::Decoder<'_, D>,
14727            offset: usize,
14728            mut depth: fidl::encoding::Depth,
14729        ) -> fidl::Result<()> {
14730            decoder.debug_check_bounds::<Self>(offset);
14731            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14732                None => return Err(fidl::Error::NotNullable),
14733                Some(len) => len,
14734            };
14735            // Calling decoder.out_of_line_offset(0) is not allowed.
14736            if len == 0 {
14737                return Ok(());
14738            };
14739            depth.increment()?;
14740            let envelope_size = 8;
14741            let bytes_len = len * envelope_size;
14742            let offset = decoder.out_of_line_offset(bytes_len)?;
14743            // Decode the envelope for each type.
14744            let mut _next_ordinal_to_read = 0;
14745            let mut next_offset = offset;
14746            let end_offset = offset + bytes_len;
14747            _next_ordinal_to_read += 1;
14748            if next_offset >= end_offset {
14749                return Ok(());
14750            }
14751
14752            // Decode unknown envelopes for gaps in ordinals.
14753            while _next_ordinal_to_read < 1 {
14754                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14755                _next_ordinal_to_read += 1;
14756                next_offset += envelope_size;
14757            }
14758
14759            let next_out_of_line = decoder.next_out_of_line();
14760            let handles_before = decoder.remaining_handles();
14761            if let Some((inlined, num_bytes, num_handles)) =
14762                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14763            {
14764                let member_inline_size =
14765                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
14766                        decoder.context,
14767                    );
14768                if inlined != (member_inline_size <= 4) {
14769                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14770                }
14771                let inner_offset;
14772                let mut inner_depth = depth.clone();
14773                if inlined {
14774                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14775                    inner_offset = next_offset;
14776                } else {
14777                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14778                    inner_depth.increment()?;
14779                }
14780                let val_ref = self
14781                    .ssid
14782                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
14783                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
14784                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14785                {
14786                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14787                }
14788                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14789                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14790                }
14791            }
14792
14793            next_offset += envelope_size;
14794
14795            // Decode the remaining unknown envelopes.
14796            while next_offset < end_offset {
14797                _next_ordinal_to_read += 1;
14798                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14799                next_offset += envelope_size;
14800            }
14801
14802            Ok(())
14803        }
14804    }
14805
14806    impl WlanFullmacImplStopScheduledScanRequest {
14807        #[inline(always)]
14808        fn max_ordinal_present(&self) -> u64 {
14809            if let Some(_) = self.txn_id {
14810                return 1;
14811            }
14812            0
14813        }
14814    }
14815
14816    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStopScheduledScanRequest {
14817        type Borrowed<'a> = &'a Self;
14818        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14819            value
14820        }
14821    }
14822
14823    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStopScheduledScanRequest {
14824        type Owned = Self;
14825
14826        #[inline(always)]
14827        fn inline_align(_context: fidl::encoding::Context) -> usize {
14828            8
14829        }
14830
14831        #[inline(always)]
14832        fn inline_size(_context: fidl::encoding::Context) -> usize {
14833            16
14834        }
14835    }
14836
14837    unsafe impl<D: fidl::encoding::ResourceDialect>
14838        fidl::encoding::Encode<WlanFullmacImplStopScheduledScanRequest, D>
14839        for &WlanFullmacImplStopScheduledScanRequest
14840    {
14841        unsafe fn encode(
14842            self,
14843            encoder: &mut fidl::encoding::Encoder<'_, D>,
14844            offset: usize,
14845            mut depth: fidl::encoding::Depth,
14846        ) -> fidl::Result<()> {
14847            encoder.debug_check_bounds::<WlanFullmacImplStopScheduledScanRequest>(offset);
14848            // Vector header
14849            let max_ordinal: u64 = self.max_ordinal_present();
14850            encoder.write_num(max_ordinal, offset);
14851            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14852            // Calling encoder.out_of_line_offset(0) is not allowed.
14853            if max_ordinal == 0 {
14854                return Ok(());
14855            }
14856            depth.increment()?;
14857            let envelope_size = 8;
14858            let bytes_len = max_ordinal as usize * envelope_size;
14859            #[allow(unused_variables)]
14860            let offset = encoder.out_of_line_offset(bytes_len);
14861            let mut _prev_end_offset: usize = 0;
14862            if 1 > max_ordinal {
14863                return Ok(());
14864            }
14865
14866            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14867            // are envelope_size bytes.
14868            let cur_offset: usize = (1 - 1) * envelope_size;
14869
14870            // Zero reserved fields.
14871            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14872
14873            // Safety:
14874            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14875            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14876            //   envelope_size bytes, there is always sufficient room.
14877            fidl::encoding::encode_in_envelope_optional::<u64, D>(
14878                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
14879                encoder,
14880                offset + cur_offset,
14881                depth,
14882            )?;
14883
14884            _prev_end_offset = cur_offset + envelope_size;
14885
14886            Ok(())
14887        }
14888    }
14889
14890    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14891        for WlanFullmacImplStopScheduledScanRequest
14892    {
14893        #[inline(always)]
14894        fn new_empty() -> Self {
14895            Self::default()
14896        }
14897
14898        unsafe fn decode(
14899            &mut self,
14900            decoder: &mut fidl::encoding::Decoder<'_, D>,
14901            offset: usize,
14902            mut depth: fidl::encoding::Depth,
14903        ) -> fidl::Result<()> {
14904            decoder.debug_check_bounds::<Self>(offset);
14905            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14906                None => return Err(fidl::Error::NotNullable),
14907                Some(len) => len,
14908            };
14909            // Calling decoder.out_of_line_offset(0) is not allowed.
14910            if len == 0 {
14911                return Ok(());
14912            };
14913            depth.increment()?;
14914            let envelope_size = 8;
14915            let bytes_len = len * envelope_size;
14916            let offset = decoder.out_of_line_offset(bytes_len)?;
14917            // Decode the envelope for each type.
14918            let mut _next_ordinal_to_read = 0;
14919            let mut next_offset = offset;
14920            let end_offset = offset + bytes_len;
14921            _next_ordinal_to_read += 1;
14922            if next_offset >= end_offset {
14923                return Ok(());
14924            }
14925
14926            // Decode unknown envelopes for gaps in ordinals.
14927            while _next_ordinal_to_read < 1 {
14928                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14929                _next_ordinal_to_read += 1;
14930                next_offset += envelope_size;
14931            }
14932
14933            let next_out_of_line = decoder.next_out_of_line();
14934            let handles_before = decoder.remaining_handles();
14935            if let Some((inlined, num_bytes, num_handles)) =
14936                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14937            {
14938                let member_inline_size =
14939                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14940                if inlined != (member_inline_size <= 4) {
14941                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14942                }
14943                let inner_offset;
14944                let mut inner_depth = depth.clone();
14945                if inlined {
14946                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14947                    inner_offset = next_offset;
14948                } else {
14949                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14950                    inner_depth.increment()?;
14951                }
14952                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
14953                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
14954                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14955                {
14956                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14957                }
14958                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14959                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14960                }
14961            }
14962
14963            next_offset += envelope_size;
14964
14965            // Decode the remaining unknown envelopes.
14966            while next_offset < end_offset {
14967                _next_ordinal_to_read += 1;
14968                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14969                next_offset += envelope_size;
14970            }
14971
14972            Ok(())
14973        }
14974    }
14975
14976    impl WlanFullmacImplGetApfPacketFilterEnabledResponse {
14977        #[inline(always)]
14978        fn max_ordinal_present(&self) -> u64 {
14979            if let Some(_) = self.enabled {
14980                return 1;
14981            }
14982            0
14983        }
14984    }
14985
14986    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetApfPacketFilterEnabledResponse {
14987        type Borrowed<'a> = &'a Self;
14988        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14989            value
14990        }
14991    }
14992
14993    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetApfPacketFilterEnabledResponse {
14994        type Owned = Self;
14995
14996        #[inline(always)]
14997        fn inline_align(_context: fidl::encoding::Context) -> usize {
14998            8
14999        }
15000
15001        #[inline(always)]
15002        fn inline_size(_context: fidl::encoding::Context) -> usize {
15003            16
15004        }
15005    }
15006
15007    unsafe impl<D: fidl::encoding::ResourceDialect>
15008        fidl::encoding::Encode<WlanFullmacImplGetApfPacketFilterEnabledResponse, D>
15009        for &WlanFullmacImplGetApfPacketFilterEnabledResponse
15010    {
15011        unsafe fn encode(
15012            self,
15013            encoder: &mut fidl::encoding::Encoder<'_, D>,
15014            offset: usize,
15015            mut depth: fidl::encoding::Depth,
15016        ) -> fidl::Result<()> {
15017            encoder.debug_check_bounds::<WlanFullmacImplGetApfPacketFilterEnabledResponse>(offset);
15018            // Vector header
15019            let max_ordinal: u64 = self.max_ordinal_present();
15020            encoder.write_num(max_ordinal, offset);
15021            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15022            // Calling encoder.out_of_line_offset(0) is not allowed.
15023            if max_ordinal == 0 {
15024                return Ok(());
15025            }
15026            depth.increment()?;
15027            let envelope_size = 8;
15028            let bytes_len = max_ordinal as usize * envelope_size;
15029            #[allow(unused_variables)]
15030            let offset = encoder.out_of_line_offset(bytes_len);
15031            let mut _prev_end_offset: usize = 0;
15032            if 1 > max_ordinal {
15033                return Ok(());
15034            }
15035
15036            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15037            // are envelope_size bytes.
15038            let cur_offset: usize = (1 - 1) * envelope_size;
15039
15040            // Zero reserved fields.
15041            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15042
15043            // Safety:
15044            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15045            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15046            //   envelope_size bytes, there is always sufficient room.
15047            fidl::encoding::encode_in_envelope_optional::<bool, D>(
15048                self.enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
15049                encoder,
15050                offset + cur_offset,
15051                depth,
15052            )?;
15053
15054            _prev_end_offset = cur_offset + envelope_size;
15055
15056            Ok(())
15057        }
15058    }
15059
15060    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15061        for WlanFullmacImplGetApfPacketFilterEnabledResponse
15062    {
15063        #[inline(always)]
15064        fn new_empty() -> Self {
15065            Self::default()
15066        }
15067
15068        unsafe fn decode(
15069            &mut self,
15070            decoder: &mut fidl::encoding::Decoder<'_, D>,
15071            offset: usize,
15072            mut depth: fidl::encoding::Depth,
15073        ) -> fidl::Result<()> {
15074            decoder.debug_check_bounds::<Self>(offset);
15075            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15076                None => return Err(fidl::Error::NotNullable),
15077                Some(len) => len,
15078            };
15079            // Calling decoder.out_of_line_offset(0) is not allowed.
15080            if len == 0 {
15081                return Ok(());
15082            };
15083            depth.increment()?;
15084            let envelope_size = 8;
15085            let bytes_len = len * envelope_size;
15086            let offset = decoder.out_of_line_offset(bytes_len)?;
15087            // Decode the envelope for each type.
15088            let mut _next_ordinal_to_read = 0;
15089            let mut next_offset = offset;
15090            let end_offset = offset + bytes_len;
15091            _next_ordinal_to_read += 1;
15092            if next_offset >= end_offset {
15093                return Ok(());
15094            }
15095
15096            // Decode unknown envelopes for gaps in ordinals.
15097            while _next_ordinal_to_read < 1 {
15098                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15099                _next_ordinal_to_read += 1;
15100                next_offset += envelope_size;
15101            }
15102
15103            let next_out_of_line = decoder.next_out_of_line();
15104            let handles_before = decoder.remaining_handles();
15105            if let Some((inlined, num_bytes, num_handles)) =
15106                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15107            {
15108                let member_inline_size =
15109                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15110                if inlined != (member_inline_size <= 4) {
15111                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15112                }
15113                let inner_offset;
15114                let mut inner_depth = depth.clone();
15115                if inlined {
15116                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15117                    inner_offset = next_offset;
15118                } else {
15119                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15120                    inner_depth.increment()?;
15121                }
15122                let val_ref = self.enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
15123                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
15124                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15125                {
15126                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15127                }
15128                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15129                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15130                }
15131            }
15132
15133            next_offset += envelope_size;
15134
15135            // Decode the remaining unknown envelopes.
15136            while next_offset < end_offset {
15137                _next_ordinal_to_read += 1;
15138                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15139                next_offset += envelope_size;
15140            }
15141
15142            Ok(())
15143        }
15144    }
15145
15146    impl WlanFullmacImplGetScheduledScanEnabledResponse {
15147        #[inline(always)]
15148        fn max_ordinal_present(&self) -> u64 {
15149            if let Some(_) = self.active_txn_ids {
15150                return 1;
15151            }
15152            0
15153        }
15154    }
15155
15156    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetScheduledScanEnabledResponse {
15157        type Borrowed<'a> = &'a Self;
15158        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15159            value
15160        }
15161    }
15162
15163    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetScheduledScanEnabledResponse {
15164        type Owned = Self;
15165
15166        #[inline(always)]
15167        fn inline_align(_context: fidl::encoding::Context) -> usize {
15168            8
15169        }
15170
15171        #[inline(always)]
15172        fn inline_size(_context: fidl::encoding::Context) -> usize {
15173            16
15174        }
15175    }
15176
15177    unsafe impl<D: fidl::encoding::ResourceDialect>
15178        fidl::encoding::Encode<WlanFullmacImplGetScheduledScanEnabledResponse, D>
15179        for &WlanFullmacImplGetScheduledScanEnabledResponse
15180    {
15181        unsafe fn encode(
15182            self,
15183            encoder: &mut fidl::encoding::Encoder<'_, D>,
15184            offset: usize,
15185            mut depth: fidl::encoding::Depth,
15186        ) -> fidl::Result<()> {
15187            encoder.debug_check_bounds::<WlanFullmacImplGetScheduledScanEnabledResponse>(offset);
15188            // Vector header
15189            let max_ordinal: u64 = self.max_ordinal_present();
15190            encoder.write_num(max_ordinal, offset);
15191            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15192            // Calling encoder.out_of_line_offset(0) is not allowed.
15193            if max_ordinal == 0 {
15194                return Ok(());
15195            }
15196            depth.increment()?;
15197            let envelope_size = 8;
15198            let bytes_len = max_ordinal as usize * envelope_size;
15199            #[allow(unused_variables)]
15200            let offset = encoder.out_of_line_offset(bytes_len);
15201            let mut _prev_end_offset: usize = 0;
15202            if 1 > max_ordinal {
15203                return Ok(());
15204            }
15205
15206            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15207            // are envelope_size bytes.
15208            let cur_offset: usize = (1 - 1) * envelope_size;
15209
15210            // Zero reserved fields.
15211            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15212
15213            // Safety:
15214            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15215            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15216            //   envelope_size bytes, there is always sufficient room.
15217            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
15218            self.active_txn_ids.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
15219            encoder, offset + cur_offset, depth
15220        )?;
15221
15222            _prev_end_offset = cur_offset + envelope_size;
15223
15224            Ok(())
15225        }
15226    }
15227
15228    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15229        for WlanFullmacImplGetScheduledScanEnabledResponse
15230    {
15231        #[inline(always)]
15232        fn new_empty() -> Self {
15233            Self::default()
15234        }
15235
15236        unsafe fn decode(
15237            &mut self,
15238            decoder: &mut fidl::encoding::Decoder<'_, D>,
15239            offset: usize,
15240            mut depth: fidl::encoding::Depth,
15241        ) -> fidl::Result<()> {
15242            decoder.debug_check_bounds::<Self>(offset);
15243            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15244                None => return Err(fidl::Error::NotNullable),
15245                Some(len) => len,
15246            };
15247            // Calling decoder.out_of_line_offset(0) is not allowed.
15248            if len == 0 {
15249                return Ok(());
15250            };
15251            depth.increment()?;
15252            let envelope_size = 8;
15253            let bytes_len = len * envelope_size;
15254            let offset = decoder.out_of_line_offset(bytes_len)?;
15255            // Decode the envelope for each type.
15256            let mut _next_ordinal_to_read = 0;
15257            let mut next_offset = offset;
15258            let end_offset = offset + bytes_len;
15259            _next_ordinal_to_read += 1;
15260            if next_offset >= end_offset {
15261                return Ok(());
15262            }
15263
15264            // Decode unknown envelopes for gaps in ordinals.
15265            while _next_ordinal_to_read < 1 {
15266                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15267                _next_ordinal_to_read += 1;
15268                next_offset += envelope_size;
15269            }
15270
15271            let next_out_of_line = decoder.next_out_of_line();
15272            let handles_before = decoder.remaining_handles();
15273            if let Some((inlined, num_bytes, num_handles)) =
15274                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15275            {
15276                let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15277                if inlined != (member_inline_size <= 4) {
15278                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15279                }
15280                let inner_offset;
15281                let mut inner_depth = depth.clone();
15282                if inlined {
15283                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15284                    inner_offset = next_offset;
15285                } else {
15286                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15287                    inner_depth.increment()?;
15288                }
15289                let val_ref = self.active_txn_ids.get_or_insert_with(|| {
15290                    fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
15291                });
15292                fidl::decode!(
15293                    fidl::encoding::UnboundedVector<u64>,
15294                    D,
15295                    val_ref,
15296                    decoder,
15297                    inner_offset,
15298                    inner_depth
15299                )?;
15300                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15301                {
15302                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15303                }
15304                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15305                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15306                }
15307            }
15308
15309            next_offset += envelope_size;
15310
15311            // Decode the remaining unknown envelopes.
15312            while next_offset < end_offset {
15313                _next_ordinal_to_read += 1;
15314                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15315                next_offset += envelope_size;
15316            }
15317
15318            Ok(())
15319        }
15320    }
15321
15322    impl WlanFullmacImplQueryApfPacketFilterSupportResponse {
15323        #[inline(always)]
15324        fn max_ordinal_present(&self) -> u64 {
15325            if let Some(_) = self.resp {
15326                return 1;
15327            }
15328            0
15329        }
15330    }
15331
15332    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryApfPacketFilterSupportResponse {
15333        type Borrowed<'a> = &'a Self;
15334        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15335            value
15336        }
15337    }
15338
15339    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryApfPacketFilterSupportResponse {
15340        type Owned = Self;
15341
15342        #[inline(always)]
15343        fn inline_align(_context: fidl::encoding::Context) -> usize {
15344            8
15345        }
15346
15347        #[inline(always)]
15348        fn inline_size(_context: fidl::encoding::Context) -> usize {
15349            16
15350        }
15351    }
15352
15353    unsafe impl<D: fidl::encoding::ResourceDialect>
15354        fidl::encoding::Encode<WlanFullmacImplQueryApfPacketFilterSupportResponse, D>
15355        for &WlanFullmacImplQueryApfPacketFilterSupportResponse
15356    {
15357        unsafe fn encode(
15358            self,
15359            encoder: &mut fidl::encoding::Encoder<'_, D>,
15360            offset: usize,
15361            mut depth: fidl::encoding::Depth,
15362        ) -> fidl::Result<()> {
15363            encoder
15364                .debug_check_bounds::<WlanFullmacImplQueryApfPacketFilterSupportResponse>(offset);
15365            // Vector header
15366            let max_ordinal: u64 = self.max_ordinal_present();
15367            encoder.write_num(max_ordinal, offset);
15368            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15369            // Calling encoder.out_of_line_offset(0) is not allowed.
15370            if max_ordinal == 0 {
15371                return Ok(());
15372            }
15373            depth.increment()?;
15374            let envelope_size = 8;
15375            let bytes_len = max_ordinal as usize * envelope_size;
15376            #[allow(unused_variables)]
15377            let offset = encoder.out_of_line_offset(bytes_len);
15378            let mut _prev_end_offset: usize = 0;
15379            if 1 > max_ordinal {
15380                return Ok(());
15381            }
15382
15383            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15384            // are envelope_size bytes.
15385            let cur_offset: usize = (1 - 1) * envelope_size;
15386
15387            // Zero reserved fields.
15388            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15389
15390            // Safety:
15391            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15392            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15393            //   envelope_size bytes, there is always sufficient room.
15394            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::ApfPacketFilterSupport, D>(
15395            self.resp.as_ref().map(<fidl_fuchsia_wlan_common__common::ApfPacketFilterSupport as fidl::encoding::ValueTypeMarker>::borrow),
15396            encoder, offset + cur_offset, depth
15397        )?;
15398
15399            _prev_end_offset = cur_offset + envelope_size;
15400
15401            Ok(())
15402        }
15403    }
15404
15405    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15406        for WlanFullmacImplQueryApfPacketFilterSupportResponse
15407    {
15408        #[inline(always)]
15409        fn new_empty() -> Self {
15410            Self::default()
15411        }
15412
15413        unsafe fn decode(
15414            &mut self,
15415            decoder: &mut fidl::encoding::Decoder<'_, D>,
15416            offset: usize,
15417            mut depth: fidl::encoding::Depth,
15418        ) -> fidl::Result<()> {
15419            decoder.debug_check_bounds::<Self>(offset);
15420            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15421                None => return Err(fidl::Error::NotNullable),
15422                Some(len) => len,
15423            };
15424            // Calling decoder.out_of_line_offset(0) is not allowed.
15425            if len == 0 {
15426                return Ok(());
15427            };
15428            depth.increment()?;
15429            let envelope_size = 8;
15430            let bytes_len = len * envelope_size;
15431            let offset = decoder.out_of_line_offset(bytes_len)?;
15432            // Decode the envelope for each type.
15433            let mut _next_ordinal_to_read = 0;
15434            let mut next_offset = offset;
15435            let end_offset = offset + bytes_len;
15436            _next_ordinal_to_read += 1;
15437            if next_offset >= end_offset {
15438                return Ok(());
15439            }
15440
15441            // Decode unknown envelopes for gaps in ordinals.
15442            while _next_ordinal_to_read < 1 {
15443                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15444                _next_ordinal_to_read += 1;
15445                next_offset += envelope_size;
15446            }
15447
15448            let next_out_of_line = decoder.next_out_of_line();
15449            let handles_before = decoder.remaining_handles();
15450            if let Some((inlined, num_bytes, num_handles)) =
15451                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15452            {
15453                let member_inline_size = <fidl_fuchsia_wlan_common__common::ApfPacketFilterSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15454                if inlined != (member_inline_size <= 4) {
15455                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15456                }
15457                let inner_offset;
15458                let mut inner_depth = depth.clone();
15459                if inlined {
15460                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15461                    inner_offset = next_offset;
15462                } else {
15463                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15464                    inner_depth.increment()?;
15465                }
15466                let val_ref = self.resp.get_or_insert_with(|| {
15467                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::ApfPacketFilterSupport, D)
15468                });
15469                fidl::decode!(
15470                    fidl_fuchsia_wlan_common__common::ApfPacketFilterSupport,
15471                    D,
15472                    val_ref,
15473                    decoder,
15474                    inner_offset,
15475                    inner_depth
15476                )?;
15477                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15478                {
15479                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15480                }
15481                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15482                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15483                }
15484            }
15485
15486            next_offset += envelope_size;
15487
15488            // Decode the remaining unknown envelopes.
15489            while next_offset < end_offset {
15490                _next_ordinal_to_read += 1;
15491                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15492                next_offset += envelope_size;
15493            }
15494
15495            Ok(())
15496        }
15497    }
15498
15499    impl WlanFullmacImplQuerySecuritySupportResponse {
15500        #[inline(always)]
15501        fn max_ordinal_present(&self) -> u64 {
15502            if let Some(_) = self.resp {
15503                return 1;
15504            }
15505            0
15506        }
15507    }
15508
15509    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
15510        type Borrowed<'a> = &'a Self;
15511        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15512            value
15513        }
15514    }
15515
15516    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
15517        type Owned = Self;
15518
15519        #[inline(always)]
15520        fn inline_align(_context: fidl::encoding::Context) -> usize {
15521            8
15522        }
15523
15524        #[inline(always)]
15525        fn inline_size(_context: fidl::encoding::Context) -> usize {
15526            16
15527        }
15528    }
15529
15530    unsafe impl<D: fidl::encoding::ResourceDialect>
15531        fidl::encoding::Encode<WlanFullmacImplQuerySecuritySupportResponse, D>
15532        for &WlanFullmacImplQuerySecuritySupportResponse
15533    {
15534        unsafe fn encode(
15535            self,
15536            encoder: &mut fidl::encoding::Encoder<'_, D>,
15537            offset: usize,
15538            mut depth: fidl::encoding::Depth,
15539        ) -> fidl::Result<()> {
15540            encoder.debug_check_bounds::<WlanFullmacImplQuerySecuritySupportResponse>(offset);
15541            // Vector header
15542            let max_ordinal: u64 = self.max_ordinal_present();
15543            encoder.write_num(max_ordinal, offset);
15544            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15545            // Calling encoder.out_of_line_offset(0) is not allowed.
15546            if max_ordinal == 0 {
15547                return Ok(());
15548            }
15549            depth.increment()?;
15550            let envelope_size = 8;
15551            let bytes_len = max_ordinal as usize * envelope_size;
15552            #[allow(unused_variables)]
15553            let offset = encoder.out_of_line_offset(bytes_len);
15554            let mut _prev_end_offset: usize = 0;
15555            if 1 > max_ordinal {
15556                return Ok(());
15557            }
15558
15559            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15560            // are envelope_size bytes.
15561            let cur_offset: usize = (1 - 1) * envelope_size;
15562
15563            // Zero reserved fields.
15564            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15565
15566            // Safety:
15567            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15568            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15569            //   envelope_size bytes, there is always sufficient room.
15570            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::SecuritySupport, D>(
15571            self.resp.as_ref().map(<fidl_fuchsia_wlan_common__common::SecuritySupport as fidl::encoding::ValueTypeMarker>::borrow),
15572            encoder, offset + cur_offset, depth
15573        )?;
15574
15575            _prev_end_offset = cur_offset + envelope_size;
15576
15577            Ok(())
15578        }
15579    }
15580
15581    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15582        for WlanFullmacImplQuerySecuritySupportResponse
15583    {
15584        #[inline(always)]
15585        fn new_empty() -> Self {
15586            Self::default()
15587        }
15588
15589        unsafe fn decode(
15590            &mut self,
15591            decoder: &mut fidl::encoding::Decoder<'_, D>,
15592            offset: usize,
15593            mut depth: fidl::encoding::Depth,
15594        ) -> fidl::Result<()> {
15595            decoder.debug_check_bounds::<Self>(offset);
15596            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15597                None => return Err(fidl::Error::NotNullable),
15598                Some(len) => len,
15599            };
15600            // Calling decoder.out_of_line_offset(0) is not allowed.
15601            if len == 0 {
15602                return Ok(());
15603            };
15604            depth.increment()?;
15605            let envelope_size = 8;
15606            let bytes_len = len * envelope_size;
15607            let offset = decoder.out_of_line_offset(bytes_len)?;
15608            // Decode the envelope for each type.
15609            let mut _next_ordinal_to_read = 0;
15610            let mut next_offset = offset;
15611            let end_offset = offset + bytes_len;
15612            _next_ordinal_to_read += 1;
15613            if next_offset >= end_offset {
15614                return Ok(());
15615            }
15616
15617            // Decode unknown envelopes for gaps in ordinals.
15618            while _next_ordinal_to_read < 1 {
15619                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15620                _next_ordinal_to_read += 1;
15621                next_offset += envelope_size;
15622            }
15623
15624            let next_out_of_line = decoder.next_out_of_line();
15625            let handles_before = decoder.remaining_handles();
15626            if let Some((inlined, num_bytes, num_handles)) =
15627                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15628            {
15629                let member_inline_size = <fidl_fuchsia_wlan_common__common::SecuritySupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15630                if inlined != (member_inline_size <= 4) {
15631                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15632                }
15633                let inner_offset;
15634                let mut inner_depth = depth.clone();
15635                if inlined {
15636                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15637                    inner_offset = next_offset;
15638                } else {
15639                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15640                    inner_depth.increment()?;
15641                }
15642                let val_ref = self.resp.get_or_insert_with(|| {
15643                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::SecuritySupport, D)
15644                });
15645                fidl::decode!(
15646                    fidl_fuchsia_wlan_common__common::SecuritySupport,
15647                    D,
15648                    val_ref,
15649                    decoder,
15650                    inner_offset,
15651                    inner_depth
15652                )?;
15653                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15654                {
15655                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15656                }
15657                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15658                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15659                }
15660            }
15661
15662            next_offset += envelope_size;
15663
15664            // Decode the remaining unknown envelopes.
15665            while next_offset < end_offset {
15666                _next_ordinal_to_read += 1;
15667                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15668                next_offset += envelope_size;
15669            }
15670
15671            Ok(())
15672        }
15673    }
15674
15675    impl WlanFullmacImplQuerySpectrumManagementSupportResponse {
15676        #[inline(always)]
15677        fn max_ordinal_present(&self) -> u64 {
15678            if let Some(_) = self.resp {
15679                return 1;
15680            }
15681            0
15682        }
15683    }
15684
15685    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
15686        type Borrowed<'a> = &'a Self;
15687        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15688            value
15689        }
15690    }
15691
15692    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
15693        type Owned = Self;
15694
15695        #[inline(always)]
15696        fn inline_align(_context: fidl::encoding::Context) -> usize {
15697            8
15698        }
15699
15700        #[inline(always)]
15701        fn inline_size(_context: fidl::encoding::Context) -> usize {
15702            16
15703        }
15704    }
15705
15706    unsafe impl<D: fidl::encoding::ResourceDialect>
15707        fidl::encoding::Encode<WlanFullmacImplQuerySpectrumManagementSupportResponse, D>
15708        for &WlanFullmacImplQuerySpectrumManagementSupportResponse
15709    {
15710        unsafe fn encode(
15711            self,
15712            encoder: &mut fidl::encoding::Encoder<'_, D>,
15713            offset: usize,
15714            mut depth: fidl::encoding::Depth,
15715        ) -> fidl::Result<()> {
15716            encoder.debug_check_bounds::<WlanFullmacImplQuerySpectrumManagementSupportResponse>(
15717                offset,
15718            );
15719            // Vector header
15720            let max_ordinal: u64 = self.max_ordinal_present();
15721            encoder.write_num(max_ordinal, offset);
15722            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15723            // Calling encoder.out_of_line_offset(0) is not allowed.
15724            if max_ordinal == 0 {
15725                return Ok(());
15726            }
15727            depth.increment()?;
15728            let envelope_size = 8;
15729            let bytes_len = max_ordinal as usize * envelope_size;
15730            #[allow(unused_variables)]
15731            let offset = encoder.out_of_line_offset(bytes_len);
15732            let mut _prev_end_offset: usize = 0;
15733            if 1 > max_ordinal {
15734                return Ok(());
15735            }
15736
15737            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15738            // are envelope_size bytes.
15739            let cur_offset: usize = (1 - 1) * envelope_size;
15740
15741            // Zero reserved fields.
15742            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15743
15744            // Safety:
15745            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15746            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15747            //   envelope_size bytes, there is always sufficient room.
15748            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::SpectrumManagementSupport, D>(
15749            self.resp.as_ref().map(<fidl_fuchsia_wlan_common__common::SpectrumManagementSupport as fidl::encoding::ValueTypeMarker>::borrow),
15750            encoder, offset + cur_offset, depth
15751        )?;
15752
15753            _prev_end_offset = cur_offset + envelope_size;
15754
15755            Ok(())
15756        }
15757    }
15758
15759    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15760        for WlanFullmacImplQuerySpectrumManagementSupportResponse
15761    {
15762        #[inline(always)]
15763        fn new_empty() -> Self {
15764            Self::default()
15765        }
15766
15767        unsafe fn decode(
15768            &mut self,
15769            decoder: &mut fidl::encoding::Decoder<'_, D>,
15770            offset: usize,
15771            mut depth: fidl::encoding::Depth,
15772        ) -> fidl::Result<()> {
15773            decoder.debug_check_bounds::<Self>(offset);
15774            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15775                None => return Err(fidl::Error::NotNullable),
15776                Some(len) => len,
15777            };
15778            // Calling decoder.out_of_line_offset(0) is not allowed.
15779            if len == 0 {
15780                return Ok(());
15781            };
15782            depth.increment()?;
15783            let envelope_size = 8;
15784            let bytes_len = len * envelope_size;
15785            let offset = decoder.out_of_line_offset(bytes_len)?;
15786            // Decode the envelope for each type.
15787            let mut _next_ordinal_to_read = 0;
15788            let mut next_offset = offset;
15789            let end_offset = offset + bytes_len;
15790            _next_ordinal_to_read += 1;
15791            if next_offset >= end_offset {
15792                return Ok(());
15793            }
15794
15795            // Decode unknown envelopes for gaps in ordinals.
15796            while _next_ordinal_to_read < 1 {
15797                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15798                _next_ordinal_to_read += 1;
15799                next_offset += envelope_size;
15800            }
15801
15802            let next_out_of_line = decoder.next_out_of_line();
15803            let handles_before = decoder.remaining_handles();
15804            if let Some((inlined, num_bytes, num_handles)) =
15805                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15806            {
15807                let member_inline_size = <fidl_fuchsia_wlan_common__common::SpectrumManagementSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15808                if inlined != (member_inline_size <= 4) {
15809                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15810                }
15811                let inner_offset;
15812                let mut inner_depth = depth.clone();
15813                if inlined {
15814                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15815                    inner_offset = next_offset;
15816                } else {
15817                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15818                    inner_depth.increment()?;
15819                }
15820                let val_ref = self.resp.get_or_insert_with(|| {
15821                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::SpectrumManagementSupport, D)
15822                });
15823                fidl::decode!(
15824                    fidl_fuchsia_wlan_common__common::SpectrumManagementSupport,
15825                    D,
15826                    val_ref,
15827                    decoder,
15828                    inner_offset,
15829                    inner_depth
15830                )?;
15831                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15832                {
15833                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15834                }
15835                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15836                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15837                }
15838            }
15839
15840            next_offset += envelope_size;
15841
15842            // Decode the remaining unknown envelopes.
15843            while next_offset < end_offset {
15844                _next_ordinal_to_read += 1;
15845                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15846                next_offset += envelope_size;
15847            }
15848
15849            Ok(())
15850        }
15851    }
15852
15853    impl WlanFullmacImplQueryTelemetrySupportResponse {
15854        #[inline(always)]
15855        fn max_ordinal_present(&self) -> u64 {
15856            if let Some(_) = self.resp {
15857                return 1;
15858            }
15859            0
15860        }
15861    }
15862
15863    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
15864        type Borrowed<'a> = &'a Self;
15865        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15866            value
15867        }
15868    }
15869
15870    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
15871        type Owned = Self;
15872
15873        #[inline(always)]
15874        fn inline_align(_context: fidl::encoding::Context) -> usize {
15875            8
15876        }
15877
15878        #[inline(always)]
15879        fn inline_size(_context: fidl::encoding::Context) -> usize {
15880            16
15881        }
15882    }
15883
15884    unsafe impl<D: fidl::encoding::ResourceDialect>
15885        fidl::encoding::Encode<WlanFullmacImplQueryTelemetrySupportResponse, D>
15886        for &WlanFullmacImplQueryTelemetrySupportResponse
15887    {
15888        unsafe fn encode(
15889            self,
15890            encoder: &mut fidl::encoding::Encoder<'_, D>,
15891            offset: usize,
15892            mut depth: fidl::encoding::Depth,
15893        ) -> fidl::Result<()> {
15894            encoder.debug_check_bounds::<WlanFullmacImplQueryTelemetrySupportResponse>(offset);
15895            // Vector header
15896            let max_ordinal: u64 = self.max_ordinal_present();
15897            encoder.write_num(max_ordinal, offset);
15898            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15899            // Calling encoder.out_of_line_offset(0) is not allowed.
15900            if max_ordinal == 0 {
15901                return Ok(());
15902            }
15903            depth.increment()?;
15904            let envelope_size = 8;
15905            let bytes_len = max_ordinal as usize * envelope_size;
15906            #[allow(unused_variables)]
15907            let offset = encoder.out_of_line_offset(bytes_len);
15908            let mut _prev_end_offset: usize = 0;
15909            if 1 > max_ordinal {
15910                return Ok(());
15911            }
15912
15913            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15914            // are envelope_size bytes.
15915            let cur_offset: usize = (1 - 1) * envelope_size;
15916
15917            // Zero reserved fields.
15918            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15919
15920            // Safety:
15921            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15922            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15923            //   envelope_size bytes, there is always sufficient room.
15924            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_stats__common::TelemetrySupport, D>(
15925            self.resp.as_ref().map(<fidl_fuchsia_wlan_stats__common::TelemetrySupport as fidl::encoding::ValueTypeMarker>::borrow),
15926            encoder, offset + cur_offset, depth
15927        )?;
15928
15929            _prev_end_offset = cur_offset + envelope_size;
15930
15931            Ok(())
15932        }
15933    }
15934
15935    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15936        for WlanFullmacImplQueryTelemetrySupportResponse
15937    {
15938        #[inline(always)]
15939        fn new_empty() -> Self {
15940            Self::default()
15941        }
15942
15943        unsafe fn decode(
15944            &mut self,
15945            decoder: &mut fidl::encoding::Decoder<'_, D>,
15946            offset: usize,
15947            mut depth: fidl::encoding::Depth,
15948        ) -> fidl::Result<()> {
15949            decoder.debug_check_bounds::<Self>(offset);
15950            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15951                None => return Err(fidl::Error::NotNullable),
15952                Some(len) => len,
15953            };
15954            // Calling decoder.out_of_line_offset(0) is not allowed.
15955            if len == 0 {
15956                return Ok(());
15957            };
15958            depth.increment()?;
15959            let envelope_size = 8;
15960            let bytes_len = len * envelope_size;
15961            let offset = decoder.out_of_line_offset(bytes_len)?;
15962            // Decode the envelope for each type.
15963            let mut _next_ordinal_to_read = 0;
15964            let mut next_offset = offset;
15965            let end_offset = offset + bytes_len;
15966            _next_ordinal_to_read += 1;
15967            if next_offset >= end_offset {
15968                return Ok(());
15969            }
15970
15971            // Decode unknown envelopes for gaps in ordinals.
15972            while _next_ordinal_to_read < 1 {
15973                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15974                _next_ordinal_to_read += 1;
15975                next_offset += envelope_size;
15976            }
15977
15978            let next_out_of_line = decoder.next_out_of_line();
15979            let handles_before = decoder.remaining_handles();
15980            if let Some((inlined, num_bytes, num_handles)) =
15981                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15982            {
15983                let member_inline_size = <fidl_fuchsia_wlan_stats__common::TelemetrySupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15984                if inlined != (member_inline_size <= 4) {
15985                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15986                }
15987                let inner_offset;
15988                let mut inner_depth = depth.clone();
15989                if inlined {
15990                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15991                    inner_offset = next_offset;
15992                } else {
15993                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15994                    inner_depth.increment()?;
15995                }
15996                let val_ref = self.resp.get_or_insert_with(|| {
15997                    fidl::new_empty!(fidl_fuchsia_wlan_stats__common::TelemetrySupport, D)
15998                });
15999                fidl::decode!(
16000                    fidl_fuchsia_wlan_stats__common::TelemetrySupport,
16001                    D,
16002                    val_ref,
16003                    decoder,
16004                    inner_offset,
16005                    inner_depth
16006                )?;
16007                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16008                {
16009                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16010                }
16011                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16012                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16013                }
16014            }
16015
16016            next_offset += envelope_size;
16017
16018            // Decode the remaining unknown envelopes.
16019            while next_offset < end_offset {
16020                _next_ordinal_to_read += 1;
16021                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16022                next_offset += envelope_size;
16023            }
16024
16025            Ok(())
16026        }
16027    }
16028
16029    impl WlanFullmacImplQueryResponse {
16030        #[inline(always)]
16031        fn max_ordinal_present(&self) -> u64 {
16032            if let Some(_) = self.factory_addr {
16033                return 4;
16034            }
16035            if let Some(_) = self.band_caps {
16036                return 3;
16037            }
16038            if let Some(_) = self.role {
16039                return 2;
16040            }
16041            if let Some(_) = self.sta_addr {
16042                return 1;
16043            }
16044            0
16045        }
16046    }
16047
16048    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryResponse {
16049        type Borrowed<'a> = &'a Self;
16050        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16051            value
16052        }
16053    }
16054
16055    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryResponse {
16056        type Owned = Self;
16057
16058        #[inline(always)]
16059        fn inline_align(_context: fidl::encoding::Context) -> usize {
16060            8
16061        }
16062
16063        #[inline(always)]
16064        fn inline_size(_context: fidl::encoding::Context) -> usize {
16065            16
16066        }
16067    }
16068
16069    unsafe impl<D: fidl::encoding::ResourceDialect>
16070        fidl::encoding::Encode<WlanFullmacImplQueryResponse, D> for &WlanFullmacImplQueryResponse
16071    {
16072        unsafe fn encode(
16073            self,
16074            encoder: &mut fidl::encoding::Encoder<'_, D>,
16075            offset: usize,
16076            mut depth: fidl::encoding::Depth,
16077        ) -> fidl::Result<()> {
16078            encoder.debug_check_bounds::<WlanFullmacImplQueryResponse>(offset);
16079            // Vector header
16080            let max_ordinal: u64 = self.max_ordinal_present();
16081            encoder.write_num(max_ordinal, offset);
16082            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16083            // Calling encoder.out_of_line_offset(0) is not allowed.
16084            if max_ordinal == 0 {
16085                return Ok(());
16086            }
16087            depth.increment()?;
16088            let envelope_size = 8;
16089            let bytes_len = max_ordinal as usize * envelope_size;
16090            #[allow(unused_variables)]
16091            let offset = encoder.out_of_line_offset(bytes_len);
16092            let mut _prev_end_offset: usize = 0;
16093            if 1 > max_ordinal {
16094                return Ok(());
16095            }
16096
16097            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16098            // are envelope_size bytes.
16099            let cur_offset: usize = (1 - 1) * envelope_size;
16100
16101            // Zero reserved fields.
16102            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16103
16104            // Safety:
16105            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16106            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16107            //   envelope_size bytes, there is always sufficient room.
16108            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
16109                self.sta_addr
16110                    .as_ref()
16111                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
16112                encoder,
16113                offset + cur_offset,
16114                depth,
16115            )?;
16116
16117            _prev_end_offset = cur_offset + envelope_size;
16118            if 2 > max_ordinal {
16119                return Ok(());
16120            }
16121
16122            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16123            // are envelope_size bytes.
16124            let cur_offset: usize = (2 - 1) * envelope_size;
16125
16126            // Zero reserved fields.
16127            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16128
16129            // Safety:
16130            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16131            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16132            //   envelope_size bytes, there is always sufficient room.
16133            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::WlanMacRole, D>(
16134            self.role.as_ref().map(<fidl_fuchsia_wlan_common__common::WlanMacRole as fidl::encoding::ValueTypeMarker>::borrow),
16135            encoder, offset + cur_offset, depth
16136        )?;
16137
16138            _prev_end_offset = cur_offset + envelope_size;
16139            if 3 > max_ordinal {
16140                return Ok(());
16141            }
16142
16143            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16144            // are envelope_size bytes.
16145            let cur_offset: usize = (3 - 1) * envelope_size;
16146
16147            // Zero reserved fields.
16148            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16149
16150            // Safety:
16151            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16152            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16153            //   envelope_size bytes, there is always sufficient room.
16154            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BandCapability, 16>, D>(
16155            self.band_caps.as_ref().map(<fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::ValueTypeMarker>::borrow),
16156            encoder, offset + cur_offset, depth
16157        )?;
16158
16159            _prev_end_offset = cur_offset + envelope_size;
16160            if 4 > max_ordinal {
16161                return Ok(());
16162            }
16163
16164            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16165            // are envelope_size bytes.
16166            let cur_offset: usize = (4 - 1) * envelope_size;
16167
16168            // Zero reserved fields.
16169            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16170
16171            // Safety:
16172            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16173            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16174            //   envelope_size bytes, there is always sufficient room.
16175            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
16176                self.factory_addr
16177                    .as_ref()
16178                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
16179                encoder,
16180                offset + cur_offset,
16181                depth,
16182            )?;
16183
16184            _prev_end_offset = cur_offset + envelope_size;
16185
16186            Ok(())
16187        }
16188    }
16189
16190    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16191        for WlanFullmacImplQueryResponse
16192    {
16193        #[inline(always)]
16194        fn new_empty() -> Self {
16195            Self::default()
16196        }
16197
16198        unsafe fn decode(
16199            &mut self,
16200            decoder: &mut fidl::encoding::Decoder<'_, D>,
16201            offset: usize,
16202            mut depth: fidl::encoding::Depth,
16203        ) -> fidl::Result<()> {
16204            decoder.debug_check_bounds::<Self>(offset);
16205            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16206                None => return Err(fidl::Error::NotNullable),
16207                Some(len) => len,
16208            };
16209            // Calling decoder.out_of_line_offset(0) is not allowed.
16210            if len == 0 {
16211                return Ok(());
16212            };
16213            depth.increment()?;
16214            let envelope_size = 8;
16215            let bytes_len = len * envelope_size;
16216            let offset = decoder.out_of_line_offset(bytes_len)?;
16217            // Decode the envelope for each type.
16218            let mut _next_ordinal_to_read = 0;
16219            let mut next_offset = offset;
16220            let end_offset = offset + bytes_len;
16221            _next_ordinal_to_read += 1;
16222            if next_offset >= end_offset {
16223                return Ok(());
16224            }
16225
16226            // Decode unknown envelopes for gaps in ordinals.
16227            while _next_ordinal_to_read < 1 {
16228                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16229                _next_ordinal_to_read += 1;
16230                next_offset += envelope_size;
16231            }
16232
16233            let next_out_of_line = decoder.next_out_of_line();
16234            let handles_before = decoder.remaining_handles();
16235            if let Some((inlined, num_bytes, num_handles)) =
16236                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16237            {
16238                let member_inline_size =
16239                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
16240                        decoder.context,
16241                    );
16242                if inlined != (member_inline_size <= 4) {
16243                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16244                }
16245                let inner_offset;
16246                let mut inner_depth = depth.clone();
16247                if inlined {
16248                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16249                    inner_offset = next_offset;
16250                } else {
16251                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16252                    inner_depth.increment()?;
16253                }
16254                let val_ref = self
16255                    .sta_addr
16256                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
16257                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
16258                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16259                {
16260                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16261                }
16262                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16263                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16264                }
16265            }
16266
16267            next_offset += envelope_size;
16268            _next_ordinal_to_read += 1;
16269            if next_offset >= end_offset {
16270                return Ok(());
16271            }
16272
16273            // Decode unknown envelopes for gaps in ordinals.
16274            while _next_ordinal_to_read < 2 {
16275                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16276                _next_ordinal_to_read += 1;
16277                next_offset += envelope_size;
16278            }
16279
16280            let next_out_of_line = decoder.next_out_of_line();
16281            let handles_before = decoder.remaining_handles();
16282            if let Some((inlined, num_bytes, num_handles)) =
16283                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16284            {
16285                let member_inline_size = <fidl_fuchsia_wlan_common__common::WlanMacRole as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16286                if inlined != (member_inline_size <= 4) {
16287                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16288                }
16289                let inner_offset;
16290                let mut inner_depth = depth.clone();
16291                if inlined {
16292                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16293                    inner_offset = next_offset;
16294                } else {
16295                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16296                    inner_depth.increment()?;
16297                }
16298                let val_ref = self.role.get_or_insert_with(|| {
16299                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanMacRole, D)
16300                });
16301                fidl::decode!(
16302                    fidl_fuchsia_wlan_common__common::WlanMacRole,
16303                    D,
16304                    val_ref,
16305                    decoder,
16306                    inner_offset,
16307                    inner_depth
16308                )?;
16309                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16310                {
16311                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16312                }
16313                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16314                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16315                }
16316            }
16317
16318            next_offset += envelope_size;
16319            _next_ordinal_to_read += 1;
16320            if next_offset >= end_offset {
16321                return Ok(());
16322            }
16323
16324            // Decode unknown envelopes for gaps in ordinals.
16325            while _next_ordinal_to_read < 3 {
16326                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16327                _next_ordinal_to_read += 1;
16328                next_offset += envelope_size;
16329            }
16330
16331            let next_out_of_line = decoder.next_out_of_line();
16332            let handles_before = decoder.remaining_handles();
16333            if let Some((inlined, num_bytes, num_handles)) =
16334                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16335            {
16336                let member_inline_size = <fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16337                if inlined != (member_inline_size <= 4) {
16338                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16339                }
16340                let inner_offset;
16341                let mut inner_depth = depth.clone();
16342                if inlined {
16343                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16344                    inner_offset = next_offset;
16345                } else {
16346                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16347                    inner_depth.increment()?;
16348                }
16349                let val_ref = self.band_caps.get_or_insert_with(
16350                    || fidl::new_empty!(fidl::encoding::Vector<BandCapability, 16>, D),
16351                );
16352                fidl::decode!(fidl::encoding::Vector<BandCapability, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
16353                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16354                {
16355                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16356                }
16357                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16358                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16359                }
16360            }
16361
16362            next_offset += envelope_size;
16363            _next_ordinal_to_read += 1;
16364            if next_offset >= end_offset {
16365                return Ok(());
16366            }
16367
16368            // Decode unknown envelopes for gaps in ordinals.
16369            while _next_ordinal_to_read < 4 {
16370                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16371                _next_ordinal_to_read += 1;
16372                next_offset += envelope_size;
16373            }
16374
16375            let next_out_of_line = decoder.next_out_of_line();
16376            let handles_before = decoder.remaining_handles();
16377            if let Some((inlined, num_bytes, num_handles)) =
16378                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16379            {
16380                let member_inline_size =
16381                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
16382                        decoder.context,
16383                    );
16384                if inlined != (member_inline_size <= 4) {
16385                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16386                }
16387                let inner_offset;
16388                let mut inner_depth = depth.clone();
16389                if inlined {
16390                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16391                    inner_offset = next_offset;
16392                } else {
16393                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16394                    inner_depth.increment()?;
16395                }
16396                let val_ref = self
16397                    .factory_addr
16398                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
16399                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
16400                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16401                {
16402                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16403                }
16404                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16405                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16406                }
16407            }
16408
16409            next_offset += envelope_size;
16410
16411            // Decode the remaining unknown envelopes.
16412            while next_offset < end_offset {
16413                _next_ordinal_to_read += 1;
16414                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16415                next_offset += envelope_size;
16416            }
16417
16418            Ok(())
16419        }
16420    }
16421
16422    impl WlanFullmacImplReadApfPacketFilterDataResponse {
16423        #[inline(always)]
16424        fn max_ordinal_present(&self) -> u64 {
16425            if let Some(_) = self.memory {
16426                return 1;
16427            }
16428            0
16429        }
16430    }
16431
16432    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplReadApfPacketFilterDataResponse {
16433        type Borrowed<'a> = &'a Self;
16434        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16435            value
16436        }
16437    }
16438
16439    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplReadApfPacketFilterDataResponse {
16440        type Owned = Self;
16441
16442        #[inline(always)]
16443        fn inline_align(_context: fidl::encoding::Context) -> usize {
16444            8
16445        }
16446
16447        #[inline(always)]
16448        fn inline_size(_context: fidl::encoding::Context) -> usize {
16449            16
16450        }
16451    }
16452
16453    unsafe impl<D: fidl::encoding::ResourceDialect>
16454        fidl::encoding::Encode<WlanFullmacImplReadApfPacketFilterDataResponse, D>
16455        for &WlanFullmacImplReadApfPacketFilterDataResponse
16456    {
16457        unsafe fn encode(
16458            self,
16459            encoder: &mut fidl::encoding::Encoder<'_, D>,
16460            offset: usize,
16461            mut depth: fidl::encoding::Depth,
16462        ) -> fidl::Result<()> {
16463            encoder.debug_check_bounds::<WlanFullmacImplReadApfPacketFilterDataResponse>(offset);
16464            // Vector header
16465            let max_ordinal: u64 = self.max_ordinal_present();
16466            encoder.write_num(max_ordinal, offset);
16467            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16468            // Calling encoder.out_of_line_offset(0) is not allowed.
16469            if max_ordinal == 0 {
16470                return Ok(());
16471            }
16472            depth.increment()?;
16473            let envelope_size = 8;
16474            let bytes_len = max_ordinal as usize * envelope_size;
16475            #[allow(unused_variables)]
16476            let offset = encoder.out_of_line_offset(bytes_len);
16477            let mut _prev_end_offset: usize = 0;
16478            if 1 > max_ordinal {
16479                return Ok(());
16480            }
16481
16482            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16483            // are envelope_size bytes.
16484            let cur_offset: usize = (1 - 1) * envelope_size;
16485
16486            // Zero reserved fields.
16487            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16488
16489            // Safety:
16490            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16491            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16492            //   envelope_size bytes, there is always sufficient room.
16493            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
16494            self.memory.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
16495            encoder, offset + cur_offset, depth
16496        )?;
16497
16498            _prev_end_offset = cur_offset + envelope_size;
16499
16500            Ok(())
16501        }
16502    }
16503
16504    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16505        for WlanFullmacImplReadApfPacketFilterDataResponse
16506    {
16507        #[inline(always)]
16508        fn new_empty() -> Self {
16509            Self::default()
16510        }
16511
16512        unsafe fn decode(
16513            &mut self,
16514            decoder: &mut fidl::encoding::Decoder<'_, D>,
16515            offset: usize,
16516            mut depth: fidl::encoding::Depth,
16517        ) -> fidl::Result<()> {
16518            decoder.debug_check_bounds::<Self>(offset);
16519            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16520                None => return Err(fidl::Error::NotNullable),
16521                Some(len) => len,
16522            };
16523            // Calling decoder.out_of_line_offset(0) is not allowed.
16524            if len == 0 {
16525                return Ok(());
16526            };
16527            depth.increment()?;
16528            let envelope_size = 8;
16529            let bytes_len = len * envelope_size;
16530            let offset = decoder.out_of_line_offset(bytes_len)?;
16531            // Decode the envelope for each type.
16532            let mut _next_ordinal_to_read = 0;
16533            let mut next_offset = offset;
16534            let end_offset = offset + bytes_len;
16535            _next_ordinal_to_read += 1;
16536            if next_offset >= end_offset {
16537                return Ok(());
16538            }
16539
16540            // Decode unknown envelopes for gaps in ordinals.
16541            while _next_ordinal_to_read < 1 {
16542                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16543                _next_ordinal_to_read += 1;
16544                next_offset += envelope_size;
16545            }
16546
16547            let next_out_of_line = decoder.next_out_of_line();
16548            let handles_before = decoder.remaining_handles();
16549            if let Some((inlined, num_bytes, num_handles)) =
16550                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16551            {
16552                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16553                if inlined != (member_inline_size <= 4) {
16554                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16555                }
16556                let inner_offset;
16557                let mut inner_depth = depth.clone();
16558                if inlined {
16559                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16560                    inner_offset = next_offset;
16561                } else {
16562                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16563                    inner_depth.increment()?;
16564                }
16565                let val_ref = self.memory.get_or_insert_with(|| {
16566                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
16567                });
16568                fidl::decode!(
16569                    fidl::encoding::UnboundedVector<u8>,
16570                    D,
16571                    val_ref,
16572                    decoder,
16573                    inner_offset,
16574                    inner_depth
16575                )?;
16576                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16577                {
16578                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16579                }
16580                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16581                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16582                }
16583            }
16584
16585            next_offset += envelope_size;
16586
16587            // Decode the remaining unknown envelopes.
16588            while next_offset < end_offset {
16589                _next_ordinal_to_read += 1;
16590                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16591                next_offset += envelope_size;
16592            }
16593
16594            Ok(())
16595        }
16596    }
16597
16598    impl WlanFullmacOwePublicKey {
16599        #[inline(always)]
16600        fn max_ordinal_present(&self) -> u64 {
16601            if let Some(_) = self.key {
16602                return 2;
16603            }
16604            if let Some(_) = self.group {
16605                return 1;
16606            }
16607            0
16608        }
16609    }
16610
16611    impl fidl::encoding::ValueTypeMarker for WlanFullmacOwePublicKey {
16612        type Borrowed<'a> = &'a Self;
16613        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16614            value
16615        }
16616    }
16617
16618    unsafe impl fidl::encoding::TypeMarker for WlanFullmacOwePublicKey {
16619        type Owned = Self;
16620
16621        #[inline(always)]
16622        fn inline_align(_context: fidl::encoding::Context) -> usize {
16623            8
16624        }
16625
16626        #[inline(always)]
16627        fn inline_size(_context: fidl::encoding::Context) -> usize {
16628            16
16629        }
16630    }
16631
16632    unsafe impl<D: fidl::encoding::ResourceDialect>
16633        fidl::encoding::Encode<WlanFullmacOwePublicKey, D> for &WlanFullmacOwePublicKey
16634    {
16635        unsafe fn encode(
16636            self,
16637            encoder: &mut fidl::encoding::Encoder<'_, D>,
16638            offset: usize,
16639            mut depth: fidl::encoding::Depth,
16640        ) -> fidl::Result<()> {
16641            encoder.debug_check_bounds::<WlanFullmacOwePublicKey>(offset);
16642            // Vector header
16643            let max_ordinal: u64 = self.max_ordinal_present();
16644            encoder.write_num(max_ordinal, offset);
16645            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16646            // Calling encoder.out_of_line_offset(0) is not allowed.
16647            if max_ordinal == 0 {
16648                return Ok(());
16649            }
16650            depth.increment()?;
16651            let envelope_size = 8;
16652            let bytes_len = max_ordinal as usize * envelope_size;
16653            #[allow(unused_variables)]
16654            let offset = encoder.out_of_line_offset(bytes_len);
16655            let mut _prev_end_offset: usize = 0;
16656            if 1 > max_ordinal {
16657                return Ok(());
16658            }
16659
16660            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16661            // are envelope_size bytes.
16662            let cur_offset: usize = (1 - 1) * envelope_size;
16663
16664            // Zero reserved fields.
16665            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16666
16667            // Safety:
16668            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16669            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16670            //   envelope_size bytes, there is always sufficient room.
16671            fidl::encoding::encode_in_envelope_optional::<u16, D>(
16672                self.group.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
16673                encoder,
16674                offset + cur_offset,
16675                depth,
16676            )?;
16677
16678            _prev_end_offset = cur_offset + envelope_size;
16679            if 2 > max_ordinal {
16680                return Ok(());
16681            }
16682
16683            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16684            // are envelope_size bytes.
16685            let cur_offset: usize = (2 - 1) * envelope_size;
16686
16687            // Zero reserved fields.
16688            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16689
16690            // Safety:
16691            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16692            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16693            //   envelope_size bytes, there is always sufficient room.
16694            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
16695            self.key.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
16696            encoder, offset + cur_offset, depth
16697        )?;
16698
16699            _prev_end_offset = cur_offset + envelope_size;
16700
16701            Ok(())
16702        }
16703    }
16704
16705    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16706        for WlanFullmacOwePublicKey
16707    {
16708        #[inline(always)]
16709        fn new_empty() -> Self {
16710            Self::default()
16711        }
16712
16713        unsafe fn decode(
16714            &mut self,
16715            decoder: &mut fidl::encoding::Decoder<'_, D>,
16716            offset: usize,
16717            mut depth: fidl::encoding::Depth,
16718        ) -> fidl::Result<()> {
16719            decoder.debug_check_bounds::<Self>(offset);
16720            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16721                None => return Err(fidl::Error::NotNullable),
16722                Some(len) => len,
16723            };
16724            // Calling decoder.out_of_line_offset(0) is not allowed.
16725            if len == 0 {
16726                return Ok(());
16727            };
16728            depth.increment()?;
16729            let envelope_size = 8;
16730            let bytes_len = len * envelope_size;
16731            let offset = decoder.out_of_line_offset(bytes_len)?;
16732            // Decode the envelope for each type.
16733            let mut _next_ordinal_to_read = 0;
16734            let mut next_offset = offset;
16735            let end_offset = offset + bytes_len;
16736            _next_ordinal_to_read += 1;
16737            if next_offset >= end_offset {
16738                return Ok(());
16739            }
16740
16741            // Decode unknown envelopes for gaps in ordinals.
16742            while _next_ordinal_to_read < 1 {
16743                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16744                _next_ordinal_to_read += 1;
16745                next_offset += envelope_size;
16746            }
16747
16748            let next_out_of_line = decoder.next_out_of_line();
16749            let handles_before = decoder.remaining_handles();
16750            if let Some((inlined, num_bytes, num_handles)) =
16751                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16752            {
16753                let member_inline_size =
16754                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16755                if inlined != (member_inline_size <= 4) {
16756                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16757                }
16758                let inner_offset;
16759                let mut inner_depth = depth.clone();
16760                if inlined {
16761                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16762                    inner_offset = next_offset;
16763                } else {
16764                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16765                    inner_depth.increment()?;
16766                }
16767                let val_ref = self.group.get_or_insert_with(|| fidl::new_empty!(u16, D));
16768                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
16769                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16770                {
16771                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16772                }
16773                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16774                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16775                }
16776            }
16777
16778            next_offset += envelope_size;
16779            _next_ordinal_to_read += 1;
16780            if next_offset >= end_offset {
16781                return Ok(());
16782            }
16783
16784            // Decode unknown envelopes for gaps in ordinals.
16785            while _next_ordinal_to_read < 2 {
16786                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16787                _next_ordinal_to_read += 1;
16788                next_offset += envelope_size;
16789            }
16790
16791            let next_out_of_line = decoder.next_out_of_line();
16792            let handles_before = decoder.remaining_handles();
16793            if let Some((inlined, num_bytes, num_handles)) =
16794                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16795            {
16796                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16797                if inlined != (member_inline_size <= 4) {
16798                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16799                }
16800                let inner_offset;
16801                let mut inner_depth = depth.clone();
16802                if inlined {
16803                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16804                    inner_offset = next_offset;
16805                } else {
16806                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16807                    inner_depth.increment()?;
16808                }
16809                let val_ref = self.key.get_or_insert_with(|| {
16810                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
16811                });
16812                fidl::decode!(
16813                    fidl::encoding::UnboundedVector<u8>,
16814                    D,
16815                    val_ref,
16816                    decoder,
16817                    inner_offset,
16818                    inner_depth
16819                )?;
16820                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16821                {
16822                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16823                }
16824                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16825                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16826                }
16827            }
16828
16829            next_offset += envelope_size;
16830
16831            // Decode the remaining unknown envelopes.
16832            while next_offset < end_offset {
16833                _next_ordinal_to_read += 1;
16834                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16835                next_offset += envelope_size;
16836            }
16837
16838            Ok(())
16839        }
16840    }
16841}