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_common__common::WlanWmmParameters,
597}
598
599impl fidl::Persistable for WlanFullmacImplIfcOnWmmStatusRespRequest {}
600
601#[derive(Clone, Debug, PartialEq)]
602pub struct WlanFullmacImplIfcSaeFrameRxRequest {
603    pub frame: SaeFrame,
604}
605
606impl fidl::Persistable for WlanFullmacImplIfcSaeFrameRxRequest {}
607
608#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
609#[repr(C)]
610pub struct WlanFullmacImplIfcSignalReportRequest {
611    pub ind: WlanFullmacSignalReportIndication,
612}
613
614impl fidl::Persistable for WlanFullmacImplIfcSignalReportRequest {}
615
616#[derive(Clone, Debug, PartialEq)]
617pub struct WlanFullmacImplSaeFrameTxRequest {
618    pub frame: SaeFrame,
619}
620
621impl fidl::Persistable for WlanFullmacImplSaeFrameTxRequest {}
622
623#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
624pub struct WlanFullmacImplSetKeysResponse {
625    pub resp: WlanFullmacSetKeysResp,
626}
627
628impl fidl::Persistable for WlanFullmacImplSetKeysResponse {}
629
630#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
631#[repr(C)]
632pub struct WlanFullmacImplSetMacAddressRequest {
633    pub mac_addr: [u8; 6],
634}
635
636impl fidl::Persistable for WlanFullmacImplSetMacAddressRequest {}
637
638#[derive(Clone, Debug, PartialEq)]
639pub struct WlanFullmacImplGetIfaceHistogramStatsResponse {
640    pub stats: fidl_fuchsia_wlan_stats__common::IfaceHistogramStats,
641}
642
643impl fidl::Persistable for WlanFullmacImplGetIfaceHistogramStatsResponse {}
644
645#[derive(Clone, Debug, PartialEq)]
646pub struct WlanFullmacImplGetIfaceStatsResponse {
647    pub stats: fidl_fuchsia_wlan_stats__common::IfaceStats,
648}
649
650impl fidl::Persistable for WlanFullmacImplGetIfaceStatsResponse {}
651
652#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
653pub struct WlanFullmacRssiStats {
654    pub hist: Vec<u64>,
655}
656
657impl fidl::Persistable for WlanFullmacRssiStats {}
658
659#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
660pub struct WlanFullmacSetKeysResp {
661    pub statuslist: Vec<i32>,
662}
663
664impl fidl::Persistable for WlanFullmacSetKeysResp {}
665
666#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
667#[repr(C)]
668pub struct WlanFullmacSignalReportIndication {
669    pub rssi_dbm: i8,
670    pub snr_db: i8,
671}
672
673impl fidl::Persistable for WlanFullmacSignalReportIndication {}
674
675/// Describes parameters and capabilities for a single WlanBand.
676#[derive(Clone, Debug, Default, PartialEq)]
677pub struct BandCapability {
678    /// The values of this table apply to the band indicated in this field.
679    ///
680    /// Required.
681    pub band: Option<fidl_fuchsia_wlan_ieee80211__common::WlanBand>,
682    /// Basic rates supported in units of 500 kbit/s (as defined in
683    /// IEEE Std 802.11-2016, 9.4.2.3), e.g., 0x02 represents 1 Mbps.
684    /// The value returned by this type indicates all the non-HT rates
685    /// the device supports transmitting and receiving.
686    ///
687    /// Required.
688    pub basic_rates: Option<Vec<u8>>,
689    /// HT PHY mode capabilities.
690    ///
691    /// Optional. If this field is not present, then the device does not support HT PHY mode in this
692    /// band.
693    pub ht_caps: Option<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
694    /// VHT PHY mode capabilities.
695    ///
696    /// Optional. If this field is not present, then the device does not support VHT PHY mode in
697    /// this band.
698    pub vht_caps: Option<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
699    /// A list of operating channels considered valid by hardware, in the context of
700    /// regulatory information known to the device driver, at the time of its
701    /// construction during iface creation. In this context, an operating channel
702    /// means a channel which APs may transmit Beacon frames on in the current
703    /// regulatory domain.
704    ///
705    /// This list should be used to determine efficacy of subsequent requests to
706    /// scan a subset of channels using the iface, or to determine which operating
707    /// channel to use when starting an AP.
708    ///
709    /// Required.
710    pub operating_channels: Option<Vec<u8>>,
711    #[doc(hidden)]
712    pub __source_breaking: fidl::marker::SourceBreaking,
713}
714
715impl fidl::Persistable for BandCapability {}
716
717/// Contains the information of SAE authentication frames. Shared between transmit and receive
718/// directions, see WlanFullmacImplIfc::SaeFrameRx and WlanFullmacImpl::SaeFrameTx.
719#[derive(Clone, Debug, Default, PartialEq)]
720pub struct SaeFrame {
721    /// The peer's MAC address. Required.
722    pub peer_sta_address: Option<[u8; 6]>,
723    /// The status code for this SAE frame. Required.
724    pub status_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
725    /// The sequence number. Required.
726    pub seq_num: Option<u16>,
727    /// Contains fields in the frame body relevant to SAE.
728    /// See IEEE Std 802.11-2016 table 9-35 and table 9-36 for more details.
729    /// Required.
730    pub sae_fields: Option<Vec<u8>>,
731    #[doc(hidden)]
732    pub __source_breaking: fidl::marker::SourceBreaking,
733}
734
735impl fidl::Persistable for SaeFrame {}
736
737#[derive(Clone, Debug, Default, PartialEq)]
738pub struct WlanFullmacImplAssocRespRequest {
739    pub peer_sta_address: Option<[u8; 6]>,
740    pub result_code: Option<WlanAssocResult>,
741    pub association_id: Option<u16>,
742    #[doc(hidden)]
743    pub __source_breaking: fidl::marker::SourceBreaking,
744}
745
746impl fidl::Persistable for WlanFullmacImplAssocRespRequest {}
747
748#[derive(Clone, Debug, Default, PartialEq)]
749pub struct WlanFullmacImplAuthRespRequest {
750    pub peer_sta_address: Option<[u8; 6]>,
751    pub result_code: Option<WlanAuthResult>,
752    #[doc(hidden)]
753    pub __source_breaking: fidl::marker::SourceBreaking,
754}
755
756impl fidl::Persistable for WlanFullmacImplAuthRespRequest {}
757
758#[derive(Clone, Debug, Default, PartialEq)]
759pub struct WlanFullmacImplConnectRequest {
760    pub selected_bss: Option<fidl_fuchsia_wlan_common__common::BssDescription>,
761    /// Timeout specified in beacon interval.
762    pub connect_failure_timeout: Option<u32>,
763    /// Additional parameters specific to the authentication exchange.
764    pub auth_type: Option<WlanAuthType>,
765    /// sae_password is ignored except when SAE_DRIVER_AUTH is enabled and the
766    /// auth_type is SAE.
767    pub sae_password: Option<Vec<u8>>,
768    /// WEP key used in the authentication exchange.
769    /// This is only populated for the WEP security type, otherwise this field is empty.
770    pub wep_key: Option<fidl_fuchsia_wlan_common__common::WlanKeyConfig>,
771    /// Additional parameters specific to the association exchange.
772    pub security_ie: Option<Vec<u8>>,
773    /// WEP key used in the authentication exchange.
774    /// This is only populated for the WEP security type, otherwise this field is empty.
775    pub wep_key_desc: Option<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor>,
776    /// OWE public key used for Diffie Hellman exchange during association.
777    /// This is only populated for the OWE security type, otherwise this field is empty.
778    pub owe_public_key: Option<WlanFullmacOwePublicKey>,
779    #[doc(hidden)]
780    pub __source_breaking: fidl::marker::SourceBreaking,
781}
782
783impl fidl::Persistable for WlanFullmacImplConnectRequest {}
784
785#[derive(Clone, Debug, Default, PartialEq)]
786pub struct WlanFullmacImplDeauthRequest {
787    pub peer_sta_address: Option<[u8; 6]>,
788    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
789    #[doc(hidden)]
790    pub __source_breaking: fidl::marker::SourceBreaking,
791}
792
793impl fidl::Persistable for WlanFullmacImplDeauthRequest {}
794
795#[derive(Clone, Debug, Default, PartialEq)]
796pub struct WlanFullmacImplDisassocRequest {
797    pub peer_sta_address: Option<[u8; 6]>,
798    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
799    #[doc(hidden)]
800    pub __source_breaking: fidl::marker::SourceBreaking,
801}
802
803impl fidl::Persistable for WlanFullmacImplDisassocRequest {}
804
805#[derive(Clone, Debug, Default, PartialEq)]
806pub struct WlanFullmacImplEapolTxRequest {
807    pub src_addr: Option<[u8; 6]>,
808    pub dst_addr: Option<[u8; 6]>,
809    pub data: Option<Vec<u8>>,
810    #[doc(hidden)]
811    pub __source_breaking: fidl::marker::SourceBreaking,
812}
813
814impl fidl::Persistable for WlanFullmacImplEapolTxRequest {}
815
816#[derive(Clone, Debug, Default, PartialEq)]
817pub struct WlanFullmacImplIfcAssocIndRequest {
818    pub peer_sta_address: Option<[u8; 6]>,
819    pub listen_interval: Option<u16>,
820    pub ssid: Option<Vec<u8>>,
821    pub rsne: Option<Vec<u8>>,
822    pub vendor_ie: Option<Vec<u8>>,
823    #[doc(hidden)]
824    pub __source_breaking: fidl::marker::SourceBreaking,
825}
826
827impl fidl::Persistable for WlanFullmacImplIfcAssocIndRequest {}
828
829#[derive(Clone, Debug, Default, PartialEq)]
830pub struct WlanFullmacImplIfcAuthIndRequest {
831    pub peer_sta_address: Option<[u8; 6]>,
832    pub auth_type: Option<WlanAuthType>,
833    #[doc(hidden)]
834    pub __source_breaking: fidl::marker::SourceBreaking,
835}
836
837impl fidl::Persistable for WlanFullmacImplIfcAuthIndRequest {}
838
839#[derive(Clone, Debug, Default, PartialEq)]
840pub struct WlanFullmacImplIfcConnectConfRequest {
841    pub peer_sta_address: Option<[u8; 6]>,
842    pub result_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
843    pub association_id: Option<u16>,
844    pub association_ies: Option<Vec<u8>>,
845    #[doc(hidden)]
846    pub __source_breaking: fidl::marker::SourceBreaking,
847}
848
849impl fidl::Persistable for WlanFullmacImplIfcConnectConfRequest {}
850
851#[derive(Clone, Debug, Default, PartialEq)]
852pub struct WlanFullmacImplIfcDeauthConfRequest {
853    pub peer_sta_address: Option<[u8; 6]>,
854    #[doc(hidden)]
855    pub __source_breaking: fidl::marker::SourceBreaking,
856}
857
858impl fidl::Persistable for WlanFullmacImplIfcDeauthConfRequest {}
859
860#[derive(Clone, Debug, Default, PartialEq)]
861pub struct WlanFullmacImplIfcDeauthIndRequest {
862    /// MAC address of the peer. Required.
863    pub peer_sta_address: Option<[u8; 6]>,
864    /// Reason code for deauthentication. Required.
865    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
866    /// locally_initiated is true if deauth is initiated from the device,
867    /// and is false if it's initiated remotely (e.g. due to deauth frame)
868    pub locally_initiated: Option<bool>,
869    #[doc(hidden)]
870    pub __source_breaking: fidl::marker::SourceBreaking,
871}
872
873impl fidl::Persistable for WlanFullmacImplIfcDeauthIndRequest {}
874
875#[derive(Clone, Debug, Default, PartialEq)]
876pub struct WlanFullmacImplIfcDisassocConfRequest {
877    /// ZX_OK indicates that the disassociate request was serviced and the peer was
878    /// disassociated. Other errors indicate that the request could not be serviced, for these
879    /// or other reasons:
880    ///   - ZX_ERR_BAD_STATE: association not possible in current state (e.g. disconnected)
881    ///   - ZX_ERR_INVALID_ARGS: no association exists with specified peer
882    ///   - ZX_ERR_SHOULD_WAIT: disassociate request could not be serviced because firmware or
883    ///     driver was busy
884    pub status: Option<i32>,
885    #[doc(hidden)]
886    pub __source_breaking: fidl::marker::SourceBreaking,
887}
888
889impl fidl::Persistable for WlanFullmacImplIfcDisassocConfRequest {}
890
891#[derive(Clone, Debug, Default, PartialEq)]
892pub struct WlanFullmacImplIfcDisassocIndRequest {
893    /// Address of the peer that was disassociated. Required.
894    pub peer_sta_address: Option<[u8; 6]>,
895    /// Reason for the disassociation. Required.
896    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
897    /// Whether the disassociation was initiated from the device. Required.
898    /// locally_initiated is true if disassociation was initiated from the device (e.g. firmware
899    /// or vendor driver started the disassociation); false if the disassociation was initiated
900    /// externally (e.g. due to receipt of a disassociate frame from an AP).
901    pub locally_initiated: Option<bool>,
902    #[doc(hidden)]
903    pub __source_breaking: fidl::marker::SourceBreaking,
904}
905
906impl fidl::Persistable for WlanFullmacImplIfcDisassocIndRequest {}
907
908#[derive(Clone, Debug, Default, PartialEq)]
909pub struct WlanFullmacImplIfcEapolConfRequest {
910    /// The result of the transmission. Required.
911    pub result_code: Option<EapolTxResult>,
912    /// This value corresponds to the dst_addr in the EapolTxRequest we're confirming.
913    /// IEEE 802.11-2020 does not include this field, but we need it to disambiguate
914    /// if multiple EAPoL handshakes are ongoing.
915    /// Required.
916    pub dst_addr: Option<[u8; 6]>,
917    #[doc(hidden)]
918    pub __source_breaking: fidl::marker::SourceBreaking,
919}
920
921impl fidl::Persistable for WlanFullmacImplIfcEapolConfRequest {}
922
923#[derive(Clone, Debug, Default, PartialEq)]
924pub struct WlanFullmacImplIfcEapolIndRequest {
925    /// The address of the sender. Required.
926    pub src_addr: Option<[u8; 6]>,
927    /// The address of the intended destination. Required.
928    pub dst_addr: Option<[u8; 6]>,
929    /// The bytes of the EAPoL frame data. Required.
930    pub data: Option<Vec<u8>>,
931    #[doc(hidden)]
932    pub __source_breaking: fidl::marker::SourceBreaking,
933}
934
935impl fidl::Persistable for WlanFullmacImplIfcEapolIndRequest {}
936
937#[derive(Clone, Debug, Default, PartialEq)]
938pub struct WlanFullmacImplIfcOnPmkAvailableRequest {
939    /// The pairwise master key bytes. Required.
940    pub pmk: Option<Vec<u8>>,
941    /// The PMK IDs. Required.
942    pub pmkid: Option<Vec<u8>>,
943    #[doc(hidden)]
944    pub __source_breaking: fidl::marker::SourceBreaking,
945}
946
947impl fidl::Persistable for WlanFullmacImplIfcOnPmkAvailableRequest {}
948
949#[derive(Clone, Debug, Default, PartialEq)]
950pub struct WlanFullmacImplIfcOnScanEndRequest {
951    pub txn_id: Option<u64>,
952    pub code: Option<WlanScanResult>,
953    #[doc(hidden)]
954    pub __source_breaking: fidl::marker::SourceBreaking,
955}
956
957impl fidl::Persistable for WlanFullmacImplIfcOnScanEndRequest {}
958
959#[derive(Clone, Debug, Default, PartialEq)]
960pub struct WlanFullmacImplIfcOnScanResultRequest {
961    pub txn_id: Option<u64>,
962    pub timestamp_nanos: Option<i64>,
963    pub bss: Option<fidl_fuchsia_wlan_common__common::BssDescription>,
964    #[doc(hidden)]
965    pub __source_breaking: fidl::marker::SourceBreaking,
966}
967
968impl fidl::Persistable for WlanFullmacImplIfcOnScanResultRequest {}
969
970#[derive(Clone, Debug, Default, PartialEq)]
971pub struct WlanFullmacImplIfcRoamConfRequest {
972    /// BSSID of the target BSS. Required.
973    pub selected_bssid: Option<[u8; 6]>,
974    /// Result of the roam attempt. Required.
975    pub status_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
976    /// Whether the original BSS association has been maintained through the roam attempt. Required.
977    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
978    /// success then this field must be set to false; a roam failure typically incurs disassociation
979    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
980    pub original_association_maintained: Option<bool>,
981    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
982    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
983    /// This allows higher layers to decide how to clean up connection state after a failed roam
984    /// attempt.
985    pub target_bss_authenticated: Option<bool>,
986    /// Association ID for this association with the AP. Required if `status_code` is success.
987    pub association_id: Option<u16>,
988    /// IEs for this association with the AP. Required if `status_code` is success.
989    pub association_ies: Option<Vec<u8>>,
990    #[doc(hidden)]
991    pub __source_breaking: fidl::marker::SourceBreaking,
992}
993
994impl fidl::Persistable for WlanFullmacImplIfcRoamConfRequest {}
995
996#[derive(Clone, Debug, Default, PartialEq)]
997pub struct WlanFullmacImplIfcRoamResultIndRequest {
998    /// BSSID of the target BSS. Required.
999    pub selected_bssid: Option<[u8; 6]>,
1000    /// Result of the roam attempt. Required.
1001    pub status_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
1002    /// Whether the original BSS association has been maintained through the roam attempt. Required.
1003    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1004    /// success then this field must be set to false; a roam failure typically incurs disassociation
1005    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1006    pub original_association_maintained: Option<bool>,
1007    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1008    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1009    /// This allows higher layers to decide how to clean up connection state after a failed roam
1010    /// attempt.
1011    pub target_bss_authenticated: Option<bool>,
1012    /// Association ID for this association with the AP. Required if `status_code` is success.
1013    pub association_id: Option<u16>,
1014    /// IEs for this association with the AP. Required if `status_code` is success.
1015    pub association_ies: Option<Vec<u8>>,
1016    #[doc(hidden)]
1017    pub __source_breaking: fidl::marker::SourceBreaking,
1018}
1019
1020impl fidl::Persistable for WlanFullmacImplIfcRoamResultIndRequest {}
1021
1022#[derive(Clone, Debug, Default, PartialEq)]
1023pub struct WlanFullmacImplIfcRoamStartIndRequest {
1024    /// BSSID of the target BSS. Required.
1025    pub selected_bssid: Option<[u8; 6]>,
1026    /// Full BSS description of the target BSS. Required.
1027    /// If the data in BssDescription is incorrect or incomplete, the roam cannot succeed,
1028    /// because higher layers will not be able to complete required actions (e.g. SAE).
1029    pub selected_bss: Option<fidl_fuchsia_wlan_common__common::BssDescription>,
1030    /// Whether the original BSS association has been maintained at the start of a roam attempt.
1031    /// Required. 802.11 dictates that a STA can only be associated with a single BSS, so a roam
1032    /// attempt typically incurs disassociation at the start of the roam attempt. However,
1033    /// 802.11 also provides a mechanism (i.e. Fast BSS Transition) that allows a device to
1034    /// maintain association with the original BSS while establishing authentication with the
1035    /// target BSS, in order to avoid losing the original association if authentication with the
1036    /// target BSS fails.
1037    pub original_association_maintained: Option<bool>,
1038    #[doc(hidden)]
1039    pub __source_breaking: fidl::marker::SourceBreaking,
1040}
1041
1042impl fidl::Persistable for WlanFullmacImplIfcRoamStartIndRequest {}
1043
1044#[derive(Clone, Debug, Default, PartialEq)]
1045pub struct WlanFullmacImplIfcSaeHandshakeIndRequest {
1046    pub peer_sta_address: Option<[u8; 6]>,
1047    #[doc(hidden)]
1048    pub __source_breaking: fidl::marker::SourceBreaking,
1049}
1050
1051impl fidl::Persistable for WlanFullmacImplIfcSaeHandshakeIndRequest {}
1052
1053#[derive(Clone, Debug, Default, PartialEq)]
1054pub struct WlanFullmacImplIfcStartConfRequest {
1055    /// The result of the StartBss request. Required.
1056    pub result_code: Option<StartResult>,
1057    #[doc(hidden)]
1058    pub __source_breaking: fidl::marker::SourceBreaking,
1059}
1060
1061impl fidl::Persistable for WlanFullmacImplIfcStartConfRequest {}
1062
1063#[derive(Clone, Debug, Default, PartialEq)]
1064pub struct WlanFullmacImplIfcStopConfRequest {
1065    /// The result of the StopBss request. Required.
1066    pub result_code: Option<StopResult>,
1067    #[doc(hidden)]
1068    pub __source_breaking: fidl::marker::SourceBreaking,
1069}
1070
1071impl fidl::Persistable for WlanFullmacImplIfcStopConfRequest {}
1072
1073#[derive(Clone, Debug, Default, PartialEq)]
1074pub struct WlanFullmacImplInstallApfPacketFilterRequest {
1075    pub program: Option<Vec<u8>>,
1076    #[doc(hidden)]
1077    pub __source_breaking: fidl::marker::SourceBreaking,
1078}
1079
1080impl fidl::Persistable for WlanFullmacImplInstallApfPacketFilterRequest {}
1081
1082#[derive(Clone, Debug, Default, PartialEq)]
1083pub struct WlanFullmacImplOnLinkStateChangedRequest {
1084    pub online: Option<bool>,
1085    #[doc(hidden)]
1086    pub __source_breaking: fidl::marker::SourceBreaking,
1087}
1088
1089impl fidl::Persistable for WlanFullmacImplOnLinkStateChangedRequest {}
1090
1091#[derive(Clone, Debug, Default, PartialEq)]
1092pub struct WlanFullmacImplReconnectRequest {
1093    pub peer_sta_address: Option<[u8; 6]>,
1094    #[doc(hidden)]
1095    pub __source_breaking: fidl::marker::SourceBreaking,
1096}
1097
1098impl fidl::Persistable for WlanFullmacImplReconnectRequest {}
1099
1100#[derive(Clone, Debug, Default, PartialEq)]
1101pub struct WlanFullmacImplRoamRequest {
1102    /// Full BSS description of the target BSS. Required.
1103    /// If the data in BssDescription is incorrect or incomplete, the roam cannot succeed,
1104    /// because higher layers will not be able to complete required actions (e.g. SAE).
1105    pub selected_bss: Option<fidl_fuchsia_wlan_common__common::BssDescription>,
1106    #[doc(hidden)]
1107    pub __source_breaking: fidl::marker::SourceBreaking,
1108}
1109
1110impl fidl::Persistable for WlanFullmacImplRoamRequest {}
1111
1112#[derive(Clone, Debug, Default, PartialEq)]
1113pub struct WlanFullmacImplSaeHandshakeRespRequest {
1114    /// The peer's MAC address. Required.
1115    pub peer_sta_address: Option<[u8; 6]>,
1116    /// The status of the SAE handshake. Required.
1117    pub status_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
1118    #[doc(hidden)]
1119    pub __source_breaking: fidl::marker::SourceBreaking,
1120}
1121
1122impl fidl::Persistable for WlanFullmacImplSaeHandshakeRespRequest {}
1123
1124#[derive(Clone, Debug, Default, PartialEq)]
1125pub struct WlanFullmacImplSetApfPacketFilterEnabledRequest {
1126    pub enabled: Option<bool>,
1127    #[doc(hidden)]
1128    pub __source_breaking: fidl::marker::SourceBreaking,
1129}
1130
1131impl fidl::Persistable for WlanFullmacImplSetApfPacketFilterEnabledRequest {}
1132
1133#[derive(Clone, Debug, Default, PartialEq)]
1134pub struct WlanFullmacImplSetKeysRequest {
1135    pub keylist: Option<Vec<fidl_fuchsia_wlan_common__common::WlanKeyConfig>>,
1136    pub key_descriptors: Option<Vec<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor>>,
1137    #[doc(hidden)]
1138    pub __source_breaking: fidl::marker::SourceBreaking,
1139}
1140
1141impl fidl::Persistable for WlanFullmacImplSetKeysRequest {}
1142
1143#[derive(Clone, Debug, Default, PartialEq)]
1144pub struct WlanFullmacImplStartBssRequest {
1145    pub ssid: Option<Vec<u8>>,
1146    pub bss_type: Option<fidl_fuchsia_wlan_common__common::BssType>,
1147    pub beacon_period: Option<u32>,
1148    pub dtim_period: Option<u32>,
1149    pub channel: Option<u8>,
1150    pub rsne: Option<Vec<u8>>,
1151    pub vendor_ie: Option<Vec<u8>>,
1152    #[doc(hidden)]
1153    pub __source_breaking: fidl::marker::SourceBreaking,
1154}
1155
1156impl fidl::Persistable for WlanFullmacImplStartBssRequest {}
1157
1158#[derive(Clone, Debug, Default, PartialEq)]
1159pub struct WlanFullmacImplStartScanRequest {
1160    /// Unique transaction id (will be indicated in corresponding scan results).
1161    pub txn_id: Option<u64>,
1162    pub scan_type: Option<WlanScanType>,
1163    /// List of channels to scan on. An empty list of channels will cause a
1164    /// scan request to immediately return a OnScanEnd with code INVALID_ARGS.
1165    ///
1166    /// Invalid channel numbers will be silently ignored. The validity of a channel
1167    /// number depends on the current regulatory region, and a FullMAC driver cannot
1168    /// always determine the region setting. This is especially the case when
1169    /// firmware changes the region setting dynamically.
1170    pub channels: Option<Vec<u8>>,
1171    /// List of SSIDs to scan for. An empty list of ssids is the same as specifying
1172    /// a list containing only the wildcard SSID.
1173    ///
1174    /// There is no limit on the number of SSIDs specified. A large number of
1175    /// SSIDs may result in extended scan times because of hardware limitations on
1176    /// the number of SSIDs permitted per scan request and the technical limitation
1177    /// in IEEE 802.11-2016 that limits the number of SSIDs in a single Probe Request
1178    /// frame to ieee80211.SSID_LIST_MAX SSIDs.
1179    pub ssids: Option<Vec<Vec<u8>>>,
1180    /// Minimum amount of time in msecs spent on a channel during scan.
1181    pub min_channel_time: Option<u32>,
1182    /// Maximum amount of time in msecs spent on a channel during scan.
1183    pub max_channel_time: Option<u32>,
1184    #[doc(hidden)]
1185    pub __source_breaking: fidl::marker::SourceBreaking,
1186}
1187
1188impl fidl::Persistable for WlanFullmacImplStartScanRequest {}
1189
1190#[derive(Clone, Debug, Default, PartialEq)]
1191pub struct WlanFullmacImplStopBssRequest {
1192    pub ssid: Option<Vec<u8>>,
1193    #[doc(hidden)]
1194    pub __source_breaking: fidl::marker::SourceBreaking,
1195}
1196
1197impl fidl::Persistable for WlanFullmacImplStopBssRequest {}
1198
1199#[derive(Clone, Debug, Default, PartialEq)]
1200pub struct WlanFullmacImplGetApfPacketFilterEnabledResponse {
1201    pub enabled: Option<bool>,
1202    #[doc(hidden)]
1203    pub __source_breaking: fidl::marker::SourceBreaking,
1204}
1205
1206impl fidl::Persistable for WlanFullmacImplGetApfPacketFilterEnabledResponse {}
1207
1208#[derive(Clone, Debug, Default, PartialEq)]
1209pub struct WlanFullmacImplQueryApfPacketFilterSupportResponse {
1210    pub resp: Option<fidl_fuchsia_wlan_common__common::ApfPacketFilterSupport>,
1211    #[doc(hidden)]
1212    pub __source_breaking: fidl::marker::SourceBreaking,
1213}
1214
1215impl fidl::Persistable for WlanFullmacImplQueryApfPacketFilterSupportResponse {}
1216
1217#[derive(Clone, Debug, Default, PartialEq)]
1218pub struct WlanFullmacImplQuerySecuritySupportResponse {
1219    pub resp: Option<fidl_fuchsia_wlan_common__common::SecuritySupport>,
1220    #[doc(hidden)]
1221    pub __source_breaking: fidl::marker::SourceBreaking,
1222}
1223
1224impl fidl::Persistable for WlanFullmacImplQuerySecuritySupportResponse {}
1225
1226#[derive(Clone, Debug, Default, PartialEq)]
1227pub struct WlanFullmacImplQuerySpectrumManagementSupportResponse {
1228    pub resp: Option<fidl_fuchsia_wlan_common__common::SpectrumManagementSupport>,
1229    #[doc(hidden)]
1230    pub __source_breaking: fidl::marker::SourceBreaking,
1231}
1232
1233impl fidl::Persistable for WlanFullmacImplQuerySpectrumManagementSupportResponse {}
1234
1235#[derive(Clone, Debug, Default, PartialEq)]
1236pub struct WlanFullmacImplQueryTelemetrySupportResponse {
1237    pub resp: Option<fidl_fuchsia_wlan_stats__common::TelemetrySupport>,
1238    #[doc(hidden)]
1239    pub __source_breaking: fidl::marker::SourceBreaking,
1240}
1241
1242impl fidl::Persistable for WlanFullmacImplQueryTelemetrySupportResponse {}
1243
1244#[derive(Clone, Debug, Default, PartialEq)]
1245pub struct WlanFullmacImplQueryResponse {
1246    /// Current station address. Required.
1247    pub sta_addr: Option<[u8; 6]>,
1248    /// MAC role. Required.
1249    pub role: Option<fidl_fuchsia_wlan_common__common::WlanMacRole>,
1250    /// Supported bands. Required.
1251    pub band_caps: Option<Vec<BandCapability>>,
1252    /// Factory mac address. Required.
1253    pub factory_addr: Option<[u8; 6]>,
1254    #[doc(hidden)]
1255    pub __source_breaking: fidl::marker::SourceBreaking,
1256}
1257
1258impl fidl::Persistable for WlanFullmacImplQueryResponse {}
1259
1260#[derive(Clone, Debug, Default, PartialEq)]
1261pub struct WlanFullmacImplReadApfPacketFilterDataResponse {
1262    pub memory: Option<Vec<u8>>,
1263    #[doc(hidden)]
1264    pub __source_breaking: fidl::marker::SourceBreaking,
1265}
1266
1267impl fidl::Persistable for WlanFullmacImplReadApfPacketFilterDataResponse {}
1268
1269#[derive(Clone, Debug, Default, PartialEq)]
1270pub struct WlanFullmacOwePublicKey {
1271    pub group: Option<u16>,
1272    pub key: Option<Vec<u8>>,
1273    #[doc(hidden)]
1274    pub __source_breaking: fidl::marker::SourceBreaking,
1275}
1276
1277impl fidl::Persistable for WlanFullmacOwePublicKey {}
1278
1279pub mod wlan_fullmac_impl__ordinals {
1280    pub const INIT: u64 = 0x593dfb6cb3f0f1aa;
1281    pub const QUERY: u64 = 0x28ac65f9da3941d4;
1282    pub const QUERY_SECURITY_SUPPORT: u64 = 0x11cf3fa6eeb93f84;
1283    pub const QUERY_SPECTRUM_MANAGEMENT_SUPPORT: u64 = 0x22ae7551d855b83a;
1284    pub const QUERY_TELEMETRY_SUPPORT: u64 = 0x4561479ca560827f;
1285    pub const QUERY_APF_PACKET_FILTER_SUPPORT: u64 = 0x6df8cdf0acd4dfad;
1286    pub const START_SCAN: u64 = 0x26c17bf595aa161c;
1287    pub const CONNECT: u64 = 0x19eb0322efb07a76;
1288    pub const RECONNECT: u64 = 0x474084c4ef19ee71;
1289    pub const ROAM: u64 = 0x1e35dcc98b124b64;
1290    pub const AUTH_RESP: u64 = 0x5f7ea24b44a4aaeb;
1291    pub const DEAUTH: u64 = 0x112786eccbf12f37;
1292    pub const ASSOC_RESP: u64 = 0x5022ce6b8eefec2f;
1293    pub const DISASSOC: u64 = 0x9c0fc4e8de53e01;
1294    pub const START_BSS: u64 = 0x6922644d6b1d341d;
1295    pub const STOP_BSS: u64 = 0x5aeb9b72e7575268;
1296    pub const SET_KEYS: u64 = 0x20f46b1e039f0985;
1297    pub const EAPOL_TX: u64 = 0x529a2d90fd4c8177;
1298    pub const GET_IFACE_STATS: u64 = 0x505563776ef0392f;
1299    pub const GET_IFACE_HISTOGRAM_STATS: u64 = 0x503d586f30ccf2cd;
1300    pub const GET_SIGNAL_REPORT: u64 = 0x5d93f056e4796bb3;
1301    pub const SAE_HANDSHAKE_RESP: u64 = 0x72cd3a31ae5a54f6;
1302    pub const SAE_FRAME_TX: u64 = 0x4715ad5dc5a6340f;
1303    pub const WMM_STATUS_REQ: u64 = 0x635ecef3beb7a059;
1304    pub const ON_LINK_STATE_CHANGED: u64 = 0x4d896e5b68e488d7;
1305    pub const SET_MAC_ADDRESS: u64 = 0x211a97f6f21ae5f0;
1306    pub const INSTALL_APF_PACKET_FILTER: u64 = 0x14597eda84122115;
1307    pub const READ_APF_PACKET_FILTER_DATA: u64 = 0x6ddcf8a179553a3c;
1308    pub const SET_APF_PACKET_FILTER_ENABLED: u64 = 0x808792cade97d59;
1309    pub const GET_APF_PACKET_FILTER_ENABLED: u64 = 0x284e1725471e3ae7;
1310}
1311
1312pub mod wlan_fullmac_impl_ifc_ordinals {
1313    pub const ON_SCAN_RESULT: u64 = 0x29aa81dc570f7a3e;
1314    pub const ON_SCAN_END: u64 = 0x7cd8aff80d27073c;
1315    pub const CONNECT_CONF: u64 = 0x3c22c6d80b2a2759;
1316    pub const ROAM_CONF: u64 = 0x368b2a5b903b3f7b;
1317    pub const ROAM_START_IND: u64 = 0x23e1d9368935e7e4;
1318    pub const ROAM_RESULT_IND: u64 = 0x7081c1b1ceea4914;
1319    pub const AUTH_IND: u64 = 0x270e1f8889650d0b;
1320    pub const DEAUTH_CONF: u64 = 0x2c94b0d7258111b7;
1321    pub const DEAUTH_IND: u64 = 0x26cd27cdadd8dbaf;
1322    pub const ASSOC_IND: u64 = 0x3e44529e3dc179ce;
1323    pub const DISASSOC_CONF: u64 = 0x7c713bcd58a76cb3;
1324    pub const DISASSOC_IND: u64 = 0x6667b381b7f3990f;
1325    pub const START_CONF: u64 = 0x3e9b9641f3ddc7fc;
1326    pub const STOP_CONF: u64 = 0x320a5ff227a4e9df;
1327    pub const EAPOL_CONF: u64 = 0x77364db9cc3970ec;
1328    pub const ON_CHANNEL_SWITCH: u64 = 0x21db0b8f71cae647;
1329    pub const SIGNAL_REPORT: u64 = 0x79679fa8789c3d9f;
1330    pub const EAPOL_IND: u64 = 0x3de8ec1eda10d1d0;
1331    pub const ON_PMK_AVAILABLE: u64 = 0x5cedd8d9be28a17e;
1332    pub const SAE_HANDSHAKE_IND: u64 = 0x4f3d53885503a1d8;
1333    pub const SAE_FRAME_RX: u64 = 0x51650906857ed4d4;
1334    pub const ON_WMM_STATUS_RESP: u64 = 0x6823a88bf3ba8b2a;
1335}
1336
1337mod internal {
1338    use super::*;
1339    unsafe impl fidl::encoding::TypeMarker for EapolTxResult {
1340        type Owned = Self;
1341
1342        #[inline(always)]
1343        fn inline_align(_context: fidl::encoding::Context) -> usize {
1344            std::mem::align_of::<u8>()
1345        }
1346
1347        #[inline(always)]
1348        fn inline_size(_context: fidl::encoding::Context) -> usize {
1349            std::mem::size_of::<u8>()
1350        }
1351
1352        #[inline(always)]
1353        fn encode_is_copy() -> bool {
1354            false
1355        }
1356
1357        #[inline(always)]
1358        fn decode_is_copy() -> bool {
1359            false
1360        }
1361    }
1362
1363    impl fidl::encoding::ValueTypeMarker for EapolTxResult {
1364        type Borrowed<'a> = Self;
1365        #[inline(always)]
1366        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1367            *value
1368        }
1369    }
1370
1371    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for EapolTxResult {
1372        #[inline]
1373        unsafe fn encode(
1374            self,
1375            encoder: &mut fidl::encoding::Encoder<'_, D>,
1376            offset: usize,
1377            _depth: fidl::encoding::Depth,
1378        ) -> fidl::Result<()> {
1379            encoder.debug_check_bounds::<Self>(offset);
1380            encoder.write_num(self.into_primitive(), offset);
1381            Ok(())
1382        }
1383    }
1384
1385    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolTxResult {
1386        #[inline(always)]
1387        fn new_empty() -> Self {
1388            Self::unknown()
1389        }
1390
1391        #[inline]
1392        unsafe fn decode(
1393            &mut self,
1394            decoder: &mut fidl::encoding::Decoder<'_, D>,
1395            offset: usize,
1396            _depth: fidl::encoding::Depth,
1397        ) -> fidl::Result<()> {
1398            decoder.debug_check_bounds::<Self>(offset);
1399            let prim = decoder.read_num::<u8>(offset);
1400
1401            *self = Self::from_primitive_allow_unknown(prim);
1402            Ok(())
1403        }
1404    }
1405    unsafe impl fidl::encoding::TypeMarker for StartResult {
1406        type Owned = Self;
1407
1408        #[inline(always)]
1409        fn inline_align(_context: fidl::encoding::Context) -> usize {
1410            std::mem::align_of::<u8>()
1411        }
1412
1413        #[inline(always)]
1414        fn inline_size(_context: fidl::encoding::Context) -> usize {
1415            std::mem::size_of::<u8>()
1416        }
1417
1418        #[inline(always)]
1419        fn encode_is_copy() -> bool {
1420            false
1421        }
1422
1423        #[inline(always)]
1424        fn decode_is_copy() -> bool {
1425            false
1426        }
1427    }
1428
1429    impl fidl::encoding::ValueTypeMarker for StartResult {
1430        type Borrowed<'a> = Self;
1431        #[inline(always)]
1432        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1433            *value
1434        }
1435    }
1436
1437    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StartResult {
1438        #[inline]
1439        unsafe fn encode(
1440            self,
1441            encoder: &mut fidl::encoding::Encoder<'_, D>,
1442            offset: usize,
1443            _depth: fidl::encoding::Depth,
1444        ) -> fidl::Result<()> {
1445            encoder.debug_check_bounds::<Self>(offset);
1446            encoder.write_num(self.into_primitive(), offset);
1447            Ok(())
1448        }
1449    }
1450
1451    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartResult {
1452        #[inline(always)]
1453        fn new_empty() -> Self {
1454            Self::unknown()
1455        }
1456
1457        #[inline]
1458        unsafe fn decode(
1459            &mut self,
1460            decoder: &mut fidl::encoding::Decoder<'_, D>,
1461            offset: usize,
1462            _depth: fidl::encoding::Depth,
1463        ) -> fidl::Result<()> {
1464            decoder.debug_check_bounds::<Self>(offset);
1465            let prim = decoder.read_num::<u8>(offset);
1466
1467            *self = Self::from_primitive_allow_unknown(prim);
1468            Ok(())
1469        }
1470    }
1471    unsafe impl fidl::encoding::TypeMarker for StopResult {
1472        type Owned = Self;
1473
1474        #[inline(always)]
1475        fn inline_align(_context: fidl::encoding::Context) -> usize {
1476            std::mem::align_of::<u8>()
1477        }
1478
1479        #[inline(always)]
1480        fn inline_size(_context: fidl::encoding::Context) -> usize {
1481            std::mem::size_of::<u8>()
1482        }
1483
1484        #[inline(always)]
1485        fn encode_is_copy() -> bool {
1486            false
1487        }
1488
1489        #[inline(always)]
1490        fn decode_is_copy() -> bool {
1491            false
1492        }
1493    }
1494
1495    impl fidl::encoding::ValueTypeMarker for StopResult {
1496        type Borrowed<'a> = Self;
1497        #[inline(always)]
1498        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1499            *value
1500        }
1501    }
1502
1503    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StopResult {
1504        #[inline]
1505        unsafe fn encode(
1506            self,
1507            encoder: &mut fidl::encoding::Encoder<'_, D>,
1508            offset: usize,
1509            _depth: fidl::encoding::Depth,
1510        ) -> fidl::Result<()> {
1511            encoder.debug_check_bounds::<Self>(offset);
1512            encoder.write_num(self.into_primitive(), offset);
1513            Ok(())
1514        }
1515    }
1516
1517    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopResult {
1518        #[inline(always)]
1519        fn new_empty() -> Self {
1520            Self::unknown()
1521        }
1522
1523        #[inline]
1524        unsafe fn decode(
1525            &mut self,
1526            decoder: &mut fidl::encoding::Decoder<'_, D>,
1527            offset: usize,
1528            _depth: fidl::encoding::Depth,
1529        ) -> fidl::Result<()> {
1530            decoder.debug_check_bounds::<Self>(offset);
1531            let prim = decoder.read_num::<u8>(offset);
1532
1533            *self = Self::from_primitive_allow_unknown(prim);
1534            Ok(())
1535        }
1536    }
1537    unsafe impl fidl::encoding::TypeMarker for WlanAssocResult {
1538        type Owned = Self;
1539
1540        #[inline(always)]
1541        fn inline_align(_context: fidl::encoding::Context) -> usize {
1542            std::mem::align_of::<u8>()
1543        }
1544
1545        #[inline(always)]
1546        fn inline_size(_context: fidl::encoding::Context) -> usize {
1547            std::mem::size_of::<u8>()
1548        }
1549
1550        #[inline(always)]
1551        fn encode_is_copy() -> bool {
1552            false
1553        }
1554
1555        #[inline(always)]
1556        fn decode_is_copy() -> bool {
1557            false
1558        }
1559    }
1560
1561    impl fidl::encoding::ValueTypeMarker for WlanAssocResult {
1562        type Borrowed<'a> = Self;
1563        #[inline(always)]
1564        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1565            *value
1566        }
1567    }
1568
1569    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1570        for WlanAssocResult
1571    {
1572        #[inline]
1573        unsafe fn encode(
1574            self,
1575            encoder: &mut fidl::encoding::Encoder<'_, D>,
1576            offset: usize,
1577            _depth: fidl::encoding::Depth,
1578        ) -> fidl::Result<()> {
1579            encoder.debug_check_bounds::<Self>(offset);
1580            encoder.write_num(self.into_primitive(), offset);
1581            Ok(())
1582        }
1583    }
1584
1585    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAssocResult {
1586        #[inline(always)]
1587        fn new_empty() -> Self {
1588            Self::unknown()
1589        }
1590
1591        #[inline]
1592        unsafe fn decode(
1593            &mut self,
1594            decoder: &mut fidl::encoding::Decoder<'_, D>,
1595            offset: usize,
1596            _depth: fidl::encoding::Depth,
1597        ) -> fidl::Result<()> {
1598            decoder.debug_check_bounds::<Self>(offset);
1599            let prim = decoder.read_num::<u8>(offset);
1600
1601            *self = Self::from_primitive_allow_unknown(prim);
1602            Ok(())
1603        }
1604    }
1605    unsafe impl fidl::encoding::TypeMarker for WlanAuthResult {
1606        type Owned = Self;
1607
1608        #[inline(always)]
1609        fn inline_align(_context: fidl::encoding::Context) -> usize {
1610            std::mem::align_of::<u8>()
1611        }
1612
1613        #[inline(always)]
1614        fn inline_size(_context: fidl::encoding::Context) -> usize {
1615            std::mem::size_of::<u8>()
1616        }
1617
1618        #[inline(always)]
1619        fn encode_is_copy() -> bool {
1620            false
1621        }
1622
1623        #[inline(always)]
1624        fn decode_is_copy() -> bool {
1625            false
1626        }
1627    }
1628
1629    impl fidl::encoding::ValueTypeMarker for WlanAuthResult {
1630        type Borrowed<'a> = Self;
1631        #[inline(always)]
1632        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1633            *value
1634        }
1635    }
1636
1637    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanAuthResult {
1638        #[inline]
1639        unsafe fn encode(
1640            self,
1641            encoder: &mut fidl::encoding::Encoder<'_, D>,
1642            offset: usize,
1643            _depth: fidl::encoding::Depth,
1644        ) -> fidl::Result<()> {
1645            encoder.debug_check_bounds::<Self>(offset);
1646            encoder.write_num(self.into_primitive(), offset);
1647            Ok(())
1648        }
1649    }
1650
1651    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAuthResult {
1652        #[inline(always)]
1653        fn new_empty() -> Self {
1654            Self::unknown()
1655        }
1656
1657        #[inline]
1658        unsafe fn decode(
1659            &mut self,
1660            decoder: &mut fidl::encoding::Decoder<'_, D>,
1661            offset: usize,
1662            _depth: fidl::encoding::Depth,
1663        ) -> fidl::Result<()> {
1664            decoder.debug_check_bounds::<Self>(offset);
1665            let prim = decoder.read_num::<u8>(offset);
1666
1667            *self = Self::from_primitive_allow_unknown(prim);
1668            Ok(())
1669        }
1670    }
1671    unsafe impl fidl::encoding::TypeMarker for WlanAuthType {
1672        type Owned = Self;
1673
1674        #[inline(always)]
1675        fn inline_align(_context: fidl::encoding::Context) -> usize {
1676            std::mem::align_of::<u8>()
1677        }
1678
1679        #[inline(always)]
1680        fn inline_size(_context: fidl::encoding::Context) -> usize {
1681            std::mem::size_of::<u8>()
1682        }
1683
1684        #[inline(always)]
1685        fn encode_is_copy() -> bool {
1686            false
1687        }
1688
1689        #[inline(always)]
1690        fn decode_is_copy() -> bool {
1691            false
1692        }
1693    }
1694
1695    impl fidl::encoding::ValueTypeMarker for WlanAuthType {
1696        type Borrowed<'a> = Self;
1697        #[inline(always)]
1698        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1699            *value
1700        }
1701    }
1702
1703    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanAuthType {
1704        #[inline]
1705        unsafe fn encode(
1706            self,
1707            encoder: &mut fidl::encoding::Encoder<'_, D>,
1708            offset: usize,
1709            _depth: fidl::encoding::Depth,
1710        ) -> fidl::Result<()> {
1711            encoder.debug_check_bounds::<Self>(offset);
1712            encoder.write_num(self.into_primitive(), offset);
1713            Ok(())
1714        }
1715    }
1716
1717    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAuthType {
1718        #[inline(always)]
1719        fn new_empty() -> Self {
1720            Self::unknown()
1721        }
1722
1723        #[inline]
1724        unsafe fn decode(
1725            &mut self,
1726            decoder: &mut fidl::encoding::Decoder<'_, D>,
1727            offset: usize,
1728            _depth: fidl::encoding::Depth,
1729        ) -> fidl::Result<()> {
1730            decoder.debug_check_bounds::<Self>(offset);
1731            let prim = decoder.read_num::<u8>(offset);
1732
1733            *self = Self::from_primitive_allow_unknown(prim);
1734            Ok(())
1735        }
1736    }
1737    unsafe impl fidl::encoding::TypeMarker for WlanScanResult {
1738        type Owned = Self;
1739
1740        #[inline(always)]
1741        fn inline_align(_context: fidl::encoding::Context) -> usize {
1742            std::mem::align_of::<u8>()
1743        }
1744
1745        #[inline(always)]
1746        fn inline_size(_context: fidl::encoding::Context) -> usize {
1747            std::mem::size_of::<u8>()
1748        }
1749
1750        #[inline(always)]
1751        fn encode_is_copy() -> bool {
1752            false
1753        }
1754
1755        #[inline(always)]
1756        fn decode_is_copy() -> bool {
1757            false
1758        }
1759    }
1760
1761    impl fidl::encoding::ValueTypeMarker for WlanScanResult {
1762        type Borrowed<'a> = Self;
1763        #[inline(always)]
1764        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1765            *value
1766        }
1767    }
1768
1769    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanScanResult {
1770        #[inline]
1771        unsafe fn encode(
1772            self,
1773            encoder: &mut fidl::encoding::Encoder<'_, D>,
1774            offset: usize,
1775            _depth: fidl::encoding::Depth,
1776        ) -> fidl::Result<()> {
1777            encoder.debug_check_bounds::<Self>(offset);
1778            encoder.write_num(self.into_primitive(), offset);
1779            Ok(())
1780        }
1781    }
1782
1783    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanScanResult {
1784        #[inline(always)]
1785        fn new_empty() -> Self {
1786            Self::unknown()
1787        }
1788
1789        #[inline]
1790        unsafe fn decode(
1791            &mut self,
1792            decoder: &mut fidl::encoding::Decoder<'_, D>,
1793            offset: usize,
1794            _depth: fidl::encoding::Depth,
1795        ) -> fidl::Result<()> {
1796            decoder.debug_check_bounds::<Self>(offset);
1797            let prim = decoder.read_num::<u8>(offset);
1798
1799            *self = Self::from_primitive_allow_unknown(prim);
1800            Ok(())
1801        }
1802    }
1803    unsafe impl fidl::encoding::TypeMarker for WlanScanType {
1804        type Owned = Self;
1805
1806        #[inline(always)]
1807        fn inline_align(_context: fidl::encoding::Context) -> usize {
1808            std::mem::align_of::<u8>()
1809        }
1810
1811        #[inline(always)]
1812        fn inline_size(_context: fidl::encoding::Context) -> usize {
1813            std::mem::size_of::<u8>()
1814        }
1815
1816        #[inline(always)]
1817        fn encode_is_copy() -> bool {
1818            false
1819        }
1820
1821        #[inline(always)]
1822        fn decode_is_copy() -> bool {
1823            false
1824        }
1825    }
1826
1827    impl fidl::encoding::ValueTypeMarker for WlanScanType {
1828        type Borrowed<'a> = Self;
1829        #[inline(always)]
1830        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1831            *value
1832        }
1833    }
1834
1835    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanScanType {
1836        #[inline]
1837        unsafe fn encode(
1838            self,
1839            encoder: &mut fidl::encoding::Encoder<'_, D>,
1840            offset: usize,
1841            _depth: fidl::encoding::Depth,
1842        ) -> fidl::Result<()> {
1843            encoder.debug_check_bounds::<Self>(offset);
1844            encoder.write_num(self.into_primitive(), offset);
1845            Ok(())
1846        }
1847    }
1848
1849    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanScanType {
1850        #[inline(always)]
1851        fn new_empty() -> Self {
1852            Self::unknown()
1853        }
1854
1855        #[inline]
1856        unsafe fn decode(
1857            &mut self,
1858            decoder: &mut fidl::encoding::Decoder<'_, D>,
1859            offset: usize,
1860            _depth: fidl::encoding::Depth,
1861        ) -> fidl::Result<()> {
1862            decoder.debug_check_bounds::<Self>(offset);
1863            let prim = decoder.read_num::<u8>(offset);
1864
1865            *self = Self::from_primitive_allow_unknown(prim);
1866            Ok(())
1867        }
1868    }
1869
1870    impl fidl::encoding::ValueTypeMarker for WlanFullmacChannelSwitchInfo {
1871        type Borrowed<'a> = &'a Self;
1872        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1873            value
1874        }
1875    }
1876
1877    unsafe impl fidl::encoding::TypeMarker for WlanFullmacChannelSwitchInfo {
1878        type Owned = Self;
1879
1880        #[inline(always)]
1881        fn inline_align(_context: fidl::encoding::Context) -> usize {
1882            1
1883        }
1884
1885        #[inline(always)]
1886        fn inline_size(_context: fidl::encoding::Context) -> usize {
1887            1
1888        }
1889        #[inline(always)]
1890        fn encode_is_copy() -> bool {
1891            true
1892        }
1893
1894        #[inline(always)]
1895        fn decode_is_copy() -> bool {
1896            true
1897        }
1898    }
1899
1900    unsafe impl<D: fidl::encoding::ResourceDialect>
1901        fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D> for &WlanFullmacChannelSwitchInfo
1902    {
1903        #[inline]
1904        unsafe fn encode(
1905            self,
1906            encoder: &mut fidl::encoding::Encoder<'_, D>,
1907            offset: usize,
1908            _depth: fidl::encoding::Depth,
1909        ) -> fidl::Result<()> {
1910            encoder.debug_check_bounds::<WlanFullmacChannelSwitchInfo>(offset);
1911            unsafe {
1912                // Copy the object into the buffer.
1913                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1914                (buf_ptr as *mut WlanFullmacChannelSwitchInfo)
1915                    .write_unaligned((self as *const WlanFullmacChannelSwitchInfo).read());
1916                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
1917                // done second because the memcpy will write garbage to these bytes.
1918            }
1919            Ok(())
1920        }
1921    }
1922    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u8, D>>
1923        fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D> for (T0,)
1924    {
1925        #[inline]
1926        unsafe fn encode(
1927            self,
1928            encoder: &mut fidl::encoding::Encoder<'_, D>,
1929            offset: usize,
1930            depth: fidl::encoding::Depth,
1931        ) -> fidl::Result<()> {
1932            encoder.debug_check_bounds::<WlanFullmacChannelSwitchInfo>(offset);
1933            // Zero out padding regions. There's no need to apply masks
1934            // because the unmasked parts will be overwritten by fields.
1935            // Write the fields.
1936            self.0.encode(encoder, offset + 0, depth)?;
1937            Ok(())
1938        }
1939    }
1940
1941    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1942        for WlanFullmacChannelSwitchInfo
1943    {
1944        #[inline(always)]
1945        fn new_empty() -> Self {
1946            Self { new_channel: fidl::new_empty!(u8, D) }
1947        }
1948
1949        #[inline]
1950        unsafe fn decode(
1951            &mut self,
1952            decoder: &mut fidl::encoding::Decoder<'_, D>,
1953            offset: usize,
1954            _depth: fidl::encoding::Depth,
1955        ) -> fidl::Result<()> {
1956            decoder.debug_check_bounds::<Self>(offset);
1957            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1958            // Verify that padding bytes are zero.
1959            // Copy from the buffer into the object.
1960            unsafe {
1961                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
1962            }
1963            Ok(())
1964        }
1965    }
1966
1967    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnChannelSwitchRequest {
1968        type Borrowed<'a> = &'a Self;
1969        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1970            value
1971        }
1972    }
1973
1974    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnChannelSwitchRequest {
1975        type Owned = Self;
1976
1977        #[inline(always)]
1978        fn inline_align(_context: fidl::encoding::Context) -> usize {
1979            1
1980        }
1981
1982        #[inline(always)]
1983        fn inline_size(_context: fidl::encoding::Context) -> usize {
1984            1
1985        }
1986        #[inline(always)]
1987        fn encode_is_copy() -> bool {
1988            true
1989        }
1990
1991        #[inline(always)]
1992        fn decode_is_copy() -> bool {
1993            true
1994        }
1995    }
1996
1997    unsafe impl<D: fidl::encoding::ResourceDialect>
1998        fidl::encoding::Encode<WlanFullmacImplIfcOnChannelSwitchRequest, D>
1999        for &WlanFullmacImplIfcOnChannelSwitchRequest
2000    {
2001        #[inline]
2002        unsafe fn encode(
2003            self,
2004            encoder: &mut fidl::encoding::Encoder<'_, D>,
2005            offset: usize,
2006            _depth: fidl::encoding::Depth,
2007        ) -> fidl::Result<()> {
2008            encoder.debug_check_bounds::<WlanFullmacImplIfcOnChannelSwitchRequest>(offset);
2009            unsafe {
2010                // Copy the object into the buffer.
2011                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2012                (buf_ptr as *mut WlanFullmacImplIfcOnChannelSwitchRequest).write_unaligned(
2013                    (self as *const WlanFullmacImplIfcOnChannelSwitchRequest).read(),
2014                );
2015                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2016                // done second because the memcpy will write garbage to these bytes.
2017            }
2018            Ok(())
2019        }
2020    }
2021    unsafe impl<
2022        D: fidl::encoding::ResourceDialect,
2023        T0: fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D>,
2024    > fidl::encoding::Encode<WlanFullmacImplIfcOnChannelSwitchRequest, D> for (T0,)
2025    {
2026        #[inline]
2027        unsafe fn encode(
2028            self,
2029            encoder: &mut fidl::encoding::Encoder<'_, D>,
2030            offset: usize,
2031            depth: fidl::encoding::Depth,
2032        ) -> fidl::Result<()> {
2033            encoder.debug_check_bounds::<WlanFullmacImplIfcOnChannelSwitchRequest>(offset);
2034            // Zero out padding regions. There's no need to apply masks
2035            // because the unmasked parts will be overwritten by fields.
2036            // Write the fields.
2037            self.0.encode(encoder, offset + 0, depth)?;
2038            Ok(())
2039        }
2040    }
2041
2042    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2043        for WlanFullmacImplIfcOnChannelSwitchRequest
2044    {
2045        #[inline(always)]
2046        fn new_empty() -> Self {
2047            Self { ind: fidl::new_empty!(WlanFullmacChannelSwitchInfo, D) }
2048        }
2049
2050        #[inline]
2051        unsafe fn decode(
2052            &mut self,
2053            decoder: &mut fidl::encoding::Decoder<'_, D>,
2054            offset: usize,
2055            _depth: fidl::encoding::Depth,
2056        ) -> fidl::Result<()> {
2057            decoder.debug_check_bounds::<Self>(offset);
2058            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2059            // Verify that padding bytes are zero.
2060            // Copy from the buffer into the object.
2061            unsafe {
2062                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
2063            }
2064            Ok(())
2065        }
2066    }
2067
2068    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnWmmStatusRespRequest {
2069        type Borrowed<'a> = &'a Self;
2070        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2071            value
2072        }
2073    }
2074
2075    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnWmmStatusRespRequest {
2076        type Owned = Self;
2077
2078        #[inline(always)]
2079        fn inline_align(_context: fidl::encoding::Context) -> usize {
2080            4
2081        }
2082
2083        #[inline(always)]
2084        fn inline_size(_context: fidl::encoding::Context) -> usize {
2085            40
2086        }
2087    }
2088
2089    unsafe impl<D: fidl::encoding::ResourceDialect>
2090        fidl::encoding::Encode<WlanFullmacImplIfcOnWmmStatusRespRequest, D>
2091        for &WlanFullmacImplIfcOnWmmStatusRespRequest
2092    {
2093        #[inline]
2094        unsafe fn encode(
2095            self,
2096            encoder: &mut fidl::encoding::Encoder<'_, D>,
2097            offset: usize,
2098            _depth: fidl::encoding::Depth,
2099        ) -> fidl::Result<()> {
2100            encoder.debug_check_bounds::<WlanFullmacImplIfcOnWmmStatusRespRequest>(offset);
2101            // Delegate to tuple encoding.
2102            fidl::encoding::Encode::<WlanFullmacImplIfcOnWmmStatusRespRequest, D>::encode(
2103                (
2104                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
2105                    <fidl_fuchsia_wlan_common__common::WlanWmmParameters as fidl::encoding::ValueTypeMarker>::borrow(&self.wmm_params),
2106                ),
2107                encoder, offset, _depth
2108            )
2109        }
2110    }
2111    unsafe impl<
2112        D: fidl::encoding::ResourceDialect,
2113        T0: fidl::encoding::Encode<i32, D>,
2114        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::WlanWmmParameters, D>,
2115    > fidl::encoding::Encode<WlanFullmacImplIfcOnWmmStatusRespRequest, D> for (T0, T1)
2116    {
2117        #[inline]
2118        unsafe fn encode(
2119            self,
2120            encoder: &mut fidl::encoding::Encoder<'_, D>,
2121            offset: usize,
2122            depth: fidl::encoding::Depth,
2123        ) -> fidl::Result<()> {
2124            encoder.debug_check_bounds::<WlanFullmacImplIfcOnWmmStatusRespRequest>(offset);
2125            // Zero out padding regions. There's no need to apply masks
2126            // because the unmasked parts will be overwritten by fields.
2127            unsafe {
2128                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(36);
2129                (ptr as *mut u32).write_unaligned(0);
2130            }
2131            // Write the fields.
2132            self.0.encode(encoder, offset + 0, depth)?;
2133            self.1.encode(encoder, offset + 4, depth)?;
2134            Ok(())
2135        }
2136    }
2137
2138    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2139        for WlanFullmacImplIfcOnWmmStatusRespRequest
2140    {
2141        #[inline(always)]
2142        fn new_empty() -> Self {
2143            Self {
2144                status: fidl::new_empty!(i32, D),
2145                wmm_params: fidl::new_empty!(
2146                    fidl_fuchsia_wlan_common__common::WlanWmmParameters,
2147                    D
2148                ),
2149            }
2150        }
2151
2152        #[inline]
2153        unsafe fn decode(
2154            &mut self,
2155            decoder: &mut fidl::encoding::Decoder<'_, D>,
2156            offset: usize,
2157            _depth: fidl::encoding::Depth,
2158        ) -> fidl::Result<()> {
2159            decoder.debug_check_bounds::<Self>(offset);
2160            // Verify that padding bytes are zero.
2161            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(36) };
2162            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2163            let mask = 0xffff0000u32;
2164            let maskedval = padval & mask;
2165            if maskedval != 0 {
2166                return Err(fidl::Error::NonZeroPadding {
2167                    padding_start: offset + 36 + ((mask as u64).trailing_zeros() / 8) as usize,
2168                });
2169            }
2170            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
2171            fidl::decode!(
2172                fidl_fuchsia_wlan_common__common::WlanWmmParameters,
2173                D,
2174                &mut self.wmm_params,
2175                decoder,
2176                offset + 4,
2177                _depth
2178            )?;
2179            Ok(())
2180        }
2181    }
2182
2183    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2184        type Borrowed<'a> = &'a Self;
2185        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2186            value
2187        }
2188    }
2189
2190    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2191        type Owned = Self;
2192
2193        #[inline(always)]
2194        fn inline_align(_context: fidl::encoding::Context) -> usize {
2195            8
2196        }
2197
2198        #[inline(always)]
2199        fn inline_size(_context: fidl::encoding::Context) -> usize {
2200            16
2201        }
2202    }
2203
2204    unsafe impl<D: fidl::encoding::ResourceDialect>
2205        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D>
2206        for &WlanFullmacImplIfcSaeFrameRxRequest
2207    {
2208        #[inline]
2209        unsafe fn encode(
2210            self,
2211            encoder: &mut fidl::encoding::Encoder<'_, D>,
2212            offset: usize,
2213            _depth: fidl::encoding::Depth,
2214        ) -> fidl::Result<()> {
2215            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2216            // Delegate to tuple encoding.
2217            fidl::encoding::Encode::<WlanFullmacImplIfcSaeFrameRxRequest, D>::encode(
2218                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2219                encoder,
2220                offset,
2221                _depth,
2222            )
2223        }
2224    }
2225    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2226        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D> for (T0,)
2227    {
2228        #[inline]
2229        unsafe fn encode(
2230            self,
2231            encoder: &mut fidl::encoding::Encoder<'_, D>,
2232            offset: usize,
2233            depth: fidl::encoding::Depth,
2234        ) -> fidl::Result<()> {
2235            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2236            // Zero out padding regions. There's no need to apply masks
2237            // because the unmasked parts will be overwritten by fields.
2238            // Write the fields.
2239            self.0.encode(encoder, offset + 0, depth)?;
2240            Ok(())
2241        }
2242    }
2243
2244    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2245        for WlanFullmacImplIfcSaeFrameRxRequest
2246    {
2247        #[inline(always)]
2248        fn new_empty() -> Self {
2249            Self { frame: fidl::new_empty!(SaeFrame, D) }
2250        }
2251
2252        #[inline]
2253        unsafe fn decode(
2254            &mut self,
2255            decoder: &mut fidl::encoding::Decoder<'_, D>,
2256            offset: usize,
2257            _depth: fidl::encoding::Depth,
2258        ) -> fidl::Result<()> {
2259            decoder.debug_check_bounds::<Self>(offset);
2260            // Verify that padding bytes are zero.
2261            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2262            Ok(())
2263        }
2264    }
2265
2266    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSignalReportRequest {
2267        type Borrowed<'a> = &'a Self;
2268        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2269            value
2270        }
2271    }
2272
2273    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSignalReportRequest {
2274        type Owned = Self;
2275
2276        #[inline(always)]
2277        fn inline_align(_context: fidl::encoding::Context) -> usize {
2278            1
2279        }
2280
2281        #[inline(always)]
2282        fn inline_size(_context: fidl::encoding::Context) -> usize {
2283            2
2284        }
2285        #[inline(always)]
2286        fn encode_is_copy() -> bool {
2287            true
2288        }
2289
2290        #[inline(always)]
2291        fn decode_is_copy() -> bool {
2292            true
2293        }
2294    }
2295
2296    unsafe impl<D: fidl::encoding::ResourceDialect>
2297        fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D>
2298        for &WlanFullmacImplIfcSignalReportRequest
2299    {
2300        #[inline]
2301        unsafe fn encode(
2302            self,
2303            encoder: &mut fidl::encoding::Encoder<'_, D>,
2304            offset: usize,
2305            _depth: fidl::encoding::Depth,
2306        ) -> fidl::Result<()> {
2307            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2308            unsafe {
2309                // Copy the object into the buffer.
2310                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2311                (buf_ptr as *mut WlanFullmacImplIfcSignalReportRequest)
2312                    .write_unaligned((self as *const WlanFullmacImplIfcSignalReportRequest).read());
2313                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2314                // done second because the memcpy will write garbage to these bytes.
2315            }
2316            Ok(())
2317        }
2318    }
2319    unsafe impl<
2320        D: fidl::encoding::ResourceDialect,
2321        T0: fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>,
2322    > fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D> for (T0,)
2323    {
2324        #[inline]
2325        unsafe fn encode(
2326            self,
2327            encoder: &mut fidl::encoding::Encoder<'_, D>,
2328            offset: usize,
2329            depth: fidl::encoding::Depth,
2330        ) -> fidl::Result<()> {
2331            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2332            // Zero out padding regions. There's no need to apply masks
2333            // because the unmasked parts will be overwritten by fields.
2334            // Write the fields.
2335            self.0.encode(encoder, offset + 0, depth)?;
2336            Ok(())
2337        }
2338    }
2339
2340    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2341        for WlanFullmacImplIfcSignalReportRequest
2342    {
2343        #[inline(always)]
2344        fn new_empty() -> Self {
2345            Self { ind: fidl::new_empty!(WlanFullmacSignalReportIndication, D) }
2346        }
2347
2348        #[inline]
2349        unsafe fn decode(
2350            &mut self,
2351            decoder: &mut fidl::encoding::Decoder<'_, D>,
2352            offset: usize,
2353            _depth: fidl::encoding::Depth,
2354        ) -> fidl::Result<()> {
2355            decoder.debug_check_bounds::<Self>(offset);
2356            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2357            // Verify that padding bytes are zero.
2358            // Copy from the buffer into the object.
2359            unsafe {
2360                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
2361            }
2362            Ok(())
2363        }
2364    }
2365
2366    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeFrameTxRequest {
2367        type Borrowed<'a> = &'a Self;
2368        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2369            value
2370        }
2371    }
2372
2373    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeFrameTxRequest {
2374        type Owned = Self;
2375
2376        #[inline(always)]
2377        fn inline_align(_context: fidl::encoding::Context) -> usize {
2378            8
2379        }
2380
2381        #[inline(always)]
2382        fn inline_size(_context: fidl::encoding::Context) -> usize {
2383            16
2384        }
2385    }
2386
2387    unsafe impl<D: fidl::encoding::ResourceDialect>
2388        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D>
2389        for &WlanFullmacImplSaeFrameTxRequest
2390    {
2391        #[inline]
2392        unsafe fn encode(
2393            self,
2394            encoder: &mut fidl::encoding::Encoder<'_, D>,
2395            offset: usize,
2396            _depth: fidl::encoding::Depth,
2397        ) -> fidl::Result<()> {
2398            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2399            // Delegate to tuple encoding.
2400            fidl::encoding::Encode::<WlanFullmacImplSaeFrameTxRequest, D>::encode(
2401                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2402                encoder,
2403                offset,
2404                _depth,
2405            )
2406        }
2407    }
2408    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2409        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D> for (T0,)
2410    {
2411        #[inline]
2412        unsafe fn encode(
2413            self,
2414            encoder: &mut fidl::encoding::Encoder<'_, D>,
2415            offset: usize,
2416            depth: fidl::encoding::Depth,
2417        ) -> fidl::Result<()> {
2418            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2419            // Zero out padding regions. There's no need to apply masks
2420            // because the unmasked parts will be overwritten by fields.
2421            // Write the fields.
2422            self.0.encode(encoder, offset + 0, depth)?;
2423            Ok(())
2424        }
2425    }
2426
2427    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2428        for WlanFullmacImplSaeFrameTxRequest
2429    {
2430        #[inline(always)]
2431        fn new_empty() -> Self {
2432            Self { frame: fidl::new_empty!(SaeFrame, D) }
2433        }
2434
2435        #[inline]
2436        unsafe fn decode(
2437            &mut self,
2438            decoder: &mut fidl::encoding::Decoder<'_, D>,
2439            offset: usize,
2440            _depth: fidl::encoding::Depth,
2441        ) -> fidl::Result<()> {
2442            decoder.debug_check_bounds::<Self>(offset);
2443            // Verify that padding bytes are zero.
2444            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2445            Ok(())
2446        }
2447    }
2448
2449    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysResponse {
2450        type Borrowed<'a> = &'a Self;
2451        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2452            value
2453        }
2454    }
2455
2456    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysResponse {
2457        type Owned = Self;
2458
2459        #[inline(always)]
2460        fn inline_align(_context: fidl::encoding::Context) -> usize {
2461            8
2462        }
2463
2464        #[inline(always)]
2465        fn inline_size(_context: fidl::encoding::Context) -> usize {
2466            16
2467        }
2468    }
2469
2470    unsafe impl<D: fidl::encoding::ResourceDialect>
2471        fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D>
2472        for &WlanFullmacImplSetKeysResponse
2473    {
2474        #[inline]
2475        unsafe fn encode(
2476            self,
2477            encoder: &mut fidl::encoding::Encoder<'_, D>,
2478            offset: usize,
2479            _depth: fidl::encoding::Depth,
2480        ) -> fidl::Result<()> {
2481            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2482            // Delegate to tuple encoding.
2483            fidl::encoding::Encode::<WlanFullmacImplSetKeysResponse, D>::encode(
2484                (<WlanFullmacSetKeysResp as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
2485                encoder,
2486                offset,
2487                _depth,
2488            )
2489        }
2490    }
2491    unsafe impl<
2492        D: fidl::encoding::ResourceDialect,
2493        T0: fidl::encoding::Encode<WlanFullmacSetKeysResp, D>,
2494    > fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D> for (T0,)
2495    {
2496        #[inline]
2497        unsafe fn encode(
2498            self,
2499            encoder: &mut fidl::encoding::Encoder<'_, D>,
2500            offset: usize,
2501            depth: fidl::encoding::Depth,
2502        ) -> fidl::Result<()> {
2503            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2504            // Zero out padding regions. There's no need to apply masks
2505            // because the unmasked parts will be overwritten by fields.
2506            // Write the fields.
2507            self.0.encode(encoder, offset + 0, depth)?;
2508            Ok(())
2509        }
2510    }
2511
2512    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2513        for WlanFullmacImplSetKeysResponse
2514    {
2515        #[inline(always)]
2516        fn new_empty() -> Self {
2517            Self { resp: fidl::new_empty!(WlanFullmacSetKeysResp, D) }
2518        }
2519
2520        #[inline]
2521        unsafe fn decode(
2522            &mut self,
2523            decoder: &mut fidl::encoding::Decoder<'_, D>,
2524            offset: usize,
2525            _depth: fidl::encoding::Depth,
2526        ) -> fidl::Result<()> {
2527            decoder.debug_check_bounds::<Self>(offset);
2528            // Verify that padding bytes are zero.
2529            fidl::decode!(WlanFullmacSetKeysResp, D, &mut self.resp, decoder, offset + 0, _depth)?;
2530            Ok(())
2531        }
2532    }
2533
2534    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetMacAddressRequest {
2535        type Borrowed<'a> = &'a Self;
2536        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2537            value
2538        }
2539    }
2540
2541    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetMacAddressRequest {
2542        type Owned = Self;
2543
2544        #[inline(always)]
2545        fn inline_align(_context: fidl::encoding::Context) -> usize {
2546            1
2547        }
2548
2549        #[inline(always)]
2550        fn inline_size(_context: fidl::encoding::Context) -> usize {
2551            6
2552        }
2553        #[inline(always)]
2554        fn encode_is_copy() -> bool {
2555            true
2556        }
2557
2558        #[inline(always)]
2559        fn decode_is_copy() -> bool {
2560            true
2561        }
2562    }
2563
2564    unsafe impl<D: fidl::encoding::ResourceDialect>
2565        fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D>
2566        for &WlanFullmacImplSetMacAddressRequest
2567    {
2568        #[inline]
2569        unsafe fn encode(
2570            self,
2571            encoder: &mut fidl::encoding::Encoder<'_, D>,
2572            offset: usize,
2573            _depth: fidl::encoding::Depth,
2574        ) -> fidl::Result<()> {
2575            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2576            unsafe {
2577                // Copy the object into the buffer.
2578                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2579                (buf_ptr as *mut WlanFullmacImplSetMacAddressRequest)
2580                    .write_unaligned((self as *const WlanFullmacImplSetMacAddressRequest).read());
2581                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2582                // done second because the memcpy will write garbage to these bytes.
2583            }
2584            Ok(())
2585        }
2586    }
2587    unsafe impl<
2588        D: fidl::encoding::ResourceDialect,
2589        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2590    > fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D> for (T0,)
2591    {
2592        #[inline]
2593        unsafe fn encode(
2594            self,
2595            encoder: &mut fidl::encoding::Encoder<'_, D>,
2596            offset: usize,
2597            depth: fidl::encoding::Depth,
2598        ) -> fidl::Result<()> {
2599            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2600            // Zero out padding regions. There's no need to apply masks
2601            // because the unmasked parts will be overwritten by fields.
2602            // Write the fields.
2603            self.0.encode(encoder, offset + 0, depth)?;
2604            Ok(())
2605        }
2606    }
2607
2608    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2609        for WlanFullmacImplSetMacAddressRequest
2610    {
2611        #[inline(always)]
2612        fn new_empty() -> Self {
2613            Self { mac_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
2614        }
2615
2616        #[inline]
2617        unsafe fn decode(
2618            &mut self,
2619            decoder: &mut fidl::encoding::Decoder<'_, D>,
2620            offset: usize,
2621            _depth: fidl::encoding::Depth,
2622        ) -> fidl::Result<()> {
2623            decoder.debug_check_bounds::<Self>(offset);
2624            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2625            // Verify that padding bytes are zero.
2626            // Copy from the buffer into the object.
2627            unsafe {
2628                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
2629            }
2630            Ok(())
2631        }
2632    }
2633
2634    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2635        type Borrowed<'a> = &'a Self;
2636        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2637            value
2638        }
2639    }
2640
2641    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2642        type Owned = Self;
2643
2644        #[inline(always)]
2645        fn inline_align(_context: fidl::encoding::Context) -> usize {
2646            8
2647        }
2648
2649        #[inline(always)]
2650        fn inline_size(_context: fidl::encoding::Context) -> usize {
2651            16
2652        }
2653    }
2654
2655    unsafe impl<D: fidl::encoding::ResourceDialect>
2656        fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D>
2657        for &WlanFullmacImplGetIfaceHistogramStatsResponse
2658    {
2659        #[inline]
2660        unsafe fn encode(
2661            self,
2662            encoder: &mut fidl::encoding::Encoder<'_, D>,
2663            offset: usize,
2664            _depth: fidl::encoding::Depth,
2665        ) -> fidl::Result<()> {
2666            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2667            // Delegate to tuple encoding.
2668            fidl::encoding::Encode::<WlanFullmacImplGetIfaceHistogramStatsResponse, D>::encode(
2669                (
2670                    <fidl_fuchsia_wlan_stats__common::IfaceHistogramStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2671                ),
2672                encoder, offset, _depth
2673            )
2674        }
2675    }
2676    unsafe impl<
2677        D: fidl::encoding::ResourceDialect,
2678        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D>,
2679    > fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D> for (T0,)
2680    {
2681        #[inline]
2682        unsafe fn encode(
2683            self,
2684            encoder: &mut fidl::encoding::Encoder<'_, D>,
2685            offset: usize,
2686            depth: fidl::encoding::Depth,
2687        ) -> fidl::Result<()> {
2688            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2689            // Zero out padding regions. There's no need to apply masks
2690            // because the unmasked parts will be overwritten by fields.
2691            // Write the fields.
2692            self.0.encode(encoder, offset + 0, depth)?;
2693            Ok(())
2694        }
2695    }
2696
2697    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2698        for WlanFullmacImplGetIfaceHistogramStatsResponse
2699    {
2700        #[inline(always)]
2701        fn new_empty() -> Self {
2702            Self {
2703                stats: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D),
2704            }
2705        }
2706
2707        #[inline]
2708        unsafe fn decode(
2709            &mut self,
2710            decoder: &mut fidl::encoding::Decoder<'_, D>,
2711            offset: usize,
2712            _depth: fidl::encoding::Depth,
2713        ) -> fidl::Result<()> {
2714            decoder.debug_check_bounds::<Self>(offset);
2715            // Verify that padding bytes are zero.
2716            fidl::decode!(
2717                fidl_fuchsia_wlan_stats__common::IfaceHistogramStats,
2718                D,
2719                &mut self.stats,
2720                decoder,
2721                offset + 0,
2722                _depth
2723            )?;
2724            Ok(())
2725        }
2726    }
2727
2728    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2729        type Borrowed<'a> = &'a Self;
2730        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2731            value
2732        }
2733    }
2734
2735    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2736        type Owned = Self;
2737
2738        #[inline(always)]
2739        fn inline_align(_context: fidl::encoding::Context) -> usize {
2740            8
2741        }
2742
2743        #[inline(always)]
2744        fn inline_size(_context: fidl::encoding::Context) -> usize {
2745            16
2746        }
2747    }
2748
2749    unsafe impl<D: fidl::encoding::ResourceDialect>
2750        fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D>
2751        for &WlanFullmacImplGetIfaceStatsResponse
2752    {
2753        #[inline]
2754        unsafe fn encode(
2755            self,
2756            encoder: &mut fidl::encoding::Encoder<'_, D>,
2757            offset: usize,
2758            _depth: fidl::encoding::Depth,
2759        ) -> fidl::Result<()> {
2760            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2761            // Delegate to tuple encoding.
2762            fidl::encoding::Encode::<WlanFullmacImplGetIfaceStatsResponse, D>::encode(
2763                (
2764                    <fidl_fuchsia_wlan_stats__common::IfaceStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2765                ),
2766                encoder, offset, _depth
2767            )
2768        }
2769    }
2770    unsafe impl<
2771        D: fidl::encoding::ResourceDialect,
2772        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::IfaceStats, D>,
2773    > fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D> for (T0,)
2774    {
2775        #[inline]
2776        unsafe fn encode(
2777            self,
2778            encoder: &mut fidl::encoding::Encoder<'_, D>,
2779            offset: usize,
2780            depth: fidl::encoding::Depth,
2781        ) -> fidl::Result<()> {
2782            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2783            // Zero out padding regions. There's no need to apply masks
2784            // because the unmasked parts will be overwritten by fields.
2785            // Write the fields.
2786            self.0.encode(encoder, offset + 0, depth)?;
2787            Ok(())
2788        }
2789    }
2790
2791    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2792        for WlanFullmacImplGetIfaceStatsResponse
2793    {
2794        #[inline(always)]
2795        fn new_empty() -> Self {
2796            Self { stats: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceStats, D) }
2797        }
2798
2799        #[inline]
2800        unsafe fn decode(
2801            &mut self,
2802            decoder: &mut fidl::encoding::Decoder<'_, D>,
2803            offset: usize,
2804            _depth: fidl::encoding::Depth,
2805        ) -> fidl::Result<()> {
2806            decoder.debug_check_bounds::<Self>(offset);
2807            // Verify that padding bytes are zero.
2808            fidl::decode!(
2809                fidl_fuchsia_wlan_stats__common::IfaceStats,
2810                D,
2811                &mut self.stats,
2812                decoder,
2813                offset + 0,
2814                _depth
2815            )?;
2816            Ok(())
2817        }
2818    }
2819
2820    impl fidl::encoding::ValueTypeMarker for WlanFullmacRssiStats {
2821        type Borrowed<'a> = &'a Self;
2822        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2823            value
2824        }
2825    }
2826
2827    unsafe impl fidl::encoding::TypeMarker for WlanFullmacRssiStats {
2828        type Owned = Self;
2829
2830        #[inline(always)]
2831        fn inline_align(_context: fidl::encoding::Context) -> usize {
2832            8
2833        }
2834
2835        #[inline(always)]
2836        fn inline_size(_context: fidl::encoding::Context) -> usize {
2837            16
2838        }
2839    }
2840
2841    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanFullmacRssiStats, D>
2842        for &WlanFullmacRssiStats
2843    {
2844        #[inline]
2845        unsafe fn encode(
2846            self,
2847            encoder: &mut fidl::encoding::Encoder<'_, D>,
2848            offset: usize,
2849            _depth: fidl::encoding::Depth,
2850        ) -> fidl::Result<()> {
2851            encoder.debug_check_bounds::<WlanFullmacRssiStats>(offset);
2852            // Delegate to tuple encoding.
2853            fidl::encoding::Encode::<WlanFullmacRssiStats, D>::encode(
2854                (
2855                    <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.hist),
2856                ),
2857                encoder, offset, _depth
2858            )
2859        }
2860    }
2861    unsafe impl<
2862        D: fidl::encoding::ResourceDialect,
2863        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
2864    > fidl::encoding::Encode<WlanFullmacRssiStats, D> for (T0,)
2865    {
2866        #[inline]
2867        unsafe fn encode(
2868            self,
2869            encoder: &mut fidl::encoding::Encoder<'_, D>,
2870            offset: usize,
2871            depth: fidl::encoding::Depth,
2872        ) -> fidl::Result<()> {
2873            encoder.debug_check_bounds::<WlanFullmacRssiStats>(offset);
2874            // Zero out padding regions. There's no need to apply masks
2875            // because the unmasked parts will be overwritten by fields.
2876            // Write the fields.
2877            self.0.encode(encoder, offset + 0, depth)?;
2878            Ok(())
2879        }
2880    }
2881
2882    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanFullmacRssiStats {
2883        #[inline(always)]
2884        fn new_empty() -> Self {
2885            Self { hist: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D) }
2886        }
2887
2888        #[inline]
2889        unsafe fn decode(
2890            &mut self,
2891            decoder: &mut fidl::encoding::Decoder<'_, D>,
2892            offset: usize,
2893            _depth: fidl::encoding::Depth,
2894        ) -> fidl::Result<()> {
2895            decoder.debug_check_bounds::<Self>(offset);
2896            // Verify that padding bytes are zero.
2897            fidl::decode!(
2898                fidl::encoding::UnboundedVector<u64>,
2899                D,
2900                &mut self.hist,
2901                decoder,
2902                offset + 0,
2903                _depth
2904            )?;
2905            Ok(())
2906        }
2907    }
2908
2909    impl fidl::encoding::ValueTypeMarker for WlanFullmacSetKeysResp {
2910        type Borrowed<'a> = &'a Self;
2911        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2912            value
2913        }
2914    }
2915
2916    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSetKeysResp {
2917        type Owned = Self;
2918
2919        #[inline(always)]
2920        fn inline_align(_context: fidl::encoding::Context) -> usize {
2921            8
2922        }
2923
2924        #[inline(always)]
2925        fn inline_size(_context: fidl::encoding::Context) -> usize {
2926            16
2927        }
2928    }
2929
2930    unsafe impl<D: fidl::encoding::ResourceDialect>
2931        fidl::encoding::Encode<WlanFullmacSetKeysResp, D> for &WlanFullmacSetKeysResp
2932    {
2933        #[inline]
2934        unsafe fn encode(
2935            self,
2936            encoder: &mut fidl::encoding::Encoder<'_, D>,
2937            offset: usize,
2938            _depth: fidl::encoding::Depth,
2939        ) -> fidl::Result<()> {
2940            encoder.debug_check_bounds::<WlanFullmacSetKeysResp>(offset);
2941            // Delegate to tuple encoding.
2942            fidl::encoding::Encode::<WlanFullmacSetKeysResp, D>::encode(
2943                (<fidl::encoding::Vector<i32, 4> as fidl::encoding::ValueTypeMarker>::borrow(
2944                    &self.statuslist,
2945                ),),
2946                encoder,
2947                offset,
2948                _depth,
2949            )
2950        }
2951    }
2952    unsafe impl<
2953        D: fidl::encoding::ResourceDialect,
2954        T0: fidl::encoding::Encode<fidl::encoding::Vector<i32, 4>, D>,
2955    > fidl::encoding::Encode<WlanFullmacSetKeysResp, D> for (T0,)
2956    {
2957        #[inline]
2958        unsafe fn encode(
2959            self,
2960            encoder: &mut fidl::encoding::Encoder<'_, D>,
2961            offset: usize,
2962            depth: fidl::encoding::Depth,
2963        ) -> fidl::Result<()> {
2964            encoder.debug_check_bounds::<WlanFullmacSetKeysResp>(offset);
2965            // Zero out padding regions. There's no need to apply masks
2966            // because the unmasked parts will be overwritten by fields.
2967            // Write the fields.
2968            self.0.encode(encoder, offset + 0, depth)?;
2969            Ok(())
2970        }
2971    }
2972
2973    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2974        for WlanFullmacSetKeysResp
2975    {
2976        #[inline(always)]
2977        fn new_empty() -> Self {
2978            Self { statuslist: fidl::new_empty!(fidl::encoding::Vector<i32, 4>, D) }
2979        }
2980
2981        #[inline]
2982        unsafe fn decode(
2983            &mut self,
2984            decoder: &mut fidl::encoding::Decoder<'_, D>,
2985            offset: usize,
2986            _depth: fidl::encoding::Depth,
2987        ) -> fidl::Result<()> {
2988            decoder.debug_check_bounds::<Self>(offset);
2989            // Verify that padding bytes are zero.
2990            fidl::decode!(fidl::encoding::Vector<i32, 4>, D, &mut self.statuslist, decoder, offset + 0, _depth)?;
2991            Ok(())
2992        }
2993    }
2994
2995    impl fidl::encoding::ValueTypeMarker for WlanFullmacSignalReportIndication {
2996        type Borrowed<'a> = &'a Self;
2997        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2998            value
2999        }
3000    }
3001
3002    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSignalReportIndication {
3003        type Owned = Self;
3004
3005        #[inline(always)]
3006        fn inline_align(_context: fidl::encoding::Context) -> usize {
3007            1
3008        }
3009
3010        #[inline(always)]
3011        fn inline_size(_context: fidl::encoding::Context) -> usize {
3012            2
3013        }
3014        #[inline(always)]
3015        fn encode_is_copy() -> bool {
3016            true
3017        }
3018
3019        #[inline(always)]
3020        fn decode_is_copy() -> bool {
3021            true
3022        }
3023    }
3024
3025    unsafe impl<D: fidl::encoding::ResourceDialect>
3026        fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>
3027        for &WlanFullmacSignalReportIndication
3028    {
3029        #[inline]
3030        unsafe fn encode(
3031            self,
3032            encoder: &mut fidl::encoding::Encoder<'_, D>,
3033            offset: usize,
3034            _depth: fidl::encoding::Depth,
3035        ) -> fidl::Result<()> {
3036            encoder.debug_check_bounds::<WlanFullmacSignalReportIndication>(offset);
3037            unsafe {
3038                // Copy the object into the buffer.
3039                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3040                (buf_ptr as *mut WlanFullmacSignalReportIndication)
3041                    .write_unaligned((self as *const WlanFullmacSignalReportIndication).read());
3042                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3043                // done second because the memcpy will write garbage to these bytes.
3044            }
3045            Ok(())
3046        }
3047    }
3048    unsafe impl<
3049        D: fidl::encoding::ResourceDialect,
3050        T0: fidl::encoding::Encode<i8, D>,
3051        T1: fidl::encoding::Encode<i8, D>,
3052    > fidl::encoding::Encode<WlanFullmacSignalReportIndication, D> for (T0, T1)
3053    {
3054        #[inline]
3055        unsafe fn encode(
3056            self,
3057            encoder: &mut fidl::encoding::Encoder<'_, D>,
3058            offset: usize,
3059            depth: fidl::encoding::Depth,
3060        ) -> fidl::Result<()> {
3061            encoder.debug_check_bounds::<WlanFullmacSignalReportIndication>(offset);
3062            // Zero out padding regions. There's no need to apply masks
3063            // because the unmasked parts will be overwritten by fields.
3064            // Write the fields.
3065            self.0.encode(encoder, offset + 0, depth)?;
3066            self.1.encode(encoder, offset + 1, depth)?;
3067            Ok(())
3068        }
3069    }
3070
3071    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3072        for WlanFullmacSignalReportIndication
3073    {
3074        #[inline(always)]
3075        fn new_empty() -> Self {
3076            Self { rssi_dbm: fidl::new_empty!(i8, D), snr_db: fidl::new_empty!(i8, D) }
3077        }
3078
3079        #[inline]
3080        unsafe fn decode(
3081            &mut self,
3082            decoder: &mut fidl::encoding::Decoder<'_, D>,
3083            offset: usize,
3084            _depth: fidl::encoding::Depth,
3085        ) -> fidl::Result<()> {
3086            decoder.debug_check_bounds::<Self>(offset);
3087            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3088            // Verify that padding bytes are zero.
3089            // Copy from the buffer into the object.
3090            unsafe {
3091                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
3092            }
3093            Ok(())
3094        }
3095    }
3096
3097    impl BandCapability {
3098        #[inline(always)]
3099        fn max_ordinal_present(&self) -> u64 {
3100            if let Some(_) = self.operating_channels {
3101                return 5;
3102            }
3103            if let Some(_) = self.vht_caps {
3104                return 4;
3105            }
3106            if let Some(_) = self.ht_caps {
3107                return 3;
3108            }
3109            if let Some(_) = self.basic_rates {
3110                return 2;
3111            }
3112            if let Some(_) = self.band {
3113                return 1;
3114            }
3115            0
3116        }
3117    }
3118
3119    impl fidl::encoding::ValueTypeMarker for BandCapability {
3120        type Borrowed<'a> = &'a Self;
3121        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3122            value
3123        }
3124    }
3125
3126    unsafe impl fidl::encoding::TypeMarker for BandCapability {
3127        type Owned = Self;
3128
3129        #[inline(always)]
3130        fn inline_align(_context: fidl::encoding::Context) -> usize {
3131            8
3132        }
3133
3134        #[inline(always)]
3135        fn inline_size(_context: fidl::encoding::Context) -> usize {
3136            16
3137        }
3138    }
3139
3140    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandCapability, D>
3141        for &BandCapability
3142    {
3143        unsafe fn encode(
3144            self,
3145            encoder: &mut fidl::encoding::Encoder<'_, D>,
3146            offset: usize,
3147            mut depth: fidl::encoding::Depth,
3148        ) -> fidl::Result<()> {
3149            encoder.debug_check_bounds::<BandCapability>(offset);
3150            // Vector header
3151            let max_ordinal: u64 = self.max_ordinal_present();
3152            encoder.write_num(max_ordinal, offset);
3153            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3154            // Calling encoder.out_of_line_offset(0) is not allowed.
3155            if max_ordinal == 0 {
3156                return Ok(());
3157            }
3158            depth.increment()?;
3159            let envelope_size = 8;
3160            let bytes_len = max_ordinal as usize * envelope_size;
3161            #[allow(unused_variables)]
3162            let offset = encoder.out_of_line_offset(bytes_len);
3163            let mut _prev_end_offset: usize = 0;
3164            if 1 > max_ordinal {
3165                return Ok(());
3166            }
3167
3168            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3169            // are envelope_size bytes.
3170            let cur_offset: usize = (1 - 1) * envelope_size;
3171
3172            // Zero reserved fields.
3173            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3174
3175            // Safety:
3176            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3177            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3178            //   envelope_size bytes, there is always sufficient room.
3179            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::WlanBand, D>(
3180            self.band.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow),
3181            encoder, offset + cur_offset, depth
3182        )?;
3183
3184            _prev_end_offset = cur_offset + envelope_size;
3185            if 2 > max_ordinal {
3186                return Ok(());
3187            }
3188
3189            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3190            // are envelope_size bytes.
3191            let cur_offset: usize = (2 - 1) * envelope_size;
3192
3193            // Zero reserved fields.
3194            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3195
3196            // Safety:
3197            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3198            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3199            //   envelope_size bytes, there is always sufficient room.
3200            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 12>, D>(
3201                self.basic_rates.as_ref().map(
3202                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::ValueTypeMarker>::borrow,
3203                ),
3204                encoder,
3205                offset + cur_offset,
3206                depth,
3207            )?;
3208
3209            _prev_end_offset = cur_offset + envelope_size;
3210            if 3 > max_ordinal {
3211                return Ok(());
3212            }
3213
3214            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3215            // are envelope_size bytes.
3216            let cur_offset: usize = (3 - 1) * envelope_size;
3217
3218            // Zero reserved fields.
3219            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3220
3221            // Safety:
3222            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3223            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3224            //   envelope_size bytes, there is always sufficient room.
3225            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities, D>(
3226            self.ht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3227            encoder, offset + cur_offset, depth
3228        )?;
3229
3230            _prev_end_offset = cur_offset + envelope_size;
3231            if 4 > max_ordinal {
3232                return Ok(());
3233            }
3234
3235            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3236            // are envelope_size bytes.
3237            let cur_offset: usize = (4 - 1) * envelope_size;
3238
3239            // Zero reserved fields.
3240            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3241
3242            // Safety:
3243            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3244            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3245            //   envelope_size bytes, there is always sufficient room.
3246            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities, D>(
3247            self.vht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3248            encoder, offset + cur_offset, depth
3249        )?;
3250
3251            _prev_end_offset = cur_offset + envelope_size;
3252            if 5 > max_ordinal {
3253                return Ok(());
3254            }
3255
3256            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3257            // are envelope_size bytes.
3258            let cur_offset: usize = (5 - 1) * envelope_size;
3259
3260            // Zero reserved fields.
3261            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3262
3263            // Safety:
3264            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3265            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3266            //   envelope_size bytes, there is always sufficient room.
3267            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 256>, D>(
3268                self.operating_channels.as_ref().map(
3269                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow,
3270                ),
3271                encoder,
3272                offset + cur_offset,
3273                depth,
3274            )?;
3275
3276            _prev_end_offset = cur_offset + envelope_size;
3277
3278            Ok(())
3279        }
3280    }
3281
3282    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandCapability {
3283        #[inline(always)]
3284        fn new_empty() -> Self {
3285            Self::default()
3286        }
3287
3288        unsafe fn decode(
3289            &mut self,
3290            decoder: &mut fidl::encoding::Decoder<'_, D>,
3291            offset: usize,
3292            mut depth: fidl::encoding::Depth,
3293        ) -> fidl::Result<()> {
3294            decoder.debug_check_bounds::<Self>(offset);
3295            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3296                None => return Err(fidl::Error::NotNullable),
3297                Some(len) => len,
3298            };
3299            // Calling decoder.out_of_line_offset(0) is not allowed.
3300            if len == 0 {
3301                return Ok(());
3302            };
3303            depth.increment()?;
3304            let envelope_size = 8;
3305            let bytes_len = len * envelope_size;
3306            let offset = decoder.out_of_line_offset(bytes_len)?;
3307            // Decode the envelope for each type.
3308            let mut _next_ordinal_to_read = 0;
3309            let mut next_offset = offset;
3310            let end_offset = offset + bytes_len;
3311            _next_ordinal_to_read += 1;
3312            if next_offset >= end_offset {
3313                return Ok(());
3314            }
3315
3316            // Decode unknown envelopes for gaps in ordinals.
3317            while _next_ordinal_to_read < 1 {
3318                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3319                _next_ordinal_to_read += 1;
3320                next_offset += envelope_size;
3321            }
3322
3323            let next_out_of_line = decoder.next_out_of_line();
3324            let handles_before = decoder.remaining_handles();
3325            if let Some((inlined, num_bytes, num_handles)) =
3326                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3327            {
3328                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::WlanBand as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3329                if inlined != (member_inline_size <= 4) {
3330                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3331                }
3332                let inner_offset;
3333                let mut inner_depth = depth.clone();
3334                if inlined {
3335                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3336                    inner_offset = next_offset;
3337                } else {
3338                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3339                    inner_depth.increment()?;
3340                }
3341                let val_ref = self.band.get_or_insert_with(|| {
3342                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanBand, D)
3343                });
3344                fidl::decode!(
3345                    fidl_fuchsia_wlan_ieee80211__common::WlanBand,
3346                    D,
3347                    val_ref,
3348                    decoder,
3349                    inner_offset,
3350                    inner_depth
3351                )?;
3352                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3353                {
3354                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3355                }
3356                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3357                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3358                }
3359            }
3360
3361            next_offset += envelope_size;
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 < 2 {
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 =
3380                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::TypeMarker>::inline_size(
3381                        decoder.context,
3382                    );
3383                if inlined != (member_inline_size <= 4) {
3384                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3385                }
3386                let inner_offset;
3387                let mut inner_depth = depth.clone();
3388                if inlined {
3389                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3390                    inner_offset = next_offset;
3391                } else {
3392                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3393                    inner_depth.increment()?;
3394                }
3395                let val_ref = self
3396                    .basic_rates
3397                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 12>, D));
3398                fidl::decode!(fidl::encoding::Vector<u8, 12>, D, val_ref, decoder, inner_offset, inner_depth)?;
3399                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3400                {
3401                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3402                }
3403                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3404                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3405                }
3406            }
3407
3408            next_offset += envelope_size;
3409            _next_ordinal_to_read += 1;
3410            if next_offset >= end_offset {
3411                return Ok(());
3412            }
3413
3414            // Decode unknown envelopes for gaps in ordinals.
3415            while _next_ordinal_to_read < 3 {
3416                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3417                _next_ordinal_to_read += 1;
3418                next_offset += envelope_size;
3419            }
3420
3421            let next_out_of_line = decoder.next_out_of_line();
3422            let handles_before = decoder.remaining_handles();
3423            if let Some((inlined, num_bytes, num_handles)) =
3424                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3425            {
3426                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::HtCapabilities as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3427                if inlined != (member_inline_size <= 4) {
3428                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3429                }
3430                let inner_offset;
3431                let mut inner_depth = depth.clone();
3432                if inlined {
3433                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3434                    inner_offset = next_offset;
3435                } else {
3436                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3437                    inner_depth.increment()?;
3438                }
3439                let val_ref = self.ht_caps.get_or_insert_with(|| {
3440                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::HtCapabilities, D)
3441                });
3442                fidl::decode!(
3443                    fidl_fuchsia_wlan_ieee80211__common::HtCapabilities,
3444                    D,
3445                    val_ref,
3446                    decoder,
3447                    inner_offset,
3448                    inner_depth
3449                )?;
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 < 4 {
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::VhtCapabilities 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.vht_caps.get_or_insert_with(|| {
3491                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities, D)
3492                });
3493                fidl::decode!(
3494                    fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities,
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 < 5 {
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 =
3529                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::TypeMarker>::inline_size(
3530                        decoder.context,
3531                    );
3532                if inlined != (member_inline_size <= 4) {
3533                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3534                }
3535                let inner_offset;
3536                let mut inner_depth = depth.clone();
3537                if inlined {
3538                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3539                    inner_offset = next_offset;
3540                } else {
3541                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3542                    inner_depth.increment()?;
3543                }
3544                let val_ref = self
3545                    .operating_channels
3546                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D));
3547                fidl::decode!(fidl::encoding::Vector<u8, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
3548                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3549                {
3550                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3551                }
3552                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3553                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3554                }
3555            }
3556
3557            next_offset += envelope_size;
3558
3559            // Decode the remaining unknown envelopes.
3560            while next_offset < end_offset {
3561                _next_ordinal_to_read += 1;
3562                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3563                next_offset += envelope_size;
3564            }
3565
3566            Ok(())
3567        }
3568    }
3569
3570    impl SaeFrame {
3571        #[inline(always)]
3572        fn max_ordinal_present(&self) -> u64 {
3573            if let Some(_) = self.sae_fields {
3574                return 4;
3575            }
3576            if let Some(_) = self.seq_num {
3577                return 3;
3578            }
3579            if let Some(_) = self.status_code {
3580                return 2;
3581            }
3582            if let Some(_) = self.peer_sta_address {
3583                return 1;
3584            }
3585            0
3586        }
3587    }
3588
3589    impl fidl::encoding::ValueTypeMarker for SaeFrame {
3590        type Borrowed<'a> = &'a Self;
3591        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3592            value
3593        }
3594    }
3595
3596    unsafe impl fidl::encoding::TypeMarker for SaeFrame {
3597        type Owned = Self;
3598
3599        #[inline(always)]
3600        fn inline_align(_context: fidl::encoding::Context) -> usize {
3601            8
3602        }
3603
3604        #[inline(always)]
3605        fn inline_size(_context: fidl::encoding::Context) -> usize {
3606            16
3607        }
3608    }
3609
3610    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFrame, D> for &SaeFrame {
3611        unsafe fn encode(
3612            self,
3613            encoder: &mut fidl::encoding::Encoder<'_, D>,
3614            offset: usize,
3615            mut depth: fidl::encoding::Depth,
3616        ) -> fidl::Result<()> {
3617            encoder.debug_check_bounds::<SaeFrame>(offset);
3618            // Vector header
3619            let max_ordinal: u64 = self.max_ordinal_present();
3620            encoder.write_num(max_ordinal, offset);
3621            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3622            // Calling encoder.out_of_line_offset(0) is not allowed.
3623            if max_ordinal == 0 {
3624                return Ok(());
3625            }
3626            depth.increment()?;
3627            let envelope_size = 8;
3628            let bytes_len = max_ordinal as usize * envelope_size;
3629            #[allow(unused_variables)]
3630            let offset = encoder.out_of_line_offset(bytes_len);
3631            let mut _prev_end_offset: usize = 0;
3632            if 1 > max_ordinal {
3633                return Ok(());
3634            }
3635
3636            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3637            // are envelope_size bytes.
3638            let cur_offset: usize = (1 - 1) * envelope_size;
3639
3640            // Zero reserved fields.
3641            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3642
3643            // Safety:
3644            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3645            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3646            //   envelope_size bytes, there is always sufficient room.
3647            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3648                self.peer_sta_address
3649                    .as_ref()
3650                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3651                encoder,
3652                offset + cur_offset,
3653                depth,
3654            )?;
3655
3656            _prev_end_offset = cur_offset + envelope_size;
3657            if 2 > max_ordinal {
3658                return Ok(());
3659            }
3660
3661            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3662            // are envelope_size bytes.
3663            let cur_offset: usize = (2 - 1) * envelope_size;
3664
3665            // Zero reserved fields.
3666            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3667
3668            // Safety:
3669            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3670            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3671            //   envelope_size bytes, there is always sufficient room.
3672            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
3673            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
3674            encoder, offset + cur_offset, depth
3675        )?;
3676
3677            _prev_end_offset = cur_offset + envelope_size;
3678            if 3 > max_ordinal {
3679                return Ok(());
3680            }
3681
3682            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3683            // are envelope_size bytes.
3684            let cur_offset: usize = (3 - 1) * envelope_size;
3685
3686            // Zero reserved fields.
3687            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3688
3689            // Safety:
3690            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3691            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3692            //   envelope_size bytes, there is always sufficient room.
3693            fidl::encoding::encode_in_envelope_optional::<u16, D>(
3694                self.seq_num.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3695                encoder,
3696                offset + cur_offset,
3697                depth,
3698            )?;
3699
3700            _prev_end_offset = cur_offset + envelope_size;
3701            if 4 > max_ordinal {
3702                return Ok(());
3703            }
3704
3705            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3706            // are envelope_size bytes.
3707            let cur_offset: usize = (4 - 1) * envelope_size;
3708
3709            // Zero reserved fields.
3710            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3711
3712            // Safety:
3713            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3714            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3715            //   envelope_size bytes, there is always sufficient room.
3716            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
3717            self.sae_fields.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
3718            encoder, offset + cur_offset, depth
3719        )?;
3720
3721            _prev_end_offset = cur_offset + envelope_size;
3722
3723            Ok(())
3724        }
3725    }
3726
3727    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFrame {
3728        #[inline(always)]
3729        fn new_empty() -> Self {
3730            Self::default()
3731        }
3732
3733        unsafe fn decode(
3734            &mut self,
3735            decoder: &mut fidl::encoding::Decoder<'_, D>,
3736            offset: usize,
3737            mut depth: fidl::encoding::Depth,
3738        ) -> fidl::Result<()> {
3739            decoder.debug_check_bounds::<Self>(offset);
3740            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3741                None => return Err(fidl::Error::NotNullable),
3742                Some(len) => len,
3743            };
3744            // Calling decoder.out_of_line_offset(0) is not allowed.
3745            if len == 0 {
3746                return Ok(());
3747            };
3748            depth.increment()?;
3749            let envelope_size = 8;
3750            let bytes_len = len * envelope_size;
3751            let offset = decoder.out_of_line_offset(bytes_len)?;
3752            // Decode the envelope for each type.
3753            let mut _next_ordinal_to_read = 0;
3754            let mut next_offset = offset;
3755            let end_offset = offset + bytes_len;
3756            _next_ordinal_to_read += 1;
3757            if next_offset >= end_offset {
3758                return Ok(());
3759            }
3760
3761            // Decode unknown envelopes for gaps in ordinals.
3762            while _next_ordinal_to_read < 1 {
3763                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3764                _next_ordinal_to_read += 1;
3765                next_offset += envelope_size;
3766            }
3767
3768            let next_out_of_line = decoder.next_out_of_line();
3769            let handles_before = decoder.remaining_handles();
3770            if let Some((inlined, num_bytes, num_handles)) =
3771                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3772            {
3773                let member_inline_size =
3774                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3775                        decoder.context,
3776                    );
3777                if inlined != (member_inline_size <= 4) {
3778                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3779                }
3780                let inner_offset;
3781                let mut inner_depth = depth.clone();
3782                if inlined {
3783                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3784                    inner_offset = next_offset;
3785                } else {
3786                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3787                    inner_depth.increment()?;
3788                }
3789                let val_ref = self
3790                    .peer_sta_address
3791                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
3792                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
3793                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3794                {
3795                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3796                }
3797                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3798                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3799                }
3800            }
3801
3802            next_offset += envelope_size;
3803            _next_ordinal_to_read += 1;
3804            if next_offset >= end_offset {
3805                return Ok(());
3806            }
3807
3808            // Decode unknown envelopes for gaps in ordinals.
3809            while _next_ordinal_to_read < 2 {
3810                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3811                _next_ordinal_to_read += 1;
3812                next_offset += envelope_size;
3813            }
3814
3815            let next_out_of_line = decoder.next_out_of_line();
3816            let handles_before = decoder.remaining_handles();
3817            if let Some((inlined, num_bytes, num_handles)) =
3818                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3819            {
3820                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3821                if inlined != (member_inline_size <= 4) {
3822                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3823                }
3824                let inner_offset;
3825                let mut inner_depth = depth.clone();
3826                if inlined {
3827                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3828                    inner_offset = next_offset;
3829                } else {
3830                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3831                    inner_depth.increment()?;
3832                }
3833                let val_ref = self.status_code.get_or_insert_with(|| {
3834                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
3835                });
3836                fidl::decode!(
3837                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
3838                    D,
3839                    val_ref,
3840                    decoder,
3841                    inner_offset,
3842                    inner_depth
3843                )?;
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 < 3 {
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 =
3872                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3873                if inlined != (member_inline_size <= 4) {
3874                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3875                }
3876                let inner_offset;
3877                let mut inner_depth = depth.clone();
3878                if inlined {
3879                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3880                    inner_offset = next_offset;
3881                } else {
3882                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3883                    inner_depth.increment()?;
3884                }
3885                let val_ref = self.seq_num.get_or_insert_with(|| fidl::new_empty!(u16, D));
3886                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3887                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3888                {
3889                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3890                }
3891                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3892                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3893                }
3894            }
3895
3896            next_offset += envelope_size;
3897            _next_ordinal_to_read += 1;
3898            if next_offset >= end_offset {
3899                return Ok(());
3900            }
3901
3902            // Decode unknown envelopes for gaps in ordinals.
3903            while _next_ordinal_to_read < 4 {
3904                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3905                _next_ordinal_to_read += 1;
3906                next_offset += envelope_size;
3907            }
3908
3909            let next_out_of_line = decoder.next_out_of_line();
3910            let handles_before = decoder.remaining_handles();
3911            if let Some((inlined, num_bytes, num_handles)) =
3912                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3913            {
3914                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3915                if inlined != (member_inline_size <= 4) {
3916                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3917                }
3918                let inner_offset;
3919                let mut inner_depth = depth.clone();
3920                if inlined {
3921                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3922                    inner_offset = next_offset;
3923                } else {
3924                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3925                    inner_depth.increment()?;
3926                }
3927                let val_ref = self.sae_fields.get_or_insert_with(|| {
3928                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
3929                });
3930                fidl::decode!(
3931                    fidl::encoding::UnboundedVector<u8>,
3932                    D,
3933                    val_ref,
3934                    decoder,
3935                    inner_offset,
3936                    inner_depth
3937                )?;
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
3949            // Decode the remaining unknown envelopes.
3950            while next_offset < end_offset {
3951                _next_ordinal_to_read += 1;
3952                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3953                next_offset += envelope_size;
3954            }
3955
3956            Ok(())
3957        }
3958    }
3959
3960    impl WlanFullmacImplAssocRespRequest {
3961        #[inline(always)]
3962        fn max_ordinal_present(&self) -> u64 {
3963            if let Some(_) = self.association_id {
3964                return 3;
3965            }
3966            if let Some(_) = self.result_code {
3967                return 2;
3968            }
3969            if let Some(_) = self.peer_sta_address {
3970                return 1;
3971            }
3972            0
3973        }
3974    }
3975
3976    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAssocRespRequest {
3977        type Borrowed<'a> = &'a Self;
3978        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3979            value
3980        }
3981    }
3982
3983    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAssocRespRequest {
3984        type Owned = Self;
3985
3986        #[inline(always)]
3987        fn inline_align(_context: fidl::encoding::Context) -> usize {
3988            8
3989        }
3990
3991        #[inline(always)]
3992        fn inline_size(_context: fidl::encoding::Context) -> usize {
3993            16
3994        }
3995    }
3996
3997    unsafe impl<D: fidl::encoding::ResourceDialect>
3998        fidl::encoding::Encode<WlanFullmacImplAssocRespRequest, D>
3999        for &WlanFullmacImplAssocRespRequest
4000    {
4001        unsafe fn encode(
4002            self,
4003            encoder: &mut fidl::encoding::Encoder<'_, D>,
4004            offset: usize,
4005            mut depth: fidl::encoding::Depth,
4006        ) -> fidl::Result<()> {
4007            encoder.debug_check_bounds::<WlanFullmacImplAssocRespRequest>(offset);
4008            // Vector header
4009            let max_ordinal: u64 = self.max_ordinal_present();
4010            encoder.write_num(max_ordinal, offset);
4011            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4012            // Calling encoder.out_of_line_offset(0) is not allowed.
4013            if max_ordinal == 0 {
4014                return Ok(());
4015            }
4016            depth.increment()?;
4017            let envelope_size = 8;
4018            let bytes_len = max_ordinal as usize * envelope_size;
4019            #[allow(unused_variables)]
4020            let offset = encoder.out_of_line_offset(bytes_len);
4021            let mut _prev_end_offset: usize = 0;
4022            if 1 > max_ordinal {
4023                return Ok(());
4024            }
4025
4026            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4027            // are envelope_size bytes.
4028            let cur_offset: usize = (1 - 1) * envelope_size;
4029
4030            // Zero reserved fields.
4031            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4032
4033            // Safety:
4034            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4035            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4036            //   envelope_size bytes, there is always sufficient room.
4037            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4038                self.peer_sta_address
4039                    .as_ref()
4040                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4041                encoder,
4042                offset + cur_offset,
4043                depth,
4044            )?;
4045
4046            _prev_end_offset = cur_offset + envelope_size;
4047            if 2 > max_ordinal {
4048                return Ok(());
4049            }
4050
4051            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4052            // are envelope_size bytes.
4053            let cur_offset: usize = (2 - 1) * envelope_size;
4054
4055            // Zero reserved fields.
4056            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4057
4058            // Safety:
4059            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4060            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4061            //   envelope_size bytes, there is always sufficient room.
4062            fidl::encoding::encode_in_envelope_optional::<WlanAssocResult, D>(
4063                self.result_code
4064                    .as_ref()
4065                    .map(<WlanAssocResult as fidl::encoding::ValueTypeMarker>::borrow),
4066                encoder,
4067                offset + cur_offset,
4068                depth,
4069            )?;
4070
4071            _prev_end_offset = cur_offset + envelope_size;
4072            if 3 > max_ordinal {
4073                return Ok(());
4074            }
4075
4076            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4077            // are envelope_size bytes.
4078            let cur_offset: usize = (3 - 1) * envelope_size;
4079
4080            // Zero reserved fields.
4081            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4082
4083            // Safety:
4084            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4085            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4086            //   envelope_size bytes, there is always sufficient room.
4087            fidl::encoding::encode_in_envelope_optional::<u16, D>(
4088                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4089                encoder,
4090                offset + cur_offset,
4091                depth,
4092            )?;
4093
4094            _prev_end_offset = cur_offset + envelope_size;
4095
4096            Ok(())
4097        }
4098    }
4099
4100    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4101        for WlanFullmacImplAssocRespRequest
4102    {
4103        #[inline(always)]
4104        fn new_empty() -> Self {
4105            Self::default()
4106        }
4107
4108        unsafe fn decode(
4109            &mut self,
4110            decoder: &mut fidl::encoding::Decoder<'_, D>,
4111            offset: usize,
4112            mut depth: fidl::encoding::Depth,
4113        ) -> fidl::Result<()> {
4114            decoder.debug_check_bounds::<Self>(offset);
4115            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4116                None => return Err(fidl::Error::NotNullable),
4117                Some(len) => len,
4118            };
4119            // Calling decoder.out_of_line_offset(0) is not allowed.
4120            if len == 0 {
4121                return Ok(());
4122            };
4123            depth.increment()?;
4124            let envelope_size = 8;
4125            let bytes_len = len * envelope_size;
4126            let offset = decoder.out_of_line_offset(bytes_len)?;
4127            // Decode the envelope for each type.
4128            let mut _next_ordinal_to_read = 0;
4129            let mut next_offset = offset;
4130            let end_offset = offset + bytes_len;
4131            _next_ordinal_to_read += 1;
4132            if next_offset >= end_offset {
4133                return Ok(());
4134            }
4135
4136            // Decode unknown envelopes for gaps in ordinals.
4137            while _next_ordinal_to_read < 1 {
4138                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4139                _next_ordinal_to_read += 1;
4140                next_offset += envelope_size;
4141            }
4142
4143            let next_out_of_line = decoder.next_out_of_line();
4144            let handles_before = decoder.remaining_handles();
4145            if let Some((inlined, num_bytes, num_handles)) =
4146                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4147            {
4148                let member_inline_size =
4149                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4150                        decoder.context,
4151                    );
4152                if inlined != (member_inline_size <= 4) {
4153                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4154                }
4155                let inner_offset;
4156                let mut inner_depth = depth.clone();
4157                if inlined {
4158                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4159                    inner_offset = next_offset;
4160                } else {
4161                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4162                    inner_depth.increment()?;
4163                }
4164                let val_ref = self
4165                    .peer_sta_address
4166                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4167                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4168                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4169                {
4170                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4171                }
4172                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4173                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4174                }
4175            }
4176
4177            next_offset += envelope_size;
4178            _next_ordinal_to_read += 1;
4179            if next_offset >= end_offset {
4180                return Ok(());
4181            }
4182
4183            // Decode unknown envelopes for gaps in ordinals.
4184            while _next_ordinal_to_read < 2 {
4185                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4186                _next_ordinal_to_read += 1;
4187                next_offset += envelope_size;
4188            }
4189
4190            let next_out_of_line = decoder.next_out_of_line();
4191            let handles_before = decoder.remaining_handles();
4192            if let Some((inlined, num_bytes, num_handles)) =
4193                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4194            {
4195                let member_inline_size =
4196                    <WlanAssocResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4197                if inlined != (member_inline_size <= 4) {
4198                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4199                }
4200                let inner_offset;
4201                let mut inner_depth = depth.clone();
4202                if inlined {
4203                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4204                    inner_offset = next_offset;
4205                } else {
4206                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4207                    inner_depth.increment()?;
4208                }
4209                let val_ref =
4210                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAssocResult, D));
4211                fidl::decode!(WlanAssocResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4212                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4213                {
4214                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4215                }
4216                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4217                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4218                }
4219            }
4220
4221            next_offset += envelope_size;
4222            _next_ordinal_to_read += 1;
4223            if next_offset >= end_offset {
4224                return Ok(());
4225            }
4226
4227            // Decode unknown envelopes for gaps in ordinals.
4228            while _next_ordinal_to_read < 3 {
4229                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4230                _next_ordinal_to_read += 1;
4231                next_offset += envelope_size;
4232            }
4233
4234            let next_out_of_line = decoder.next_out_of_line();
4235            let handles_before = decoder.remaining_handles();
4236            if let Some((inlined, num_bytes, num_handles)) =
4237                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4238            {
4239                let member_inline_size =
4240                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4241                if inlined != (member_inline_size <= 4) {
4242                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4243                }
4244                let inner_offset;
4245                let mut inner_depth = depth.clone();
4246                if inlined {
4247                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4248                    inner_offset = next_offset;
4249                } else {
4250                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4251                    inner_depth.increment()?;
4252                }
4253                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
4254                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4255                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4256                {
4257                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4258                }
4259                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4260                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4261                }
4262            }
4263
4264            next_offset += envelope_size;
4265
4266            // Decode the remaining unknown envelopes.
4267            while next_offset < end_offset {
4268                _next_ordinal_to_read += 1;
4269                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4270                next_offset += envelope_size;
4271            }
4272
4273            Ok(())
4274        }
4275    }
4276
4277    impl WlanFullmacImplAuthRespRequest {
4278        #[inline(always)]
4279        fn max_ordinal_present(&self) -> u64 {
4280            if let Some(_) = self.result_code {
4281                return 2;
4282            }
4283            if let Some(_) = self.peer_sta_address {
4284                return 1;
4285            }
4286            0
4287        }
4288    }
4289
4290    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAuthRespRequest {
4291        type Borrowed<'a> = &'a Self;
4292        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4293            value
4294        }
4295    }
4296
4297    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAuthRespRequest {
4298        type Owned = Self;
4299
4300        #[inline(always)]
4301        fn inline_align(_context: fidl::encoding::Context) -> usize {
4302            8
4303        }
4304
4305        #[inline(always)]
4306        fn inline_size(_context: fidl::encoding::Context) -> usize {
4307            16
4308        }
4309    }
4310
4311    unsafe impl<D: fidl::encoding::ResourceDialect>
4312        fidl::encoding::Encode<WlanFullmacImplAuthRespRequest, D>
4313        for &WlanFullmacImplAuthRespRequest
4314    {
4315        unsafe fn encode(
4316            self,
4317            encoder: &mut fidl::encoding::Encoder<'_, D>,
4318            offset: usize,
4319            mut depth: fidl::encoding::Depth,
4320        ) -> fidl::Result<()> {
4321            encoder.debug_check_bounds::<WlanFullmacImplAuthRespRequest>(offset);
4322            // Vector header
4323            let max_ordinal: u64 = self.max_ordinal_present();
4324            encoder.write_num(max_ordinal, offset);
4325            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4326            // Calling encoder.out_of_line_offset(0) is not allowed.
4327            if max_ordinal == 0 {
4328                return Ok(());
4329            }
4330            depth.increment()?;
4331            let envelope_size = 8;
4332            let bytes_len = max_ordinal as usize * envelope_size;
4333            #[allow(unused_variables)]
4334            let offset = encoder.out_of_line_offset(bytes_len);
4335            let mut _prev_end_offset: usize = 0;
4336            if 1 > max_ordinal {
4337                return Ok(());
4338            }
4339
4340            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4341            // are envelope_size bytes.
4342            let cur_offset: usize = (1 - 1) * envelope_size;
4343
4344            // Zero reserved fields.
4345            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4346
4347            // Safety:
4348            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4349            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4350            //   envelope_size bytes, there is always sufficient room.
4351            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4352                self.peer_sta_address
4353                    .as_ref()
4354                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4355                encoder,
4356                offset + cur_offset,
4357                depth,
4358            )?;
4359
4360            _prev_end_offset = cur_offset + envelope_size;
4361            if 2 > max_ordinal {
4362                return Ok(());
4363            }
4364
4365            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4366            // are envelope_size bytes.
4367            let cur_offset: usize = (2 - 1) * envelope_size;
4368
4369            // Zero reserved fields.
4370            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4371
4372            // Safety:
4373            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4374            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4375            //   envelope_size bytes, there is always sufficient room.
4376            fidl::encoding::encode_in_envelope_optional::<WlanAuthResult, D>(
4377                self.result_code
4378                    .as_ref()
4379                    .map(<WlanAuthResult as fidl::encoding::ValueTypeMarker>::borrow),
4380                encoder,
4381                offset + cur_offset,
4382                depth,
4383            )?;
4384
4385            _prev_end_offset = cur_offset + envelope_size;
4386
4387            Ok(())
4388        }
4389    }
4390
4391    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4392        for WlanFullmacImplAuthRespRequest
4393    {
4394        #[inline(always)]
4395        fn new_empty() -> Self {
4396            Self::default()
4397        }
4398
4399        unsafe fn decode(
4400            &mut self,
4401            decoder: &mut fidl::encoding::Decoder<'_, D>,
4402            offset: usize,
4403            mut depth: fidl::encoding::Depth,
4404        ) -> fidl::Result<()> {
4405            decoder.debug_check_bounds::<Self>(offset);
4406            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4407                None => return Err(fidl::Error::NotNullable),
4408                Some(len) => len,
4409            };
4410            // Calling decoder.out_of_line_offset(0) is not allowed.
4411            if len == 0 {
4412                return Ok(());
4413            };
4414            depth.increment()?;
4415            let envelope_size = 8;
4416            let bytes_len = len * envelope_size;
4417            let offset = decoder.out_of_line_offset(bytes_len)?;
4418            // Decode the envelope for each type.
4419            let mut _next_ordinal_to_read = 0;
4420            let mut next_offset = offset;
4421            let end_offset = offset + bytes_len;
4422            _next_ordinal_to_read += 1;
4423            if next_offset >= end_offset {
4424                return Ok(());
4425            }
4426
4427            // Decode unknown envelopes for gaps in ordinals.
4428            while _next_ordinal_to_read < 1 {
4429                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4430                _next_ordinal_to_read += 1;
4431                next_offset += envelope_size;
4432            }
4433
4434            let next_out_of_line = decoder.next_out_of_line();
4435            let handles_before = decoder.remaining_handles();
4436            if let Some((inlined, num_bytes, num_handles)) =
4437                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4438            {
4439                let member_inline_size =
4440                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4441                        decoder.context,
4442                    );
4443                if inlined != (member_inline_size <= 4) {
4444                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4445                }
4446                let inner_offset;
4447                let mut inner_depth = depth.clone();
4448                if inlined {
4449                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4450                    inner_offset = next_offset;
4451                } else {
4452                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4453                    inner_depth.increment()?;
4454                }
4455                let val_ref = self
4456                    .peer_sta_address
4457                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4458                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4459                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4460                {
4461                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4462                }
4463                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4464                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4465                }
4466            }
4467
4468            next_offset += envelope_size;
4469            _next_ordinal_to_read += 1;
4470            if next_offset >= end_offset {
4471                return Ok(());
4472            }
4473
4474            // Decode unknown envelopes for gaps in ordinals.
4475            while _next_ordinal_to_read < 2 {
4476                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4477                _next_ordinal_to_read += 1;
4478                next_offset += envelope_size;
4479            }
4480
4481            let next_out_of_line = decoder.next_out_of_line();
4482            let handles_before = decoder.remaining_handles();
4483            if let Some((inlined, num_bytes, num_handles)) =
4484                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4485            {
4486                let member_inline_size =
4487                    <WlanAuthResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4488                if inlined != (member_inline_size <= 4) {
4489                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4490                }
4491                let inner_offset;
4492                let mut inner_depth = depth.clone();
4493                if inlined {
4494                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4495                    inner_offset = next_offset;
4496                } else {
4497                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4498                    inner_depth.increment()?;
4499                }
4500                let val_ref =
4501                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAuthResult, D));
4502                fidl::decode!(WlanAuthResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4503                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4504                {
4505                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4506                }
4507                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4508                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4509                }
4510            }
4511
4512            next_offset += envelope_size;
4513
4514            // Decode the remaining unknown envelopes.
4515            while next_offset < end_offset {
4516                _next_ordinal_to_read += 1;
4517                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4518                next_offset += envelope_size;
4519            }
4520
4521            Ok(())
4522        }
4523    }
4524
4525    impl WlanFullmacImplConnectRequest {
4526        #[inline(always)]
4527        fn max_ordinal_present(&self) -> u64 {
4528            if let Some(_) = self.owe_public_key {
4529                return 8;
4530            }
4531            if let Some(_) = self.wep_key_desc {
4532                return 7;
4533            }
4534            if let Some(_) = self.security_ie {
4535                return 6;
4536            }
4537            if let Some(_) = self.wep_key {
4538                return 5;
4539            }
4540            if let Some(_) = self.sae_password {
4541                return 4;
4542            }
4543            if let Some(_) = self.auth_type {
4544                return 3;
4545            }
4546            if let Some(_) = self.connect_failure_timeout {
4547                return 2;
4548            }
4549            if let Some(_) = self.selected_bss {
4550                return 1;
4551            }
4552            0
4553        }
4554    }
4555
4556    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplConnectRequest {
4557        type Borrowed<'a> = &'a Self;
4558        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4559            value
4560        }
4561    }
4562
4563    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplConnectRequest {
4564        type Owned = Self;
4565
4566        #[inline(always)]
4567        fn inline_align(_context: fidl::encoding::Context) -> usize {
4568            8
4569        }
4570
4571        #[inline(always)]
4572        fn inline_size(_context: fidl::encoding::Context) -> usize {
4573            16
4574        }
4575    }
4576
4577    unsafe impl<D: fidl::encoding::ResourceDialect>
4578        fidl::encoding::Encode<WlanFullmacImplConnectRequest, D>
4579        for &WlanFullmacImplConnectRequest
4580    {
4581        unsafe fn encode(
4582            self,
4583            encoder: &mut fidl::encoding::Encoder<'_, D>,
4584            offset: usize,
4585            mut depth: fidl::encoding::Depth,
4586        ) -> fidl::Result<()> {
4587            encoder.debug_check_bounds::<WlanFullmacImplConnectRequest>(offset);
4588            // Vector header
4589            let max_ordinal: u64 = self.max_ordinal_present();
4590            encoder.write_num(max_ordinal, offset);
4591            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4592            // Calling encoder.out_of_line_offset(0) is not allowed.
4593            if max_ordinal == 0 {
4594                return Ok(());
4595            }
4596            depth.increment()?;
4597            let envelope_size = 8;
4598            let bytes_len = max_ordinal as usize * envelope_size;
4599            #[allow(unused_variables)]
4600            let offset = encoder.out_of_line_offset(bytes_len);
4601            let mut _prev_end_offset: usize = 0;
4602            if 1 > max_ordinal {
4603                return Ok(());
4604            }
4605
4606            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4607            // are envelope_size bytes.
4608            let cur_offset: usize = (1 - 1) * envelope_size;
4609
4610            // Zero reserved fields.
4611            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4612
4613            // Safety:
4614            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4615            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4616            //   envelope_size bytes, there is always sufficient room.
4617            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssDescription, D>(
4618            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
4619            encoder, offset + cur_offset, depth
4620        )?;
4621
4622            _prev_end_offset = cur_offset + envelope_size;
4623            if 2 > max_ordinal {
4624                return Ok(());
4625            }
4626
4627            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4628            // are envelope_size bytes.
4629            let cur_offset: usize = (2 - 1) * envelope_size;
4630
4631            // Zero reserved fields.
4632            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4633
4634            // Safety:
4635            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4636            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4637            //   envelope_size bytes, there is always sufficient room.
4638            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4639                self.connect_failure_timeout
4640                    .as_ref()
4641                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4642                encoder,
4643                offset + cur_offset,
4644                depth,
4645            )?;
4646
4647            _prev_end_offset = cur_offset + envelope_size;
4648            if 3 > max_ordinal {
4649                return Ok(());
4650            }
4651
4652            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4653            // are envelope_size bytes.
4654            let cur_offset: usize = (3 - 1) * envelope_size;
4655
4656            // Zero reserved fields.
4657            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4658
4659            // Safety:
4660            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4661            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4662            //   envelope_size bytes, there is always sufficient room.
4663            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
4664                self.auth_type
4665                    .as_ref()
4666                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
4667                encoder,
4668                offset + cur_offset,
4669                depth,
4670            )?;
4671
4672            _prev_end_offset = cur_offset + envelope_size;
4673            if 4 > max_ordinal {
4674                return Ok(());
4675            }
4676
4677            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4678            // are envelope_size bytes.
4679            let cur_offset: usize = (4 - 1) * envelope_size;
4680
4681            // Zero reserved fields.
4682            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4683
4684            // Safety:
4685            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4686            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4687            //   envelope_size bytes, there is always sufficient room.
4688            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
4689            self.sae_password.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
4690            encoder, offset + cur_offset, depth
4691        )?;
4692
4693            _prev_end_offset = cur_offset + envelope_size;
4694            if 5 > max_ordinal {
4695                return Ok(());
4696            }
4697
4698            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4699            // are envelope_size bytes.
4700            let cur_offset: usize = (5 - 1) * envelope_size;
4701
4702            // Zero reserved fields.
4703            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4704
4705            // Safety:
4706            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4707            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4708            //   envelope_size bytes, there is always sufficient room.
4709            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::WlanKeyConfig, D>(
4710            self.wep_key.as_ref().map(<fidl_fuchsia_wlan_common__common::WlanKeyConfig as fidl::encoding::ValueTypeMarker>::borrow),
4711            encoder, offset + cur_offset, depth
4712        )?;
4713
4714            _prev_end_offset = cur_offset + envelope_size;
4715            if 6 > max_ordinal {
4716                return Ok(());
4717            }
4718
4719            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4720            // are envelope_size bytes.
4721            let cur_offset: usize = (6 - 1) * envelope_size;
4722
4723            // Zero reserved fields.
4724            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4725
4726            // Safety:
4727            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4728            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4729            //   envelope_size bytes, there is always sufficient room.
4730            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
4731                self.security_ie.as_ref().map(
4732                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
4733                ),
4734                encoder,
4735                offset + cur_offset,
4736                depth,
4737            )?;
4738
4739            _prev_end_offset = cur_offset + envelope_size;
4740            if 7 > max_ordinal {
4741                return Ok(());
4742            }
4743
4744            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4745            // are envelope_size bytes.
4746            let cur_offset: usize = (7 - 1) * envelope_size;
4747
4748            // Zero reserved fields.
4749            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4750
4751            // Safety:
4752            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4753            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4754            //   envelope_size bytes, there is always sufficient room.
4755            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, D>(
4756            self.wep_key_desc.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor as fidl::encoding::ValueTypeMarker>::borrow),
4757            encoder, offset + cur_offset, depth
4758        )?;
4759
4760            _prev_end_offset = cur_offset + envelope_size;
4761            if 8 > max_ordinal {
4762                return Ok(());
4763            }
4764
4765            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4766            // are envelope_size bytes.
4767            let cur_offset: usize = (8 - 1) * envelope_size;
4768
4769            // Zero reserved fields.
4770            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4771
4772            // Safety:
4773            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4774            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4775            //   envelope_size bytes, there is always sufficient room.
4776            fidl::encoding::encode_in_envelope_optional::<WlanFullmacOwePublicKey, D>(
4777                self.owe_public_key
4778                    .as_ref()
4779                    .map(<WlanFullmacOwePublicKey as fidl::encoding::ValueTypeMarker>::borrow),
4780                encoder,
4781                offset + cur_offset,
4782                depth,
4783            )?;
4784
4785            _prev_end_offset = cur_offset + envelope_size;
4786
4787            Ok(())
4788        }
4789    }
4790
4791    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4792        for WlanFullmacImplConnectRequest
4793    {
4794        #[inline(always)]
4795        fn new_empty() -> Self {
4796            Self::default()
4797        }
4798
4799        unsafe fn decode(
4800            &mut self,
4801            decoder: &mut fidl::encoding::Decoder<'_, D>,
4802            offset: usize,
4803            mut depth: fidl::encoding::Depth,
4804        ) -> fidl::Result<()> {
4805            decoder.debug_check_bounds::<Self>(offset);
4806            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4807                None => return Err(fidl::Error::NotNullable),
4808                Some(len) => len,
4809            };
4810            // Calling decoder.out_of_line_offset(0) is not allowed.
4811            if len == 0 {
4812                return Ok(());
4813            };
4814            depth.increment()?;
4815            let envelope_size = 8;
4816            let bytes_len = len * envelope_size;
4817            let offset = decoder.out_of_line_offset(bytes_len)?;
4818            // Decode the envelope for each type.
4819            let mut _next_ordinal_to_read = 0;
4820            let mut next_offset = offset;
4821            let end_offset = offset + bytes_len;
4822            _next_ordinal_to_read += 1;
4823            if next_offset >= end_offset {
4824                return Ok(());
4825            }
4826
4827            // Decode unknown envelopes for gaps in ordinals.
4828            while _next_ordinal_to_read < 1 {
4829                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4830                _next_ordinal_to_read += 1;
4831                next_offset += envelope_size;
4832            }
4833
4834            let next_out_of_line = decoder.next_out_of_line();
4835            let handles_before = decoder.remaining_handles();
4836            if let Some((inlined, num_bytes, num_handles)) =
4837                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4838            {
4839                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4840                if inlined != (member_inline_size <= 4) {
4841                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4842                }
4843                let inner_offset;
4844                let mut inner_depth = depth.clone();
4845                if inlined {
4846                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4847                    inner_offset = next_offset;
4848                } else {
4849                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4850                    inner_depth.increment()?;
4851                }
4852                let val_ref = self.selected_bss.get_or_insert_with(|| {
4853                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D)
4854                });
4855                fidl::decode!(
4856                    fidl_fuchsia_wlan_common__common::BssDescription,
4857                    D,
4858                    val_ref,
4859                    decoder,
4860                    inner_offset,
4861                    inner_depth
4862                )?;
4863                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4864                {
4865                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4866                }
4867                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4868                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4869                }
4870            }
4871
4872            next_offset += envelope_size;
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 < 2 {
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 =
4891                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4892                if inlined != (member_inline_size <= 4) {
4893                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4894                }
4895                let inner_offset;
4896                let mut inner_depth = depth.clone();
4897                if inlined {
4898                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4899                    inner_offset = next_offset;
4900                } else {
4901                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4902                    inner_depth.increment()?;
4903                }
4904                let val_ref =
4905                    self.connect_failure_timeout.get_or_insert_with(|| fidl::new_empty!(u32, D));
4906                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4907                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4908                {
4909                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4910                }
4911                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4912                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4913                }
4914            }
4915
4916            next_offset += envelope_size;
4917            _next_ordinal_to_read += 1;
4918            if next_offset >= end_offset {
4919                return Ok(());
4920            }
4921
4922            // Decode unknown envelopes for gaps in ordinals.
4923            while _next_ordinal_to_read < 3 {
4924                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4925                _next_ordinal_to_read += 1;
4926                next_offset += envelope_size;
4927            }
4928
4929            let next_out_of_line = decoder.next_out_of_line();
4930            let handles_before = decoder.remaining_handles();
4931            if let Some((inlined, num_bytes, num_handles)) =
4932                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4933            {
4934                let member_inline_size =
4935                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4936                if inlined != (member_inline_size <= 4) {
4937                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4938                }
4939                let inner_offset;
4940                let mut inner_depth = depth.clone();
4941                if inlined {
4942                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4943                    inner_offset = next_offset;
4944                } else {
4945                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4946                    inner_depth.increment()?;
4947                }
4948                let val_ref =
4949                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
4950                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
4951                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4952                {
4953                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4954                }
4955                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4956                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4957                }
4958            }
4959
4960            next_offset += envelope_size;
4961            _next_ordinal_to_read += 1;
4962            if next_offset >= end_offset {
4963                return Ok(());
4964            }
4965
4966            // Decode unknown envelopes for gaps in ordinals.
4967            while _next_ordinal_to_read < 4 {
4968                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4969                _next_ordinal_to_read += 1;
4970                next_offset += envelope_size;
4971            }
4972
4973            let next_out_of_line = decoder.next_out_of_line();
4974            let handles_before = decoder.remaining_handles();
4975            if let Some((inlined, num_bytes, num_handles)) =
4976                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4977            {
4978                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4979                if inlined != (member_inline_size <= 4) {
4980                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4981                }
4982                let inner_offset;
4983                let mut inner_depth = depth.clone();
4984                if inlined {
4985                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4986                    inner_offset = next_offset;
4987                } else {
4988                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4989                    inner_depth.increment()?;
4990                }
4991                let val_ref = self.sae_password.get_or_insert_with(|| {
4992                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
4993                });
4994                fidl::decode!(
4995                    fidl::encoding::UnboundedVector<u8>,
4996                    D,
4997                    val_ref,
4998                    decoder,
4999                    inner_offset,
5000                    inner_depth
5001                )?;
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 < 5 {
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_fuchsia_wlan_common__common::WlanKeyConfig 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.wep_key.get_or_insert_with(|| {
5043                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanKeyConfig, D)
5044                });
5045                fidl::decode!(
5046                    fidl_fuchsia_wlan_common__common::WlanKeyConfig,
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 < 6 {
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 =
5081                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
5082                        decoder.context,
5083                    );
5084                if inlined != (member_inline_size <= 4) {
5085                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5086                }
5087                let inner_offset;
5088                let mut inner_depth = depth.clone();
5089                if inlined {
5090                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5091                    inner_offset = next_offset;
5092                } else {
5093                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5094                    inner_depth.increment()?;
5095                }
5096                let val_ref = self
5097                    .security_ie
5098                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
5099                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
5100                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5101                {
5102                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5103                }
5104                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5105                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5106                }
5107            }
5108
5109            next_offset += envelope_size;
5110            _next_ordinal_to_read += 1;
5111            if next_offset >= end_offset {
5112                return Ok(());
5113            }
5114
5115            // Decode unknown envelopes for gaps in ordinals.
5116            while _next_ordinal_to_read < 7 {
5117                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5118                _next_ordinal_to_read += 1;
5119                next_offset += envelope_size;
5120            }
5121
5122            let next_out_of_line = decoder.next_out_of_line();
5123            let handles_before = decoder.remaining_handles();
5124            if let Some((inlined, num_bytes, num_handles)) =
5125                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5126            {
5127                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5128                if inlined != (member_inline_size <= 4) {
5129                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5130                }
5131                let inner_offset;
5132                let mut inner_depth = depth.clone();
5133                if inlined {
5134                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5135                    inner_offset = next_offset;
5136                } else {
5137                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5138                    inner_depth.increment()?;
5139                }
5140                let val_ref = self.wep_key_desc.get_or_insert_with(|| {
5141                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, D)
5142                });
5143                fidl::decode!(
5144                    fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor,
5145                    D,
5146                    val_ref,
5147                    decoder,
5148                    inner_offset,
5149                    inner_depth
5150                )?;
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 < 8 {
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 =
5179                    <WlanFullmacOwePublicKey as fidl::encoding::TypeMarker>::inline_size(
5180                        decoder.context,
5181                    );
5182                if inlined != (member_inline_size <= 4) {
5183                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5184                }
5185                let inner_offset;
5186                let mut inner_depth = depth.clone();
5187                if inlined {
5188                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5189                    inner_offset = next_offset;
5190                } else {
5191                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5192                    inner_depth.increment()?;
5193                }
5194                let val_ref = self
5195                    .owe_public_key
5196                    .get_or_insert_with(|| fidl::new_empty!(WlanFullmacOwePublicKey, D));
5197                fidl::decode!(
5198                    WlanFullmacOwePublicKey,
5199                    D,
5200                    val_ref,
5201                    decoder,
5202                    inner_offset,
5203                    inner_depth
5204                )?;
5205                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5206                {
5207                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5208                }
5209                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5210                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5211                }
5212            }
5213
5214            next_offset += envelope_size;
5215
5216            // Decode the remaining unknown envelopes.
5217            while next_offset < end_offset {
5218                _next_ordinal_to_read += 1;
5219                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5220                next_offset += envelope_size;
5221            }
5222
5223            Ok(())
5224        }
5225    }
5226
5227    impl WlanFullmacImplDeauthRequest {
5228        #[inline(always)]
5229        fn max_ordinal_present(&self) -> u64 {
5230            if let Some(_) = self.reason_code {
5231                return 2;
5232            }
5233            if let Some(_) = self.peer_sta_address {
5234                return 1;
5235            }
5236            0
5237        }
5238    }
5239
5240    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDeauthRequest {
5241        type Borrowed<'a> = &'a Self;
5242        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5243            value
5244        }
5245    }
5246
5247    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDeauthRequest {
5248        type Owned = Self;
5249
5250        #[inline(always)]
5251        fn inline_align(_context: fidl::encoding::Context) -> usize {
5252            8
5253        }
5254
5255        #[inline(always)]
5256        fn inline_size(_context: fidl::encoding::Context) -> usize {
5257            16
5258        }
5259    }
5260
5261    unsafe impl<D: fidl::encoding::ResourceDialect>
5262        fidl::encoding::Encode<WlanFullmacImplDeauthRequest, D> for &WlanFullmacImplDeauthRequest
5263    {
5264        unsafe fn encode(
5265            self,
5266            encoder: &mut fidl::encoding::Encoder<'_, D>,
5267            offset: usize,
5268            mut depth: fidl::encoding::Depth,
5269        ) -> fidl::Result<()> {
5270            encoder.debug_check_bounds::<WlanFullmacImplDeauthRequest>(offset);
5271            // Vector header
5272            let max_ordinal: u64 = self.max_ordinal_present();
5273            encoder.write_num(max_ordinal, offset);
5274            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5275            // Calling encoder.out_of_line_offset(0) is not allowed.
5276            if max_ordinal == 0 {
5277                return Ok(());
5278            }
5279            depth.increment()?;
5280            let envelope_size = 8;
5281            let bytes_len = max_ordinal as usize * envelope_size;
5282            #[allow(unused_variables)]
5283            let offset = encoder.out_of_line_offset(bytes_len);
5284            let mut _prev_end_offset: usize = 0;
5285            if 1 > max_ordinal {
5286                return Ok(());
5287            }
5288
5289            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5290            // are envelope_size bytes.
5291            let cur_offset: usize = (1 - 1) * envelope_size;
5292
5293            // Zero reserved fields.
5294            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5295
5296            // Safety:
5297            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5298            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5299            //   envelope_size bytes, there is always sufficient room.
5300            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5301                self.peer_sta_address
5302                    .as_ref()
5303                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5304                encoder,
5305                offset + cur_offset,
5306                depth,
5307            )?;
5308
5309            _prev_end_offset = cur_offset + envelope_size;
5310            if 2 > max_ordinal {
5311                return Ok(());
5312            }
5313
5314            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5315            // are envelope_size bytes.
5316            let cur_offset: usize = (2 - 1) * envelope_size;
5317
5318            // Zero reserved fields.
5319            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5320
5321            // Safety:
5322            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5323            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5324            //   envelope_size bytes, there is always sufficient room.
5325            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
5326            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5327            encoder, offset + cur_offset, depth
5328        )?;
5329
5330            _prev_end_offset = cur_offset + envelope_size;
5331
5332            Ok(())
5333        }
5334    }
5335
5336    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5337        for WlanFullmacImplDeauthRequest
5338    {
5339        #[inline(always)]
5340        fn new_empty() -> Self {
5341            Self::default()
5342        }
5343
5344        unsafe fn decode(
5345            &mut self,
5346            decoder: &mut fidl::encoding::Decoder<'_, D>,
5347            offset: usize,
5348            mut depth: fidl::encoding::Depth,
5349        ) -> fidl::Result<()> {
5350            decoder.debug_check_bounds::<Self>(offset);
5351            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5352                None => return Err(fidl::Error::NotNullable),
5353                Some(len) => len,
5354            };
5355            // Calling decoder.out_of_line_offset(0) is not allowed.
5356            if len == 0 {
5357                return Ok(());
5358            };
5359            depth.increment()?;
5360            let envelope_size = 8;
5361            let bytes_len = len * envelope_size;
5362            let offset = decoder.out_of_line_offset(bytes_len)?;
5363            // Decode the envelope for each type.
5364            let mut _next_ordinal_to_read = 0;
5365            let mut next_offset = offset;
5366            let end_offset = offset + bytes_len;
5367            _next_ordinal_to_read += 1;
5368            if next_offset >= end_offset {
5369                return Ok(());
5370            }
5371
5372            // Decode unknown envelopes for gaps in ordinals.
5373            while _next_ordinal_to_read < 1 {
5374                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5375                _next_ordinal_to_read += 1;
5376                next_offset += envelope_size;
5377            }
5378
5379            let next_out_of_line = decoder.next_out_of_line();
5380            let handles_before = decoder.remaining_handles();
5381            if let Some((inlined, num_bytes, num_handles)) =
5382                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5383            {
5384                let member_inline_size =
5385                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5386                        decoder.context,
5387                    );
5388                if inlined != (member_inline_size <= 4) {
5389                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5390                }
5391                let inner_offset;
5392                let mut inner_depth = depth.clone();
5393                if inlined {
5394                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5395                    inner_offset = next_offset;
5396                } else {
5397                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5398                    inner_depth.increment()?;
5399                }
5400                let val_ref = self
5401                    .peer_sta_address
5402                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5403                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5404                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5405                {
5406                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5407                }
5408                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5409                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5410                }
5411            }
5412
5413            next_offset += envelope_size;
5414            _next_ordinal_to_read += 1;
5415            if next_offset >= end_offset {
5416                return Ok(());
5417            }
5418
5419            // Decode unknown envelopes for gaps in ordinals.
5420            while _next_ordinal_to_read < 2 {
5421                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5422                _next_ordinal_to_read += 1;
5423                next_offset += envelope_size;
5424            }
5425
5426            let next_out_of_line = decoder.next_out_of_line();
5427            let handles_before = decoder.remaining_handles();
5428            if let Some((inlined, num_bytes, num_handles)) =
5429                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5430            {
5431                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5432                if inlined != (member_inline_size <= 4) {
5433                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5434                }
5435                let inner_offset;
5436                let mut inner_depth = depth.clone();
5437                if inlined {
5438                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5439                    inner_offset = next_offset;
5440                } else {
5441                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5442                    inner_depth.increment()?;
5443                }
5444                let val_ref = self.reason_code.get_or_insert_with(|| {
5445                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
5446                });
5447                fidl::decode!(
5448                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
5449                    D,
5450                    val_ref,
5451                    decoder,
5452                    inner_offset,
5453                    inner_depth
5454                )?;
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
5466            // Decode the remaining unknown envelopes.
5467            while next_offset < end_offset {
5468                _next_ordinal_to_read += 1;
5469                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5470                next_offset += envelope_size;
5471            }
5472
5473            Ok(())
5474        }
5475    }
5476
5477    impl WlanFullmacImplDisassocRequest {
5478        #[inline(always)]
5479        fn max_ordinal_present(&self) -> u64 {
5480            if let Some(_) = self.reason_code {
5481                return 2;
5482            }
5483            if let Some(_) = self.peer_sta_address {
5484                return 1;
5485            }
5486            0
5487        }
5488    }
5489
5490    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDisassocRequest {
5491        type Borrowed<'a> = &'a Self;
5492        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5493            value
5494        }
5495    }
5496
5497    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDisassocRequest {
5498        type Owned = Self;
5499
5500        #[inline(always)]
5501        fn inline_align(_context: fidl::encoding::Context) -> usize {
5502            8
5503        }
5504
5505        #[inline(always)]
5506        fn inline_size(_context: fidl::encoding::Context) -> usize {
5507            16
5508        }
5509    }
5510
5511    unsafe impl<D: fidl::encoding::ResourceDialect>
5512        fidl::encoding::Encode<WlanFullmacImplDisassocRequest, D>
5513        for &WlanFullmacImplDisassocRequest
5514    {
5515        unsafe fn encode(
5516            self,
5517            encoder: &mut fidl::encoding::Encoder<'_, D>,
5518            offset: usize,
5519            mut depth: fidl::encoding::Depth,
5520        ) -> fidl::Result<()> {
5521            encoder.debug_check_bounds::<WlanFullmacImplDisassocRequest>(offset);
5522            // Vector header
5523            let max_ordinal: u64 = self.max_ordinal_present();
5524            encoder.write_num(max_ordinal, offset);
5525            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5526            // Calling encoder.out_of_line_offset(0) is not allowed.
5527            if max_ordinal == 0 {
5528                return Ok(());
5529            }
5530            depth.increment()?;
5531            let envelope_size = 8;
5532            let bytes_len = max_ordinal as usize * envelope_size;
5533            #[allow(unused_variables)]
5534            let offset = encoder.out_of_line_offset(bytes_len);
5535            let mut _prev_end_offset: usize = 0;
5536            if 1 > max_ordinal {
5537                return Ok(());
5538            }
5539
5540            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5541            // are envelope_size bytes.
5542            let cur_offset: usize = (1 - 1) * envelope_size;
5543
5544            // Zero reserved fields.
5545            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5546
5547            // Safety:
5548            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5549            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5550            //   envelope_size bytes, there is always sufficient room.
5551            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5552                self.peer_sta_address
5553                    .as_ref()
5554                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5555                encoder,
5556                offset + cur_offset,
5557                depth,
5558            )?;
5559
5560            _prev_end_offset = cur_offset + envelope_size;
5561            if 2 > max_ordinal {
5562                return Ok(());
5563            }
5564
5565            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5566            // are envelope_size bytes.
5567            let cur_offset: usize = (2 - 1) * envelope_size;
5568
5569            // Zero reserved fields.
5570            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5571
5572            // Safety:
5573            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5574            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5575            //   envelope_size bytes, there is always sufficient room.
5576            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
5577            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5578            encoder, offset + cur_offset, depth
5579        )?;
5580
5581            _prev_end_offset = cur_offset + envelope_size;
5582
5583            Ok(())
5584        }
5585    }
5586
5587    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5588        for WlanFullmacImplDisassocRequest
5589    {
5590        #[inline(always)]
5591        fn new_empty() -> Self {
5592            Self::default()
5593        }
5594
5595        unsafe fn decode(
5596            &mut self,
5597            decoder: &mut fidl::encoding::Decoder<'_, D>,
5598            offset: usize,
5599            mut depth: fidl::encoding::Depth,
5600        ) -> fidl::Result<()> {
5601            decoder.debug_check_bounds::<Self>(offset);
5602            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5603                None => return Err(fidl::Error::NotNullable),
5604                Some(len) => len,
5605            };
5606            // Calling decoder.out_of_line_offset(0) is not allowed.
5607            if len == 0 {
5608                return Ok(());
5609            };
5610            depth.increment()?;
5611            let envelope_size = 8;
5612            let bytes_len = len * envelope_size;
5613            let offset = decoder.out_of_line_offset(bytes_len)?;
5614            // Decode the envelope for each type.
5615            let mut _next_ordinal_to_read = 0;
5616            let mut next_offset = offset;
5617            let end_offset = offset + bytes_len;
5618            _next_ordinal_to_read += 1;
5619            if next_offset >= end_offset {
5620                return Ok(());
5621            }
5622
5623            // Decode unknown envelopes for gaps in ordinals.
5624            while _next_ordinal_to_read < 1 {
5625                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5626                _next_ordinal_to_read += 1;
5627                next_offset += envelope_size;
5628            }
5629
5630            let next_out_of_line = decoder.next_out_of_line();
5631            let handles_before = decoder.remaining_handles();
5632            if let Some((inlined, num_bytes, num_handles)) =
5633                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5634            {
5635                let member_inline_size =
5636                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5637                        decoder.context,
5638                    );
5639                if inlined != (member_inline_size <= 4) {
5640                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5641                }
5642                let inner_offset;
5643                let mut inner_depth = depth.clone();
5644                if inlined {
5645                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5646                    inner_offset = next_offset;
5647                } else {
5648                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5649                    inner_depth.increment()?;
5650                }
5651                let val_ref = self
5652                    .peer_sta_address
5653                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5654                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5655                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5656                {
5657                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5658                }
5659                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5660                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5661                }
5662            }
5663
5664            next_offset += envelope_size;
5665            _next_ordinal_to_read += 1;
5666            if next_offset >= end_offset {
5667                return Ok(());
5668            }
5669
5670            // Decode unknown envelopes for gaps in ordinals.
5671            while _next_ordinal_to_read < 2 {
5672                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5673                _next_ordinal_to_read += 1;
5674                next_offset += envelope_size;
5675            }
5676
5677            let next_out_of_line = decoder.next_out_of_line();
5678            let handles_before = decoder.remaining_handles();
5679            if let Some((inlined, num_bytes, num_handles)) =
5680                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5681            {
5682                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5683                if inlined != (member_inline_size <= 4) {
5684                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5685                }
5686                let inner_offset;
5687                let mut inner_depth = depth.clone();
5688                if inlined {
5689                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5690                    inner_offset = next_offset;
5691                } else {
5692                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5693                    inner_depth.increment()?;
5694                }
5695                let val_ref = self.reason_code.get_or_insert_with(|| {
5696                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
5697                });
5698                fidl::decode!(
5699                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
5700                    D,
5701                    val_ref,
5702                    decoder,
5703                    inner_offset,
5704                    inner_depth
5705                )?;
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
5717            // Decode the remaining unknown envelopes.
5718            while next_offset < end_offset {
5719                _next_ordinal_to_read += 1;
5720                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5721                next_offset += envelope_size;
5722            }
5723
5724            Ok(())
5725        }
5726    }
5727
5728    impl WlanFullmacImplEapolTxRequest {
5729        #[inline(always)]
5730        fn max_ordinal_present(&self) -> u64 {
5731            if let Some(_) = self.data {
5732                return 3;
5733            }
5734            if let Some(_) = self.dst_addr {
5735                return 2;
5736            }
5737            if let Some(_) = self.src_addr {
5738                return 1;
5739            }
5740            0
5741        }
5742    }
5743
5744    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplEapolTxRequest {
5745        type Borrowed<'a> = &'a Self;
5746        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5747            value
5748        }
5749    }
5750
5751    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplEapolTxRequest {
5752        type Owned = Self;
5753
5754        #[inline(always)]
5755        fn inline_align(_context: fidl::encoding::Context) -> usize {
5756            8
5757        }
5758
5759        #[inline(always)]
5760        fn inline_size(_context: fidl::encoding::Context) -> usize {
5761            16
5762        }
5763    }
5764
5765    unsafe impl<D: fidl::encoding::ResourceDialect>
5766        fidl::encoding::Encode<WlanFullmacImplEapolTxRequest, D>
5767        for &WlanFullmacImplEapolTxRequest
5768    {
5769        unsafe fn encode(
5770            self,
5771            encoder: &mut fidl::encoding::Encoder<'_, D>,
5772            offset: usize,
5773            mut depth: fidl::encoding::Depth,
5774        ) -> fidl::Result<()> {
5775            encoder.debug_check_bounds::<WlanFullmacImplEapolTxRequest>(offset);
5776            // Vector header
5777            let max_ordinal: u64 = self.max_ordinal_present();
5778            encoder.write_num(max_ordinal, offset);
5779            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5780            // Calling encoder.out_of_line_offset(0) is not allowed.
5781            if max_ordinal == 0 {
5782                return Ok(());
5783            }
5784            depth.increment()?;
5785            let envelope_size = 8;
5786            let bytes_len = max_ordinal as usize * envelope_size;
5787            #[allow(unused_variables)]
5788            let offset = encoder.out_of_line_offset(bytes_len);
5789            let mut _prev_end_offset: usize = 0;
5790            if 1 > max_ordinal {
5791                return Ok(());
5792            }
5793
5794            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5795            // are envelope_size bytes.
5796            let cur_offset: usize = (1 - 1) * envelope_size;
5797
5798            // Zero reserved fields.
5799            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5800
5801            // Safety:
5802            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5803            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5804            //   envelope_size bytes, there is always sufficient room.
5805            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5806                self.src_addr
5807                    .as_ref()
5808                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5809                encoder,
5810                offset + cur_offset,
5811                depth,
5812            )?;
5813
5814            _prev_end_offset = cur_offset + envelope_size;
5815            if 2 > max_ordinal {
5816                return Ok(());
5817            }
5818
5819            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5820            // are envelope_size bytes.
5821            let cur_offset: usize = (2 - 1) * envelope_size;
5822
5823            // Zero reserved fields.
5824            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5825
5826            // Safety:
5827            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5828            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5829            //   envelope_size bytes, there is always sufficient room.
5830            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5831                self.dst_addr
5832                    .as_ref()
5833                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5834                encoder,
5835                offset + cur_offset,
5836                depth,
5837            )?;
5838
5839            _prev_end_offset = cur_offset + envelope_size;
5840            if 3 > max_ordinal {
5841                return Ok(());
5842            }
5843
5844            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5845            // are envelope_size bytes.
5846            let cur_offset: usize = (3 - 1) * envelope_size;
5847
5848            // Zero reserved fields.
5849            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5850
5851            // Safety:
5852            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5853            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5854            //   envelope_size bytes, there is always sufficient room.
5855            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
5856            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
5857            encoder, offset + cur_offset, depth
5858        )?;
5859
5860            _prev_end_offset = cur_offset + envelope_size;
5861
5862            Ok(())
5863        }
5864    }
5865
5866    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5867        for WlanFullmacImplEapolTxRequest
5868    {
5869        #[inline(always)]
5870        fn new_empty() -> Self {
5871            Self::default()
5872        }
5873
5874        unsafe fn decode(
5875            &mut self,
5876            decoder: &mut fidl::encoding::Decoder<'_, D>,
5877            offset: usize,
5878            mut depth: fidl::encoding::Depth,
5879        ) -> fidl::Result<()> {
5880            decoder.debug_check_bounds::<Self>(offset);
5881            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5882                None => return Err(fidl::Error::NotNullable),
5883                Some(len) => len,
5884            };
5885            // Calling decoder.out_of_line_offset(0) is not allowed.
5886            if len == 0 {
5887                return Ok(());
5888            };
5889            depth.increment()?;
5890            let envelope_size = 8;
5891            let bytes_len = len * envelope_size;
5892            let offset = decoder.out_of_line_offset(bytes_len)?;
5893            // Decode the envelope for each type.
5894            let mut _next_ordinal_to_read = 0;
5895            let mut next_offset = offset;
5896            let end_offset = offset + bytes_len;
5897            _next_ordinal_to_read += 1;
5898            if next_offset >= end_offset {
5899                return Ok(());
5900            }
5901
5902            // Decode unknown envelopes for gaps in ordinals.
5903            while _next_ordinal_to_read < 1 {
5904                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5905                _next_ordinal_to_read += 1;
5906                next_offset += envelope_size;
5907            }
5908
5909            let next_out_of_line = decoder.next_out_of_line();
5910            let handles_before = decoder.remaining_handles();
5911            if let Some((inlined, num_bytes, num_handles)) =
5912                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5913            {
5914                let member_inline_size =
5915                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5916                        decoder.context,
5917                    );
5918                if inlined != (member_inline_size <= 4) {
5919                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5920                }
5921                let inner_offset;
5922                let mut inner_depth = depth.clone();
5923                if inlined {
5924                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5925                    inner_offset = next_offset;
5926                } else {
5927                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5928                    inner_depth.increment()?;
5929                }
5930                let val_ref = self
5931                    .src_addr
5932                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5933                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5934                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5935                {
5936                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5937                }
5938                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5939                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5940                }
5941            }
5942
5943            next_offset += envelope_size;
5944            _next_ordinal_to_read += 1;
5945            if next_offset >= end_offset {
5946                return Ok(());
5947            }
5948
5949            // Decode unknown envelopes for gaps in ordinals.
5950            while _next_ordinal_to_read < 2 {
5951                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5952                _next_ordinal_to_read += 1;
5953                next_offset += envelope_size;
5954            }
5955
5956            let next_out_of_line = decoder.next_out_of_line();
5957            let handles_before = decoder.remaining_handles();
5958            if let Some((inlined, num_bytes, num_handles)) =
5959                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5960            {
5961                let member_inline_size =
5962                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5963                        decoder.context,
5964                    );
5965                if inlined != (member_inline_size <= 4) {
5966                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5967                }
5968                let inner_offset;
5969                let mut inner_depth = depth.clone();
5970                if inlined {
5971                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5972                    inner_offset = next_offset;
5973                } else {
5974                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5975                    inner_depth.increment()?;
5976                }
5977                let val_ref = self
5978                    .dst_addr
5979                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5980                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5981                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5982                {
5983                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5984                }
5985                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5986                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5987                }
5988            }
5989
5990            next_offset += envelope_size;
5991            _next_ordinal_to_read += 1;
5992            if next_offset >= end_offset {
5993                return Ok(());
5994            }
5995
5996            // Decode unknown envelopes for gaps in ordinals.
5997            while _next_ordinal_to_read < 3 {
5998                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5999                _next_ordinal_to_read += 1;
6000                next_offset += envelope_size;
6001            }
6002
6003            let next_out_of_line = decoder.next_out_of_line();
6004            let handles_before = decoder.remaining_handles();
6005            if let Some((inlined, num_bytes, num_handles)) =
6006                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6007            {
6008                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6009                if inlined != (member_inline_size <= 4) {
6010                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6011                }
6012                let inner_offset;
6013                let mut inner_depth = depth.clone();
6014                if inlined {
6015                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6016                    inner_offset = next_offset;
6017                } else {
6018                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6019                    inner_depth.increment()?;
6020                }
6021                let val_ref = self.data.get_or_insert_with(|| {
6022                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
6023                });
6024                fidl::decode!(
6025                    fidl::encoding::UnboundedVector<u8>,
6026                    D,
6027                    val_ref,
6028                    decoder,
6029                    inner_offset,
6030                    inner_depth
6031                )?;
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
6043            // Decode the remaining unknown envelopes.
6044            while next_offset < end_offset {
6045                _next_ordinal_to_read += 1;
6046                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6047                next_offset += envelope_size;
6048            }
6049
6050            Ok(())
6051        }
6052    }
6053
6054    impl WlanFullmacImplIfcAssocIndRequest {
6055        #[inline(always)]
6056        fn max_ordinal_present(&self) -> u64 {
6057            if let Some(_) = self.vendor_ie {
6058                return 5;
6059            }
6060            if let Some(_) = self.rsne {
6061                return 4;
6062            }
6063            if let Some(_) = self.ssid {
6064                return 3;
6065            }
6066            if let Some(_) = self.listen_interval {
6067                return 2;
6068            }
6069            if let Some(_) = self.peer_sta_address {
6070                return 1;
6071            }
6072            0
6073        }
6074    }
6075
6076    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAssocIndRequest {
6077        type Borrowed<'a> = &'a Self;
6078        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6079            value
6080        }
6081    }
6082
6083    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAssocIndRequest {
6084        type Owned = Self;
6085
6086        #[inline(always)]
6087        fn inline_align(_context: fidl::encoding::Context) -> usize {
6088            8
6089        }
6090
6091        #[inline(always)]
6092        fn inline_size(_context: fidl::encoding::Context) -> usize {
6093            16
6094        }
6095    }
6096
6097    unsafe impl<D: fidl::encoding::ResourceDialect>
6098        fidl::encoding::Encode<WlanFullmacImplIfcAssocIndRequest, D>
6099        for &WlanFullmacImplIfcAssocIndRequest
6100    {
6101        unsafe fn encode(
6102            self,
6103            encoder: &mut fidl::encoding::Encoder<'_, D>,
6104            offset: usize,
6105            mut depth: fidl::encoding::Depth,
6106        ) -> fidl::Result<()> {
6107            encoder.debug_check_bounds::<WlanFullmacImplIfcAssocIndRequest>(offset);
6108            // Vector header
6109            let max_ordinal: u64 = self.max_ordinal_present();
6110            encoder.write_num(max_ordinal, offset);
6111            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6112            // Calling encoder.out_of_line_offset(0) is not allowed.
6113            if max_ordinal == 0 {
6114                return Ok(());
6115            }
6116            depth.increment()?;
6117            let envelope_size = 8;
6118            let bytes_len = max_ordinal as usize * envelope_size;
6119            #[allow(unused_variables)]
6120            let offset = encoder.out_of_line_offset(bytes_len);
6121            let mut _prev_end_offset: usize = 0;
6122            if 1 > max_ordinal {
6123                return Ok(());
6124            }
6125
6126            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6127            // are envelope_size bytes.
6128            let cur_offset: usize = (1 - 1) * envelope_size;
6129
6130            // Zero reserved fields.
6131            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6132
6133            // Safety:
6134            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6135            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6136            //   envelope_size bytes, there is always sufficient room.
6137            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6138                self.peer_sta_address
6139                    .as_ref()
6140                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6141                encoder,
6142                offset + cur_offset,
6143                depth,
6144            )?;
6145
6146            _prev_end_offset = cur_offset + envelope_size;
6147            if 2 > max_ordinal {
6148                return Ok(());
6149            }
6150
6151            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6152            // are envelope_size bytes.
6153            let cur_offset: usize = (2 - 1) * envelope_size;
6154
6155            // Zero reserved fields.
6156            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6157
6158            // Safety:
6159            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6160            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6161            //   envelope_size bytes, there is always sufficient room.
6162            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6163                self.listen_interval.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6164                encoder,
6165                offset + cur_offset,
6166                depth,
6167            )?;
6168
6169            _prev_end_offset = cur_offset + envelope_size;
6170            if 3 > max_ordinal {
6171                return Ok(());
6172            }
6173
6174            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6175            // are envelope_size bytes.
6176            let cur_offset: usize = (3 - 1) * envelope_size;
6177
6178            // Zero reserved fields.
6179            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6180
6181            // Safety:
6182            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6183            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6184            //   envelope_size bytes, there is always sufficient room.
6185            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
6186                self.ssid.as_ref().map(
6187                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
6188                ),
6189                encoder,
6190                offset + cur_offset,
6191                depth,
6192            )?;
6193
6194            _prev_end_offset = cur_offset + envelope_size;
6195            if 4 > max_ordinal {
6196                return Ok(());
6197            }
6198
6199            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6200            // are envelope_size bytes.
6201            let cur_offset: usize = (4 - 1) * envelope_size;
6202
6203            // Zero reserved fields.
6204            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6205
6206            // Safety:
6207            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6208            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6209            //   envelope_size bytes, there is always sufficient room.
6210            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
6211                self.rsne.as_ref().map(
6212                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
6213                ),
6214                encoder,
6215                offset + cur_offset,
6216                depth,
6217            )?;
6218
6219            _prev_end_offset = cur_offset + envelope_size;
6220            if 5 > max_ordinal {
6221                return Ok(());
6222            }
6223
6224            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6225            // are envelope_size bytes.
6226            let cur_offset: usize = (5 - 1) * envelope_size;
6227
6228            // Zero reserved fields.
6229            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6230
6231            // Safety:
6232            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6233            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6234            //   envelope_size bytes, there is always sufficient room.
6235            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
6236                self.vendor_ie.as_ref().map(
6237                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
6238                ),
6239                encoder,
6240                offset + cur_offset,
6241                depth,
6242            )?;
6243
6244            _prev_end_offset = cur_offset + envelope_size;
6245
6246            Ok(())
6247        }
6248    }
6249
6250    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6251        for WlanFullmacImplIfcAssocIndRequest
6252    {
6253        #[inline(always)]
6254        fn new_empty() -> Self {
6255            Self::default()
6256        }
6257
6258        unsafe fn decode(
6259            &mut self,
6260            decoder: &mut fidl::encoding::Decoder<'_, D>,
6261            offset: usize,
6262            mut depth: fidl::encoding::Depth,
6263        ) -> fidl::Result<()> {
6264            decoder.debug_check_bounds::<Self>(offset);
6265            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6266                None => return Err(fidl::Error::NotNullable),
6267                Some(len) => len,
6268            };
6269            // Calling decoder.out_of_line_offset(0) is not allowed.
6270            if len == 0 {
6271                return Ok(());
6272            };
6273            depth.increment()?;
6274            let envelope_size = 8;
6275            let bytes_len = len * envelope_size;
6276            let offset = decoder.out_of_line_offset(bytes_len)?;
6277            // Decode the envelope for each type.
6278            let mut _next_ordinal_to_read = 0;
6279            let mut next_offset = offset;
6280            let end_offset = offset + bytes_len;
6281            _next_ordinal_to_read += 1;
6282            if next_offset >= end_offset {
6283                return Ok(());
6284            }
6285
6286            // Decode unknown envelopes for gaps in ordinals.
6287            while _next_ordinal_to_read < 1 {
6288                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6289                _next_ordinal_to_read += 1;
6290                next_offset += envelope_size;
6291            }
6292
6293            let next_out_of_line = decoder.next_out_of_line();
6294            let handles_before = decoder.remaining_handles();
6295            if let Some((inlined, num_bytes, num_handles)) =
6296                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6297            {
6298                let member_inline_size =
6299                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6300                        decoder.context,
6301                    );
6302                if inlined != (member_inline_size <= 4) {
6303                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6304                }
6305                let inner_offset;
6306                let mut inner_depth = depth.clone();
6307                if inlined {
6308                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6309                    inner_offset = next_offset;
6310                } else {
6311                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6312                    inner_depth.increment()?;
6313                }
6314                let val_ref = self
6315                    .peer_sta_address
6316                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6317                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6318                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6319                {
6320                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6321                }
6322                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6323                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6324                }
6325            }
6326
6327            next_offset += envelope_size;
6328            _next_ordinal_to_read += 1;
6329            if next_offset >= end_offset {
6330                return Ok(());
6331            }
6332
6333            // Decode unknown envelopes for gaps in ordinals.
6334            while _next_ordinal_to_read < 2 {
6335                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6336                _next_ordinal_to_read += 1;
6337                next_offset += envelope_size;
6338            }
6339
6340            let next_out_of_line = decoder.next_out_of_line();
6341            let handles_before = decoder.remaining_handles();
6342            if let Some((inlined, num_bytes, num_handles)) =
6343                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6344            {
6345                let member_inline_size =
6346                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6347                if inlined != (member_inline_size <= 4) {
6348                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6349                }
6350                let inner_offset;
6351                let mut inner_depth = depth.clone();
6352                if inlined {
6353                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6354                    inner_offset = next_offset;
6355                } else {
6356                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6357                    inner_depth.increment()?;
6358                }
6359                let val_ref = self.listen_interval.get_or_insert_with(|| fidl::new_empty!(u16, D));
6360                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6361                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6362                {
6363                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6364                }
6365                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6366                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6367                }
6368            }
6369
6370            next_offset += envelope_size;
6371            _next_ordinal_to_read += 1;
6372            if next_offset >= end_offset {
6373                return Ok(());
6374            }
6375
6376            // Decode unknown envelopes for gaps in ordinals.
6377            while _next_ordinal_to_read < 3 {
6378                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6379                _next_ordinal_to_read += 1;
6380                next_offset += envelope_size;
6381            }
6382
6383            let next_out_of_line = decoder.next_out_of_line();
6384            let handles_before = decoder.remaining_handles();
6385            if let Some((inlined, num_bytes, num_handles)) =
6386                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6387            {
6388                let member_inline_size =
6389                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
6390                        decoder.context,
6391                    );
6392                if inlined != (member_inline_size <= 4) {
6393                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6394                }
6395                let inner_offset;
6396                let mut inner_depth = depth.clone();
6397                if inlined {
6398                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6399                    inner_offset = next_offset;
6400                } else {
6401                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6402                    inner_depth.increment()?;
6403                }
6404                let val_ref = self
6405                    .ssid
6406                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
6407                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
6408                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6409                {
6410                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6411                }
6412                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6413                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6414                }
6415            }
6416
6417            next_offset += envelope_size;
6418            _next_ordinal_to_read += 1;
6419            if next_offset >= end_offset {
6420                return Ok(());
6421            }
6422
6423            // Decode unknown envelopes for gaps in ordinals.
6424            while _next_ordinal_to_read < 4 {
6425                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6426                _next_ordinal_to_read += 1;
6427                next_offset += envelope_size;
6428            }
6429
6430            let next_out_of_line = decoder.next_out_of_line();
6431            let handles_before = decoder.remaining_handles();
6432            if let Some((inlined, num_bytes, num_handles)) =
6433                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6434            {
6435                let member_inline_size =
6436                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
6437                        decoder.context,
6438                    );
6439                if inlined != (member_inline_size <= 4) {
6440                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6441                }
6442                let inner_offset;
6443                let mut inner_depth = depth.clone();
6444                if inlined {
6445                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6446                    inner_offset = next_offset;
6447                } else {
6448                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6449                    inner_depth.increment()?;
6450                }
6451                let val_ref = self
6452                    .rsne
6453                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
6454                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
6455                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6456                {
6457                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6458                }
6459                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6460                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6461                }
6462            }
6463
6464            next_offset += envelope_size;
6465            _next_ordinal_to_read += 1;
6466            if next_offset >= end_offset {
6467                return Ok(());
6468            }
6469
6470            // Decode unknown envelopes for gaps in ordinals.
6471            while _next_ordinal_to_read < 5 {
6472                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6473                _next_ordinal_to_read += 1;
6474                next_offset += envelope_size;
6475            }
6476
6477            let next_out_of_line = decoder.next_out_of_line();
6478            let handles_before = decoder.remaining_handles();
6479            if let Some((inlined, num_bytes, num_handles)) =
6480                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6481            {
6482                let member_inline_size =
6483                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
6484                        decoder.context,
6485                    );
6486                if inlined != (member_inline_size <= 4) {
6487                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6488                }
6489                let inner_offset;
6490                let mut inner_depth = depth.clone();
6491                if inlined {
6492                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6493                    inner_offset = next_offset;
6494                } else {
6495                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6496                    inner_depth.increment()?;
6497                }
6498                let val_ref = self
6499                    .vendor_ie
6500                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
6501                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
6502                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6503                {
6504                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6505                }
6506                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6507                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6508                }
6509            }
6510
6511            next_offset += envelope_size;
6512
6513            // Decode the remaining unknown envelopes.
6514            while next_offset < end_offset {
6515                _next_ordinal_to_read += 1;
6516                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6517                next_offset += envelope_size;
6518            }
6519
6520            Ok(())
6521        }
6522    }
6523
6524    impl WlanFullmacImplIfcAuthIndRequest {
6525        #[inline(always)]
6526        fn max_ordinal_present(&self) -> u64 {
6527            if let Some(_) = self.auth_type {
6528                return 2;
6529            }
6530            if let Some(_) = self.peer_sta_address {
6531                return 1;
6532            }
6533            0
6534        }
6535    }
6536
6537    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAuthIndRequest {
6538        type Borrowed<'a> = &'a Self;
6539        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6540            value
6541        }
6542    }
6543
6544    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAuthIndRequest {
6545        type Owned = Self;
6546
6547        #[inline(always)]
6548        fn inline_align(_context: fidl::encoding::Context) -> usize {
6549            8
6550        }
6551
6552        #[inline(always)]
6553        fn inline_size(_context: fidl::encoding::Context) -> usize {
6554            16
6555        }
6556    }
6557
6558    unsafe impl<D: fidl::encoding::ResourceDialect>
6559        fidl::encoding::Encode<WlanFullmacImplIfcAuthIndRequest, D>
6560        for &WlanFullmacImplIfcAuthIndRequest
6561    {
6562        unsafe fn encode(
6563            self,
6564            encoder: &mut fidl::encoding::Encoder<'_, D>,
6565            offset: usize,
6566            mut depth: fidl::encoding::Depth,
6567        ) -> fidl::Result<()> {
6568            encoder.debug_check_bounds::<WlanFullmacImplIfcAuthIndRequest>(offset);
6569            // Vector header
6570            let max_ordinal: u64 = self.max_ordinal_present();
6571            encoder.write_num(max_ordinal, offset);
6572            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6573            // Calling encoder.out_of_line_offset(0) is not allowed.
6574            if max_ordinal == 0 {
6575                return Ok(());
6576            }
6577            depth.increment()?;
6578            let envelope_size = 8;
6579            let bytes_len = max_ordinal as usize * envelope_size;
6580            #[allow(unused_variables)]
6581            let offset = encoder.out_of_line_offset(bytes_len);
6582            let mut _prev_end_offset: usize = 0;
6583            if 1 > max_ordinal {
6584                return Ok(());
6585            }
6586
6587            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6588            // are envelope_size bytes.
6589            let cur_offset: usize = (1 - 1) * envelope_size;
6590
6591            // Zero reserved fields.
6592            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6593
6594            // Safety:
6595            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6596            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6597            //   envelope_size bytes, there is always sufficient room.
6598            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6599                self.peer_sta_address
6600                    .as_ref()
6601                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6602                encoder,
6603                offset + cur_offset,
6604                depth,
6605            )?;
6606
6607            _prev_end_offset = cur_offset + envelope_size;
6608            if 2 > max_ordinal {
6609                return Ok(());
6610            }
6611
6612            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6613            // are envelope_size bytes.
6614            let cur_offset: usize = (2 - 1) * envelope_size;
6615
6616            // Zero reserved fields.
6617            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6618
6619            // Safety:
6620            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6621            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6622            //   envelope_size bytes, there is always sufficient room.
6623            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
6624                self.auth_type
6625                    .as_ref()
6626                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
6627                encoder,
6628                offset + cur_offset,
6629                depth,
6630            )?;
6631
6632            _prev_end_offset = cur_offset + envelope_size;
6633
6634            Ok(())
6635        }
6636    }
6637
6638    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6639        for WlanFullmacImplIfcAuthIndRequest
6640    {
6641        #[inline(always)]
6642        fn new_empty() -> Self {
6643            Self::default()
6644        }
6645
6646        unsafe fn decode(
6647            &mut self,
6648            decoder: &mut fidl::encoding::Decoder<'_, D>,
6649            offset: usize,
6650            mut depth: fidl::encoding::Depth,
6651        ) -> fidl::Result<()> {
6652            decoder.debug_check_bounds::<Self>(offset);
6653            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6654                None => return Err(fidl::Error::NotNullable),
6655                Some(len) => len,
6656            };
6657            // Calling decoder.out_of_line_offset(0) is not allowed.
6658            if len == 0 {
6659                return Ok(());
6660            };
6661            depth.increment()?;
6662            let envelope_size = 8;
6663            let bytes_len = len * envelope_size;
6664            let offset = decoder.out_of_line_offset(bytes_len)?;
6665            // Decode the envelope for each type.
6666            let mut _next_ordinal_to_read = 0;
6667            let mut next_offset = offset;
6668            let end_offset = offset + bytes_len;
6669            _next_ordinal_to_read += 1;
6670            if next_offset >= end_offset {
6671                return Ok(());
6672            }
6673
6674            // Decode unknown envelopes for gaps in ordinals.
6675            while _next_ordinal_to_read < 1 {
6676                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6677                _next_ordinal_to_read += 1;
6678                next_offset += envelope_size;
6679            }
6680
6681            let next_out_of_line = decoder.next_out_of_line();
6682            let handles_before = decoder.remaining_handles();
6683            if let Some((inlined, num_bytes, num_handles)) =
6684                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6685            {
6686                let member_inline_size =
6687                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6688                        decoder.context,
6689                    );
6690                if inlined != (member_inline_size <= 4) {
6691                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6692                }
6693                let inner_offset;
6694                let mut inner_depth = depth.clone();
6695                if inlined {
6696                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6697                    inner_offset = next_offset;
6698                } else {
6699                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6700                    inner_depth.increment()?;
6701                }
6702                let val_ref = self
6703                    .peer_sta_address
6704                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6705                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6706                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6707                {
6708                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6709                }
6710                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6711                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6712                }
6713            }
6714
6715            next_offset += envelope_size;
6716            _next_ordinal_to_read += 1;
6717            if next_offset >= end_offset {
6718                return Ok(());
6719            }
6720
6721            // Decode unknown envelopes for gaps in ordinals.
6722            while _next_ordinal_to_read < 2 {
6723                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6724                _next_ordinal_to_read += 1;
6725                next_offset += envelope_size;
6726            }
6727
6728            let next_out_of_line = decoder.next_out_of_line();
6729            let handles_before = decoder.remaining_handles();
6730            if let Some((inlined, num_bytes, num_handles)) =
6731                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6732            {
6733                let member_inline_size =
6734                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6735                if inlined != (member_inline_size <= 4) {
6736                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6737                }
6738                let inner_offset;
6739                let mut inner_depth = depth.clone();
6740                if inlined {
6741                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6742                    inner_offset = next_offset;
6743                } else {
6744                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6745                    inner_depth.increment()?;
6746                }
6747                let val_ref =
6748                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
6749                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
6750                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6751                {
6752                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6753                }
6754                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6755                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6756                }
6757            }
6758
6759            next_offset += envelope_size;
6760
6761            // Decode the remaining unknown envelopes.
6762            while next_offset < end_offset {
6763                _next_ordinal_to_read += 1;
6764                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6765                next_offset += envelope_size;
6766            }
6767
6768            Ok(())
6769        }
6770    }
6771
6772    impl WlanFullmacImplIfcConnectConfRequest {
6773        #[inline(always)]
6774        fn max_ordinal_present(&self) -> u64 {
6775            if let Some(_) = self.association_ies {
6776                return 4;
6777            }
6778            if let Some(_) = self.association_id {
6779                return 3;
6780            }
6781            if let Some(_) = self.result_code {
6782                return 2;
6783            }
6784            if let Some(_) = self.peer_sta_address {
6785                return 1;
6786            }
6787            0
6788        }
6789    }
6790
6791    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcConnectConfRequest {
6792        type Borrowed<'a> = &'a Self;
6793        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6794            value
6795        }
6796    }
6797
6798    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcConnectConfRequest {
6799        type Owned = Self;
6800
6801        #[inline(always)]
6802        fn inline_align(_context: fidl::encoding::Context) -> usize {
6803            8
6804        }
6805
6806        #[inline(always)]
6807        fn inline_size(_context: fidl::encoding::Context) -> usize {
6808            16
6809        }
6810    }
6811
6812    unsafe impl<D: fidl::encoding::ResourceDialect>
6813        fidl::encoding::Encode<WlanFullmacImplIfcConnectConfRequest, D>
6814        for &WlanFullmacImplIfcConnectConfRequest
6815    {
6816        unsafe fn encode(
6817            self,
6818            encoder: &mut fidl::encoding::Encoder<'_, D>,
6819            offset: usize,
6820            mut depth: fidl::encoding::Depth,
6821        ) -> fidl::Result<()> {
6822            encoder.debug_check_bounds::<WlanFullmacImplIfcConnectConfRequest>(offset);
6823            // Vector header
6824            let max_ordinal: u64 = self.max_ordinal_present();
6825            encoder.write_num(max_ordinal, offset);
6826            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6827            // Calling encoder.out_of_line_offset(0) is not allowed.
6828            if max_ordinal == 0 {
6829                return Ok(());
6830            }
6831            depth.increment()?;
6832            let envelope_size = 8;
6833            let bytes_len = max_ordinal as usize * envelope_size;
6834            #[allow(unused_variables)]
6835            let offset = encoder.out_of_line_offset(bytes_len);
6836            let mut _prev_end_offset: usize = 0;
6837            if 1 > max_ordinal {
6838                return Ok(());
6839            }
6840
6841            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6842            // are envelope_size bytes.
6843            let cur_offset: usize = (1 - 1) * envelope_size;
6844
6845            // Zero reserved fields.
6846            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6847
6848            // Safety:
6849            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6850            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6851            //   envelope_size bytes, there is always sufficient room.
6852            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6853                self.peer_sta_address
6854                    .as_ref()
6855                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6856                encoder,
6857                offset + cur_offset,
6858                depth,
6859            )?;
6860
6861            _prev_end_offset = cur_offset + envelope_size;
6862            if 2 > max_ordinal {
6863                return Ok(());
6864            }
6865
6866            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6867            // are envelope_size bytes.
6868            let cur_offset: usize = (2 - 1) * envelope_size;
6869
6870            // Zero reserved fields.
6871            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6872
6873            // Safety:
6874            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6875            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6876            //   envelope_size bytes, there is always sufficient room.
6877            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
6878            self.result_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
6879            encoder, offset + cur_offset, depth
6880        )?;
6881
6882            _prev_end_offset = cur_offset + envelope_size;
6883            if 3 > max_ordinal {
6884                return Ok(());
6885            }
6886
6887            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6888            // are envelope_size bytes.
6889            let cur_offset: usize = (3 - 1) * envelope_size;
6890
6891            // Zero reserved fields.
6892            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6893
6894            // Safety:
6895            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6896            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6897            //   envelope_size bytes, there is always sufficient room.
6898            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6899                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6900                encoder,
6901                offset + cur_offset,
6902                depth,
6903            )?;
6904
6905            _prev_end_offset = cur_offset + envelope_size;
6906            if 4 > max_ordinal {
6907                return Ok(());
6908            }
6909
6910            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6911            // are envelope_size bytes.
6912            let cur_offset: usize = (4 - 1) * envelope_size;
6913
6914            // Zero reserved fields.
6915            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6916
6917            // Safety:
6918            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6919            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6920            //   envelope_size bytes, there is always sufficient room.
6921            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
6922            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
6923            encoder, offset + cur_offset, depth
6924        )?;
6925
6926            _prev_end_offset = cur_offset + envelope_size;
6927
6928            Ok(())
6929        }
6930    }
6931
6932    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6933        for WlanFullmacImplIfcConnectConfRequest
6934    {
6935        #[inline(always)]
6936        fn new_empty() -> Self {
6937            Self::default()
6938        }
6939
6940        unsafe fn decode(
6941            &mut self,
6942            decoder: &mut fidl::encoding::Decoder<'_, D>,
6943            offset: usize,
6944            mut depth: fidl::encoding::Depth,
6945        ) -> fidl::Result<()> {
6946            decoder.debug_check_bounds::<Self>(offset);
6947            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6948                None => return Err(fidl::Error::NotNullable),
6949                Some(len) => len,
6950            };
6951            // Calling decoder.out_of_line_offset(0) is not allowed.
6952            if len == 0 {
6953                return Ok(());
6954            };
6955            depth.increment()?;
6956            let envelope_size = 8;
6957            let bytes_len = len * envelope_size;
6958            let offset = decoder.out_of_line_offset(bytes_len)?;
6959            // Decode the envelope for each type.
6960            let mut _next_ordinal_to_read = 0;
6961            let mut next_offset = offset;
6962            let end_offset = offset + bytes_len;
6963            _next_ordinal_to_read += 1;
6964            if next_offset >= end_offset {
6965                return Ok(());
6966            }
6967
6968            // Decode unknown envelopes for gaps in ordinals.
6969            while _next_ordinal_to_read < 1 {
6970                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6971                _next_ordinal_to_read += 1;
6972                next_offset += envelope_size;
6973            }
6974
6975            let next_out_of_line = decoder.next_out_of_line();
6976            let handles_before = decoder.remaining_handles();
6977            if let Some((inlined, num_bytes, num_handles)) =
6978                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6979            {
6980                let member_inline_size =
6981                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6982                        decoder.context,
6983                    );
6984                if inlined != (member_inline_size <= 4) {
6985                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6986                }
6987                let inner_offset;
6988                let mut inner_depth = depth.clone();
6989                if inlined {
6990                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6991                    inner_offset = next_offset;
6992                } else {
6993                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6994                    inner_depth.increment()?;
6995                }
6996                let val_ref = self
6997                    .peer_sta_address
6998                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6999                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7000                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7001                {
7002                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7003                }
7004                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7005                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7006                }
7007            }
7008
7009            next_offset += envelope_size;
7010            _next_ordinal_to_read += 1;
7011            if next_offset >= end_offset {
7012                return Ok(());
7013            }
7014
7015            // Decode unknown envelopes for gaps in ordinals.
7016            while _next_ordinal_to_read < 2 {
7017                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7018                _next_ordinal_to_read += 1;
7019                next_offset += envelope_size;
7020            }
7021
7022            let next_out_of_line = decoder.next_out_of_line();
7023            let handles_before = decoder.remaining_handles();
7024            if let Some((inlined, num_bytes, num_handles)) =
7025                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7026            {
7027                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7028                if inlined != (member_inline_size <= 4) {
7029                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7030                }
7031                let inner_offset;
7032                let mut inner_depth = depth.clone();
7033                if inlined {
7034                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7035                    inner_offset = next_offset;
7036                } else {
7037                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7038                    inner_depth.increment()?;
7039                }
7040                let val_ref = self.result_code.get_or_insert_with(|| {
7041                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
7042                });
7043                fidl::decode!(
7044                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
7045                    D,
7046                    val_ref,
7047                    decoder,
7048                    inner_offset,
7049                    inner_depth
7050                )?;
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 < 3 {
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 =
7079                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7080                if inlined != (member_inline_size <= 4) {
7081                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7082                }
7083                let inner_offset;
7084                let mut inner_depth = depth.clone();
7085                if inlined {
7086                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7087                    inner_offset = next_offset;
7088                } else {
7089                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7090                    inner_depth.increment()?;
7091                }
7092                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
7093                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7094                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7095                {
7096                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7097                }
7098                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7099                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7100                }
7101            }
7102
7103            next_offset += envelope_size;
7104            _next_ordinal_to_read += 1;
7105            if next_offset >= end_offset {
7106                return Ok(());
7107            }
7108
7109            // Decode unknown envelopes for gaps in ordinals.
7110            while _next_ordinal_to_read < 4 {
7111                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7112                _next_ordinal_to_read += 1;
7113                next_offset += envelope_size;
7114            }
7115
7116            let next_out_of_line = decoder.next_out_of_line();
7117            let handles_before = decoder.remaining_handles();
7118            if let Some((inlined, num_bytes, num_handles)) =
7119                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7120            {
7121                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7122                if inlined != (member_inline_size <= 4) {
7123                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7124                }
7125                let inner_offset;
7126                let mut inner_depth = depth.clone();
7127                if inlined {
7128                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7129                    inner_offset = next_offset;
7130                } else {
7131                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7132                    inner_depth.increment()?;
7133                }
7134                let val_ref = self.association_ies.get_or_insert_with(|| {
7135                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
7136                });
7137                fidl::decode!(
7138                    fidl::encoding::UnboundedVector<u8>,
7139                    D,
7140                    val_ref,
7141                    decoder,
7142                    inner_offset,
7143                    inner_depth
7144                )?;
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
7156            // Decode the remaining unknown envelopes.
7157            while next_offset < end_offset {
7158                _next_ordinal_to_read += 1;
7159                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7160                next_offset += envelope_size;
7161            }
7162
7163            Ok(())
7164        }
7165    }
7166
7167    impl WlanFullmacImplIfcDeauthConfRequest {
7168        #[inline(always)]
7169        fn max_ordinal_present(&self) -> u64 {
7170            if let Some(_) = self.peer_sta_address {
7171                return 1;
7172            }
7173            0
7174        }
7175    }
7176
7177    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7178        type Borrowed<'a> = &'a Self;
7179        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7180            value
7181        }
7182    }
7183
7184    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7185        type Owned = Self;
7186
7187        #[inline(always)]
7188        fn inline_align(_context: fidl::encoding::Context) -> usize {
7189            8
7190        }
7191
7192        #[inline(always)]
7193        fn inline_size(_context: fidl::encoding::Context) -> usize {
7194            16
7195        }
7196    }
7197
7198    unsafe impl<D: fidl::encoding::ResourceDialect>
7199        fidl::encoding::Encode<WlanFullmacImplIfcDeauthConfRequest, D>
7200        for &WlanFullmacImplIfcDeauthConfRequest
7201    {
7202        unsafe fn encode(
7203            self,
7204            encoder: &mut fidl::encoding::Encoder<'_, D>,
7205            offset: usize,
7206            mut depth: fidl::encoding::Depth,
7207        ) -> fidl::Result<()> {
7208            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthConfRequest>(offset);
7209            // Vector header
7210            let max_ordinal: u64 = self.max_ordinal_present();
7211            encoder.write_num(max_ordinal, offset);
7212            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7213            // Calling encoder.out_of_line_offset(0) is not allowed.
7214            if max_ordinal == 0 {
7215                return Ok(());
7216            }
7217            depth.increment()?;
7218            let envelope_size = 8;
7219            let bytes_len = max_ordinal as usize * envelope_size;
7220            #[allow(unused_variables)]
7221            let offset = encoder.out_of_line_offset(bytes_len);
7222            let mut _prev_end_offset: usize = 0;
7223            if 1 > max_ordinal {
7224                return Ok(());
7225            }
7226
7227            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7228            // are envelope_size bytes.
7229            let cur_offset: usize = (1 - 1) * envelope_size;
7230
7231            // Zero reserved fields.
7232            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7233
7234            // Safety:
7235            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7236            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7237            //   envelope_size bytes, there is always sufficient room.
7238            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7239                self.peer_sta_address
7240                    .as_ref()
7241                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7242                encoder,
7243                offset + cur_offset,
7244                depth,
7245            )?;
7246
7247            _prev_end_offset = cur_offset + envelope_size;
7248
7249            Ok(())
7250        }
7251    }
7252
7253    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7254        for WlanFullmacImplIfcDeauthConfRequest
7255    {
7256        #[inline(always)]
7257        fn new_empty() -> Self {
7258            Self::default()
7259        }
7260
7261        unsafe fn decode(
7262            &mut self,
7263            decoder: &mut fidl::encoding::Decoder<'_, D>,
7264            offset: usize,
7265            mut depth: fidl::encoding::Depth,
7266        ) -> fidl::Result<()> {
7267            decoder.debug_check_bounds::<Self>(offset);
7268            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7269                None => return Err(fidl::Error::NotNullable),
7270                Some(len) => len,
7271            };
7272            // Calling decoder.out_of_line_offset(0) is not allowed.
7273            if len == 0 {
7274                return Ok(());
7275            };
7276            depth.increment()?;
7277            let envelope_size = 8;
7278            let bytes_len = len * envelope_size;
7279            let offset = decoder.out_of_line_offset(bytes_len)?;
7280            // Decode the envelope for each type.
7281            let mut _next_ordinal_to_read = 0;
7282            let mut next_offset = offset;
7283            let end_offset = offset + bytes_len;
7284            _next_ordinal_to_read += 1;
7285            if next_offset >= end_offset {
7286                return Ok(());
7287            }
7288
7289            // Decode unknown envelopes for gaps in ordinals.
7290            while _next_ordinal_to_read < 1 {
7291                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7292                _next_ordinal_to_read += 1;
7293                next_offset += envelope_size;
7294            }
7295
7296            let next_out_of_line = decoder.next_out_of_line();
7297            let handles_before = decoder.remaining_handles();
7298            if let Some((inlined, num_bytes, num_handles)) =
7299                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7300            {
7301                let member_inline_size =
7302                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7303                        decoder.context,
7304                    );
7305                if inlined != (member_inline_size <= 4) {
7306                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7307                }
7308                let inner_offset;
7309                let mut inner_depth = depth.clone();
7310                if inlined {
7311                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7312                    inner_offset = next_offset;
7313                } else {
7314                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7315                    inner_depth.increment()?;
7316                }
7317                let val_ref = self
7318                    .peer_sta_address
7319                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7320                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7321                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7322                {
7323                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7324                }
7325                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7326                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7327                }
7328            }
7329
7330            next_offset += envelope_size;
7331
7332            // Decode the remaining unknown envelopes.
7333            while next_offset < end_offset {
7334                _next_ordinal_to_read += 1;
7335                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7336                next_offset += envelope_size;
7337            }
7338
7339            Ok(())
7340        }
7341    }
7342
7343    impl WlanFullmacImplIfcDeauthIndRequest {
7344        #[inline(always)]
7345        fn max_ordinal_present(&self) -> u64 {
7346            if let Some(_) = self.locally_initiated {
7347                return 3;
7348            }
7349            if let Some(_) = self.reason_code {
7350                return 2;
7351            }
7352            if let Some(_) = self.peer_sta_address {
7353                return 1;
7354            }
7355            0
7356        }
7357    }
7358
7359    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7360        type Borrowed<'a> = &'a Self;
7361        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7362            value
7363        }
7364    }
7365
7366    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7367        type Owned = Self;
7368
7369        #[inline(always)]
7370        fn inline_align(_context: fidl::encoding::Context) -> usize {
7371            8
7372        }
7373
7374        #[inline(always)]
7375        fn inline_size(_context: fidl::encoding::Context) -> usize {
7376            16
7377        }
7378    }
7379
7380    unsafe impl<D: fidl::encoding::ResourceDialect>
7381        fidl::encoding::Encode<WlanFullmacImplIfcDeauthIndRequest, D>
7382        for &WlanFullmacImplIfcDeauthIndRequest
7383    {
7384        unsafe fn encode(
7385            self,
7386            encoder: &mut fidl::encoding::Encoder<'_, D>,
7387            offset: usize,
7388            mut depth: fidl::encoding::Depth,
7389        ) -> fidl::Result<()> {
7390            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthIndRequest>(offset);
7391            // Vector header
7392            let max_ordinal: u64 = self.max_ordinal_present();
7393            encoder.write_num(max_ordinal, offset);
7394            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7395            // Calling encoder.out_of_line_offset(0) is not allowed.
7396            if max_ordinal == 0 {
7397                return Ok(());
7398            }
7399            depth.increment()?;
7400            let envelope_size = 8;
7401            let bytes_len = max_ordinal as usize * envelope_size;
7402            #[allow(unused_variables)]
7403            let offset = encoder.out_of_line_offset(bytes_len);
7404            let mut _prev_end_offset: usize = 0;
7405            if 1 > max_ordinal {
7406                return Ok(());
7407            }
7408
7409            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7410            // are envelope_size bytes.
7411            let cur_offset: usize = (1 - 1) * envelope_size;
7412
7413            // Zero reserved fields.
7414            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7415
7416            // Safety:
7417            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7418            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7419            //   envelope_size bytes, there is always sufficient room.
7420            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7421                self.peer_sta_address
7422                    .as_ref()
7423                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7424                encoder,
7425                offset + cur_offset,
7426                depth,
7427            )?;
7428
7429            _prev_end_offset = cur_offset + envelope_size;
7430            if 2 > max_ordinal {
7431                return Ok(());
7432            }
7433
7434            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7435            // are envelope_size bytes.
7436            let cur_offset: usize = (2 - 1) * envelope_size;
7437
7438            // Zero reserved fields.
7439            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7440
7441            // Safety:
7442            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7443            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7444            //   envelope_size bytes, there is always sufficient room.
7445            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
7446            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
7447            encoder, offset + cur_offset, depth
7448        )?;
7449
7450            _prev_end_offset = cur_offset + envelope_size;
7451            if 3 > max_ordinal {
7452                return Ok(());
7453            }
7454
7455            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7456            // are envelope_size bytes.
7457            let cur_offset: usize = (3 - 1) * envelope_size;
7458
7459            // Zero reserved fields.
7460            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7461
7462            // Safety:
7463            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7464            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7465            //   envelope_size bytes, there is always sufficient room.
7466            fidl::encoding::encode_in_envelope_optional::<bool, D>(
7467                self.locally_initiated
7468                    .as_ref()
7469                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7470                encoder,
7471                offset + cur_offset,
7472                depth,
7473            )?;
7474
7475            _prev_end_offset = cur_offset + envelope_size;
7476
7477            Ok(())
7478        }
7479    }
7480
7481    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7482        for WlanFullmacImplIfcDeauthIndRequest
7483    {
7484        #[inline(always)]
7485        fn new_empty() -> Self {
7486            Self::default()
7487        }
7488
7489        unsafe fn decode(
7490            &mut self,
7491            decoder: &mut fidl::encoding::Decoder<'_, D>,
7492            offset: usize,
7493            mut depth: fidl::encoding::Depth,
7494        ) -> fidl::Result<()> {
7495            decoder.debug_check_bounds::<Self>(offset);
7496            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7497                None => return Err(fidl::Error::NotNullable),
7498                Some(len) => len,
7499            };
7500            // Calling decoder.out_of_line_offset(0) is not allowed.
7501            if len == 0 {
7502                return Ok(());
7503            };
7504            depth.increment()?;
7505            let envelope_size = 8;
7506            let bytes_len = len * envelope_size;
7507            let offset = decoder.out_of_line_offset(bytes_len)?;
7508            // Decode the envelope for each type.
7509            let mut _next_ordinal_to_read = 0;
7510            let mut next_offset = offset;
7511            let end_offset = offset + bytes_len;
7512            _next_ordinal_to_read += 1;
7513            if next_offset >= end_offset {
7514                return Ok(());
7515            }
7516
7517            // Decode unknown envelopes for gaps in ordinals.
7518            while _next_ordinal_to_read < 1 {
7519                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7520                _next_ordinal_to_read += 1;
7521                next_offset += envelope_size;
7522            }
7523
7524            let next_out_of_line = decoder.next_out_of_line();
7525            let handles_before = decoder.remaining_handles();
7526            if let Some((inlined, num_bytes, num_handles)) =
7527                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7528            {
7529                let member_inline_size =
7530                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7531                        decoder.context,
7532                    );
7533                if inlined != (member_inline_size <= 4) {
7534                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7535                }
7536                let inner_offset;
7537                let mut inner_depth = depth.clone();
7538                if inlined {
7539                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7540                    inner_offset = next_offset;
7541                } else {
7542                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7543                    inner_depth.increment()?;
7544                }
7545                let val_ref = self
7546                    .peer_sta_address
7547                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7548                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7549                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7550                {
7551                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7552                }
7553                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7554                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7555                }
7556            }
7557
7558            next_offset += envelope_size;
7559            _next_ordinal_to_read += 1;
7560            if next_offset >= end_offset {
7561                return Ok(());
7562            }
7563
7564            // Decode unknown envelopes for gaps in ordinals.
7565            while _next_ordinal_to_read < 2 {
7566                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7567                _next_ordinal_to_read += 1;
7568                next_offset += envelope_size;
7569            }
7570
7571            let next_out_of_line = decoder.next_out_of_line();
7572            let handles_before = decoder.remaining_handles();
7573            if let Some((inlined, num_bytes, num_handles)) =
7574                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7575            {
7576                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7577                if inlined != (member_inline_size <= 4) {
7578                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7579                }
7580                let inner_offset;
7581                let mut inner_depth = depth.clone();
7582                if inlined {
7583                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7584                    inner_offset = next_offset;
7585                } else {
7586                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7587                    inner_depth.increment()?;
7588                }
7589                let val_ref = self.reason_code.get_or_insert_with(|| {
7590                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
7591                });
7592                fidl::decode!(
7593                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
7594                    D,
7595                    val_ref,
7596                    decoder,
7597                    inner_offset,
7598                    inner_depth
7599                )?;
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 < 3 {
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 =
7628                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7629                if inlined != (member_inline_size <= 4) {
7630                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7631                }
7632                let inner_offset;
7633                let mut inner_depth = depth.clone();
7634                if inlined {
7635                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7636                    inner_offset = next_offset;
7637                } else {
7638                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7639                    inner_depth.increment()?;
7640                }
7641                let val_ref =
7642                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
7643                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7644                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7645                {
7646                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7647                }
7648                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7649                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7650                }
7651            }
7652
7653            next_offset += envelope_size;
7654
7655            // Decode the remaining unknown envelopes.
7656            while next_offset < end_offset {
7657                _next_ordinal_to_read += 1;
7658                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7659                next_offset += envelope_size;
7660            }
7661
7662            Ok(())
7663        }
7664    }
7665
7666    impl WlanFullmacImplIfcDisassocConfRequest {
7667        #[inline(always)]
7668        fn max_ordinal_present(&self) -> u64 {
7669            if let Some(_) = self.status {
7670                return 1;
7671            }
7672            0
7673        }
7674    }
7675
7676    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7677        type Borrowed<'a> = &'a Self;
7678        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7679            value
7680        }
7681    }
7682
7683    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7684        type Owned = Self;
7685
7686        #[inline(always)]
7687        fn inline_align(_context: fidl::encoding::Context) -> usize {
7688            8
7689        }
7690
7691        #[inline(always)]
7692        fn inline_size(_context: fidl::encoding::Context) -> usize {
7693            16
7694        }
7695    }
7696
7697    unsafe impl<D: fidl::encoding::ResourceDialect>
7698        fidl::encoding::Encode<WlanFullmacImplIfcDisassocConfRequest, D>
7699        for &WlanFullmacImplIfcDisassocConfRequest
7700    {
7701        unsafe fn encode(
7702            self,
7703            encoder: &mut fidl::encoding::Encoder<'_, D>,
7704            offset: usize,
7705            mut depth: fidl::encoding::Depth,
7706        ) -> fidl::Result<()> {
7707            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocConfRequest>(offset);
7708            // Vector header
7709            let max_ordinal: u64 = self.max_ordinal_present();
7710            encoder.write_num(max_ordinal, offset);
7711            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7712            // Calling encoder.out_of_line_offset(0) is not allowed.
7713            if max_ordinal == 0 {
7714                return Ok(());
7715            }
7716            depth.increment()?;
7717            let envelope_size = 8;
7718            let bytes_len = max_ordinal as usize * envelope_size;
7719            #[allow(unused_variables)]
7720            let offset = encoder.out_of_line_offset(bytes_len);
7721            let mut _prev_end_offset: usize = 0;
7722            if 1 > max_ordinal {
7723                return Ok(());
7724            }
7725
7726            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7727            // are envelope_size bytes.
7728            let cur_offset: usize = (1 - 1) * envelope_size;
7729
7730            // Zero reserved fields.
7731            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7732
7733            // Safety:
7734            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7735            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7736            //   envelope_size bytes, there is always sufficient room.
7737            fidl::encoding::encode_in_envelope_optional::<i32, D>(
7738                self.status.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
7739                encoder,
7740                offset + cur_offset,
7741                depth,
7742            )?;
7743
7744            _prev_end_offset = cur_offset + envelope_size;
7745
7746            Ok(())
7747        }
7748    }
7749
7750    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7751        for WlanFullmacImplIfcDisassocConfRequest
7752    {
7753        #[inline(always)]
7754        fn new_empty() -> Self {
7755            Self::default()
7756        }
7757
7758        unsafe fn decode(
7759            &mut self,
7760            decoder: &mut fidl::encoding::Decoder<'_, D>,
7761            offset: usize,
7762            mut depth: fidl::encoding::Depth,
7763        ) -> fidl::Result<()> {
7764            decoder.debug_check_bounds::<Self>(offset);
7765            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7766                None => return Err(fidl::Error::NotNullable),
7767                Some(len) => len,
7768            };
7769            // Calling decoder.out_of_line_offset(0) is not allowed.
7770            if len == 0 {
7771                return Ok(());
7772            };
7773            depth.increment()?;
7774            let envelope_size = 8;
7775            let bytes_len = len * envelope_size;
7776            let offset = decoder.out_of_line_offset(bytes_len)?;
7777            // Decode the envelope for each type.
7778            let mut _next_ordinal_to_read = 0;
7779            let mut next_offset = offset;
7780            let end_offset = offset + bytes_len;
7781            _next_ordinal_to_read += 1;
7782            if next_offset >= end_offset {
7783                return Ok(());
7784            }
7785
7786            // Decode unknown envelopes for gaps in ordinals.
7787            while _next_ordinal_to_read < 1 {
7788                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7789                _next_ordinal_to_read += 1;
7790                next_offset += envelope_size;
7791            }
7792
7793            let next_out_of_line = decoder.next_out_of_line();
7794            let handles_before = decoder.remaining_handles();
7795            if let Some((inlined, num_bytes, num_handles)) =
7796                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7797            {
7798                let member_inline_size =
7799                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7800                if inlined != (member_inline_size <= 4) {
7801                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7802                }
7803                let inner_offset;
7804                let mut inner_depth = depth.clone();
7805                if inlined {
7806                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7807                    inner_offset = next_offset;
7808                } else {
7809                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7810                    inner_depth.increment()?;
7811                }
7812                let val_ref = self.status.get_or_insert_with(|| fidl::new_empty!(i32, D));
7813                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
7814                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7815                {
7816                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7817                }
7818                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7819                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7820                }
7821            }
7822
7823            next_offset += envelope_size;
7824
7825            // Decode the remaining unknown envelopes.
7826            while next_offset < end_offset {
7827                _next_ordinal_to_read += 1;
7828                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7829                next_offset += envelope_size;
7830            }
7831
7832            Ok(())
7833        }
7834    }
7835
7836    impl WlanFullmacImplIfcDisassocIndRequest {
7837        #[inline(always)]
7838        fn max_ordinal_present(&self) -> u64 {
7839            if let Some(_) = self.locally_initiated {
7840                return 3;
7841            }
7842            if let Some(_) = self.reason_code {
7843                return 2;
7844            }
7845            if let Some(_) = self.peer_sta_address {
7846                return 1;
7847            }
7848            0
7849        }
7850    }
7851
7852    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocIndRequest {
7853        type Borrowed<'a> = &'a Self;
7854        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7855            value
7856        }
7857    }
7858
7859    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocIndRequest {
7860        type Owned = Self;
7861
7862        #[inline(always)]
7863        fn inline_align(_context: fidl::encoding::Context) -> usize {
7864            8
7865        }
7866
7867        #[inline(always)]
7868        fn inline_size(_context: fidl::encoding::Context) -> usize {
7869            16
7870        }
7871    }
7872
7873    unsafe impl<D: fidl::encoding::ResourceDialect>
7874        fidl::encoding::Encode<WlanFullmacImplIfcDisassocIndRequest, D>
7875        for &WlanFullmacImplIfcDisassocIndRequest
7876    {
7877        unsafe fn encode(
7878            self,
7879            encoder: &mut fidl::encoding::Encoder<'_, D>,
7880            offset: usize,
7881            mut depth: fidl::encoding::Depth,
7882        ) -> fidl::Result<()> {
7883            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocIndRequest>(offset);
7884            // Vector header
7885            let max_ordinal: u64 = self.max_ordinal_present();
7886            encoder.write_num(max_ordinal, offset);
7887            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7888            // Calling encoder.out_of_line_offset(0) is not allowed.
7889            if max_ordinal == 0 {
7890                return Ok(());
7891            }
7892            depth.increment()?;
7893            let envelope_size = 8;
7894            let bytes_len = max_ordinal as usize * envelope_size;
7895            #[allow(unused_variables)]
7896            let offset = encoder.out_of_line_offset(bytes_len);
7897            let mut _prev_end_offset: usize = 0;
7898            if 1 > max_ordinal {
7899                return Ok(());
7900            }
7901
7902            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7903            // are envelope_size bytes.
7904            let cur_offset: usize = (1 - 1) * envelope_size;
7905
7906            // Zero reserved fields.
7907            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7908
7909            // Safety:
7910            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7911            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7912            //   envelope_size bytes, there is always sufficient room.
7913            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7914                self.peer_sta_address
7915                    .as_ref()
7916                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7917                encoder,
7918                offset + cur_offset,
7919                depth,
7920            )?;
7921
7922            _prev_end_offset = cur_offset + envelope_size;
7923            if 2 > max_ordinal {
7924                return Ok(());
7925            }
7926
7927            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7928            // are envelope_size bytes.
7929            let cur_offset: usize = (2 - 1) * envelope_size;
7930
7931            // Zero reserved fields.
7932            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7933
7934            // Safety:
7935            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7936            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7937            //   envelope_size bytes, there is always sufficient room.
7938            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
7939            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
7940            encoder, offset + cur_offset, depth
7941        )?;
7942
7943            _prev_end_offset = cur_offset + envelope_size;
7944            if 3 > max_ordinal {
7945                return Ok(());
7946            }
7947
7948            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7949            // are envelope_size bytes.
7950            let cur_offset: usize = (3 - 1) * envelope_size;
7951
7952            // Zero reserved fields.
7953            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7954
7955            // Safety:
7956            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7957            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7958            //   envelope_size bytes, there is always sufficient room.
7959            fidl::encoding::encode_in_envelope_optional::<bool, D>(
7960                self.locally_initiated
7961                    .as_ref()
7962                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7963                encoder,
7964                offset + cur_offset,
7965                depth,
7966            )?;
7967
7968            _prev_end_offset = cur_offset + envelope_size;
7969
7970            Ok(())
7971        }
7972    }
7973
7974    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7975        for WlanFullmacImplIfcDisassocIndRequest
7976    {
7977        #[inline(always)]
7978        fn new_empty() -> Self {
7979            Self::default()
7980        }
7981
7982        unsafe fn decode(
7983            &mut self,
7984            decoder: &mut fidl::encoding::Decoder<'_, D>,
7985            offset: usize,
7986            mut depth: fidl::encoding::Depth,
7987        ) -> fidl::Result<()> {
7988            decoder.debug_check_bounds::<Self>(offset);
7989            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7990                None => return Err(fidl::Error::NotNullable),
7991                Some(len) => len,
7992            };
7993            // Calling decoder.out_of_line_offset(0) is not allowed.
7994            if len == 0 {
7995                return Ok(());
7996            };
7997            depth.increment()?;
7998            let envelope_size = 8;
7999            let bytes_len = len * envelope_size;
8000            let offset = decoder.out_of_line_offset(bytes_len)?;
8001            // Decode the envelope for each type.
8002            let mut _next_ordinal_to_read = 0;
8003            let mut next_offset = offset;
8004            let end_offset = offset + bytes_len;
8005            _next_ordinal_to_read += 1;
8006            if next_offset >= end_offset {
8007                return Ok(());
8008            }
8009
8010            // Decode unknown envelopes for gaps in ordinals.
8011            while _next_ordinal_to_read < 1 {
8012                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8013                _next_ordinal_to_read += 1;
8014                next_offset += envelope_size;
8015            }
8016
8017            let next_out_of_line = decoder.next_out_of_line();
8018            let handles_before = decoder.remaining_handles();
8019            if let Some((inlined, num_bytes, num_handles)) =
8020                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8021            {
8022                let member_inline_size =
8023                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8024                        decoder.context,
8025                    );
8026                if inlined != (member_inline_size <= 4) {
8027                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8028                }
8029                let inner_offset;
8030                let mut inner_depth = depth.clone();
8031                if inlined {
8032                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8033                    inner_offset = next_offset;
8034                } else {
8035                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8036                    inner_depth.increment()?;
8037                }
8038                let val_ref = self
8039                    .peer_sta_address
8040                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8041                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8042                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8043                {
8044                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8045                }
8046                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8047                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8048                }
8049            }
8050
8051            next_offset += envelope_size;
8052            _next_ordinal_to_read += 1;
8053            if next_offset >= end_offset {
8054                return Ok(());
8055            }
8056
8057            // Decode unknown envelopes for gaps in ordinals.
8058            while _next_ordinal_to_read < 2 {
8059                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8060                _next_ordinal_to_read += 1;
8061                next_offset += envelope_size;
8062            }
8063
8064            let next_out_of_line = decoder.next_out_of_line();
8065            let handles_before = decoder.remaining_handles();
8066            if let Some((inlined, num_bytes, num_handles)) =
8067                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8068            {
8069                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8070                if inlined != (member_inline_size <= 4) {
8071                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8072                }
8073                let inner_offset;
8074                let mut inner_depth = depth.clone();
8075                if inlined {
8076                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8077                    inner_offset = next_offset;
8078                } else {
8079                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8080                    inner_depth.increment()?;
8081                }
8082                let val_ref = self.reason_code.get_or_insert_with(|| {
8083                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
8084                });
8085                fidl::decode!(
8086                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
8087                    D,
8088                    val_ref,
8089                    decoder,
8090                    inner_offset,
8091                    inner_depth
8092                )?;
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 < 3 {
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 =
8121                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8122                if inlined != (member_inline_size <= 4) {
8123                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8124                }
8125                let inner_offset;
8126                let mut inner_depth = depth.clone();
8127                if inlined {
8128                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8129                    inner_offset = next_offset;
8130                } else {
8131                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8132                    inner_depth.increment()?;
8133                }
8134                let val_ref =
8135                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
8136                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8137                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8138                {
8139                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8140                }
8141                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8142                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8143                }
8144            }
8145
8146            next_offset += envelope_size;
8147
8148            // Decode the remaining unknown envelopes.
8149            while next_offset < end_offset {
8150                _next_ordinal_to_read += 1;
8151                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8152                next_offset += envelope_size;
8153            }
8154
8155            Ok(())
8156        }
8157    }
8158
8159    impl WlanFullmacImplIfcEapolConfRequest {
8160        #[inline(always)]
8161        fn max_ordinal_present(&self) -> u64 {
8162            if let Some(_) = self.dst_addr {
8163                return 2;
8164            }
8165            if let Some(_) = self.result_code {
8166                return 1;
8167            }
8168            0
8169        }
8170    }
8171
8172    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolConfRequest {
8173        type Borrowed<'a> = &'a Self;
8174        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8175            value
8176        }
8177    }
8178
8179    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolConfRequest {
8180        type Owned = Self;
8181
8182        #[inline(always)]
8183        fn inline_align(_context: fidl::encoding::Context) -> usize {
8184            8
8185        }
8186
8187        #[inline(always)]
8188        fn inline_size(_context: fidl::encoding::Context) -> usize {
8189            16
8190        }
8191    }
8192
8193    unsafe impl<D: fidl::encoding::ResourceDialect>
8194        fidl::encoding::Encode<WlanFullmacImplIfcEapolConfRequest, D>
8195        for &WlanFullmacImplIfcEapolConfRequest
8196    {
8197        unsafe fn encode(
8198            self,
8199            encoder: &mut fidl::encoding::Encoder<'_, D>,
8200            offset: usize,
8201            mut depth: fidl::encoding::Depth,
8202        ) -> fidl::Result<()> {
8203            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolConfRequest>(offset);
8204            // Vector header
8205            let max_ordinal: u64 = self.max_ordinal_present();
8206            encoder.write_num(max_ordinal, offset);
8207            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8208            // Calling encoder.out_of_line_offset(0) is not allowed.
8209            if max_ordinal == 0 {
8210                return Ok(());
8211            }
8212            depth.increment()?;
8213            let envelope_size = 8;
8214            let bytes_len = max_ordinal as usize * envelope_size;
8215            #[allow(unused_variables)]
8216            let offset = encoder.out_of_line_offset(bytes_len);
8217            let mut _prev_end_offset: usize = 0;
8218            if 1 > max_ordinal {
8219                return Ok(());
8220            }
8221
8222            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8223            // are envelope_size bytes.
8224            let cur_offset: usize = (1 - 1) * envelope_size;
8225
8226            // Zero reserved fields.
8227            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8228
8229            // Safety:
8230            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8231            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8232            //   envelope_size bytes, there is always sufficient room.
8233            fidl::encoding::encode_in_envelope_optional::<EapolTxResult, D>(
8234                self.result_code
8235                    .as_ref()
8236                    .map(<EapolTxResult as fidl::encoding::ValueTypeMarker>::borrow),
8237                encoder,
8238                offset + cur_offset,
8239                depth,
8240            )?;
8241
8242            _prev_end_offset = cur_offset + envelope_size;
8243            if 2 > max_ordinal {
8244                return Ok(());
8245            }
8246
8247            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8248            // are envelope_size bytes.
8249            let cur_offset: usize = (2 - 1) * envelope_size;
8250
8251            // Zero reserved fields.
8252            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8253
8254            // Safety:
8255            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8256            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8257            //   envelope_size bytes, there is always sufficient room.
8258            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8259                self.dst_addr
8260                    .as_ref()
8261                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8262                encoder,
8263                offset + cur_offset,
8264                depth,
8265            )?;
8266
8267            _prev_end_offset = cur_offset + envelope_size;
8268
8269            Ok(())
8270        }
8271    }
8272
8273    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8274        for WlanFullmacImplIfcEapolConfRequest
8275    {
8276        #[inline(always)]
8277        fn new_empty() -> Self {
8278            Self::default()
8279        }
8280
8281        unsafe fn decode(
8282            &mut self,
8283            decoder: &mut fidl::encoding::Decoder<'_, D>,
8284            offset: usize,
8285            mut depth: fidl::encoding::Depth,
8286        ) -> fidl::Result<()> {
8287            decoder.debug_check_bounds::<Self>(offset);
8288            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8289                None => return Err(fidl::Error::NotNullable),
8290                Some(len) => len,
8291            };
8292            // Calling decoder.out_of_line_offset(0) is not allowed.
8293            if len == 0 {
8294                return Ok(());
8295            };
8296            depth.increment()?;
8297            let envelope_size = 8;
8298            let bytes_len = len * envelope_size;
8299            let offset = decoder.out_of_line_offset(bytes_len)?;
8300            // Decode the envelope for each type.
8301            let mut _next_ordinal_to_read = 0;
8302            let mut next_offset = offset;
8303            let end_offset = offset + bytes_len;
8304            _next_ordinal_to_read += 1;
8305            if next_offset >= end_offset {
8306                return Ok(());
8307            }
8308
8309            // Decode unknown envelopes for gaps in ordinals.
8310            while _next_ordinal_to_read < 1 {
8311                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8312                _next_ordinal_to_read += 1;
8313                next_offset += envelope_size;
8314            }
8315
8316            let next_out_of_line = decoder.next_out_of_line();
8317            let handles_before = decoder.remaining_handles();
8318            if let Some((inlined, num_bytes, num_handles)) =
8319                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8320            {
8321                let member_inline_size =
8322                    <EapolTxResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8323                if inlined != (member_inline_size <= 4) {
8324                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8325                }
8326                let inner_offset;
8327                let mut inner_depth = depth.clone();
8328                if inlined {
8329                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8330                    inner_offset = next_offset;
8331                } else {
8332                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8333                    inner_depth.increment()?;
8334                }
8335                let val_ref =
8336                    self.result_code.get_or_insert_with(|| fidl::new_empty!(EapolTxResult, D));
8337                fidl::decode!(EapolTxResult, D, val_ref, decoder, inner_offset, inner_depth)?;
8338                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8339                {
8340                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8341                }
8342                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8343                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8344                }
8345            }
8346
8347            next_offset += envelope_size;
8348            _next_ordinal_to_read += 1;
8349            if next_offset >= end_offset {
8350                return Ok(());
8351            }
8352
8353            // Decode unknown envelopes for gaps in ordinals.
8354            while _next_ordinal_to_read < 2 {
8355                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8356                _next_ordinal_to_read += 1;
8357                next_offset += envelope_size;
8358            }
8359
8360            let next_out_of_line = decoder.next_out_of_line();
8361            let handles_before = decoder.remaining_handles();
8362            if let Some((inlined, num_bytes, num_handles)) =
8363                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8364            {
8365                let member_inline_size =
8366                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8367                        decoder.context,
8368                    );
8369                if inlined != (member_inline_size <= 4) {
8370                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8371                }
8372                let inner_offset;
8373                let mut inner_depth = depth.clone();
8374                if inlined {
8375                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8376                    inner_offset = next_offset;
8377                } else {
8378                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8379                    inner_depth.increment()?;
8380                }
8381                let val_ref = self
8382                    .dst_addr
8383                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8384                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8385                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8386                {
8387                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8388                }
8389                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8390                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8391                }
8392            }
8393
8394            next_offset += envelope_size;
8395
8396            // Decode the remaining unknown envelopes.
8397            while next_offset < end_offset {
8398                _next_ordinal_to_read += 1;
8399                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8400                next_offset += envelope_size;
8401            }
8402
8403            Ok(())
8404        }
8405    }
8406
8407    impl WlanFullmacImplIfcEapolIndRequest {
8408        #[inline(always)]
8409        fn max_ordinal_present(&self) -> u64 {
8410            if let Some(_) = self.data {
8411                return 3;
8412            }
8413            if let Some(_) = self.dst_addr {
8414                return 2;
8415            }
8416            if let Some(_) = self.src_addr {
8417                return 1;
8418            }
8419            0
8420        }
8421    }
8422
8423    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolIndRequest {
8424        type Borrowed<'a> = &'a Self;
8425        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8426            value
8427        }
8428    }
8429
8430    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolIndRequest {
8431        type Owned = Self;
8432
8433        #[inline(always)]
8434        fn inline_align(_context: fidl::encoding::Context) -> usize {
8435            8
8436        }
8437
8438        #[inline(always)]
8439        fn inline_size(_context: fidl::encoding::Context) -> usize {
8440            16
8441        }
8442    }
8443
8444    unsafe impl<D: fidl::encoding::ResourceDialect>
8445        fidl::encoding::Encode<WlanFullmacImplIfcEapolIndRequest, D>
8446        for &WlanFullmacImplIfcEapolIndRequest
8447    {
8448        unsafe fn encode(
8449            self,
8450            encoder: &mut fidl::encoding::Encoder<'_, D>,
8451            offset: usize,
8452            mut depth: fidl::encoding::Depth,
8453        ) -> fidl::Result<()> {
8454            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolIndRequest>(offset);
8455            // Vector header
8456            let max_ordinal: u64 = self.max_ordinal_present();
8457            encoder.write_num(max_ordinal, offset);
8458            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8459            // Calling encoder.out_of_line_offset(0) is not allowed.
8460            if max_ordinal == 0 {
8461                return Ok(());
8462            }
8463            depth.increment()?;
8464            let envelope_size = 8;
8465            let bytes_len = max_ordinal as usize * envelope_size;
8466            #[allow(unused_variables)]
8467            let offset = encoder.out_of_line_offset(bytes_len);
8468            let mut _prev_end_offset: usize = 0;
8469            if 1 > max_ordinal {
8470                return Ok(());
8471            }
8472
8473            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8474            // are envelope_size bytes.
8475            let cur_offset: usize = (1 - 1) * envelope_size;
8476
8477            // Zero reserved fields.
8478            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8479
8480            // Safety:
8481            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8482            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8483            //   envelope_size bytes, there is always sufficient room.
8484            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8485                self.src_addr
8486                    .as_ref()
8487                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8488                encoder,
8489                offset + cur_offset,
8490                depth,
8491            )?;
8492
8493            _prev_end_offset = cur_offset + envelope_size;
8494            if 2 > max_ordinal {
8495                return Ok(());
8496            }
8497
8498            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8499            // are envelope_size bytes.
8500            let cur_offset: usize = (2 - 1) * envelope_size;
8501
8502            // Zero reserved fields.
8503            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8504
8505            // Safety:
8506            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8507            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8508            //   envelope_size bytes, there is always sufficient room.
8509            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8510                self.dst_addr
8511                    .as_ref()
8512                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8513                encoder,
8514                offset + cur_offset,
8515                depth,
8516            )?;
8517
8518            _prev_end_offset = cur_offset + envelope_size;
8519            if 3 > max_ordinal {
8520                return Ok(());
8521            }
8522
8523            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8524            // are envelope_size bytes.
8525            let cur_offset: usize = (3 - 1) * envelope_size;
8526
8527            // Zero reserved fields.
8528            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8529
8530            // Safety:
8531            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8532            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8533            //   envelope_size bytes, there is always sufficient room.
8534            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8535            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8536            encoder, offset + cur_offset, depth
8537        )?;
8538
8539            _prev_end_offset = cur_offset + envelope_size;
8540
8541            Ok(())
8542        }
8543    }
8544
8545    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8546        for WlanFullmacImplIfcEapolIndRequest
8547    {
8548        #[inline(always)]
8549        fn new_empty() -> Self {
8550            Self::default()
8551        }
8552
8553        unsafe fn decode(
8554            &mut self,
8555            decoder: &mut fidl::encoding::Decoder<'_, D>,
8556            offset: usize,
8557            mut depth: fidl::encoding::Depth,
8558        ) -> fidl::Result<()> {
8559            decoder.debug_check_bounds::<Self>(offset);
8560            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8561                None => return Err(fidl::Error::NotNullable),
8562                Some(len) => len,
8563            };
8564            // Calling decoder.out_of_line_offset(0) is not allowed.
8565            if len == 0 {
8566                return Ok(());
8567            };
8568            depth.increment()?;
8569            let envelope_size = 8;
8570            let bytes_len = len * envelope_size;
8571            let offset = decoder.out_of_line_offset(bytes_len)?;
8572            // Decode the envelope for each type.
8573            let mut _next_ordinal_to_read = 0;
8574            let mut next_offset = offset;
8575            let end_offset = offset + bytes_len;
8576            _next_ordinal_to_read += 1;
8577            if next_offset >= end_offset {
8578                return Ok(());
8579            }
8580
8581            // Decode unknown envelopes for gaps in ordinals.
8582            while _next_ordinal_to_read < 1 {
8583                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8584                _next_ordinal_to_read += 1;
8585                next_offset += envelope_size;
8586            }
8587
8588            let next_out_of_line = decoder.next_out_of_line();
8589            let handles_before = decoder.remaining_handles();
8590            if let Some((inlined, num_bytes, num_handles)) =
8591                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8592            {
8593                let member_inline_size =
8594                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8595                        decoder.context,
8596                    );
8597                if inlined != (member_inline_size <= 4) {
8598                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8599                }
8600                let inner_offset;
8601                let mut inner_depth = depth.clone();
8602                if inlined {
8603                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8604                    inner_offset = next_offset;
8605                } else {
8606                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8607                    inner_depth.increment()?;
8608                }
8609                let val_ref = self
8610                    .src_addr
8611                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8612                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8613                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8614                {
8615                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8616                }
8617                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8618                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8619                }
8620            }
8621
8622            next_offset += envelope_size;
8623            _next_ordinal_to_read += 1;
8624            if next_offset >= end_offset {
8625                return Ok(());
8626            }
8627
8628            // Decode unknown envelopes for gaps in ordinals.
8629            while _next_ordinal_to_read < 2 {
8630                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8631                _next_ordinal_to_read += 1;
8632                next_offset += envelope_size;
8633            }
8634
8635            let next_out_of_line = decoder.next_out_of_line();
8636            let handles_before = decoder.remaining_handles();
8637            if let Some((inlined, num_bytes, num_handles)) =
8638                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8639            {
8640                let member_inline_size =
8641                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8642                        decoder.context,
8643                    );
8644                if inlined != (member_inline_size <= 4) {
8645                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8646                }
8647                let inner_offset;
8648                let mut inner_depth = depth.clone();
8649                if inlined {
8650                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8651                    inner_offset = next_offset;
8652                } else {
8653                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8654                    inner_depth.increment()?;
8655                }
8656                let val_ref = self
8657                    .dst_addr
8658                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8659                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8660                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8661                {
8662                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8663                }
8664                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8665                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8666                }
8667            }
8668
8669            next_offset += envelope_size;
8670            _next_ordinal_to_read += 1;
8671            if next_offset >= end_offset {
8672                return Ok(());
8673            }
8674
8675            // Decode unknown envelopes for gaps in ordinals.
8676            while _next_ordinal_to_read < 3 {
8677                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8678                _next_ordinal_to_read += 1;
8679                next_offset += envelope_size;
8680            }
8681
8682            let next_out_of_line = decoder.next_out_of_line();
8683            let handles_before = decoder.remaining_handles();
8684            if let Some((inlined, num_bytes, num_handles)) =
8685                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8686            {
8687                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8688                if inlined != (member_inline_size <= 4) {
8689                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8690                }
8691                let inner_offset;
8692                let mut inner_depth = depth.clone();
8693                if inlined {
8694                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8695                    inner_offset = next_offset;
8696                } else {
8697                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8698                    inner_depth.increment()?;
8699                }
8700                let val_ref = self.data.get_or_insert_with(|| {
8701                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8702                });
8703                fidl::decode!(
8704                    fidl::encoding::UnboundedVector<u8>,
8705                    D,
8706                    val_ref,
8707                    decoder,
8708                    inner_offset,
8709                    inner_depth
8710                )?;
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
8722            // Decode the remaining unknown envelopes.
8723            while next_offset < end_offset {
8724                _next_ordinal_to_read += 1;
8725                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8726                next_offset += envelope_size;
8727            }
8728
8729            Ok(())
8730        }
8731    }
8732
8733    impl WlanFullmacImplIfcOnPmkAvailableRequest {
8734        #[inline(always)]
8735        fn max_ordinal_present(&self) -> u64 {
8736            if let Some(_) = self.pmkid {
8737                return 2;
8738            }
8739            if let Some(_) = self.pmk {
8740                return 1;
8741            }
8742            0
8743        }
8744    }
8745
8746    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8747        type Borrowed<'a> = &'a Self;
8748        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8749            value
8750        }
8751    }
8752
8753    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8754        type Owned = Self;
8755
8756        #[inline(always)]
8757        fn inline_align(_context: fidl::encoding::Context) -> usize {
8758            8
8759        }
8760
8761        #[inline(always)]
8762        fn inline_size(_context: fidl::encoding::Context) -> usize {
8763            16
8764        }
8765    }
8766
8767    unsafe impl<D: fidl::encoding::ResourceDialect>
8768        fidl::encoding::Encode<WlanFullmacImplIfcOnPmkAvailableRequest, D>
8769        for &WlanFullmacImplIfcOnPmkAvailableRequest
8770    {
8771        unsafe fn encode(
8772            self,
8773            encoder: &mut fidl::encoding::Encoder<'_, D>,
8774            offset: usize,
8775            mut depth: fidl::encoding::Depth,
8776        ) -> fidl::Result<()> {
8777            encoder.debug_check_bounds::<WlanFullmacImplIfcOnPmkAvailableRequest>(offset);
8778            // Vector header
8779            let max_ordinal: u64 = self.max_ordinal_present();
8780            encoder.write_num(max_ordinal, offset);
8781            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8782            // Calling encoder.out_of_line_offset(0) is not allowed.
8783            if max_ordinal == 0 {
8784                return Ok(());
8785            }
8786            depth.increment()?;
8787            let envelope_size = 8;
8788            let bytes_len = max_ordinal as usize * envelope_size;
8789            #[allow(unused_variables)]
8790            let offset = encoder.out_of_line_offset(bytes_len);
8791            let mut _prev_end_offset: usize = 0;
8792            if 1 > max_ordinal {
8793                return Ok(());
8794            }
8795
8796            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8797            // are envelope_size bytes.
8798            let cur_offset: usize = (1 - 1) * envelope_size;
8799
8800            // Zero reserved fields.
8801            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8802
8803            // Safety:
8804            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8805            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8806            //   envelope_size bytes, there is always sufficient room.
8807            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8808            self.pmk.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8809            encoder, offset + cur_offset, depth
8810        )?;
8811
8812            _prev_end_offset = cur_offset + envelope_size;
8813            if 2 > max_ordinal {
8814                return Ok(());
8815            }
8816
8817            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8818            // are envelope_size bytes.
8819            let cur_offset: usize = (2 - 1) * envelope_size;
8820
8821            // Zero reserved fields.
8822            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8823
8824            // Safety:
8825            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8826            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8827            //   envelope_size bytes, there is always sufficient room.
8828            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8829            self.pmkid.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8830            encoder, offset + cur_offset, depth
8831        )?;
8832
8833            _prev_end_offset = cur_offset + envelope_size;
8834
8835            Ok(())
8836        }
8837    }
8838
8839    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8840        for WlanFullmacImplIfcOnPmkAvailableRequest
8841    {
8842        #[inline(always)]
8843        fn new_empty() -> Self {
8844            Self::default()
8845        }
8846
8847        unsafe fn decode(
8848            &mut self,
8849            decoder: &mut fidl::encoding::Decoder<'_, D>,
8850            offset: usize,
8851            mut depth: fidl::encoding::Depth,
8852        ) -> fidl::Result<()> {
8853            decoder.debug_check_bounds::<Self>(offset);
8854            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8855                None => return Err(fidl::Error::NotNullable),
8856                Some(len) => len,
8857            };
8858            // Calling decoder.out_of_line_offset(0) is not allowed.
8859            if len == 0 {
8860                return Ok(());
8861            };
8862            depth.increment()?;
8863            let envelope_size = 8;
8864            let bytes_len = len * envelope_size;
8865            let offset = decoder.out_of_line_offset(bytes_len)?;
8866            // Decode the envelope for each type.
8867            let mut _next_ordinal_to_read = 0;
8868            let mut next_offset = offset;
8869            let end_offset = offset + bytes_len;
8870            _next_ordinal_to_read += 1;
8871            if next_offset >= end_offset {
8872                return Ok(());
8873            }
8874
8875            // Decode unknown envelopes for gaps in ordinals.
8876            while _next_ordinal_to_read < 1 {
8877                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8878                _next_ordinal_to_read += 1;
8879                next_offset += envelope_size;
8880            }
8881
8882            let next_out_of_line = decoder.next_out_of_line();
8883            let handles_before = decoder.remaining_handles();
8884            if let Some((inlined, num_bytes, num_handles)) =
8885                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8886            {
8887                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8888                if inlined != (member_inline_size <= 4) {
8889                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8890                }
8891                let inner_offset;
8892                let mut inner_depth = depth.clone();
8893                if inlined {
8894                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8895                    inner_offset = next_offset;
8896                } else {
8897                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8898                    inner_depth.increment()?;
8899                }
8900                let val_ref = self.pmk.get_or_insert_with(|| {
8901                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8902                });
8903                fidl::decode!(
8904                    fidl::encoding::UnboundedVector<u8>,
8905                    D,
8906                    val_ref,
8907                    decoder,
8908                    inner_offset,
8909                    inner_depth
8910                )?;
8911                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8912                {
8913                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8914                }
8915                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8916                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8917                }
8918            }
8919
8920            next_offset += envelope_size;
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 < 2 {
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.pmkid.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
8973            // Decode the remaining unknown envelopes.
8974            while next_offset < end_offset {
8975                _next_ordinal_to_read += 1;
8976                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8977                next_offset += envelope_size;
8978            }
8979
8980            Ok(())
8981        }
8982    }
8983
8984    impl WlanFullmacImplIfcOnScanEndRequest {
8985        #[inline(always)]
8986        fn max_ordinal_present(&self) -> u64 {
8987            if let Some(_) = self.code {
8988                return 2;
8989            }
8990            if let Some(_) = self.txn_id {
8991                return 1;
8992            }
8993            0
8994        }
8995    }
8996
8997    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanEndRequest {
8998        type Borrowed<'a> = &'a Self;
8999        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9000            value
9001        }
9002    }
9003
9004    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanEndRequest {
9005        type Owned = Self;
9006
9007        #[inline(always)]
9008        fn inline_align(_context: fidl::encoding::Context) -> usize {
9009            8
9010        }
9011
9012        #[inline(always)]
9013        fn inline_size(_context: fidl::encoding::Context) -> usize {
9014            16
9015        }
9016    }
9017
9018    unsafe impl<D: fidl::encoding::ResourceDialect>
9019        fidl::encoding::Encode<WlanFullmacImplIfcOnScanEndRequest, D>
9020        for &WlanFullmacImplIfcOnScanEndRequest
9021    {
9022        unsafe fn encode(
9023            self,
9024            encoder: &mut fidl::encoding::Encoder<'_, D>,
9025            offset: usize,
9026            mut depth: fidl::encoding::Depth,
9027        ) -> fidl::Result<()> {
9028            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanEndRequest>(offset);
9029            // Vector header
9030            let max_ordinal: u64 = self.max_ordinal_present();
9031            encoder.write_num(max_ordinal, offset);
9032            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9033            // Calling encoder.out_of_line_offset(0) is not allowed.
9034            if max_ordinal == 0 {
9035                return Ok(());
9036            }
9037            depth.increment()?;
9038            let envelope_size = 8;
9039            let bytes_len = max_ordinal as usize * envelope_size;
9040            #[allow(unused_variables)]
9041            let offset = encoder.out_of_line_offset(bytes_len);
9042            let mut _prev_end_offset: usize = 0;
9043            if 1 > max_ordinal {
9044                return Ok(());
9045            }
9046
9047            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9048            // are envelope_size bytes.
9049            let cur_offset: usize = (1 - 1) * envelope_size;
9050
9051            // Zero reserved fields.
9052            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9053
9054            // Safety:
9055            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9056            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9057            //   envelope_size bytes, there is always sufficient room.
9058            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9059                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9060                encoder,
9061                offset + cur_offset,
9062                depth,
9063            )?;
9064
9065            _prev_end_offset = cur_offset + envelope_size;
9066            if 2 > max_ordinal {
9067                return Ok(());
9068            }
9069
9070            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9071            // are envelope_size bytes.
9072            let cur_offset: usize = (2 - 1) * envelope_size;
9073
9074            // Zero reserved fields.
9075            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9076
9077            // Safety:
9078            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9079            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9080            //   envelope_size bytes, there is always sufficient room.
9081            fidl::encoding::encode_in_envelope_optional::<WlanScanResult, D>(
9082                self.code.as_ref().map(<WlanScanResult as fidl::encoding::ValueTypeMarker>::borrow),
9083                encoder,
9084                offset + cur_offset,
9085                depth,
9086            )?;
9087
9088            _prev_end_offset = cur_offset + envelope_size;
9089
9090            Ok(())
9091        }
9092    }
9093
9094    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9095        for WlanFullmacImplIfcOnScanEndRequest
9096    {
9097        #[inline(always)]
9098        fn new_empty() -> Self {
9099            Self::default()
9100        }
9101
9102        unsafe fn decode(
9103            &mut self,
9104            decoder: &mut fidl::encoding::Decoder<'_, D>,
9105            offset: usize,
9106            mut depth: fidl::encoding::Depth,
9107        ) -> fidl::Result<()> {
9108            decoder.debug_check_bounds::<Self>(offset);
9109            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9110                None => return Err(fidl::Error::NotNullable),
9111                Some(len) => len,
9112            };
9113            // Calling decoder.out_of_line_offset(0) is not allowed.
9114            if len == 0 {
9115                return Ok(());
9116            };
9117            depth.increment()?;
9118            let envelope_size = 8;
9119            let bytes_len = len * envelope_size;
9120            let offset = decoder.out_of_line_offset(bytes_len)?;
9121            // Decode the envelope for each type.
9122            let mut _next_ordinal_to_read = 0;
9123            let mut next_offset = offset;
9124            let end_offset = offset + bytes_len;
9125            _next_ordinal_to_read += 1;
9126            if next_offset >= end_offset {
9127                return Ok(());
9128            }
9129
9130            // Decode unknown envelopes for gaps in ordinals.
9131            while _next_ordinal_to_read < 1 {
9132                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9133                _next_ordinal_to_read += 1;
9134                next_offset += envelope_size;
9135            }
9136
9137            let next_out_of_line = decoder.next_out_of_line();
9138            let handles_before = decoder.remaining_handles();
9139            if let Some((inlined, num_bytes, num_handles)) =
9140                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9141            {
9142                let member_inline_size =
9143                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9144                if inlined != (member_inline_size <= 4) {
9145                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9146                }
9147                let inner_offset;
9148                let mut inner_depth = depth.clone();
9149                if inlined {
9150                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9151                    inner_offset = next_offset;
9152                } else {
9153                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9154                    inner_depth.increment()?;
9155                }
9156                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9157                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9158                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9159                {
9160                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9161                }
9162                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9163                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9164                }
9165            }
9166
9167            next_offset += envelope_size;
9168            _next_ordinal_to_read += 1;
9169            if next_offset >= end_offset {
9170                return Ok(());
9171            }
9172
9173            // Decode unknown envelopes for gaps in ordinals.
9174            while _next_ordinal_to_read < 2 {
9175                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9176                _next_ordinal_to_read += 1;
9177                next_offset += envelope_size;
9178            }
9179
9180            let next_out_of_line = decoder.next_out_of_line();
9181            let handles_before = decoder.remaining_handles();
9182            if let Some((inlined, num_bytes, num_handles)) =
9183                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9184            {
9185                let member_inline_size =
9186                    <WlanScanResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9187                if inlined != (member_inline_size <= 4) {
9188                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9189                }
9190                let inner_offset;
9191                let mut inner_depth = depth.clone();
9192                if inlined {
9193                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9194                    inner_offset = next_offset;
9195                } else {
9196                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9197                    inner_depth.increment()?;
9198                }
9199                let val_ref = self.code.get_or_insert_with(|| fidl::new_empty!(WlanScanResult, D));
9200                fidl::decode!(WlanScanResult, D, val_ref, decoder, inner_offset, inner_depth)?;
9201                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9202                {
9203                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9204                }
9205                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9206                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9207                }
9208            }
9209
9210            next_offset += envelope_size;
9211
9212            // Decode the remaining unknown envelopes.
9213            while next_offset < end_offset {
9214                _next_ordinal_to_read += 1;
9215                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9216                next_offset += envelope_size;
9217            }
9218
9219            Ok(())
9220        }
9221    }
9222
9223    impl WlanFullmacImplIfcOnScanResultRequest {
9224        #[inline(always)]
9225        fn max_ordinal_present(&self) -> u64 {
9226            if let Some(_) = self.bss {
9227                return 3;
9228            }
9229            if let Some(_) = self.timestamp_nanos {
9230                return 2;
9231            }
9232            if let Some(_) = self.txn_id {
9233                return 1;
9234            }
9235            0
9236        }
9237    }
9238
9239    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9240        type Borrowed<'a> = &'a Self;
9241        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9242            value
9243        }
9244    }
9245
9246    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9247        type Owned = Self;
9248
9249        #[inline(always)]
9250        fn inline_align(_context: fidl::encoding::Context) -> usize {
9251            8
9252        }
9253
9254        #[inline(always)]
9255        fn inline_size(_context: fidl::encoding::Context) -> usize {
9256            16
9257        }
9258    }
9259
9260    unsafe impl<D: fidl::encoding::ResourceDialect>
9261        fidl::encoding::Encode<WlanFullmacImplIfcOnScanResultRequest, D>
9262        for &WlanFullmacImplIfcOnScanResultRequest
9263    {
9264        unsafe fn encode(
9265            self,
9266            encoder: &mut fidl::encoding::Encoder<'_, D>,
9267            offset: usize,
9268            mut depth: fidl::encoding::Depth,
9269        ) -> fidl::Result<()> {
9270            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanResultRequest>(offset);
9271            // Vector header
9272            let max_ordinal: u64 = self.max_ordinal_present();
9273            encoder.write_num(max_ordinal, offset);
9274            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9275            // Calling encoder.out_of_line_offset(0) is not allowed.
9276            if max_ordinal == 0 {
9277                return Ok(());
9278            }
9279            depth.increment()?;
9280            let envelope_size = 8;
9281            let bytes_len = max_ordinal as usize * envelope_size;
9282            #[allow(unused_variables)]
9283            let offset = encoder.out_of_line_offset(bytes_len);
9284            let mut _prev_end_offset: usize = 0;
9285            if 1 > max_ordinal {
9286                return Ok(());
9287            }
9288
9289            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9290            // are envelope_size bytes.
9291            let cur_offset: usize = (1 - 1) * envelope_size;
9292
9293            // Zero reserved fields.
9294            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9295
9296            // Safety:
9297            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9298            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9299            //   envelope_size bytes, there is always sufficient room.
9300            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9301                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9302                encoder,
9303                offset + cur_offset,
9304                depth,
9305            )?;
9306
9307            _prev_end_offset = cur_offset + envelope_size;
9308            if 2 > max_ordinal {
9309                return Ok(());
9310            }
9311
9312            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9313            // are envelope_size bytes.
9314            let cur_offset: usize = (2 - 1) * envelope_size;
9315
9316            // Zero reserved fields.
9317            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9318
9319            // Safety:
9320            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9321            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9322            //   envelope_size bytes, there is always sufficient room.
9323            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9324                self.timestamp_nanos.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9325                encoder,
9326                offset + cur_offset,
9327                depth,
9328            )?;
9329
9330            _prev_end_offset = cur_offset + envelope_size;
9331            if 3 > max_ordinal {
9332                return Ok(());
9333            }
9334
9335            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9336            // are envelope_size bytes.
9337            let cur_offset: usize = (3 - 1) * envelope_size;
9338
9339            // Zero reserved fields.
9340            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9341
9342            // Safety:
9343            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9344            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9345            //   envelope_size bytes, there is always sufficient room.
9346            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssDescription, D>(
9347            self.bss.as_ref().map(<fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
9348            encoder, offset + cur_offset, depth
9349        )?;
9350
9351            _prev_end_offset = cur_offset + envelope_size;
9352
9353            Ok(())
9354        }
9355    }
9356
9357    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9358        for WlanFullmacImplIfcOnScanResultRequest
9359    {
9360        #[inline(always)]
9361        fn new_empty() -> Self {
9362            Self::default()
9363        }
9364
9365        unsafe fn decode(
9366            &mut self,
9367            decoder: &mut fidl::encoding::Decoder<'_, D>,
9368            offset: usize,
9369            mut depth: fidl::encoding::Depth,
9370        ) -> fidl::Result<()> {
9371            decoder.debug_check_bounds::<Self>(offset);
9372            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9373                None => return Err(fidl::Error::NotNullable),
9374                Some(len) => len,
9375            };
9376            // Calling decoder.out_of_line_offset(0) is not allowed.
9377            if len == 0 {
9378                return Ok(());
9379            };
9380            depth.increment()?;
9381            let envelope_size = 8;
9382            let bytes_len = len * envelope_size;
9383            let offset = decoder.out_of_line_offset(bytes_len)?;
9384            // Decode the envelope for each type.
9385            let mut _next_ordinal_to_read = 0;
9386            let mut next_offset = offset;
9387            let end_offset = offset + bytes_len;
9388            _next_ordinal_to_read += 1;
9389            if next_offset >= end_offset {
9390                return Ok(());
9391            }
9392
9393            // Decode unknown envelopes for gaps in ordinals.
9394            while _next_ordinal_to_read < 1 {
9395                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9396                _next_ordinal_to_read += 1;
9397                next_offset += envelope_size;
9398            }
9399
9400            let next_out_of_line = decoder.next_out_of_line();
9401            let handles_before = decoder.remaining_handles();
9402            if let Some((inlined, num_bytes, num_handles)) =
9403                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9404            {
9405                let member_inline_size =
9406                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9407                if inlined != (member_inline_size <= 4) {
9408                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9409                }
9410                let inner_offset;
9411                let mut inner_depth = depth.clone();
9412                if inlined {
9413                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9414                    inner_offset = next_offset;
9415                } else {
9416                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9417                    inner_depth.increment()?;
9418                }
9419                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9420                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9421                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9422                {
9423                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9424                }
9425                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9426                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9427                }
9428            }
9429
9430            next_offset += envelope_size;
9431            _next_ordinal_to_read += 1;
9432            if next_offset >= end_offset {
9433                return Ok(());
9434            }
9435
9436            // Decode unknown envelopes for gaps in ordinals.
9437            while _next_ordinal_to_read < 2 {
9438                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9439                _next_ordinal_to_read += 1;
9440                next_offset += envelope_size;
9441            }
9442
9443            let next_out_of_line = decoder.next_out_of_line();
9444            let handles_before = decoder.remaining_handles();
9445            if let Some((inlined, num_bytes, num_handles)) =
9446                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9447            {
9448                let member_inline_size =
9449                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9450                if inlined != (member_inline_size <= 4) {
9451                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9452                }
9453                let inner_offset;
9454                let mut inner_depth = depth.clone();
9455                if inlined {
9456                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9457                    inner_offset = next_offset;
9458                } else {
9459                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9460                    inner_depth.increment()?;
9461                }
9462                let val_ref = self.timestamp_nanos.get_or_insert_with(|| fidl::new_empty!(i64, D));
9463                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9464                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9465                {
9466                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9467                }
9468                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9469                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9470                }
9471            }
9472
9473            next_offset += envelope_size;
9474            _next_ordinal_to_read += 1;
9475            if next_offset >= end_offset {
9476                return Ok(());
9477            }
9478
9479            // Decode unknown envelopes for gaps in ordinals.
9480            while _next_ordinal_to_read < 3 {
9481                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9482                _next_ordinal_to_read += 1;
9483                next_offset += envelope_size;
9484            }
9485
9486            let next_out_of_line = decoder.next_out_of_line();
9487            let handles_before = decoder.remaining_handles();
9488            if let Some((inlined, num_bytes, num_handles)) =
9489                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9490            {
9491                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9492                if inlined != (member_inline_size <= 4) {
9493                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9494                }
9495                let inner_offset;
9496                let mut inner_depth = depth.clone();
9497                if inlined {
9498                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9499                    inner_offset = next_offset;
9500                } else {
9501                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9502                    inner_depth.increment()?;
9503                }
9504                let val_ref = self.bss.get_or_insert_with(|| {
9505                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D)
9506                });
9507                fidl::decode!(
9508                    fidl_fuchsia_wlan_common__common::BssDescription,
9509                    D,
9510                    val_ref,
9511                    decoder,
9512                    inner_offset,
9513                    inner_depth
9514                )?;
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
9526            // Decode the remaining unknown envelopes.
9527            while next_offset < end_offset {
9528                _next_ordinal_to_read += 1;
9529                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9530                next_offset += envelope_size;
9531            }
9532
9533            Ok(())
9534        }
9535    }
9536
9537    impl WlanFullmacImplIfcRoamConfRequest {
9538        #[inline(always)]
9539        fn max_ordinal_present(&self) -> u64 {
9540            if let Some(_) = self.association_ies {
9541                return 6;
9542            }
9543            if let Some(_) = self.association_id {
9544                return 5;
9545            }
9546            if let Some(_) = self.target_bss_authenticated {
9547                return 4;
9548            }
9549            if let Some(_) = self.original_association_maintained {
9550                return 3;
9551            }
9552            if let Some(_) = self.status_code {
9553                return 2;
9554            }
9555            if let Some(_) = self.selected_bssid {
9556                return 1;
9557            }
9558            0
9559        }
9560    }
9561
9562    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamConfRequest {
9563        type Borrowed<'a> = &'a Self;
9564        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9565            value
9566        }
9567    }
9568
9569    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamConfRequest {
9570        type Owned = Self;
9571
9572        #[inline(always)]
9573        fn inline_align(_context: fidl::encoding::Context) -> usize {
9574            8
9575        }
9576
9577        #[inline(always)]
9578        fn inline_size(_context: fidl::encoding::Context) -> usize {
9579            16
9580        }
9581    }
9582
9583    unsafe impl<D: fidl::encoding::ResourceDialect>
9584        fidl::encoding::Encode<WlanFullmacImplIfcRoamConfRequest, D>
9585        for &WlanFullmacImplIfcRoamConfRequest
9586    {
9587        unsafe fn encode(
9588            self,
9589            encoder: &mut fidl::encoding::Encoder<'_, D>,
9590            offset: usize,
9591            mut depth: fidl::encoding::Depth,
9592        ) -> fidl::Result<()> {
9593            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamConfRequest>(offset);
9594            // Vector header
9595            let max_ordinal: u64 = self.max_ordinal_present();
9596            encoder.write_num(max_ordinal, offset);
9597            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9598            // Calling encoder.out_of_line_offset(0) is not allowed.
9599            if max_ordinal == 0 {
9600                return Ok(());
9601            }
9602            depth.increment()?;
9603            let envelope_size = 8;
9604            let bytes_len = max_ordinal as usize * envelope_size;
9605            #[allow(unused_variables)]
9606            let offset = encoder.out_of_line_offset(bytes_len);
9607            let mut _prev_end_offset: usize = 0;
9608            if 1 > max_ordinal {
9609                return Ok(());
9610            }
9611
9612            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9613            // are envelope_size bytes.
9614            let cur_offset: usize = (1 - 1) * envelope_size;
9615
9616            // Zero reserved fields.
9617            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9618
9619            // Safety:
9620            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9621            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9622            //   envelope_size bytes, there is always sufficient room.
9623            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
9624                self.selected_bssid
9625                    .as_ref()
9626                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
9627                encoder,
9628                offset + cur_offset,
9629                depth,
9630            )?;
9631
9632            _prev_end_offset = cur_offset + envelope_size;
9633            if 2 > max_ordinal {
9634                return Ok(());
9635            }
9636
9637            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9638            // are envelope_size bytes.
9639            let cur_offset: usize = (2 - 1) * envelope_size;
9640
9641            // Zero reserved fields.
9642            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9643
9644            // Safety:
9645            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9646            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9647            //   envelope_size bytes, there is always sufficient room.
9648            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
9649            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
9650            encoder, offset + cur_offset, depth
9651        )?;
9652
9653            _prev_end_offset = cur_offset + envelope_size;
9654            if 3 > max_ordinal {
9655                return Ok(());
9656            }
9657
9658            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9659            // are envelope_size bytes.
9660            let cur_offset: usize = (3 - 1) * envelope_size;
9661
9662            // Zero reserved fields.
9663            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9664
9665            // Safety:
9666            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9667            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9668            //   envelope_size bytes, there is always sufficient room.
9669            fidl::encoding::encode_in_envelope_optional::<bool, D>(
9670                self.original_association_maintained
9671                    .as_ref()
9672                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9673                encoder,
9674                offset + cur_offset,
9675                depth,
9676            )?;
9677
9678            _prev_end_offset = cur_offset + envelope_size;
9679            if 4 > max_ordinal {
9680                return Ok(());
9681            }
9682
9683            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9684            // are envelope_size bytes.
9685            let cur_offset: usize = (4 - 1) * envelope_size;
9686
9687            // Zero reserved fields.
9688            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9689
9690            // Safety:
9691            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9692            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9693            //   envelope_size bytes, there is always sufficient room.
9694            fidl::encoding::encode_in_envelope_optional::<bool, D>(
9695                self.target_bss_authenticated
9696                    .as_ref()
9697                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9698                encoder,
9699                offset + cur_offset,
9700                depth,
9701            )?;
9702
9703            _prev_end_offset = cur_offset + envelope_size;
9704            if 5 > max_ordinal {
9705                return Ok(());
9706            }
9707
9708            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9709            // are envelope_size bytes.
9710            let cur_offset: usize = (5 - 1) * envelope_size;
9711
9712            // Zero reserved fields.
9713            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9714
9715            // Safety:
9716            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9717            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9718            //   envelope_size bytes, there is always sufficient room.
9719            fidl::encoding::encode_in_envelope_optional::<u16, D>(
9720                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
9721                encoder,
9722                offset + cur_offset,
9723                depth,
9724            )?;
9725
9726            _prev_end_offset = cur_offset + envelope_size;
9727            if 6 > max_ordinal {
9728                return Ok(());
9729            }
9730
9731            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9732            // are envelope_size bytes.
9733            let cur_offset: usize = (6 - 1) * envelope_size;
9734
9735            // Zero reserved fields.
9736            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9737
9738            // Safety:
9739            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9740            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9741            //   envelope_size bytes, there is always sufficient room.
9742            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
9743            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
9744            encoder, offset + cur_offset, depth
9745        )?;
9746
9747            _prev_end_offset = cur_offset + envelope_size;
9748
9749            Ok(())
9750        }
9751    }
9752
9753    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9754        for WlanFullmacImplIfcRoamConfRequest
9755    {
9756        #[inline(always)]
9757        fn new_empty() -> Self {
9758            Self::default()
9759        }
9760
9761        unsafe fn decode(
9762            &mut self,
9763            decoder: &mut fidl::encoding::Decoder<'_, D>,
9764            offset: usize,
9765            mut depth: fidl::encoding::Depth,
9766        ) -> fidl::Result<()> {
9767            decoder.debug_check_bounds::<Self>(offset);
9768            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9769                None => return Err(fidl::Error::NotNullable),
9770                Some(len) => len,
9771            };
9772            // Calling decoder.out_of_line_offset(0) is not allowed.
9773            if len == 0 {
9774                return Ok(());
9775            };
9776            depth.increment()?;
9777            let envelope_size = 8;
9778            let bytes_len = len * envelope_size;
9779            let offset = decoder.out_of_line_offset(bytes_len)?;
9780            // Decode the envelope for each type.
9781            let mut _next_ordinal_to_read = 0;
9782            let mut next_offset = offset;
9783            let end_offset = offset + bytes_len;
9784            _next_ordinal_to_read += 1;
9785            if next_offset >= end_offset {
9786                return Ok(());
9787            }
9788
9789            // Decode unknown envelopes for gaps in ordinals.
9790            while _next_ordinal_to_read < 1 {
9791                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9792                _next_ordinal_to_read += 1;
9793                next_offset += envelope_size;
9794            }
9795
9796            let next_out_of_line = decoder.next_out_of_line();
9797            let handles_before = decoder.remaining_handles();
9798            if let Some((inlined, num_bytes, num_handles)) =
9799                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9800            {
9801                let member_inline_size =
9802                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
9803                        decoder.context,
9804                    );
9805                if inlined != (member_inline_size <= 4) {
9806                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9807                }
9808                let inner_offset;
9809                let mut inner_depth = depth.clone();
9810                if inlined {
9811                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9812                    inner_offset = next_offset;
9813                } else {
9814                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9815                    inner_depth.increment()?;
9816                }
9817                let val_ref = self
9818                    .selected_bssid
9819                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
9820                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
9821                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9822                {
9823                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9824                }
9825                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9826                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9827                }
9828            }
9829
9830            next_offset += envelope_size;
9831            _next_ordinal_to_read += 1;
9832            if next_offset >= end_offset {
9833                return Ok(());
9834            }
9835
9836            // Decode unknown envelopes for gaps in ordinals.
9837            while _next_ordinal_to_read < 2 {
9838                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9839                _next_ordinal_to_read += 1;
9840                next_offset += envelope_size;
9841            }
9842
9843            let next_out_of_line = decoder.next_out_of_line();
9844            let handles_before = decoder.remaining_handles();
9845            if let Some((inlined, num_bytes, num_handles)) =
9846                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9847            {
9848                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9849                if inlined != (member_inline_size <= 4) {
9850                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9851                }
9852                let inner_offset;
9853                let mut inner_depth = depth.clone();
9854                if inlined {
9855                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9856                    inner_offset = next_offset;
9857                } else {
9858                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9859                    inner_depth.increment()?;
9860                }
9861                let val_ref = self.status_code.get_or_insert_with(|| {
9862                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
9863                });
9864                fidl::decode!(
9865                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
9866                    D,
9867                    val_ref,
9868                    decoder,
9869                    inner_offset,
9870                    inner_depth
9871                )?;
9872                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9873                {
9874                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9875                }
9876                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9877                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9878                }
9879            }
9880
9881            next_offset += envelope_size;
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 < 3 {
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                    <bool 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
9914                    .original_association_maintained
9915                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
9916                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9917                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9918                {
9919                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9920                }
9921                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9922                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9923                }
9924            }
9925
9926            next_offset += envelope_size;
9927            _next_ordinal_to_read += 1;
9928            if next_offset >= end_offset {
9929                return Ok(());
9930            }
9931
9932            // Decode unknown envelopes for gaps in ordinals.
9933            while _next_ordinal_to_read < 4 {
9934                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9935                _next_ordinal_to_read += 1;
9936                next_offset += envelope_size;
9937            }
9938
9939            let next_out_of_line = decoder.next_out_of_line();
9940            let handles_before = decoder.remaining_handles();
9941            if let Some((inlined, num_bytes, num_handles)) =
9942                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9943            {
9944                let member_inline_size =
9945                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9946                if inlined != (member_inline_size <= 4) {
9947                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9948                }
9949                let inner_offset;
9950                let mut inner_depth = depth.clone();
9951                if inlined {
9952                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9953                    inner_offset = next_offset;
9954                } else {
9955                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9956                    inner_depth.increment()?;
9957                }
9958                let val_ref =
9959                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
9960                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9961                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9962                {
9963                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9964                }
9965                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9966                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9967                }
9968            }
9969
9970            next_offset += envelope_size;
9971            _next_ordinal_to_read += 1;
9972            if next_offset >= end_offset {
9973                return Ok(());
9974            }
9975
9976            // Decode unknown envelopes for gaps in ordinals.
9977            while _next_ordinal_to_read < 5 {
9978                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9979                _next_ordinal_to_read += 1;
9980                next_offset += envelope_size;
9981            }
9982
9983            let next_out_of_line = decoder.next_out_of_line();
9984            let handles_before = decoder.remaining_handles();
9985            if let Some((inlined, num_bytes, num_handles)) =
9986                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9987            {
9988                let member_inline_size =
9989                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9990                if inlined != (member_inline_size <= 4) {
9991                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9992                }
9993                let inner_offset;
9994                let mut inner_depth = depth.clone();
9995                if inlined {
9996                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9997                    inner_offset = next_offset;
9998                } else {
9999                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10000                    inner_depth.increment()?;
10001                }
10002                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10003                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10004                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10005                {
10006                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10007                }
10008                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10009                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10010                }
10011            }
10012
10013            next_offset += envelope_size;
10014            _next_ordinal_to_read += 1;
10015            if next_offset >= end_offset {
10016                return Ok(());
10017            }
10018
10019            // Decode unknown envelopes for gaps in ordinals.
10020            while _next_ordinal_to_read < 6 {
10021                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10022                _next_ordinal_to_read += 1;
10023                next_offset += envelope_size;
10024            }
10025
10026            let next_out_of_line = decoder.next_out_of_line();
10027            let handles_before = decoder.remaining_handles();
10028            if let Some((inlined, num_bytes, num_handles)) =
10029                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10030            {
10031                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10032                if inlined != (member_inline_size <= 4) {
10033                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10034                }
10035                let inner_offset;
10036                let mut inner_depth = depth.clone();
10037                if inlined {
10038                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10039                    inner_offset = next_offset;
10040                } else {
10041                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10042                    inner_depth.increment()?;
10043                }
10044                let val_ref = self.association_ies.get_or_insert_with(|| {
10045                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
10046                });
10047                fidl::decode!(
10048                    fidl::encoding::UnboundedVector<u8>,
10049                    D,
10050                    val_ref,
10051                    decoder,
10052                    inner_offset,
10053                    inner_depth
10054                )?;
10055                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10056                {
10057                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10058                }
10059                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10060                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10061                }
10062            }
10063
10064            next_offset += envelope_size;
10065
10066            // Decode the remaining unknown envelopes.
10067            while next_offset < end_offset {
10068                _next_ordinal_to_read += 1;
10069                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10070                next_offset += envelope_size;
10071            }
10072
10073            Ok(())
10074        }
10075    }
10076
10077    impl WlanFullmacImplIfcRoamResultIndRequest {
10078        #[inline(always)]
10079        fn max_ordinal_present(&self) -> u64 {
10080            if let Some(_) = self.association_ies {
10081                return 6;
10082            }
10083            if let Some(_) = self.association_id {
10084                return 5;
10085            }
10086            if let Some(_) = self.target_bss_authenticated {
10087                return 4;
10088            }
10089            if let Some(_) = self.original_association_maintained {
10090                return 3;
10091            }
10092            if let Some(_) = self.status_code {
10093                return 2;
10094            }
10095            if let Some(_) = self.selected_bssid {
10096                return 1;
10097            }
10098            0
10099        }
10100    }
10101
10102    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
10103        type Borrowed<'a> = &'a Self;
10104        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10105            value
10106        }
10107    }
10108
10109    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
10110        type Owned = Self;
10111
10112        #[inline(always)]
10113        fn inline_align(_context: fidl::encoding::Context) -> usize {
10114            8
10115        }
10116
10117        #[inline(always)]
10118        fn inline_size(_context: fidl::encoding::Context) -> usize {
10119            16
10120        }
10121    }
10122
10123    unsafe impl<D: fidl::encoding::ResourceDialect>
10124        fidl::encoding::Encode<WlanFullmacImplIfcRoamResultIndRequest, D>
10125        for &WlanFullmacImplIfcRoamResultIndRequest
10126    {
10127        unsafe fn encode(
10128            self,
10129            encoder: &mut fidl::encoding::Encoder<'_, D>,
10130            offset: usize,
10131            mut depth: fidl::encoding::Depth,
10132        ) -> fidl::Result<()> {
10133            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamResultIndRequest>(offset);
10134            // Vector header
10135            let max_ordinal: u64 = self.max_ordinal_present();
10136            encoder.write_num(max_ordinal, offset);
10137            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10138            // Calling encoder.out_of_line_offset(0) is not allowed.
10139            if max_ordinal == 0 {
10140                return Ok(());
10141            }
10142            depth.increment()?;
10143            let envelope_size = 8;
10144            let bytes_len = max_ordinal as usize * envelope_size;
10145            #[allow(unused_variables)]
10146            let offset = encoder.out_of_line_offset(bytes_len);
10147            let mut _prev_end_offset: usize = 0;
10148            if 1 > max_ordinal {
10149                return Ok(());
10150            }
10151
10152            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10153            // are envelope_size bytes.
10154            let cur_offset: usize = (1 - 1) * envelope_size;
10155
10156            // Zero reserved fields.
10157            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10158
10159            // Safety:
10160            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10161            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10162            //   envelope_size bytes, there is always sufficient room.
10163            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10164                self.selected_bssid
10165                    .as_ref()
10166                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10167                encoder,
10168                offset + cur_offset,
10169                depth,
10170            )?;
10171
10172            _prev_end_offset = cur_offset + envelope_size;
10173            if 2 > max_ordinal {
10174                return Ok(());
10175            }
10176
10177            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10178            // are envelope_size bytes.
10179            let cur_offset: usize = (2 - 1) * envelope_size;
10180
10181            // Zero reserved fields.
10182            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10183
10184            // Safety:
10185            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10186            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10187            //   envelope_size bytes, there is always sufficient room.
10188            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
10189            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
10190            encoder, offset + cur_offset, depth
10191        )?;
10192
10193            _prev_end_offset = cur_offset + envelope_size;
10194            if 3 > max_ordinal {
10195                return Ok(());
10196            }
10197
10198            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10199            // are envelope_size bytes.
10200            let cur_offset: usize = (3 - 1) * envelope_size;
10201
10202            // Zero reserved fields.
10203            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10204
10205            // Safety:
10206            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10207            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10208            //   envelope_size bytes, there is always sufficient room.
10209            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10210                self.original_association_maintained
10211                    .as_ref()
10212                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10213                encoder,
10214                offset + cur_offset,
10215                depth,
10216            )?;
10217
10218            _prev_end_offset = cur_offset + envelope_size;
10219            if 4 > max_ordinal {
10220                return Ok(());
10221            }
10222
10223            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10224            // are envelope_size bytes.
10225            let cur_offset: usize = (4 - 1) * envelope_size;
10226
10227            // Zero reserved fields.
10228            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10229
10230            // Safety:
10231            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10232            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10233            //   envelope_size bytes, there is always sufficient room.
10234            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10235                self.target_bss_authenticated
10236                    .as_ref()
10237                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10238                encoder,
10239                offset + cur_offset,
10240                depth,
10241            )?;
10242
10243            _prev_end_offset = cur_offset + envelope_size;
10244            if 5 > max_ordinal {
10245                return Ok(());
10246            }
10247
10248            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10249            // are envelope_size bytes.
10250            let cur_offset: usize = (5 - 1) * envelope_size;
10251
10252            // Zero reserved fields.
10253            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10254
10255            // Safety:
10256            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10257            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10258            //   envelope_size bytes, there is always sufficient room.
10259            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10260                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10261                encoder,
10262                offset + cur_offset,
10263                depth,
10264            )?;
10265
10266            _prev_end_offset = cur_offset + envelope_size;
10267            if 6 > max_ordinal {
10268                return Ok(());
10269            }
10270
10271            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10272            // are envelope_size bytes.
10273            let cur_offset: usize = (6 - 1) * envelope_size;
10274
10275            // Zero reserved fields.
10276            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10277
10278            // Safety:
10279            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10280            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10281            //   envelope_size bytes, there is always sufficient room.
10282            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10283            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10284            encoder, offset + cur_offset, depth
10285        )?;
10286
10287            _prev_end_offset = cur_offset + envelope_size;
10288
10289            Ok(())
10290        }
10291    }
10292
10293    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10294        for WlanFullmacImplIfcRoamResultIndRequest
10295    {
10296        #[inline(always)]
10297        fn new_empty() -> Self {
10298            Self::default()
10299        }
10300
10301        unsafe fn decode(
10302            &mut self,
10303            decoder: &mut fidl::encoding::Decoder<'_, D>,
10304            offset: usize,
10305            mut depth: fidl::encoding::Depth,
10306        ) -> fidl::Result<()> {
10307            decoder.debug_check_bounds::<Self>(offset);
10308            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10309                None => return Err(fidl::Error::NotNullable),
10310                Some(len) => len,
10311            };
10312            // Calling decoder.out_of_line_offset(0) is not allowed.
10313            if len == 0 {
10314                return Ok(());
10315            };
10316            depth.increment()?;
10317            let envelope_size = 8;
10318            let bytes_len = len * envelope_size;
10319            let offset = decoder.out_of_line_offset(bytes_len)?;
10320            // Decode the envelope for each type.
10321            let mut _next_ordinal_to_read = 0;
10322            let mut next_offset = offset;
10323            let end_offset = offset + bytes_len;
10324            _next_ordinal_to_read += 1;
10325            if next_offset >= end_offset {
10326                return Ok(());
10327            }
10328
10329            // Decode unknown envelopes for gaps in ordinals.
10330            while _next_ordinal_to_read < 1 {
10331                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10332                _next_ordinal_to_read += 1;
10333                next_offset += envelope_size;
10334            }
10335
10336            let next_out_of_line = decoder.next_out_of_line();
10337            let handles_before = decoder.remaining_handles();
10338            if let Some((inlined, num_bytes, num_handles)) =
10339                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10340            {
10341                let member_inline_size =
10342                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10343                        decoder.context,
10344                    );
10345                if inlined != (member_inline_size <= 4) {
10346                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10347                }
10348                let inner_offset;
10349                let mut inner_depth = depth.clone();
10350                if inlined {
10351                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10352                    inner_offset = next_offset;
10353                } else {
10354                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10355                    inner_depth.increment()?;
10356                }
10357                let val_ref = self
10358                    .selected_bssid
10359                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10360                fidl::decode!(fidl::encoding::Array<u8, 6>, 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 < 2 {
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 = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10389                if inlined != (member_inline_size <= 4) {
10390                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10391                }
10392                let inner_offset;
10393                let mut inner_depth = depth.clone();
10394                if inlined {
10395                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10396                    inner_offset = next_offset;
10397                } else {
10398                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10399                    inner_depth.increment()?;
10400                }
10401                let val_ref = self.status_code.get_or_insert_with(|| {
10402                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
10403                });
10404                fidl::decode!(
10405                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10406                    D,
10407                    val_ref,
10408                    decoder,
10409                    inner_offset,
10410                    inner_depth
10411                )?;
10412                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10413                {
10414                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10415                }
10416                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10417                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10418                }
10419            }
10420
10421            next_offset += envelope_size;
10422            _next_ordinal_to_read += 1;
10423            if next_offset >= end_offset {
10424                return Ok(());
10425            }
10426
10427            // Decode unknown envelopes for gaps in ordinals.
10428            while _next_ordinal_to_read < 3 {
10429                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10430                _next_ordinal_to_read += 1;
10431                next_offset += envelope_size;
10432            }
10433
10434            let next_out_of_line = decoder.next_out_of_line();
10435            let handles_before = decoder.remaining_handles();
10436            if let Some((inlined, num_bytes, num_handles)) =
10437                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10438            {
10439                let member_inline_size =
10440                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10441                if inlined != (member_inline_size <= 4) {
10442                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10443                }
10444                let inner_offset;
10445                let mut inner_depth = depth.clone();
10446                if inlined {
10447                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10448                    inner_offset = next_offset;
10449                } else {
10450                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10451                    inner_depth.increment()?;
10452                }
10453                let val_ref = self
10454                    .original_association_maintained
10455                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
10456                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10457                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10458                {
10459                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10460                }
10461                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10462                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10463                }
10464            }
10465
10466            next_offset += envelope_size;
10467            _next_ordinal_to_read += 1;
10468            if next_offset >= end_offset {
10469                return Ok(());
10470            }
10471
10472            // Decode unknown envelopes for gaps in ordinals.
10473            while _next_ordinal_to_read < 4 {
10474                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10475                _next_ordinal_to_read += 1;
10476                next_offset += envelope_size;
10477            }
10478
10479            let next_out_of_line = decoder.next_out_of_line();
10480            let handles_before = decoder.remaining_handles();
10481            if let Some((inlined, num_bytes, num_handles)) =
10482                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10483            {
10484                let member_inline_size =
10485                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10486                if inlined != (member_inline_size <= 4) {
10487                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10488                }
10489                let inner_offset;
10490                let mut inner_depth = depth.clone();
10491                if inlined {
10492                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10493                    inner_offset = next_offset;
10494                } else {
10495                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10496                    inner_depth.increment()?;
10497                }
10498                let val_ref =
10499                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
10500                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10501                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10502                {
10503                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10504                }
10505                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10506                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10507                }
10508            }
10509
10510            next_offset += envelope_size;
10511            _next_ordinal_to_read += 1;
10512            if next_offset >= end_offset {
10513                return Ok(());
10514            }
10515
10516            // Decode unknown envelopes for gaps in ordinals.
10517            while _next_ordinal_to_read < 5 {
10518                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10519                _next_ordinal_to_read += 1;
10520                next_offset += envelope_size;
10521            }
10522
10523            let next_out_of_line = decoder.next_out_of_line();
10524            let handles_before = decoder.remaining_handles();
10525            if let Some((inlined, num_bytes, num_handles)) =
10526                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10527            {
10528                let member_inline_size =
10529                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10530                if inlined != (member_inline_size <= 4) {
10531                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10532                }
10533                let inner_offset;
10534                let mut inner_depth = depth.clone();
10535                if inlined {
10536                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10537                    inner_offset = next_offset;
10538                } else {
10539                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10540                    inner_depth.increment()?;
10541                }
10542                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10543                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10544                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10545                {
10546                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10547                }
10548                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10549                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10550                }
10551            }
10552
10553            next_offset += envelope_size;
10554            _next_ordinal_to_read += 1;
10555            if next_offset >= end_offset {
10556                return Ok(());
10557            }
10558
10559            // Decode unknown envelopes for gaps in ordinals.
10560            while _next_ordinal_to_read < 6 {
10561                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10562                _next_ordinal_to_read += 1;
10563                next_offset += envelope_size;
10564            }
10565
10566            let next_out_of_line = decoder.next_out_of_line();
10567            let handles_before = decoder.remaining_handles();
10568            if let Some((inlined, num_bytes, num_handles)) =
10569                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10570            {
10571                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10572                if inlined != (member_inline_size <= 4) {
10573                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10574                }
10575                let inner_offset;
10576                let mut inner_depth = depth.clone();
10577                if inlined {
10578                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10579                    inner_offset = next_offset;
10580                } else {
10581                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10582                    inner_depth.increment()?;
10583                }
10584                let val_ref = self.association_ies.get_or_insert_with(|| {
10585                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
10586                });
10587                fidl::decode!(
10588                    fidl::encoding::UnboundedVector<u8>,
10589                    D,
10590                    val_ref,
10591                    decoder,
10592                    inner_offset,
10593                    inner_depth
10594                )?;
10595                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10596                {
10597                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10598                }
10599                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10600                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10601                }
10602            }
10603
10604            next_offset += envelope_size;
10605
10606            // Decode the remaining unknown envelopes.
10607            while next_offset < end_offset {
10608                _next_ordinal_to_read += 1;
10609                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10610                next_offset += envelope_size;
10611            }
10612
10613            Ok(())
10614        }
10615    }
10616
10617    impl WlanFullmacImplIfcRoamStartIndRequest {
10618        #[inline(always)]
10619        fn max_ordinal_present(&self) -> u64 {
10620            if let Some(_) = self.original_association_maintained {
10621                return 3;
10622            }
10623            if let Some(_) = self.selected_bss {
10624                return 2;
10625            }
10626            if let Some(_) = self.selected_bssid {
10627                return 1;
10628            }
10629            0
10630        }
10631    }
10632
10633    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
10634        type Borrowed<'a> = &'a Self;
10635        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10636            value
10637        }
10638    }
10639
10640    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
10641        type Owned = Self;
10642
10643        #[inline(always)]
10644        fn inline_align(_context: fidl::encoding::Context) -> usize {
10645            8
10646        }
10647
10648        #[inline(always)]
10649        fn inline_size(_context: fidl::encoding::Context) -> usize {
10650            16
10651        }
10652    }
10653
10654    unsafe impl<D: fidl::encoding::ResourceDialect>
10655        fidl::encoding::Encode<WlanFullmacImplIfcRoamStartIndRequest, D>
10656        for &WlanFullmacImplIfcRoamStartIndRequest
10657    {
10658        unsafe fn encode(
10659            self,
10660            encoder: &mut fidl::encoding::Encoder<'_, D>,
10661            offset: usize,
10662            mut depth: fidl::encoding::Depth,
10663        ) -> fidl::Result<()> {
10664            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamStartIndRequest>(offset);
10665            // Vector header
10666            let max_ordinal: u64 = self.max_ordinal_present();
10667            encoder.write_num(max_ordinal, offset);
10668            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10669            // Calling encoder.out_of_line_offset(0) is not allowed.
10670            if max_ordinal == 0 {
10671                return Ok(());
10672            }
10673            depth.increment()?;
10674            let envelope_size = 8;
10675            let bytes_len = max_ordinal as usize * envelope_size;
10676            #[allow(unused_variables)]
10677            let offset = encoder.out_of_line_offset(bytes_len);
10678            let mut _prev_end_offset: usize = 0;
10679            if 1 > max_ordinal {
10680                return Ok(());
10681            }
10682
10683            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10684            // are envelope_size bytes.
10685            let cur_offset: usize = (1 - 1) * envelope_size;
10686
10687            // Zero reserved fields.
10688            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10689
10690            // Safety:
10691            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10692            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10693            //   envelope_size bytes, there is always sufficient room.
10694            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10695                self.selected_bssid
10696                    .as_ref()
10697                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10698                encoder,
10699                offset + cur_offset,
10700                depth,
10701            )?;
10702
10703            _prev_end_offset = cur_offset + envelope_size;
10704            if 2 > max_ordinal {
10705                return Ok(());
10706            }
10707
10708            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10709            // are envelope_size bytes.
10710            let cur_offset: usize = (2 - 1) * envelope_size;
10711
10712            // Zero reserved fields.
10713            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10714
10715            // Safety:
10716            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10717            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10718            //   envelope_size bytes, there is always sufficient room.
10719            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssDescription, D>(
10720            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
10721            encoder, offset + cur_offset, depth
10722        )?;
10723
10724            _prev_end_offset = cur_offset + envelope_size;
10725            if 3 > max_ordinal {
10726                return Ok(());
10727            }
10728
10729            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10730            // are envelope_size bytes.
10731            let cur_offset: usize = (3 - 1) * envelope_size;
10732
10733            // Zero reserved fields.
10734            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10735
10736            // Safety:
10737            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10738            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10739            //   envelope_size bytes, there is always sufficient room.
10740            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10741                self.original_association_maintained
10742                    .as_ref()
10743                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10744                encoder,
10745                offset + cur_offset,
10746                depth,
10747            )?;
10748
10749            _prev_end_offset = cur_offset + envelope_size;
10750
10751            Ok(())
10752        }
10753    }
10754
10755    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10756        for WlanFullmacImplIfcRoamStartIndRequest
10757    {
10758        #[inline(always)]
10759        fn new_empty() -> Self {
10760            Self::default()
10761        }
10762
10763        unsafe fn decode(
10764            &mut self,
10765            decoder: &mut fidl::encoding::Decoder<'_, D>,
10766            offset: usize,
10767            mut depth: fidl::encoding::Depth,
10768        ) -> fidl::Result<()> {
10769            decoder.debug_check_bounds::<Self>(offset);
10770            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10771                None => return Err(fidl::Error::NotNullable),
10772                Some(len) => len,
10773            };
10774            // Calling decoder.out_of_line_offset(0) is not allowed.
10775            if len == 0 {
10776                return Ok(());
10777            };
10778            depth.increment()?;
10779            let envelope_size = 8;
10780            let bytes_len = len * envelope_size;
10781            let offset = decoder.out_of_line_offset(bytes_len)?;
10782            // Decode the envelope for each type.
10783            let mut _next_ordinal_to_read = 0;
10784            let mut next_offset = offset;
10785            let end_offset = offset + bytes_len;
10786            _next_ordinal_to_read += 1;
10787            if next_offset >= end_offset {
10788                return Ok(());
10789            }
10790
10791            // Decode unknown envelopes for gaps in ordinals.
10792            while _next_ordinal_to_read < 1 {
10793                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10794                _next_ordinal_to_read += 1;
10795                next_offset += envelope_size;
10796            }
10797
10798            let next_out_of_line = decoder.next_out_of_line();
10799            let handles_before = decoder.remaining_handles();
10800            if let Some((inlined, num_bytes, num_handles)) =
10801                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10802            {
10803                let member_inline_size =
10804                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10805                        decoder.context,
10806                    );
10807                if inlined != (member_inline_size <= 4) {
10808                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10809                }
10810                let inner_offset;
10811                let mut inner_depth = depth.clone();
10812                if inlined {
10813                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10814                    inner_offset = next_offset;
10815                } else {
10816                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10817                    inner_depth.increment()?;
10818                }
10819                let val_ref = self
10820                    .selected_bssid
10821                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10822                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
10823                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10824                {
10825                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10826                }
10827                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10828                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10829                }
10830            }
10831
10832            next_offset += envelope_size;
10833            _next_ordinal_to_read += 1;
10834            if next_offset >= end_offset {
10835                return Ok(());
10836            }
10837
10838            // Decode unknown envelopes for gaps in ordinals.
10839            while _next_ordinal_to_read < 2 {
10840                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10841                _next_ordinal_to_read += 1;
10842                next_offset += envelope_size;
10843            }
10844
10845            let next_out_of_line = decoder.next_out_of_line();
10846            let handles_before = decoder.remaining_handles();
10847            if let Some((inlined, num_bytes, num_handles)) =
10848                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10849            {
10850                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10851                if inlined != (member_inline_size <= 4) {
10852                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10853                }
10854                let inner_offset;
10855                let mut inner_depth = depth.clone();
10856                if inlined {
10857                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10858                    inner_offset = next_offset;
10859                } else {
10860                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10861                    inner_depth.increment()?;
10862                }
10863                let val_ref = self.selected_bss.get_or_insert_with(|| {
10864                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D)
10865                });
10866                fidl::decode!(
10867                    fidl_fuchsia_wlan_common__common::BssDescription,
10868                    D,
10869                    val_ref,
10870                    decoder,
10871                    inner_offset,
10872                    inner_depth
10873                )?;
10874                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10875                {
10876                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10877                }
10878                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10879                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10880                }
10881            }
10882
10883            next_offset += envelope_size;
10884            _next_ordinal_to_read += 1;
10885            if next_offset >= end_offset {
10886                return Ok(());
10887            }
10888
10889            // Decode unknown envelopes for gaps in ordinals.
10890            while _next_ordinal_to_read < 3 {
10891                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10892                _next_ordinal_to_read += 1;
10893                next_offset += envelope_size;
10894            }
10895
10896            let next_out_of_line = decoder.next_out_of_line();
10897            let handles_before = decoder.remaining_handles();
10898            if let Some((inlined, num_bytes, num_handles)) =
10899                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10900            {
10901                let member_inline_size =
10902                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10903                if inlined != (member_inline_size <= 4) {
10904                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10905                }
10906                let inner_offset;
10907                let mut inner_depth = depth.clone();
10908                if inlined {
10909                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10910                    inner_offset = next_offset;
10911                } else {
10912                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10913                    inner_depth.increment()?;
10914                }
10915                let val_ref = self
10916                    .original_association_maintained
10917                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
10918                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10919                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10920                {
10921                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10922                }
10923                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10924                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10925                }
10926            }
10927
10928            next_offset += envelope_size;
10929
10930            // Decode the remaining unknown envelopes.
10931            while next_offset < end_offset {
10932                _next_ordinal_to_read += 1;
10933                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10934                next_offset += envelope_size;
10935            }
10936
10937            Ok(())
10938        }
10939    }
10940
10941    impl WlanFullmacImplIfcSaeHandshakeIndRequest {
10942        #[inline(always)]
10943        fn max_ordinal_present(&self) -> u64 {
10944            if let Some(_) = self.peer_sta_address {
10945                return 1;
10946            }
10947            0
10948        }
10949    }
10950
10951    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
10952        type Borrowed<'a> = &'a Self;
10953        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10954            value
10955        }
10956    }
10957
10958    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
10959        type Owned = Self;
10960
10961        #[inline(always)]
10962        fn inline_align(_context: fidl::encoding::Context) -> usize {
10963            8
10964        }
10965
10966        #[inline(always)]
10967        fn inline_size(_context: fidl::encoding::Context) -> usize {
10968            16
10969        }
10970    }
10971
10972    unsafe impl<D: fidl::encoding::ResourceDialect>
10973        fidl::encoding::Encode<WlanFullmacImplIfcSaeHandshakeIndRequest, D>
10974        for &WlanFullmacImplIfcSaeHandshakeIndRequest
10975    {
10976        unsafe fn encode(
10977            self,
10978            encoder: &mut fidl::encoding::Encoder<'_, D>,
10979            offset: usize,
10980            mut depth: fidl::encoding::Depth,
10981        ) -> fidl::Result<()> {
10982            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeHandshakeIndRequest>(offset);
10983            // Vector header
10984            let max_ordinal: u64 = self.max_ordinal_present();
10985            encoder.write_num(max_ordinal, offset);
10986            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10987            // Calling encoder.out_of_line_offset(0) is not allowed.
10988            if max_ordinal == 0 {
10989                return Ok(());
10990            }
10991            depth.increment()?;
10992            let envelope_size = 8;
10993            let bytes_len = max_ordinal as usize * envelope_size;
10994            #[allow(unused_variables)]
10995            let offset = encoder.out_of_line_offset(bytes_len);
10996            let mut _prev_end_offset: usize = 0;
10997            if 1 > max_ordinal {
10998                return Ok(());
10999            }
11000
11001            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11002            // are envelope_size bytes.
11003            let cur_offset: usize = (1 - 1) * envelope_size;
11004
11005            // Zero reserved fields.
11006            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11007
11008            // Safety:
11009            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11010            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11011            //   envelope_size bytes, there is always sufficient room.
11012            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
11013                self.peer_sta_address
11014                    .as_ref()
11015                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
11016                encoder,
11017                offset + cur_offset,
11018                depth,
11019            )?;
11020
11021            _prev_end_offset = cur_offset + envelope_size;
11022
11023            Ok(())
11024        }
11025    }
11026
11027    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11028        for WlanFullmacImplIfcSaeHandshakeIndRequest
11029    {
11030        #[inline(always)]
11031        fn new_empty() -> Self {
11032            Self::default()
11033        }
11034
11035        unsafe fn decode(
11036            &mut self,
11037            decoder: &mut fidl::encoding::Decoder<'_, D>,
11038            offset: usize,
11039            mut depth: fidl::encoding::Depth,
11040        ) -> fidl::Result<()> {
11041            decoder.debug_check_bounds::<Self>(offset);
11042            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11043                None => return Err(fidl::Error::NotNullable),
11044                Some(len) => len,
11045            };
11046            // Calling decoder.out_of_line_offset(0) is not allowed.
11047            if len == 0 {
11048                return Ok(());
11049            };
11050            depth.increment()?;
11051            let envelope_size = 8;
11052            let bytes_len = len * envelope_size;
11053            let offset = decoder.out_of_line_offset(bytes_len)?;
11054            // Decode the envelope for each type.
11055            let mut _next_ordinal_to_read = 0;
11056            let mut next_offset = offset;
11057            let end_offset = offset + bytes_len;
11058            _next_ordinal_to_read += 1;
11059            if next_offset >= end_offset {
11060                return Ok(());
11061            }
11062
11063            // Decode unknown envelopes for gaps in ordinals.
11064            while _next_ordinal_to_read < 1 {
11065                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11066                _next_ordinal_to_read += 1;
11067                next_offset += envelope_size;
11068            }
11069
11070            let next_out_of_line = decoder.next_out_of_line();
11071            let handles_before = decoder.remaining_handles();
11072            if let Some((inlined, num_bytes, num_handles)) =
11073                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11074            {
11075                let member_inline_size =
11076                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11077                        decoder.context,
11078                    );
11079                if inlined != (member_inline_size <= 4) {
11080                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11081                }
11082                let inner_offset;
11083                let mut inner_depth = depth.clone();
11084                if inlined {
11085                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11086                    inner_offset = next_offset;
11087                } else {
11088                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11089                    inner_depth.increment()?;
11090                }
11091                let val_ref = self
11092                    .peer_sta_address
11093                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11094                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
11095                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11096                {
11097                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11098                }
11099                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11100                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11101                }
11102            }
11103
11104            next_offset += envelope_size;
11105
11106            // Decode the remaining unknown envelopes.
11107            while next_offset < end_offset {
11108                _next_ordinal_to_read += 1;
11109                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11110                next_offset += envelope_size;
11111            }
11112
11113            Ok(())
11114        }
11115    }
11116
11117    impl WlanFullmacImplIfcStartConfRequest {
11118        #[inline(always)]
11119        fn max_ordinal_present(&self) -> u64 {
11120            if let Some(_) = self.result_code {
11121                return 1;
11122            }
11123            0
11124        }
11125    }
11126
11127    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStartConfRequest {
11128        type Borrowed<'a> = &'a Self;
11129        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11130            value
11131        }
11132    }
11133
11134    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStartConfRequest {
11135        type Owned = Self;
11136
11137        #[inline(always)]
11138        fn inline_align(_context: fidl::encoding::Context) -> usize {
11139            8
11140        }
11141
11142        #[inline(always)]
11143        fn inline_size(_context: fidl::encoding::Context) -> usize {
11144            16
11145        }
11146    }
11147
11148    unsafe impl<D: fidl::encoding::ResourceDialect>
11149        fidl::encoding::Encode<WlanFullmacImplIfcStartConfRequest, D>
11150        for &WlanFullmacImplIfcStartConfRequest
11151    {
11152        unsafe fn encode(
11153            self,
11154            encoder: &mut fidl::encoding::Encoder<'_, D>,
11155            offset: usize,
11156            mut depth: fidl::encoding::Depth,
11157        ) -> fidl::Result<()> {
11158            encoder.debug_check_bounds::<WlanFullmacImplIfcStartConfRequest>(offset);
11159            // Vector header
11160            let max_ordinal: u64 = self.max_ordinal_present();
11161            encoder.write_num(max_ordinal, offset);
11162            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11163            // Calling encoder.out_of_line_offset(0) is not allowed.
11164            if max_ordinal == 0 {
11165                return Ok(());
11166            }
11167            depth.increment()?;
11168            let envelope_size = 8;
11169            let bytes_len = max_ordinal as usize * envelope_size;
11170            #[allow(unused_variables)]
11171            let offset = encoder.out_of_line_offset(bytes_len);
11172            let mut _prev_end_offset: usize = 0;
11173            if 1 > max_ordinal {
11174                return Ok(());
11175            }
11176
11177            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11178            // are envelope_size bytes.
11179            let cur_offset: usize = (1 - 1) * envelope_size;
11180
11181            // Zero reserved fields.
11182            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11183
11184            // Safety:
11185            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11186            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11187            //   envelope_size bytes, there is always sufficient room.
11188            fidl::encoding::encode_in_envelope_optional::<StartResult, D>(
11189                self.result_code
11190                    .as_ref()
11191                    .map(<StartResult as fidl::encoding::ValueTypeMarker>::borrow),
11192                encoder,
11193                offset + cur_offset,
11194                depth,
11195            )?;
11196
11197            _prev_end_offset = cur_offset + envelope_size;
11198
11199            Ok(())
11200        }
11201    }
11202
11203    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11204        for WlanFullmacImplIfcStartConfRequest
11205    {
11206        #[inline(always)]
11207        fn new_empty() -> Self {
11208            Self::default()
11209        }
11210
11211        unsafe fn decode(
11212            &mut self,
11213            decoder: &mut fidl::encoding::Decoder<'_, D>,
11214            offset: usize,
11215            mut depth: fidl::encoding::Depth,
11216        ) -> fidl::Result<()> {
11217            decoder.debug_check_bounds::<Self>(offset);
11218            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11219                None => return Err(fidl::Error::NotNullable),
11220                Some(len) => len,
11221            };
11222            // Calling decoder.out_of_line_offset(0) is not allowed.
11223            if len == 0 {
11224                return Ok(());
11225            };
11226            depth.increment()?;
11227            let envelope_size = 8;
11228            let bytes_len = len * envelope_size;
11229            let offset = decoder.out_of_line_offset(bytes_len)?;
11230            // Decode the envelope for each type.
11231            let mut _next_ordinal_to_read = 0;
11232            let mut next_offset = offset;
11233            let end_offset = offset + bytes_len;
11234            _next_ordinal_to_read += 1;
11235            if next_offset >= end_offset {
11236                return Ok(());
11237            }
11238
11239            // Decode unknown envelopes for gaps in ordinals.
11240            while _next_ordinal_to_read < 1 {
11241                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11242                _next_ordinal_to_read += 1;
11243                next_offset += envelope_size;
11244            }
11245
11246            let next_out_of_line = decoder.next_out_of_line();
11247            let handles_before = decoder.remaining_handles();
11248            if let Some((inlined, num_bytes, num_handles)) =
11249                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11250            {
11251                let member_inline_size =
11252                    <StartResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11253                if inlined != (member_inline_size <= 4) {
11254                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11255                }
11256                let inner_offset;
11257                let mut inner_depth = depth.clone();
11258                if inlined {
11259                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11260                    inner_offset = next_offset;
11261                } else {
11262                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11263                    inner_depth.increment()?;
11264                }
11265                let val_ref =
11266                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StartResult, D));
11267                fidl::decode!(StartResult, D, val_ref, decoder, inner_offset, inner_depth)?;
11268                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11269                {
11270                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11271                }
11272                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11273                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11274                }
11275            }
11276
11277            next_offset += envelope_size;
11278
11279            // Decode the remaining unknown envelopes.
11280            while next_offset < end_offset {
11281                _next_ordinal_to_read += 1;
11282                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11283                next_offset += envelope_size;
11284            }
11285
11286            Ok(())
11287        }
11288    }
11289
11290    impl WlanFullmacImplIfcStopConfRequest {
11291        #[inline(always)]
11292        fn max_ordinal_present(&self) -> u64 {
11293            if let Some(_) = self.result_code {
11294                return 1;
11295            }
11296            0
11297        }
11298    }
11299
11300    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStopConfRequest {
11301        type Borrowed<'a> = &'a Self;
11302        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11303            value
11304        }
11305    }
11306
11307    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStopConfRequest {
11308        type Owned = Self;
11309
11310        #[inline(always)]
11311        fn inline_align(_context: fidl::encoding::Context) -> usize {
11312            8
11313        }
11314
11315        #[inline(always)]
11316        fn inline_size(_context: fidl::encoding::Context) -> usize {
11317            16
11318        }
11319    }
11320
11321    unsafe impl<D: fidl::encoding::ResourceDialect>
11322        fidl::encoding::Encode<WlanFullmacImplIfcStopConfRequest, D>
11323        for &WlanFullmacImplIfcStopConfRequest
11324    {
11325        unsafe fn encode(
11326            self,
11327            encoder: &mut fidl::encoding::Encoder<'_, D>,
11328            offset: usize,
11329            mut depth: fidl::encoding::Depth,
11330        ) -> fidl::Result<()> {
11331            encoder.debug_check_bounds::<WlanFullmacImplIfcStopConfRequest>(offset);
11332            // Vector header
11333            let max_ordinal: u64 = self.max_ordinal_present();
11334            encoder.write_num(max_ordinal, offset);
11335            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11336            // Calling encoder.out_of_line_offset(0) is not allowed.
11337            if max_ordinal == 0 {
11338                return Ok(());
11339            }
11340            depth.increment()?;
11341            let envelope_size = 8;
11342            let bytes_len = max_ordinal as usize * envelope_size;
11343            #[allow(unused_variables)]
11344            let offset = encoder.out_of_line_offset(bytes_len);
11345            let mut _prev_end_offset: usize = 0;
11346            if 1 > max_ordinal {
11347                return Ok(());
11348            }
11349
11350            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11351            // are envelope_size bytes.
11352            let cur_offset: usize = (1 - 1) * envelope_size;
11353
11354            // Zero reserved fields.
11355            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11356
11357            // Safety:
11358            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11359            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11360            //   envelope_size bytes, there is always sufficient room.
11361            fidl::encoding::encode_in_envelope_optional::<StopResult, D>(
11362                self.result_code
11363                    .as_ref()
11364                    .map(<StopResult as fidl::encoding::ValueTypeMarker>::borrow),
11365                encoder,
11366                offset + cur_offset,
11367                depth,
11368            )?;
11369
11370            _prev_end_offset = cur_offset + envelope_size;
11371
11372            Ok(())
11373        }
11374    }
11375
11376    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11377        for WlanFullmacImplIfcStopConfRequest
11378    {
11379        #[inline(always)]
11380        fn new_empty() -> Self {
11381            Self::default()
11382        }
11383
11384        unsafe fn decode(
11385            &mut self,
11386            decoder: &mut fidl::encoding::Decoder<'_, D>,
11387            offset: usize,
11388            mut depth: fidl::encoding::Depth,
11389        ) -> fidl::Result<()> {
11390            decoder.debug_check_bounds::<Self>(offset);
11391            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11392                None => return Err(fidl::Error::NotNullable),
11393                Some(len) => len,
11394            };
11395            // Calling decoder.out_of_line_offset(0) is not allowed.
11396            if len == 0 {
11397                return Ok(());
11398            };
11399            depth.increment()?;
11400            let envelope_size = 8;
11401            let bytes_len = len * envelope_size;
11402            let offset = decoder.out_of_line_offset(bytes_len)?;
11403            // Decode the envelope for each type.
11404            let mut _next_ordinal_to_read = 0;
11405            let mut next_offset = offset;
11406            let end_offset = offset + bytes_len;
11407            _next_ordinal_to_read += 1;
11408            if next_offset >= end_offset {
11409                return Ok(());
11410            }
11411
11412            // Decode unknown envelopes for gaps in ordinals.
11413            while _next_ordinal_to_read < 1 {
11414                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11415                _next_ordinal_to_read += 1;
11416                next_offset += envelope_size;
11417            }
11418
11419            let next_out_of_line = decoder.next_out_of_line();
11420            let handles_before = decoder.remaining_handles();
11421            if let Some((inlined, num_bytes, num_handles)) =
11422                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11423            {
11424                let member_inline_size =
11425                    <StopResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11426                if inlined != (member_inline_size <= 4) {
11427                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11428                }
11429                let inner_offset;
11430                let mut inner_depth = depth.clone();
11431                if inlined {
11432                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11433                    inner_offset = next_offset;
11434                } else {
11435                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11436                    inner_depth.increment()?;
11437                }
11438                let val_ref =
11439                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StopResult, D));
11440                fidl::decode!(StopResult, D, val_ref, decoder, inner_offset, inner_depth)?;
11441                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11442                {
11443                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11444                }
11445                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11446                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11447                }
11448            }
11449
11450            next_offset += envelope_size;
11451
11452            // Decode the remaining unknown envelopes.
11453            while next_offset < end_offset {
11454                _next_ordinal_to_read += 1;
11455                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11456                next_offset += envelope_size;
11457            }
11458
11459            Ok(())
11460        }
11461    }
11462
11463    impl WlanFullmacImplInstallApfPacketFilterRequest {
11464        #[inline(always)]
11465        fn max_ordinal_present(&self) -> u64 {
11466            if let Some(_) = self.program {
11467                return 1;
11468            }
11469            0
11470        }
11471    }
11472
11473    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplInstallApfPacketFilterRequest {
11474        type Borrowed<'a> = &'a Self;
11475        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11476            value
11477        }
11478    }
11479
11480    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplInstallApfPacketFilterRequest {
11481        type Owned = Self;
11482
11483        #[inline(always)]
11484        fn inline_align(_context: fidl::encoding::Context) -> usize {
11485            8
11486        }
11487
11488        #[inline(always)]
11489        fn inline_size(_context: fidl::encoding::Context) -> usize {
11490            16
11491        }
11492    }
11493
11494    unsafe impl<D: fidl::encoding::ResourceDialect>
11495        fidl::encoding::Encode<WlanFullmacImplInstallApfPacketFilterRequest, D>
11496        for &WlanFullmacImplInstallApfPacketFilterRequest
11497    {
11498        unsafe fn encode(
11499            self,
11500            encoder: &mut fidl::encoding::Encoder<'_, D>,
11501            offset: usize,
11502            mut depth: fidl::encoding::Depth,
11503        ) -> fidl::Result<()> {
11504            encoder.debug_check_bounds::<WlanFullmacImplInstallApfPacketFilterRequest>(offset);
11505            // Vector header
11506            let max_ordinal: u64 = self.max_ordinal_present();
11507            encoder.write_num(max_ordinal, offset);
11508            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11509            // Calling encoder.out_of_line_offset(0) is not allowed.
11510            if max_ordinal == 0 {
11511                return Ok(());
11512            }
11513            depth.increment()?;
11514            let envelope_size = 8;
11515            let bytes_len = max_ordinal as usize * envelope_size;
11516            #[allow(unused_variables)]
11517            let offset = encoder.out_of_line_offset(bytes_len);
11518            let mut _prev_end_offset: usize = 0;
11519            if 1 > max_ordinal {
11520                return Ok(());
11521            }
11522
11523            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11524            // are envelope_size bytes.
11525            let cur_offset: usize = (1 - 1) * envelope_size;
11526
11527            // Zero reserved fields.
11528            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11529
11530            // Safety:
11531            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11532            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11533            //   envelope_size bytes, there is always sufficient room.
11534            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
11535            self.program.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
11536            encoder, offset + cur_offset, depth
11537        )?;
11538
11539            _prev_end_offset = cur_offset + envelope_size;
11540
11541            Ok(())
11542        }
11543    }
11544
11545    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11546        for WlanFullmacImplInstallApfPacketFilterRequest
11547    {
11548        #[inline(always)]
11549        fn new_empty() -> Self {
11550            Self::default()
11551        }
11552
11553        unsafe fn decode(
11554            &mut self,
11555            decoder: &mut fidl::encoding::Decoder<'_, D>,
11556            offset: usize,
11557            mut depth: fidl::encoding::Depth,
11558        ) -> fidl::Result<()> {
11559            decoder.debug_check_bounds::<Self>(offset);
11560            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11561                None => return Err(fidl::Error::NotNullable),
11562                Some(len) => len,
11563            };
11564            // Calling decoder.out_of_line_offset(0) is not allowed.
11565            if len == 0 {
11566                return Ok(());
11567            };
11568            depth.increment()?;
11569            let envelope_size = 8;
11570            let bytes_len = len * envelope_size;
11571            let offset = decoder.out_of_line_offset(bytes_len)?;
11572            // Decode the envelope for each type.
11573            let mut _next_ordinal_to_read = 0;
11574            let mut next_offset = offset;
11575            let end_offset = offset + bytes_len;
11576            _next_ordinal_to_read += 1;
11577            if next_offset >= end_offset {
11578                return Ok(());
11579            }
11580
11581            // Decode unknown envelopes for gaps in ordinals.
11582            while _next_ordinal_to_read < 1 {
11583                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11584                _next_ordinal_to_read += 1;
11585                next_offset += envelope_size;
11586            }
11587
11588            let next_out_of_line = decoder.next_out_of_line();
11589            let handles_before = decoder.remaining_handles();
11590            if let Some((inlined, num_bytes, num_handles)) =
11591                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11592            {
11593                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11594                if inlined != (member_inline_size <= 4) {
11595                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11596                }
11597                let inner_offset;
11598                let mut inner_depth = depth.clone();
11599                if inlined {
11600                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11601                    inner_offset = next_offset;
11602                } else {
11603                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11604                    inner_depth.increment()?;
11605                }
11606                let val_ref = self.program.get_or_insert_with(|| {
11607                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
11608                });
11609                fidl::decode!(
11610                    fidl::encoding::UnboundedVector<u8>,
11611                    D,
11612                    val_ref,
11613                    decoder,
11614                    inner_offset,
11615                    inner_depth
11616                )?;
11617                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11618                {
11619                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11620                }
11621                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11622                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11623                }
11624            }
11625
11626            next_offset += envelope_size;
11627
11628            // Decode the remaining unknown envelopes.
11629            while next_offset < end_offset {
11630                _next_ordinal_to_read += 1;
11631                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11632                next_offset += envelope_size;
11633            }
11634
11635            Ok(())
11636        }
11637    }
11638
11639    impl WlanFullmacImplOnLinkStateChangedRequest {
11640        #[inline(always)]
11641        fn max_ordinal_present(&self) -> u64 {
11642            if let Some(_) = self.online {
11643                return 1;
11644            }
11645            0
11646        }
11647    }
11648
11649    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
11650        type Borrowed<'a> = &'a Self;
11651        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11652            value
11653        }
11654    }
11655
11656    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
11657        type Owned = Self;
11658
11659        #[inline(always)]
11660        fn inline_align(_context: fidl::encoding::Context) -> usize {
11661            8
11662        }
11663
11664        #[inline(always)]
11665        fn inline_size(_context: fidl::encoding::Context) -> usize {
11666            16
11667        }
11668    }
11669
11670    unsafe impl<D: fidl::encoding::ResourceDialect>
11671        fidl::encoding::Encode<WlanFullmacImplOnLinkStateChangedRequest, D>
11672        for &WlanFullmacImplOnLinkStateChangedRequest
11673    {
11674        unsafe fn encode(
11675            self,
11676            encoder: &mut fidl::encoding::Encoder<'_, D>,
11677            offset: usize,
11678            mut depth: fidl::encoding::Depth,
11679        ) -> fidl::Result<()> {
11680            encoder.debug_check_bounds::<WlanFullmacImplOnLinkStateChangedRequest>(offset);
11681            // Vector header
11682            let max_ordinal: u64 = self.max_ordinal_present();
11683            encoder.write_num(max_ordinal, offset);
11684            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11685            // Calling encoder.out_of_line_offset(0) is not allowed.
11686            if max_ordinal == 0 {
11687                return Ok(());
11688            }
11689            depth.increment()?;
11690            let envelope_size = 8;
11691            let bytes_len = max_ordinal as usize * envelope_size;
11692            #[allow(unused_variables)]
11693            let offset = encoder.out_of_line_offset(bytes_len);
11694            let mut _prev_end_offset: usize = 0;
11695            if 1 > max_ordinal {
11696                return Ok(());
11697            }
11698
11699            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11700            // are envelope_size bytes.
11701            let cur_offset: usize = (1 - 1) * envelope_size;
11702
11703            // Zero reserved fields.
11704            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11705
11706            // Safety:
11707            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11708            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11709            //   envelope_size bytes, there is always sufficient room.
11710            fidl::encoding::encode_in_envelope_optional::<bool, D>(
11711                self.online.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
11712                encoder,
11713                offset + cur_offset,
11714                depth,
11715            )?;
11716
11717            _prev_end_offset = cur_offset + envelope_size;
11718
11719            Ok(())
11720        }
11721    }
11722
11723    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11724        for WlanFullmacImplOnLinkStateChangedRequest
11725    {
11726        #[inline(always)]
11727        fn new_empty() -> Self {
11728            Self::default()
11729        }
11730
11731        unsafe fn decode(
11732            &mut self,
11733            decoder: &mut fidl::encoding::Decoder<'_, D>,
11734            offset: usize,
11735            mut depth: fidl::encoding::Depth,
11736        ) -> fidl::Result<()> {
11737            decoder.debug_check_bounds::<Self>(offset);
11738            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11739                None => return Err(fidl::Error::NotNullable),
11740                Some(len) => len,
11741            };
11742            // Calling decoder.out_of_line_offset(0) is not allowed.
11743            if len == 0 {
11744                return Ok(());
11745            };
11746            depth.increment()?;
11747            let envelope_size = 8;
11748            let bytes_len = len * envelope_size;
11749            let offset = decoder.out_of_line_offset(bytes_len)?;
11750            // Decode the envelope for each type.
11751            let mut _next_ordinal_to_read = 0;
11752            let mut next_offset = offset;
11753            let end_offset = offset + bytes_len;
11754            _next_ordinal_to_read += 1;
11755            if next_offset >= end_offset {
11756                return Ok(());
11757            }
11758
11759            // Decode unknown envelopes for gaps in ordinals.
11760            while _next_ordinal_to_read < 1 {
11761                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11762                _next_ordinal_to_read += 1;
11763                next_offset += envelope_size;
11764            }
11765
11766            let next_out_of_line = decoder.next_out_of_line();
11767            let handles_before = decoder.remaining_handles();
11768            if let Some((inlined, num_bytes, num_handles)) =
11769                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11770            {
11771                let member_inline_size =
11772                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11773                if inlined != (member_inline_size <= 4) {
11774                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11775                }
11776                let inner_offset;
11777                let mut inner_depth = depth.clone();
11778                if inlined {
11779                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11780                    inner_offset = next_offset;
11781                } else {
11782                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11783                    inner_depth.increment()?;
11784                }
11785                let val_ref = self.online.get_or_insert_with(|| fidl::new_empty!(bool, D));
11786                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11787                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11788                {
11789                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11790                }
11791                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11792                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11793                }
11794            }
11795
11796            next_offset += envelope_size;
11797
11798            // Decode the remaining unknown envelopes.
11799            while next_offset < end_offset {
11800                _next_ordinal_to_read += 1;
11801                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11802                next_offset += envelope_size;
11803            }
11804
11805            Ok(())
11806        }
11807    }
11808
11809    impl WlanFullmacImplReconnectRequest {
11810        #[inline(always)]
11811        fn max_ordinal_present(&self) -> u64 {
11812            if let Some(_) = self.peer_sta_address {
11813                return 1;
11814            }
11815            0
11816        }
11817    }
11818
11819    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplReconnectRequest {
11820        type Borrowed<'a> = &'a Self;
11821        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11822            value
11823        }
11824    }
11825
11826    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplReconnectRequest {
11827        type Owned = Self;
11828
11829        #[inline(always)]
11830        fn inline_align(_context: fidl::encoding::Context) -> usize {
11831            8
11832        }
11833
11834        #[inline(always)]
11835        fn inline_size(_context: fidl::encoding::Context) -> usize {
11836            16
11837        }
11838    }
11839
11840    unsafe impl<D: fidl::encoding::ResourceDialect>
11841        fidl::encoding::Encode<WlanFullmacImplReconnectRequest, D>
11842        for &WlanFullmacImplReconnectRequest
11843    {
11844        unsafe fn encode(
11845            self,
11846            encoder: &mut fidl::encoding::Encoder<'_, D>,
11847            offset: usize,
11848            mut depth: fidl::encoding::Depth,
11849        ) -> fidl::Result<()> {
11850            encoder.debug_check_bounds::<WlanFullmacImplReconnectRequest>(offset);
11851            // Vector header
11852            let max_ordinal: u64 = self.max_ordinal_present();
11853            encoder.write_num(max_ordinal, offset);
11854            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11855            // Calling encoder.out_of_line_offset(0) is not allowed.
11856            if max_ordinal == 0 {
11857                return Ok(());
11858            }
11859            depth.increment()?;
11860            let envelope_size = 8;
11861            let bytes_len = max_ordinal as usize * envelope_size;
11862            #[allow(unused_variables)]
11863            let offset = encoder.out_of_line_offset(bytes_len);
11864            let mut _prev_end_offset: usize = 0;
11865            if 1 > max_ordinal {
11866                return Ok(());
11867            }
11868
11869            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11870            // are envelope_size bytes.
11871            let cur_offset: usize = (1 - 1) * envelope_size;
11872
11873            // Zero reserved fields.
11874            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11875
11876            // Safety:
11877            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11878            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11879            //   envelope_size bytes, there is always sufficient room.
11880            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
11881                self.peer_sta_address
11882                    .as_ref()
11883                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
11884                encoder,
11885                offset + cur_offset,
11886                depth,
11887            )?;
11888
11889            _prev_end_offset = cur_offset + envelope_size;
11890
11891            Ok(())
11892        }
11893    }
11894
11895    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11896        for WlanFullmacImplReconnectRequest
11897    {
11898        #[inline(always)]
11899        fn new_empty() -> Self {
11900            Self::default()
11901        }
11902
11903        unsafe fn decode(
11904            &mut self,
11905            decoder: &mut fidl::encoding::Decoder<'_, D>,
11906            offset: usize,
11907            mut depth: fidl::encoding::Depth,
11908        ) -> fidl::Result<()> {
11909            decoder.debug_check_bounds::<Self>(offset);
11910            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11911                None => return Err(fidl::Error::NotNullable),
11912                Some(len) => len,
11913            };
11914            // Calling decoder.out_of_line_offset(0) is not allowed.
11915            if len == 0 {
11916                return Ok(());
11917            };
11918            depth.increment()?;
11919            let envelope_size = 8;
11920            let bytes_len = len * envelope_size;
11921            let offset = decoder.out_of_line_offset(bytes_len)?;
11922            // Decode the envelope for each type.
11923            let mut _next_ordinal_to_read = 0;
11924            let mut next_offset = offset;
11925            let end_offset = offset + bytes_len;
11926            _next_ordinal_to_read += 1;
11927            if next_offset >= end_offset {
11928                return Ok(());
11929            }
11930
11931            // Decode unknown envelopes for gaps in ordinals.
11932            while _next_ordinal_to_read < 1 {
11933                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11934                _next_ordinal_to_read += 1;
11935                next_offset += envelope_size;
11936            }
11937
11938            let next_out_of_line = decoder.next_out_of_line();
11939            let handles_before = decoder.remaining_handles();
11940            if let Some((inlined, num_bytes, num_handles)) =
11941                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11942            {
11943                let member_inline_size =
11944                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11945                        decoder.context,
11946                    );
11947                if inlined != (member_inline_size <= 4) {
11948                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11949                }
11950                let inner_offset;
11951                let mut inner_depth = depth.clone();
11952                if inlined {
11953                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11954                    inner_offset = next_offset;
11955                } else {
11956                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11957                    inner_depth.increment()?;
11958                }
11959                let val_ref = self
11960                    .peer_sta_address
11961                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11962                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
11963                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11964                {
11965                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11966                }
11967                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11968                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11969                }
11970            }
11971
11972            next_offset += envelope_size;
11973
11974            // Decode the remaining unknown envelopes.
11975            while next_offset < end_offset {
11976                _next_ordinal_to_read += 1;
11977                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11978                next_offset += envelope_size;
11979            }
11980
11981            Ok(())
11982        }
11983    }
11984
11985    impl WlanFullmacImplRoamRequest {
11986        #[inline(always)]
11987        fn max_ordinal_present(&self) -> u64 {
11988            if let Some(_) = self.selected_bss {
11989                return 1;
11990            }
11991            0
11992        }
11993    }
11994
11995    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplRoamRequest {
11996        type Borrowed<'a> = &'a Self;
11997        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11998            value
11999        }
12000    }
12001
12002    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplRoamRequest {
12003        type Owned = Self;
12004
12005        #[inline(always)]
12006        fn inline_align(_context: fidl::encoding::Context) -> usize {
12007            8
12008        }
12009
12010        #[inline(always)]
12011        fn inline_size(_context: fidl::encoding::Context) -> usize {
12012            16
12013        }
12014    }
12015
12016    unsafe impl<D: fidl::encoding::ResourceDialect>
12017        fidl::encoding::Encode<WlanFullmacImplRoamRequest, D> for &WlanFullmacImplRoamRequest
12018    {
12019        unsafe fn encode(
12020            self,
12021            encoder: &mut fidl::encoding::Encoder<'_, D>,
12022            offset: usize,
12023            mut depth: fidl::encoding::Depth,
12024        ) -> fidl::Result<()> {
12025            encoder.debug_check_bounds::<WlanFullmacImplRoamRequest>(offset);
12026            // Vector header
12027            let max_ordinal: u64 = self.max_ordinal_present();
12028            encoder.write_num(max_ordinal, offset);
12029            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12030            // Calling encoder.out_of_line_offset(0) is not allowed.
12031            if max_ordinal == 0 {
12032                return Ok(());
12033            }
12034            depth.increment()?;
12035            let envelope_size = 8;
12036            let bytes_len = max_ordinal as usize * envelope_size;
12037            #[allow(unused_variables)]
12038            let offset = encoder.out_of_line_offset(bytes_len);
12039            let mut _prev_end_offset: usize = 0;
12040            if 1 > max_ordinal {
12041                return Ok(());
12042            }
12043
12044            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12045            // are envelope_size bytes.
12046            let cur_offset: usize = (1 - 1) * envelope_size;
12047
12048            // Zero reserved fields.
12049            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12050
12051            // Safety:
12052            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12053            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12054            //   envelope_size bytes, there is always sufficient room.
12055            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssDescription, D>(
12056            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
12057            encoder, offset + cur_offset, depth
12058        )?;
12059
12060            _prev_end_offset = cur_offset + envelope_size;
12061
12062            Ok(())
12063        }
12064    }
12065
12066    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12067        for WlanFullmacImplRoamRequest
12068    {
12069        #[inline(always)]
12070        fn new_empty() -> Self {
12071            Self::default()
12072        }
12073
12074        unsafe fn decode(
12075            &mut self,
12076            decoder: &mut fidl::encoding::Decoder<'_, D>,
12077            offset: usize,
12078            mut depth: fidl::encoding::Depth,
12079        ) -> fidl::Result<()> {
12080            decoder.debug_check_bounds::<Self>(offset);
12081            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12082                None => return Err(fidl::Error::NotNullable),
12083                Some(len) => len,
12084            };
12085            // Calling decoder.out_of_line_offset(0) is not allowed.
12086            if len == 0 {
12087                return Ok(());
12088            };
12089            depth.increment()?;
12090            let envelope_size = 8;
12091            let bytes_len = len * envelope_size;
12092            let offset = decoder.out_of_line_offset(bytes_len)?;
12093            // Decode the envelope for each type.
12094            let mut _next_ordinal_to_read = 0;
12095            let mut next_offset = offset;
12096            let end_offset = offset + bytes_len;
12097            _next_ordinal_to_read += 1;
12098            if next_offset >= end_offset {
12099                return Ok(());
12100            }
12101
12102            // Decode unknown envelopes for gaps in ordinals.
12103            while _next_ordinal_to_read < 1 {
12104                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12105                _next_ordinal_to_read += 1;
12106                next_offset += envelope_size;
12107            }
12108
12109            let next_out_of_line = decoder.next_out_of_line();
12110            let handles_before = decoder.remaining_handles();
12111            if let Some((inlined, num_bytes, num_handles)) =
12112                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12113            {
12114                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12115                if inlined != (member_inline_size <= 4) {
12116                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12117                }
12118                let inner_offset;
12119                let mut inner_depth = depth.clone();
12120                if inlined {
12121                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12122                    inner_offset = next_offset;
12123                } else {
12124                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12125                    inner_depth.increment()?;
12126                }
12127                let val_ref = self.selected_bss.get_or_insert_with(|| {
12128                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D)
12129                });
12130                fidl::decode!(
12131                    fidl_fuchsia_wlan_common__common::BssDescription,
12132                    D,
12133                    val_ref,
12134                    decoder,
12135                    inner_offset,
12136                    inner_depth
12137                )?;
12138                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12139                {
12140                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12141                }
12142                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12143                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12144                }
12145            }
12146
12147            next_offset += envelope_size;
12148
12149            // Decode the remaining unknown envelopes.
12150            while next_offset < end_offset {
12151                _next_ordinal_to_read += 1;
12152                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12153                next_offset += envelope_size;
12154            }
12155
12156            Ok(())
12157        }
12158    }
12159
12160    impl WlanFullmacImplSaeHandshakeRespRequest {
12161        #[inline(always)]
12162        fn max_ordinal_present(&self) -> u64 {
12163            if let Some(_) = self.status_code {
12164                return 2;
12165            }
12166            if let Some(_) = self.peer_sta_address {
12167                return 1;
12168            }
12169            0
12170        }
12171    }
12172
12173    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
12174        type Borrowed<'a> = &'a Self;
12175        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12176            value
12177        }
12178    }
12179
12180    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
12181        type Owned = Self;
12182
12183        #[inline(always)]
12184        fn inline_align(_context: fidl::encoding::Context) -> usize {
12185            8
12186        }
12187
12188        #[inline(always)]
12189        fn inline_size(_context: fidl::encoding::Context) -> usize {
12190            16
12191        }
12192    }
12193
12194    unsafe impl<D: fidl::encoding::ResourceDialect>
12195        fidl::encoding::Encode<WlanFullmacImplSaeHandshakeRespRequest, D>
12196        for &WlanFullmacImplSaeHandshakeRespRequest
12197    {
12198        unsafe fn encode(
12199            self,
12200            encoder: &mut fidl::encoding::Encoder<'_, D>,
12201            offset: usize,
12202            mut depth: fidl::encoding::Depth,
12203        ) -> fidl::Result<()> {
12204            encoder.debug_check_bounds::<WlanFullmacImplSaeHandshakeRespRequest>(offset);
12205            // Vector header
12206            let max_ordinal: u64 = self.max_ordinal_present();
12207            encoder.write_num(max_ordinal, offset);
12208            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12209            // Calling encoder.out_of_line_offset(0) is not allowed.
12210            if max_ordinal == 0 {
12211                return Ok(());
12212            }
12213            depth.increment()?;
12214            let envelope_size = 8;
12215            let bytes_len = max_ordinal as usize * envelope_size;
12216            #[allow(unused_variables)]
12217            let offset = encoder.out_of_line_offset(bytes_len);
12218            let mut _prev_end_offset: usize = 0;
12219            if 1 > max_ordinal {
12220                return Ok(());
12221            }
12222
12223            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12224            // are envelope_size bytes.
12225            let cur_offset: usize = (1 - 1) * envelope_size;
12226
12227            // Zero reserved fields.
12228            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12229
12230            // Safety:
12231            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12232            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12233            //   envelope_size bytes, there is always sufficient room.
12234            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
12235                self.peer_sta_address
12236                    .as_ref()
12237                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
12238                encoder,
12239                offset + cur_offset,
12240                depth,
12241            )?;
12242
12243            _prev_end_offset = cur_offset + envelope_size;
12244            if 2 > max_ordinal {
12245                return Ok(());
12246            }
12247
12248            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12249            // are envelope_size bytes.
12250            let cur_offset: usize = (2 - 1) * envelope_size;
12251
12252            // Zero reserved fields.
12253            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12254
12255            // Safety:
12256            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12257            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12258            //   envelope_size bytes, there is always sufficient room.
12259            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
12260            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
12261            encoder, offset + cur_offset, depth
12262        )?;
12263
12264            _prev_end_offset = cur_offset + envelope_size;
12265
12266            Ok(())
12267        }
12268    }
12269
12270    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12271        for WlanFullmacImplSaeHandshakeRespRequest
12272    {
12273        #[inline(always)]
12274        fn new_empty() -> Self {
12275            Self::default()
12276        }
12277
12278        unsafe fn decode(
12279            &mut self,
12280            decoder: &mut fidl::encoding::Decoder<'_, D>,
12281            offset: usize,
12282            mut depth: fidl::encoding::Depth,
12283        ) -> fidl::Result<()> {
12284            decoder.debug_check_bounds::<Self>(offset);
12285            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12286                None => return Err(fidl::Error::NotNullable),
12287                Some(len) => len,
12288            };
12289            // Calling decoder.out_of_line_offset(0) is not allowed.
12290            if len == 0 {
12291                return Ok(());
12292            };
12293            depth.increment()?;
12294            let envelope_size = 8;
12295            let bytes_len = len * envelope_size;
12296            let offset = decoder.out_of_line_offset(bytes_len)?;
12297            // Decode the envelope for each type.
12298            let mut _next_ordinal_to_read = 0;
12299            let mut next_offset = offset;
12300            let end_offset = offset + bytes_len;
12301            _next_ordinal_to_read += 1;
12302            if next_offset >= end_offset {
12303                return Ok(());
12304            }
12305
12306            // Decode unknown envelopes for gaps in ordinals.
12307            while _next_ordinal_to_read < 1 {
12308                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12309                _next_ordinal_to_read += 1;
12310                next_offset += envelope_size;
12311            }
12312
12313            let next_out_of_line = decoder.next_out_of_line();
12314            let handles_before = decoder.remaining_handles();
12315            if let Some((inlined, num_bytes, num_handles)) =
12316                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12317            {
12318                let member_inline_size =
12319                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
12320                        decoder.context,
12321                    );
12322                if inlined != (member_inline_size <= 4) {
12323                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12324                }
12325                let inner_offset;
12326                let mut inner_depth = depth.clone();
12327                if inlined {
12328                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12329                    inner_offset = next_offset;
12330                } else {
12331                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12332                    inner_depth.increment()?;
12333                }
12334                let val_ref = self
12335                    .peer_sta_address
12336                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
12337                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
12338                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12339                {
12340                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12341                }
12342                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12343                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12344                }
12345            }
12346
12347            next_offset += envelope_size;
12348            _next_ordinal_to_read += 1;
12349            if next_offset >= end_offset {
12350                return Ok(());
12351            }
12352
12353            // Decode unknown envelopes for gaps in ordinals.
12354            while _next_ordinal_to_read < 2 {
12355                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12356                _next_ordinal_to_read += 1;
12357                next_offset += envelope_size;
12358            }
12359
12360            let next_out_of_line = decoder.next_out_of_line();
12361            let handles_before = decoder.remaining_handles();
12362            if let Some((inlined, num_bytes, num_handles)) =
12363                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12364            {
12365                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12366                if inlined != (member_inline_size <= 4) {
12367                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12368                }
12369                let inner_offset;
12370                let mut inner_depth = depth.clone();
12371                if inlined {
12372                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12373                    inner_offset = next_offset;
12374                } else {
12375                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12376                    inner_depth.increment()?;
12377                }
12378                let val_ref = self.status_code.get_or_insert_with(|| {
12379                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
12380                });
12381                fidl::decode!(
12382                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
12383                    D,
12384                    val_ref,
12385                    decoder,
12386                    inner_offset,
12387                    inner_depth
12388                )?;
12389                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12390                {
12391                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12392                }
12393                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12394                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12395                }
12396            }
12397
12398            next_offset += envelope_size;
12399
12400            // Decode the remaining unknown envelopes.
12401            while next_offset < end_offset {
12402                _next_ordinal_to_read += 1;
12403                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12404                next_offset += envelope_size;
12405            }
12406
12407            Ok(())
12408        }
12409    }
12410
12411    impl WlanFullmacImplSetApfPacketFilterEnabledRequest {
12412        #[inline(always)]
12413        fn max_ordinal_present(&self) -> u64 {
12414            if let Some(_) = self.enabled {
12415                return 1;
12416            }
12417            0
12418        }
12419    }
12420
12421    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetApfPacketFilterEnabledRequest {
12422        type Borrowed<'a> = &'a Self;
12423        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12424            value
12425        }
12426    }
12427
12428    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetApfPacketFilterEnabledRequest {
12429        type Owned = Self;
12430
12431        #[inline(always)]
12432        fn inline_align(_context: fidl::encoding::Context) -> usize {
12433            8
12434        }
12435
12436        #[inline(always)]
12437        fn inline_size(_context: fidl::encoding::Context) -> usize {
12438            16
12439        }
12440    }
12441
12442    unsafe impl<D: fidl::encoding::ResourceDialect>
12443        fidl::encoding::Encode<WlanFullmacImplSetApfPacketFilterEnabledRequest, D>
12444        for &WlanFullmacImplSetApfPacketFilterEnabledRequest
12445    {
12446        unsafe fn encode(
12447            self,
12448            encoder: &mut fidl::encoding::Encoder<'_, D>,
12449            offset: usize,
12450            mut depth: fidl::encoding::Depth,
12451        ) -> fidl::Result<()> {
12452            encoder.debug_check_bounds::<WlanFullmacImplSetApfPacketFilterEnabledRequest>(offset);
12453            // Vector header
12454            let max_ordinal: u64 = self.max_ordinal_present();
12455            encoder.write_num(max_ordinal, offset);
12456            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12457            // Calling encoder.out_of_line_offset(0) is not allowed.
12458            if max_ordinal == 0 {
12459                return Ok(());
12460            }
12461            depth.increment()?;
12462            let envelope_size = 8;
12463            let bytes_len = max_ordinal as usize * envelope_size;
12464            #[allow(unused_variables)]
12465            let offset = encoder.out_of_line_offset(bytes_len);
12466            let mut _prev_end_offset: usize = 0;
12467            if 1 > max_ordinal {
12468                return Ok(());
12469            }
12470
12471            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12472            // are envelope_size bytes.
12473            let cur_offset: usize = (1 - 1) * envelope_size;
12474
12475            // Zero reserved fields.
12476            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12477
12478            // Safety:
12479            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12480            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12481            //   envelope_size bytes, there is always sufficient room.
12482            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12483                self.enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12484                encoder,
12485                offset + cur_offset,
12486                depth,
12487            )?;
12488
12489            _prev_end_offset = cur_offset + envelope_size;
12490
12491            Ok(())
12492        }
12493    }
12494
12495    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12496        for WlanFullmacImplSetApfPacketFilterEnabledRequest
12497    {
12498        #[inline(always)]
12499        fn new_empty() -> Self {
12500            Self::default()
12501        }
12502
12503        unsafe fn decode(
12504            &mut self,
12505            decoder: &mut fidl::encoding::Decoder<'_, D>,
12506            offset: usize,
12507            mut depth: fidl::encoding::Depth,
12508        ) -> fidl::Result<()> {
12509            decoder.debug_check_bounds::<Self>(offset);
12510            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12511                None => return Err(fidl::Error::NotNullable),
12512                Some(len) => len,
12513            };
12514            // Calling decoder.out_of_line_offset(0) is not allowed.
12515            if len == 0 {
12516                return Ok(());
12517            };
12518            depth.increment()?;
12519            let envelope_size = 8;
12520            let bytes_len = len * envelope_size;
12521            let offset = decoder.out_of_line_offset(bytes_len)?;
12522            // Decode the envelope for each type.
12523            let mut _next_ordinal_to_read = 0;
12524            let mut next_offset = offset;
12525            let end_offset = offset + bytes_len;
12526            _next_ordinal_to_read += 1;
12527            if next_offset >= end_offset {
12528                return Ok(());
12529            }
12530
12531            // Decode unknown envelopes for gaps in ordinals.
12532            while _next_ordinal_to_read < 1 {
12533                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12534                _next_ordinal_to_read += 1;
12535                next_offset += envelope_size;
12536            }
12537
12538            let next_out_of_line = decoder.next_out_of_line();
12539            let handles_before = decoder.remaining_handles();
12540            if let Some((inlined, num_bytes, num_handles)) =
12541                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12542            {
12543                let member_inline_size =
12544                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12545                if inlined != (member_inline_size <= 4) {
12546                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12547                }
12548                let inner_offset;
12549                let mut inner_depth = depth.clone();
12550                if inlined {
12551                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12552                    inner_offset = next_offset;
12553                } else {
12554                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12555                    inner_depth.increment()?;
12556                }
12557                let val_ref = self.enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
12558                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12559                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12560                {
12561                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12562                }
12563                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12564                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12565                }
12566            }
12567
12568            next_offset += envelope_size;
12569
12570            // Decode the remaining unknown envelopes.
12571            while next_offset < end_offset {
12572                _next_ordinal_to_read += 1;
12573                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12574                next_offset += envelope_size;
12575            }
12576
12577            Ok(())
12578        }
12579    }
12580
12581    impl WlanFullmacImplSetKeysRequest {
12582        #[inline(always)]
12583        fn max_ordinal_present(&self) -> u64 {
12584            if let Some(_) = self.key_descriptors {
12585                return 2;
12586            }
12587            if let Some(_) = self.keylist {
12588                return 1;
12589            }
12590            0
12591        }
12592    }
12593
12594    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysRequest {
12595        type Borrowed<'a> = &'a Self;
12596        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12597            value
12598        }
12599    }
12600
12601    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysRequest {
12602        type Owned = Self;
12603
12604        #[inline(always)]
12605        fn inline_align(_context: fidl::encoding::Context) -> usize {
12606            8
12607        }
12608
12609        #[inline(always)]
12610        fn inline_size(_context: fidl::encoding::Context) -> usize {
12611            16
12612        }
12613    }
12614
12615    unsafe impl<D: fidl::encoding::ResourceDialect>
12616        fidl::encoding::Encode<WlanFullmacImplSetKeysRequest, D>
12617        for &WlanFullmacImplSetKeysRequest
12618    {
12619        unsafe fn encode(
12620            self,
12621            encoder: &mut fidl::encoding::Encoder<'_, D>,
12622            offset: usize,
12623            mut depth: fidl::encoding::Depth,
12624        ) -> fidl::Result<()> {
12625            encoder.debug_check_bounds::<WlanFullmacImplSetKeysRequest>(offset);
12626            // Vector header
12627            let max_ordinal: u64 = self.max_ordinal_present();
12628            encoder.write_num(max_ordinal, offset);
12629            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12630            // Calling encoder.out_of_line_offset(0) is not allowed.
12631            if max_ordinal == 0 {
12632                return Ok(());
12633            }
12634            depth.increment()?;
12635            let envelope_size = 8;
12636            let bytes_len = max_ordinal as usize * envelope_size;
12637            #[allow(unused_variables)]
12638            let offset = encoder.out_of_line_offset(bytes_len);
12639            let mut _prev_end_offset: usize = 0;
12640            if 1 > max_ordinal {
12641                return Ok(());
12642            }
12643
12644            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12645            // are envelope_size bytes.
12646            let cur_offset: usize = (1 - 1) * envelope_size;
12647
12648            // Zero reserved fields.
12649            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12650
12651            // Safety:
12652            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12653            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12654            //   envelope_size bytes, there is always sufficient room.
12655            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_common__common::WlanKeyConfig, 4>, D>(
12656            self.keylist.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_common__common::WlanKeyConfig, 4> as fidl::encoding::ValueTypeMarker>::borrow),
12657            encoder, offset + cur_offset, depth
12658        )?;
12659
12660            _prev_end_offset = cur_offset + envelope_size;
12661            if 2 > max_ordinal {
12662                return Ok(());
12663            }
12664
12665            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12666            // are envelope_size bytes.
12667            let cur_offset: usize = (2 - 1) * envelope_size;
12668
12669            // Zero reserved fields.
12670            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12671
12672            // Safety:
12673            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12674            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12675            //   envelope_size bytes, there is always sufficient room.
12676            fidl::encoding::encode_in_envelope_optional::<
12677                fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, 4>,
12678                D,
12679            >(
12680                self.key_descriptors.as_ref().map(
12681                    <fidl::encoding::Vector<
12682                        fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor,
12683                        4,
12684                    > as fidl::encoding::ValueTypeMarker>::borrow,
12685                ),
12686                encoder,
12687                offset + cur_offset,
12688                depth,
12689            )?;
12690
12691            _prev_end_offset = cur_offset + envelope_size;
12692
12693            Ok(())
12694        }
12695    }
12696
12697    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12698        for WlanFullmacImplSetKeysRequest
12699    {
12700        #[inline(always)]
12701        fn new_empty() -> Self {
12702            Self::default()
12703        }
12704
12705        unsafe fn decode(
12706            &mut self,
12707            decoder: &mut fidl::encoding::Decoder<'_, D>,
12708            offset: usize,
12709            mut depth: fidl::encoding::Depth,
12710        ) -> fidl::Result<()> {
12711            decoder.debug_check_bounds::<Self>(offset);
12712            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12713                None => return Err(fidl::Error::NotNullable),
12714                Some(len) => len,
12715            };
12716            // Calling decoder.out_of_line_offset(0) is not allowed.
12717            if len == 0 {
12718                return Ok(());
12719            };
12720            depth.increment()?;
12721            let envelope_size = 8;
12722            let bytes_len = len * envelope_size;
12723            let offset = decoder.out_of_line_offset(bytes_len)?;
12724            // Decode the envelope for each type.
12725            let mut _next_ordinal_to_read = 0;
12726            let mut next_offset = offset;
12727            let end_offset = offset + bytes_len;
12728            _next_ordinal_to_read += 1;
12729            if next_offset >= end_offset {
12730                return Ok(());
12731            }
12732
12733            // Decode unknown envelopes for gaps in ordinals.
12734            while _next_ordinal_to_read < 1 {
12735                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12736                _next_ordinal_to_read += 1;
12737                next_offset += envelope_size;
12738            }
12739
12740            let next_out_of_line = decoder.next_out_of_line();
12741            let handles_before = decoder.remaining_handles();
12742            if let Some((inlined, num_bytes, num_handles)) =
12743                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12744            {
12745                let member_inline_size = <fidl::encoding::Vector<
12746                    fidl_fuchsia_wlan_common__common::WlanKeyConfig,
12747                    4,
12748                > as fidl::encoding::TypeMarker>::inline_size(
12749                    decoder.context
12750                );
12751                if inlined != (member_inline_size <= 4) {
12752                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12753                }
12754                let inner_offset;
12755                let mut inner_depth = depth.clone();
12756                if inlined {
12757                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12758                    inner_offset = next_offset;
12759                } else {
12760                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12761                    inner_depth.increment()?;
12762                }
12763                let val_ref =
12764                self.keylist.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_common__common::WlanKeyConfig, 4>, D));
12765                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_common__common::WlanKeyConfig, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
12766                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12767                {
12768                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12769                }
12770                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12771                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12772                }
12773            }
12774
12775            next_offset += envelope_size;
12776            _next_ordinal_to_read += 1;
12777            if next_offset >= end_offset {
12778                return Ok(());
12779            }
12780
12781            // Decode unknown envelopes for gaps in ordinals.
12782            while _next_ordinal_to_read < 2 {
12783                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12784                _next_ordinal_to_read += 1;
12785                next_offset += envelope_size;
12786            }
12787
12788            let next_out_of_line = decoder.next_out_of_line();
12789            let handles_before = decoder.remaining_handles();
12790            if let Some((inlined, num_bytes, num_handles)) =
12791                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12792            {
12793                let member_inline_size = <fidl::encoding::Vector<
12794                    fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor,
12795                    4,
12796                > as fidl::encoding::TypeMarker>::inline_size(
12797                    decoder.context
12798                );
12799                if inlined != (member_inline_size <= 4) {
12800                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12801                }
12802                let inner_offset;
12803                let mut inner_depth = depth.clone();
12804                if inlined {
12805                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12806                    inner_offset = next_offset;
12807                } else {
12808                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12809                    inner_depth.increment()?;
12810                }
12811                let val_ref =
12812                self.key_descriptors.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, 4>, D));
12813                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
12814                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12815                {
12816                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12817                }
12818                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12819                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12820                }
12821            }
12822
12823            next_offset += envelope_size;
12824
12825            // Decode the remaining unknown envelopes.
12826            while next_offset < end_offset {
12827                _next_ordinal_to_read += 1;
12828                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12829                next_offset += envelope_size;
12830            }
12831
12832            Ok(())
12833        }
12834    }
12835
12836    impl WlanFullmacImplStartBssRequest {
12837        #[inline(always)]
12838        fn max_ordinal_present(&self) -> u64 {
12839            if let Some(_) = self.vendor_ie {
12840                return 7;
12841            }
12842            if let Some(_) = self.rsne {
12843                return 6;
12844            }
12845            if let Some(_) = self.channel {
12846                return 5;
12847            }
12848            if let Some(_) = self.dtim_period {
12849                return 4;
12850            }
12851            if let Some(_) = self.beacon_period {
12852                return 3;
12853            }
12854            if let Some(_) = self.bss_type {
12855                return 2;
12856            }
12857            if let Some(_) = self.ssid {
12858                return 1;
12859            }
12860            0
12861        }
12862    }
12863
12864    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartBssRequest {
12865        type Borrowed<'a> = &'a Self;
12866        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12867            value
12868        }
12869    }
12870
12871    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartBssRequest {
12872        type Owned = Self;
12873
12874        #[inline(always)]
12875        fn inline_align(_context: fidl::encoding::Context) -> usize {
12876            8
12877        }
12878
12879        #[inline(always)]
12880        fn inline_size(_context: fidl::encoding::Context) -> usize {
12881            16
12882        }
12883    }
12884
12885    unsafe impl<D: fidl::encoding::ResourceDialect>
12886        fidl::encoding::Encode<WlanFullmacImplStartBssRequest, D>
12887        for &WlanFullmacImplStartBssRequest
12888    {
12889        unsafe fn encode(
12890            self,
12891            encoder: &mut fidl::encoding::Encoder<'_, D>,
12892            offset: usize,
12893            mut depth: fidl::encoding::Depth,
12894        ) -> fidl::Result<()> {
12895            encoder.debug_check_bounds::<WlanFullmacImplStartBssRequest>(offset);
12896            // Vector header
12897            let max_ordinal: u64 = self.max_ordinal_present();
12898            encoder.write_num(max_ordinal, offset);
12899            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12900            // Calling encoder.out_of_line_offset(0) is not allowed.
12901            if max_ordinal == 0 {
12902                return Ok(());
12903            }
12904            depth.increment()?;
12905            let envelope_size = 8;
12906            let bytes_len = max_ordinal as usize * envelope_size;
12907            #[allow(unused_variables)]
12908            let offset = encoder.out_of_line_offset(bytes_len);
12909            let mut _prev_end_offset: usize = 0;
12910            if 1 > max_ordinal {
12911                return Ok(());
12912            }
12913
12914            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12915            // are envelope_size bytes.
12916            let cur_offset: usize = (1 - 1) * envelope_size;
12917
12918            // Zero reserved fields.
12919            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12920
12921            // Safety:
12922            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12923            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12924            //   envelope_size bytes, there is always sufficient room.
12925            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
12926                self.ssid.as_ref().map(
12927                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
12928                ),
12929                encoder,
12930                offset + cur_offset,
12931                depth,
12932            )?;
12933
12934            _prev_end_offset = cur_offset + envelope_size;
12935            if 2 > max_ordinal {
12936                return Ok(());
12937            }
12938
12939            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12940            // are envelope_size bytes.
12941            let cur_offset: usize = (2 - 1) * envelope_size;
12942
12943            // Zero reserved fields.
12944            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12945
12946            // Safety:
12947            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12948            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12949            //   envelope_size bytes, there is always sufficient room.
12950            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssType, D>(
12951            self.bss_type.as_ref().map(<fidl_fuchsia_wlan_common__common::BssType as fidl::encoding::ValueTypeMarker>::borrow),
12952            encoder, offset + cur_offset, depth
12953        )?;
12954
12955            _prev_end_offset = cur_offset + envelope_size;
12956            if 3 > max_ordinal {
12957                return Ok(());
12958            }
12959
12960            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12961            // are envelope_size bytes.
12962            let cur_offset: usize = (3 - 1) * envelope_size;
12963
12964            // Zero reserved fields.
12965            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12966
12967            // Safety:
12968            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12969            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12970            //   envelope_size bytes, there is always sufficient room.
12971            fidl::encoding::encode_in_envelope_optional::<u32, D>(
12972                self.beacon_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12973                encoder,
12974                offset + cur_offset,
12975                depth,
12976            )?;
12977
12978            _prev_end_offset = cur_offset + envelope_size;
12979            if 4 > max_ordinal {
12980                return Ok(());
12981            }
12982
12983            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12984            // are envelope_size bytes.
12985            let cur_offset: usize = (4 - 1) * envelope_size;
12986
12987            // Zero reserved fields.
12988            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12989
12990            // Safety:
12991            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12992            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12993            //   envelope_size bytes, there is always sufficient room.
12994            fidl::encoding::encode_in_envelope_optional::<u32, D>(
12995                self.dtim_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12996                encoder,
12997                offset + cur_offset,
12998                depth,
12999            )?;
13000
13001            _prev_end_offset = cur_offset + envelope_size;
13002            if 5 > max_ordinal {
13003                return Ok(());
13004            }
13005
13006            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13007            // are envelope_size bytes.
13008            let cur_offset: usize = (5 - 1) * envelope_size;
13009
13010            // Zero reserved fields.
13011            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13012
13013            // Safety:
13014            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13015            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13016            //   envelope_size bytes, there is always sufficient room.
13017            fidl::encoding::encode_in_envelope_optional::<u8, D>(
13018                self.channel.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13019                encoder,
13020                offset + cur_offset,
13021                depth,
13022            )?;
13023
13024            _prev_end_offset = cur_offset + envelope_size;
13025            if 6 > max_ordinal {
13026                return Ok(());
13027            }
13028
13029            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13030            // are envelope_size bytes.
13031            let cur_offset: usize = (6 - 1) * envelope_size;
13032
13033            // Zero reserved fields.
13034            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13035
13036            // Safety:
13037            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13038            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13039            //   envelope_size bytes, there is always sufficient room.
13040            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
13041                self.rsne.as_ref().map(
13042                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
13043                ),
13044                encoder,
13045                offset + cur_offset,
13046                depth,
13047            )?;
13048
13049            _prev_end_offset = cur_offset + envelope_size;
13050            if 7 > max_ordinal {
13051                return Ok(());
13052            }
13053
13054            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13055            // are envelope_size bytes.
13056            let cur_offset: usize = (7 - 1) * envelope_size;
13057
13058            // Zero reserved fields.
13059            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13060
13061            // Safety:
13062            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13063            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13064            //   envelope_size bytes, there is always sufficient room.
13065            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
13066                self.vendor_ie.as_ref().map(
13067                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
13068                ),
13069                encoder,
13070                offset + cur_offset,
13071                depth,
13072            )?;
13073
13074            _prev_end_offset = cur_offset + envelope_size;
13075
13076            Ok(())
13077        }
13078    }
13079
13080    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13081        for WlanFullmacImplStartBssRequest
13082    {
13083        #[inline(always)]
13084        fn new_empty() -> Self {
13085            Self::default()
13086        }
13087
13088        unsafe fn decode(
13089            &mut self,
13090            decoder: &mut fidl::encoding::Decoder<'_, D>,
13091            offset: usize,
13092            mut depth: fidl::encoding::Depth,
13093        ) -> fidl::Result<()> {
13094            decoder.debug_check_bounds::<Self>(offset);
13095            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13096                None => return Err(fidl::Error::NotNullable),
13097                Some(len) => len,
13098            };
13099            // Calling decoder.out_of_line_offset(0) is not allowed.
13100            if len == 0 {
13101                return Ok(());
13102            };
13103            depth.increment()?;
13104            let envelope_size = 8;
13105            let bytes_len = len * envelope_size;
13106            let offset = decoder.out_of_line_offset(bytes_len)?;
13107            // Decode the envelope for each type.
13108            let mut _next_ordinal_to_read = 0;
13109            let mut next_offset = offset;
13110            let end_offset = offset + bytes_len;
13111            _next_ordinal_to_read += 1;
13112            if next_offset >= end_offset {
13113                return Ok(());
13114            }
13115
13116            // Decode unknown envelopes for gaps in ordinals.
13117            while _next_ordinal_to_read < 1 {
13118                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13119                _next_ordinal_to_read += 1;
13120                next_offset += envelope_size;
13121            }
13122
13123            let next_out_of_line = decoder.next_out_of_line();
13124            let handles_before = decoder.remaining_handles();
13125            if let Some((inlined, num_bytes, num_handles)) =
13126                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13127            {
13128                let member_inline_size =
13129                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
13130                        decoder.context,
13131                    );
13132                if inlined != (member_inline_size <= 4) {
13133                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13134                }
13135                let inner_offset;
13136                let mut inner_depth = depth.clone();
13137                if inlined {
13138                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13139                    inner_offset = next_offset;
13140                } else {
13141                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13142                    inner_depth.increment()?;
13143                }
13144                let val_ref = self
13145                    .ssid
13146                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
13147                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
13148                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13149                {
13150                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13151                }
13152                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13153                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13154                }
13155            }
13156
13157            next_offset += envelope_size;
13158            _next_ordinal_to_read += 1;
13159            if next_offset >= end_offset {
13160                return Ok(());
13161            }
13162
13163            // Decode unknown envelopes for gaps in ordinals.
13164            while _next_ordinal_to_read < 2 {
13165                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13166                _next_ordinal_to_read += 1;
13167                next_offset += envelope_size;
13168            }
13169
13170            let next_out_of_line = decoder.next_out_of_line();
13171            let handles_before = decoder.remaining_handles();
13172            if let Some((inlined, num_bytes, num_handles)) =
13173                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13174            {
13175                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13176                if inlined != (member_inline_size <= 4) {
13177                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13178                }
13179                let inner_offset;
13180                let mut inner_depth = depth.clone();
13181                if inlined {
13182                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13183                    inner_offset = next_offset;
13184                } else {
13185                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13186                    inner_depth.increment()?;
13187                }
13188                let val_ref = self.bss_type.get_or_insert_with(|| {
13189                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssType, D)
13190                });
13191                fidl::decode!(
13192                    fidl_fuchsia_wlan_common__common::BssType,
13193                    D,
13194                    val_ref,
13195                    decoder,
13196                    inner_offset,
13197                    inner_depth
13198                )?;
13199                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13200                {
13201                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13202                }
13203                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13204                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13205                }
13206            }
13207
13208            next_offset += envelope_size;
13209            _next_ordinal_to_read += 1;
13210            if next_offset >= end_offset {
13211                return Ok(());
13212            }
13213
13214            // Decode unknown envelopes for gaps in ordinals.
13215            while _next_ordinal_to_read < 3 {
13216                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13217                _next_ordinal_to_read += 1;
13218                next_offset += envelope_size;
13219            }
13220
13221            let next_out_of_line = decoder.next_out_of_line();
13222            let handles_before = decoder.remaining_handles();
13223            if let Some((inlined, num_bytes, num_handles)) =
13224                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13225            {
13226                let member_inline_size =
13227                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13228                if inlined != (member_inline_size <= 4) {
13229                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13230                }
13231                let inner_offset;
13232                let mut inner_depth = depth.clone();
13233                if inlined {
13234                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13235                    inner_offset = next_offset;
13236                } else {
13237                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13238                    inner_depth.increment()?;
13239                }
13240                let val_ref = self.beacon_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
13241                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13242                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13243                {
13244                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13245                }
13246                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13247                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13248                }
13249            }
13250
13251            next_offset += envelope_size;
13252            _next_ordinal_to_read += 1;
13253            if next_offset >= end_offset {
13254                return Ok(());
13255            }
13256
13257            // Decode unknown envelopes for gaps in ordinals.
13258            while _next_ordinal_to_read < 4 {
13259                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13260                _next_ordinal_to_read += 1;
13261                next_offset += envelope_size;
13262            }
13263
13264            let next_out_of_line = decoder.next_out_of_line();
13265            let handles_before = decoder.remaining_handles();
13266            if let Some((inlined, num_bytes, num_handles)) =
13267                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13268            {
13269                let member_inline_size =
13270                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13271                if inlined != (member_inline_size <= 4) {
13272                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13273                }
13274                let inner_offset;
13275                let mut inner_depth = depth.clone();
13276                if inlined {
13277                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13278                    inner_offset = next_offset;
13279                } else {
13280                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13281                    inner_depth.increment()?;
13282                }
13283                let val_ref = self.dtim_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
13284                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13285                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13286                {
13287                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13288                }
13289                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13290                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13291                }
13292            }
13293
13294            next_offset += envelope_size;
13295            _next_ordinal_to_read += 1;
13296            if next_offset >= end_offset {
13297                return Ok(());
13298            }
13299
13300            // Decode unknown envelopes for gaps in ordinals.
13301            while _next_ordinal_to_read < 5 {
13302                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13303                _next_ordinal_to_read += 1;
13304                next_offset += envelope_size;
13305            }
13306
13307            let next_out_of_line = decoder.next_out_of_line();
13308            let handles_before = decoder.remaining_handles();
13309            if let Some((inlined, num_bytes, num_handles)) =
13310                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13311            {
13312                let member_inline_size =
13313                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13314                if inlined != (member_inline_size <= 4) {
13315                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13316                }
13317                let inner_offset;
13318                let mut inner_depth = depth.clone();
13319                if inlined {
13320                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13321                    inner_offset = next_offset;
13322                } else {
13323                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13324                    inner_depth.increment()?;
13325                }
13326                let val_ref = self.channel.get_or_insert_with(|| fidl::new_empty!(u8, D));
13327                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
13328                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13329                {
13330                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13331                }
13332                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13333                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13334                }
13335            }
13336
13337            next_offset += envelope_size;
13338            _next_ordinal_to_read += 1;
13339            if next_offset >= end_offset {
13340                return Ok(());
13341            }
13342
13343            // Decode unknown envelopes for gaps in ordinals.
13344            while _next_ordinal_to_read < 6 {
13345                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13346                _next_ordinal_to_read += 1;
13347                next_offset += envelope_size;
13348            }
13349
13350            let next_out_of_line = decoder.next_out_of_line();
13351            let handles_before = decoder.remaining_handles();
13352            if let Some((inlined, num_bytes, num_handles)) =
13353                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13354            {
13355                let member_inline_size =
13356                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
13357                        decoder.context,
13358                    );
13359                if inlined != (member_inline_size <= 4) {
13360                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13361                }
13362                let inner_offset;
13363                let mut inner_depth = depth.clone();
13364                if inlined {
13365                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13366                    inner_offset = next_offset;
13367                } else {
13368                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13369                    inner_depth.increment()?;
13370                }
13371                let val_ref = self
13372                    .rsne
13373                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
13374                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
13375                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13376                {
13377                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13378                }
13379                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13380                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13381                }
13382            }
13383
13384            next_offset += envelope_size;
13385            _next_ordinal_to_read += 1;
13386            if next_offset >= end_offset {
13387                return Ok(());
13388            }
13389
13390            // Decode unknown envelopes for gaps in ordinals.
13391            while _next_ordinal_to_read < 7 {
13392                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13393                _next_ordinal_to_read += 1;
13394                next_offset += envelope_size;
13395            }
13396
13397            let next_out_of_line = decoder.next_out_of_line();
13398            let handles_before = decoder.remaining_handles();
13399            if let Some((inlined, num_bytes, num_handles)) =
13400                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13401            {
13402                let member_inline_size =
13403                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
13404                        decoder.context,
13405                    );
13406                if inlined != (member_inline_size <= 4) {
13407                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13408                }
13409                let inner_offset;
13410                let mut inner_depth = depth.clone();
13411                if inlined {
13412                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13413                    inner_offset = next_offset;
13414                } else {
13415                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13416                    inner_depth.increment()?;
13417                }
13418                let val_ref = self
13419                    .vendor_ie
13420                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
13421                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
13422                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13423                {
13424                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13425                }
13426                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13427                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13428                }
13429            }
13430
13431            next_offset += envelope_size;
13432
13433            // Decode the remaining unknown envelopes.
13434            while next_offset < end_offset {
13435                _next_ordinal_to_read += 1;
13436                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13437                next_offset += envelope_size;
13438            }
13439
13440            Ok(())
13441        }
13442    }
13443
13444    impl WlanFullmacImplStartScanRequest {
13445        #[inline(always)]
13446        fn max_ordinal_present(&self) -> u64 {
13447            if let Some(_) = self.max_channel_time {
13448                return 6;
13449            }
13450            if let Some(_) = self.min_channel_time {
13451                return 5;
13452            }
13453            if let Some(_) = self.ssids {
13454                return 4;
13455            }
13456            if let Some(_) = self.channels {
13457                return 3;
13458            }
13459            if let Some(_) = self.scan_type {
13460                return 2;
13461            }
13462            if let Some(_) = self.txn_id {
13463                return 1;
13464            }
13465            0
13466        }
13467    }
13468
13469    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartScanRequest {
13470        type Borrowed<'a> = &'a Self;
13471        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13472            value
13473        }
13474    }
13475
13476    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartScanRequest {
13477        type Owned = Self;
13478
13479        #[inline(always)]
13480        fn inline_align(_context: fidl::encoding::Context) -> usize {
13481            8
13482        }
13483
13484        #[inline(always)]
13485        fn inline_size(_context: fidl::encoding::Context) -> usize {
13486            16
13487        }
13488    }
13489
13490    unsafe impl<D: fidl::encoding::ResourceDialect>
13491        fidl::encoding::Encode<WlanFullmacImplStartScanRequest, D>
13492        for &WlanFullmacImplStartScanRequest
13493    {
13494        unsafe fn encode(
13495            self,
13496            encoder: &mut fidl::encoding::Encoder<'_, D>,
13497            offset: usize,
13498            mut depth: fidl::encoding::Depth,
13499        ) -> fidl::Result<()> {
13500            encoder.debug_check_bounds::<WlanFullmacImplStartScanRequest>(offset);
13501            // Vector header
13502            let max_ordinal: u64 = self.max_ordinal_present();
13503            encoder.write_num(max_ordinal, offset);
13504            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13505            // Calling encoder.out_of_line_offset(0) is not allowed.
13506            if max_ordinal == 0 {
13507                return Ok(());
13508            }
13509            depth.increment()?;
13510            let envelope_size = 8;
13511            let bytes_len = max_ordinal as usize * envelope_size;
13512            #[allow(unused_variables)]
13513            let offset = encoder.out_of_line_offset(bytes_len);
13514            let mut _prev_end_offset: usize = 0;
13515            if 1 > max_ordinal {
13516                return Ok(());
13517            }
13518
13519            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13520            // are envelope_size bytes.
13521            let cur_offset: usize = (1 - 1) * envelope_size;
13522
13523            // Zero reserved fields.
13524            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13525
13526            // Safety:
13527            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13528            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13529            //   envelope_size bytes, there is always sufficient room.
13530            fidl::encoding::encode_in_envelope_optional::<u64, D>(
13531                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
13532                encoder,
13533                offset + cur_offset,
13534                depth,
13535            )?;
13536
13537            _prev_end_offset = cur_offset + envelope_size;
13538            if 2 > max_ordinal {
13539                return Ok(());
13540            }
13541
13542            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13543            // are envelope_size bytes.
13544            let cur_offset: usize = (2 - 1) * envelope_size;
13545
13546            // Zero reserved fields.
13547            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13548
13549            // Safety:
13550            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13551            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13552            //   envelope_size bytes, there is always sufficient room.
13553            fidl::encoding::encode_in_envelope_optional::<WlanScanType, D>(
13554                self.scan_type
13555                    .as_ref()
13556                    .map(<WlanScanType as fidl::encoding::ValueTypeMarker>::borrow),
13557                encoder,
13558                offset + cur_offset,
13559                depth,
13560            )?;
13561
13562            _prev_end_offset = cur_offset + envelope_size;
13563            if 3 > max_ordinal {
13564                return Ok(());
13565            }
13566
13567            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13568            // are envelope_size bytes.
13569            let cur_offset: usize = (3 - 1) * envelope_size;
13570
13571            // Zero reserved fields.
13572            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13573
13574            // Safety:
13575            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13576            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13577            //   envelope_size bytes, there is always sufficient room.
13578            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 256>, D>(
13579                self.channels.as_ref().map(
13580                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow,
13581                ),
13582                encoder,
13583                offset + cur_offset,
13584                depth,
13585            )?;
13586
13587            _prev_end_offset = cur_offset + envelope_size;
13588            if 4 > max_ordinal {
13589                return Ok(());
13590            }
13591
13592            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13593            // are envelope_size bytes.
13594            let cur_offset: usize = (4 - 1) * envelope_size;
13595
13596            // Zero reserved fields.
13597            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13598
13599            // Safety:
13600            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13601            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13602            //   envelope_size bytes, there is always sufficient room.
13603            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>(
13604            self.ssids.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow),
13605            encoder, offset + cur_offset, depth
13606        )?;
13607
13608            _prev_end_offset = cur_offset + envelope_size;
13609            if 5 > max_ordinal {
13610                return Ok(());
13611            }
13612
13613            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13614            // are envelope_size bytes.
13615            let cur_offset: usize = (5 - 1) * envelope_size;
13616
13617            // Zero reserved fields.
13618            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13619
13620            // Safety:
13621            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13622            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13623            //   envelope_size bytes, there is always sufficient room.
13624            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13625                self.min_channel_time
13626                    .as_ref()
13627                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13628                encoder,
13629                offset + cur_offset,
13630                depth,
13631            )?;
13632
13633            _prev_end_offset = cur_offset + envelope_size;
13634            if 6 > max_ordinal {
13635                return Ok(());
13636            }
13637
13638            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13639            // are envelope_size bytes.
13640            let cur_offset: usize = (6 - 1) * envelope_size;
13641
13642            // Zero reserved fields.
13643            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13644
13645            // Safety:
13646            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13647            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13648            //   envelope_size bytes, there is always sufficient room.
13649            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13650                self.max_channel_time
13651                    .as_ref()
13652                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13653                encoder,
13654                offset + cur_offset,
13655                depth,
13656            )?;
13657
13658            _prev_end_offset = cur_offset + envelope_size;
13659
13660            Ok(())
13661        }
13662    }
13663
13664    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13665        for WlanFullmacImplStartScanRequest
13666    {
13667        #[inline(always)]
13668        fn new_empty() -> Self {
13669            Self::default()
13670        }
13671
13672        unsafe fn decode(
13673            &mut self,
13674            decoder: &mut fidl::encoding::Decoder<'_, D>,
13675            offset: usize,
13676            mut depth: fidl::encoding::Depth,
13677        ) -> fidl::Result<()> {
13678            decoder.debug_check_bounds::<Self>(offset);
13679            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13680                None => return Err(fidl::Error::NotNullable),
13681                Some(len) => len,
13682            };
13683            // Calling decoder.out_of_line_offset(0) is not allowed.
13684            if len == 0 {
13685                return Ok(());
13686            };
13687            depth.increment()?;
13688            let envelope_size = 8;
13689            let bytes_len = len * envelope_size;
13690            let offset = decoder.out_of_line_offset(bytes_len)?;
13691            // Decode the envelope for each type.
13692            let mut _next_ordinal_to_read = 0;
13693            let mut next_offset = offset;
13694            let end_offset = offset + bytes_len;
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 < 1 {
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                    <u64 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.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
13727                fidl::decode!(u64, 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 < 2 {
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                    <WlanScanType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13757                if inlined != (member_inline_size <= 4) {
13758                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13759                }
13760                let inner_offset;
13761                let mut inner_depth = depth.clone();
13762                if inlined {
13763                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13764                    inner_offset = next_offset;
13765                } else {
13766                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13767                    inner_depth.increment()?;
13768                }
13769                let val_ref =
13770                    self.scan_type.get_or_insert_with(|| fidl::new_empty!(WlanScanType, D));
13771                fidl::decode!(WlanScanType, D, val_ref, decoder, inner_offset, inner_depth)?;
13772                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13773                {
13774                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13775                }
13776                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13777                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13778                }
13779            }
13780
13781            next_offset += envelope_size;
13782            _next_ordinal_to_read += 1;
13783            if next_offset >= end_offset {
13784                return Ok(());
13785            }
13786
13787            // Decode unknown envelopes for gaps in ordinals.
13788            while _next_ordinal_to_read < 3 {
13789                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13790                _next_ordinal_to_read += 1;
13791                next_offset += envelope_size;
13792            }
13793
13794            let next_out_of_line = decoder.next_out_of_line();
13795            let handles_before = decoder.remaining_handles();
13796            if let Some((inlined, num_bytes, num_handles)) =
13797                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13798            {
13799                let member_inline_size =
13800                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::TypeMarker>::inline_size(
13801                        decoder.context,
13802                    );
13803                if inlined != (member_inline_size <= 4) {
13804                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13805                }
13806                let inner_offset;
13807                let mut inner_depth = depth.clone();
13808                if inlined {
13809                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13810                    inner_offset = next_offset;
13811                } else {
13812                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13813                    inner_depth.increment()?;
13814                }
13815                let val_ref = self
13816                    .channels
13817                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D));
13818                fidl::decode!(fidl::encoding::Vector<u8, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
13819                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13820                {
13821                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13822                }
13823                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13824                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13825                }
13826            }
13827
13828            next_offset += envelope_size;
13829            _next_ordinal_to_read += 1;
13830            if next_offset >= end_offset {
13831                return Ok(());
13832            }
13833
13834            // Decode unknown envelopes for gaps in ordinals.
13835            while _next_ordinal_to_read < 4 {
13836                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13837                _next_ordinal_to_read += 1;
13838                next_offset += envelope_size;
13839            }
13840
13841            let next_out_of_line = decoder.next_out_of_line();
13842            let handles_before = decoder.remaining_handles();
13843            if let Some((inlined, num_bytes, num_handles)) =
13844                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13845            {
13846                let member_inline_size = <fidl::encoding::UnboundedVector<
13847                    fidl::encoding::Vector<u8, 32>,
13848                > as fidl::encoding::TypeMarker>::inline_size(
13849                    decoder.context
13850                );
13851                if inlined != (member_inline_size <= 4) {
13852                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13853                }
13854                let inner_offset;
13855                let mut inner_depth = depth.clone();
13856                if inlined {
13857                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13858                    inner_offset = next_offset;
13859                } else {
13860                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13861                    inner_depth.increment()?;
13862                }
13863                let val_ref = self.ssids.get_or_insert_with(|| {
13864                    fidl::new_empty!(
13865                        fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
13866                        D
13867                    )
13868                });
13869                fidl::decode!(
13870                    fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
13871                    D,
13872                    val_ref,
13873                    decoder,
13874                    inner_offset,
13875                    inner_depth
13876                )?;
13877                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13878                {
13879                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13880                }
13881                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13882                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13883                }
13884            }
13885
13886            next_offset += envelope_size;
13887            _next_ordinal_to_read += 1;
13888            if next_offset >= end_offset {
13889                return Ok(());
13890            }
13891
13892            // Decode unknown envelopes for gaps in ordinals.
13893            while _next_ordinal_to_read < 5 {
13894                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13895                _next_ordinal_to_read += 1;
13896                next_offset += envelope_size;
13897            }
13898
13899            let next_out_of_line = decoder.next_out_of_line();
13900            let handles_before = decoder.remaining_handles();
13901            if let Some((inlined, num_bytes, num_handles)) =
13902                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13903            {
13904                let member_inline_size =
13905                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13906                if inlined != (member_inline_size <= 4) {
13907                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13908                }
13909                let inner_offset;
13910                let mut inner_depth = depth.clone();
13911                if inlined {
13912                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13913                    inner_offset = next_offset;
13914                } else {
13915                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13916                    inner_depth.increment()?;
13917                }
13918                let val_ref = self.min_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
13919                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13920                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13921                {
13922                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13923                }
13924                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13925                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13926                }
13927            }
13928
13929            next_offset += envelope_size;
13930            _next_ordinal_to_read += 1;
13931            if next_offset >= end_offset {
13932                return Ok(());
13933            }
13934
13935            // Decode unknown envelopes for gaps in ordinals.
13936            while _next_ordinal_to_read < 6 {
13937                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13938                _next_ordinal_to_read += 1;
13939                next_offset += envelope_size;
13940            }
13941
13942            let next_out_of_line = decoder.next_out_of_line();
13943            let handles_before = decoder.remaining_handles();
13944            if let Some((inlined, num_bytes, num_handles)) =
13945                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13946            {
13947                let member_inline_size =
13948                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13949                if inlined != (member_inline_size <= 4) {
13950                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13951                }
13952                let inner_offset;
13953                let mut inner_depth = depth.clone();
13954                if inlined {
13955                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13956                    inner_offset = next_offset;
13957                } else {
13958                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13959                    inner_depth.increment()?;
13960                }
13961                let val_ref = self.max_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
13962                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13963                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13964                {
13965                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13966                }
13967                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13968                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13969                }
13970            }
13971
13972            next_offset += envelope_size;
13973
13974            // Decode the remaining unknown envelopes.
13975            while next_offset < end_offset {
13976                _next_ordinal_to_read += 1;
13977                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13978                next_offset += envelope_size;
13979            }
13980
13981            Ok(())
13982        }
13983    }
13984
13985    impl WlanFullmacImplStopBssRequest {
13986        #[inline(always)]
13987        fn max_ordinal_present(&self) -> u64 {
13988            if let Some(_) = self.ssid {
13989                return 1;
13990            }
13991            0
13992        }
13993    }
13994
13995    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStopBssRequest {
13996        type Borrowed<'a> = &'a Self;
13997        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13998            value
13999        }
14000    }
14001
14002    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStopBssRequest {
14003        type Owned = Self;
14004
14005        #[inline(always)]
14006        fn inline_align(_context: fidl::encoding::Context) -> usize {
14007            8
14008        }
14009
14010        #[inline(always)]
14011        fn inline_size(_context: fidl::encoding::Context) -> usize {
14012            16
14013        }
14014    }
14015
14016    unsafe impl<D: fidl::encoding::ResourceDialect>
14017        fidl::encoding::Encode<WlanFullmacImplStopBssRequest, D>
14018        for &WlanFullmacImplStopBssRequest
14019    {
14020        unsafe fn encode(
14021            self,
14022            encoder: &mut fidl::encoding::Encoder<'_, D>,
14023            offset: usize,
14024            mut depth: fidl::encoding::Depth,
14025        ) -> fidl::Result<()> {
14026            encoder.debug_check_bounds::<WlanFullmacImplStopBssRequest>(offset);
14027            // Vector header
14028            let max_ordinal: u64 = self.max_ordinal_present();
14029            encoder.write_num(max_ordinal, offset);
14030            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14031            // Calling encoder.out_of_line_offset(0) is not allowed.
14032            if max_ordinal == 0 {
14033                return Ok(());
14034            }
14035            depth.increment()?;
14036            let envelope_size = 8;
14037            let bytes_len = max_ordinal as usize * envelope_size;
14038            #[allow(unused_variables)]
14039            let offset = encoder.out_of_line_offset(bytes_len);
14040            let mut _prev_end_offset: usize = 0;
14041            if 1 > max_ordinal {
14042                return Ok(());
14043            }
14044
14045            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14046            // are envelope_size bytes.
14047            let cur_offset: usize = (1 - 1) * envelope_size;
14048
14049            // Zero reserved fields.
14050            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14051
14052            // Safety:
14053            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14054            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14055            //   envelope_size bytes, there is always sufficient room.
14056            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
14057                self.ssid.as_ref().map(
14058                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
14059                ),
14060                encoder,
14061                offset + cur_offset,
14062                depth,
14063            )?;
14064
14065            _prev_end_offset = cur_offset + envelope_size;
14066
14067            Ok(())
14068        }
14069    }
14070
14071    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14072        for WlanFullmacImplStopBssRequest
14073    {
14074        #[inline(always)]
14075        fn new_empty() -> Self {
14076            Self::default()
14077        }
14078
14079        unsafe fn decode(
14080            &mut self,
14081            decoder: &mut fidl::encoding::Decoder<'_, D>,
14082            offset: usize,
14083            mut depth: fidl::encoding::Depth,
14084        ) -> fidl::Result<()> {
14085            decoder.debug_check_bounds::<Self>(offset);
14086            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14087                None => return Err(fidl::Error::NotNullable),
14088                Some(len) => len,
14089            };
14090            // Calling decoder.out_of_line_offset(0) is not allowed.
14091            if len == 0 {
14092                return Ok(());
14093            };
14094            depth.increment()?;
14095            let envelope_size = 8;
14096            let bytes_len = len * envelope_size;
14097            let offset = decoder.out_of_line_offset(bytes_len)?;
14098            // Decode the envelope for each type.
14099            let mut _next_ordinal_to_read = 0;
14100            let mut next_offset = offset;
14101            let end_offset = offset + bytes_len;
14102            _next_ordinal_to_read += 1;
14103            if next_offset >= end_offset {
14104                return Ok(());
14105            }
14106
14107            // Decode unknown envelopes for gaps in ordinals.
14108            while _next_ordinal_to_read < 1 {
14109                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14110                _next_ordinal_to_read += 1;
14111                next_offset += envelope_size;
14112            }
14113
14114            let next_out_of_line = decoder.next_out_of_line();
14115            let handles_before = decoder.remaining_handles();
14116            if let Some((inlined, num_bytes, num_handles)) =
14117                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14118            {
14119                let member_inline_size =
14120                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
14121                        decoder.context,
14122                    );
14123                if inlined != (member_inline_size <= 4) {
14124                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14125                }
14126                let inner_offset;
14127                let mut inner_depth = depth.clone();
14128                if inlined {
14129                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14130                    inner_offset = next_offset;
14131                } else {
14132                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14133                    inner_depth.increment()?;
14134                }
14135                let val_ref = self
14136                    .ssid
14137                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
14138                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
14139                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14140                {
14141                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14142                }
14143                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14144                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14145                }
14146            }
14147
14148            next_offset += envelope_size;
14149
14150            // Decode the remaining unknown envelopes.
14151            while next_offset < end_offset {
14152                _next_ordinal_to_read += 1;
14153                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14154                next_offset += envelope_size;
14155            }
14156
14157            Ok(())
14158        }
14159    }
14160
14161    impl WlanFullmacImplGetApfPacketFilterEnabledResponse {
14162        #[inline(always)]
14163        fn max_ordinal_present(&self) -> u64 {
14164            if let Some(_) = self.enabled {
14165                return 1;
14166            }
14167            0
14168        }
14169    }
14170
14171    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetApfPacketFilterEnabledResponse {
14172        type Borrowed<'a> = &'a Self;
14173        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14174            value
14175        }
14176    }
14177
14178    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetApfPacketFilterEnabledResponse {
14179        type Owned = Self;
14180
14181        #[inline(always)]
14182        fn inline_align(_context: fidl::encoding::Context) -> usize {
14183            8
14184        }
14185
14186        #[inline(always)]
14187        fn inline_size(_context: fidl::encoding::Context) -> usize {
14188            16
14189        }
14190    }
14191
14192    unsafe impl<D: fidl::encoding::ResourceDialect>
14193        fidl::encoding::Encode<WlanFullmacImplGetApfPacketFilterEnabledResponse, D>
14194        for &WlanFullmacImplGetApfPacketFilterEnabledResponse
14195    {
14196        unsafe fn encode(
14197            self,
14198            encoder: &mut fidl::encoding::Encoder<'_, D>,
14199            offset: usize,
14200            mut depth: fidl::encoding::Depth,
14201        ) -> fidl::Result<()> {
14202            encoder.debug_check_bounds::<WlanFullmacImplGetApfPacketFilterEnabledResponse>(offset);
14203            // Vector header
14204            let max_ordinal: u64 = self.max_ordinal_present();
14205            encoder.write_num(max_ordinal, offset);
14206            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14207            // Calling encoder.out_of_line_offset(0) is not allowed.
14208            if max_ordinal == 0 {
14209                return Ok(());
14210            }
14211            depth.increment()?;
14212            let envelope_size = 8;
14213            let bytes_len = max_ordinal as usize * envelope_size;
14214            #[allow(unused_variables)]
14215            let offset = encoder.out_of_line_offset(bytes_len);
14216            let mut _prev_end_offset: usize = 0;
14217            if 1 > max_ordinal {
14218                return Ok(());
14219            }
14220
14221            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14222            // are envelope_size bytes.
14223            let cur_offset: usize = (1 - 1) * envelope_size;
14224
14225            // Zero reserved fields.
14226            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14227
14228            // Safety:
14229            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14230            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14231            //   envelope_size bytes, there is always sufficient room.
14232            fidl::encoding::encode_in_envelope_optional::<bool, D>(
14233                self.enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14234                encoder,
14235                offset + cur_offset,
14236                depth,
14237            )?;
14238
14239            _prev_end_offset = cur_offset + envelope_size;
14240
14241            Ok(())
14242        }
14243    }
14244
14245    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14246        for WlanFullmacImplGetApfPacketFilterEnabledResponse
14247    {
14248        #[inline(always)]
14249        fn new_empty() -> Self {
14250            Self::default()
14251        }
14252
14253        unsafe fn decode(
14254            &mut self,
14255            decoder: &mut fidl::encoding::Decoder<'_, D>,
14256            offset: usize,
14257            mut depth: fidl::encoding::Depth,
14258        ) -> fidl::Result<()> {
14259            decoder.debug_check_bounds::<Self>(offset);
14260            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14261                None => return Err(fidl::Error::NotNullable),
14262                Some(len) => len,
14263            };
14264            // Calling decoder.out_of_line_offset(0) is not allowed.
14265            if len == 0 {
14266                return Ok(());
14267            };
14268            depth.increment()?;
14269            let envelope_size = 8;
14270            let bytes_len = len * envelope_size;
14271            let offset = decoder.out_of_line_offset(bytes_len)?;
14272            // Decode the envelope for each type.
14273            let mut _next_ordinal_to_read = 0;
14274            let mut next_offset = offset;
14275            let end_offset = offset + bytes_len;
14276            _next_ordinal_to_read += 1;
14277            if next_offset >= end_offset {
14278                return Ok(());
14279            }
14280
14281            // Decode unknown envelopes for gaps in ordinals.
14282            while _next_ordinal_to_read < 1 {
14283                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14284                _next_ordinal_to_read += 1;
14285                next_offset += envelope_size;
14286            }
14287
14288            let next_out_of_line = decoder.next_out_of_line();
14289            let handles_before = decoder.remaining_handles();
14290            if let Some((inlined, num_bytes, num_handles)) =
14291                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14292            {
14293                let member_inline_size =
14294                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14295                if inlined != (member_inline_size <= 4) {
14296                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14297                }
14298                let inner_offset;
14299                let mut inner_depth = depth.clone();
14300                if inlined {
14301                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14302                    inner_offset = next_offset;
14303                } else {
14304                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14305                    inner_depth.increment()?;
14306                }
14307                let val_ref = self.enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
14308                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14309                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14310                {
14311                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14312                }
14313                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14314                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14315                }
14316            }
14317
14318            next_offset += envelope_size;
14319
14320            // Decode the remaining unknown envelopes.
14321            while next_offset < end_offset {
14322                _next_ordinal_to_read += 1;
14323                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14324                next_offset += envelope_size;
14325            }
14326
14327            Ok(())
14328        }
14329    }
14330
14331    impl WlanFullmacImplQueryApfPacketFilterSupportResponse {
14332        #[inline(always)]
14333        fn max_ordinal_present(&self) -> u64 {
14334            if let Some(_) = self.resp {
14335                return 1;
14336            }
14337            0
14338        }
14339    }
14340
14341    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryApfPacketFilterSupportResponse {
14342        type Borrowed<'a> = &'a Self;
14343        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14344            value
14345        }
14346    }
14347
14348    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryApfPacketFilterSupportResponse {
14349        type Owned = Self;
14350
14351        #[inline(always)]
14352        fn inline_align(_context: fidl::encoding::Context) -> usize {
14353            8
14354        }
14355
14356        #[inline(always)]
14357        fn inline_size(_context: fidl::encoding::Context) -> usize {
14358            16
14359        }
14360    }
14361
14362    unsafe impl<D: fidl::encoding::ResourceDialect>
14363        fidl::encoding::Encode<WlanFullmacImplQueryApfPacketFilterSupportResponse, D>
14364        for &WlanFullmacImplQueryApfPacketFilterSupportResponse
14365    {
14366        unsafe fn encode(
14367            self,
14368            encoder: &mut fidl::encoding::Encoder<'_, D>,
14369            offset: usize,
14370            mut depth: fidl::encoding::Depth,
14371        ) -> fidl::Result<()> {
14372            encoder
14373                .debug_check_bounds::<WlanFullmacImplQueryApfPacketFilterSupportResponse>(offset);
14374            // Vector header
14375            let max_ordinal: u64 = self.max_ordinal_present();
14376            encoder.write_num(max_ordinal, offset);
14377            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14378            // Calling encoder.out_of_line_offset(0) is not allowed.
14379            if max_ordinal == 0 {
14380                return Ok(());
14381            }
14382            depth.increment()?;
14383            let envelope_size = 8;
14384            let bytes_len = max_ordinal as usize * envelope_size;
14385            #[allow(unused_variables)]
14386            let offset = encoder.out_of_line_offset(bytes_len);
14387            let mut _prev_end_offset: usize = 0;
14388            if 1 > max_ordinal {
14389                return Ok(());
14390            }
14391
14392            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14393            // are envelope_size bytes.
14394            let cur_offset: usize = (1 - 1) * envelope_size;
14395
14396            // Zero reserved fields.
14397            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14398
14399            // Safety:
14400            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14401            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14402            //   envelope_size bytes, there is always sufficient room.
14403            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::ApfPacketFilterSupport, D>(
14404            self.resp.as_ref().map(<fidl_fuchsia_wlan_common__common::ApfPacketFilterSupport as fidl::encoding::ValueTypeMarker>::borrow),
14405            encoder, offset + cur_offset, depth
14406        )?;
14407
14408            _prev_end_offset = cur_offset + envelope_size;
14409
14410            Ok(())
14411        }
14412    }
14413
14414    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14415        for WlanFullmacImplQueryApfPacketFilterSupportResponse
14416    {
14417        #[inline(always)]
14418        fn new_empty() -> Self {
14419            Self::default()
14420        }
14421
14422        unsafe fn decode(
14423            &mut self,
14424            decoder: &mut fidl::encoding::Decoder<'_, D>,
14425            offset: usize,
14426            mut depth: fidl::encoding::Depth,
14427        ) -> fidl::Result<()> {
14428            decoder.debug_check_bounds::<Self>(offset);
14429            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14430                None => return Err(fidl::Error::NotNullable),
14431                Some(len) => len,
14432            };
14433            // Calling decoder.out_of_line_offset(0) is not allowed.
14434            if len == 0 {
14435                return Ok(());
14436            };
14437            depth.increment()?;
14438            let envelope_size = 8;
14439            let bytes_len = len * envelope_size;
14440            let offset = decoder.out_of_line_offset(bytes_len)?;
14441            // Decode the envelope for each type.
14442            let mut _next_ordinal_to_read = 0;
14443            let mut next_offset = offset;
14444            let end_offset = offset + bytes_len;
14445            _next_ordinal_to_read += 1;
14446            if next_offset >= end_offset {
14447                return Ok(());
14448            }
14449
14450            // Decode unknown envelopes for gaps in ordinals.
14451            while _next_ordinal_to_read < 1 {
14452                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14453                _next_ordinal_to_read += 1;
14454                next_offset += envelope_size;
14455            }
14456
14457            let next_out_of_line = decoder.next_out_of_line();
14458            let handles_before = decoder.remaining_handles();
14459            if let Some((inlined, num_bytes, num_handles)) =
14460                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14461            {
14462                let member_inline_size = <fidl_fuchsia_wlan_common__common::ApfPacketFilterSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14463                if inlined != (member_inline_size <= 4) {
14464                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14465                }
14466                let inner_offset;
14467                let mut inner_depth = depth.clone();
14468                if inlined {
14469                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14470                    inner_offset = next_offset;
14471                } else {
14472                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14473                    inner_depth.increment()?;
14474                }
14475                let val_ref = self.resp.get_or_insert_with(|| {
14476                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::ApfPacketFilterSupport, D)
14477                });
14478                fidl::decode!(
14479                    fidl_fuchsia_wlan_common__common::ApfPacketFilterSupport,
14480                    D,
14481                    val_ref,
14482                    decoder,
14483                    inner_offset,
14484                    inner_depth
14485                )?;
14486                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14487                {
14488                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14489                }
14490                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14491                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14492                }
14493            }
14494
14495            next_offset += envelope_size;
14496
14497            // Decode the remaining unknown envelopes.
14498            while next_offset < end_offset {
14499                _next_ordinal_to_read += 1;
14500                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14501                next_offset += envelope_size;
14502            }
14503
14504            Ok(())
14505        }
14506    }
14507
14508    impl WlanFullmacImplQuerySecuritySupportResponse {
14509        #[inline(always)]
14510        fn max_ordinal_present(&self) -> u64 {
14511            if let Some(_) = self.resp {
14512                return 1;
14513            }
14514            0
14515        }
14516    }
14517
14518    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
14519        type Borrowed<'a> = &'a Self;
14520        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14521            value
14522        }
14523    }
14524
14525    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
14526        type Owned = Self;
14527
14528        #[inline(always)]
14529        fn inline_align(_context: fidl::encoding::Context) -> usize {
14530            8
14531        }
14532
14533        #[inline(always)]
14534        fn inline_size(_context: fidl::encoding::Context) -> usize {
14535            16
14536        }
14537    }
14538
14539    unsafe impl<D: fidl::encoding::ResourceDialect>
14540        fidl::encoding::Encode<WlanFullmacImplQuerySecuritySupportResponse, D>
14541        for &WlanFullmacImplQuerySecuritySupportResponse
14542    {
14543        unsafe fn encode(
14544            self,
14545            encoder: &mut fidl::encoding::Encoder<'_, D>,
14546            offset: usize,
14547            mut depth: fidl::encoding::Depth,
14548        ) -> fidl::Result<()> {
14549            encoder.debug_check_bounds::<WlanFullmacImplQuerySecuritySupportResponse>(offset);
14550            // Vector header
14551            let max_ordinal: u64 = self.max_ordinal_present();
14552            encoder.write_num(max_ordinal, offset);
14553            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14554            // Calling encoder.out_of_line_offset(0) is not allowed.
14555            if max_ordinal == 0 {
14556                return Ok(());
14557            }
14558            depth.increment()?;
14559            let envelope_size = 8;
14560            let bytes_len = max_ordinal as usize * envelope_size;
14561            #[allow(unused_variables)]
14562            let offset = encoder.out_of_line_offset(bytes_len);
14563            let mut _prev_end_offset: usize = 0;
14564            if 1 > max_ordinal {
14565                return Ok(());
14566            }
14567
14568            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14569            // are envelope_size bytes.
14570            let cur_offset: usize = (1 - 1) * envelope_size;
14571
14572            // Zero reserved fields.
14573            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14574
14575            // Safety:
14576            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14577            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14578            //   envelope_size bytes, there is always sufficient room.
14579            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::SecuritySupport, D>(
14580            self.resp.as_ref().map(<fidl_fuchsia_wlan_common__common::SecuritySupport as fidl::encoding::ValueTypeMarker>::borrow),
14581            encoder, offset + cur_offset, depth
14582        )?;
14583
14584            _prev_end_offset = cur_offset + envelope_size;
14585
14586            Ok(())
14587        }
14588    }
14589
14590    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14591        for WlanFullmacImplQuerySecuritySupportResponse
14592    {
14593        #[inline(always)]
14594        fn new_empty() -> Self {
14595            Self::default()
14596        }
14597
14598        unsafe fn decode(
14599            &mut self,
14600            decoder: &mut fidl::encoding::Decoder<'_, D>,
14601            offset: usize,
14602            mut depth: fidl::encoding::Depth,
14603        ) -> fidl::Result<()> {
14604            decoder.debug_check_bounds::<Self>(offset);
14605            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14606                None => return Err(fidl::Error::NotNullable),
14607                Some(len) => len,
14608            };
14609            // Calling decoder.out_of_line_offset(0) is not allowed.
14610            if len == 0 {
14611                return Ok(());
14612            };
14613            depth.increment()?;
14614            let envelope_size = 8;
14615            let bytes_len = len * envelope_size;
14616            let offset = decoder.out_of_line_offset(bytes_len)?;
14617            // Decode the envelope for each type.
14618            let mut _next_ordinal_to_read = 0;
14619            let mut next_offset = offset;
14620            let end_offset = offset + bytes_len;
14621            _next_ordinal_to_read += 1;
14622            if next_offset >= end_offset {
14623                return Ok(());
14624            }
14625
14626            // Decode unknown envelopes for gaps in ordinals.
14627            while _next_ordinal_to_read < 1 {
14628                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14629                _next_ordinal_to_read += 1;
14630                next_offset += envelope_size;
14631            }
14632
14633            let next_out_of_line = decoder.next_out_of_line();
14634            let handles_before = decoder.remaining_handles();
14635            if let Some((inlined, num_bytes, num_handles)) =
14636                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14637            {
14638                let member_inline_size = <fidl_fuchsia_wlan_common__common::SecuritySupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14639                if inlined != (member_inline_size <= 4) {
14640                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14641                }
14642                let inner_offset;
14643                let mut inner_depth = depth.clone();
14644                if inlined {
14645                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14646                    inner_offset = next_offset;
14647                } else {
14648                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14649                    inner_depth.increment()?;
14650                }
14651                let val_ref = self.resp.get_or_insert_with(|| {
14652                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::SecuritySupport, D)
14653                });
14654                fidl::decode!(
14655                    fidl_fuchsia_wlan_common__common::SecuritySupport,
14656                    D,
14657                    val_ref,
14658                    decoder,
14659                    inner_offset,
14660                    inner_depth
14661                )?;
14662                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14663                {
14664                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14665                }
14666                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14667                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14668                }
14669            }
14670
14671            next_offset += envelope_size;
14672
14673            // Decode the remaining unknown envelopes.
14674            while next_offset < end_offset {
14675                _next_ordinal_to_read += 1;
14676                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14677                next_offset += envelope_size;
14678            }
14679
14680            Ok(())
14681        }
14682    }
14683
14684    impl WlanFullmacImplQuerySpectrumManagementSupportResponse {
14685        #[inline(always)]
14686        fn max_ordinal_present(&self) -> u64 {
14687            if let Some(_) = self.resp {
14688                return 1;
14689            }
14690            0
14691        }
14692    }
14693
14694    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
14695        type Borrowed<'a> = &'a Self;
14696        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14697            value
14698        }
14699    }
14700
14701    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
14702        type Owned = Self;
14703
14704        #[inline(always)]
14705        fn inline_align(_context: fidl::encoding::Context) -> usize {
14706            8
14707        }
14708
14709        #[inline(always)]
14710        fn inline_size(_context: fidl::encoding::Context) -> usize {
14711            16
14712        }
14713    }
14714
14715    unsafe impl<D: fidl::encoding::ResourceDialect>
14716        fidl::encoding::Encode<WlanFullmacImplQuerySpectrumManagementSupportResponse, D>
14717        for &WlanFullmacImplQuerySpectrumManagementSupportResponse
14718    {
14719        unsafe fn encode(
14720            self,
14721            encoder: &mut fidl::encoding::Encoder<'_, D>,
14722            offset: usize,
14723            mut depth: fidl::encoding::Depth,
14724        ) -> fidl::Result<()> {
14725            encoder.debug_check_bounds::<WlanFullmacImplQuerySpectrumManagementSupportResponse>(
14726                offset,
14727            );
14728            // Vector header
14729            let max_ordinal: u64 = self.max_ordinal_present();
14730            encoder.write_num(max_ordinal, offset);
14731            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14732            // Calling encoder.out_of_line_offset(0) is not allowed.
14733            if max_ordinal == 0 {
14734                return Ok(());
14735            }
14736            depth.increment()?;
14737            let envelope_size = 8;
14738            let bytes_len = max_ordinal as usize * envelope_size;
14739            #[allow(unused_variables)]
14740            let offset = encoder.out_of_line_offset(bytes_len);
14741            let mut _prev_end_offset: usize = 0;
14742            if 1 > max_ordinal {
14743                return Ok(());
14744            }
14745
14746            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14747            // are envelope_size bytes.
14748            let cur_offset: usize = (1 - 1) * envelope_size;
14749
14750            // Zero reserved fields.
14751            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14752
14753            // Safety:
14754            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14755            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14756            //   envelope_size bytes, there is always sufficient room.
14757            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::SpectrumManagementSupport, D>(
14758            self.resp.as_ref().map(<fidl_fuchsia_wlan_common__common::SpectrumManagementSupport as fidl::encoding::ValueTypeMarker>::borrow),
14759            encoder, offset + cur_offset, depth
14760        )?;
14761
14762            _prev_end_offset = cur_offset + envelope_size;
14763
14764            Ok(())
14765        }
14766    }
14767
14768    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14769        for WlanFullmacImplQuerySpectrumManagementSupportResponse
14770    {
14771        #[inline(always)]
14772        fn new_empty() -> Self {
14773            Self::default()
14774        }
14775
14776        unsafe fn decode(
14777            &mut self,
14778            decoder: &mut fidl::encoding::Decoder<'_, D>,
14779            offset: usize,
14780            mut depth: fidl::encoding::Depth,
14781        ) -> fidl::Result<()> {
14782            decoder.debug_check_bounds::<Self>(offset);
14783            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14784                None => return Err(fidl::Error::NotNullable),
14785                Some(len) => len,
14786            };
14787            // Calling decoder.out_of_line_offset(0) is not allowed.
14788            if len == 0 {
14789                return Ok(());
14790            };
14791            depth.increment()?;
14792            let envelope_size = 8;
14793            let bytes_len = len * envelope_size;
14794            let offset = decoder.out_of_line_offset(bytes_len)?;
14795            // Decode the envelope for each type.
14796            let mut _next_ordinal_to_read = 0;
14797            let mut next_offset = offset;
14798            let end_offset = offset + bytes_len;
14799            _next_ordinal_to_read += 1;
14800            if next_offset >= end_offset {
14801                return Ok(());
14802            }
14803
14804            // Decode unknown envelopes for gaps in ordinals.
14805            while _next_ordinal_to_read < 1 {
14806                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14807                _next_ordinal_to_read += 1;
14808                next_offset += envelope_size;
14809            }
14810
14811            let next_out_of_line = decoder.next_out_of_line();
14812            let handles_before = decoder.remaining_handles();
14813            if let Some((inlined, num_bytes, num_handles)) =
14814                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14815            {
14816                let member_inline_size = <fidl_fuchsia_wlan_common__common::SpectrumManagementSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14817                if inlined != (member_inline_size <= 4) {
14818                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14819                }
14820                let inner_offset;
14821                let mut inner_depth = depth.clone();
14822                if inlined {
14823                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14824                    inner_offset = next_offset;
14825                } else {
14826                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14827                    inner_depth.increment()?;
14828                }
14829                let val_ref = self.resp.get_or_insert_with(|| {
14830                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::SpectrumManagementSupport, D)
14831                });
14832                fidl::decode!(
14833                    fidl_fuchsia_wlan_common__common::SpectrumManagementSupport,
14834                    D,
14835                    val_ref,
14836                    decoder,
14837                    inner_offset,
14838                    inner_depth
14839                )?;
14840                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14841                {
14842                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14843                }
14844                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14845                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14846                }
14847            }
14848
14849            next_offset += envelope_size;
14850
14851            // Decode the remaining unknown envelopes.
14852            while next_offset < end_offset {
14853                _next_ordinal_to_read += 1;
14854                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14855                next_offset += envelope_size;
14856            }
14857
14858            Ok(())
14859        }
14860    }
14861
14862    impl WlanFullmacImplQueryTelemetrySupportResponse {
14863        #[inline(always)]
14864        fn max_ordinal_present(&self) -> u64 {
14865            if let Some(_) = self.resp {
14866                return 1;
14867            }
14868            0
14869        }
14870    }
14871
14872    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
14873        type Borrowed<'a> = &'a Self;
14874        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14875            value
14876        }
14877    }
14878
14879    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
14880        type Owned = Self;
14881
14882        #[inline(always)]
14883        fn inline_align(_context: fidl::encoding::Context) -> usize {
14884            8
14885        }
14886
14887        #[inline(always)]
14888        fn inline_size(_context: fidl::encoding::Context) -> usize {
14889            16
14890        }
14891    }
14892
14893    unsafe impl<D: fidl::encoding::ResourceDialect>
14894        fidl::encoding::Encode<WlanFullmacImplQueryTelemetrySupportResponse, D>
14895        for &WlanFullmacImplQueryTelemetrySupportResponse
14896    {
14897        unsafe fn encode(
14898            self,
14899            encoder: &mut fidl::encoding::Encoder<'_, D>,
14900            offset: usize,
14901            mut depth: fidl::encoding::Depth,
14902        ) -> fidl::Result<()> {
14903            encoder.debug_check_bounds::<WlanFullmacImplQueryTelemetrySupportResponse>(offset);
14904            // Vector header
14905            let max_ordinal: u64 = self.max_ordinal_present();
14906            encoder.write_num(max_ordinal, offset);
14907            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14908            // Calling encoder.out_of_line_offset(0) is not allowed.
14909            if max_ordinal == 0 {
14910                return Ok(());
14911            }
14912            depth.increment()?;
14913            let envelope_size = 8;
14914            let bytes_len = max_ordinal as usize * envelope_size;
14915            #[allow(unused_variables)]
14916            let offset = encoder.out_of_line_offset(bytes_len);
14917            let mut _prev_end_offset: usize = 0;
14918            if 1 > max_ordinal {
14919                return Ok(());
14920            }
14921
14922            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14923            // are envelope_size bytes.
14924            let cur_offset: usize = (1 - 1) * envelope_size;
14925
14926            // Zero reserved fields.
14927            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14928
14929            // Safety:
14930            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14931            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14932            //   envelope_size bytes, there is always sufficient room.
14933            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_stats__common::TelemetrySupport, D>(
14934            self.resp.as_ref().map(<fidl_fuchsia_wlan_stats__common::TelemetrySupport as fidl::encoding::ValueTypeMarker>::borrow),
14935            encoder, offset + cur_offset, depth
14936        )?;
14937
14938            _prev_end_offset = cur_offset + envelope_size;
14939
14940            Ok(())
14941        }
14942    }
14943
14944    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14945        for WlanFullmacImplQueryTelemetrySupportResponse
14946    {
14947        #[inline(always)]
14948        fn new_empty() -> Self {
14949            Self::default()
14950        }
14951
14952        unsafe fn decode(
14953            &mut self,
14954            decoder: &mut fidl::encoding::Decoder<'_, D>,
14955            offset: usize,
14956            mut depth: fidl::encoding::Depth,
14957        ) -> fidl::Result<()> {
14958            decoder.debug_check_bounds::<Self>(offset);
14959            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14960                None => return Err(fidl::Error::NotNullable),
14961                Some(len) => len,
14962            };
14963            // Calling decoder.out_of_line_offset(0) is not allowed.
14964            if len == 0 {
14965                return Ok(());
14966            };
14967            depth.increment()?;
14968            let envelope_size = 8;
14969            let bytes_len = len * envelope_size;
14970            let offset = decoder.out_of_line_offset(bytes_len)?;
14971            // Decode the envelope for each type.
14972            let mut _next_ordinal_to_read = 0;
14973            let mut next_offset = offset;
14974            let end_offset = offset + bytes_len;
14975            _next_ordinal_to_read += 1;
14976            if next_offset >= end_offset {
14977                return Ok(());
14978            }
14979
14980            // Decode unknown envelopes for gaps in ordinals.
14981            while _next_ordinal_to_read < 1 {
14982                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14983                _next_ordinal_to_read += 1;
14984                next_offset += envelope_size;
14985            }
14986
14987            let next_out_of_line = decoder.next_out_of_line();
14988            let handles_before = decoder.remaining_handles();
14989            if let Some((inlined, num_bytes, num_handles)) =
14990                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14991            {
14992                let member_inline_size = <fidl_fuchsia_wlan_stats__common::TelemetrySupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14993                if inlined != (member_inline_size <= 4) {
14994                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14995                }
14996                let inner_offset;
14997                let mut inner_depth = depth.clone();
14998                if inlined {
14999                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15000                    inner_offset = next_offset;
15001                } else {
15002                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15003                    inner_depth.increment()?;
15004                }
15005                let val_ref = self.resp.get_or_insert_with(|| {
15006                    fidl::new_empty!(fidl_fuchsia_wlan_stats__common::TelemetrySupport, D)
15007                });
15008                fidl::decode!(
15009                    fidl_fuchsia_wlan_stats__common::TelemetrySupport,
15010                    D,
15011                    val_ref,
15012                    decoder,
15013                    inner_offset,
15014                    inner_depth
15015                )?;
15016                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15017                {
15018                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15019                }
15020                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15021                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15022                }
15023            }
15024
15025            next_offset += envelope_size;
15026
15027            // Decode the remaining unknown envelopes.
15028            while next_offset < end_offset {
15029                _next_ordinal_to_read += 1;
15030                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15031                next_offset += envelope_size;
15032            }
15033
15034            Ok(())
15035        }
15036    }
15037
15038    impl WlanFullmacImplQueryResponse {
15039        #[inline(always)]
15040        fn max_ordinal_present(&self) -> u64 {
15041            if let Some(_) = self.factory_addr {
15042                return 4;
15043            }
15044            if let Some(_) = self.band_caps {
15045                return 3;
15046            }
15047            if let Some(_) = self.role {
15048                return 2;
15049            }
15050            if let Some(_) = self.sta_addr {
15051                return 1;
15052            }
15053            0
15054        }
15055    }
15056
15057    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryResponse {
15058        type Borrowed<'a> = &'a Self;
15059        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15060            value
15061        }
15062    }
15063
15064    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryResponse {
15065        type Owned = Self;
15066
15067        #[inline(always)]
15068        fn inline_align(_context: fidl::encoding::Context) -> usize {
15069            8
15070        }
15071
15072        #[inline(always)]
15073        fn inline_size(_context: fidl::encoding::Context) -> usize {
15074            16
15075        }
15076    }
15077
15078    unsafe impl<D: fidl::encoding::ResourceDialect>
15079        fidl::encoding::Encode<WlanFullmacImplQueryResponse, D> for &WlanFullmacImplQueryResponse
15080    {
15081        unsafe fn encode(
15082            self,
15083            encoder: &mut fidl::encoding::Encoder<'_, D>,
15084            offset: usize,
15085            mut depth: fidl::encoding::Depth,
15086        ) -> fidl::Result<()> {
15087            encoder.debug_check_bounds::<WlanFullmacImplQueryResponse>(offset);
15088            // Vector header
15089            let max_ordinal: u64 = self.max_ordinal_present();
15090            encoder.write_num(max_ordinal, offset);
15091            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15092            // Calling encoder.out_of_line_offset(0) is not allowed.
15093            if max_ordinal == 0 {
15094                return Ok(());
15095            }
15096            depth.increment()?;
15097            let envelope_size = 8;
15098            let bytes_len = max_ordinal as usize * envelope_size;
15099            #[allow(unused_variables)]
15100            let offset = encoder.out_of_line_offset(bytes_len);
15101            let mut _prev_end_offset: usize = 0;
15102            if 1 > max_ordinal {
15103                return Ok(());
15104            }
15105
15106            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15107            // are envelope_size bytes.
15108            let cur_offset: usize = (1 - 1) * envelope_size;
15109
15110            // Zero reserved fields.
15111            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15112
15113            // Safety:
15114            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15115            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15116            //   envelope_size bytes, there is always sufficient room.
15117            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
15118                self.sta_addr
15119                    .as_ref()
15120                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
15121                encoder,
15122                offset + cur_offset,
15123                depth,
15124            )?;
15125
15126            _prev_end_offset = cur_offset + envelope_size;
15127            if 2 > max_ordinal {
15128                return Ok(());
15129            }
15130
15131            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15132            // are envelope_size bytes.
15133            let cur_offset: usize = (2 - 1) * envelope_size;
15134
15135            // Zero reserved fields.
15136            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15137
15138            // Safety:
15139            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15140            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15141            //   envelope_size bytes, there is always sufficient room.
15142            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::WlanMacRole, D>(
15143            self.role.as_ref().map(<fidl_fuchsia_wlan_common__common::WlanMacRole as fidl::encoding::ValueTypeMarker>::borrow),
15144            encoder, offset + cur_offset, depth
15145        )?;
15146
15147            _prev_end_offset = cur_offset + envelope_size;
15148            if 3 > max_ordinal {
15149                return Ok(());
15150            }
15151
15152            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15153            // are envelope_size bytes.
15154            let cur_offset: usize = (3 - 1) * envelope_size;
15155
15156            // Zero reserved fields.
15157            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15158
15159            // Safety:
15160            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15161            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15162            //   envelope_size bytes, there is always sufficient room.
15163            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BandCapability, 16>, D>(
15164            self.band_caps.as_ref().map(<fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::ValueTypeMarker>::borrow),
15165            encoder, offset + cur_offset, depth
15166        )?;
15167
15168            _prev_end_offset = cur_offset + envelope_size;
15169            if 4 > max_ordinal {
15170                return Ok(());
15171            }
15172
15173            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15174            // are envelope_size bytes.
15175            let cur_offset: usize = (4 - 1) * envelope_size;
15176
15177            // Zero reserved fields.
15178            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15179
15180            // Safety:
15181            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15182            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15183            //   envelope_size bytes, there is always sufficient room.
15184            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
15185                self.factory_addr
15186                    .as_ref()
15187                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
15188                encoder,
15189                offset + cur_offset,
15190                depth,
15191            )?;
15192
15193            _prev_end_offset = cur_offset + envelope_size;
15194
15195            Ok(())
15196        }
15197    }
15198
15199    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15200        for WlanFullmacImplQueryResponse
15201    {
15202        #[inline(always)]
15203        fn new_empty() -> Self {
15204            Self::default()
15205        }
15206
15207        unsafe fn decode(
15208            &mut self,
15209            decoder: &mut fidl::encoding::Decoder<'_, D>,
15210            offset: usize,
15211            mut depth: fidl::encoding::Depth,
15212        ) -> fidl::Result<()> {
15213            decoder.debug_check_bounds::<Self>(offset);
15214            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15215                None => return Err(fidl::Error::NotNullable),
15216                Some(len) => len,
15217            };
15218            // Calling decoder.out_of_line_offset(0) is not allowed.
15219            if len == 0 {
15220                return Ok(());
15221            };
15222            depth.increment()?;
15223            let envelope_size = 8;
15224            let bytes_len = len * envelope_size;
15225            let offset = decoder.out_of_line_offset(bytes_len)?;
15226            // Decode the envelope for each type.
15227            let mut _next_ordinal_to_read = 0;
15228            let mut next_offset = offset;
15229            let end_offset = offset + bytes_len;
15230            _next_ordinal_to_read += 1;
15231            if next_offset >= end_offset {
15232                return Ok(());
15233            }
15234
15235            // Decode unknown envelopes for gaps in ordinals.
15236            while _next_ordinal_to_read < 1 {
15237                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15238                _next_ordinal_to_read += 1;
15239                next_offset += envelope_size;
15240            }
15241
15242            let next_out_of_line = decoder.next_out_of_line();
15243            let handles_before = decoder.remaining_handles();
15244            if let Some((inlined, num_bytes, num_handles)) =
15245                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15246            {
15247                let member_inline_size =
15248                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
15249                        decoder.context,
15250                    );
15251                if inlined != (member_inline_size <= 4) {
15252                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15253                }
15254                let inner_offset;
15255                let mut inner_depth = depth.clone();
15256                if inlined {
15257                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15258                    inner_offset = next_offset;
15259                } else {
15260                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15261                    inner_depth.increment()?;
15262                }
15263                let val_ref = self
15264                    .sta_addr
15265                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
15266                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
15267                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15268                {
15269                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15270                }
15271                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15272                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15273                }
15274            }
15275
15276            next_offset += envelope_size;
15277            _next_ordinal_to_read += 1;
15278            if next_offset >= end_offset {
15279                return Ok(());
15280            }
15281
15282            // Decode unknown envelopes for gaps in ordinals.
15283            while _next_ordinal_to_read < 2 {
15284                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15285                _next_ordinal_to_read += 1;
15286                next_offset += envelope_size;
15287            }
15288
15289            let next_out_of_line = decoder.next_out_of_line();
15290            let handles_before = decoder.remaining_handles();
15291            if let Some((inlined, num_bytes, num_handles)) =
15292                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15293            {
15294                let member_inline_size = <fidl_fuchsia_wlan_common__common::WlanMacRole as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15295                if inlined != (member_inline_size <= 4) {
15296                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15297                }
15298                let inner_offset;
15299                let mut inner_depth = depth.clone();
15300                if inlined {
15301                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15302                    inner_offset = next_offset;
15303                } else {
15304                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15305                    inner_depth.increment()?;
15306                }
15307                let val_ref = self.role.get_or_insert_with(|| {
15308                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanMacRole, D)
15309                });
15310                fidl::decode!(
15311                    fidl_fuchsia_wlan_common__common::WlanMacRole,
15312                    D,
15313                    val_ref,
15314                    decoder,
15315                    inner_offset,
15316                    inner_depth
15317                )?;
15318                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15319                {
15320                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15321                }
15322                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15323                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15324                }
15325            }
15326
15327            next_offset += envelope_size;
15328            _next_ordinal_to_read += 1;
15329            if next_offset >= end_offset {
15330                return Ok(());
15331            }
15332
15333            // Decode unknown envelopes for gaps in ordinals.
15334            while _next_ordinal_to_read < 3 {
15335                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15336                _next_ordinal_to_read += 1;
15337                next_offset += envelope_size;
15338            }
15339
15340            let next_out_of_line = decoder.next_out_of_line();
15341            let handles_before = decoder.remaining_handles();
15342            if let Some((inlined, num_bytes, num_handles)) =
15343                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15344            {
15345                let member_inline_size = <fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15346                if inlined != (member_inline_size <= 4) {
15347                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15348                }
15349                let inner_offset;
15350                let mut inner_depth = depth.clone();
15351                if inlined {
15352                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15353                    inner_offset = next_offset;
15354                } else {
15355                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15356                    inner_depth.increment()?;
15357                }
15358                let val_ref = self.band_caps.get_or_insert_with(
15359                    || fidl::new_empty!(fidl::encoding::Vector<BandCapability, 16>, D),
15360                );
15361                fidl::decode!(fidl::encoding::Vector<BandCapability, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
15362                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15363                {
15364                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15365                }
15366                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15367                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15368                }
15369            }
15370
15371            next_offset += envelope_size;
15372            _next_ordinal_to_read += 1;
15373            if next_offset >= end_offset {
15374                return Ok(());
15375            }
15376
15377            // Decode unknown envelopes for gaps in ordinals.
15378            while _next_ordinal_to_read < 4 {
15379                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15380                _next_ordinal_to_read += 1;
15381                next_offset += envelope_size;
15382            }
15383
15384            let next_out_of_line = decoder.next_out_of_line();
15385            let handles_before = decoder.remaining_handles();
15386            if let Some((inlined, num_bytes, num_handles)) =
15387                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15388            {
15389                let member_inline_size =
15390                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
15391                        decoder.context,
15392                    );
15393                if inlined != (member_inline_size <= 4) {
15394                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15395                }
15396                let inner_offset;
15397                let mut inner_depth = depth.clone();
15398                if inlined {
15399                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15400                    inner_offset = next_offset;
15401                } else {
15402                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15403                    inner_depth.increment()?;
15404                }
15405                let val_ref = self
15406                    .factory_addr
15407                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
15408                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
15409                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15410                {
15411                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15412                }
15413                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15414                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15415                }
15416            }
15417
15418            next_offset += envelope_size;
15419
15420            // Decode the remaining unknown envelopes.
15421            while next_offset < end_offset {
15422                _next_ordinal_to_read += 1;
15423                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15424                next_offset += envelope_size;
15425            }
15426
15427            Ok(())
15428        }
15429    }
15430
15431    impl WlanFullmacImplReadApfPacketFilterDataResponse {
15432        #[inline(always)]
15433        fn max_ordinal_present(&self) -> u64 {
15434            if let Some(_) = self.memory {
15435                return 1;
15436            }
15437            0
15438        }
15439    }
15440
15441    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplReadApfPacketFilterDataResponse {
15442        type Borrowed<'a> = &'a Self;
15443        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15444            value
15445        }
15446    }
15447
15448    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplReadApfPacketFilterDataResponse {
15449        type Owned = Self;
15450
15451        #[inline(always)]
15452        fn inline_align(_context: fidl::encoding::Context) -> usize {
15453            8
15454        }
15455
15456        #[inline(always)]
15457        fn inline_size(_context: fidl::encoding::Context) -> usize {
15458            16
15459        }
15460    }
15461
15462    unsafe impl<D: fidl::encoding::ResourceDialect>
15463        fidl::encoding::Encode<WlanFullmacImplReadApfPacketFilterDataResponse, D>
15464        for &WlanFullmacImplReadApfPacketFilterDataResponse
15465    {
15466        unsafe fn encode(
15467            self,
15468            encoder: &mut fidl::encoding::Encoder<'_, D>,
15469            offset: usize,
15470            mut depth: fidl::encoding::Depth,
15471        ) -> fidl::Result<()> {
15472            encoder.debug_check_bounds::<WlanFullmacImplReadApfPacketFilterDataResponse>(offset);
15473            // Vector header
15474            let max_ordinal: u64 = self.max_ordinal_present();
15475            encoder.write_num(max_ordinal, offset);
15476            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15477            // Calling encoder.out_of_line_offset(0) is not allowed.
15478            if max_ordinal == 0 {
15479                return Ok(());
15480            }
15481            depth.increment()?;
15482            let envelope_size = 8;
15483            let bytes_len = max_ordinal as usize * envelope_size;
15484            #[allow(unused_variables)]
15485            let offset = encoder.out_of_line_offset(bytes_len);
15486            let mut _prev_end_offset: usize = 0;
15487            if 1 > max_ordinal {
15488                return Ok(());
15489            }
15490
15491            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15492            // are envelope_size bytes.
15493            let cur_offset: usize = (1 - 1) * envelope_size;
15494
15495            // Zero reserved fields.
15496            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15497
15498            // Safety:
15499            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15500            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15501            //   envelope_size bytes, there is always sufficient room.
15502            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
15503            self.memory.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
15504            encoder, offset + cur_offset, depth
15505        )?;
15506
15507            _prev_end_offset = cur_offset + envelope_size;
15508
15509            Ok(())
15510        }
15511    }
15512
15513    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15514        for WlanFullmacImplReadApfPacketFilterDataResponse
15515    {
15516        #[inline(always)]
15517        fn new_empty() -> Self {
15518            Self::default()
15519        }
15520
15521        unsafe fn decode(
15522            &mut self,
15523            decoder: &mut fidl::encoding::Decoder<'_, D>,
15524            offset: usize,
15525            mut depth: fidl::encoding::Depth,
15526        ) -> fidl::Result<()> {
15527            decoder.debug_check_bounds::<Self>(offset);
15528            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15529                None => return Err(fidl::Error::NotNullable),
15530                Some(len) => len,
15531            };
15532            // Calling decoder.out_of_line_offset(0) is not allowed.
15533            if len == 0 {
15534                return Ok(());
15535            };
15536            depth.increment()?;
15537            let envelope_size = 8;
15538            let bytes_len = len * envelope_size;
15539            let offset = decoder.out_of_line_offset(bytes_len)?;
15540            // Decode the envelope for each type.
15541            let mut _next_ordinal_to_read = 0;
15542            let mut next_offset = offset;
15543            let end_offset = offset + bytes_len;
15544            _next_ordinal_to_read += 1;
15545            if next_offset >= end_offset {
15546                return Ok(());
15547            }
15548
15549            // Decode unknown envelopes for gaps in ordinals.
15550            while _next_ordinal_to_read < 1 {
15551                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15552                _next_ordinal_to_read += 1;
15553                next_offset += envelope_size;
15554            }
15555
15556            let next_out_of_line = decoder.next_out_of_line();
15557            let handles_before = decoder.remaining_handles();
15558            if let Some((inlined, num_bytes, num_handles)) =
15559                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15560            {
15561                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15562                if inlined != (member_inline_size <= 4) {
15563                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15564                }
15565                let inner_offset;
15566                let mut inner_depth = depth.clone();
15567                if inlined {
15568                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15569                    inner_offset = next_offset;
15570                } else {
15571                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15572                    inner_depth.increment()?;
15573                }
15574                let val_ref = self.memory.get_or_insert_with(|| {
15575                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
15576                });
15577                fidl::decode!(
15578                    fidl::encoding::UnboundedVector<u8>,
15579                    D,
15580                    val_ref,
15581                    decoder,
15582                    inner_offset,
15583                    inner_depth
15584                )?;
15585                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15586                {
15587                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15588                }
15589                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15590                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15591                }
15592            }
15593
15594            next_offset += envelope_size;
15595
15596            // Decode the remaining unknown envelopes.
15597            while next_offset < end_offset {
15598                _next_ordinal_to_read += 1;
15599                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15600                next_offset += envelope_size;
15601            }
15602
15603            Ok(())
15604        }
15605    }
15606
15607    impl WlanFullmacOwePublicKey {
15608        #[inline(always)]
15609        fn max_ordinal_present(&self) -> u64 {
15610            if let Some(_) = self.key {
15611                return 2;
15612            }
15613            if let Some(_) = self.group {
15614                return 1;
15615            }
15616            0
15617        }
15618    }
15619
15620    impl fidl::encoding::ValueTypeMarker for WlanFullmacOwePublicKey {
15621        type Borrowed<'a> = &'a Self;
15622        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15623            value
15624        }
15625    }
15626
15627    unsafe impl fidl::encoding::TypeMarker for WlanFullmacOwePublicKey {
15628        type Owned = Self;
15629
15630        #[inline(always)]
15631        fn inline_align(_context: fidl::encoding::Context) -> usize {
15632            8
15633        }
15634
15635        #[inline(always)]
15636        fn inline_size(_context: fidl::encoding::Context) -> usize {
15637            16
15638        }
15639    }
15640
15641    unsafe impl<D: fidl::encoding::ResourceDialect>
15642        fidl::encoding::Encode<WlanFullmacOwePublicKey, D> for &WlanFullmacOwePublicKey
15643    {
15644        unsafe fn encode(
15645            self,
15646            encoder: &mut fidl::encoding::Encoder<'_, D>,
15647            offset: usize,
15648            mut depth: fidl::encoding::Depth,
15649        ) -> fidl::Result<()> {
15650            encoder.debug_check_bounds::<WlanFullmacOwePublicKey>(offset);
15651            // Vector header
15652            let max_ordinal: u64 = self.max_ordinal_present();
15653            encoder.write_num(max_ordinal, offset);
15654            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15655            // Calling encoder.out_of_line_offset(0) is not allowed.
15656            if max_ordinal == 0 {
15657                return Ok(());
15658            }
15659            depth.increment()?;
15660            let envelope_size = 8;
15661            let bytes_len = max_ordinal as usize * envelope_size;
15662            #[allow(unused_variables)]
15663            let offset = encoder.out_of_line_offset(bytes_len);
15664            let mut _prev_end_offset: usize = 0;
15665            if 1 > max_ordinal {
15666                return Ok(());
15667            }
15668
15669            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15670            // are envelope_size bytes.
15671            let cur_offset: usize = (1 - 1) * envelope_size;
15672
15673            // Zero reserved fields.
15674            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15675
15676            // Safety:
15677            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15678            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15679            //   envelope_size bytes, there is always sufficient room.
15680            fidl::encoding::encode_in_envelope_optional::<u16, D>(
15681                self.group.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
15682                encoder,
15683                offset + cur_offset,
15684                depth,
15685            )?;
15686
15687            _prev_end_offset = cur_offset + envelope_size;
15688            if 2 > max_ordinal {
15689                return Ok(());
15690            }
15691
15692            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15693            // are envelope_size bytes.
15694            let cur_offset: usize = (2 - 1) * envelope_size;
15695
15696            // Zero reserved fields.
15697            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15698
15699            // Safety:
15700            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15701            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15702            //   envelope_size bytes, there is always sufficient room.
15703            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
15704            self.key.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
15705            encoder, offset + cur_offset, depth
15706        )?;
15707
15708            _prev_end_offset = cur_offset + envelope_size;
15709
15710            Ok(())
15711        }
15712    }
15713
15714    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15715        for WlanFullmacOwePublicKey
15716    {
15717        #[inline(always)]
15718        fn new_empty() -> Self {
15719            Self::default()
15720        }
15721
15722        unsafe fn decode(
15723            &mut self,
15724            decoder: &mut fidl::encoding::Decoder<'_, D>,
15725            offset: usize,
15726            mut depth: fidl::encoding::Depth,
15727        ) -> fidl::Result<()> {
15728            decoder.debug_check_bounds::<Self>(offset);
15729            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15730                None => return Err(fidl::Error::NotNullable),
15731                Some(len) => len,
15732            };
15733            // Calling decoder.out_of_line_offset(0) is not allowed.
15734            if len == 0 {
15735                return Ok(());
15736            };
15737            depth.increment()?;
15738            let envelope_size = 8;
15739            let bytes_len = len * envelope_size;
15740            let offset = decoder.out_of_line_offset(bytes_len)?;
15741            // Decode the envelope for each type.
15742            let mut _next_ordinal_to_read = 0;
15743            let mut next_offset = offset;
15744            let end_offset = offset + bytes_len;
15745            _next_ordinal_to_read += 1;
15746            if next_offset >= end_offset {
15747                return Ok(());
15748            }
15749
15750            // Decode unknown envelopes for gaps in ordinals.
15751            while _next_ordinal_to_read < 1 {
15752                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15753                _next_ordinal_to_read += 1;
15754                next_offset += envelope_size;
15755            }
15756
15757            let next_out_of_line = decoder.next_out_of_line();
15758            let handles_before = decoder.remaining_handles();
15759            if let Some((inlined, num_bytes, num_handles)) =
15760                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15761            {
15762                let member_inline_size =
15763                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15764                if inlined != (member_inline_size <= 4) {
15765                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15766                }
15767                let inner_offset;
15768                let mut inner_depth = depth.clone();
15769                if inlined {
15770                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15771                    inner_offset = next_offset;
15772                } else {
15773                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15774                    inner_depth.increment()?;
15775                }
15776                let val_ref = self.group.get_or_insert_with(|| fidl::new_empty!(u16, D));
15777                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
15778                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15779                {
15780                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15781                }
15782                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15783                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15784                }
15785            }
15786
15787            next_offset += envelope_size;
15788            _next_ordinal_to_read += 1;
15789            if next_offset >= end_offset {
15790                return Ok(());
15791            }
15792
15793            // Decode unknown envelopes for gaps in ordinals.
15794            while _next_ordinal_to_read < 2 {
15795                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15796                _next_ordinal_to_read += 1;
15797                next_offset += envelope_size;
15798            }
15799
15800            let next_out_of_line = decoder.next_out_of_line();
15801            let handles_before = decoder.remaining_handles();
15802            if let Some((inlined, num_bytes, num_handles)) =
15803                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15804            {
15805                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15806                if inlined != (member_inline_size <= 4) {
15807                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15808                }
15809                let inner_offset;
15810                let mut inner_depth = depth.clone();
15811                if inlined {
15812                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15813                    inner_offset = next_offset;
15814                } else {
15815                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15816                    inner_depth.increment()?;
15817                }
15818                let val_ref = self.key.get_or_insert_with(|| {
15819                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
15820                });
15821                fidl::decode!(
15822                    fidl::encoding::UnboundedVector<u8>,
15823                    D,
15824                    val_ref,
15825                    decoder,
15826                    inner_offset,
15827                    inner_depth
15828                )?;
15829                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15830                {
15831                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15832                }
15833                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15834                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15835                }
15836            }
15837
15838            next_offset += envelope_size;
15839
15840            // Decode the remaining unknown envelopes.
15841            while next_offset < end_offset {
15842                _next_ordinal_to_read += 1;
15843                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15844                next_offset += envelope_size;
15845            }
15846
15847            Ok(())
15848        }
15849    }
15850}