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, PartialEq)]
653pub struct WlanFullmacImplQuerySecuritySupportResponse {
654    pub resp: fidl_fuchsia_wlan_common__common::SecuritySupport,
655}
656
657impl fidl::Persistable for WlanFullmacImplQuerySecuritySupportResponse {}
658
659#[derive(Clone, Debug, PartialEq)]
660pub struct WlanFullmacImplQuerySpectrumManagementSupportResponse {
661    pub resp: fidl_fuchsia_wlan_common__common::SpectrumManagementSupport,
662}
663
664impl fidl::Persistable for WlanFullmacImplQuerySpectrumManagementSupportResponse {}
665
666#[derive(Clone, Debug, PartialEq)]
667pub struct WlanFullmacImplQueryTelemetrySupportResponse {
668    pub resp: fidl_fuchsia_wlan_stats__common::TelemetrySupport,
669}
670
671impl fidl::Persistable for WlanFullmacImplQueryTelemetrySupportResponse {}
672
673#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
674pub struct WlanFullmacRssiStats {
675    pub hist: Vec<u64>,
676}
677
678impl fidl::Persistable for WlanFullmacRssiStats {}
679
680#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
681pub struct WlanFullmacSetKeysResp {
682    pub statuslist: Vec<i32>,
683}
684
685impl fidl::Persistable for WlanFullmacSetKeysResp {}
686
687#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
688#[repr(C)]
689pub struct WlanFullmacSignalReportIndication {
690    pub rssi_dbm: i8,
691    pub snr_db: i8,
692}
693
694impl fidl::Persistable for WlanFullmacSignalReportIndication {}
695
696/// Describes parameters and capabilities for a single WlanBand.
697#[derive(Clone, Debug, Default, PartialEq)]
698pub struct BandCapability {
699    /// The values of this table apply to the band indicated in this field.
700    ///
701    /// Required.
702    pub band: Option<fidl_fuchsia_wlan_ieee80211__common::WlanBand>,
703    /// Basic rates supported in units of 500 kbit/s (as defined in
704    /// IEEE Std 802.11-2016, 9.4.2.3), e.g., 0x02 represents 1 Mbps.
705    /// The value returned by this type indicates all the non-HT rates
706    /// the device supports transmitting and receiving.
707    ///
708    /// Required.
709    pub basic_rates: Option<Vec<u8>>,
710    /// HT PHY mode capabilities.
711    ///
712    /// Optional. If this field is not present, then the device does not support HT PHY mode in this
713    /// band.
714    pub ht_caps: Option<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
715    /// VHT PHY mode capabilities.
716    ///
717    /// Optional. If this field is not present, then the device does not support VHT PHY mode in
718    /// this band.
719    pub vht_caps: Option<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
720    /// A list of operating channels considered valid by hardware, in the context of
721    /// regulatory information known to the device driver, at the time of its
722    /// construction during iface creation. In this context, an operating channel
723    /// means a channel which APs may transmit Beacon frames on in the current
724    /// regulatory domain.
725    ///
726    /// This list should be used to determine efficacy of subsequent requests to
727    /// scan a subset of channels using the iface, or to determine which operating
728    /// channel to use when starting an AP.
729    ///
730    /// Required.
731    pub operating_channels: Option<Vec<u8>>,
732    #[doc(hidden)]
733    pub __source_breaking: fidl::marker::SourceBreaking,
734}
735
736impl fidl::Persistable for BandCapability {}
737
738/// Contains the information of SAE authentication frames. Shared between transmit and receive
739/// directions, see WlanFullmacImplIfc::SaeFrameRx and WlanFullmacImpl::SaeFrameTx.
740#[derive(Clone, Debug, Default, PartialEq)]
741pub struct SaeFrame {
742    /// The peer's MAC address. Required.
743    pub peer_sta_address: Option<[u8; 6]>,
744    /// The status code for this SAE frame. Required.
745    pub status_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
746    /// The sequence number. Required.
747    pub seq_num: Option<u16>,
748    /// Contains fields in the frame body relevant to SAE.
749    /// See IEEE Std 802.11-2016 table 9-35 and table 9-36 for more details.
750    /// Required.
751    pub sae_fields: Option<Vec<u8>>,
752    #[doc(hidden)]
753    pub __source_breaking: fidl::marker::SourceBreaking,
754}
755
756impl fidl::Persistable for SaeFrame {}
757
758#[derive(Clone, Debug, Default, PartialEq)]
759pub struct WlanFullmacImplAssocRespRequest {
760    pub peer_sta_address: Option<[u8; 6]>,
761    pub result_code: Option<WlanAssocResult>,
762    pub association_id: Option<u16>,
763    #[doc(hidden)]
764    pub __source_breaking: fidl::marker::SourceBreaking,
765}
766
767impl fidl::Persistable for WlanFullmacImplAssocRespRequest {}
768
769#[derive(Clone, Debug, Default, PartialEq)]
770pub struct WlanFullmacImplAuthRespRequest {
771    pub peer_sta_address: Option<[u8; 6]>,
772    pub result_code: Option<WlanAuthResult>,
773    #[doc(hidden)]
774    pub __source_breaking: fidl::marker::SourceBreaking,
775}
776
777impl fidl::Persistable for WlanFullmacImplAuthRespRequest {}
778
779#[derive(Clone, Debug, Default, PartialEq)]
780pub struct WlanFullmacImplConnectRequest {
781    pub selected_bss: Option<fidl_fuchsia_wlan_common__common::BssDescription>,
782    /// Timeout specified in beacon interval.
783    pub connect_failure_timeout: Option<u32>,
784    /// Additional parameters specific to the authentication exchange.
785    pub auth_type: Option<WlanAuthType>,
786    /// sae_password is ignored except when SAE_DRIVER_AUTH is enabled and the
787    /// auth_type is SAE.
788    pub sae_password: Option<Vec<u8>>,
789    /// WEP key used in the authentication exchange.
790    /// This is only populated for the WEP security type, otherwise this field is empty.
791    pub wep_key: Option<fidl_fuchsia_wlan_common__common::WlanKeyConfig>,
792    /// Additional parameters specific to the association exchange.
793    pub security_ie: Option<Vec<u8>>,
794    /// WEP key used in the authentication exchange.
795    /// This is only populated for the WEP security type, otherwise this field is empty.
796    pub wep_key_desc: Option<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor>,
797    #[doc(hidden)]
798    pub __source_breaking: fidl::marker::SourceBreaking,
799}
800
801impl fidl::Persistable for WlanFullmacImplConnectRequest {}
802
803#[derive(Clone, Debug, Default, PartialEq)]
804pub struct WlanFullmacImplDeauthRequest {
805    pub peer_sta_address: Option<[u8; 6]>,
806    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
807    #[doc(hidden)]
808    pub __source_breaking: fidl::marker::SourceBreaking,
809}
810
811impl fidl::Persistable for WlanFullmacImplDeauthRequest {}
812
813#[derive(Clone, Debug, Default, PartialEq)]
814pub struct WlanFullmacImplDisassocRequest {
815    pub peer_sta_address: Option<[u8; 6]>,
816    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
817    #[doc(hidden)]
818    pub __source_breaking: fidl::marker::SourceBreaking,
819}
820
821impl fidl::Persistable for WlanFullmacImplDisassocRequest {}
822
823#[derive(Clone, Debug, Default, PartialEq)]
824pub struct WlanFullmacImplEapolTxRequest {
825    pub src_addr: Option<[u8; 6]>,
826    pub dst_addr: Option<[u8; 6]>,
827    pub data: Option<Vec<u8>>,
828    #[doc(hidden)]
829    pub __source_breaking: fidl::marker::SourceBreaking,
830}
831
832impl fidl::Persistable for WlanFullmacImplEapolTxRequest {}
833
834#[derive(Clone, Debug, Default, PartialEq)]
835pub struct WlanFullmacImplIfcAssocIndRequest {
836    pub peer_sta_address: Option<[u8; 6]>,
837    pub listen_interval: Option<u16>,
838    pub ssid: Option<Vec<u8>>,
839    pub rsne: Option<Vec<u8>>,
840    pub vendor_ie: Option<Vec<u8>>,
841    #[doc(hidden)]
842    pub __source_breaking: fidl::marker::SourceBreaking,
843}
844
845impl fidl::Persistable for WlanFullmacImplIfcAssocIndRequest {}
846
847#[derive(Clone, Debug, Default, PartialEq)]
848pub struct WlanFullmacImplIfcAuthIndRequest {
849    pub peer_sta_address: Option<[u8; 6]>,
850    pub auth_type: Option<WlanAuthType>,
851    #[doc(hidden)]
852    pub __source_breaking: fidl::marker::SourceBreaking,
853}
854
855impl fidl::Persistable for WlanFullmacImplIfcAuthIndRequest {}
856
857#[derive(Clone, Debug, Default, PartialEq)]
858pub struct WlanFullmacImplIfcConnectConfRequest {
859    pub peer_sta_address: Option<[u8; 6]>,
860    pub result_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
861    pub association_id: Option<u16>,
862    pub association_ies: Option<Vec<u8>>,
863    #[doc(hidden)]
864    pub __source_breaking: fidl::marker::SourceBreaking,
865}
866
867impl fidl::Persistable for WlanFullmacImplIfcConnectConfRequest {}
868
869#[derive(Clone, Debug, Default, PartialEq)]
870pub struct WlanFullmacImplIfcDeauthConfRequest {
871    pub peer_sta_address: Option<[u8; 6]>,
872    #[doc(hidden)]
873    pub __source_breaking: fidl::marker::SourceBreaking,
874}
875
876impl fidl::Persistable for WlanFullmacImplIfcDeauthConfRequest {}
877
878#[derive(Clone, Debug, Default, PartialEq)]
879pub struct WlanFullmacImplIfcDeauthIndRequest {
880    /// MAC address of the peer. Required.
881    pub peer_sta_address: Option<[u8; 6]>,
882    /// Reason code for deauthentication. Required.
883    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
884    /// locally_initiated is true if deauth is initiated from the device,
885    /// and is false if it's initiated remotely (e.g. due to deauth frame)
886    pub locally_initiated: Option<bool>,
887    #[doc(hidden)]
888    pub __source_breaking: fidl::marker::SourceBreaking,
889}
890
891impl fidl::Persistable for WlanFullmacImplIfcDeauthIndRequest {}
892
893#[derive(Clone, Debug, Default, PartialEq)]
894pub struct WlanFullmacImplIfcDisassocConfRequest {
895    /// ZX_OK indicates that the disassociate request was serviced and the peer was
896    /// disassociated. Other errors indicate that the request could not be serviced, for these
897    /// or other reasons:
898    ///   - ZX_ERR_BAD_STATE: association not possible in current state (e.g. disconnected)
899    ///   - ZX_ERR_INVALID_ARGS: no association exists with specified peer
900    ///   - ZX_ERR_SHOULD_WAIT: disassociate request could not be serviced because firmware or
901    ///     driver was busy
902    pub status: Option<i32>,
903    #[doc(hidden)]
904    pub __source_breaking: fidl::marker::SourceBreaking,
905}
906
907impl fidl::Persistable for WlanFullmacImplIfcDisassocConfRequest {}
908
909#[derive(Clone, Debug, Default, PartialEq)]
910pub struct WlanFullmacImplIfcDisassocIndRequest {
911    /// Address of the peer that was disassociated. Required.
912    pub peer_sta_address: Option<[u8; 6]>,
913    /// Reason for the disassociation. Required.
914    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
915    /// Whether the disassociation was initiated from the device. Required.
916    /// locally_initiated is true if disassociation was initiated from the device (e.g. firmware
917    /// or vendor driver started the disassociation); false if the disassociation was initiated
918    /// externally (e.g. due to receipt of a disassociate frame from an AP).
919    pub locally_initiated: Option<bool>,
920    #[doc(hidden)]
921    pub __source_breaking: fidl::marker::SourceBreaking,
922}
923
924impl fidl::Persistable for WlanFullmacImplIfcDisassocIndRequest {}
925
926#[derive(Clone, Debug, Default, PartialEq)]
927pub struct WlanFullmacImplIfcEapolConfRequest {
928    /// The result of the transmission. Required.
929    pub result_code: Option<EapolTxResult>,
930    /// This value corresponds to the dst_addr in the EapolTxRequest we're confirming.
931    /// IEEE 802.11-2020 does not include this field, but we need it to disambiguate
932    /// if multiple EAPoL handshakes are ongoing.
933    /// Required.
934    pub dst_addr: Option<[u8; 6]>,
935    #[doc(hidden)]
936    pub __source_breaking: fidl::marker::SourceBreaking,
937}
938
939impl fidl::Persistable for WlanFullmacImplIfcEapolConfRequest {}
940
941#[derive(Clone, Debug, Default, PartialEq)]
942pub struct WlanFullmacImplIfcEapolIndRequest {
943    /// The address of the sender. Required.
944    pub src_addr: Option<[u8; 6]>,
945    /// The address of the intended destination. Required.
946    pub dst_addr: Option<[u8; 6]>,
947    /// The bytes of the EAPoL frame data. Required.
948    pub data: Option<Vec<u8>>,
949    #[doc(hidden)]
950    pub __source_breaking: fidl::marker::SourceBreaking,
951}
952
953impl fidl::Persistable for WlanFullmacImplIfcEapolIndRequest {}
954
955#[derive(Clone, Debug, Default, PartialEq)]
956pub struct WlanFullmacImplIfcOnPmkAvailableRequest {
957    /// The pairwise master key bytes. Required.
958    pub pmk: Option<Vec<u8>>,
959    /// The PMK IDs. Required.
960    pub pmkid: Option<Vec<u8>>,
961    #[doc(hidden)]
962    pub __source_breaking: fidl::marker::SourceBreaking,
963}
964
965impl fidl::Persistable for WlanFullmacImplIfcOnPmkAvailableRequest {}
966
967#[derive(Clone, Debug, Default, PartialEq)]
968pub struct WlanFullmacImplIfcOnScanEndRequest {
969    pub txn_id: Option<u64>,
970    pub code: Option<WlanScanResult>,
971    #[doc(hidden)]
972    pub __source_breaking: fidl::marker::SourceBreaking,
973}
974
975impl fidl::Persistable for WlanFullmacImplIfcOnScanEndRequest {}
976
977#[derive(Clone, Debug, Default, PartialEq)]
978pub struct WlanFullmacImplIfcOnScanResultRequest {
979    pub txn_id: Option<u64>,
980    pub timestamp_nanos: Option<i64>,
981    pub bss: Option<fidl_fuchsia_wlan_common__common::BssDescription>,
982    #[doc(hidden)]
983    pub __source_breaking: fidl::marker::SourceBreaking,
984}
985
986impl fidl::Persistable for WlanFullmacImplIfcOnScanResultRequest {}
987
988#[derive(Clone, Debug, Default, PartialEq)]
989pub struct WlanFullmacImplIfcRoamConfRequest {
990    /// BSSID of the target BSS. Required.
991    pub selected_bssid: Option<[u8; 6]>,
992    /// Result of the roam attempt. Required.
993    pub status_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
994    /// Whether the original BSS association has been maintained through the roam attempt. Required.
995    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
996    /// success then this field must be set to false; a roam failure typically incurs disassociation
997    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
998    pub original_association_maintained: Option<bool>,
999    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1000    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1001    /// This allows higher layers to decide how to clean up connection state after a failed roam
1002    /// attempt.
1003    pub target_bss_authenticated: Option<bool>,
1004    /// Association ID for this association with the AP. Required if `status_code` is success.
1005    pub association_id: Option<u16>,
1006    /// IEs for this association with the AP. Required if `status_code` is success.
1007    pub association_ies: Option<Vec<u8>>,
1008    #[doc(hidden)]
1009    pub __source_breaking: fidl::marker::SourceBreaking,
1010}
1011
1012impl fidl::Persistable for WlanFullmacImplIfcRoamConfRequest {}
1013
1014#[derive(Clone, Debug, Default, PartialEq)]
1015pub struct WlanFullmacImplIfcRoamResultIndRequest {
1016    /// BSSID of the target BSS. Required.
1017    pub selected_bssid: Option<[u8; 6]>,
1018    /// Result of the roam attempt. Required.
1019    pub status_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
1020    /// Whether the original BSS association has been maintained through the roam attempt. Required.
1021    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1022    /// success then this field must be set to false; a roam failure typically incurs disassociation
1023    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1024    pub original_association_maintained: Option<bool>,
1025    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1026    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1027    /// This allows higher layers to decide how to clean up connection state after a failed roam
1028    /// attempt.
1029    pub target_bss_authenticated: Option<bool>,
1030    /// Association ID for this association with the AP. Required if `status_code` is success.
1031    pub association_id: Option<u16>,
1032    /// IEs for this association with the AP. Required if `status_code` is success.
1033    pub association_ies: Option<Vec<u8>>,
1034    #[doc(hidden)]
1035    pub __source_breaking: fidl::marker::SourceBreaking,
1036}
1037
1038impl fidl::Persistable for WlanFullmacImplIfcRoamResultIndRequest {}
1039
1040#[derive(Clone, Debug, Default, PartialEq)]
1041pub struct WlanFullmacImplIfcRoamStartIndRequest {
1042    /// BSSID of the target BSS. Required.
1043    pub selected_bssid: Option<[u8; 6]>,
1044    /// Full BSS description of the target BSS. Required.
1045    /// If the data in BssDescription is incorrect or incomplete, the roam cannot succeed,
1046    /// because higher layers will not be able to complete required actions (e.g. SAE).
1047    pub selected_bss: Option<fidl_fuchsia_wlan_common__common::BssDescription>,
1048    /// Whether the original BSS association has been maintained at the start of a roam attempt.
1049    /// Required. 802.11 dictates that a STA can only be associated with a single BSS, so a roam
1050    /// attempt typically incurs disassociation at the start of the roam attempt. However,
1051    /// 802.11 also provides a mechanism (i.e. Fast BSS Transition) that allows a device to
1052    /// maintain association with the original BSS while establishing authentication with the
1053    /// target BSS, in order to avoid losing the original association if authentication with the
1054    /// target BSS fails.
1055    pub original_association_maintained: Option<bool>,
1056    #[doc(hidden)]
1057    pub __source_breaking: fidl::marker::SourceBreaking,
1058}
1059
1060impl fidl::Persistable for WlanFullmacImplIfcRoamStartIndRequest {}
1061
1062#[derive(Clone, Debug, Default, PartialEq)]
1063pub struct WlanFullmacImplIfcSaeHandshakeIndRequest {
1064    pub peer_sta_address: Option<[u8; 6]>,
1065    #[doc(hidden)]
1066    pub __source_breaking: fidl::marker::SourceBreaking,
1067}
1068
1069impl fidl::Persistable for WlanFullmacImplIfcSaeHandshakeIndRequest {}
1070
1071#[derive(Clone, Debug, Default, PartialEq)]
1072pub struct WlanFullmacImplIfcStartConfRequest {
1073    /// The result of the StartBss request. Required.
1074    pub result_code: Option<StartResult>,
1075    #[doc(hidden)]
1076    pub __source_breaking: fidl::marker::SourceBreaking,
1077}
1078
1079impl fidl::Persistable for WlanFullmacImplIfcStartConfRequest {}
1080
1081#[derive(Clone, Debug, Default, PartialEq)]
1082pub struct WlanFullmacImplIfcStopConfRequest {
1083    /// The result of the StopBss request. Required.
1084    pub result_code: Option<StopResult>,
1085    #[doc(hidden)]
1086    pub __source_breaking: fidl::marker::SourceBreaking,
1087}
1088
1089impl fidl::Persistable for WlanFullmacImplIfcStopConfRequest {}
1090
1091#[derive(Clone, Debug, Default, PartialEq)]
1092pub struct WlanFullmacImplOnLinkStateChangedRequest {
1093    pub online: Option<bool>,
1094    #[doc(hidden)]
1095    pub __source_breaking: fidl::marker::SourceBreaking,
1096}
1097
1098impl fidl::Persistable for WlanFullmacImplOnLinkStateChangedRequest {}
1099
1100#[derive(Clone, Debug, Default, PartialEq)]
1101pub struct WlanFullmacImplReconnectRequest {
1102    pub peer_sta_address: Option<[u8; 6]>,
1103    #[doc(hidden)]
1104    pub __source_breaking: fidl::marker::SourceBreaking,
1105}
1106
1107impl fidl::Persistable for WlanFullmacImplReconnectRequest {}
1108
1109#[derive(Clone, Debug, Default, PartialEq)]
1110pub struct WlanFullmacImplRoamRequest {
1111    /// Full BSS description of the target BSS. Required.
1112    /// If the data in BssDescription is incorrect or incomplete, the roam cannot succeed,
1113    /// because higher layers will not be able to complete required actions (e.g. SAE).
1114    pub selected_bss: Option<fidl_fuchsia_wlan_common__common::BssDescription>,
1115    #[doc(hidden)]
1116    pub __source_breaking: fidl::marker::SourceBreaking,
1117}
1118
1119impl fidl::Persistable for WlanFullmacImplRoamRequest {}
1120
1121#[derive(Clone, Debug, Default, PartialEq)]
1122pub struct WlanFullmacImplSaeHandshakeRespRequest {
1123    /// The peer's MAC address. Required.
1124    pub peer_sta_address: Option<[u8; 6]>,
1125    /// The status of the SAE handshake. Required.
1126    pub status_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
1127    #[doc(hidden)]
1128    pub __source_breaking: fidl::marker::SourceBreaking,
1129}
1130
1131impl fidl::Persistable for WlanFullmacImplSaeHandshakeRespRequest {}
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 WlanFullmacImplQueryResponse {
1201    /// Current station address. Required.
1202    pub sta_addr: Option<[u8; 6]>,
1203    /// MAC role. Required.
1204    pub role: Option<fidl_fuchsia_wlan_common__common::WlanMacRole>,
1205    /// Supported bands. Required.
1206    pub band_caps: Option<Vec<BandCapability>>,
1207    /// Factory mac address. Required.
1208    pub factory_addr: Option<[u8; 6]>,
1209    #[doc(hidden)]
1210    pub __source_breaking: fidl::marker::SourceBreaking,
1211}
1212
1213impl fidl::Persistable for WlanFullmacImplQueryResponse {}
1214
1215pub mod wlan_fullmac_impl__ordinals {
1216    pub const INIT: u64 = 0x593dfb6cb3f0f1aa;
1217    pub const QUERY: u64 = 0x28ac65f9da3941d4;
1218    pub const QUERY_SECURITY_SUPPORT: u64 = 0x11cf3fa6eeb93f84;
1219    pub const QUERY_SPECTRUM_MANAGEMENT_SUPPORT: u64 = 0x22ae7551d855b83a;
1220    pub const QUERY_TELEMETRY_SUPPORT: u64 = 0x4561479ca560827f;
1221    pub const START_SCAN: u64 = 0x26c17bf595aa161c;
1222    pub const CONNECT: u64 = 0x19eb0322efb07a76;
1223    pub const RECONNECT: u64 = 0x474084c4ef19ee71;
1224    pub const ROAM: u64 = 0x1e35dcc98b124b64;
1225    pub const AUTH_RESP: u64 = 0x5f7ea24b44a4aaeb;
1226    pub const DEAUTH: u64 = 0x112786eccbf12f37;
1227    pub const ASSOC_RESP: u64 = 0x5022ce6b8eefec2f;
1228    pub const DISASSOC: u64 = 0x9c0fc4e8de53e01;
1229    pub const START_BSS: u64 = 0x6922644d6b1d341d;
1230    pub const STOP_BSS: u64 = 0x5aeb9b72e7575268;
1231    pub const SET_KEYS: u64 = 0x20f46b1e039f0985;
1232    pub const EAPOL_TX: u64 = 0x529a2d90fd4c8177;
1233    pub const GET_IFACE_STATS: u64 = 0x505563776ef0392f;
1234    pub const GET_IFACE_HISTOGRAM_STATS: u64 = 0x503d586f30ccf2cd;
1235    pub const GET_SIGNAL_REPORT: u64 = 0x5d93f056e4796bb3;
1236    pub const SAE_HANDSHAKE_RESP: u64 = 0x72cd3a31ae5a54f6;
1237    pub const SAE_FRAME_TX: u64 = 0x4715ad5dc5a6340f;
1238    pub const WMM_STATUS_REQ: u64 = 0x635ecef3beb7a059;
1239    pub const ON_LINK_STATE_CHANGED: u64 = 0x4d896e5b68e488d7;
1240    pub const SET_MAC_ADDRESS: u64 = 0x211a97f6f21ae5f0;
1241}
1242
1243pub mod wlan_fullmac_impl_ifc_ordinals {
1244    pub const ON_SCAN_RESULT: u64 = 0x29aa81dc570f7a3e;
1245    pub const ON_SCAN_END: u64 = 0x7cd8aff80d27073c;
1246    pub const CONNECT_CONF: u64 = 0x3c22c6d80b2a2759;
1247    pub const ROAM_CONF: u64 = 0x368b2a5b903b3f7b;
1248    pub const ROAM_START_IND: u64 = 0x23e1d9368935e7e4;
1249    pub const ROAM_RESULT_IND: u64 = 0x7081c1b1ceea4914;
1250    pub const AUTH_IND: u64 = 0x270e1f8889650d0b;
1251    pub const DEAUTH_CONF: u64 = 0x2c94b0d7258111b7;
1252    pub const DEAUTH_IND: u64 = 0x26cd27cdadd8dbaf;
1253    pub const ASSOC_IND: u64 = 0x3e44529e3dc179ce;
1254    pub const DISASSOC_CONF: u64 = 0x7c713bcd58a76cb3;
1255    pub const DISASSOC_IND: u64 = 0x6667b381b7f3990f;
1256    pub const START_CONF: u64 = 0x3e9b9641f3ddc7fc;
1257    pub const STOP_CONF: u64 = 0x320a5ff227a4e9df;
1258    pub const EAPOL_CONF: u64 = 0x77364db9cc3970ec;
1259    pub const ON_CHANNEL_SWITCH: u64 = 0x21db0b8f71cae647;
1260    pub const SIGNAL_REPORT: u64 = 0x79679fa8789c3d9f;
1261    pub const EAPOL_IND: u64 = 0x3de8ec1eda10d1d0;
1262    pub const ON_PMK_AVAILABLE: u64 = 0x5cedd8d9be28a17e;
1263    pub const SAE_HANDSHAKE_IND: u64 = 0x4f3d53885503a1d8;
1264    pub const SAE_FRAME_RX: u64 = 0x51650906857ed4d4;
1265    pub const ON_WMM_STATUS_RESP: u64 = 0x6823a88bf3ba8b2a;
1266}
1267
1268mod internal {
1269    use super::*;
1270    unsafe impl fidl::encoding::TypeMarker for EapolTxResult {
1271        type Owned = Self;
1272
1273        #[inline(always)]
1274        fn inline_align(_context: fidl::encoding::Context) -> usize {
1275            std::mem::align_of::<u8>()
1276        }
1277
1278        #[inline(always)]
1279        fn inline_size(_context: fidl::encoding::Context) -> usize {
1280            std::mem::size_of::<u8>()
1281        }
1282
1283        #[inline(always)]
1284        fn encode_is_copy() -> bool {
1285            false
1286        }
1287
1288        #[inline(always)]
1289        fn decode_is_copy() -> bool {
1290            false
1291        }
1292    }
1293
1294    impl fidl::encoding::ValueTypeMarker for EapolTxResult {
1295        type Borrowed<'a> = Self;
1296        #[inline(always)]
1297        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1298            *value
1299        }
1300    }
1301
1302    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for EapolTxResult {
1303        #[inline]
1304        unsafe fn encode(
1305            self,
1306            encoder: &mut fidl::encoding::Encoder<'_, D>,
1307            offset: usize,
1308            _depth: fidl::encoding::Depth,
1309        ) -> fidl::Result<()> {
1310            encoder.debug_check_bounds::<Self>(offset);
1311            encoder.write_num(self.into_primitive(), offset);
1312            Ok(())
1313        }
1314    }
1315
1316    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolTxResult {
1317        #[inline(always)]
1318        fn new_empty() -> Self {
1319            Self::unknown()
1320        }
1321
1322        #[inline]
1323        unsafe fn decode(
1324            &mut self,
1325            decoder: &mut fidl::encoding::Decoder<'_, D>,
1326            offset: usize,
1327            _depth: fidl::encoding::Depth,
1328        ) -> fidl::Result<()> {
1329            decoder.debug_check_bounds::<Self>(offset);
1330            let prim = decoder.read_num::<u8>(offset);
1331
1332            *self = Self::from_primitive_allow_unknown(prim);
1333            Ok(())
1334        }
1335    }
1336    unsafe impl fidl::encoding::TypeMarker for StartResult {
1337        type Owned = Self;
1338
1339        #[inline(always)]
1340        fn inline_align(_context: fidl::encoding::Context) -> usize {
1341            std::mem::align_of::<u8>()
1342        }
1343
1344        #[inline(always)]
1345        fn inline_size(_context: fidl::encoding::Context) -> usize {
1346            std::mem::size_of::<u8>()
1347        }
1348
1349        #[inline(always)]
1350        fn encode_is_copy() -> bool {
1351            false
1352        }
1353
1354        #[inline(always)]
1355        fn decode_is_copy() -> bool {
1356            false
1357        }
1358    }
1359
1360    impl fidl::encoding::ValueTypeMarker for StartResult {
1361        type Borrowed<'a> = Self;
1362        #[inline(always)]
1363        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1364            *value
1365        }
1366    }
1367
1368    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StartResult {
1369        #[inline]
1370        unsafe fn encode(
1371            self,
1372            encoder: &mut fidl::encoding::Encoder<'_, D>,
1373            offset: usize,
1374            _depth: fidl::encoding::Depth,
1375        ) -> fidl::Result<()> {
1376            encoder.debug_check_bounds::<Self>(offset);
1377            encoder.write_num(self.into_primitive(), offset);
1378            Ok(())
1379        }
1380    }
1381
1382    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartResult {
1383        #[inline(always)]
1384        fn new_empty() -> Self {
1385            Self::unknown()
1386        }
1387
1388        #[inline]
1389        unsafe fn decode(
1390            &mut self,
1391            decoder: &mut fidl::encoding::Decoder<'_, D>,
1392            offset: usize,
1393            _depth: fidl::encoding::Depth,
1394        ) -> fidl::Result<()> {
1395            decoder.debug_check_bounds::<Self>(offset);
1396            let prim = decoder.read_num::<u8>(offset);
1397
1398            *self = Self::from_primitive_allow_unknown(prim);
1399            Ok(())
1400        }
1401    }
1402    unsafe impl fidl::encoding::TypeMarker for StopResult {
1403        type Owned = Self;
1404
1405        #[inline(always)]
1406        fn inline_align(_context: fidl::encoding::Context) -> usize {
1407            std::mem::align_of::<u8>()
1408        }
1409
1410        #[inline(always)]
1411        fn inline_size(_context: fidl::encoding::Context) -> usize {
1412            std::mem::size_of::<u8>()
1413        }
1414
1415        #[inline(always)]
1416        fn encode_is_copy() -> bool {
1417            false
1418        }
1419
1420        #[inline(always)]
1421        fn decode_is_copy() -> bool {
1422            false
1423        }
1424    }
1425
1426    impl fidl::encoding::ValueTypeMarker for StopResult {
1427        type Borrowed<'a> = Self;
1428        #[inline(always)]
1429        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1430            *value
1431        }
1432    }
1433
1434    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StopResult {
1435        #[inline]
1436        unsafe fn encode(
1437            self,
1438            encoder: &mut fidl::encoding::Encoder<'_, D>,
1439            offset: usize,
1440            _depth: fidl::encoding::Depth,
1441        ) -> fidl::Result<()> {
1442            encoder.debug_check_bounds::<Self>(offset);
1443            encoder.write_num(self.into_primitive(), offset);
1444            Ok(())
1445        }
1446    }
1447
1448    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopResult {
1449        #[inline(always)]
1450        fn new_empty() -> Self {
1451            Self::unknown()
1452        }
1453
1454        #[inline]
1455        unsafe fn decode(
1456            &mut self,
1457            decoder: &mut fidl::encoding::Decoder<'_, D>,
1458            offset: usize,
1459            _depth: fidl::encoding::Depth,
1460        ) -> fidl::Result<()> {
1461            decoder.debug_check_bounds::<Self>(offset);
1462            let prim = decoder.read_num::<u8>(offset);
1463
1464            *self = Self::from_primitive_allow_unknown(prim);
1465            Ok(())
1466        }
1467    }
1468    unsafe impl fidl::encoding::TypeMarker for WlanAssocResult {
1469        type Owned = Self;
1470
1471        #[inline(always)]
1472        fn inline_align(_context: fidl::encoding::Context) -> usize {
1473            std::mem::align_of::<u8>()
1474        }
1475
1476        #[inline(always)]
1477        fn inline_size(_context: fidl::encoding::Context) -> usize {
1478            std::mem::size_of::<u8>()
1479        }
1480
1481        #[inline(always)]
1482        fn encode_is_copy() -> bool {
1483            false
1484        }
1485
1486        #[inline(always)]
1487        fn decode_is_copy() -> bool {
1488            false
1489        }
1490    }
1491
1492    impl fidl::encoding::ValueTypeMarker for WlanAssocResult {
1493        type Borrowed<'a> = Self;
1494        #[inline(always)]
1495        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1496            *value
1497        }
1498    }
1499
1500    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1501        for WlanAssocResult
1502    {
1503        #[inline]
1504        unsafe fn encode(
1505            self,
1506            encoder: &mut fidl::encoding::Encoder<'_, D>,
1507            offset: usize,
1508            _depth: fidl::encoding::Depth,
1509        ) -> fidl::Result<()> {
1510            encoder.debug_check_bounds::<Self>(offset);
1511            encoder.write_num(self.into_primitive(), offset);
1512            Ok(())
1513        }
1514    }
1515
1516    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAssocResult {
1517        #[inline(always)]
1518        fn new_empty() -> Self {
1519            Self::unknown()
1520        }
1521
1522        #[inline]
1523        unsafe fn decode(
1524            &mut self,
1525            decoder: &mut fidl::encoding::Decoder<'_, D>,
1526            offset: usize,
1527            _depth: fidl::encoding::Depth,
1528        ) -> fidl::Result<()> {
1529            decoder.debug_check_bounds::<Self>(offset);
1530            let prim = decoder.read_num::<u8>(offset);
1531
1532            *self = Self::from_primitive_allow_unknown(prim);
1533            Ok(())
1534        }
1535    }
1536    unsafe impl fidl::encoding::TypeMarker for WlanAuthResult {
1537        type Owned = Self;
1538
1539        #[inline(always)]
1540        fn inline_align(_context: fidl::encoding::Context) -> usize {
1541            std::mem::align_of::<u8>()
1542        }
1543
1544        #[inline(always)]
1545        fn inline_size(_context: fidl::encoding::Context) -> usize {
1546            std::mem::size_of::<u8>()
1547        }
1548
1549        #[inline(always)]
1550        fn encode_is_copy() -> bool {
1551            false
1552        }
1553
1554        #[inline(always)]
1555        fn decode_is_copy() -> bool {
1556            false
1557        }
1558    }
1559
1560    impl fidl::encoding::ValueTypeMarker for WlanAuthResult {
1561        type Borrowed<'a> = Self;
1562        #[inline(always)]
1563        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1564            *value
1565        }
1566    }
1567
1568    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanAuthResult {
1569        #[inline]
1570        unsafe fn encode(
1571            self,
1572            encoder: &mut fidl::encoding::Encoder<'_, D>,
1573            offset: usize,
1574            _depth: fidl::encoding::Depth,
1575        ) -> fidl::Result<()> {
1576            encoder.debug_check_bounds::<Self>(offset);
1577            encoder.write_num(self.into_primitive(), offset);
1578            Ok(())
1579        }
1580    }
1581
1582    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAuthResult {
1583        #[inline(always)]
1584        fn new_empty() -> Self {
1585            Self::unknown()
1586        }
1587
1588        #[inline]
1589        unsafe fn decode(
1590            &mut self,
1591            decoder: &mut fidl::encoding::Decoder<'_, D>,
1592            offset: usize,
1593            _depth: fidl::encoding::Depth,
1594        ) -> fidl::Result<()> {
1595            decoder.debug_check_bounds::<Self>(offset);
1596            let prim = decoder.read_num::<u8>(offset);
1597
1598            *self = Self::from_primitive_allow_unknown(prim);
1599            Ok(())
1600        }
1601    }
1602    unsafe impl fidl::encoding::TypeMarker for WlanAuthType {
1603        type Owned = Self;
1604
1605        #[inline(always)]
1606        fn inline_align(_context: fidl::encoding::Context) -> usize {
1607            std::mem::align_of::<u8>()
1608        }
1609
1610        #[inline(always)]
1611        fn inline_size(_context: fidl::encoding::Context) -> usize {
1612            std::mem::size_of::<u8>()
1613        }
1614
1615        #[inline(always)]
1616        fn encode_is_copy() -> bool {
1617            false
1618        }
1619
1620        #[inline(always)]
1621        fn decode_is_copy() -> bool {
1622            false
1623        }
1624    }
1625
1626    impl fidl::encoding::ValueTypeMarker for WlanAuthType {
1627        type Borrowed<'a> = Self;
1628        #[inline(always)]
1629        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1630            *value
1631        }
1632    }
1633
1634    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanAuthType {
1635        #[inline]
1636        unsafe fn encode(
1637            self,
1638            encoder: &mut fidl::encoding::Encoder<'_, D>,
1639            offset: usize,
1640            _depth: fidl::encoding::Depth,
1641        ) -> fidl::Result<()> {
1642            encoder.debug_check_bounds::<Self>(offset);
1643            encoder.write_num(self.into_primitive(), offset);
1644            Ok(())
1645        }
1646    }
1647
1648    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAuthType {
1649        #[inline(always)]
1650        fn new_empty() -> Self {
1651            Self::unknown()
1652        }
1653
1654        #[inline]
1655        unsafe fn decode(
1656            &mut self,
1657            decoder: &mut fidl::encoding::Decoder<'_, D>,
1658            offset: usize,
1659            _depth: fidl::encoding::Depth,
1660        ) -> fidl::Result<()> {
1661            decoder.debug_check_bounds::<Self>(offset);
1662            let prim = decoder.read_num::<u8>(offset);
1663
1664            *self = Self::from_primitive_allow_unknown(prim);
1665            Ok(())
1666        }
1667    }
1668    unsafe impl fidl::encoding::TypeMarker for WlanScanResult {
1669        type Owned = Self;
1670
1671        #[inline(always)]
1672        fn inline_align(_context: fidl::encoding::Context) -> usize {
1673            std::mem::align_of::<u8>()
1674        }
1675
1676        #[inline(always)]
1677        fn inline_size(_context: fidl::encoding::Context) -> usize {
1678            std::mem::size_of::<u8>()
1679        }
1680
1681        #[inline(always)]
1682        fn encode_is_copy() -> bool {
1683            false
1684        }
1685
1686        #[inline(always)]
1687        fn decode_is_copy() -> bool {
1688            false
1689        }
1690    }
1691
1692    impl fidl::encoding::ValueTypeMarker for WlanScanResult {
1693        type Borrowed<'a> = Self;
1694        #[inline(always)]
1695        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1696            *value
1697        }
1698    }
1699
1700    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanScanResult {
1701        #[inline]
1702        unsafe fn encode(
1703            self,
1704            encoder: &mut fidl::encoding::Encoder<'_, D>,
1705            offset: usize,
1706            _depth: fidl::encoding::Depth,
1707        ) -> fidl::Result<()> {
1708            encoder.debug_check_bounds::<Self>(offset);
1709            encoder.write_num(self.into_primitive(), offset);
1710            Ok(())
1711        }
1712    }
1713
1714    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanScanResult {
1715        #[inline(always)]
1716        fn new_empty() -> Self {
1717            Self::unknown()
1718        }
1719
1720        #[inline]
1721        unsafe fn decode(
1722            &mut self,
1723            decoder: &mut fidl::encoding::Decoder<'_, D>,
1724            offset: usize,
1725            _depth: fidl::encoding::Depth,
1726        ) -> fidl::Result<()> {
1727            decoder.debug_check_bounds::<Self>(offset);
1728            let prim = decoder.read_num::<u8>(offset);
1729
1730            *self = Self::from_primitive_allow_unknown(prim);
1731            Ok(())
1732        }
1733    }
1734    unsafe impl fidl::encoding::TypeMarker for WlanScanType {
1735        type Owned = Self;
1736
1737        #[inline(always)]
1738        fn inline_align(_context: fidl::encoding::Context) -> usize {
1739            std::mem::align_of::<u8>()
1740        }
1741
1742        #[inline(always)]
1743        fn inline_size(_context: fidl::encoding::Context) -> usize {
1744            std::mem::size_of::<u8>()
1745        }
1746
1747        #[inline(always)]
1748        fn encode_is_copy() -> bool {
1749            false
1750        }
1751
1752        #[inline(always)]
1753        fn decode_is_copy() -> bool {
1754            false
1755        }
1756    }
1757
1758    impl fidl::encoding::ValueTypeMarker for WlanScanType {
1759        type Borrowed<'a> = Self;
1760        #[inline(always)]
1761        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1762            *value
1763        }
1764    }
1765
1766    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanScanType {
1767        #[inline]
1768        unsafe fn encode(
1769            self,
1770            encoder: &mut fidl::encoding::Encoder<'_, D>,
1771            offset: usize,
1772            _depth: fidl::encoding::Depth,
1773        ) -> fidl::Result<()> {
1774            encoder.debug_check_bounds::<Self>(offset);
1775            encoder.write_num(self.into_primitive(), offset);
1776            Ok(())
1777        }
1778    }
1779
1780    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanScanType {
1781        #[inline(always)]
1782        fn new_empty() -> Self {
1783            Self::unknown()
1784        }
1785
1786        #[inline]
1787        unsafe fn decode(
1788            &mut self,
1789            decoder: &mut fidl::encoding::Decoder<'_, D>,
1790            offset: usize,
1791            _depth: fidl::encoding::Depth,
1792        ) -> fidl::Result<()> {
1793            decoder.debug_check_bounds::<Self>(offset);
1794            let prim = decoder.read_num::<u8>(offset);
1795
1796            *self = Self::from_primitive_allow_unknown(prim);
1797            Ok(())
1798        }
1799    }
1800
1801    impl fidl::encoding::ValueTypeMarker for WlanFullmacChannelSwitchInfo {
1802        type Borrowed<'a> = &'a Self;
1803        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1804            value
1805        }
1806    }
1807
1808    unsafe impl fidl::encoding::TypeMarker for WlanFullmacChannelSwitchInfo {
1809        type Owned = Self;
1810
1811        #[inline(always)]
1812        fn inline_align(_context: fidl::encoding::Context) -> usize {
1813            1
1814        }
1815
1816        #[inline(always)]
1817        fn inline_size(_context: fidl::encoding::Context) -> usize {
1818            1
1819        }
1820        #[inline(always)]
1821        fn encode_is_copy() -> bool {
1822            true
1823        }
1824
1825        #[inline(always)]
1826        fn decode_is_copy() -> bool {
1827            true
1828        }
1829    }
1830
1831    unsafe impl<D: fidl::encoding::ResourceDialect>
1832        fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D> for &WlanFullmacChannelSwitchInfo
1833    {
1834        #[inline]
1835        unsafe fn encode(
1836            self,
1837            encoder: &mut fidl::encoding::Encoder<'_, D>,
1838            offset: usize,
1839            _depth: fidl::encoding::Depth,
1840        ) -> fidl::Result<()> {
1841            encoder.debug_check_bounds::<WlanFullmacChannelSwitchInfo>(offset);
1842            unsafe {
1843                // Copy the object into the buffer.
1844                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1845                (buf_ptr as *mut WlanFullmacChannelSwitchInfo)
1846                    .write_unaligned((self as *const WlanFullmacChannelSwitchInfo).read());
1847                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
1848                // done second because the memcpy will write garbage to these bytes.
1849            }
1850            Ok(())
1851        }
1852    }
1853    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u8, D>>
1854        fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D> for (T0,)
1855    {
1856        #[inline]
1857        unsafe fn encode(
1858            self,
1859            encoder: &mut fidl::encoding::Encoder<'_, D>,
1860            offset: usize,
1861            depth: fidl::encoding::Depth,
1862        ) -> fidl::Result<()> {
1863            encoder.debug_check_bounds::<WlanFullmacChannelSwitchInfo>(offset);
1864            // Zero out padding regions. There's no need to apply masks
1865            // because the unmasked parts will be overwritten by fields.
1866            // Write the fields.
1867            self.0.encode(encoder, offset + 0, depth)?;
1868            Ok(())
1869        }
1870    }
1871
1872    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1873        for WlanFullmacChannelSwitchInfo
1874    {
1875        #[inline(always)]
1876        fn new_empty() -> Self {
1877            Self { new_channel: fidl::new_empty!(u8, D) }
1878        }
1879
1880        #[inline]
1881        unsafe fn decode(
1882            &mut self,
1883            decoder: &mut fidl::encoding::Decoder<'_, D>,
1884            offset: usize,
1885            _depth: fidl::encoding::Depth,
1886        ) -> fidl::Result<()> {
1887            decoder.debug_check_bounds::<Self>(offset);
1888            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1889            // Verify that padding bytes are zero.
1890            // Copy from the buffer into the object.
1891            unsafe {
1892                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
1893            }
1894            Ok(())
1895        }
1896    }
1897
1898    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnChannelSwitchRequest {
1899        type Borrowed<'a> = &'a Self;
1900        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1901            value
1902        }
1903    }
1904
1905    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnChannelSwitchRequest {
1906        type Owned = Self;
1907
1908        #[inline(always)]
1909        fn inline_align(_context: fidl::encoding::Context) -> usize {
1910            1
1911        }
1912
1913        #[inline(always)]
1914        fn inline_size(_context: fidl::encoding::Context) -> usize {
1915            1
1916        }
1917        #[inline(always)]
1918        fn encode_is_copy() -> bool {
1919            true
1920        }
1921
1922        #[inline(always)]
1923        fn decode_is_copy() -> bool {
1924            true
1925        }
1926    }
1927
1928    unsafe impl<D: fidl::encoding::ResourceDialect>
1929        fidl::encoding::Encode<WlanFullmacImplIfcOnChannelSwitchRequest, D>
1930        for &WlanFullmacImplIfcOnChannelSwitchRequest
1931    {
1932        #[inline]
1933        unsafe fn encode(
1934            self,
1935            encoder: &mut fidl::encoding::Encoder<'_, D>,
1936            offset: usize,
1937            _depth: fidl::encoding::Depth,
1938        ) -> fidl::Result<()> {
1939            encoder.debug_check_bounds::<WlanFullmacImplIfcOnChannelSwitchRequest>(offset);
1940            unsafe {
1941                // Copy the object into the buffer.
1942                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1943                (buf_ptr as *mut WlanFullmacImplIfcOnChannelSwitchRequest).write_unaligned(
1944                    (self as *const WlanFullmacImplIfcOnChannelSwitchRequest).read(),
1945                );
1946                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
1947                // done second because the memcpy will write garbage to these bytes.
1948            }
1949            Ok(())
1950        }
1951    }
1952    unsafe impl<
1953        D: fidl::encoding::ResourceDialect,
1954        T0: fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D>,
1955    > fidl::encoding::Encode<WlanFullmacImplIfcOnChannelSwitchRequest, D> for (T0,)
1956    {
1957        #[inline]
1958        unsafe fn encode(
1959            self,
1960            encoder: &mut fidl::encoding::Encoder<'_, D>,
1961            offset: usize,
1962            depth: fidl::encoding::Depth,
1963        ) -> fidl::Result<()> {
1964            encoder.debug_check_bounds::<WlanFullmacImplIfcOnChannelSwitchRequest>(offset);
1965            // Zero out padding regions. There's no need to apply masks
1966            // because the unmasked parts will be overwritten by fields.
1967            // Write the fields.
1968            self.0.encode(encoder, offset + 0, depth)?;
1969            Ok(())
1970        }
1971    }
1972
1973    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1974        for WlanFullmacImplIfcOnChannelSwitchRequest
1975    {
1976        #[inline(always)]
1977        fn new_empty() -> Self {
1978            Self { ind: fidl::new_empty!(WlanFullmacChannelSwitchInfo, D) }
1979        }
1980
1981        #[inline]
1982        unsafe fn decode(
1983            &mut self,
1984            decoder: &mut fidl::encoding::Decoder<'_, D>,
1985            offset: usize,
1986            _depth: fidl::encoding::Depth,
1987        ) -> fidl::Result<()> {
1988            decoder.debug_check_bounds::<Self>(offset);
1989            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1990            // Verify that padding bytes are zero.
1991            // Copy from the buffer into the object.
1992            unsafe {
1993                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
1994            }
1995            Ok(())
1996        }
1997    }
1998
1999    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnWmmStatusRespRequest {
2000        type Borrowed<'a> = &'a Self;
2001        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2002            value
2003        }
2004    }
2005
2006    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnWmmStatusRespRequest {
2007        type Owned = Self;
2008
2009        #[inline(always)]
2010        fn inline_align(_context: fidl::encoding::Context) -> usize {
2011            4
2012        }
2013
2014        #[inline(always)]
2015        fn inline_size(_context: fidl::encoding::Context) -> usize {
2016            40
2017        }
2018    }
2019
2020    unsafe impl<D: fidl::encoding::ResourceDialect>
2021        fidl::encoding::Encode<WlanFullmacImplIfcOnWmmStatusRespRequest, D>
2022        for &WlanFullmacImplIfcOnWmmStatusRespRequest
2023    {
2024        #[inline]
2025        unsafe fn encode(
2026            self,
2027            encoder: &mut fidl::encoding::Encoder<'_, D>,
2028            offset: usize,
2029            _depth: fidl::encoding::Depth,
2030        ) -> fidl::Result<()> {
2031            encoder.debug_check_bounds::<WlanFullmacImplIfcOnWmmStatusRespRequest>(offset);
2032            // Delegate to tuple encoding.
2033            fidl::encoding::Encode::<WlanFullmacImplIfcOnWmmStatusRespRequest, D>::encode(
2034                (
2035                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
2036                    <fidl_fuchsia_wlan_common__common::WlanWmmParameters as fidl::encoding::ValueTypeMarker>::borrow(&self.wmm_params),
2037                ),
2038                encoder, offset, _depth
2039            )
2040        }
2041    }
2042    unsafe impl<
2043        D: fidl::encoding::ResourceDialect,
2044        T0: fidl::encoding::Encode<i32, D>,
2045        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::WlanWmmParameters, D>,
2046    > fidl::encoding::Encode<WlanFullmacImplIfcOnWmmStatusRespRequest, D> for (T0, T1)
2047    {
2048        #[inline]
2049        unsafe fn encode(
2050            self,
2051            encoder: &mut fidl::encoding::Encoder<'_, D>,
2052            offset: usize,
2053            depth: fidl::encoding::Depth,
2054        ) -> fidl::Result<()> {
2055            encoder.debug_check_bounds::<WlanFullmacImplIfcOnWmmStatusRespRequest>(offset);
2056            // Zero out padding regions. There's no need to apply masks
2057            // because the unmasked parts will be overwritten by fields.
2058            unsafe {
2059                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(36);
2060                (ptr as *mut u32).write_unaligned(0);
2061            }
2062            // Write the fields.
2063            self.0.encode(encoder, offset + 0, depth)?;
2064            self.1.encode(encoder, offset + 4, depth)?;
2065            Ok(())
2066        }
2067    }
2068
2069    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2070        for WlanFullmacImplIfcOnWmmStatusRespRequest
2071    {
2072        #[inline(always)]
2073        fn new_empty() -> Self {
2074            Self {
2075                status: fidl::new_empty!(i32, D),
2076                wmm_params: fidl::new_empty!(
2077                    fidl_fuchsia_wlan_common__common::WlanWmmParameters,
2078                    D
2079                ),
2080            }
2081        }
2082
2083        #[inline]
2084        unsafe fn decode(
2085            &mut self,
2086            decoder: &mut fidl::encoding::Decoder<'_, D>,
2087            offset: usize,
2088            _depth: fidl::encoding::Depth,
2089        ) -> fidl::Result<()> {
2090            decoder.debug_check_bounds::<Self>(offset);
2091            // Verify that padding bytes are zero.
2092            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(36) };
2093            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2094            let mask = 0xffff0000u32;
2095            let maskedval = padval & mask;
2096            if maskedval != 0 {
2097                return Err(fidl::Error::NonZeroPadding {
2098                    padding_start: offset + 36 + ((mask as u64).trailing_zeros() / 8) as usize,
2099                });
2100            }
2101            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
2102            fidl::decode!(
2103                fidl_fuchsia_wlan_common__common::WlanWmmParameters,
2104                D,
2105                &mut self.wmm_params,
2106                decoder,
2107                offset + 4,
2108                _depth
2109            )?;
2110            Ok(())
2111        }
2112    }
2113
2114    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2115        type Borrowed<'a> = &'a Self;
2116        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2117            value
2118        }
2119    }
2120
2121    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2122        type Owned = Self;
2123
2124        #[inline(always)]
2125        fn inline_align(_context: fidl::encoding::Context) -> usize {
2126            8
2127        }
2128
2129        #[inline(always)]
2130        fn inline_size(_context: fidl::encoding::Context) -> usize {
2131            16
2132        }
2133    }
2134
2135    unsafe impl<D: fidl::encoding::ResourceDialect>
2136        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D>
2137        for &WlanFullmacImplIfcSaeFrameRxRequest
2138    {
2139        #[inline]
2140        unsafe fn encode(
2141            self,
2142            encoder: &mut fidl::encoding::Encoder<'_, D>,
2143            offset: usize,
2144            _depth: fidl::encoding::Depth,
2145        ) -> fidl::Result<()> {
2146            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2147            // Delegate to tuple encoding.
2148            fidl::encoding::Encode::<WlanFullmacImplIfcSaeFrameRxRequest, D>::encode(
2149                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2150                encoder,
2151                offset,
2152                _depth,
2153            )
2154        }
2155    }
2156    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2157        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D> for (T0,)
2158    {
2159        #[inline]
2160        unsafe fn encode(
2161            self,
2162            encoder: &mut fidl::encoding::Encoder<'_, D>,
2163            offset: usize,
2164            depth: fidl::encoding::Depth,
2165        ) -> fidl::Result<()> {
2166            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2167            // Zero out padding regions. There's no need to apply masks
2168            // because the unmasked parts will be overwritten by fields.
2169            // Write the fields.
2170            self.0.encode(encoder, offset + 0, depth)?;
2171            Ok(())
2172        }
2173    }
2174
2175    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2176        for WlanFullmacImplIfcSaeFrameRxRequest
2177    {
2178        #[inline(always)]
2179        fn new_empty() -> Self {
2180            Self { frame: fidl::new_empty!(SaeFrame, D) }
2181        }
2182
2183        #[inline]
2184        unsafe fn decode(
2185            &mut self,
2186            decoder: &mut fidl::encoding::Decoder<'_, D>,
2187            offset: usize,
2188            _depth: fidl::encoding::Depth,
2189        ) -> fidl::Result<()> {
2190            decoder.debug_check_bounds::<Self>(offset);
2191            // Verify that padding bytes are zero.
2192            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2193            Ok(())
2194        }
2195    }
2196
2197    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSignalReportRequest {
2198        type Borrowed<'a> = &'a Self;
2199        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2200            value
2201        }
2202    }
2203
2204    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSignalReportRequest {
2205        type Owned = Self;
2206
2207        #[inline(always)]
2208        fn inline_align(_context: fidl::encoding::Context) -> usize {
2209            1
2210        }
2211
2212        #[inline(always)]
2213        fn inline_size(_context: fidl::encoding::Context) -> usize {
2214            2
2215        }
2216        #[inline(always)]
2217        fn encode_is_copy() -> bool {
2218            true
2219        }
2220
2221        #[inline(always)]
2222        fn decode_is_copy() -> bool {
2223            true
2224        }
2225    }
2226
2227    unsafe impl<D: fidl::encoding::ResourceDialect>
2228        fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D>
2229        for &WlanFullmacImplIfcSignalReportRequest
2230    {
2231        #[inline]
2232        unsafe fn encode(
2233            self,
2234            encoder: &mut fidl::encoding::Encoder<'_, D>,
2235            offset: usize,
2236            _depth: fidl::encoding::Depth,
2237        ) -> fidl::Result<()> {
2238            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2239            unsafe {
2240                // Copy the object into the buffer.
2241                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2242                (buf_ptr as *mut WlanFullmacImplIfcSignalReportRequest)
2243                    .write_unaligned((self as *const WlanFullmacImplIfcSignalReportRequest).read());
2244                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2245                // done second because the memcpy will write garbage to these bytes.
2246            }
2247            Ok(())
2248        }
2249    }
2250    unsafe impl<
2251        D: fidl::encoding::ResourceDialect,
2252        T0: fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>,
2253    > fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D> for (T0,)
2254    {
2255        #[inline]
2256        unsafe fn encode(
2257            self,
2258            encoder: &mut fidl::encoding::Encoder<'_, D>,
2259            offset: usize,
2260            depth: fidl::encoding::Depth,
2261        ) -> fidl::Result<()> {
2262            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2263            // Zero out padding regions. There's no need to apply masks
2264            // because the unmasked parts will be overwritten by fields.
2265            // Write the fields.
2266            self.0.encode(encoder, offset + 0, depth)?;
2267            Ok(())
2268        }
2269    }
2270
2271    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2272        for WlanFullmacImplIfcSignalReportRequest
2273    {
2274        #[inline(always)]
2275        fn new_empty() -> Self {
2276            Self { ind: fidl::new_empty!(WlanFullmacSignalReportIndication, D) }
2277        }
2278
2279        #[inline]
2280        unsafe fn decode(
2281            &mut self,
2282            decoder: &mut fidl::encoding::Decoder<'_, D>,
2283            offset: usize,
2284            _depth: fidl::encoding::Depth,
2285        ) -> fidl::Result<()> {
2286            decoder.debug_check_bounds::<Self>(offset);
2287            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2288            // Verify that padding bytes are zero.
2289            // Copy from the buffer into the object.
2290            unsafe {
2291                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
2292            }
2293            Ok(())
2294        }
2295    }
2296
2297    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeFrameTxRequest {
2298        type Borrowed<'a> = &'a Self;
2299        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2300            value
2301        }
2302    }
2303
2304    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeFrameTxRequest {
2305        type Owned = Self;
2306
2307        #[inline(always)]
2308        fn inline_align(_context: fidl::encoding::Context) -> usize {
2309            8
2310        }
2311
2312        #[inline(always)]
2313        fn inline_size(_context: fidl::encoding::Context) -> usize {
2314            16
2315        }
2316    }
2317
2318    unsafe impl<D: fidl::encoding::ResourceDialect>
2319        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D>
2320        for &WlanFullmacImplSaeFrameTxRequest
2321    {
2322        #[inline]
2323        unsafe fn encode(
2324            self,
2325            encoder: &mut fidl::encoding::Encoder<'_, D>,
2326            offset: usize,
2327            _depth: fidl::encoding::Depth,
2328        ) -> fidl::Result<()> {
2329            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2330            // Delegate to tuple encoding.
2331            fidl::encoding::Encode::<WlanFullmacImplSaeFrameTxRequest, D>::encode(
2332                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2333                encoder,
2334                offset,
2335                _depth,
2336            )
2337        }
2338    }
2339    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2340        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D> for (T0,)
2341    {
2342        #[inline]
2343        unsafe fn encode(
2344            self,
2345            encoder: &mut fidl::encoding::Encoder<'_, D>,
2346            offset: usize,
2347            depth: fidl::encoding::Depth,
2348        ) -> fidl::Result<()> {
2349            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2350            // Zero out padding regions. There's no need to apply masks
2351            // because the unmasked parts will be overwritten by fields.
2352            // Write the fields.
2353            self.0.encode(encoder, offset + 0, depth)?;
2354            Ok(())
2355        }
2356    }
2357
2358    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2359        for WlanFullmacImplSaeFrameTxRequest
2360    {
2361        #[inline(always)]
2362        fn new_empty() -> Self {
2363            Self { frame: fidl::new_empty!(SaeFrame, D) }
2364        }
2365
2366        #[inline]
2367        unsafe fn decode(
2368            &mut self,
2369            decoder: &mut fidl::encoding::Decoder<'_, D>,
2370            offset: usize,
2371            _depth: fidl::encoding::Depth,
2372        ) -> fidl::Result<()> {
2373            decoder.debug_check_bounds::<Self>(offset);
2374            // Verify that padding bytes are zero.
2375            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2376            Ok(())
2377        }
2378    }
2379
2380    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysResponse {
2381        type Borrowed<'a> = &'a Self;
2382        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2383            value
2384        }
2385    }
2386
2387    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysResponse {
2388        type Owned = Self;
2389
2390        #[inline(always)]
2391        fn inline_align(_context: fidl::encoding::Context) -> usize {
2392            8
2393        }
2394
2395        #[inline(always)]
2396        fn inline_size(_context: fidl::encoding::Context) -> usize {
2397            16
2398        }
2399    }
2400
2401    unsafe impl<D: fidl::encoding::ResourceDialect>
2402        fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D>
2403        for &WlanFullmacImplSetKeysResponse
2404    {
2405        #[inline]
2406        unsafe fn encode(
2407            self,
2408            encoder: &mut fidl::encoding::Encoder<'_, D>,
2409            offset: usize,
2410            _depth: fidl::encoding::Depth,
2411        ) -> fidl::Result<()> {
2412            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2413            // Delegate to tuple encoding.
2414            fidl::encoding::Encode::<WlanFullmacImplSetKeysResponse, D>::encode(
2415                (<WlanFullmacSetKeysResp as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
2416                encoder,
2417                offset,
2418                _depth,
2419            )
2420        }
2421    }
2422    unsafe impl<
2423        D: fidl::encoding::ResourceDialect,
2424        T0: fidl::encoding::Encode<WlanFullmacSetKeysResp, D>,
2425    > fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D> for (T0,)
2426    {
2427        #[inline]
2428        unsafe fn encode(
2429            self,
2430            encoder: &mut fidl::encoding::Encoder<'_, D>,
2431            offset: usize,
2432            depth: fidl::encoding::Depth,
2433        ) -> fidl::Result<()> {
2434            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2435            // Zero out padding regions. There's no need to apply masks
2436            // because the unmasked parts will be overwritten by fields.
2437            // Write the fields.
2438            self.0.encode(encoder, offset + 0, depth)?;
2439            Ok(())
2440        }
2441    }
2442
2443    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2444        for WlanFullmacImplSetKeysResponse
2445    {
2446        #[inline(always)]
2447        fn new_empty() -> Self {
2448            Self { resp: fidl::new_empty!(WlanFullmacSetKeysResp, D) }
2449        }
2450
2451        #[inline]
2452        unsafe fn decode(
2453            &mut self,
2454            decoder: &mut fidl::encoding::Decoder<'_, D>,
2455            offset: usize,
2456            _depth: fidl::encoding::Depth,
2457        ) -> fidl::Result<()> {
2458            decoder.debug_check_bounds::<Self>(offset);
2459            // Verify that padding bytes are zero.
2460            fidl::decode!(WlanFullmacSetKeysResp, D, &mut self.resp, decoder, offset + 0, _depth)?;
2461            Ok(())
2462        }
2463    }
2464
2465    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetMacAddressRequest {
2466        type Borrowed<'a> = &'a Self;
2467        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2468            value
2469        }
2470    }
2471
2472    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetMacAddressRequest {
2473        type Owned = Self;
2474
2475        #[inline(always)]
2476        fn inline_align(_context: fidl::encoding::Context) -> usize {
2477            1
2478        }
2479
2480        #[inline(always)]
2481        fn inline_size(_context: fidl::encoding::Context) -> usize {
2482            6
2483        }
2484        #[inline(always)]
2485        fn encode_is_copy() -> bool {
2486            true
2487        }
2488
2489        #[inline(always)]
2490        fn decode_is_copy() -> bool {
2491            true
2492        }
2493    }
2494
2495    unsafe impl<D: fidl::encoding::ResourceDialect>
2496        fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D>
2497        for &WlanFullmacImplSetMacAddressRequest
2498    {
2499        #[inline]
2500        unsafe fn encode(
2501            self,
2502            encoder: &mut fidl::encoding::Encoder<'_, D>,
2503            offset: usize,
2504            _depth: fidl::encoding::Depth,
2505        ) -> fidl::Result<()> {
2506            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2507            unsafe {
2508                // Copy the object into the buffer.
2509                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2510                (buf_ptr as *mut WlanFullmacImplSetMacAddressRequest)
2511                    .write_unaligned((self as *const WlanFullmacImplSetMacAddressRequest).read());
2512                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2513                // done second because the memcpy will write garbage to these bytes.
2514            }
2515            Ok(())
2516        }
2517    }
2518    unsafe impl<
2519        D: fidl::encoding::ResourceDialect,
2520        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2521    > fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D> for (T0,)
2522    {
2523        #[inline]
2524        unsafe fn encode(
2525            self,
2526            encoder: &mut fidl::encoding::Encoder<'_, D>,
2527            offset: usize,
2528            depth: fidl::encoding::Depth,
2529        ) -> fidl::Result<()> {
2530            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2531            // Zero out padding regions. There's no need to apply masks
2532            // because the unmasked parts will be overwritten by fields.
2533            // Write the fields.
2534            self.0.encode(encoder, offset + 0, depth)?;
2535            Ok(())
2536        }
2537    }
2538
2539    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2540        for WlanFullmacImplSetMacAddressRequest
2541    {
2542        #[inline(always)]
2543        fn new_empty() -> Self {
2544            Self { mac_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
2545        }
2546
2547        #[inline]
2548        unsafe fn decode(
2549            &mut self,
2550            decoder: &mut fidl::encoding::Decoder<'_, D>,
2551            offset: usize,
2552            _depth: fidl::encoding::Depth,
2553        ) -> fidl::Result<()> {
2554            decoder.debug_check_bounds::<Self>(offset);
2555            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2556            // Verify that padding bytes are zero.
2557            // Copy from the buffer into the object.
2558            unsafe {
2559                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
2560            }
2561            Ok(())
2562        }
2563    }
2564
2565    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2566        type Borrowed<'a> = &'a Self;
2567        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2568            value
2569        }
2570    }
2571
2572    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2573        type Owned = Self;
2574
2575        #[inline(always)]
2576        fn inline_align(_context: fidl::encoding::Context) -> usize {
2577            8
2578        }
2579
2580        #[inline(always)]
2581        fn inline_size(_context: fidl::encoding::Context) -> usize {
2582            16
2583        }
2584    }
2585
2586    unsafe impl<D: fidl::encoding::ResourceDialect>
2587        fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D>
2588        for &WlanFullmacImplGetIfaceHistogramStatsResponse
2589    {
2590        #[inline]
2591        unsafe fn encode(
2592            self,
2593            encoder: &mut fidl::encoding::Encoder<'_, D>,
2594            offset: usize,
2595            _depth: fidl::encoding::Depth,
2596        ) -> fidl::Result<()> {
2597            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2598            // Delegate to tuple encoding.
2599            fidl::encoding::Encode::<WlanFullmacImplGetIfaceHistogramStatsResponse, D>::encode(
2600                (
2601                    <fidl_fuchsia_wlan_stats__common::IfaceHistogramStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2602                ),
2603                encoder, offset, _depth
2604            )
2605        }
2606    }
2607    unsafe impl<
2608        D: fidl::encoding::ResourceDialect,
2609        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D>,
2610    > fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D> for (T0,)
2611    {
2612        #[inline]
2613        unsafe fn encode(
2614            self,
2615            encoder: &mut fidl::encoding::Encoder<'_, D>,
2616            offset: usize,
2617            depth: fidl::encoding::Depth,
2618        ) -> fidl::Result<()> {
2619            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2620            // Zero out padding regions. There's no need to apply masks
2621            // because the unmasked parts will be overwritten by fields.
2622            // Write the fields.
2623            self.0.encode(encoder, offset + 0, depth)?;
2624            Ok(())
2625        }
2626    }
2627
2628    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2629        for WlanFullmacImplGetIfaceHistogramStatsResponse
2630    {
2631        #[inline(always)]
2632        fn new_empty() -> Self {
2633            Self {
2634                stats: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D),
2635            }
2636        }
2637
2638        #[inline]
2639        unsafe fn decode(
2640            &mut self,
2641            decoder: &mut fidl::encoding::Decoder<'_, D>,
2642            offset: usize,
2643            _depth: fidl::encoding::Depth,
2644        ) -> fidl::Result<()> {
2645            decoder.debug_check_bounds::<Self>(offset);
2646            // Verify that padding bytes are zero.
2647            fidl::decode!(
2648                fidl_fuchsia_wlan_stats__common::IfaceHistogramStats,
2649                D,
2650                &mut self.stats,
2651                decoder,
2652                offset + 0,
2653                _depth
2654            )?;
2655            Ok(())
2656        }
2657    }
2658
2659    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2660        type Borrowed<'a> = &'a Self;
2661        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2662            value
2663        }
2664    }
2665
2666    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2667        type Owned = Self;
2668
2669        #[inline(always)]
2670        fn inline_align(_context: fidl::encoding::Context) -> usize {
2671            8
2672        }
2673
2674        #[inline(always)]
2675        fn inline_size(_context: fidl::encoding::Context) -> usize {
2676            16
2677        }
2678    }
2679
2680    unsafe impl<D: fidl::encoding::ResourceDialect>
2681        fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D>
2682        for &WlanFullmacImplGetIfaceStatsResponse
2683    {
2684        #[inline]
2685        unsafe fn encode(
2686            self,
2687            encoder: &mut fidl::encoding::Encoder<'_, D>,
2688            offset: usize,
2689            _depth: fidl::encoding::Depth,
2690        ) -> fidl::Result<()> {
2691            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2692            // Delegate to tuple encoding.
2693            fidl::encoding::Encode::<WlanFullmacImplGetIfaceStatsResponse, D>::encode(
2694                (
2695                    <fidl_fuchsia_wlan_stats__common::IfaceStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2696                ),
2697                encoder, offset, _depth
2698            )
2699        }
2700    }
2701    unsafe impl<
2702        D: fidl::encoding::ResourceDialect,
2703        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::IfaceStats, D>,
2704    > fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D> for (T0,)
2705    {
2706        #[inline]
2707        unsafe fn encode(
2708            self,
2709            encoder: &mut fidl::encoding::Encoder<'_, D>,
2710            offset: usize,
2711            depth: fidl::encoding::Depth,
2712        ) -> fidl::Result<()> {
2713            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2714            // Zero out padding regions. There's no need to apply masks
2715            // because the unmasked parts will be overwritten by fields.
2716            // Write the fields.
2717            self.0.encode(encoder, offset + 0, depth)?;
2718            Ok(())
2719        }
2720    }
2721
2722    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2723        for WlanFullmacImplGetIfaceStatsResponse
2724    {
2725        #[inline(always)]
2726        fn new_empty() -> Self {
2727            Self { stats: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceStats, D) }
2728        }
2729
2730        #[inline]
2731        unsafe fn decode(
2732            &mut self,
2733            decoder: &mut fidl::encoding::Decoder<'_, D>,
2734            offset: usize,
2735            _depth: fidl::encoding::Depth,
2736        ) -> fidl::Result<()> {
2737            decoder.debug_check_bounds::<Self>(offset);
2738            // Verify that padding bytes are zero.
2739            fidl::decode!(
2740                fidl_fuchsia_wlan_stats__common::IfaceStats,
2741                D,
2742                &mut self.stats,
2743                decoder,
2744                offset + 0,
2745                _depth
2746            )?;
2747            Ok(())
2748        }
2749    }
2750
2751    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
2752        type Borrowed<'a> = &'a Self;
2753        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2754            value
2755        }
2756    }
2757
2758    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
2759        type Owned = Self;
2760
2761        #[inline(always)]
2762        fn inline_align(_context: fidl::encoding::Context) -> usize {
2763            1
2764        }
2765
2766        #[inline(always)]
2767        fn inline_size(_context: fidl::encoding::Context) -> usize {
2768            3
2769        }
2770    }
2771
2772    unsafe impl<D: fidl::encoding::ResourceDialect>
2773        fidl::encoding::Encode<WlanFullmacImplQuerySecuritySupportResponse, D>
2774        for &WlanFullmacImplQuerySecuritySupportResponse
2775    {
2776        #[inline]
2777        unsafe fn encode(
2778            self,
2779            encoder: &mut fidl::encoding::Encoder<'_, D>,
2780            offset: usize,
2781            _depth: fidl::encoding::Depth,
2782        ) -> fidl::Result<()> {
2783            encoder.debug_check_bounds::<WlanFullmacImplQuerySecuritySupportResponse>(offset);
2784            // Delegate to tuple encoding.
2785            fidl::encoding::Encode::<WlanFullmacImplQuerySecuritySupportResponse, D>::encode(
2786                (
2787                    <fidl_fuchsia_wlan_common__common::SecuritySupport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
2788                ),
2789                encoder, offset, _depth
2790            )
2791        }
2792    }
2793    unsafe impl<
2794        D: fidl::encoding::ResourceDialect,
2795        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::SecuritySupport, D>,
2796    > fidl::encoding::Encode<WlanFullmacImplQuerySecuritySupportResponse, D> for (T0,)
2797    {
2798        #[inline]
2799        unsafe fn encode(
2800            self,
2801            encoder: &mut fidl::encoding::Encoder<'_, D>,
2802            offset: usize,
2803            depth: fidl::encoding::Depth,
2804        ) -> fidl::Result<()> {
2805            encoder.debug_check_bounds::<WlanFullmacImplQuerySecuritySupportResponse>(offset);
2806            // Zero out padding regions. There's no need to apply masks
2807            // because the unmasked parts will be overwritten by fields.
2808            // Write the fields.
2809            self.0.encode(encoder, offset + 0, depth)?;
2810            Ok(())
2811        }
2812    }
2813
2814    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2815        for WlanFullmacImplQuerySecuritySupportResponse
2816    {
2817        #[inline(always)]
2818        fn new_empty() -> Self {
2819            Self { resp: fidl::new_empty!(fidl_fuchsia_wlan_common__common::SecuritySupport, D) }
2820        }
2821
2822        #[inline]
2823        unsafe fn decode(
2824            &mut self,
2825            decoder: &mut fidl::encoding::Decoder<'_, D>,
2826            offset: usize,
2827            _depth: fidl::encoding::Depth,
2828        ) -> fidl::Result<()> {
2829            decoder.debug_check_bounds::<Self>(offset);
2830            // Verify that padding bytes are zero.
2831            fidl::decode!(
2832                fidl_fuchsia_wlan_common__common::SecuritySupport,
2833                D,
2834                &mut self.resp,
2835                decoder,
2836                offset + 0,
2837                _depth
2838            )?;
2839            Ok(())
2840        }
2841    }
2842
2843    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
2844        type Borrowed<'a> = &'a Self;
2845        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2846            value
2847        }
2848    }
2849
2850    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
2851        type Owned = Self;
2852
2853        #[inline(always)]
2854        fn inline_align(_context: fidl::encoding::Context) -> usize {
2855            1
2856        }
2857
2858        #[inline(always)]
2859        fn inline_size(_context: fidl::encoding::Context) -> usize {
2860            1
2861        }
2862    }
2863
2864    unsafe impl<D: fidl::encoding::ResourceDialect>
2865        fidl::encoding::Encode<WlanFullmacImplQuerySpectrumManagementSupportResponse, D>
2866        for &WlanFullmacImplQuerySpectrumManagementSupportResponse
2867    {
2868        #[inline]
2869        unsafe fn encode(
2870            self,
2871            encoder: &mut fidl::encoding::Encoder<'_, D>,
2872            offset: usize,
2873            _depth: fidl::encoding::Depth,
2874        ) -> fidl::Result<()> {
2875            encoder.debug_check_bounds::<WlanFullmacImplQuerySpectrumManagementSupportResponse>(
2876                offset,
2877            );
2878            // Delegate to tuple encoding.
2879            fidl::encoding::Encode::<WlanFullmacImplQuerySpectrumManagementSupportResponse, D>::encode(
2880                (
2881                    <fidl_fuchsia_wlan_common__common::SpectrumManagementSupport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
2882                ),
2883                encoder, offset, _depth
2884            )
2885        }
2886    }
2887    unsafe impl<
2888        D: fidl::encoding::ResourceDialect,
2889        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::SpectrumManagementSupport, D>,
2890    > fidl::encoding::Encode<WlanFullmacImplQuerySpectrumManagementSupportResponse, D> for (T0,)
2891    {
2892        #[inline]
2893        unsafe fn encode(
2894            self,
2895            encoder: &mut fidl::encoding::Encoder<'_, D>,
2896            offset: usize,
2897            depth: fidl::encoding::Depth,
2898        ) -> fidl::Result<()> {
2899            encoder.debug_check_bounds::<WlanFullmacImplQuerySpectrumManagementSupportResponse>(
2900                offset,
2901            );
2902            // Zero out padding regions. There's no need to apply masks
2903            // because the unmasked parts will be overwritten by fields.
2904            // Write the fields.
2905            self.0.encode(encoder, offset + 0, depth)?;
2906            Ok(())
2907        }
2908    }
2909
2910    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2911        for WlanFullmacImplQuerySpectrumManagementSupportResponse
2912    {
2913        #[inline(always)]
2914        fn new_empty() -> Self {
2915            Self {
2916                resp: fidl::new_empty!(
2917                    fidl_fuchsia_wlan_common__common::SpectrumManagementSupport,
2918                    D
2919                ),
2920            }
2921        }
2922
2923        #[inline]
2924        unsafe fn decode(
2925            &mut self,
2926            decoder: &mut fidl::encoding::Decoder<'_, D>,
2927            offset: usize,
2928            _depth: fidl::encoding::Depth,
2929        ) -> fidl::Result<()> {
2930            decoder.debug_check_bounds::<Self>(offset);
2931            // Verify that padding bytes are zero.
2932            fidl::decode!(
2933                fidl_fuchsia_wlan_common__common::SpectrumManagementSupport,
2934                D,
2935                &mut self.resp,
2936                decoder,
2937                offset + 0,
2938                _depth
2939            )?;
2940            Ok(())
2941        }
2942    }
2943
2944    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
2945        type Borrowed<'a> = &'a Self;
2946        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2947            value
2948        }
2949    }
2950
2951    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
2952        type Owned = Self;
2953
2954        #[inline(always)]
2955        fn inline_align(_context: fidl::encoding::Context) -> usize {
2956            8
2957        }
2958
2959        #[inline(always)]
2960        fn inline_size(_context: fidl::encoding::Context) -> usize {
2961            16
2962        }
2963    }
2964
2965    unsafe impl<D: fidl::encoding::ResourceDialect>
2966        fidl::encoding::Encode<WlanFullmacImplQueryTelemetrySupportResponse, D>
2967        for &WlanFullmacImplQueryTelemetrySupportResponse
2968    {
2969        #[inline]
2970        unsafe fn encode(
2971            self,
2972            encoder: &mut fidl::encoding::Encoder<'_, D>,
2973            offset: usize,
2974            _depth: fidl::encoding::Depth,
2975        ) -> fidl::Result<()> {
2976            encoder.debug_check_bounds::<WlanFullmacImplQueryTelemetrySupportResponse>(offset);
2977            // Delegate to tuple encoding.
2978            fidl::encoding::Encode::<WlanFullmacImplQueryTelemetrySupportResponse, D>::encode(
2979                (
2980                    <fidl_fuchsia_wlan_stats__common::TelemetrySupport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
2981                ),
2982                encoder, offset, _depth
2983            )
2984        }
2985    }
2986    unsafe impl<
2987        D: fidl::encoding::ResourceDialect,
2988        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::TelemetrySupport, D>,
2989    > fidl::encoding::Encode<WlanFullmacImplQueryTelemetrySupportResponse, D> for (T0,)
2990    {
2991        #[inline]
2992        unsafe fn encode(
2993            self,
2994            encoder: &mut fidl::encoding::Encoder<'_, D>,
2995            offset: usize,
2996            depth: fidl::encoding::Depth,
2997        ) -> fidl::Result<()> {
2998            encoder.debug_check_bounds::<WlanFullmacImplQueryTelemetrySupportResponse>(offset);
2999            // Zero out padding regions. There's no need to apply masks
3000            // because the unmasked parts will be overwritten by fields.
3001            // Write the fields.
3002            self.0.encode(encoder, offset + 0, depth)?;
3003            Ok(())
3004        }
3005    }
3006
3007    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3008        for WlanFullmacImplQueryTelemetrySupportResponse
3009    {
3010        #[inline(always)]
3011        fn new_empty() -> Self {
3012            Self { resp: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::TelemetrySupport, D) }
3013        }
3014
3015        #[inline]
3016        unsafe fn decode(
3017            &mut self,
3018            decoder: &mut fidl::encoding::Decoder<'_, D>,
3019            offset: usize,
3020            _depth: fidl::encoding::Depth,
3021        ) -> fidl::Result<()> {
3022            decoder.debug_check_bounds::<Self>(offset);
3023            // Verify that padding bytes are zero.
3024            fidl::decode!(
3025                fidl_fuchsia_wlan_stats__common::TelemetrySupport,
3026                D,
3027                &mut self.resp,
3028                decoder,
3029                offset + 0,
3030                _depth
3031            )?;
3032            Ok(())
3033        }
3034    }
3035
3036    impl fidl::encoding::ValueTypeMarker for WlanFullmacRssiStats {
3037        type Borrowed<'a> = &'a Self;
3038        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3039            value
3040        }
3041    }
3042
3043    unsafe impl fidl::encoding::TypeMarker for WlanFullmacRssiStats {
3044        type Owned = Self;
3045
3046        #[inline(always)]
3047        fn inline_align(_context: fidl::encoding::Context) -> usize {
3048            8
3049        }
3050
3051        #[inline(always)]
3052        fn inline_size(_context: fidl::encoding::Context) -> usize {
3053            16
3054        }
3055    }
3056
3057    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanFullmacRssiStats, D>
3058        for &WlanFullmacRssiStats
3059    {
3060        #[inline]
3061        unsafe fn encode(
3062            self,
3063            encoder: &mut fidl::encoding::Encoder<'_, D>,
3064            offset: usize,
3065            _depth: fidl::encoding::Depth,
3066        ) -> fidl::Result<()> {
3067            encoder.debug_check_bounds::<WlanFullmacRssiStats>(offset);
3068            // Delegate to tuple encoding.
3069            fidl::encoding::Encode::<WlanFullmacRssiStats, D>::encode(
3070                (
3071                    <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.hist),
3072                ),
3073                encoder, offset, _depth
3074            )
3075        }
3076    }
3077    unsafe impl<
3078        D: fidl::encoding::ResourceDialect,
3079        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
3080    > fidl::encoding::Encode<WlanFullmacRssiStats, D> for (T0,)
3081    {
3082        #[inline]
3083        unsafe fn encode(
3084            self,
3085            encoder: &mut fidl::encoding::Encoder<'_, D>,
3086            offset: usize,
3087            depth: fidl::encoding::Depth,
3088        ) -> fidl::Result<()> {
3089            encoder.debug_check_bounds::<WlanFullmacRssiStats>(offset);
3090            // Zero out padding regions. There's no need to apply masks
3091            // because the unmasked parts will be overwritten by fields.
3092            // Write the fields.
3093            self.0.encode(encoder, offset + 0, depth)?;
3094            Ok(())
3095        }
3096    }
3097
3098    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanFullmacRssiStats {
3099        #[inline(always)]
3100        fn new_empty() -> Self {
3101            Self { hist: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D) }
3102        }
3103
3104        #[inline]
3105        unsafe fn decode(
3106            &mut self,
3107            decoder: &mut fidl::encoding::Decoder<'_, D>,
3108            offset: usize,
3109            _depth: fidl::encoding::Depth,
3110        ) -> fidl::Result<()> {
3111            decoder.debug_check_bounds::<Self>(offset);
3112            // Verify that padding bytes are zero.
3113            fidl::decode!(
3114                fidl::encoding::UnboundedVector<u64>,
3115                D,
3116                &mut self.hist,
3117                decoder,
3118                offset + 0,
3119                _depth
3120            )?;
3121            Ok(())
3122        }
3123    }
3124
3125    impl fidl::encoding::ValueTypeMarker for WlanFullmacSetKeysResp {
3126        type Borrowed<'a> = &'a Self;
3127        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3128            value
3129        }
3130    }
3131
3132    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSetKeysResp {
3133        type Owned = Self;
3134
3135        #[inline(always)]
3136        fn inline_align(_context: fidl::encoding::Context) -> usize {
3137            8
3138        }
3139
3140        #[inline(always)]
3141        fn inline_size(_context: fidl::encoding::Context) -> usize {
3142            16
3143        }
3144    }
3145
3146    unsafe impl<D: fidl::encoding::ResourceDialect>
3147        fidl::encoding::Encode<WlanFullmacSetKeysResp, D> for &WlanFullmacSetKeysResp
3148    {
3149        #[inline]
3150        unsafe fn encode(
3151            self,
3152            encoder: &mut fidl::encoding::Encoder<'_, D>,
3153            offset: usize,
3154            _depth: fidl::encoding::Depth,
3155        ) -> fidl::Result<()> {
3156            encoder.debug_check_bounds::<WlanFullmacSetKeysResp>(offset);
3157            // Delegate to tuple encoding.
3158            fidl::encoding::Encode::<WlanFullmacSetKeysResp, D>::encode(
3159                (<fidl::encoding::Vector<i32, 4> as fidl::encoding::ValueTypeMarker>::borrow(
3160                    &self.statuslist,
3161                ),),
3162                encoder,
3163                offset,
3164                _depth,
3165            )
3166        }
3167    }
3168    unsafe impl<
3169        D: fidl::encoding::ResourceDialect,
3170        T0: fidl::encoding::Encode<fidl::encoding::Vector<i32, 4>, D>,
3171    > fidl::encoding::Encode<WlanFullmacSetKeysResp, D> for (T0,)
3172    {
3173        #[inline]
3174        unsafe fn encode(
3175            self,
3176            encoder: &mut fidl::encoding::Encoder<'_, D>,
3177            offset: usize,
3178            depth: fidl::encoding::Depth,
3179        ) -> fidl::Result<()> {
3180            encoder.debug_check_bounds::<WlanFullmacSetKeysResp>(offset);
3181            // Zero out padding regions. There's no need to apply masks
3182            // because the unmasked parts will be overwritten by fields.
3183            // Write the fields.
3184            self.0.encode(encoder, offset + 0, depth)?;
3185            Ok(())
3186        }
3187    }
3188
3189    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3190        for WlanFullmacSetKeysResp
3191    {
3192        #[inline(always)]
3193        fn new_empty() -> Self {
3194            Self { statuslist: fidl::new_empty!(fidl::encoding::Vector<i32, 4>, D) }
3195        }
3196
3197        #[inline]
3198        unsafe fn decode(
3199            &mut self,
3200            decoder: &mut fidl::encoding::Decoder<'_, D>,
3201            offset: usize,
3202            _depth: fidl::encoding::Depth,
3203        ) -> fidl::Result<()> {
3204            decoder.debug_check_bounds::<Self>(offset);
3205            // Verify that padding bytes are zero.
3206            fidl::decode!(fidl::encoding::Vector<i32, 4>, D, &mut self.statuslist, decoder, offset + 0, _depth)?;
3207            Ok(())
3208        }
3209    }
3210
3211    impl fidl::encoding::ValueTypeMarker for WlanFullmacSignalReportIndication {
3212        type Borrowed<'a> = &'a Self;
3213        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3214            value
3215        }
3216    }
3217
3218    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSignalReportIndication {
3219        type Owned = Self;
3220
3221        #[inline(always)]
3222        fn inline_align(_context: fidl::encoding::Context) -> usize {
3223            1
3224        }
3225
3226        #[inline(always)]
3227        fn inline_size(_context: fidl::encoding::Context) -> usize {
3228            2
3229        }
3230        #[inline(always)]
3231        fn encode_is_copy() -> bool {
3232            true
3233        }
3234
3235        #[inline(always)]
3236        fn decode_is_copy() -> bool {
3237            true
3238        }
3239    }
3240
3241    unsafe impl<D: fidl::encoding::ResourceDialect>
3242        fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>
3243        for &WlanFullmacSignalReportIndication
3244    {
3245        #[inline]
3246        unsafe fn encode(
3247            self,
3248            encoder: &mut fidl::encoding::Encoder<'_, D>,
3249            offset: usize,
3250            _depth: fidl::encoding::Depth,
3251        ) -> fidl::Result<()> {
3252            encoder.debug_check_bounds::<WlanFullmacSignalReportIndication>(offset);
3253            unsafe {
3254                // Copy the object into the buffer.
3255                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3256                (buf_ptr as *mut WlanFullmacSignalReportIndication)
3257                    .write_unaligned((self as *const WlanFullmacSignalReportIndication).read());
3258                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3259                // done second because the memcpy will write garbage to these bytes.
3260            }
3261            Ok(())
3262        }
3263    }
3264    unsafe impl<
3265        D: fidl::encoding::ResourceDialect,
3266        T0: fidl::encoding::Encode<i8, D>,
3267        T1: fidl::encoding::Encode<i8, D>,
3268    > fidl::encoding::Encode<WlanFullmacSignalReportIndication, D> for (T0, T1)
3269    {
3270        #[inline]
3271        unsafe fn encode(
3272            self,
3273            encoder: &mut fidl::encoding::Encoder<'_, D>,
3274            offset: usize,
3275            depth: fidl::encoding::Depth,
3276        ) -> fidl::Result<()> {
3277            encoder.debug_check_bounds::<WlanFullmacSignalReportIndication>(offset);
3278            // Zero out padding regions. There's no need to apply masks
3279            // because the unmasked parts will be overwritten by fields.
3280            // Write the fields.
3281            self.0.encode(encoder, offset + 0, depth)?;
3282            self.1.encode(encoder, offset + 1, depth)?;
3283            Ok(())
3284        }
3285    }
3286
3287    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3288        for WlanFullmacSignalReportIndication
3289    {
3290        #[inline(always)]
3291        fn new_empty() -> Self {
3292            Self { rssi_dbm: fidl::new_empty!(i8, D), snr_db: fidl::new_empty!(i8, D) }
3293        }
3294
3295        #[inline]
3296        unsafe fn decode(
3297            &mut self,
3298            decoder: &mut fidl::encoding::Decoder<'_, D>,
3299            offset: usize,
3300            _depth: fidl::encoding::Depth,
3301        ) -> fidl::Result<()> {
3302            decoder.debug_check_bounds::<Self>(offset);
3303            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3304            // Verify that padding bytes are zero.
3305            // Copy from the buffer into the object.
3306            unsafe {
3307                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
3308            }
3309            Ok(())
3310        }
3311    }
3312
3313    impl BandCapability {
3314        #[inline(always)]
3315        fn max_ordinal_present(&self) -> u64 {
3316            if let Some(_) = self.operating_channels {
3317                return 5;
3318            }
3319            if let Some(_) = self.vht_caps {
3320                return 4;
3321            }
3322            if let Some(_) = self.ht_caps {
3323                return 3;
3324            }
3325            if let Some(_) = self.basic_rates {
3326                return 2;
3327            }
3328            if let Some(_) = self.band {
3329                return 1;
3330            }
3331            0
3332        }
3333    }
3334
3335    impl fidl::encoding::ValueTypeMarker for BandCapability {
3336        type Borrowed<'a> = &'a Self;
3337        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3338            value
3339        }
3340    }
3341
3342    unsafe impl fidl::encoding::TypeMarker for BandCapability {
3343        type Owned = Self;
3344
3345        #[inline(always)]
3346        fn inline_align(_context: fidl::encoding::Context) -> usize {
3347            8
3348        }
3349
3350        #[inline(always)]
3351        fn inline_size(_context: fidl::encoding::Context) -> usize {
3352            16
3353        }
3354    }
3355
3356    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandCapability, D>
3357        for &BandCapability
3358    {
3359        unsafe fn encode(
3360            self,
3361            encoder: &mut fidl::encoding::Encoder<'_, D>,
3362            offset: usize,
3363            mut depth: fidl::encoding::Depth,
3364        ) -> fidl::Result<()> {
3365            encoder.debug_check_bounds::<BandCapability>(offset);
3366            // Vector header
3367            let max_ordinal: u64 = self.max_ordinal_present();
3368            encoder.write_num(max_ordinal, offset);
3369            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3370            // Calling encoder.out_of_line_offset(0) is not allowed.
3371            if max_ordinal == 0 {
3372                return Ok(());
3373            }
3374            depth.increment()?;
3375            let envelope_size = 8;
3376            let bytes_len = max_ordinal as usize * envelope_size;
3377            #[allow(unused_variables)]
3378            let offset = encoder.out_of_line_offset(bytes_len);
3379            let mut _prev_end_offset: usize = 0;
3380            if 1 > max_ordinal {
3381                return Ok(());
3382            }
3383
3384            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3385            // are envelope_size bytes.
3386            let cur_offset: usize = (1 - 1) * envelope_size;
3387
3388            // Zero reserved fields.
3389            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3390
3391            // Safety:
3392            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3393            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3394            //   envelope_size bytes, there is always sufficient room.
3395            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::WlanBand, D>(
3396            self.band.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow),
3397            encoder, offset + cur_offset, depth
3398        )?;
3399
3400            _prev_end_offset = cur_offset + envelope_size;
3401            if 2 > max_ordinal {
3402                return Ok(());
3403            }
3404
3405            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3406            // are envelope_size bytes.
3407            let cur_offset: usize = (2 - 1) * envelope_size;
3408
3409            // Zero reserved fields.
3410            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3411
3412            // Safety:
3413            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3414            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3415            //   envelope_size bytes, there is always sufficient room.
3416            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 12>, D>(
3417                self.basic_rates.as_ref().map(
3418                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::ValueTypeMarker>::borrow,
3419                ),
3420                encoder,
3421                offset + cur_offset,
3422                depth,
3423            )?;
3424
3425            _prev_end_offset = cur_offset + envelope_size;
3426            if 3 > max_ordinal {
3427                return Ok(());
3428            }
3429
3430            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3431            // are envelope_size bytes.
3432            let cur_offset: usize = (3 - 1) * envelope_size;
3433
3434            // Zero reserved fields.
3435            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3436
3437            // Safety:
3438            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3439            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3440            //   envelope_size bytes, there is always sufficient room.
3441            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities, D>(
3442            self.ht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3443            encoder, offset + cur_offset, depth
3444        )?;
3445
3446            _prev_end_offset = cur_offset + envelope_size;
3447            if 4 > max_ordinal {
3448                return Ok(());
3449            }
3450
3451            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3452            // are envelope_size bytes.
3453            let cur_offset: usize = (4 - 1) * envelope_size;
3454
3455            // Zero reserved fields.
3456            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3457
3458            // Safety:
3459            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3460            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3461            //   envelope_size bytes, there is always sufficient room.
3462            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities, D>(
3463            self.vht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3464            encoder, offset + cur_offset, depth
3465        )?;
3466
3467            _prev_end_offset = cur_offset + envelope_size;
3468            if 5 > max_ordinal {
3469                return Ok(());
3470            }
3471
3472            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3473            // are envelope_size bytes.
3474            let cur_offset: usize = (5 - 1) * envelope_size;
3475
3476            // Zero reserved fields.
3477            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3478
3479            // Safety:
3480            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3481            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3482            //   envelope_size bytes, there is always sufficient room.
3483            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 256>, D>(
3484                self.operating_channels.as_ref().map(
3485                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow,
3486                ),
3487                encoder,
3488                offset + cur_offset,
3489                depth,
3490            )?;
3491
3492            _prev_end_offset = cur_offset + envelope_size;
3493
3494            Ok(())
3495        }
3496    }
3497
3498    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandCapability {
3499        #[inline(always)]
3500        fn new_empty() -> Self {
3501            Self::default()
3502        }
3503
3504        unsafe fn decode(
3505            &mut self,
3506            decoder: &mut fidl::encoding::Decoder<'_, D>,
3507            offset: usize,
3508            mut depth: fidl::encoding::Depth,
3509        ) -> fidl::Result<()> {
3510            decoder.debug_check_bounds::<Self>(offset);
3511            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3512                None => return Err(fidl::Error::NotNullable),
3513                Some(len) => len,
3514            };
3515            // Calling decoder.out_of_line_offset(0) is not allowed.
3516            if len == 0 {
3517                return Ok(());
3518            };
3519            depth.increment()?;
3520            let envelope_size = 8;
3521            let bytes_len = len * envelope_size;
3522            let offset = decoder.out_of_line_offset(bytes_len)?;
3523            // Decode the envelope for each type.
3524            let mut _next_ordinal_to_read = 0;
3525            let mut next_offset = offset;
3526            let end_offset = offset + bytes_len;
3527            _next_ordinal_to_read += 1;
3528            if next_offset >= end_offset {
3529                return Ok(());
3530            }
3531
3532            // Decode unknown envelopes for gaps in ordinals.
3533            while _next_ordinal_to_read < 1 {
3534                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3535                _next_ordinal_to_read += 1;
3536                next_offset += envelope_size;
3537            }
3538
3539            let next_out_of_line = decoder.next_out_of_line();
3540            let handles_before = decoder.remaining_handles();
3541            if let Some((inlined, num_bytes, num_handles)) =
3542                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3543            {
3544                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::WlanBand as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3545                if inlined != (member_inline_size <= 4) {
3546                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3547                }
3548                let inner_offset;
3549                let mut inner_depth = depth.clone();
3550                if inlined {
3551                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3552                    inner_offset = next_offset;
3553                } else {
3554                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3555                    inner_depth.increment()?;
3556                }
3557                let val_ref = self.band.get_or_insert_with(|| {
3558                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanBand, D)
3559                });
3560                fidl::decode!(
3561                    fidl_fuchsia_wlan_ieee80211__common::WlanBand,
3562                    D,
3563                    val_ref,
3564                    decoder,
3565                    inner_offset,
3566                    inner_depth
3567                )?;
3568                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3569                {
3570                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3571                }
3572                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3573                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3574                }
3575            }
3576
3577            next_offset += envelope_size;
3578            _next_ordinal_to_read += 1;
3579            if next_offset >= end_offset {
3580                return Ok(());
3581            }
3582
3583            // Decode unknown envelopes for gaps in ordinals.
3584            while _next_ordinal_to_read < 2 {
3585                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3586                _next_ordinal_to_read += 1;
3587                next_offset += envelope_size;
3588            }
3589
3590            let next_out_of_line = decoder.next_out_of_line();
3591            let handles_before = decoder.remaining_handles();
3592            if let Some((inlined, num_bytes, num_handles)) =
3593                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3594            {
3595                let member_inline_size =
3596                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::TypeMarker>::inline_size(
3597                        decoder.context,
3598                    );
3599                if inlined != (member_inline_size <= 4) {
3600                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3601                }
3602                let inner_offset;
3603                let mut inner_depth = depth.clone();
3604                if inlined {
3605                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3606                    inner_offset = next_offset;
3607                } else {
3608                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3609                    inner_depth.increment()?;
3610                }
3611                let val_ref = self
3612                    .basic_rates
3613                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 12>, D));
3614                fidl::decode!(fidl::encoding::Vector<u8, 12>, D, val_ref, decoder, inner_offset, inner_depth)?;
3615                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3616                {
3617                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3618                }
3619                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3620                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3621                }
3622            }
3623
3624            next_offset += envelope_size;
3625            _next_ordinal_to_read += 1;
3626            if next_offset >= end_offset {
3627                return Ok(());
3628            }
3629
3630            // Decode unknown envelopes for gaps in ordinals.
3631            while _next_ordinal_to_read < 3 {
3632                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3633                _next_ordinal_to_read += 1;
3634                next_offset += envelope_size;
3635            }
3636
3637            let next_out_of_line = decoder.next_out_of_line();
3638            let handles_before = decoder.remaining_handles();
3639            if let Some((inlined, num_bytes, num_handles)) =
3640                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3641            {
3642                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::HtCapabilities as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3643                if inlined != (member_inline_size <= 4) {
3644                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3645                }
3646                let inner_offset;
3647                let mut inner_depth = depth.clone();
3648                if inlined {
3649                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3650                    inner_offset = next_offset;
3651                } else {
3652                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3653                    inner_depth.increment()?;
3654                }
3655                let val_ref = self.ht_caps.get_or_insert_with(|| {
3656                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::HtCapabilities, D)
3657                });
3658                fidl::decode!(
3659                    fidl_fuchsia_wlan_ieee80211__common::HtCapabilities,
3660                    D,
3661                    val_ref,
3662                    decoder,
3663                    inner_offset,
3664                    inner_depth
3665                )?;
3666                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3667                {
3668                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3669                }
3670                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3671                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3672                }
3673            }
3674
3675            next_offset += envelope_size;
3676            _next_ordinal_to_read += 1;
3677            if next_offset >= end_offset {
3678                return Ok(());
3679            }
3680
3681            // Decode unknown envelopes for gaps in ordinals.
3682            while _next_ordinal_to_read < 4 {
3683                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3684                _next_ordinal_to_read += 1;
3685                next_offset += envelope_size;
3686            }
3687
3688            let next_out_of_line = decoder.next_out_of_line();
3689            let handles_before = decoder.remaining_handles();
3690            if let Some((inlined, num_bytes, num_handles)) =
3691                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3692            {
3693                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3694                if inlined != (member_inline_size <= 4) {
3695                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3696                }
3697                let inner_offset;
3698                let mut inner_depth = depth.clone();
3699                if inlined {
3700                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3701                    inner_offset = next_offset;
3702                } else {
3703                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3704                    inner_depth.increment()?;
3705                }
3706                let val_ref = self.vht_caps.get_or_insert_with(|| {
3707                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities, D)
3708                });
3709                fidl::decode!(
3710                    fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities,
3711                    D,
3712                    val_ref,
3713                    decoder,
3714                    inner_offset,
3715                    inner_depth
3716                )?;
3717                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3718                {
3719                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3720                }
3721                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3722                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3723                }
3724            }
3725
3726            next_offset += envelope_size;
3727            _next_ordinal_to_read += 1;
3728            if next_offset >= end_offset {
3729                return Ok(());
3730            }
3731
3732            // Decode unknown envelopes for gaps in ordinals.
3733            while _next_ordinal_to_read < 5 {
3734                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3735                _next_ordinal_to_read += 1;
3736                next_offset += envelope_size;
3737            }
3738
3739            let next_out_of_line = decoder.next_out_of_line();
3740            let handles_before = decoder.remaining_handles();
3741            if let Some((inlined, num_bytes, num_handles)) =
3742                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3743            {
3744                let member_inline_size =
3745                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::TypeMarker>::inline_size(
3746                        decoder.context,
3747                    );
3748                if inlined != (member_inline_size <= 4) {
3749                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3750                }
3751                let inner_offset;
3752                let mut inner_depth = depth.clone();
3753                if inlined {
3754                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3755                    inner_offset = next_offset;
3756                } else {
3757                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3758                    inner_depth.increment()?;
3759                }
3760                let val_ref = self
3761                    .operating_channels
3762                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D));
3763                fidl::decode!(fidl::encoding::Vector<u8, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
3764                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3765                {
3766                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3767                }
3768                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3769                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3770                }
3771            }
3772
3773            next_offset += envelope_size;
3774
3775            // Decode the remaining unknown envelopes.
3776            while next_offset < end_offset {
3777                _next_ordinal_to_read += 1;
3778                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3779                next_offset += envelope_size;
3780            }
3781
3782            Ok(())
3783        }
3784    }
3785
3786    impl SaeFrame {
3787        #[inline(always)]
3788        fn max_ordinal_present(&self) -> u64 {
3789            if let Some(_) = self.sae_fields {
3790                return 4;
3791            }
3792            if let Some(_) = self.seq_num {
3793                return 3;
3794            }
3795            if let Some(_) = self.status_code {
3796                return 2;
3797            }
3798            if let Some(_) = self.peer_sta_address {
3799                return 1;
3800            }
3801            0
3802        }
3803    }
3804
3805    impl fidl::encoding::ValueTypeMarker for SaeFrame {
3806        type Borrowed<'a> = &'a Self;
3807        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3808            value
3809        }
3810    }
3811
3812    unsafe impl fidl::encoding::TypeMarker for SaeFrame {
3813        type Owned = Self;
3814
3815        #[inline(always)]
3816        fn inline_align(_context: fidl::encoding::Context) -> usize {
3817            8
3818        }
3819
3820        #[inline(always)]
3821        fn inline_size(_context: fidl::encoding::Context) -> usize {
3822            16
3823        }
3824    }
3825
3826    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFrame, D> for &SaeFrame {
3827        unsafe fn encode(
3828            self,
3829            encoder: &mut fidl::encoding::Encoder<'_, D>,
3830            offset: usize,
3831            mut depth: fidl::encoding::Depth,
3832        ) -> fidl::Result<()> {
3833            encoder.debug_check_bounds::<SaeFrame>(offset);
3834            // Vector header
3835            let max_ordinal: u64 = self.max_ordinal_present();
3836            encoder.write_num(max_ordinal, offset);
3837            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3838            // Calling encoder.out_of_line_offset(0) is not allowed.
3839            if max_ordinal == 0 {
3840                return Ok(());
3841            }
3842            depth.increment()?;
3843            let envelope_size = 8;
3844            let bytes_len = max_ordinal as usize * envelope_size;
3845            #[allow(unused_variables)]
3846            let offset = encoder.out_of_line_offset(bytes_len);
3847            let mut _prev_end_offset: usize = 0;
3848            if 1 > max_ordinal {
3849                return Ok(());
3850            }
3851
3852            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3853            // are envelope_size bytes.
3854            let cur_offset: usize = (1 - 1) * envelope_size;
3855
3856            // Zero reserved fields.
3857            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3858
3859            // Safety:
3860            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3861            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3862            //   envelope_size bytes, there is always sufficient room.
3863            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3864                self.peer_sta_address
3865                    .as_ref()
3866                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3867                encoder,
3868                offset + cur_offset,
3869                depth,
3870            )?;
3871
3872            _prev_end_offset = cur_offset + envelope_size;
3873            if 2 > max_ordinal {
3874                return Ok(());
3875            }
3876
3877            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3878            // are envelope_size bytes.
3879            let cur_offset: usize = (2 - 1) * envelope_size;
3880
3881            // Zero reserved fields.
3882            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3883
3884            // Safety:
3885            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3886            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3887            //   envelope_size bytes, there is always sufficient room.
3888            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
3889            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
3890            encoder, offset + cur_offset, depth
3891        )?;
3892
3893            _prev_end_offset = cur_offset + envelope_size;
3894            if 3 > max_ordinal {
3895                return Ok(());
3896            }
3897
3898            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3899            // are envelope_size bytes.
3900            let cur_offset: usize = (3 - 1) * envelope_size;
3901
3902            // Zero reserved fields.
3903            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3904
3905            // Safety:
3906            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3907            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3908            //   envelope_size bytes, there is always sufficient room.
3909            fidl::encoding::encode_in_envelope_optional::<u16, D>(
3910                self.seq_num.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3911                encoder,
3912                offset + cur_offset,
3913                depth,
3914            )?;
3915
3916            _prev_end_offset = cur_offset + envelope_size;
3917            if 4 > max_ordinal {
3918                return Ok(());
3919            }
3920
3921            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3922            // are envelope_size bytes.
3923            let cur_offset: usize = (4 - 1) * envelope_size;
3924
3925            // Zero reserved fields.
3926            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3927
3928            // Safety:
3929            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3930            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3931            //   envelope_size bytes, there is always sufficient room.
3932            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
3933            self.sae_fields.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
3934            encoder, offset + cur_offset, depth
3935        )?;
3936
3937            _prev_end_offset = cur_offset + envelope_size;
3938
3939            Ok(())
3940        }
3941    }
3942
3943    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFrame {
3944        #[inline(always)]
3945        fn new_empty() -> Self {
3946            Self::default()
3947        }
3948
3949        unsafe fn decode(
3950            &mut self,
3951            decoder: &mut fidl::encoding::Decoder<'_, D>,
3952            offset: usize,
3953            mut depth: fidl::encoding::Depth,
3954        ) -> fidl::Result<()> {
3955            decoder.debug_check_bounds::<Self>(offset);
3956            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3957                None => return Err(fidl::Error::NotNullable),
3958                Some(len) => len,
3959            };
3960            // Calling decoder.out_of_line_offset(0) is not allowed.
3961            if len == 0 {
3962                return Ok(());
3963            };
3964            depth.increment()?;
3965            let envelope_size = 8;
3966            let bytes_len = len * envelope_size;
3967            let offset = decoder.out_of_line_offset(bytes_len)?;
3968            // Decode the envelope for each type.
3969            let mut _next_ordinal_to_read = 0;
3970            let mut next_offset = offset;
3971            let end_offset = offset + bytes_len;
3972            _next_ordinal_to_read += 1;
3973            if next_offset >= end_offset {
3974                return Ok(());
3975            }
3976
3977            // Decode unknown envelopes for gaps in ordinals.
3978            while _next_ordinal_to_read < 1 {
3979                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3980                _next_ordinal_to_read += 1;
3981                next_offset += envelope_size;
3982            }
3983
3984            let next_out_of_line = decoder.next_out_of_line();
3985            let handles_before = decoder.remaining_handles();
3986            if let Some((inlined, num_bytes, num_handles)) =
3987                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3988            {
3989                let member_inline_size =
3990                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3991                        decoder.context,
3992                    );
3993                if inlined != (member_inline_size <= 4) {
3994                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3995                }
3996                let inner_offset;
3997                let mut inner_depth = depth.clone();
3998                if inlined {
3999                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4000                    inner_offset = next_offset;
4001                } else {
4002                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4003                    inner_depth.increment()?;
4004                }
4005                let val_ref = self
4006                    .peer_sta_address
4007                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4008                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4009                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4010                {
4011                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4012                }
4013                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4014                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4015                }
4016            }
4017
4018            next_offset += envelope_size;
4019            _next_ordinal_to_read += 1;
4020            if next_offset >= end_offset {
4021                return Ok(());
4022            }
4023
4024            // Decode unknown envelopes for gaps in ordinals.
4025            while _next_ordinal_to_read < 2 {
4026                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4027                _next_ordinal_to_read += 1;
4028                next_offset += envelope_size;
4029            }
4030
4031            let next_out_of_line = decoder.next_out_of_line();
4032            let handles_before = decoder.remaining_handles();
4033            if let Some((inlined, num_bytes, num_handles)) =
4034                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4035            {
4036                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4037                if inlined != (member_inline_size <= 4) {
4038                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4039                }
4040                let inner_offset;
4041                let mut inner_depth = depth.clone();
4042                if inlined {
4043                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4044                    inner_offset = next_offset;
4045                } else {
4046                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4047                    inner_depth.increment()?;
4048                }
4049                let val_ref = self.status_code.get_or_insert_with(|| {
4050                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
4051                });
4052                fidl::decode!(
4053                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
4054                    D,
4055                    val_ref,
4056                    decoder,
4057                    inner_offset,
4058                    inner_depth
4059                )?;
4060                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4061                {
4062                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4063                }
4064                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4065                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4066                }
4067            }
4068
4069            next_offset += envelope_size;
4070            _next_ordinal_to_read += 1;
4071            if next_offset >= end_offset {
4072                return Ok(());
4073            }
4074
4075            // Decode unknown envelopes for gaps in ordinals.
4076            while _next_ordinal_to_read < 3 {
4077                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4078                _next_ordinal_to_read += 1;
4079                next_offset += envelope_size;
4080            }
4081
4082            let next_out_of_line = decoder.next_out_of_line();
4083            let handles_before = decoder.remaining_handles();
4084            if let Some((inlined, num_bytes, num_handles)) =
4085                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4086            {
4087                let member_inline_size =
4088                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4089                if inlined != (member_inline_size <= 4) {
4090                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4091                }
4092                let inner_offset;
4093                let mut inner_depth = depth.clone();
4094                if inlined {
4095                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4096                    inner_offset = next_offset;
4097                } else {
4098                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4099                    inner_depth.increment()?;
4100                }
4101                let val_ref = self.seq_num.get_or_insert_with(|| fidl::new_empty!(u16, D));
4102                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4103                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4104                {
4105                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4106                }
4107                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4108                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4109                }
4110            }
4111
4112            next_offset += envelope_size;
4113            _next_ordinal_to_read += 1;
4114            if next_offset >= end_offset {
4115                return Ok(());
4116            }
4117
4118            // Decode unknown envelopes for gaps in ordinals.
4119            while _next_ordinal_to_read < 4 {
4120                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4121                _next_ordinal_to_read += 1;
4122                next_offset += envelope_size;
4123            }
4124
4125            let next_out_of_line = decoder.next_out_of_line();
4126            let handles_before = decoder.remaining_handles();
4127            if let Some((inlined, num_bytes, num_handles)) =
4128                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4129            {
4130                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4131                if inlined != (member_inline_size <= 4) {
4132                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4133                }
4134                let inner_offset;
4135                let mut inner_depth = depth.clone();
4136                if inlined {
4137                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4138                    inner_offset = next_offset;
4139                } else {
4140                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4141                    inner_depth.increment()?;
4142                }
4143                let val_ref = self.sae_fields.get_or_insert_with(|| {
4144                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
4145                });
4146                fidl::decode!(
4147                    fidl::encoding::UnboundedVector<u8>,
4148                    D,
4149                    val_ref,
4150                    decoder,
4151                    inner_offset,
4152                    inner_depth
4153                )?;
4154                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4155                {
4156                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4157                }
4158                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4159                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4160                }
4161            }
4162
4163            next_offset += envelope_size;
4164
4165            // Decode the remaining unknown envelopes.
4166            while next_offset < end_offset {
4167                _next_ordinal_to_read += 1;
4168                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4169                next_offset += envelope_size;
4170            }
4171
4172            Ok(())
4173        }
4174    }
4175
4176    impl WlanFullmacImplAssocRespRequest {
4177        #[inline(always)]
4178        fn max_ordinal_present(&self) -> u64 {
4179            if let Some(_) = self.association_id {
4180                return 3;
4181            }
4182            if let Some(_) = self.result_code {
4183                return 2;
4184            }
4185            if let Some(_) = self.peer_sta_address {
4186                return 1;
4187            }
4188            0
4189        }
4190    }
4191
4192    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAssocRespRequest {
4193        type Borrowed<'a> = &'a Self;
4194        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4195            value
4196        }
4197    }
4198
4199    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAssocRespRequest {
4200        type Owned = Self;
4201
4202        #[inline(always)]
4203        fn inline_align(_context: fidl::encoding::Context) -> usize {
4204            8
4205        }
4206
4207        #[inline(always)]
4208        fn inline_size(_context: fidl::encoding::Context) -> usize {
4209            16
4210        }
4211    }
4212
4213    unsafe impl<D: fidl::encoding::ResourceDialect>
4214        fidl::encoding::Encode<WlanFullmacImplAssocRespRequest, D>
4215        for &WlanFullmacImplAssocRespRequest
4216    {
4217        unsafe fn encode(
4218            self,
4219            encoder: &mut fidl::encoding::Encoder<'_, D>,
4220            offset: usize,
4221            mut depth: fidl::encoding::Depth,
4222        ) -> fidl::Result<()> {
4223            encoder.debug_check_bounds::<WlanFullmacImplAssocRespRequest>(offset);
4224            // Vector header
4225            let max_ordinal: u64 = self.max_ordinal_present();
4226            encoder.write_num(max_ordinal, offset);
4227            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4228            // Calling encoder.out_of_line_offset(0) is not allowed.
4229            if max_ordinal == 0 {
4230                return Ok(());
4231            }
4232            depth.increment()?;
4233            let envelope_size = 8;
4234            let bytes_len = max_ordinal as usize * envelope_size;
4235            #[allow(unused_variables)]
4236            let offset = encoder.out_of_line_offset(bytes_len);
4237            let mut _prev_end_offset: usize = 0;
4238            if 1 > max_ordinal {
4239                return Ok(());
4240            }
4241
4242            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4243            // are envelope_size bytes.
4244            let cur_offset: usize = (1 - 1) * envelope_size;
4245
4246            // Zero reserved fields.
4247            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4248
4249            // Safety:
4250            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4251            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4252            //   envelope_size bytes, there is always sufficient room.
4253            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4254                self.peer_sta_address
4255                    .as_ref()
4256                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4257                encoder,
4258                offset + cur_offset,
4259                depth,
4260            )?;
4261
4262            _prev_end_offset = cur_offset + envelope_size;
4263            if 2 > max_ordinal {
4264                return Ok(());
4265            }
4266
4267            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4268            // are envelope_size bytes.
4269            let cur_offset: usize = (2 - 1) * envelope_size;
4270
4271            // Zero reserved fields.
4272            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4273
4274            // Safety:
4275            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4276            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4277            //   envelope_size bytes, there is always sufficient room.
4278            fidl::encoding::encode_in_envelope_optional::<WlanAssocResult, D>(
4279                self.result_code
4280                    .as_ref()
4281                    .map(<WlanAssocResult as fidl::encoding::ValueTypeMarker>::borrow),
4282                encoder,
4283                offset + cur_offset,
4284                depth,
4285            )?;
4286
4287            _prev_end_offset = cur_offset + envelope_size;
4288            if 3 > max_ordinal {
4289                return Ok(());
4290            }
4291
4292            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4293            // are envelope_size bytes.
4294            let cur_offset: usize = (3 - 1) * envelope_size;
4295
4296            // Zero reserved fields.
4297            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4298
4299            // Safety:
4300            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4301            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4302            //   envelope_size bytes, there is always sufficient room.
4303            fidl::encoding::encode_in_envelope_optional::<u16, D>(
4304                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4305                encoder,
4306                offset + cur_offset,
4307                depth,
4308            )?;
4309
4310            _prev_end_offset = cur_offset + envelope_size;
4311
4312            Ok(())
4313        }
4314    }
4315
4316    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4317        for WlanFullmacImplAssocRespRequest
4318    {
4319        #[inline(always)]
4320        fn new_empty() -> Self {
4321            Self::default()
4322        }
4323
4324        unsafe fn decode(
4325            &mut self,
4326            decoder: &mut fidl::encoding::Decoder<'_, D>,
4327            offset: usize,
4328            mut depth: fidl::encoding::Depth,
4329        ) -> fidl::Result<()> {
4330            decoder.debug_check_bounds::<Self>(offset);
4331            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4332                None => return Err(fidl::Error::NotNullable),
4333                Some(len) => len,
4334            };
4335            // Calling decoder.out_of_line_offset(0) is not allowed.
4336            if len == 0 {
4337                return Ok(());
4338            };
4339            depth.increment()?;
4340            let envelope_size = 8;
4341            let bytes_len = len * envelope_size;
4342            let offset = decoder.out_of_line_offset(bytes_len)?;
4343            // Decode the envelope for each type.
4344            let mut _next_ordinal_to_read = 0;
4345            let mut next_offset = offset;
4346            let end_offset = offset + bytes_len;
4347            _next_ordinal_to_read += 1;
4348            if next_offset >= end_offset {
4349                return Ok(());
4350            }
4351
4352            // Decode unknown envelopes for gaps in ordinals.
4353            while _next_ordinal_to_read < 1 {
4354                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4355                _next_ordinal_to_read += 1;
4356                next_offset += envelope_size;
4357            }
4358
4359            let next_out_of_line = decoder.next_out_of_line();
4360            let handles_before = decoder.remaining_handles();
4361            if let Some((inlined, num_bytes, num_handles)) =
4362                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4363            {
4364                let member_inline_size =
4365                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4366                        decoder.context,
4367                    );
4368                if inlined != (member_inline_size <= 4) {
4369                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4370                }
4371                let inner_offset;
4372                let mut inner_depth = depth.clone();
4373                if inlined {
4374                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4375                    inner_offset = next_offset;
4376                } else {
4377                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4378                    inner_depth.increment()?;
4379                }
4380                let val_ref = self
4381                    .peer_sta_address
4382                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4383                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4384                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4385                {
4386                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4387                }
4388                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4389                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4390                }
4391            }
4392
4393            next_offset += envelope_size;
4394            _next_ordinal_to_read += 1;
4395            if next_offset >= end_offset {
4396                return Ok(());
4397            }
4398
4399            // Decode unknown envelopes for gaps in ordinals.
4400            while _next_ordinal_to_read < 2 {
4401                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4402                _next_ordinal_to_read += 1;
4403                next_offset += envelope_size;
4404            }
4405
4406            let next_out_of_line = decoder.next_out_of_line();
4407            let handles_before = decoder.remaining_handles();
4408            if let Some((inlined, num_bytes, num_handles)) =
4409                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4410            {
4411                let member_inline_size =
4412                    <WlanAssocResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4413                if inlined != (member_inline_size <= 4) {
4414                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4415                }
4416                let inner_offset;
4417                let mut inner_depth = depth.clone();
4418                if inlined {
4419                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4420                    inner_offset = next_offset;
4421                } else {
4422                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4423                    inner_depth.increment()?;
4424                }
4425                let val_ref =
4426                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAssocResult, D));
4427                fidl::decode!(WlanAssocResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4428                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4429                {
4430                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4431                }
4432                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4433                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4434                }
4435            }
4436
4437            next_offset += envelope_size;
4438            _next_ordinal_to_read += 1;
4439            if next_offset >= end_offset {
4440                return Ok(());
4441            }
4442
4443            // Decode unknown envelopes for gaps in ordinals.
4444            while _next_ordinal_to_read < 3 {
4445                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4446                _next_ordinal_to_read += 1;
4447                next_offset += envelope_size;
4448            }
4449
4450            let next_out_of_line = decoder.next_out_of_line();
4451            let handles_before = decoder.remaining_handles();
4452            if let Some((inlined, num_bytes, num_handles)) =
4453                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4454            {
4455                let member_inline_size =
4456                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4457                if inlined != (member_inline_size <= 4) {
4458                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4459                }
4460                let inner_offset;
4461                let mut inner_depth = depth.clone();
4462                if inlined {
4463                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4464                    inner_offset = next_offset;
4465                } else {
4466                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4467                    inner_depth.increment()?;
4468                }
4469                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
4470                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4471                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4472                {
4473                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4474                }
4475                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4476                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4477                }
4478            }
4479
4480            next_offset += envelope_size;
4481
4482            // Decode the remaining unknown envelopes.
4483            while next_offset < end_offset {
4484                _next_ordinal_to_read += 1;
4485                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4486                next_offset += envelope_size;
4487            }
4488
4489            Ok(())
4490        }
4491    }
4492
4493    impl WlanFullmacImplAuthRespRequest {
4494        #[inline(always)]
4495        fn max_ordinal_present(&self) -> u64 {
4496            if let Some(_) = self.result_code {
4497                return 2;
4498            }
4499            if let Some(_) = self.peer_sta_address {
4500                return 1;
4501            }
4502            0
4503        }
4504    }
4505
4506    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAuthRespRequest {
4507        type Borrowed<'a> = &'a Self;
4508        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4509            value
4510        }
4511    }
4512
4513    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAuthRespRequest {
4514        type Owned = Self;
4515
4516        #[inline(always)]
4517        fn inline_align(_context: fidl::encoding::Context) -> usize {
4518            8
4519        }
4520
4521        #[inline(always)]
4522        fn inline_size(_context: fidl::encoding::Context) -> usize {
4523            16
4524        }
4525    }
4526
4527    unsafe impl<D: fidl::encoding::ResourceDialect>
4528        fidl::encoding::Encode<WlanFullmacImplAuthRespRequest, D>
4529        for &WlanFullmacImplAuthRespRequest
4530    {
4531        unsafe fn encode(
4532            self,
4533            encoder: &mut fidl::encoding::Encoder<'_, D>,
4534            offset: usize,
4535            mut depth: fidl::encoding::Depth,
4536        ) -> fidl::Result<()> {
4537            encoder.debug_check_bounds::<WlanFullmacImplAuthRespRequest>(offset);
4538            // Vector header
4539            let max_ordinal: u64 = self.max_ordinal_present();
4540            encoder.write_num(max_ordinal, offset);
4541            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4542            // Calling encoder.out_of_line_offset(0) is not allowed.
4543            if max_ordinal == 0 {
4544                return Ok(());
4545            }
4546            depth.increment()?;
4547            let envelope_size = 8;
4548            let bytes_len = max_ordinal as usize * envelope_size;
4549            #[allow(unused_variables)]
4550            let offset = encoder.out_of_line_offset(bytes_len);
4551            let mut _prev_end_offset: usize = 0;
4552            if 1 > max_ordinal {
4553                return Ok(());
4554            }
4555
4556            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4557            // are envelope_size bytes.
4558            let cur_offset: usize = (1 - 1) * envelope_size;
4559
4560            // Zero reserved fields.
4561            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4562
4563            // Safety:
4564            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4565            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4566            //   envelope_size bytes, there is always sufficient room.
4567            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4568                self.peer_sta_address
4569                    .as_ref()
4570                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4571                encoder,
4572                offset + cur_offset,
4573                depth,
4574            )?;
4575
4576            _prev_end_offset = cur_offset + envelope_size;
4577            if 2 > max_ordinal {
4578                return Ok(());
4579            }
4580
4581            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4582            // are envelope_size bytes.
4583            let cur_offset: usize = (2 - 1) * envelope_size;
4584
4585            // Zero reserved fields.
4586            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4587
4588            // Safety:
4589            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4590            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4591            //   envelope_size bytes, there is always sufficient room.
4592            fidl::encoding::encode_in_envelope_optional::<WlanAuthResult, D>(
4593                self.result_code
4594                    .as_ref()
4595                    .map(<WlanAuthResult as fidl::encoding::ValueTypeMarker>::borrow),
4596                encoder,
4597                offset + cur_offset,
4598                depth,
4599            )?;
4600
4601            _prev_end_offset = cur_offset + envelope_size;
4602
4603            Ok(())
4604        }
4605    }
4606
4607    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4608        for WlanFullmacImplAuthRespRequest
4609    {
4610        #[inline(always)]
4611        fn new_empty() -> Self {
4612            Self::default()
4613        }
4614
4615        unsafe fn decode(
4616            &mut self,
4617            decoder: &mut fidl::encoding::Decoder<'_, D>,
4618            offset: usize,
4619            mut depth: fidl::encoding::Depth,
4620        ) -> fidl::Result<()> {
4621            decoder.debug_check_bounds::<Self>(offset);
4622            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4623                None => return Err(fidl::Error::NotNullable),
4624                Some(len) => len,
4625            };
4626            // Calling decoder.out_of_line_offset(0) is not allowed.
4627            if len == 0 {
4628                return Ok(());
4629            };
4630            depth.increment()?;
4631            let envelope_size = 8;
4632            let bytes_len = len * envelope_size;
4633            let offset = decoder.out_of_line_offset(bytes_len)?;
4634            // Decode the envelope for each type.
4635            let mut _next_ordinal_to_read = 0;
4636            let mut next_offset = offset;
4637            let end_offset = offset + bytes_len;
4638            _next_ordinal_to_read += 1;
4639            if next_offset >= end_offset {
4640                return Ok(());
4641            }
4642
4643            // Decode unknown envelopes for gaps in ordinals.
4644            while _next_ordinal_to_read < 1 {
4645                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4646                _next_ordinal_to_read += 1;
4647                next_offset += envelope_size;
4648            }
4649
4650            let next_out_of_line = decoder.next_out_of_line();
4651            let handles_before = decoder.remaining_handles();
4652            if let Some((inlined, num_bytes, num_handles)) =
4653                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4654            {
4655                let member_inline_size =
4656                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4657                        decoder.context,
4658                    );
4659                if inlined != (member_inline_size <= 4) {
4660                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4661                }
4662                let inner_offset;
4663                let mut inner_depth = depth.clone();
4664                if inlined {
4665                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4666                    inner_offset = next_offset;
4667                } else {
4668                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4669                    inner_depth.increment()?;
4670                }
4671                let val_ref = self
4672                    .peer_sta_address
4673                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4674                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4675                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4676                {
4677                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4678                }
4679                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4680                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4681                }
4682            }
4683
4684            next_offset += envelope_size;
4685            _next_ordinal_to_read += 1;
4686            if next_offset >= end_offset {
4687                return Ok(());
4688            }
4689
4690            // Decode unknown envelopes for gaps in ordinals.
4691            while _next_ordinal_to_read < 2 {
4692                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4693                _next_ordinal_to_read += 1;
4694                next_offset += envelope_size;
4695            }
4696
4697            let next_out_of_line = decoder.next_out_of_line();
4698            let handles_before = decoder.remaining_handles();
4699            if let Some((inlined, num_bytes, num_handles)) =
4700                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4701            {
4702                let member_inline_size =
4703                    <WlanAuthResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4704                if inlined != (member_inline_size <= 4) {
4705                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4706                }
4707                let inner_offset;
4708                let mut inner_depth = depth.clone();
4709                if inlined {
4710                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4711                    inner_offset = next_offset;
4712                } else {
4713                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4714                    inner_depth.increment()?;
4715                }
4716                let val_ref =
4717                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAuthResult, D));
4718                fidl::decode!(WlanAuthResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4719                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4720                {
4721                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4722                }
4723                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4724                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4725                }
4726            }
4727
4728            next_offset += envelope_size;
4729
4730            // Decode the remaining unknown envelopes.
4731            while next_offset < end_offset {
4732                _next_ordinal_to_read += 1;
4733                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4734                next_offset += envelope_size;
4735            }
4736
4737            Ok(())
4738        }
4739    }
4740
4741    impl WlanFullmacImplConnectRequest {
4742        #[inline(always)]
4743        fn max_ordinal_present(&self) -> u64 {
4744            if let Some(_) = self.wep_key_desc {
4745                return 7;
4746            }
4747            if let Some(_) = self.security_ie {
4748                return 6;
4749            }
4750            if let Some(_) = self.wep_key {
4751                return 5;
4752            }
4753            if let Some(_) = self.sae_password {
4754                return 4;
4755            }
4756            if let Some(_) = self.auth_type {
4757                return 3;
4758            }
4759            if let Some(_) = self.connect_failure_timeout {
4760                return 2;
4761            }
4762            if let Some(_) = self.selected_bss {
4763                return 1;
4764            }
4765            0
4766        }
4767    }
4768
4769    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplConnectRequest {
4770        type Borrowed<'a> = &'a Self;
4771        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4772            value
4773        }
4774    }
4775
4776    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplConnectRequest {
4777        type Owned = Self;
4778
4779        #[inline(always)]
4780        fn inline_align(_context: fidl::encoding::Context) -> usize {
4781            8
4782        }
4783
4784        #[inline(always)]
4785        fn inline_size(_context: fidl::encoding::Context) -> usize {
4786            16
4787        }
4788    }
4789
4790    unsafe impl<D: fidl::encoding::ResourceDialect>
4791        fidl::encoding::Encode<WlanFullmacImplConnectRequest, D>
4792        for &WlanFullmacImplConnectRequest
4793    {
4794        unsafe fn encode(
4795            self,
4796            encoder: &mut fidl::encoding::Encoder<'_, D>,
4797            offset: usize,
4798            mut depth: fidl::encoding::Depth,
4799        ) -> fidl::Result<()> {
4800            encoder.debug_check_bounds::<WlanFullmacImplConnectRequest>(offset);
4801            // Vector header
4802            let max_ordinal: u64 = self.max_ordinal_present();
4803            encoder.write_num(max_ordinal, offset);
4804            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4805            // Calling encoder.out_of_line_offset(0) is not allowed.
4806            if max_ordinal == 0 {
4807                return Ok(());
4808            }
4809            depth.increment()?;
4810            let envelope_size = 8;
4811            let bytes_len = max_ordinal as usize * envelope_size;
4812            #[allow(unused_variables)]
4813            let offset = encoder.out_of_line_offset(bytes_len);
4814            let mut _prev_end_offset: usize = 0;
4815            if 1 > max_ordinal {
4816                return Ok(());
4817            }
4818
4819            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4820            // are envelope_size bytes.
4821            let cur_offset: usize = (1 - 1) * envelope_size;
4822
4823            // Zero reserved fields.
4824            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4825
4826            // Safety:
4827            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4828            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4829            //   envelope_size bytes, there is always sufficient room.
4830            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssDescription, D>(
4831            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
4832            encoder, offset + cur_offset, depth
4833        )?;
4834
4835            _prev_end_offset = cur_offset + envelope_size;
4836            if 2 > max_ordinal {
4837                return Ok(());
4838            }
4839
4840            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4841            // are envelope_size bytes.
4842            let cur_offset: usize = (2 - 1) * envelope_size;
4843
4844            // Zero reserved fields.
4845            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4846
4847            // Safety:
4848            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4849            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4850            //   envelope_size bytes, there is always sufficient room.
4851            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4852                self.connect_failure_timeout
4853                    .as_ref()
4854                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4855                encoder,
4856                offset + cur_offset,
4857                depth,
4858            )?;
4859
4860            _prev_end_offset = cur_offset + envelope_size;
4861            if 3 > max_ordinal {
4862                return Ok(());
4863            }
4864
4865            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4866            // are envelope_size bytes.
4867            let cur_offset: usize = (3 - 1) * envelope_size;
4868
4869            // Zero reserved fields.
4870            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4871
4872            // Safety:
4873            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4874            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4875            //   envelope_size bytes, there is always sufficient room.
4876            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
4877                self.auth_type
4878                    .as_ref()
4879                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
4880                encoder,
4881                offset + cur_offset,
4882                depth,
4883            )?;
4884
4885            _prev_end_offset = cur_offset + envelope_size;
4886            if 4 > max_ordinal {
4887                return Ok(());
4888            }
4889
4890            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4891            // are envelope_size bytes.
4892            let cur_offset: usize = (4 - 1) * envelope_size;
4893
4894            // Zero reserved fields.
4895            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4896
4897            // Safety:
4898            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4899            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4900            //   envelope_size bytes, there is always sufficient room.
4901            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
4902            self.sae_password.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
4903            encoder, offset + cur_offset, depth
4904        )?;
4905
4906            _prev_end_offset = cur_offset + envelope_size;
4907            if 5 > max_ordinal {
4908                return Ok(());
4909            }
4910
4911            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4912            // are envelope_size bytes.
4913            let cur_offset: usize = (5 - 1) * envelope_size;
4914
4915            // Zero reserved fields.
4916            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4917
4918            // Safety:
4919            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4920            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4921            //   envelope_size bytes, there is always sufficient room.
4922            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::WlanKeyConfig, D>(
4923            self.wep_key.as_ref().map(<fidl_fuchsia_wlan_common__common::WlanKeyConfig as fidl::encoding::ValueTypeMarker>::borrow),
4924            encoder, offset + cur_offset, depth
4925        )?;
4926
4927            _prev_end_offset = cur_offset + envelope_size;
4928            if 6 > max_ordinal {
4929                return Ok(());
4930            }
4931
4932            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4933            // are envelope_size bytes.
4934            let cur_offset: usize = (6 - 1) * envelope_size;
4935
4936            // Zero reserved fields.
4937            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4938
4939            // Safety:
4940            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4941            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4942            //   envelope_size bytes, there is always sufficient room.
4943            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
4944                self.security_ie.as_ref().map(
4945                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
4946                ),
4947                encoder,
4948                offset + cur_offset,
4949                depth,
4950            )?;
4951
4952            _prev_end_offset = cur_offset + envelope_size;
4953            if 7 > max_ordinal {
4954                return Ok(());
4955            }
4956
4957            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4958            // are envelope_size bytes.
4959            let cur_offset: usize = (7 - 1) * envelope_size;
4960
4961            // Zero reserved fields.
4962            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4963
4964            // Safety:
4965            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4966            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4967            //   envelope_size bytes, there is always sufficient room.
4968            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, D>(
4969            self.wep_key_desc.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor as fidl::encoding::ValueTypeMarker>::borrow),
4970            encoder, offset + cur_offset, depth
4971        )?;
4972
4973            _prev_end_offset = cur_offset + envelope_size;
4974
4975            Ok(())
4976        }
4977    }
4978
4979    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4980        for WlanFullmacImplConnectRequest
4981    {
4982        #[inline(always)]
4983        fn new_empty() -> Self {
4984            Self::default()
4985        }
4986
4987        unsafe fn decode(
4988            &mut self,
4989            decoder: &mut fidl::encoding::Decoder<'_, D>,
4990            offset: usize,
4991            mut depth: fidl::encoding::Depth,
4992        ) -> fidl::Result<()> {
4993            decoder.debug_check_bounds::<Self>(offset);
4994            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4995                None => return Err(fidl::Error::NotNullable),
4996                Some(len) => len,
4997            };
4998            // Calling decoder.out_of_line_offset(0) is not allowed.
4999            if len == 0 {
5000                return Ok(());
5001            };
5002            depth.increment()?;
5003            let envelope_size = 8;
5004            let bytes_len = len * envelope_size;
5005            let offset = decoder.out_of_line_offset(bytes_len)?;
5006            // Decode the envelope for each type.
5007            let mut _next_ordinal_to_read = 0;
5008            let mut next_offset = offset;
5009            let end_offset = offset + bytes_len;
5010            _next_ordinal_to_read += 1;
5011            if next_offset >= end_offset {
5012                return Ok(());
5013            }
5014
5015            // Decode unknown envelopes for gaps in ordinals.
5016            while _next_ordinal_to_read < 1 {
5017                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5018                _next_ordinal_to_read += 1;
5019                next_offset += envelope_size;
5020            }
5021
5022            let next_out_of_line = decoder.next_out_of_line();
5023            let handles_before = decoder.remaining_handles();
5024            if let Some((inlined, num_bytes, num_handles)) =
5025                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5026            {
5027                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5028                if inlined != (member_inline_size <= 4) {
5029                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5030                }
5031                let inner_offset;
5032                let mut inner_depth = depth.clone();
5033                if inlined {
5034                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5035                    inner_offset = next_offset;
5036                } else {
5037                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5038                    inner_depth.increment()?;
5039                }
5040                let val_ref = self.selected_bss.get_or_insert_with(|| {
5041                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D)
5042                });
5043                fidl::decode!(
5044                    fidl_fuchsia_wlan_common__common::BssDescription,
5045                    D,
5046                    val_ref,
5047                    decoder,
5048                    inner_offset,
5049                    inner_depth
5050                )?;
5051                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5052                {
5053                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5054                }
5055                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5056                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5057                }
5058            }
5059
5060            next_offset += envelope_size;
5061            _next_ordinal_to_read += 1;
5062            if next_offset >= end_offset {
5063                return Ok(());
5064            }
5065
5066            // Decode unknown envelopes for gaps in ordinals.
5067            while _next_ordinal_to_read < 2 {
5068                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5069                _next_ordinal_to_read += 1;
5070                next_offset += envelope_size;
5071            }
5072
5073            let next_out_of_line = decoder.next_out_of_line();
5074            let handles_before = decoder.remaining_handles();
5075            if let Some((inlined, num_bytes, num_handles)) =
5076                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5077            {
5078                let member_inline_size =
5079                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5080                if inlined != (member_inline_size <= 4) {
5081                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5082                }
5083                let inner_offset;
5084                let mut inner_depth = depth.clone();
5085                if inlined {
5086                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5087                    inner_offset = next_offset;
5088                } else {
5089                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5090                    inner_depth.increment()?;
5091                }
5092                let val_ref =
5093                    self.connect_failure_timeout.get_or_insert_with(|| fidl::new_empty!(u32, D));
5094                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
5095                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5096                {
5097                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5098                }
5099                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5100                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5101                }
5102            }
5103
5104            next_offset += envelope_size;
5105            _next_ordinal_to_read += 1;
5106            if next_offset >= end_offset {
5107                return Ok(());
5108            }
5109
5110            // Decode unknown envelopes for gaps in ordinals.
5111            while _next_ordinal_to_read < 3 {
5112                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5113                _next_ordinal_to_read += 1;
5114                next_offset += envelope_size;
5115            }
5116
5117            let next_out_of_line = decoder.next_out_of_line();
5118            let handles_before = decoder.remaining_handles();
5119            if let Some((inlined, num_bytes, num_handles)) =
5120                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5121            {
5122                let member_inline_size =
5123                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5124                if inlined != (member_inline_size <= 4) {
5125                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5126                }
5127                let inner_offset;
5128                let mut inner_depth = depth.clone();
5129                if inlined {
5130                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5131                    inner_offset = next_offset;
5132                } else {
5133                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5134                    inner_depth.increment()?;
5135                }
5136                let val_ref =
5137                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
5138                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
5139                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5140                {
5141                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5142                }
5143                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5144                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5145                }
5146            }
5147
5148            next_offset += envelope_size;
5149            _next_ordinal_to_read += 1;
5150            if next_offset >= end_offset {
5151                return Ok(());
5152            }
5153
5154            // Decode unknown envelopes for gaps in ordinals.
5155            while _next_ordinal_to_read < 4 {
5156                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5157                _next_ordinal_to_read += 1;
5158                next_offset += envelope_size;
5159            }
5160
5161            let next_out_of_line = decoder.next_out_of_line();
5162            let handles_before = decoder.remaining_handles();
5163            if let Some((inlined, num_bytes, num_handles)) =
5164                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5165            {
5166                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5167                if inlined != (member_inline_size <= 4) {
5168                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5169                }
5170                let inner_offset;
5171                let mut inner_depth = depth.clone();
5172                if inlined {
5173                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5174                    inner_offset = next_offset;
5175                } else {
5176                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5177                    inner_depth.increment()?;
5178                }
5179                let val_ref = self.sae_password.get_or_insert_with(|| {
5180                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
5181                });
5182                fidl::decode!(
5183                    fidl::encoding::UnboundedVector<u8>,
5184                    D,
5185                    val_ref,
5186                    decoder,
5187                    inner_offset,
5188                    inner_depth
5189                )?;
5190                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5191                {
5192                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5193                }
5194                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5195                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5196                }
5197            }
5198
5199            next_offset += envelope_size;
5200            _next_ordinal_to_read += 1;
5201            if next_offset >= end_offset {
5202                return Ok(());
5203            }
5204
5205            // Decode unknown envelopes for gaps in ordinals.
5206            while _next_ordinal_to_read < 5 {
5207                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5208                _next_ordinal_to_read += 1;
5209                next_offset += envelope_size;
5210            }
5211
5212            let next_out_of_line = decoder.next_out_of_line();
5213            let handles_before = decoder.remaining_handles();
5214            if let Some((inlined, num_bytes, num_handles)) =
5215                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5216            {
5217                let member_inline_size = <fidl_fuchsia_wlan_common__common::WlanKeyConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5218                if inlined != (member_inline_size <= 4) {
5219                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5220                }
5221                let inner_offset;
5222                let mut inner_depth = depth.clone();
5223                if inlined {
5224                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5225                    inner_offset = next_offset;
5226                } else {
5227                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5228                    inner_depth.increment()?;
5229                }
5230                let val_ref = self.wep_key.get_or_insert_with(|| {
5231                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanKeyConfig, D)
5232                });
5233                fidl::decode!(
5234                    fidl_fuchsia_wlan_common__common::WlanKeyConfig,
5235                    D,
5236                    val_ref,
5237                    decoder,
5238                    inner_offset,
5239                    inner_depth
5240                )?;
5241                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5242                {
5243                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5244                }
5245                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5246                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5247                }
5248            }
5249
5250            next_offset += envelope_size;
5251            _next_ordinal_to_read += 1;
5252            if next_offset >= end_offset {
5253                return Ok(());
5254            }
5255
5256            // Decode unknown envelopes for gaps in ordinals.
5257            while _next_ordinal_to_read < 6 {
5258                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5259                _next_ordinal_to_read += 1;
5260                next_offset += envelope_size;
5261            }
5262
5263            let next_out_of_line = decoder.next_out_of_line();
5264            let handles_before = decoder.remaining_handles();
5265            if let Some((inlined, num_bytes, num_handles)) =
5266                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5267            {
5268                let member_inline_size =
5269                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
5270                        decoder.context,
5271                    );
5272                if inlined != (member_inline_size <= 4) {
5273                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5274                }
5275                let inner_offset;
5276                let mut inner_depth = depth.clone();
5277                if inlined {
5278                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5279                    inner_offset = next_offset;
5280                } else {
5281                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5282                    inner_depth.increment()?;
5283                }
5284                let val_ref = self
5285                    .security_ie
5286                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
5287                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
5288                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5289                {
5290                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5291                }
5292                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5293                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5294                }
5295            }
5296
5297            next_offset += envelope_size;
5298            _next_ordinal_to_read += 1;
5299            if next_offset >= end_offset {
5300                return Ok(());
5301            }
5302
5303            // Decode unknown envelopes for gaps in ordinals.
5304            while _next_ordinal_to_read < 7 {
5305                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5306                _next_ordinal_to_read += 1;
5307                next_offset += envelope_size;
5308            }
5309
5310            let next_out_of_line = decoder.next_out_of_line();
5311            let handles_before = decoder.remaining_handles();
5312            if let Some((inlined, num_bytes, num_handles)) =
5313                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5314            {
5315                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5316                if inlined != (member_inline_size <= 4) {
5317                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5318                }
5319                let inner_offset;
5320                let mut inner_depth = depth.clone();
5321                if inlined {
5322                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5323                    inner_offset = next_offset;
5324                } else {
5325                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5326                    inner_depth.increment()?;
5327                }
5328                let val_ref = self.wep_key_desc.get_or_insert_with(|| {
5329                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, D)
5330                });
5331                fidl::decode!(
5332                    fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor,
5333                    D,
5334                    val_ref,
5335                    decoder,
5336                    inner_offset,
5337                    inner_depth
5338                )?;
5339                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5340                {
5341                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5342                }
5343                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5344                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5345                }
5346            }
5347
5348            next_offset += envelope_size;
5349
5350            // Decode the remaining unknown envelopes.
5351            while next_offset < end_offset {
5352                _next_ordinal_to_read += 1;
5353                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5354                next_offset += envelope_size;
5355            }
5356
5357            Ok(())
5358        }
5359    }
5360
5361    impl WlanFullmacImplDeauthRequest {
5362        #[inline(always)]
5363        fn max_ordinal_present(&self) -> u64 {
5364            if let Some(_) = self.reason_code {
5365                return 2;
5366            }
5367            if let Some(_) = self.peer_sta_address {
5368                return 1;
5369            }
5370            0
5371        }
5372    }
5373
5374    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDeauthRequest {
5375        type Borrowed<'a> = &'a Self;
5376        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5377            value
5378        }
5379    }
5380
5381    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDeauthRequest {
5382        type Owned = Self;
5383
5384        #[inline(always)]
5385        fn inline_align(_context: fidl::encoding::Context) -> usize {
5386            8
5387        }
5388
5389        #[inline(always)]
5390        fn inline_size(_context: fidl::encoding::Context) -> usize {
5391            16
5392        }
5393    }
5394
5395    unsafe impl<D: fidl::encoding::ResourceDialect>
5396        fidl::encoding::Encode<WlanFullmacImplDeauthRequest, D> for &WlanFullmacImplDeauthRequest
5397    {
5398        unsafe fn encode(
5399            self,
5400            encoder: &mut fidl::encoding::Encoder<'_, D>,
5401            offset: usize,
5402            mut depth: fidl::encoding::Depth,
5403        ) -> fidl::Result<()> {
5404            encoder.debug_check_bounds::<WlanFullmacImplDeauthRequest>(offset);
5405            // Vector header
5406            let max_ordinal: u64 = self.max_ordinal_present();
5407            encoder.write_num(max_ordinal, offset);
5408            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5409            // Calling encoder.out_of_line_offset(0) is not allowed.
5410            if max_ordinal == 0 {
5411                return Ok(());
5412            }
5413            depth.increment()?;
5414            let envelope_size = 8;
5415            let bytes_len = max_ordinal as usize * envelope_size;
5416            #[allow(unused_variables)]
5417            let offset = encoder.out_of_line_offset(bytes_len);
5418            let mut _prev_end_offset: usize = 0;
5419            if 1 > max_ordinal {
5420                return Ok(());
5421            }
5422
5423            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5424            // are envelope_size bytes.
5425            let cur_offset: usize = (1 - 1) * envelope_size;
5426
5427            // Zero reserved fields.
5428            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5429
5430            // Safety:
5431            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5432            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5433            //   envelope_size bytes, there is always sufficient room.
5434            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5435                self.peer_sta_address
5436                    .as_ref()
5437                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5438                encoder,
5439                offset + cur_offset,
5440                depth,
5441            )?;
5442
5443            _prev_end_offset = cur_offset + envelope_size;
5444            if 2 > max_ordinal {
5445                return Ok(());
5446            }
5447
5448            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5449            // are envelope_size bytes.
5450            let cur_offset: usize = (2 - 1) * envelope_size;
5451
5452            // Zero reserved fields.
5453            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5454
5455            // Safety:
5456            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5457            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5458            //   envelope_size bytes, there is always sufficient room.
5459            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
5460            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5461            encoder, offset + cur_offset, depth
5462        )?;
5463
5464            _prev_end_offset = cur_offset + envelope_size;
5465
5466            Ok(())
5467        }
5468    }
5469
5470    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5471        for WlanFullmacImplDeauthRequest
5472    {
5473        #[inline(always)]
5474        fn new_empty() -> Self {
5475            Self::default()
5476        }
5477
5478        unsafe fn decode(
5479            &mut self,
5480            decoder: &mut fidl::encoding::Decoder<'_, D>,
5481            offset: usize,
5482            mut depth: fidl::encoding::Depth,
5483        ) -> fidl::Result<()> {
5484            decoder.debug_check_bounds::<Self>(offset);
5485            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5486                None => return Err(fidl::Error::NotNullable),
5487                Some(len) => len,
5488            };
5489            // Calling decoder.out_of_line_offset(0) is not allowed.
5490            if len == 0 {
5491                return Ok(());
5492            };
5493            depth.increment()?;
5494            let envelope_size = 8;
5495            let bytes_len = len * envelope_size;
5496            let offset = decoder.out_of_line_offset(bytes_len)?;
5497            // Decode the envelope for each type.
5498            let mut _next_ordinal_to_read = 0;
5499            let mut next_offset = offset;
5500            let end_offset = offset + bytes_len;
5501            _next_ordinal_to_read += 1;
5502            if next_offset >= end_offset {
5503                return Ok(());
5504            }
5505
5506            // Decode unknown envelopes for gaps in ordinals.
5507            while _next_ordinal_to_read < 1 {
5508                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5509                _next_ordinal_to_read += 1;
5510                next_offset += envelope_size;
5511            }
5512
5513            let next_out_of_line = decoder.next_out_of_line();
5514            let handles_before = decoder.remaining_handles();
5515            if let Some((inlined, num_bytes, num_handles)) =
5516                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5517            {
5518                let member_inline_size =
5519                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5520                        decoder.context,
5521                    );
5522                if inlined != (member_inline_size <= 4) {
5523                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5524                }
5525                let inner_offset;
5526                let mut inner_depth = depth.clone();
5527                if inlined {
5528                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5529                    inner_offset = next_offset;
5530                } else {
5531                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5532                    inner_depth.increment()?;
5533                }
5534                let val_ref = self
5535                    .peer_sta_address
5536                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5537                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5538                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5539                {
5540                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5541                }
5542                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5543                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5544                }
5545            }
5546
5547            next_offset += envelope_size;
5548            _next_ordinal_to_read += 1;
5549            if next_offset >= end_offset {
5550                return Ok(());
5551            }
5552
5553            // Decode unknown envelopes for gaps in ordinals.
5554            while _next_ordinal_to_read < 2 {
5555                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5556                _next_ordinal_to_read += 1;
5557                next_offset += envelope_size;
5558            }
5559
5560            let next_out_of_line = decoder.next_out_of_line();
5561            let handles_before = decoder.remaining_handles();
5562            if let Some((inlined, num_bytes, num_handles)) =
5563                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5564            {
5565                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5566                if inlined != (member_inline_size <= 4) {
5567                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5568                }
5569                let inner_offset;
5570                let mut inner_depth = depth.clone();
5571                if inlined {
5572                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5573                    inner_offset = next_offset;
5574                } else {
5575                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5576                    inner_depth.increment()?;
5577                }
5578                let val_ref = self.reason_code.get_or_insert_with(|| {
5579                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
5580                });
5581                fidl::decode!(
5582                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
5583                    D,
5584                    val_ref,
5585                    decoder,
5586                    inner_offset,
5587                    inner_depth
5588                )?;
5589                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5590                {
5591                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5592                }
5593                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5594                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5595                }
5596            }
5597
5598            next_offset += envelope_size;
5599
5600            // Decode the remaining unknown envelopes.
5601            while next_offset < end_offset {
5602                _next_ordinal_to_read += 1;
5603                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5604                next_offset += envelope_size;
5605            }
5606
5607            Ok(())
5608        }
5609    }
5610
5611    impl WlanFullmacImplDisassocRequest {
5612        #[inline(always)]
5613        fn max_ordinal_present(&self) -> u64 {
5614            if let Some(_) = self.reason_code {
5615                return 2;
5616            }
5617            if let Some(_) = self.peer_sta_address {
5618                return 1;
5619            }
5620            0
5621        }
5622    }
5623
5624    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDisassocRequest {
5625        type Borrowed<'a> = &'a Self;
5626        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5627            value
5628        }
5629    }
5630
5631    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDisassocRequest {
5632        type Owned = Self;
5633
5634        #[inline(always)]
5635        fn inline_align(_context: fidl::encoding::Context) -> usize {
5636            8
5637        }
5638
5639        #[inline(always)]
5640        fn inline_size(_context: fidl::encoding::Context) -> usize {
5641            16
5642        }
5643    }
5644
5645    unsafe impl<D: fidl::encoding::ResourceDialect>
5646        fidl::encoding::Encode<WlanFullmacImplDisassocRequest, D>
5647        for &WlanFullmacImplDisassocRequest
5648    {
5649        unsafe fn encode(
5650            self,
5651            encoder: &mut fidl::encoding::Encoder<'_, D>,
5652            offset: usize,
5653            mut depth: fidl::encoding::Depth,
5654        ) -> fidl::Result<()> {
5655            encoder.debug_check_bounds::<WlanFullmacImplDisassocRequest>(offset);
5656            // Vector header
5657            let max_ordinal: u64 = self.max_ordinal_present();
5658            encoder.write_num(max_ordinal, offset);
5659            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5660            // Calling encoder.out_of_line_offset(0) is not allowed.
5661            if max_ordinal == 0 {
5662                return Ok(());
5663            }
5664            depth.increment()?;
5665            let envelope_size = 8;
5666            let bytes_len = max_ordinal as usize * envelope_size;
5667            #[allow(unused_variables)]
5668            let offset = encoder.out_of_line_offset(bytes_len);
5669            let mut _prev_end_offset: usize = 0;
5670            if 1 > max_ordinal {
5671                return Ok(());
5672            }
5673
5674            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5675            // are envelope_size bytes.
5676            let cur_offset: usize = (1 - 1) * envelope_size;
5677
5678            // Zero reserved fields.
5679            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5680
5681            // Safety:
5682            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5683            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5684            //   envelope_size bytes, there is always sufficient room.
5685            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5686                self.peer_sta_address
5687                    .as_ref()
5688                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5689                encoder,
5690                offset + cur_offset,
5691                depth,
5692            )?;
5693
5694            _prev_end_offset = cur_offset + envelope_size;
5695            if 2 > max_ordinal {
5696                return Ok(());
5697            }
5698
5699            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5700            // are envelope_size bytes.
5701            let cur_offset: usize = (2 - 1) * envelope_size;
5702
5703            // Zero reserved fields.
5704            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5705
5706            // Safety:
5707            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5708            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5709            //   envelope_size bytes, there is always sufficient room.
5710            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
5711            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5712            encoder, offset + cur_offset, depth
5713        )?;
5714
5715            _prev_end_offset = cur_offset + envelope_size;
5716
5717            Ok(())
5718        }
5719    }
5720
5721    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5722        for WlanFullmacImplDisassocRequest
5723    {
5724        #[inline(always)]
5725        fn new_empty() -> Self {
5726            Self::default()
5727        }
5728
5729        unsafe fn decode(
5730            &mut self,
5731            decoder: &mut fidl::encoding::Decoder<'_, D>,
5732            offset: usize,
5733            mut depth: fidl::encoding::Depth,
5734        ) -> fidl::Result<()> {
5735            decoder.debug_check_bounds::<Self>(offset);
5736            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5737                None => return Err(fidl::Error::NotNullable),
5738                Some(len) => len,
5739            };
5740            // Calling decoder.out_of_line_offset(0) is not allowed.
5741            if len == 0 {
5742                return Ok(());
5743            };
5744            depth.increment()?;
5745            let envelope_size = 8;
5746            let bytes_len = len * envelope_size;
5747            let offset = decoder.out_of_line_offset(bytes_len)?;
5748            // Decode the envelope for each type.
5749            let mut _next_ordinal_to_read = 0;
5750            let mut next_offset = offset;
5751            let end_offset = offset + bytes_len;
5752            _next_ordinal_to_read += 1;
5753            if next_offset >= end_offset {
5754                return Ok(());
5755            }
5756
5757            // Decode unknown envelopes for gaps in ordinals.
5758            while _next_ordinal_to_read < 1 {
5759                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5760                _next_ordinal_to_read += 1;
5761                next_offset += envelope_size;
5762            }
5763
5764            let next_out_of_line = decoder.next_out_of_line();
5765            let handles_before = decoder.remaining_handles();
5766            if let Some((inlined, num_bytes, num_handles)) =
5767                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5768            {
5769                let member_inline_size =
5770                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5771                        decoder.context,
5772                    );
5773                if inlined != (member_inline_size <= 4) {
5774                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5775                }
5776                let inner_offset;
5777                let mut inner_depth = depth.clone();
5778                if inlined {
5779                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5780                    inner_offset = next_offset;
5781                } else {
5782                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5783                    inner_depth.increment()?;
5784                }
5785                let val_ref = self
5786                    .peer_sta_address
5787                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5788                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5789                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5790                {
5791                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5792                }
5793                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5794                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5795                }
5796            }
5797
5798            next_offset += envelope_size;
5799            _next_ordinal_to_read += 1;
5800            if next_offset >= end_offset {
5801                return Ok(());
5802            }
5803
5804            // Decode unknown envelopes for gaps in ordinals.
5805            while _next_ordinal_to_read < 2 {
5806                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5807                _next_ordinal_to_read += 1;
5808                next_offset += envelope_size;
5809            }
5810
5811            let next_out_of_line = decoder.next_out_of_line();
5812            let handles_before = decoder.remaining_handles();
5813            if let Some((inlined, num_bytes, num_handles)) =
5814                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5815            {
5816                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5817                if inlined != (member_inline_size <= 4) {
5818                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5819                }
5820                let inner_offset;
5821                let mut inner_depth = depth.clone();
5822                if inlined {
5823                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5824                    inner_offset = next_offset;
5825                } else {
5826                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5827                    inner_depth.increment()?;
5828                }
5829                let val_ref = self.reason_code.get_or_insert_with(|| {
5830                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
5831                });
5832                fidl::decode!(
5833                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
5834                    D,
5835                    val_ref,
5836                    decoder,
5837                    inner_offset,
5838                    inner_depth
5839                )?;
5840                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5841                {
5842                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5843                }
5844                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5845                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5846                }
5847            }
5848
5849            next_offset += envelope_size;
5850
5851            // Decode the remaining unknown envelopes.
5852            while next_offset < end_offset {
5853                _next_ordinal_to_read += 1;
5854                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5855                next_offset += envelope_size;
5856            }
5857
5858            Ok(())
5859        }
5860    }
5861
5862    impl WlanFullmacImplEapolTxRequest {
5863        #[inline(always)]
5864        fn max_ordinal_present(&self) -> u64 {
5865            if let Some(_) = self.data {
5866                return 3;
5867            }
5868            if let Some(_) = self.dst_addr {
5869                return 2;
5870            }
5871            if let Some(_) = self.src_addr {
5872                return 1;
5873            }
5874            0
5875        }
5876    }
5877
5878    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplEapolTxRequest {
5879        type Borrowed<'a> = &'a Self;
5880        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5881            value
5882        }
5883    }
5884
5885    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplEapolTxRequest {
5886        type Owned = Self;
5887
5888        #[inline(always)]
5889        fn inline_align(_context: fidl::encoding::Context) -> usize {
5890            8
5891        }
5892
5893        #[inline(always)]
5894        fn inline_size(_context: fidl::encoding::Context) -> usize {
5895            16
5896        }
5897    }
5898
5899    unsafe impl<D: fidl::encoding::ResourceDialect>
5900        fidl::encoding::Encode<WlanFullmacImplEapolTxRequest, D>
5901        for &WlanFullmacImplEapolTxRequest
5902    {
5903        unsafe fn encode(
5904            self,
5905            encoder: &mut fidl::encoding::Encoder<'_, D>,
5906            offset: usize,
5907            mut depth: fidl::encoding::Depth,
5908        ) -> fidl::Result<()> {
5909            encoder.debug_check_bounds::<WlanFullmacImplEapolTxRequest>(offset);
5910            // Vector header
5911            let max_ordinal: u64 = self.max_ordinal_present();
5912            encoder.write_num(max_ordinal, offset);
5913            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5914            // Calling encoder.out_of_line_offset(0) is not allowed.
5915            if max_ordinal == 0 {
5916                return Ok(());
5917            }
5918            depth.increment()?;
5919            let envelope_size = 8;
5920            let bytes_len = max_ordinal as usize * envelope_size;
5921            #[allow(unused_variables)]
5922            let offset = encoder.out_of_line_offset(bytes_len);
5923            let mut _prev_end_offset: usize = 0;
5924            if 1 > max_ordinal {
5925                return Ok(());
5926            }
5927
5928            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5929            // are envelope_size bytes.
5930            let cur_offset: usize = (1 - 1) * envelope_size;
5931
5932            // Zero reserved fields.
5933            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5934
5935            // Safety:
5936            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5937            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5938            //   envelope_size bytes, there is always sufficient room.
5939            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5940                self.src_addr
5941                    .as_ref()
5942                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5943                encoder,
5944                offset + cur_offset,
5945                depth,
5946            )?;
5947
5948            _prev_end_offset = cur_offset + envelope_size;
5949            if 2 > max_ordinal {
5950                return Ok(());
5951            }
5952
5953            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5954            // are envelope_size bytes.
5955            let cur_offset: usize = (2 - 1) * envelope_size;
5956
5957            // Zero reserved fields.
5958            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5959
5960            // Safety:
5961            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5962            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5963            //   envelope_size bytes, there is always sufficient room.
5964            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5965                self.dst_addr
5966                    .as_ref()
5967                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5968                encoder,
5969                offset + cur_offset,
5970                depth,
5971            )?;
5972
5973            _prev_end_offset = cur_offset + envelope_size;
5974            if 3 > max_ordinal {
5975                return Ok(());
5976            }
5977
5978            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5979            // are envelope_size bytes.
5980            let cur_offset: usize = (3 - 1) * envelope_size;
5981
5982            // Zero reserved fields.
5983            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5984
5985            // Safety:
5986            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5987            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5988            //   envelope_size bytes, there is always sufficient room.
5989            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
5990            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
5991            encoder, offset + cur_offset, depth
5992        )?;
5993
5994            _prev_end_offset = cur_offset + envelope_size;
5995
5996            Ok(())
5997        }
5998    }
5999
6000    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6001        for WlanFullmacImplEapolTxRequest
6002    {
6003        #[inline(always)]
6004        fn new_empty() -> Self {
6005            Self::default()
6006        }
6007
6008        unsafe fn decode(
6009            &mut self,
6010            decoder: &mut fidl::encoding::Decoder<'_, D>,
6011            offset: usize,
6012            mut depth: fidl::encoding::Depth,
6013        ) -> fidl::Result<()> {
6014            decoder.debug_check_bounds::<Self>(offset);
6015            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6016                None => return Err(fidl::Error::NotNullable),
6017                Some(len) => len,
6018            };
6019            // Calling decoder.out_of_line_offset(0) is not allowed.
6020            if len == 0 {
6021                return Ok(());
6022            };
6023            depth.increment()?;
6024            let envelope_size = 8;
6025            let bytes_len = len * envelope_size;
6026            let offset = decoder.out_of_line_offset(bytes_len)?;
6027            // Decode the envelope for each type.
6028            let mut _next_ordinal_to_read = 0;
6029            let mut next_offset = offset;
6030            let end_offset = offset + bytes_len;
6031            _next_ordinal_to_read += 1;
6032            if next_offset >= end_offset {
6033                return Ok(());
6034            }
6035
6036            // Decode unknown envelopes for gaps in ordinals.
6037            while _next_ordinal_to_read < 1 {
6038                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6039                _next_ordinal_to_read += 1;
6040                next_offset += envelope_size;
6041            }
6042
6043            let next_out_of_line = decoder.next_out_of_line();
6044            let handles_before = decoder.remaining_handles();
6045            if let Some((inlined, num_bytes, num_handles)) =
6046                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6047            {
6048                let member_inline_size =
6049                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6050                        decoder.context,
6051                    );
6052                if inlined != (member_inline_size <= 4) {
6053                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6054                }
6055                let inner_offset;
6056                let mut inner_depth = depth.clone();
6057                if inlined {
6058                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6059                    inner_offset = next_offset;
6060                } else {
6061                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6062                    inner_depth.increment()?;
6063                }
6064                let val_ref = self
6065                    .src_addr
6066                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6067                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6068                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6069                {
6070                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6071                }
6072                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6073                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6074                }
6075            }
6076
6077            next_offset += envelope_size;
6078            _next_ordinal_to_read += 1;
6079            if next_offset >= end_offset {
6080                return Ok(());
6081            }
6082
6083            // Decode unknown envelopes for gaps in ordinals.
6084            while _next_ordinal_to_read < 2 {
6085                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6086                _next_ordinal_to_read += 1;
6087                next_offset += envelope_size;
6088            }
6089
6090            let next_out_of_line = decoder.next_out_of_line();
6091            let handles_before = decoder.remaining_handles();
6092            if let Some((inlined, num_bytes, num_handles)) =
6093                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6094            {
6095                let member_inline_size =
6096                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6097                        decoder.context,
6098                    );
6099                if inlined != (member_inline_size <= 4) {
6100                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6101                }
6102                let inner_offset;
6103                let mut inner_depth = depth.clone();
6104                if inlined {
6105                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6106                    inner_offset = next_offset;
6107                } else {
6108                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6109                    inner_depth.increment()?;
6110                }
6111                let val_ref = self
6112                    .dst_addr
6113                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6114                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6115                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6116                {
6117                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6118                }
6119                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6120                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6121                }
6122            }
6123
6124            next_offset += envelope_size;
6125            _next_ordinal_to_read += 1;
6126            if next_offset >= end_offset {
6127                return Ok(());
6128            }
6129
6130            // Decode unknown envelopes for gaps in ordinals.
6131            while _next_ordinal_to_read < 3 {
6132                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6133                _next_ordinal_to_read += 1;
6134                next_offset += envelope_size;
6135            }
6136
6137            let next_out_of_line = decoder.next_out_of_line();
6138            let handles_before = decoder.remaining_handles();
6139            if let Some((inlined, num_bytes, num_handles)) =
6140                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6141            {
6142                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6143                if inlined != (member_inline_size <= 4) {
6144                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6145                }
6146                let inner_offset;
6147                let mut inner_depth = depth.clone();
6148                if inlined {
6149                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6150                    inner_offset = next_offset;
6151                } else {
6152                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6153                    inner_depth.increment()?;
6154                }
6155                let val_ref = self.data.get_or_insert_with(|| {
6156                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
6157                });
6158                fidl::decode!(
6159                    fidl::encoding::UnboundedVector<u8>,
6160                    D,
6161                    val_ref,
6162                    decoder,
6163                    inner_offset,
6164                    inner_depth
6165                )?;
6166                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6167                {
6168                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6169                }
6170                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6171                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6172                }
6173            }
6174
6175            next_offset += envelope_size;
6176
6177            // Decode the remaining unknown envelopes.
6178            while next_offset < end_offset {
6179                _next_ordinal_to_read += 1;
6180                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6181                next_offset += envelope_size;
6182            }
6183
6184            Ok(())
6185        }
6186    }
6187
6188    impl WlanFullmacImplIfcAssocIndRequest {
6189        #[inline(always)]
6190        fn max_ordinal_present(&self) -> u64 {
6191            if let Some(_) = self.vendor_ie {
6192                return 5;
6193            }
6194            if let Some(_) = self.rsne {
6195                return 4;
6196            }
6197            if let Some(_) = self.ssid {
6198                return 3;
6199            }
6200            if let Some(_) = self.listen_interval {
6201                return 2;
6202            }
6203            if let Some(_) = self.peer_sta_address {
6204                return 1;
6205            }
6206            0
6207        }
6208    }
6209
6210    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAssocIndRequest {
6211        type Borrowed<'a> = &'a Self;
6212        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6213            value
6214        }
6215    }
6216
6217    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAssocIndRequest {
6218        type Owned = Self;
6219
6220        #[inline(always)]
6221        fn inline_align(_context: fidl::encoding::Context) -> usize {
6222            8
6223        }
6224
6225        #[inline(always)]
6226        fn inline_size(_context: fidl::encoding::Context) -> usize {
6227            16
6228        }
6229    }
6230
6231    unsafe impl<D: fidl::encoding::ResourceDialect>
6232        fidl::encoding::Encode<WlanFullmacImplIfcAssocIndRequest, D>
6233        for &WlanFullmacImplIfcAssocIndRequest
6234    {
6235        unsafe fn encode(
6236            self,
6237            encoder: &mut fidl::encoding::Encoder<'_, D>,
6238            offset: usize,
6239            mut depth: fidl::encoding::Depth,
6240        ) -> fidl::Result<()> {
6241            encoder.debug_check_bounds::<WlanFullmacImplIfcAssocIndRequest>(offset);
6242            // Vector header
6243            let max_ordinal: u64 = self.max_ordinal_present();
6244            encoder.write_num(max_ordinal, offset);
6245            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6246            // Calling encoder.out_of_line_offset(0) is not allowed.
6247            if max_ordinal == 0 {
6248                return Ok(());
6249            }
6250            depth.increment()?;
6251            let envelope_size = 8;
6252            let bytes_len = max_ordinal as usize * envelope_size;
6253            #[allow(unused_variables)]
6254            let offset = encoder.out_of_line_offset(bytes_len);
6255            let mut _prev_end_offset: usize = 0;
6256            if 1 > max_ordinal {
6257                return Ok(());
6258            }
6259
6260            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6261            // are envelope_size bytes.
6262            let cur_offset: usize = (1 - 1) * envelope_size;
6263
6264            // Zero reserved fields.
6265            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6266
6267            // Safety:
6268            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6269            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6270            //   envelope_size bytes, there is always sufficient room.
6271            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6272                self.peer_sta_address
6273                    .as_ref()
6274                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6275                encoder,
6276                offset + cur_offset,
6277                depth,
6278            )?;
6279
6280            _prev_end_offset = cur_offset + envelope_size;
6281            if 2 > max_ordinal {
6282                return Ok(());
6283            }
6284
6285            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6286            // are envelope_size bytes.
6287            let cur_offset: usize = (2 - 1) * envelope_size;
6288
6289            // Zero reserved fields.
6290            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6291
6292            // Safety:
6293            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6294            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6295            //   envelope_size bytes, there is always sufficient room.
6296            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6297                self.listen_interval.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6298                encoder,
6299                offset + cur_offset,
6300                depth,
6301            )?;
6302
6303            _prev_end_offset = cur_offset + envelope_size;
6304            if 3 > max_ordinal {
6305                return Ok(());
6306            }
6307
6308            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6309            // are envelope_size bytes.
6310            let cur_offset: usize = (3 - 1) * envelope_size;
6311
6312            // Zero reserved fields.
6313            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6314
6315            // Safety:
6316            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6317            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6318            //   envelope_size bytes, there is always sufficient room.
6319            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
6320                self.ssid.as_ref().map(
6321                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
6322                ),
6323                encoder,
6324                offset + cur_offset,
6325                depth,
6326            )?;
6327
6328            _prev_end_offset = cur_offset + envelope_size;
6329            if 4 > max_ordinal {
6330                return Ok(());
6331            }
6332
6333            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6334            // are envelope_size bytes.
6335            let cur_offset: usize = (4 - 1) * envelope_size;
6336
6337            // Zero reserved fields.
6338            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6339
6340            // Safety:
6341            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6342            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6343            //   envelope_size bytes, there is always sufficient room.
6344            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
6345                self.rsne.as_ref().map(
6346                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
6347                ),
6348                encoder,
6349                offset + cur_offset,
6350                depth,
6351            )?;
6352
6353            _prev_end_offset = cur_offset + envelope_size;
6354            if 5 > max_ordinal {
6355                return Ok(());
6356            }
6357
6358            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6359            // are envelope_size bytes.
6360            let cur_offset: usize = (5 - 1) * envelope_size;
6361
6362            // Zero reserved fields.
6363            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6364
6365            // Safety:
6366            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6367            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6368            //   envelope_size bytes, there is always sufficient room.
6369            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
6370                self.vendor_ie.as_ref().map(
6371                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
6372                ),
6373                encoder,
6374                offset + cur_offset,
6375                depth,
6376            )?;
6377
6378            _prev_end_offset = cur_offset + envelope_size;
6379
6380            Ok(())
6381        }
6382    }
6383
6384    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6385        for WlanFullmacImplIfcAssocIndRequest
6386    {
6387        #[inline(always)]
6388        fn new_empty() -> Self {
6389            Self::default()
6390        }
6391
6392        unsafe fn decode(
6393            &mut self,
6394            decoder: &mut fidl::encoding::Decoder<'_, D>,
6395            offset: usize,
6396            mut depth: fidl::encoding::Depth,
6397        ) -> fidl::Result<()> {
6398            decoder.debug_check_bounds::<Self>(offset);
6399            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6400                None => return Err(fidl::Error::NotNullable),
6401                Some(len) => len,
6402            };
6403            // Calling decoder.out_of_line_offset(0) is not allowed.
6404            if len == 0 {
6405                return Ok(());
6406            };
6407            depth.increment()?;
6408            let envelope_size = 8;
6409            let bytes_len = len * envelope_size;
6410            let offset = decoder.out_of_line_offset(bytes_len)?;
6411            // Decode the envelope for each type.
6412            let mut _next_ordinal_to_read = 0;
6413            let mut next_offset = offset;
6414            let end_offset = offset + bytes_len;
6415            _next_ordinal_to_read += 1;
6416            if next_offset >= end_offset {
6417                return Ok(());
6418            }
6419
6420            // Decode unknown envelopes for gaps in ordinals.
6421            while _next_ordinal_to_read < 1 {
6422                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6423                _next_ordinal_to_read += 1;
6424                next_offset += envelope_size;
6425            }
6426
6427            let next_out_of_line = decoder.next_out_of_line();
6428            let handles_before = decoder.remaining_handles();
6429            if let Some((inlined, num_bytes, num_handles)) =
6430                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6431            {
6432                let member_inline_size =
6433                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6434                        decoder.context,
6435                    );
6436                if inlined != (member_inline_size <= 4) {
6437                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6438                }
6439                let inner_offset;
6440                let mut inner_depth = depth.clone();
6441                if inlined {
6442                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6443                    inner_offset = next_offset;
6444                } else {
6445                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6446                    inner_depth.increment()?;
6447                }
6448                let val_ref = self
6449                    .peer_sta_address
6450                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6451                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6452                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6453                {
6454                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6455                }
6456                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6457                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6458                }
6459            }
6460
6461            next_offset += envelope_size;
6462            _next_ordinal_to_read += 1;
6463            if next_offset >= end_offset {
6464                return Ok(());
6465            }
6466
6467            // Decode unknown envelopes for gaps in ordinals.
6468            while _next_ordinal_to_read < 2 {
6469                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6470                _next_ordinal_to_read += 1;
6471                next_offset += envelope_size;
6472            }
6473
6474            let next_out_of_line = decoder.next_out_of_line();
6475            let handles_before = decoder.remaining_handles();
6476            if let Some((inlined, num_bytes, num_handles)) =
6477                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6478            {
6479                let member_inline_size =
6480                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6481                if inlined != (member_inline_size <= 4) {
6482                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6483                }
6484                let inner_offset;
6485                let mut inner_depth = depth.clone();
6486                if inlined {
6487                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6488                    inner_offset = next_offset;
6489                } else {
6490                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6491                    inner_depth.increment()?;
6492                }
6493                let val_ref = self.listen_interval.get_or_insert_with(|| fidl::new_empty!(u16, D));
6494                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6495                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6496                {
6497                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6498                }
6499                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6500                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6501                }
6502            }
6503
6504            next_offset += envelope_size;
6505            _next_ordinal_to_read += 1;
6506            if next_offset >= end_offset {
6507                return Ok(());
6508            }
6509
6510            // Decode unknown envelopes for gaps in ordinals.
6511            while _next_ordinal_to_read < 3 {
6512                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6513                _next_ordinal_to_read += 1;
6514                next_offset += envelope_size;
6515            }
6516
6517            let next_out_of_line = decoder.next_out_of_line();
6518            let handles_before = decoder.remaining_handles();
6519            if let Some((inlined, num_bytes, num_handles)) =
6520                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6521            {
6522                let member_inline_size =
6523                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
6524                        decoder.context,
6525                    );
6526                if inlined != (member_inline_size <= 4) {
6527                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6528                }
6529                let inner_offset;
6530                let mut inner_depth = depth.clone();
6531                if inlined {
6532                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6533                    inner_offset = next_offset;
6534                } else {
6535                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6536                    inner_depth.increment()?;
6537                }
6538                let val_ref = self
6539                    .ssid
6540                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
6541                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
6542                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6543                {
6544                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6545                }
6546                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6547                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6548                }
6549            }
6550
6551            next_offset += envelope_size;
6552            _next_ordinal_to_read += 1;
6553            if next_offset >= end_offset {
6554                return Ok(());
6555            }
6556
6557            // Decode unknown envelopes for gaps in ordinals.
6558            while _next_ordinal_to_read < 4 {
6559                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6560                _next_ordinal_to_read += 1;
6561                next_offset += envelope_size;
6562            }
6563
6564            let next_out_of_line = decoder.next_out_of_line();
6565            let handles_before = decoder.remaining_handles();
6566            if let Some((inlined, num_bytes, num_handles)) =
6567                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6568            {
6569                let member_inline_size =
6570                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
6571                        decoder.context,
6572                    );
6573                if inlined != (member_inline_size <= 4) {
6574                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6575                }
6576                let inner_offset;
6577                let mut inner_depth = depth.clone();
6578                if inlined {
6579                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6580                    inner_offset = next_offset;
6581                } else {
6582                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6583                    inner_depth.increment()?;
6584                }
6585                let val_ref = self
6586                    .rsne
6587                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
6588                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
6589                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6590                {
6591                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6592                }
6593                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6594                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6595                }
6596            }
6597
6598            next_offset += envelope_size;
6599            _next_ordinal_to_read += 1;
6600            if next_offset >= end_offset {
6601                return Ok(());
6602            }
6603
6604            // Decode unknown envelopes for gaps in ordinals.
6605            while _next_ordinal_to_read < 5 {
6606                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6607                _next_ordinal_to_read += 1;
6608                next_offset += envelope_size;
6609            }
6610
6611            let next_out_of_line = decoder.next_out_of_line();
6612            let handles_before = decoder.remaining_handles();
6613            if let Some((inlined, num_bytes, num_handles)) =
6614                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6615            {
6616                let member_inline_size =
6617                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
6618                        decoder.context,
6619                    );
6620                if inlined != (member_inline_size <= 4) {
6621                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6622                }
6623                let inner_offset;
6624                let mut inner_depth = depth.clone();
6625                if inlined {
6626                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6627                    inner_offset = next_offset;
6628                } else {
6629                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6630                    inner_depth.increment()?;
6631                }
6632                let val_ref = self
6633                    .vendor_ie
6634                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
6635                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
6636                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6637                {
6638                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6639                }
6640                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6641                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6642                }
6643            }
6644
6645            next_offset += envelope_size;
6646
6647            // Decode the remaining unknown envelopes.
6648            while next_offset < end_offset {
6649                _next_ordinal_to_read += 1;
6650                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6651                next_offset += envelope_size;
6652            }
6653
6654            Ok(())
6655        }
6656    }
6657
6658    impl WlanFullmacImplIfcAuthIndRequest {
6659        #[inline(always)]
6660        fn max_ordinal_present(&self) -> u64 {
6661            if let Some(_) = self.auth_type {
6662                return 2;
6663            }
6664            if let Some(_) = self.peer_sta_address {
6665                return 1;
6666            }
6667            0
6668        }
6669    }
6670
6671    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAuthIndRequest {
6672        type Borrowed<'a> = &'a Self;
6673        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6674            value
6675        }
6676    }
6677
6678    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAuthIndRequest {
6679        type Owned = Self;
6680
6681        #[inline(always)]
6682        fn inline_align(_context: fidl::encoding::Context) -> usize {
6683            8
6684        }
6685
6686        #[inline(always)]
6687        fn inline_size(_context: fidl::encoding::Context) -> usize {
6688            16
6689        }
6690    }
6691
6692    unsafe impl<D: fidl::encoding::ResourceDialect>
6693        fidl::encoding::Encode<WlanFullmacImplIfcAuthIndRequest, D>
6694        for &WlanFullmacImplIfcAuthIndRequest
6695    {
6696        unsafe fn encode(
6697            self,
6698            encoder: &mut fidl::encoding::Encoder<'_, D>,
6699            offset: usize,
6700            mut depth: fidl::encoding::Depth,
6701        ) -> fidl::Result<()> {
6702            encoder.debug_check_bounds::<WlanFullmacImplIfcAuthIndRequest>(offset);
6703            // Vector header
6704            let max_ordinal: u64 = self.max_ordinal_present();
6705            encoder.write_num(max_ordinal, offset);
6706            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6707            // Calling encoder.out_of_line_offset(0) is not allowed.
6708            if max_ordinal == 0 {
6709                return Ok(());
6710            }
6711            depth.increment()?;
6712            let envelope_size = 8;
6713            let bytes_len = max_ordinal as usize * envelope_size;
6714            #[allow(unused_variables)]
6715            let offset = encoder.out_of_line_offset(bytes_len);
6716            let mut _prev_end_offset: usize = 0;
6717            if 1 > max_ordinal {
6718                return Ok(());
6719            }
6720
6721            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6722            // are envelope_size bytes.
6723            let cur_offset: usize = (1 - 1) * envelope_size;
6724
6725            // Zero reserved fields.
6726            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6727
6728            // Safety:
6729            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6730            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6731            //   envelope_size bytes, there is always sufficient room.
6732            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6733                self.peer_sta_address
6734                    .as_ref()
6735                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6736                encoder,
6737                offset + cur_offset,
6738                depth,
6739            )?;
6740
6741            _prev_end_offset = cur_offset + envelope_size;
6742            if 2 > max_ordinal {
6743                return Ok(());
6744            }
6745
6746            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6747            // are envelope_size bytes.
6748            let cur_offset: usize = (2 - 1) * envelope_size;
6749
6750            // Zero reserved fields.
6751            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6752
6753            // Safety:
6754            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6755            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6756            //   envelope_size bytes, there is always sufficient room.
6757            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
6758                self.auth_type
6759                    .as_ref()
6760                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
6761                encoder,
6762                offset + cur_offset,
6763                depth,
6764            )?;
6765
6766            _prev_end_offset = cur_offset + envelope_size;
6767
6768            Ok(())
6769        }
6770    }
6771
6772    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6773        for WlanFullmacImplIfcAuthIndRequest
6774    {
6775        #[inline(always)]
6776        fn new_empty() -> Self {
6777            Self::default()
6778        }
6779
6780        unsafe fn decode(
6781            &mut self,
6782            decoder: &mut fidl::encoding::Decoder<'_, D>,
6783            offset: usize,
6784            mut depth: fidl::encoding::Depth,
6785        ) -> fidl::Result<()> {
6786            decoder.debug_check_bounds::<Self>(offset);
6787            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6788                None => return Err(fidl::Error::NotNullable),
6789                Some(len) => len,
6790            };
6791            // Calling decoder.out_of_line_offset(0) is not allowed.
6792            if len == 0 {
6793                return Ok(());
6794            };
6795            depth.increment()?;
6796            let envelope_size = 8;
6797            let bytes_len = len * envelope_size;
6798            let offset = decoder.out_of_line_offset(bytes_len)?;
6799            // Decode the envelope for each type.
6800            let mut _next_ordinal_to_read = 0;
6801            let mut next_offset = offset;
6802            let end_offset = offset + bytes_len;
6803            _next_ordinal_to_read += 1;
6804            if next_offset >= end_offset {
6805                return Ok(());
6806            }
6807
6808            // Decode unknown envelopes for gaps in ordinals.
6809            while _next_ordinal_to_read < 1 {
6810                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6811                _next_ordinal_to_read += 1;
6812                next_offset += envelope_size;
6813            }
6814
6815            let next_out_of_line = decoder.next_out_of_line();
6816            let handles_before = decoder.remaining_handles();
6817            if let Some((inlined, num_bytes, num_handles)) =
6818                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6819            {
6820                let member_inline_size =
6821                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6822                        decoder.context,
6823                    );
6824                if inlined != (member_inline_size <= 4) {
6825                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6826                }
6827                let inner_offset;
6828                let mut inner_depth = depth.clone();
6829                if inlined {
6830                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6831                    inner_offset = next_offset;
6832                } else {
6833                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6834                    inner_depth.increment()?;
6835                }
6836                let val_ref = self
6837                    .peer_sta_address
6838                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6839                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6840                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6841                {
6842                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6843                }
6844                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6845                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6846                }
6847            }
6848
6849            next_offset += envelope_size;
6850            _next_ordinal_to_read += 1;
6851            if next_offset >= end_offset {
6852                return Ok(());
6853            }
6854
6855            // Decode unknown envelopes for gaps in ordinals.
6856            while _next_ordinal_to_read < 2 {
6857                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6858                _next_ordinal_to_read += 1;
6859                next_offset += envelope_size;
6860            }
6861
6862            let next_out_of_line = decoder.next_out_of_line();
6863            let handles_before = decoder.remaining_handles();
6864            if let Some((inlined, num_bytes, num_handles)) =
6865                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6866            {
6867                let member_inline_size =
6868                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6869                if inlined != (member_inline_size <= 4) {
6870                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6871                }
6872                let inner_offset;
6873                let mut inner_depth = depth.clone();
6874                if inlined {
6875                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6876                    inner_offset = next_offset;
6877                } else {
6878                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6879                    inner_depth.increment()?;
6880                }
6881                let val_ref =
6882                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
6883                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
6884                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6885                {
6886                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6887                }
6888                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6889                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6890                }
6891            }
6892
6893            next_offset += envelope_size;
6894
6895            // Decode the remaining unknown envelopes.
6896            while next_offset < end_offset {
6897                _next_ordinal_to_read += 1;
6898                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6899                next_offset += envelope_size;
6900            }
6901
6902            Ok(())
6903        }
6904    }
6905
6906    impl WlanFullmacImplIfcConnectConfRequest {
6907        #[inline(always)]
6908        fn max_ordinal_present(&self) -> u64 {
6909            if let Some(_) = self.association_ies {
6910                return 4;
6911            }
6912            if let Some(_) = self.association_id {
6913                return 3;
6914            }
6915            if let Some(_) = self.result_code {
6916                return 2;
6917            }
6918            if let Some(_) = self.peer_sta_address {
6919                return 1;
6920            }
6921            0
6922        }
6923    }
6924
6925    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcConnectConfRequest {
6926        type Borrowed<'a> = &'a Self;
6927        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6928            value
6929        }
6930    }
6931
6932    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcConnectConfRequest {
6933        type Owned = Self;
6934
6935        #[inline(always)]
6936        fn inline_align(_context: fidl::encoding::Context) -> usize {
6937            8
6938        }
6939
6940        #[inline(always)]
6941        fn inline_size(_context: fidl::encoding::Context) -> usize {
6942            16
6943        }
6944    }
6945
6946    unsafe impl<D: fidl::encoding::ResourceDialect>
6947        fidl::encoding::Encode<WlanFullmacImplIfcConnectConfRequest, D>
6948        for &WlanFullmacImplIfcConnectConfRequest
6949    {
6950        unsafe fn encode(
6951            self,
6952            encoder: &mut fidl::encoding::Encoder<'_, D>,
6953            offset: usize,
6954            mut depth: fidl::encoding::Depth,
6955        ) -> fidl::Result<()> {
6956            encoder.debug_check_bounds::<WlanFullmacImplIfcConnectConfRequest>(offset);
6957            // Vector header
6958            let max_ordinal: u64 = self.max_ordinal_present();
6959            encoder.write_num(max_ordinal, offset);
6960            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6961            // Calling encoder.out_of_line_offset(0) is not allowed.
6962            if max_ordinal == 0 {
6963                return Ok(());
6964            }
6965            depth.increment()?;
6966            let envelope_size = 8;
6967            let bytes_len = max_ordinal as usize * envelope_size;
6968            #[allow(unused_variables)]
6969            let offset = encoder.out_of_line_offset(bytes_len);
6970            let mut _prev_end_offset: usize = 0;
6971            if 1 > max_ordinal {
6972                return Ok(());
6973            }
6974
6975            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6976            // are envelope_size bytes.
6977            let cur_offset: usize = (1 - 1) * envelope_size;
6978
6979            // Zero reserved fields.
6980            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6981
6982            // Safety:
6983            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6984            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6985            //   envelope_size bytes, there is always sufficient room.
6986            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6987                self.peer_sta_address
6988                    .as_ref()
6989                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6990                encoder,
6991                offset + cur_offset,
6992                depth,
6993            )?;
6994
6995            _prev_end_offset = cur_offset + envelope_size;
6996            if 2 > max_ordinal {
6997                return Ok(());
6998            }
6999
7000            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7001            // are envelope_size bytes.
7002            let cur_offset: usize = (2 - 1) * envelope_size;
7003
7004            // Zero reserved fields.
7005            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7006
7007            // Safety:
7008            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7009            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7010            //   envelope_size bytes, there is always sufficient room.
7011            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
7012            self.result_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
7013            encoder, offset + cur_offset, depth
7014        )?;
7015
7016            _prev_end_offset = cur_offset + envelope_size;
7017            if 3 > max_ordinal {
7018                return Ok(());
7019            }
7020
7021            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7022            // are envelope_size bytes.
7023            let cur_offset: usize = (3 - 1) * envelope_size;
7024
7025            // Zero reserved fields.
7026            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7027
7028            // Safety:
7029            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7030            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7031            //   envelope_size bytes, there is always sufficient room.
7032            fidl::encoding::encode_in_envelope_optional::<u16, D>(
7033                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
7034                encoder,
7035                offset + cur_offset,
7036                depth,
7037            )?;
7038
7039            _prev_end_offset = cur_offset + envelope_size;
7040            if 4 > max_ordinal {
7041                return Ok(());
7042            }
7043
7044            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7045            // are envelope_size bytes.
7046            let cur_offset: usize = (4 - 1) * envelope_size;
7047
7048            // Zero reserved fields.
7049            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7050
7051            // Safety:
7052            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7053            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7054            //   envelope_size bytes, there is always sufficient room.
7055            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
7056            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
7057            encoder, offset + cur_offset, depth
7058        )?;
7059
7060            _prev_end_offset = cur_offset + envelope_size;
7061
7062            Ok(())
7063        }
7064    }
7065
7066    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7067        for WlanFullmacImplIfcConnectConfRequest
7068    {
7069        #[inline(always)]
7070        fn new_empty() -> Self {
7071            Self::default()
7072        }
7073
7074        unsafe fn decode(
7075            &mut self,
7076            decoder: &mut fidl::encoding::Decoder<'_, D>,
7077            offset: usize,
7078            mut depth: fidl::encoding::Depth,
7079        ) -> fidl::Result<()> {
7080            decoder.debug_check_bounds::<Self>(offset);
7081            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7082                None => return Err(fidl::Error::NotNullable),
7083                Some(len) => len,
7084            };
7085            // Calling decoder.out_of_line_offset(0) is not allowed.
7086            if len == 0 {
7087                return Ok(());
7088            };
7089            depth.increment()?;
7090            let envelope_size = 8;
7091            let bytes_len = len * envelope_size;
7092            let offset = decoder.out_of_line_offset(bytes_len)?;
7093            // Decode the envelope for each type.
7094            let mut _next_ordinal_to_read = 0;
7095            let mut next_offset = offset;
7096            let end_offset = offset + bytes_len;
7097            _next_ordinal_to_read += 1;
7098            if next_offset >= end_offset {
7099                return Ok(());
7100            }
7101
7102            // Decode unknown envelopes for gaps in ordinals.
7103            while _next_ordinal_to_read < 1 {
7104                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7105                _next_ordinal_to_read += 1;
7106                next_offset += envelope_size;
7107            }
7108
7109            let next_out_of_line = decoder.next_out_of_line();
7110            let handles_before = decoder.remaining_handles();
7111            if let Some((inlined, num_bytes, num_handles)) =
7112                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7113            {
7114                let member_inline_size =
7115                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7116                        decoder.context,
7117                    );
7118                if inlined != (member_inline_size <= 4) {
7119                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7120                }
7121                let inner_offset;
7122                let mut inner_depth = depth.clone();
7123                if inlined {
7124                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7125                    inner_offset = next_offset;
7126                } else {
7127                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7128                    inner_depth.increment()?;
7129                }
7130                let val_ref = self
7131                    .peer_sta_address
7132                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7133                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7134                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7135                {
7136                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7137                }
7138                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7139                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7140                }
7141            }
7142
7143            next_offset += envelope_size;
7144            _next_ordinal_to_read += 1;
7145            if next_offset >= end_offset {
7146                return Ok(());
7147            }
7148
7149            // Decode unknown envelopes for gaps in ordinals.
7150            while _next_ordinal_to_read < 2 {
7151                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7152                _next_ordinal_to_read += 1;
7153                next_offset += envelope_size;
7154            }
7155
7156            let next_out_of_line = decoder.next_out_of_line();
7157            let handles_before = decoder.remaining_handles();
7158            if let Some((inlined, num_bytes, num_handles)) =
7159                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7160            {
7161                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7162                if inlined != (member_inline_size <= 4) {
7163                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7164                }
7165                let inner_offset;
7166                let mut inner_depth = depth.clone();
7167                if inlined {
7168                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7169                    inner_offset = next_offset;
7170                } else {
7171                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7172                    inner_depth.increment()?;
7173                }
7174                let val_ref = self.result_code.get_or_insert_with(|| {
7175                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
7176                });
7177                fidl::decode!(
7178                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
7179                    D,
7180                    val_ref,
7181                    decoder,
7182                    inner_offset,
7183                    inner_depth
7184                )?;
7185                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7186                {
7187                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7188                }
7189                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7190                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7191                }
7192            }
7193
7194            next_offset += envelope_size;
7195            _next_ordinal_to_read += 1;
7196            if next_offset >= end_offset {
7197                return Ok(());
7198            }
7199
7200            // Decode unknown envelopes for gaps in ordinals.
7201            while _next_ordinal_to_read < 3 {
7202                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7203                _next_ordinal_to_read += 1;
7204                next_offset += envelope_size;
7205            }
7206
7207            let next_out_of_line = decoder.next_out_of_line();
7208            let handles_before = decoder.remaining_handles();
7209            if let Some((inlined, num_bytes, num_handles)) =
7210                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7211            {
7212                let member_inline_size =
7213                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7214                if inlined != (member_inline_size <= 4) {
7215                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7216                }
7217                let inner_offset;
7218                let mut inner_depth = depth.clone();
7219                if inlined {
7220                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7221                    inner_offset = next_offset;
7222                } else {
7223                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7224                    inner_depth.increment()?;
7225                }
7226                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
7227                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7228                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7229                {
7230                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7231                }
7232                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7233                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7234                }
7235            }
7236
7237            next_offset += envelope_size;
7238            _next_ordinal_to_read += 1;
7239            if next_offset >= end_offset {
7240                return Ok(());
7241            }
7242
7243            // Decode unknown envelopes for gaps in ordinals.
7244            while _next_ordinal_to_read < 4 {
7245                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7246                _next_ordinal_to_read += 1;
7247                next_offset += envelope_size;
7248            }
7249
7250            let next_out_of_line = decoder.next_out_of_line();
7251            let handles_before = decoder.remaining_handles();
7252            if let Some((inlined, num_bytes, num_handles)) =
7253                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7254            {
7255                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7256                if inlined != (member_inline_size <= 4) {
7257                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7258                }
7259                let inner_offset;
7260                let mut inner_depth = depth.clone();
7261                if inlined {
7262                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7263                    inner_offset = next_offset;
7264                } else {
7265                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7266                    inner_depth.increment()?;
7267                }
7268                let val_ref = self.association_ies.get_or_insert_with(|| {
7269                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
7270                });
7271                fidl::decode!(
7272                    fidl::encoding::UnboundedVector<u8>,
7273                    D,
7274                    val_ref,
7275                    decoder,
7276                    inner_offset,
7277                    inner_depth
7278                )?;
7279                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7280                {
7281                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7282                }
7283                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7284                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7285                }
7286            }
7287
7288            next_offset += envelope_size;
7289
7290            // Decode the remaining unknown envelopes.
7291            while next_offset < end_offset {
7292                _next_ordinal_to_read += 1;
7293                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7294                next_offset += envelope_size;
7295            }
7296
7297            Ok(())
7298        }
7299    }
7300
7301    impl WlanFullmacImplIfcDeauthConfRequest {
7302        #[inline(always)]
7303        fn max_ordinal_present(&self) -> u64 {
7304            if let Some(_) = self.peer_sta_address {
7305                return 1;
7306            }
7307            0
7308        }
7309    }
7310
7311    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7312        type Borrowed<'a> = &'a Self;
7313        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7314            value
7315        }
7316    }
7317
7318    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7319        type Owned = Self;
7320
7321        #[inline(always)]
7322        fn inline_align(_context: fidl::encoding::Context) -> usize {
7323            8
7324        }
7325
7326        #[inline(always)]
7327        fn inline_size(_context: fidl::encoding::Context) -> usize {
7328            16
7329        }
7330    }
7331
7332    unsafe impl<D: fidl::encoding::ResourceDialect>
7333        fidl::encoding::Encode<WlanFullmacImplIfcDeauthConfRequest, D>
7334        for &WlanFullmacImplIfcDeauthConfRequest
7335    {
7336        unsafe fn encode(
7337            self,
7338            encoder: &mut fidl::encoding::Encoder<'_, D>,
7339            offset: usize,
7340            mut depth: fidl::encoding::Depth,
7341        ) -> fidl::Result<()> {
7342            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthConfRequest>(offset);
7343            // Vector header
7344            let max_ordinal: u64 = self.max_ordinal_present();
7345            encoder.write_num(max_ordinal, offset);
7346            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7347            // Calling encoder.out_of_line_offset(0) is not allowed.
7348            if max_ordinal == 0 {
7349                return Ok(());
7350            }
7351            depth.increment()?;
7352            let envelope_size = 8;
7353            let bytes_len = max_ordinal as usize * envelope_size;
7354            #[allow(unused_variables)]
7355            let offset = encoder.out_of_line_offset(bytes_len);
7356            let mut _prev_end_offset: usize = 0;
7357            if 1 > max_ordinal {
7358                return Ok(());
7359            }
7360
7361            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7362            // are envelope_size bytes.
7363            let cur_offset: usize = (1 - 1) * envelope_size;
7364
7365            // Zero reserved fields.
7366            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7367
7368            // Safety:
7369            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7370            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7371            //   envelope_size bytes, there is always sufficient room.
7372            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7373                self.peer_sta_address
7374                    .as_ref()
7375                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7376                encoder,
7377                offset + cur_offset,
7378                depth,
7379            )?;
7380
7381            _prev_end_offset = cur_offset + envelope_size;
7382
7383            Ok(())
7384        }
7385    }
7386
7387    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7388        for WlanFullmacImplIfcDeauthConfRequest
7389    {
7390        #[inline(always)]
7391        fn new_empty() -> Self {
7392            Self::default()
7393        }
7394
7395        unsafe fn decode(
7396            &mut self,
7397            decoder: &mut fidl::encoding::Decoder<'_, D>,
7398            offset: usize,
7399            mut depth: fidl::encoding::Depth,
7400        ) -> fidl::Result<()> {
7401            decoder.debug_check_bounds::<Self>(offset);
7402            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7403                None => return Err(fidl::Error::NotNullable),
7404                Some(len) => len,
7405            };
7406            // Calling decoder.out_of_line_offset(0) is not allowed.
7407            if len == 0 {
7408                return Ok(());
7409            };
7410            depth.increment()?;
7411            let envelope_size = 8;
7412            let bytes_len = len * envelope_size;
7413            let offset = decoder.out_of_line_offset(bytes_len)?;
7414            // Decode the envelope for each type.
7415            let mut _next_ordinal_to_read = 0;
7416            let mut next_offset = offset;
7417            let end_offset = offset + bytes_len;
7418            _next_ordinal_to_read += 1;
7419            if next_offset >= end_offset {
7420                return Ok(());
7421            }
7422
7423            // Decode unknown envelopes for gaps in ordinals.
7424            while _next_ordinal_to_read < 1 {
7425                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7426                _next_ordinal_to_read += 1;
7427                next_offset += envelope_size;
7428            }
7429
7430            let next_out_of_line = decoder.next_out_of_line();
7431            let handles_before = decoder.remaining_handles();
7432            if let Some((inlined, num_bytes, num_handles)) =
7433                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7434            {
7435                let member_inline_size =
7436                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7437                        decoder.context,
7438                    );
7439                if inlined != (member_inline_size <= 4) {
7440                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7441                }
7442                let inner_offset;
7443                let mut inner_depth = depth.clone();
7444                if inlined {
7445                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7446                    inner_offset = next_offset;
7447                } else {
7448                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7449                    inner_depth.increment()?;
7450                }
7451                let val_ref = self
7452                    .peer_sta_address
7453                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7454                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7455                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7456                {
7457                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7458                }
7459                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7460                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7461                }
7462            }
7463
7464            next_offset += envelope_size;
7465
7466            // Decode the remaining unknown envelopes.
7467            while next_offset < end_offset {
7468                _next_ordinal_to_read += 1;
7469                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7470                next_offset += envelope_size;
7471            }
7472
7473            Ok(())
7474        }
7475    }
7476
7477    impl WlanFullmacImplIfcDeauthIndRequest {
7478        #[inline(always)]
7479        fn max_ordinal_present(&self) -> u64 {
7480            if let Some(_) = self.locally_initiated {
7481                return 3;
7482            }
7483            if let Some(_) = self.reason_code {
7484                return 2;
7485            }
7486            if let Some(_) = self.peer_sta_address {
7487                return 1;
7488            }
7489            0
7490        }
7491    }
7492
7493    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7494        type Borrowed<'a> = &'a Self;
7495        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7496            value
7497        }
7498    }
7499
7500    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7501        type Owned = Self;
7502
7503        #[inline(always)]
7504        fn inline_align(_context: fidl::encoding::Context) -> usize {
7505            8
7506        }
7507
7508        #[inline(always)]
7509        fn inline_size(_context: fidl::encoding::Context) -> usize {
7510            16
7511        }
7512    }
7513
7514    unsafe impl<D: fidl::encoding::ResourceDialect>
7515        fidl::encoding::Encode<WlanFullmacImplIfcDeauthIndRequest, D>
7516        for &WlanFullmacImplIfcDeauthIndRequest
7517    {
7518        unsafe fn encode(
7519            self,
7520            encoder: &mut fidl::encoding::Encoder<'_, D>,
7521            offset: usize,
7522            mut depth: fidl::encoding::Depth,
7523        ) -> fidl::Result<()> {
7524            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthIndRequest>(offset);
7525            // Vector header
7526            let max_ordinal: u64 = self.max_ordinal_present();
7527            encoder.write_num(max_ordinal, offset);
7528            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7529            // Calling encoder.out_of_line_offset(0) is not allowed.
7530            if max_ordinal == 0 {
7531                return Ok(());
7532            }
7533            depth.increment()?;
7534            let envelope_size = 8;
7535            let bytes_len = max_ordinal as usize * envelope_size;
7536            #[allow(unused_variables)]
7537            let offset = encoder.out_of_line_offset(bytes_len);
7538            let mut _prev_end_offset: usize = 0;
7539            if 1 > max_ordinal {
7540                return Ok(());
7541            }
7542
7543            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7544            // are envelope_size bytes.
7545            let cur_offset: usize = (1 - 1) * envelope_size;
7546
7547            // Zero reserved fields.
7548            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7549
7550            // Safety:
7551            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7552            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7553            //   envelope_size bytes, there is always sufficient room.
7554            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7555                self.peer_sta_address
7556                    .as_ref()
7557                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7558                encoder,
7559                offset + cur_offset,
7560                depth,
7561            )?;
7562
7563            _prev_end_offset = cur_offset + envelope_size;
7564            if 2 > max_ordinal {
7565                return Ok(());
7566            }
7567
7568            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7569            // are envelope_size bytes.
7570            let cur_offset: usize = (2 - 1) * envelope_size;
7571
7572            // Zero reserved fields.
7573            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7574
7575            // Safety:
7576            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7577            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7578            //   envelope_size bytes, there is always sufficient room.
7579            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
7580            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
7581            encoder, offset + cur_offset, depth
7582        )?;
7583
7584            _prev_end_offset = cur_offset + envelope_size;
7585            if 3 > max_ordinal {
7586                return Ok(());
7587            }
7588
7589            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7590            // are envelope_size bytes.
7591            let cur_offset: usize = (3 - 1) * envelope_size;
7592
7593            // Zero reserved fields.
7594            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7595
7596            // Safety:
7597            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7598            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7599            //   envelope_size bytes, there is always sufficient room.
7600            fidl::encoding::encode_in_envelope_optional::<bool, D>(
7601                self.locally_initiated
7602                    .as_ref()
7603                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7604                encoder,
7605                offset + cur_offset,
7606                depth,
7607            )?;
7608
7609            _prev_end_offset = cur_offset + envelope_size;
7610
7611            Ok(())
7612        }
7613    }
7614
7615    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7616        for WlanFullmacImplIfcDeauthIndRequest
7617    {
7618        #[inline(always)]
7619        fn new_empty() -> Self {
7620            Self::default()
7621        }
7622
7623        unsafe fn decode(
7624            &mut self,
7625            decoder: &mut fidl::encoding::Decoder<'_, D>,
7626            offset: usize,
7627            mut depth: fidl::encoding::Depth,
7628        ) -> fidl::Result<()> {
7629            decoder.debug_check_bounds::<Self>(offset);
7630            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7631                None => return Err(fidl::Error::NotNullable),
7632                Some(len) => len,
7633            };
7634            // Calling decoder.out_of_line_offset(0) is not allowed.
7635            if len == 0 {
7636                return Ok(());
7637            };
7638            depth.increment()?;
7639            let envelope_size = 8;
7640            let bytes_len = len * envelope_size;
7641            let offset = decoder.out_of_line_offset(bytes_len)?;
7642            // Decode the envelope for each type.
7643            let mut _next_ordinal_to_read = 0;
7644            let mut next_offset = offset;
7645            let end_offset = offset + bytes_len;
7646            _next_ordinal_to_read += 1;
7647            if next_offset >= end_offset {
7648                return Ok(());
7649            }
7650
7651            // Decode unknown envelopes for gaps in ordinals.
7652            while _next_ordinal_to_read < 1 {
7653                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7654                _next_ordinal_to_read += 1;
7655                next_offset += envelope_size;
7656            }
7657
7658            let next_out_of_line = decoder.next_out_of_line();
7659            let handles_before = decoder.remaining_handles();
7660            if let Some((inlined, num_bytes, num_handles)) =
7661                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7662            {
7663                let member_inline_size =
7664                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7665                        decoder.context,
7666                    );
7667                if inlined != (member_inline_size <= 4) {
7668                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7669                }
7670                let inner_offset;
7671                let mut inner_depth = depth.clone();
7672                if inlined {
7673                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7674                    inner_offset = next_offset;
7675                } else {
7676                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7677                    inner_depth.increment()?;
7678                }
7679                let val_ref = self
7680                    .peer_sta_address
7681                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7682                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7683                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7684                {
7685                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7686                }
7687                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7688                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7689                }
7690            }
7691
7692            next_offset += envelope_size;
7693            _next_ordinal_to_read += 1;
7694            if next_offset >= end_offset {
7695                return Ok(());
7696            }
7697
7698            // Decode unknown envelopes for gaps in ordinals.
7699            while _next_ordinal_to_read < 2 {
7700                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7701                _next_ordinal_to_read += 1;
7702                next_offset += envelope_size;
7703            }
7704
7705            let next_out_of_line = decoder.next_out_of_line();
7706            let handles_before = decoder.remaining_handles();
7707            if let Some((inlined, num_bytes, num_handles)) =
7708                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7709            {
7710                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7711                if inlined != (member_inline_size <= 4) {
7712                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7713                }
7714                let inner_offset;
7715                let mut inner_depth = depth.clone();
7716                if inlined {
7717                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7718                    inner_offset = next_offset;
7719                } else {
7720                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7721                    inner_depth.increment()?;
7722                }
7723                let val_ref = self.reason_code.get_or_insert_with(|| {
7724                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
7725                });
7726                fidl::decode!(
7727                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
7728                    D,
7729                    val_ref,
7730                    decoder,
7731                    inner_offset,
7732                    inner_depth
7733                )?;
7734                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7735                {
7736                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7737                }
7738                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7739                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7740                }
7741            }
7742
7743            next_offset += envelope_size;
7744            _next_ordinal_to_read += 1;
7745            if next_offset >= end_offset {
7746                return Ok(());
7747            }
7748
7749            // Decode unknown envelopes for gaps in ordinals.
7750            while _next_ordinal_to_read < 3 {
7751                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7752                _next_ordinal_to_read += 1;
7753                next_offset += envelope_size;
7754            }
7755
7756            let next_out_of_line = decoder.next_out_of_line();
7757            let handles_before = decoder.remaining_handles();
7758            if let Some((inlined, num_bytes, num_handles)) =
7759                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7760            {
7761                let member_inline_size =
7762                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7763                if inlined != (member_inline_size <= 4) {
7764                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7765                }
7766                let inner_offset;
7767                let mut inner_depth = depth.clone();
7768                if inlined {
7769                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7770                    inner_offset = next_offset;
7771                } else {
7772                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7773                    inner_depth.increment()?;
7774                }
7775                let val_ref =
7776                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
7777                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7778                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7779                {
7780                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7781                }
7782                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7783                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7784                }
7785            }
7786
7787            next_offset += envelope_size;
7788
7789            // Decode the remaining unknown envelopes.
7790            while next_offset < end_offset {
7791                _next_ordinal_to_read += 1;
7792                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7793                next_offset += envelope_size;
7794            }
7795
7796            Ok(())
7797        }
7798    }
7799
7800    impl WlanFullmacImplIfcDisassocConfRequest {
7801        #[inline(always)]
7802        fn max_ordinal_present(&self) -> u64 {
7803            if let Some(_) = self.status {
7804                return 1;
7805            }
7806            0
7807        }
7808    }
7809
7810    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7811        type Borrowed<'a> = &'a Self;
7812        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7813            value
7814        }
7815    }
7816
7817    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7818        type Owned = Self;
7819
7820        #[inline(always)]
7821        fn inline_align(_context: fidl::encoding::Context) -> usize {
7822            8
7823        }
7824
7825        #[inline(always)]
7826        fn inline_size(_context: fidl::encoding::Context) -> usize {
7827            16
7828        }
7829    }
7830
7831    unsafe impl<D: fidl::encoding::ResourceDialect>
7832        fidl::encoding::Encode<WlanFullmacImplIfcDisassocConfRequest, D>
7833        for &WlanFullmacImplIfcDisassocConfRequest
7834    {
7835        unsafe fn encode(
7836            self,
7837            encoder: &mut fidl::encoding::Encoder<'_, D>,
7838            offset: usize,
7839            mut depth: fidl::encoding::Depth,
7840        ) -> fidl::Result<()> {
7841            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocConfRequest>(offset);
7842            // Vector header
7843            let max_ordinal: u64 = self.max_ordinal_present();
7844            encoder.write_num(max_ordinal, offset);
7845            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7846            // Calling encoder.out_of_line_offset(0) is not allowed.
7847            if max_ordinal == 0 {
7848                return Ok(());
7849            }
7850            depth.increment()?;
7851            let envelope_size = 8;
7852            let bytes_len = max_ordinal as usize * envelope_size;
7853            #[allow(unused_variables)]
7854            let offset = encoder.out_of_line_offset(bytes_len);
7855            let mut _prev_end_offset: usize = 0;
7856            if 1 > max_ordinal {
7857                return Ok(());
7858            }
7859
7860            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7861            // are envelope_size bytes.
7862            let cur_offset: usize = (1 - 1) * envelope_size;
7863
7864            // Zero reserved fields.
7865            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7866
7867            // Safety:
7868            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7869            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7870            //   envelope_size bytes, there is always sufficient room.
7871            fidl::encoding::encode_in_envelope_optional::<i32, D>(
7872                self.status.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
7873                encoder,
7874                offset + cur_offset,
7875                depth,
7876            )?;
7877
7878            _prev_end_offset = cur_offset + envelope_size;
7879
7880            Ok(())
7881        }
7882    }
7883
7884    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7885        for WlanFullmacImplIfcDisassocConfRequest
7886    {
7887        #[inline(always)]
7888        fn new_empty() -> Self {
7889            Self::default()
7890        }
7891
7892        unsafe fn decode(
7893            &mut self,
7894            decoder: &mut fidl::encoding::Decoder<'_, D>,
7895            offset: usize,
7896            mut depth: fidl::encoding::Depth,
7897        ) -> fidl::Result<()> {
7898            decoder.debug_check_bounds::<Self>(offset);
7899            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7900                None => return Err(fidl::Error::NotNullable),
7901                Some(len) => len,
7902            };
7903            // Calling decoder.out_of_line_offset(0) is not allowed.
7904            if len == 0 {
7905                return Ok(());
7906            };
7907            depth.increment()?;
7908            let envelope_size = 8;
7909            let bytes_len = len * envelope_size;
7910            let offset = decoder.out_of_line_offset(bytes_len)?;
7911            // Decode the envelope for each type.
7912            let mut _next_ordinal_to_read = 0;
7913            let mut next_offset = offset;
7914            let end_offset = offset + bytes_len;
7915            _next_ordinal_to_read += 1;
7916            if next_offset >= end_offset {
7917                return Ok(());
7918            }
7919
7920            // Decode unknown envelopes for gaps in ordinals.
7921            while _next_ordinal_to_read < 1 {
7922                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7923                _next_ordinal_to_read += 1;
7924                next_offset += envelope_size;
7925            }
7926
7927            let next_out_of_line = decoder.next_out_of_line();
7928            let handles_before = decoder.remaining_handles();
7929            if let Some((inlined, num_bytes, num_handles)) =
7930                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7931            {
7932                let member_inline_size =
7933                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7934                if inlined != (member_inline_size <= 4) {
7935                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7936                }
7937                let inner_offset;
7938                let mut inner_depth = depth.clone();
7939                if inlined {
7940                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7941                    inner_offset = next_offset;
7942                } else {
7943                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7944                    inner_depth.increment()?;
7945                }
7946                let val_ref = self.status.get_or_insert_with(|| fidl::new_empty!(i32, D));
7947                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
7948                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7949                {
7950                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7951                }
7952                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7953                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7954                }
7955            }
7956
7957            next_offset += envelope_size;
7958
7959            // Decode the remaining unknown envelopes.
7960            while next_offset < end_offset {
7961                _next_ordinal_to_read += 1;
7962                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7963                next_offset += envelope_size;
7964            }
7965
7966            Ok(())
7967        }
7968    }
7969
7970    impl WlanFullmacImplIfcDisassocIndRequest {
7971        #[inline(always)]
7972        fn max_ordinal_present(&self) -> u64 {
7973            if let Some(_) = self.locally_initiated {
7974                return 3;
7975            }
7976            if let Some(_) = self.reason_code {
7977                return 2;
7978            }
7979            if let Some(_) = self.peer_sta_address {
7980                return 1;
7981            }
7982            0
7983        }
7984    }
7985
7986    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocIndRequest {
7987        type Borrowed<'a> = &'a Self;
7988        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7989            value
7990        }
7991    }
7992
7993    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocIndRequest {
7994        type Owned = Self;
7995
7996        #[inline(always)]
7997        fn inline_align(_context: fidl::encoding::Context) -> usize {
7998            8
7999        }
8000
8001        #[inline(always)]
8002        fn inline_size(_context: fidl::encoding::Context) -> usize {
8003            16
8004        }
8005    }
8006
8007    unsafe impl<D: fidl::encoding::ResourceDialect>
8008        fidl::encoding::Encode<WlanFullmacImplIfcDisassocIndRequest, D>
8009        for &WlanFullmacImplIfcDisassocIndRequest
8010    {
8011        unsafe fn encode(
8012            self,
8013            encoder: &mut fidl::encoding::Encoder<'_, D>,
8014            offset: usize,
8015            mut depth: fidl::encoding::Depth,
8016        ) -> fidl::Result<()> {
8017            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocIndRequest>(offset);
8018            // Vector header
8019            let max_ordinal: u64 = self.max_ordinal_present();
8020            encoder.write_num(max_ordinal, offset);
8021            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8022            // Calling encoder.out_of_line_offset(0) is not allowed.
8023            if max_ordinal == 0 {
8024                return Ok(());
8025            }
8026            depth.increment()?;
8027            let envelope_size = 8;
8028            let bytes_len = max_ordinal as usize * envelope_size;
8029            #[allow(unused_variables)]
8030            let offset = encoder.out_of_line_offset(bytes_len);
8031            let mut _prev_end_offset: usize = 0;
8032            if 1 > max_ordinal {
8033                return Ok(());
8034            }
8035
8036            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8037            // are envelope_size bytes.
8038            let cur_offset: usize = (1 - 1) * envelope_size;
8039
8040            // Zero reserved fields.
8041            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8042
8043            // Safety:
8044            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8045            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8046            //   envelope_size bytes, there is always sufficient room.
8047            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8048                self.peer_sta_address
8049                    .as_ref()
8050                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8051                encoder,
8052                offset + cur_offset,
8053                depth,
8054            )?;
8055
8056            _prev_end_offset = cur_offset + envelope_size;
8057            if 2 > max_ordinal {
8058                return Ok(());
8059            }
8060
8061            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8062            // are envelope_size bytes.
8063            let cur_offset: usize = (2 - 1) * envelope_size;
8064
8065            // Zero reserved fields.
8066            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8067
8068            // Safety:
8069            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8070            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8071            //   envelope_size bytes, there is always sufficient room.
8072            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
8073            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
8074            encoder, offset + cur_offset, depth
8075        )?;
8076
8077            _prev_end_offset = cur_offset + envelope_size;
8078            if 3 > max_ordinal {
8079                return Ok(());
8080            }
8081
8082            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8083            // are envelope_size bytes.
8084            let cur_offset: usize = (3 - 1) * envelope_size;
8085
8086            // Zero reserved fields.
8087            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8088
8089            // Safety:
8090            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8091            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8092            //   envelope_size bytes, there is always sufficient room.
8093            fidl::encoding::encode_in_envelope_optional::<bool, D>(
8094                self.locally_initiated
8095                    .as_ref()
8096                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8097                encoder,
8098                offset + cur_offset,
8099                depth,
8100            )?;
8101
8102            _prev_end_offset = cur_offset + envelope_size;
8103
8104            Ok(())
8105        }
8106    }
8107
8108    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8109        for WlanFullmacImplIfcDisassocIndRequest
8110    {
8111        #[inline(always)]
8112        fn new_empty() -> Self {
8113            Self::default()
8114        }
8115
8116        unsafe fn decode(
8117            &mut self,
8118            decoder: &mut fidl::encoding::Decoder<'_, D>,
8119            offset: usize,
8120            mut depth: fidl::encoding::Depth,
8121        ) -> fidl::Result<()> {
8122            decoder.debug_check_bounds::<Self>(offset);
8123            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8124                None => return Err(fidl::Error::NotNullable),
8125                Some(len) => len,
8126            };
8127            // Calling decoder.out_of_line_offset(0) is not allowed.
8128            if len == 0 {
8129                return Ok(());
8130            };
8131            depth.increment()?;
8132            let envelope_size = 8;
8133            let bytes_len = len * envelope_size;
8134            let offset = decoder.out_of_line_offset(bytes_len)?;
8135            // Decode the envelope for each type.
8136            let mut _next_ordinal_to_read = 0;
8137            let mut next_offset = offset;
8138            let end_offset = offset + bytes_len;
8139            _next_ordinal_to_read += 1;
8140            if next_offset >= end_offset {
8141                return Ok(());
8142            }
8143
8144            // Decode unknown envelopes for gaps in ordinals.
8145            while _next_ordinal_to_read < 1 {
8146                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8147                _next_ordinal_to_read += 1;
8148                next_offset += envelope_size;
8149            }
8150
8151            let next_out_of_line = decoder.next_out_of_line();
8152            let handles_before = decoder.remaining_handles();
8153            if let Some((inlined, num_bytes, num_handles)) =
8154                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8155            {
8156                let member_inline_size =
8157                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8158                        decoder.context,
8159                    );
8160                if inlined != (member_inline_size <= 4) {
8161                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8162                }
8163                let inner_offset;
8164                let mut inner_depth = depth.clone();
8165                if inlined {
8166                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8167                    inner_offset = next_offset;
8168                } else {
8169                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8170                    inner_depth.increment()?;
8171                }
8172                let val_ref = self
8173                    .peer_sta_address
8174                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8175                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8176                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8177                {
8178                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8179                }
8180                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8181                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8182                }
8183            }
8184
8185            next_offset += envelope_size;
8186            _next_ordinal_to_read += 1;
8187            if next_offset >= end_offset {
8188                return Ok(());
8189            }
8190
8191            // Decode unknown envelopes for gaps in ordinals.
8192            while _next_ordinal_to_read < 2 {
8193                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8194                _next_ordinal_to_read += 1;
8195                next_offset += envelope_size;
8196            }
8197
8198            let next_out_of_line = decoder.next_out_of_line();
8199            let handles_before = decoder.remaining_handles();
8200            if let Some((inlined, num_bytes, num_handles)) =
8201                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8202            {
8203                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8204                if inlined != (member_inline_size <= 4) {
8205                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8206                }
8207                let inner_offset;
8208                let mut inner_depth = depth.clone();
8209                if inlined {
8210                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8211                    inner_offset = next_offset;
8212                } else {
8213                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8214                    inner_depth.increment()?;
8215                }
8216                let val_ref = self.reason_code.get_or_insert_with(|| {
8217                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
8218                });
8219                fidl::decode!(
8220                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
8221                    D,
8222                    val_ref,
8223                    decoder,
8224                    inner_offset,
8225                    inner_depth
8226                )?;
8227                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8228                {
8229                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8230                }
8231                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8232                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8233                }
8234            }
8235
8236            next_offset += envelope_size;
8237            _next_ordinal_to_read += 1;
8238            if next_offset >= end_offset {
8239                return Ok(());
8240            }
8241
8242            // Decode unknown envelopes for gaps in ordinals.
8243            while _next_ordinal_to_read < 3 {
8244                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8245                _next_ordinal_to_read += 1;
8246                next_offset += envelope_size;
8247            }
8248
8249            let next_out_of_line = decoder.next_out_of_line();
8250            let handles_before = decoder.remaining_handles();
8251            if let Some((inlined, num_bytes, num_handles)) =
8252                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8253            {
8254                let member_inline_size =
8255                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8256                if inlined != (member_inline_size <= 4) {
8257                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8258                }
8259                let inner_offset;
8260                let mut inner_depth = depth.clone();
8261                if inlined {
8262                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8263                    inner_offset = next_offset;
8264                } else {
8265                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8266                    inner_depth.increment()?;
8267                }
8268                let val_ref =
8269                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
8270                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8271                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8272                {
8273                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8274                }
8275                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8276                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8277                }
8278            }
8279
8280            next_offset += envelope_size;
8281
8282            // Decode the remaining unknown envelopes.
8283            while next_offset < end_offset {
8284                _next_ordinal_to_read += 1;
8285                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8286                next_offset += envelope_size;
8287            }
8288
8289            Ok(())
8290        }
8291    }
8292
8293    impl WlanFullmacImplIfcEapolConfRequest {
8294        #[inline(always)]
8295        fn max_ordinal_present(&self) -> u64 {
8296            if let Some(_) = self.dst_addr {
8297                return 2;
8298            }
8299            if let Some(_) = self.result_code {
8300                return 1;
8301            }
8302            0
8303        }
8304    }
8305
8306    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolConfRequest {
8307        type Borrowed<'a> = &'a Self;
8308        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8309            value
8310        }
8311    }
8312
8313    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolConfRequest {
8314        type Owned = Self;
8315
8316        #[inline(always)]
8317        fn inline_align(_context: fidl::encoding::Context) -> usize {
8318            8
8319        }
8320
8321        #[inline(always)]
8322        fn inline_size(_context: fidl::encoding::Context) -> usize {
8323            16
8324        }
8325    }
8326
8327    unsafe impl<D: fidl::encoding::ResourceDialect>
8328        fidl::encoding::Encode<WlanFullmacImplIfcEapolConfRequest, D>
8329        for &WlanFullmacImplIfcEapolConfRequest
8330    {
8331        unsafe fn encode(
8332            self,
8333            encoder: &mut fidl::encoding::Encoder<'_, D>,
8334            offset: usize,
8335            mut depth: fidl::encoding::Depth,
8336        ) -> fidl::Result<()> {
8337            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolConfRequest>(offset);
8338            // Vector header
8339            let max_ordinal: u64 = self.max_ordinal_present();
8340            encoder.write_num(max_ordinal, offset);
8341            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8342            // Calling encoder.out_of_line_offset(0) is not allowed.
8343            if max_ordinal == 0 {
8344                return Ok(());
8345            }
8346            depth.increment()?;
8347            let envelope_size = 8;
8348            let bytes_len = max_ordinal as usize * envelope_size;
8349            #[allow(unused_variables)]
8350            let offset = encoder.out_of_line_offset(bytes_len);
8351            let mut _prev_end_offset: usize = 0;
8352            if 1 > max_ordinal {
8353                return Ok(());
8354            }
8355
8356            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8357            // are envelope_size bytes.
8358            let cur_offset: usize = (1 - 1) * envelope_size;
8359
8360            // Zero reserved fields.
8361            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8362
8363            // Safety:
8364            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8365            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8366            //   envelope_size bytes, there is always sufficient room.
8367            fidl::encoding::encode_in_envelope_optional::<EapolTxResult, D>(
8368                self.result_code
8369                    .as_ref()
8370                    .map(<EapolTxResult as fidl::encoding::ValueTypeMarker>::borrow),
8371                encoder,
8372                offset + cur_offset,
8373                depth,
8374            )?;
8375
8376            _prev_end_offset = cur_offset + envelope_size;
8377            if 2 > max_ordinal {
8378                return Ok(());
8379            }
8380
8381            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8382            // are envelope_size bytes.
8383            let cur_offset: usize = (2 - 1) * envelope_size;
8384
8385            // Zero reserved fields.
8386            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8387
8388            // Safety:
8389            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8390            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8391            //   envelope_size bytes, there is always sufficient room.
8392            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8393                self.dst_addr
8394                    .as_ref()
8395                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8396                encoder,
8397                offset + cur_offset,
8398                depth,
8399            )?;
8400
8401            _prev_end_offset = cur_offset + envelope_size;
8402
8403            Ok(())
8404        }
8405    }
8406
8407    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8408        for WlanFullmacImplIfcEapolConfRequest
8409    {
8410        #[inline(always)]
8411        fn new_empty() -> Self {
8412            Self::default()
8413        }
8414
8415        unsafe fn decode(
8416            &mut self,
8417            decoder: &mut fidl::encoding::Decoder<'_, D>,
8418            offset: usize,
8419            mut depth: fidl::encoding::Depth,
8420        ) -> fidl::Result<()> {
8421            decoder.debug_check_bounds::<Self>(offset);
8422            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8423                None => return Err(fidl::Error::NotNullable),
8424                Some(len) => len,
8425            };
8426            // Calling decoder.out_of_line_offset(0) is not allowed.
8427            if len == 0 {
8428                return Ok(());
8429            };
8430            depth.increment()?;
8431            let envelope_size = 8;
8432            let bytes_len = len * envelope_size;
8433            let offset = decoder.out_of_line_offset(bytes_len)?;
8434            // Decode the envelope for each type.
8435            let mut _next_ordinal_to_read = 0;
8436            let mut next_offset = offset;
8437            let end_offset = offset + bytes_len;
8438            _next_ordinal_to_read += 1;
8439            if next_offset >= end_offset {
8440                return Ok(());
8441            }
8442
8443            // Decode unknown envelopes for gaps in ordinals.
8444            while _next_ordinal_to_read < 1 {
8445                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8446                _next_ordinal_to_read += 1;
8447                next_offset += envelope_size;
8448            }
8449
8450            let next_out_of_line = decoder.next_out_of_line();
8451            let handles_before = decoder.remaining_handles();
8452            if let Some((inlined, num_bytes, num_handles)) =
8453                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8454            {
8455                let member_inline_size =
8456                    <EapolTxResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8457                if inlined != (member_inline_size <= 4) {
8458                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8459                }
8460                let inner_offset;
8461                let mut inner_depth = depth.clone();
8462                if inlined {
8463                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8464                    inner_offset = next_offset;
8465                } else {
8466                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8467                    inner_depth.increment()?;
8468                }
8469                let val_ref =
8470                    self.result_code.get_or_insert_with(|| fidl::new_empty!(EapolTxResult, D));
8471                fidl::decode!(EapolTxResult, D, val_ref, decoder, inner_offset, inner_depth)?;
8472                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8473                {
8474                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8475                }
8476                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8477                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8478                }
8479            }
8480
8481            next_offset += envelope_size;
8482            _next_ordinal_to_read += 1;
8483            if next_offset >= end_offset {
8484                return Ok(());
8485            }
8486
8487            // Decode unknown envelopes for gaps in ordinals.
8488            while _next_ordinal_to_read < 2 {
8489                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8490                _next_ordinal_to_read += 1;
8491                next_offset += envelope_size;
8492            }
8493
8494            let next_out_of_line = decoder.next_out_of_line();
8495            let handles_before = decoder.remaining_handles();
8496            if let Some((inlined, num_bytes, num_handles)) =
8497                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8498            {
8499                let member_inline_size =
8500                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8501                        decoder.context,
8502                    );
8503                if inlined != (member_inline_size <= 4) {
8504                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8505                }
8506                let inner_offset;
8507                let mut inner_depth = depth.clone();
8508                if inlined {
8509                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8510                    inner_offset = next_offset;
8511                } else {
8512                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8513                    inner_depth.increment()?;
8514                }
8515                let val_ref = self
8516                    .dst_addr
8517                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8518                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8519                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8520                {
8521                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8522                }
8523                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8524                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8525                }
8526            }
8527
8528            next_offset += envelope_size;
8529
8530            // Decode the remaining unknown envelopes.
8531            while next_offset < end_offset {
8532                _next_ordinal_to_read += 1;
8533                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8534                next_offset += envelope_size;
8535            }
8536
8537            Ok(())
8538        }
8539    }
8540
8541    impl WlanFullmacImplIfcEapolIndRequest {
8542        #[inline(always)]
8543        fn max_ordinal_present(&self) -> u64 {
8544            if let Some(_) = self.data {
8545                return 3;
8546            }
8547            if let Some(_) = self.dst_addr {
8548                return 2;
8549            }
8550            if let Some(_) = self.src_addr {
8551                return 1;
8552            }
8553            0
8554        }
8555    }
8556
8557    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolIndRequest {
8558        type Borrowed<'a> = &'a Self;
8559        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8560            value
8561        }
8562    }
8563
8564    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolIndRequest {
8565        type Owned = Self;
8566
8567        #[inline(always)]
8568        fn inline_align(_context: fidl::encoding::Context) -> usize {
8569            8
8570        }
8571
8572        #[inline(always)]
8573        fn inline_size(_context: fidl::encoding::Context) -> usize {
8574            16
8575        }
8576    }
8577
8578    unsafe impl<D: fidl::encoding::ResourceDialect>
8579        fidl::encoding::Encode<WlanFullmacImplIfcEapolIndRequest, D>
8580        for &WlanFullmacImplIfcEapolIndRequest
8581    {
8582        unsafe fn encode(
8583            self,
8584            encoder: &mut fidl::encoding::Encoder<'_, D>,
8585            offset: usize,
8586            mut depth: fidl::encoding::Depth,
8587        ) -> fidl::Result<()> {
8588            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolIndRequest>(offset);
8589            // Vector header
8590            let max_ordinal: u64 = self.max_ordinal_present();
8591            encoder.write_num(max_ordinal, offset);
8592            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8593            // Calling encoder.out_of_line_offset(0) is not allowed.
8594            if max_ordinal == 0 {
8595                return Ok(());
8596            }
8597            depth.increment()?;
8598            let envelope_size = 8;
8599            let bytes_len = max_ordinal as usize * envelope_size;
8600            #[allow(unused_variables)]
8601            let offset = encoder.out_of_line_offset(bytes_len);
8602            let mut _prev_end_offset: usize = 0;
8603            if 1 > max_ordinal {
8604                return Ok(());
8605            }
8606
8607            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8608            // are envelope_size bytes.
8609            let cur_offset: usize = (1 - 1) * envelope_size;
8610
8611            // Zero reserved fields.
8612            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8613
8614            // Safety:
8615            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8616            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8617            //   envelope_size bytes, there is always sufficient room.
8618            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8619                self.src_addr
8620                    .as_ref()
8621                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8622                encoder,
8623                offset + cur_offset,
8624                depth,
8625            )?;
8626
8627            _prev_end_offset = cur_offset + envelope_size;
8628            if 2 > max_ordinal {
8629                return Ok(());
8630            }
8631
8632            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8633            // are envelope_size bytes.
8634            let cur_offset: usize = (2 - 1) * envelope_size;
8635
8636            // Zero reserved fields.
8637            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8638
8639            // Safety:
8640            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8641            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8642            //   envelope_size bytes, there is always sufficient room.
8643            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8644                self.dst_addr
8645                    .as_ref()
8646                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8647                encoder,
8648                offset + cur_offset,
8649                depth,
8650            )?;
8651
8652            _prev_end_offset = cur_offset + envelope_size;
8653            if 3 > max_ordinal {
8654                return Ok(());
8655            }
8656
8657            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8658            // are envelope_size bytes.
8659            let cur_offset: usize = (3 - 1) * envelope_size;
8660
8661            // Zero reserved fields.
8662            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8663
8664            // Safety:
8665            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8666            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8667            //   envelope_size bytes, there is always sufficient room.
8668            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8669            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8670            encoder, offset + cur_offset, depth
8671        )?;
8672
8673            _prev_end_offset = cur_offset + envelope_size;
8674
8675            Ok(())
8676        }
8677    }
8678
8679    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8680        for WlanFullmacImplIfcEapolIndRequest
8681    {
8682        #[inline(always)]
8683        fn new_empty() -> Self {
8684            Self::default()
8685        }
8686
8687        unsafe fn decode(
8688            &mut self,
8689            decoder: &mut fidl::encoding::Decoder<'_, D>,
8690            offset: usize,
8691            mut depth: fidl::encoding::Depth,
8692        ) -> fidl::Result<()> {
8693            decoder.debug_check_bounds::<Self>(offset);
8694            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8695                None => return Err(fidl::Error::NotNullable),
8696                Some(len) => len,
8697            };
8698            // Calling decoder.out_of_line_offset(0) is not allowed.
8699            if len == 0 {
8700                return Ok(());
8701            };
8702            depth.increment()?;
8703            let envelope_size = 8;
8704            let bytes_len = len * envelope_size;
8705            let offset = decoder.out_of_line_offset(bytes_len)?;
8706            // Decode the envelope for each type.
8707            let mut _next_ordinal_to_read = 0;
8708            let mut next_offset = offset;
8709            let end_offset = offset + bytes_len;
8710            _next_ordinal_to_read += 1;
8711            if next_offset >= end_offset {
8712                return Ok(());
8713            }
8714
8715            // Decode unknown envelopes for gaps in ordinals.
8716            while _next_ordinal_to_read < 1 {
8717                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8718                _next_ordinal_to_read += 1;
8719                next_offset += envelope_size;
8720            }
8721
8722            let next_out_of_line = decoder.next_out_of_line();
8723            let handles_before = decoder.remaining_handles();
8724            if let Some((inlined, num_bytes, num_handles)) =
8725                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8726            {
8727                let member_inline_size =
8728                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8729                        decoder.context,
8730                    );
8731                if inlined != (member_inline_size <= 4) {
8732                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8733                }
8734                let inner_offset;
8735                let mut inner_depth = depth.clone();
8736                if inlined {
8737                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8738                    inner_offset = next_offset;
8739                } else {
8740                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8741                    inner_depth.increment()?;
8742                }
8743                let val_ref = self
8744                    .src_addr
8745                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8746                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8747                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8748                {
8749                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8750                }
8751                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8752                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8753                }
8754            }
8755
8756            next_offset += envelope_size;
8757            _next_ordinal_to_read += 1;
8758            if next_offset >= end_offset {
8759                return Ok(());
8760            }
8761
8762            // Decode unknown envelopes for gaps in ordinals.
8763            while _next_ordinal_to_read < 2 {
8764                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8765                _next_ordinal_to_read += 1;
8766                next_offset += envelope_size;
8767            }
8768
8769            let next_out_of_line = decoder.next_out_of_line();
8770            let handles_before = decoder.remaining_handles();
8771            if let Some((inlined, num_bytes, num_handles)) =
8772                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8773            {
8774                let member_inline_size =
8775                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8776                        decoder.context,
8777                    );
8778                if inlined != (member_inline_size <= 4) {
8779                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8780                }
8781                let inner_offset;
8782                let mut inner_depth = depth.clone();
8783                if inlined {
8784                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8785                    inner_offset = next_offset;
8786                } else {
8787                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8788                    inner_depth.increment()?;
8789                }
8790                let val_ref = self
8791                    .dst_addr
8792                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8793                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8794                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8795                {
8796                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8797                }
8798                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8799                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8800                }
8801            }
8802
8803            next_offset += envelope_size;
8804            _next_ordinal_to_read += 1;
8805            if next_offset >= end_offset {
8806                return Ok(());
8807            }
8808
8809            // Decode unknown envelopes for gaps in ordinals.
8810            while _next_ordinal_to_read < 3 {
8811                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8812                _next_ordinal_to_read += 1;
8813                next_offset += envelope_size;
8814            }
8815
8816            let next_out_of_line = decoder.next_out_of_line();
8817            let handles_before = decoder.remaining_handles();
8818            if let Some((inlined, num_bytes, num_handles)) =
8819                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8820            {
8821                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8822                if inlined != (member_inline_size <= 4) {
8823                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8824                }
8825                let inner_offset;
8826                let mut inner_depth = depth.clone();
8827                if inlined {
8828                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8829                    inner_offset = next_offset;
8830                } else {
8831                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8832                    inner_depth.increment()?;
8833                }
8834                let val_ref = self.data.get_or_insert_with(|| {
8835                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8836                });
8837                fidl::decode!(
8838                    fidl::encoding::UnboundedVector<u8>,
8839                    D,
8840                    val_ref,
8841                    decoder,
8842                    inner_offset,
8843                    inner_depth
8844                )?;
8845                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8846                {
8847                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8848                }
8849                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8850                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8851                }
8852            }
8853
8854            next_offset += envelope_size;
8855
8856            // Decode the remaining unknown envelopes.
8857            while next_offset < end_offset {
8858                _next_ordinal_to_read += 1;
8859                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8860                next_offset += envelope_size;
8861            }
8862
8863            Ok(())
8864        }
8865    }
8866
8867    impl WlanFullmacImplIfcOnPmkAvailableRequest {
8868        #[inline(always)]
8869        fn max_ordinal_present(&self) -> u64 {
8870            if let Some(_) = self.pmkid {
8871                return 2;
8872            }
8873            if let Some(_) = self.pmk {
8874                return 1;
8875            }
8876            0
8877        }
8878    }
8879
8880    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8881        type Borrowed<'a> = &'a Self;
8882        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8883            value
8884        }
8885    }
8886
8887    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8888        type Owned = Self;
8889
8890        #[inline(always)]
8891        fn inline_align(_context: fidl::encoding::Context) -> usize {
8892            8
8893        }
8894
8895        #[inline(always)]
8896        fn inline_size(_context: fidl::encoding::Context) -> usize {
8897            16
8898        }
8899    }
8900
8901    unsafe impl<D: fidl::encoding::ResourceDialect>
8902        fidl::encoding::Encode<WlanFullmacImplIfcOnPmkAvailableRequest, D>
8903        for &WlanFullmacImplIfcOnPmkAvailableRequest
8904    {
8905        unsafe fn encode(
8906            self,
8907            encoder: &mut fidl::encoding::Encoder<'_, D>,
8908            offset: usize,
8909            mut depth: fidl::encoding::Depth,
8910        ) -> fidl::Result<()> {
8911            encoder.debug_check_bounds::<WlanFullmacImplIfcOnPmkAvailableRequest>(offset);
8912            // Vector header
8913            let max_ordinal: u64 = self.max_ordinal_present();
8914            encoder.write_num(max_ordinal, offset);
8915            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8916            // Calling encoder.out_of_line_offset(0) is not allowed.
8917            if max_ordinal == 0 {
8918                return Ok(());
8919            }
8920            depth.increment()?;
8921            let envelope_size = 8;
8922            let bytes_len = max_ordinal as usize * envelope_size;
8923            #[allow(unused_variables)]
8924            let offset = encoder.out_of_line_offset(bytes_len);
8925            let mut _prev_end_offset: usize = 0;
8926            if 1 > max_ordinal {
8927                return Ok(());
8928            }
8929
8930            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8931            // are envelope_size bytes.
8932            let cur_offset: usize = (1 - 1) * envelope_size;
8933
8934            // Zero reserved fields.
8935            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8936
8937            // Safety:
8938            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8939            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8940            //   envelope_size bytes, there is always sufficient room.
8941            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8942            self.pmk.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8943            encoder, offset + cur_offset, depth
8944        )?;
8945
8946            _prev_end_offset = cur_offset + envelope_size;
8947            if 2 > max_ordinal {
8948                return Ok(());
8949            }
8950
8951            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8952            // are envelope_size bytes.
8953            let cur_offset: usize = (2 - 1) * envelope_size;
8954
8955            // Zero reserved fields.
8956            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8957
8958            // Safety:
8959            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8960            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8961            //   envelope_size bytes, there is always sufficient room.
8962            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8963            self.pmkid.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8964            encoder, offset + cur_offset, depth
8965        )?;
8966
8967            _prev_end_offset = cur_offset + envelope_size;
8968
8969            Ok(())
8970        }
8971    }
8972
8973    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8974        for WlanFullmacImplIfcOnPmkAvailableRequest
8975    {
8976        #[inline(always)]
8977        fn new_empty() -> Self {
8978            Self::default()
8979        }
8980
8981        unsafe fn decode(
8982            &mut self,
8983            decoder: &mut fidl::encoding::Decoder<'_, D>,
8984            offset: usize,
8985            mut depth: fidl::encoding::Depth,
8986        ) -> fidl::Result<()> {
8987            decoder.debug_check_bounds::<Self>(offset);
8988            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8989                None => return Err(fidl::Error::NotNullable),
8990                Some(len) => len,
8991            };
8992            // Calling decoder.out_of_line_offset(0) is not allowed.
8993            if len == 0 {
8994                return Ok(());
8995            };
8996            depth.increment()?;
8997            let envelope_size = 8;
8998            let bytes_len = len * envelope_size;
8999            let offset = decoder.out_of_line_offset(bytes_len)?;
9000            // Decode the envelope for each type.
9001            let mut _next_ordinal_to_read = 0;
9002            let mut next_offset = offset;
9003            let end_offset = offset + bytes_len;
9004            _next_ordinal_to_read += 1;
9005            if next_offset >= end_offset {
9006                return Ok(());
9007            }
9008
9009            // Decode unknown envelopes for gaps in ordinals.
9010            while _next_ordinal_to_read < 1 {
9011                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9012                _next_ordinal_to_read += 1;
9013                next_offset += envelope_size;
9014            }
9015
9016            let next_out_of_line = decoder.next_out_of_line();
9017            let handles_before = decoder.remaining_handles();
9018            if let Some((inlined, num_bytes, num_handles)) =
9019                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9020            {
9021                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9022                if inlined != (member_inline_size <= 4) {
9023                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9024                }
9025                let inner_offset;
9026                let mut inner_depth = depth.clone();
9027                if inlined {
9028                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9029                    inner_offset = next_offset;
9030                } else {
9031                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9032                    inner_depth.increment()?;
9033                }
9034                let val_ref = self.pmk.get_or_insert_with(|| {
9035                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
9036                });
9037                fidl::decode!(
9038                    fidl::encoding::UnboundedVector<u8>,
9039                    D,
9040                    val_ref,
9041                    decoder,
9042                    inner_offset,
9043                    inner_depth
9044                )?;
9045                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9046                {
9047                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9048                }
9049                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9050                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9051                }
9052            }
9053
9054            next_offset += envelope_size;
9055            _next_ordinal_to_read += 1;
9056            if next_offset >= end_offset {
9057                return Ok(());
9058            }
9059
9060            // Decode unknown envelopes for gaps in ordinals.
9061            while _next_ordinal_to_read < 2 {
9062                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9063                _next_ordinal_to_read += 1;
9064                next_offset += envelope_size;
9065            }
9066
9067            let next_out_of_line = decoder.next_out_of_line();
9068            let handles_before = decoder.remaining_handles();
9069            if let Some((inlined, num_bytes, num_handles)) =
9070                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9071            {
9072                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9073                if inlined != (member_inline_size <= 4) {
9074                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9075                }
9076                let inner_offset;
9077                let mut inner_depth = depth.clone();
9078                if inlined {
9079                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9080                    inner_offset = next_offset;
9081                } else {
9082                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9083                    inner_depth.increment()?;
9084                }
9085                let val_ref = self.pmkid.get_or_insert_with(|| {
9086                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
9087                });
9088                fidl::decode!(
9089                    fidl::encoding::UnboundedVector<u8>,
9090                    D,
9091                    val_ref,
9092                    decoder,
9093                    inner_offset,
9094                    inner_depth
9095                )?;
9096                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9097                {
9098                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9099                }
9100                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9101                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9102                }
9103            }
9104
9105            next_offset += envelope_size;
9106
9107            // Decode the remaining unknown envelopes.
9108            while next_offset < end_offset {
9109                _next_ordinal_to_read += 1;
9110                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9111                next_offset += envelope_size;
9112            }
9113
9114            Ok(())
9115        }
9116    }
9117
9118    impl WlanFullmacImplIfcOnScanEndRequest {
9119        #[inline(always)]
9120        fn max_ordinal_present(&self) -> u64 {
9121            if let Some(_) = self.code {
9122                return 2;
9123            }
9124            if let Some(_) = self.txn_id {
9125                return 1;
9126            }
9127            0
9128        }
9129    }
9130
9131    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanEndRequest {
9132        type Borrowed<'a> = &'a Self;
9133        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9134            value
9135        }
9136    }
9137
9138    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanEndRequest {
9139        type Owned = Self;
9140
9141        #[inline(always)]
9142        fn inline_align(_context: fidl::encoding::Context) -> usize {
9143            8
9144        }
9145
9146        #[inline(always)]
9147        fn inline_size(_context: fidl::encoding::Context) -> usize {
9148            16
9149        }
9150    }
9151
9152    unsafe impl<D: fidl::encoding::ResourceDialect>
9153        fidl::encoding::Encode<WlanFullmacImplIfcOnScanEndRequest, D>
9154        for &WlanFullmacImplIfcOnScanEndRequest
9155    {
9156        unsafe fn encode(
9157            self,
9158            encoder: &mut fidl::encoding::Encoder<'_, D>,
9159            offset: usize,
9160            mut depth: fidl::encoding::Depth,
9161        ) -> fidl::Result<()> {
9162            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanEndRequest>(offset);
9163            // Vector header
9164            let max_ordinal: u64 = self.max_ordinal_present();
9165            encoder.write_num(max_ordinal, offset);
9166            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9167            // Calling encoder.out_of_line_offset(0) is not allowed.
9168            if max_ordinal == 0 {
9169                return Ok(());
9170            }
9171            depth.increment()?;
9172            let envelope_size = 8;
9173            let bytes_len = max_ordinal as usize * envelope_size;
9174            #[allow(unused_variables)]
9175            let offset = encoder.out_of_line_offset(bytes_len);
9176            let mut _prev_end_offset: usize = 0;
9177            if 1 > max_ordinal {
9178                return Ok(());
9179            }
9180
9181            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9182            // are envelope_size bytes.
9183            let cur_offset: usize = (1 - 1) * envelope_size;
9184
9185            // Zero reserved fields.
9186            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9187
9188            // Safety:
9189            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9190            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9191            //   envelope_size bytes, there is always sufficient room.
9192            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9193                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9194                encoder,
9195                offset + cur_offset,
9196                depth,
9197            )?;
9198
9199            _prev_end_offset = cur_offset + envelope_size;
9200            if 2 > max_ordinal {
9201                return Ok(());
9202            }
9203
9204            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9205            // are envelope_size bytes.
9206            let cur_offset: usize = (2 - 1) * envelope_size;
9207
9208            // Zero reserved fields.
9209            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9210
9211            // Safety:
9212            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9213            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9214            //   envelope_size bytes, there is always sufficient room.
9215            fidl::encoding::encode_in_envelope_optional::<WlanScanResult, D>(
9216                self.code.as_ref().map(<WlanScanResult as fidl::encoding::ValueTypeMarker>::borrow),
9217                encoder,
9218                offset + cur_offset,
9219                depth,
9220            )?;
9221
9222            _prev_end_offset = cur_offset + envelope_size;
9223
9224            Ok(())
9225        }
9226    }
9227
9228    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9229        for WlanFullmacImplIfcOnScanEndRequest
9230    {
9231        #[inline(always)]
9232        fn new_empty() -> Self {
9233            Self::default()
9234        }
9235
9236        unsafe fn decode(
9237            &mut self,
9238            decoder: &mut fidl::encoding::Decoder<'_, D>,
9239            offset: usize,
9240            mut depth: fidl::encoding::Depth,
9241        ) -> fidl::Result<()> {
9242            decoder.debug_check_bounds::<Self>(offset);
9243            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9244                None => return Err(fidl::Error::NotNullable),
9245                Some(len) => len,
9246            };
9247            // Calling decoder.out_of_line_offset(0) is not allowed.
9248            if len == 0 {
9249                return Ok(());
9250            };
9251            depth.increment()?;
9252            let envelope_size = 8;
9253            let bytes_len = len * envelope_size;
9254            let offset = decoder.out_of_line_offset(bytes_len)?;
9255            // Decode the envelope for each type.
9256            let mut _next_ordinal_to_read = 0;
9257            let mut next_offset = offset;
9258            let end_offset = offset + bytes_len;
9259            _next_ordinal_to_read += 1;
9260            if next_offset >= end_offset {
9261                return Ok(());
9262            }
9263
9264            // Decode unknown envelopes for gaps in ordinals.
9265            while _next_ordinal_to_read < 1 {
9266                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9267                _next_ordinal_to_read += 1;
9268                next_offset += envelope_size;
9269            }
9270
9271            let next_out_of_line = decoder.next_out_of_line();
9272            let handles_before = decoder.remaining_handles();
9273            if let Some((inlined, num_bytes, num_handles)) =
9274                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9275            {
9276                let member_inline_size =
9277                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9278                if inlined != (member_inline_size <= 4) {
9279                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9280                }
9281                let inner_offset;
9282                let mut inner_depth = depth.clone();
9283                if inlined {
9284                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9285                    inner_offset = next_offset;
9286                } else {
9287                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9288                    inner_depth.increment()?;
9289                }
9290                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9291                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9292                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9293                {
9294                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9295                }
9296                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9297                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9298                }
9299            }
9300
9301            next_offset += envelope_size;
9302            _next_ordinal_to_read += 1;
9303            if next_offset >= end_offset {
9304                return Ok(());
9305            }
9306
9307            // Decode unknown envelopes for gaps in ordinals.
9308            while _next_ordinal_to_read < 2 {
9309                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9310                _next_ordinal_to_read += 1;
9311                next_offset += envelope_size;
9312            }
9313
9314            let next_out_of_line = decoder.next_out_of_line();
9315            let handles_before = decoder.remaining_handles();
9316            if let Some((inlined, num_bytes, num_handles)) =
9317                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9318            {
9319                let member_inline_size =
9320                    <WlanScanResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9321                if inlined != (member_inline_size <= 4) {
9322                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9323                }
9324                let inner_offset;
9325                let mut inner_depth = depth.clone();
9326                if inlined {
9327                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9328                    inner_offset = next_offset;
9329                } else {
9330                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9331                    inner_depth.increment()?;
9332                }
9333                let val_ref = self.code.get_or_insert_with(|| fidl::new_empty!(WlanScanResult, D));
9334                fidl::decode!(WlanScanResult, D, val_ref, decoder, inner_offset, inner_depth)?;
9335                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9336                {
9337                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9338                }
9339                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9340                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9341                }
9342            }
9343
9344            next_offset += envelope_size;
9345
9346            // Decode the remaining unknown envelopes.
9347            while next_offset < end_offset {
9348                _next_ordinal_to_read += 1;
9349                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9350                next_offset += envelope_size;
9351            }
9352
9353            Ok(())
9354        }
9355    }
9356
9357    impl WlanFullmacImplIfcOnScanResultRequest {
9358        #[inline(always)]
9359        fn max_ordinal_present(&self) -> u64 {
9360            if let Some(_) = self.bss {
9361                return 3;
9362            }
9363            if let Some(_) = self.timestamp_nanos {
9364                return 2;
9365            }
9366            if let Some(_) = self.txn_id {
9367                return 1;
9368            }
9369            0
9370        }
9371    }
9372
9373    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9374        type Borrowed<'a> = &'a Self;
9375        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9376            value
9377        }
9378    }
9379
9380    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9381        type Owned = Self;
9382
9383        #[inline(always)]
9384        fn inline_align(_context: fidl::encoding::Context) -> usize {
9385            8
9386        }
9387
9388        #[inline(always)]
9389        fn inline_size(_context: fidl::encoding::Context) -> usize {
9390            16
9391        }
9392    }
9393
9394    unsafe impl<D: fidl::encoding::ResourceDialect>
9395        fidl::encoding::Encode<WlanFullmacImplIfcOnScanResultRequest, D>
9396        for &WlanFullmacImplIfcOnScanResultRequest
9397    {
9398        unsafe fn encode(
9399            self,
9400            encoder: &mut fidl::encoding::Encoder<'_, D>,
9401            offset: usize,
9402            mut depth: fidl::encoding::Depth,
9403        ) -> fidl::Result<()> {
9404            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanResultRequest>(offset);
9405            // Vector header
9406            let max_ordinal: u64 = self.max_ordinal_present();
9407            encoder.write_num(max_ordinal, offset);
9408            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9409            // Calling encoder.out_of_line_offset(0) is not allowed.
9410            if max_ordinal == 0 {
9411                return Ok(());
9412            }
9413            depth.increment()?;
9414            let envelope_size = 8;
9415            let bytes_len = max_ordinal as usize * envelope_size;
9416            #[allow(unused_variables)]
9417            let offset = encoder.out_of_line_offset(bytes_len);
9418            let mut _prev_end_offset: usize = 0;
9419            if 1 > max_ordinal {
9420                return Ok(());
9421            }
9422
9423            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9424            // are envelope_size bytes.
9425            let cur_offset: usize = (1 - 1) * envelope_size;
9426
9427            // Zero reserved fields.
9428            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9429
9430            // Safety:
9431            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9432            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9433            //   envelope_size bytes, there is always sufficient room.
9434            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9435                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9436                encoder,
9437                offset + cur_offset,
9438                depth,
9439            )?;
9440
9441            _prev_end_offset = cur_offset + envelope_size;
9442            if 2 > max_ordinal {
9443                return Ok(());
9444            }
9445
9446            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9447            // are envelope_size bytes.
9448            let cur_offset: usize = (2 - 1) * envelope_size;
9449
9450            // Zero reserved fields.
9451            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9452
9453            // Safety:
9454            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9455            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9456            //   envelope_size bytes, there is always sufficient room.
9457            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9458                self.timestamp_nanos.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9459                encoder,
9460                offset + cur_offset,
9461                depth,
9462            )?;
9463
9464            _prev_end_offset = cur_offset + envelope_size;
9465            if 3 > max_ordinal {
9466                return Ok(());
9467            }
9468
9469            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9470            // are envelope_size bytes.
9471            let cur_offset: usize = (3 - 1) * envelope_size;
9472
9473            // Zero reserved fields.
9474            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9475
9476            // Safety:
9477            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9478            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9479            //   envelope_size bytes, there is always sufficient room.
9480            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssDescription, D>(
9481            self.bss.as_ref().map(<fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
9482            encoder, offset + cur_offset, depth
9483        )?;
9484
9485            _prev_end_offset = cur_offset + envelope_size;
9486
9487            Ok(())
9488        }
9489    }
9490
9491    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9492        for WlanFullmacImplIfcOnScanResultRequest
9493    {
9494        #[inline(always)]
9495        fn new_empty() -> Self {
9496            Self::default()
9497        }
9498
9499        unsafe fn decode(
9500            &mut self,
9501            decoder: &mut fidl::encoding::Decoder<'_, D>,
9502            offset: usize,
9503            mut depth: fidl::encoding::Depth,
9504        ) -> fidl::Result<()> {
9505            decoder.debug_check_bounds::<Self>(offset);
9506            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9507                None => return Err(fidl::Error::NotNullable),
9508                Some(len) => len,
9509            };
9510            // Calling decoder.out_of_line_offset(0) is not allowed.
9511            if len == 0 {
9512                return Ok(());
9513            };
9514            depth.increment()?;
9515            let envelope_size = 8;
9516            let bytes_len = len * envelope_size;
9517            let offset = decoder.out_of_line_offset(bytes_len)?;
9518            // Decode the envelope for each type.
9519            let mut _next_ordinal_to_read = 0;
9520            let mut next_offset = offset;
9521            let end_offset = offset + bytes_len;
9522            _next_ordinal_to_read += 1;
9523            if next_offset >= end_offset {
9524                return Ok(());
9525            }
9526
9527            // Decode unknown envelopes for gaps in ordinals.
9528            while _next_ordinal_to_read < 1 {
9529                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9530                _next_ordinal_to_read += 1;
9531                next_offset += envelope_size;
9532            }
9533
9534            let next_out_of_line = decoder.next_out_of_line();
9535            let handles_before = decoder.remaining_handles();
9536            if let Some((inlined, num_bytes, num_handles)) =
9537                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9538            {
9539                let member_inline_size =
9540                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9541                if inlined != (member_inline_size <= 4) {
9542                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9543                }
9544                let inner_offset;
9545                let mut inner_depth = depth.clone();
9546                if inlined {
9547                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9548                    inner_offset = next_offset;
9549                } else {
9550                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9551                    inner_depth.increment()?;
9552                }
9553                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9554                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9555                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9556                {
9557                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9558                }
9559                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9560                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9561                }
9562            }
9563
9564            next_offset += envelope_size;
9565            _next_ordinal_to_read += 1;
9566            if next_offset >= end_offset {
9567                return Ok(());
9568            }
9569
9570            // Decode unknown envelopes for gaps in ordinals.
9571            while _next_ordinal_to_read < 2 {
9572                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9573                _next_ordinal_to_read += 1;
9574                next_offset += envelope_size;
9575            }
9576
9577            let next_out_of_line = decoder.next_out_of_line();
9578            let handles_before = decoder.remaining_handles();
9579            if let Some((inlined, num_bytes, num_handles)) =
9580                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9581            {
9582                let member_inline_size =
9583                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9584                if inlined != (member_inline_size <= 4) {
9585                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9586                }
9587                let inner_offset;
9588                let mut inner_depth = depth.clone();
9589                if inlined {
9590                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9591                    inner_offset = next_offset;
9592                } else {
9593                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9594                    inner_depth.increment()?;
9595                }
9596                let val_ref = self.timestamp_nanos.get_or_insert_with(|| fidl::new_empty!(i64, D));
9597                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9598                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9599                {
9600                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9601                }
9602                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9603                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9604                }
9605            }
9606
9607            next_offset += envelope_size;
9608            _next_ordinal_to_read += 1;
9609            if next_offset >= end_offset {
9610                return Ok(());
9611            }
9612
9613            // Decode unknown envelopes for gaps in ordinals.
9614            while _next_ordinal_to_read < 3 {
9615                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9616                _next_ordinal_to_read += 1;
9617                next_offset += envelope_size;
9618            }
9619
9620            let next_out_of_line = decoder.next_out_of_line();
9621            let handles_before = decoder.remaining_handles();
9622            if let Some((inlined, num_bytes, num_handles)) =
9623                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9624            {
9625                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9626                if inlined != (member_inline_size <= 4) {
9627                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9628                }
9629                let inner_offset;
9630                let mut inner_depth = depth.clone();
9631                if inlined {
9632                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9633                    inner_offset = next_offset;
9634                } else {
9635                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9636                    inner_depth.increment()?;
9637                }
9638                let val_ref = self.bss.get_or_insert_with(|| {
9639                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D)
9640                });
9641                fidl::decode!(
9642                    fidl_fuchsia_wlan_common__common::BssDescription,
9643                    D,
9644                    val_ref,
9645                    decoder,
9646                    inner_offset,
9647                    inner_depth
9648                )?;
9649                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9650                {
9651                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9652                }
9653                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9654                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9655                }
9656            }
9657
9658            next_offset += envelope_size;
9659
9660            // Decode the remaining unknown envelopes.
9661            while next_offset < end_offset {
9662                _next_ordinal_to_read += 1;
9663                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9664                next_offset += envelope_size;
9665            }
9666
9667            Ok(())
9668        }
9669    }
9670
9671    impl WlanFullmacImplIfcRoamConfRequest {
9672        #[inline(always)]
9673        fn max_ordinal_present(&self) -> u64 {
9674            if let Some(_) = self.association_ies {
9675                return 6;
9676            }
9677            if let Some(_) = self.association_id {
9678                return 5;
9679            }
9680            if let Some(_) = self.target_bss_authenticated {
9681                return 4;
9682            }
9683            if let Some(_) = self.original_association_maintained {
9684                return 3;
9685            }
9686            if let Some(_) = self.status_code {
9687                return 2;
9688            }
9689            if let Some(_) = self.selected_bssid {
9690                return 1;
9691            }
9692            0
9693        }
9694    }
9695
9696    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamConfRequest {
9697        type Borrowed<'a> = &'a Self;
9698        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9699            value
9700        }
9701    }
9702
9703    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamConfRequest {
9704        type Owned = Self;
9705
9706        #[inline(always)]
9707        fn inline_align(_context: fidl::encoding::Context) -> usize {
9708            8
9709        }
9710
9711        #[inline(always)]
9712        fn inline_size(_context: fidl::encoding::Context) -> usize {
9713            16
9714        }
9715    }
9716
9717    unsafe impl<D: fidl::encoding::ResourceDialect>
9718        fidl::encoding::Encode<WlanFullmacImplIfcRoamConfRequest, D>
9719        for &WlanFullmacImplIfcRoamConfRequest
9720    {
9721        unsafe fn encode(
9722            self,
9723            encoder: &mut fidl::encoding::Encoder<'_, D>,
9724            offset: usize,
9725            mut depth: fidl::encoding::Depth,
9726        ) -> fidl::Result<()> {
9727            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamConfRequest>(offset);
9728            // Vector header
9729            let max_ordinal: u64 = self.max_ordinal_present();
9730            encoder.write_num(max_ordinal, offset);
9731            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9732            // Calling encoder.out_of_line_offset(0) is not allowed.
9733            if max_ordinal == 0 {
9734                return Ok(());
9735            }
9736            depth.increment()?;
9737            let envelope_size = 8;
9738            let bytes_len = max_ordinal as usize * envelope_size;
9739            #[allow(unused_variables)]
9740            let offset = encoder.out_of_line_offset(bytes_len);
9741            let mut _prev_end_offset: usize = 0;
9742            if 1 > max_ordinal {
9743                return Ok(());
9744            }
9745
9746            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9747            // are envelope_size bytes.
9748            let cur_offset: usize = (1 - 1) * envelope_size;
9749
9750            // Zero reserved fields.
9751            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9752
9753            // Safety:
9754            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9755            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9756            //   envelope_size bytes, there is always sufficient room.
9757            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
9758                self.selected_bssid
9759                    .as_ref()
9760                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
9761                encoder,
9762                offset + cur_offset,
9763                depth,
9764            )?;
9765
9766            _prev_end_offset = cur_offset + envelope_size;
9767            if 2 > max_ordinal {
9768                return Ok(());
9769            }
9770
9771            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9772            // are envelope_size bytes.
9773            let cur_offset: usize = (2 - 1) * envelope_size;
9774
9775            // Zero reserved fields.
9776            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9777
9778            // Safety:
9779            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9780            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9781            //   envelope_size bytes, there is always sufficient room.
9782            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
9783            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
9784            encoder, offset + cur_offset, depth
9785        )?;
9786
9787            _prev_end_offset = cur_offset + envelope_size;
9788            if 3 > max_ordinal {
9789                return Ok(());
9790            }
9791
9792            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9793            // are envelope_size bytes.
9794            let cur_offset: usize = (3 - 1) * envelope_size;
9795
9796            // Zero reserved fields.
9797            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9798
9799            // Safety:
9800            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9801            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9802            //   envelope_size bytes, there is always sufficient room.
9803            fidl::encoding::encode_in_envelope_optional::<bool, D>(
9804                self.original_association_maintained
9805                    .as_ref()
9806                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9807                encoder,
9808                offset + cur_offset,
9809                depth,
9810            )?;
9811
9812            _prev_end_offset = cur_offset + envelope_size;
9813            if 4 > max_ordinal {
9814                return Ok(());
9815            }
9816
9817            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9818            // are envelope_size bytes.
9819            let cur_offset: usize = (4 - 1) * envelope_size;
9820
9821            // Zero reserved fields.
9822            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9823
9824            // Safety:
9825            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9826            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9827            //   envelope_size bytes, there is always sufficient room.
9828            fidl::encoding::encode_in_envelope_optional::<bool, D>(
9829                self.target_bss_authenticated
9830                    .as_ref()
9831                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9832                encoder,
9833                offset + cur_offset,
9834                depth,
9835            )?;
9836
9837            _prev_end_offset = cur_offset + envelope_size;
9838            if 5 > max_ordinal {
9839                return Ok(());
9840            }
9841
9842            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9843            // are envelope_size bytes.
9844            let cur_offset: usize = (5 - 1) * envelope_size;
9845
9846            // Zero reserved fields.
9847            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9848
9849            // Safety:
9850            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9851            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9852            //   envelope_size bytes, there is always sufficient room.
9853            fidl::encoding::encode_in_envelope_optional::<u16, D>(
9854                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
9855                encoder,
9856                offset + cur_offset,
9857                depth,
9858            )?;
9859
9860            _prev_end_offset = cur_offset + envelope_size;
9861            if 6 > max_ordinal {
9862                return Ok(());
9863            }
9864
9865            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9866            // are envelope_size bytes.
9867            let cur_offset: usize = (6 - 1) * envelope_size;
9868
9869            // Zero reserved fields.
9870            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9871
9872            // Safety:
9873            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9874            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9875            //   envelope_size bytes, there is always sufficient room.
9876            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
9877            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
9878            encoder, offset + cur_offset, depth
9879        )?;
9880
9881            _prev_end_offset = cur_offset + envelope_size;
9882
9883            Ok(())
9884        }
9885    }
9886
9887    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9888        for WlanFullmacImplIfcRoamConfRequest
9889    {
9890        #[inline(always)]
9891        fn new_empty() -> Self {
9892            Self::default()
9893        }
9894
9895        unsafe fn decode(
9896            &mut self,
9897            decoder: &mut fidl::encoding::Decoder<'_, D>,
9898            offset: usize,
9899            mut depth: fidl::encoding::Depth,
9900        ) -> fidl::Result<()> {
9901            decoder.debug_check_bounds::<Self>(offset);
9902            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9903                None => return Err(fidl::Error::NotNullable),
9904                Some(len) => len,
9905            };
9906            // Calling decoder.out_of_line_offset(0) is not allowed.
9907            if len == 0 {
9908                return Ok(());
9909            };
9910            depth.increment()?;
9911            let envelope_size = 8;
9912            let bytes_len = len * envelope_size;
9913            let offset = decoder.out_of_line_offset(bytes_len)?;
9914            // Decode the envelope for each type.
9915            let mut _next_ordinal_to_read = 0;
9916            let mut next_offset = offset;
9917            let end_offset = offset + bytes_len;
9918            _next_ordinal_to_read += 1;
9919            if next_offset >= end_offset {
9920                return Ok(());
9921            }
9922
9923            // Decode unknown envelopes for gaps in ordinals.
9924            while _next_ordinal_to_read < 1 {
9925                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9926                _next_ordinal_to_read += 1;
9927                next_offset += envelope_size;
9928            }
9929
9930            let next_out_of_line = decoder.next_out_of_line();
9931            let handles_before = decoder.remaining_handles();
9932            if let Some((inlined, num_bytes, num_handles)) =
9933                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9934            {
9935                let member_inline_size =
9936                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
9937                        decoder.context,
9938                    );
9939                if inlined != (member_inline_size <= 4) {
9940                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9941                }
9942                let inner_offset;
9943                let mut inner_depth = depth.clone();
9944                if inlined {
9945                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9946                    inner_offset = next_offset;
9947                } else {
9948                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9949                    inner_depth.increment()?;
9950                }
9951                let val_ref = self
9952                    .selected_bssid
9953                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
9954                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
9955                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9956                {
9957                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9958                }
9959                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9960                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9961                }
9962            }
9963
9964            next_offset += envelope_size;
9965            _next_ordinal_to_read += 1;
9966            if next_offset >= end_offset {
9967                return Ok(());
9968            }
9969
9970            // Decode unknown envelopes for gaps in ordinals.
9971            while _next_ordinal_to_read < 2 {
9972                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9973                _next_ordinal_to_read += 1;
9974                next_offset += envelope_size;
9975            }
9976
9977            let next_out_of_line = decoder.next_out_of_line();
9978            let handles_before = decoder.remaining_handles();
9979            if let Some((inlined, num_bytes, num_handles)) =
9980                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9981            {
9982                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9983                if inlined != (member_inline_size <= 4) {
9984                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9985                }
9986                let inner_offset;
9987                let mut inner_depth = depth.clone();
9988                if inlined {
9989                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9990                    inner_offset = next_offset;
9991                } else {
9992                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9993                    inner_depth.increment()?;
9994                }
9995                let val_ref = self.status_code.get_or_insert_with(|| {
9996                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
9997                });
9998                fidl::decode!(
9999                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10000                    D,
10001                    val_ref,
10002                    decoder,
10003                    inner_offset,
10004                    inner_depth
10005                )?;
10006                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10007                {
10008                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10009                }
10010                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10011                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10012                }
10013            }
10014
10015            next_offset += envelope_size;
10016            _next_ordinal_to_read += 1;
10017            if next_offset >= end_offset {
10018                return Ok(());
10019            }
10020
10021            // Decode unknown envelopes for gaps in ordinals.
10022            while _next_ordinal_to_read < 3 {
10023                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10024                _next_ordinal_to_read += 1;
10025                next_offset += envelope_size;
10026            }
10027
10028            let next_out_of_line = decoder.next_out_of_line();
10029            let handles_before = decoder.remaining_handles();
10030            if let Some((inlined, num_bytes, num_handles)) =
10031                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10032            {
10033                let member_inline_size =
10034                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10035                if inlined != (member_inline_size <= 4) {
10036                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10037                }
10038                let inner_offset;
10039                let mut inner_depth = depth.clone();
10040                if inlined {
10041                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10042                    inner_offset = next_offset;
10043                } else {
10044                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10045                    inner_depth.increment()?;
10046                }
10047                let val_ref = self
10048                    .original_association_maintained
10049                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
10050                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10051                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10052                {
10053                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10054                }
10055                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10056                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10057                }
10058            }
10059
10060            next_offset += envelope_size;
10061            _next_ordinal_to_read += 1;
10062            if next_offset >= end_offset {
10063                return Ok(());
10064            }
10065
10066            // Decode unknown envelopes for gaps in ordinals.
10067            while _next_ordinal_to_read < 4 {
10068                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10069                _next_ordinal_to_read += 1;
10070                next_offset += envelope_size;
10071            }
10072
10073            let next_out_of_line = decoder.next_out_of_line();
10074            let handles_before = decoder.remaining_handles();
10075            if let Some((inlined, num_bytes, num_handles)) =
10076                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10077            {
10078                let member_inline_size =
10079                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10080                if inlined != (member_inline_size <= 4) {
10081                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10082                }
10083                let inner_offset;
10084                let mut inner_depth = depth.clone();
10085                if inlined {
10086                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10087                    inner_offset = next_offset;
10088                } else {
10089                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10090                    inner_depth.increment()?;
10091                }
10092                let val_ref =
10093                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
10094                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10095                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10096                {
10097                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10098                }
10099                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10100                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10101                }
10102            }
10103
10104            next_offset += envelope_size;
10105            _next_ordinal_to_read += 1;
10106            if next_offset >= end_offset {
10107                return Ok(());
10108            }
10109
10110            // Decode unknown envelopes for gaps in ordinals.
10111            while _next_ordinal_to_read < 5 {
10112                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10113                _next_ordinal_to_read += 1;
10114                next_offset += envelope_size;
10115            }
10116
10117            let next_out_of_line = decoder.next_out_of_line();
10118            let handles_before = decoder.remaining_handles();
10119            if let Some((inlined, num_bytes, num_handles)) =
10120                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10121            {
10122                let member_inline_size =
10123                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10124                if inlined != (member_inline_size <= 4) {
10125                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10126                }
10127                let inner_offset;
10128                let mut inner_depth = depth.clone();
10129                if inlined {
10130                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10131                    inner_offset = next_offset;
10132                } else {
10133                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10134                    inner_depth.increment()?;
10135                }
10136                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10137                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10138                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10139                {
10140                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10141                }
10142                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10143                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10144                }
10145            }
10146
10147            next_offset += envelope_size;
10148            _next_ordinal_to_read += 1;
10149            if next_offset >= end_offset {
10150                return Ok(());
10151            }
10152
10153            // Decode unknown envelopes for gaps in ordinals.
10154            while _next_ordinal_to_read < 6 {
10155                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10156                _next_ordinal_to_read += 1;
10157                next_offset += envelope_size;
10158            }
10159
10160            let next_out_of_line = decoder.next_out_of_line();
10161            let handles_before = decoder.remaining_handles();
10162            if let Some((inlined, num_bytes, num_handles)) =
10163                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10164            {
10165                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10166                if inlined != (member_inline_size <= 4) {
10167                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10168                }
10169                let inner_offset;
10170                let mut inner_depth = depth.clone();
10171                if inlined {
10172                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10173                    inner_offset = next_offset;
10174                } else {
10175                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10176                    inner_depth.increment()?;
10177                }
10178                let val_ref = self.association_ies.get_or_insert_with(|| {
10179                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
10180                });
10181                fidl::decode!(
10182                    fidl::encoding::UnboundedVector<u8>,
10183                    D,
10184                    val_ref,
10185                    decoder,
10186                    inner_offset,
10187                    inner_depth
10188                )?;
10189                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10190                {
10191                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10192                }
10193                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10194                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10195                }
10196            }
10197
10198            next_offset += envelope_size;
10199
10200            // Decode the remaining unknown envelopes.
10201            while next_offset < end_offset {
10202                _next_ordinal_to_read += 1;
10203                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10204                next_offset += envelope_size;
10205            }
10206
10207            Ok(())
10208        }
10209    }
10210
10211    impl WlanFullmacImplIfcRoamResultIndRequest {
10212        #[inline(always)]
10213        fn max_ordinal_present(&self) -> u64 {
10214            if let Some(_) = self.association_ies {
10215                return 6;
10216            }
10217            if let Some(_) = self.association_id {
10218                return 5;
10219            }
10220            if let Some(_) = self.target_bss_authenticated {
10221                return 4;
10222            }
10223            if let Some(_) = self.original_association_maintained {
10224                return 3;
10225            }
10226            if let Some(_) = self.status_code {
10227                return 2;
10228            }
10229            if let Some(_) = self.selected_bssid {
10230                return 1;
10231            }
10232            0
10233        }
10234    }
10235
10236    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
10237        type Borrowed<'a> = &'a Self;
10238        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10239            value
10240        }
10241    }
10242
10243    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
10244        type Owned = Self;
10245
10246        #[inline(always)]
10247        fn inline_align(_context: fidl::encoding::Context) -> usize {
10248            8
10249        }
10250
10251        #[inline(always)]
10252        fn inline_size(_context: fidl::encoding::Context) -> usize {
10253            16
10254        }
10255    }
10256
10257    unsafe impl<D: fidl::encoding::ResourceDialect>
10258        fidl::encoding::Encode<WlanFullmacImplIfcRoamResultIndRequest, D>
10259        for &WlanFullmacImplIfcRoamResultIndRequest
10260    {
10261        unsafe fn encode(
10262            self,
10263            encoder: &mut fidl::encoding::Encoder<'_, D>,
10264            offset: usize,
10265            mut depth: fidl::encoding::Depth,
10266        ) -> fidl::Result<()> {
10267            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamResultIndRequest>(offset);
10268            // Vector header
10269            let max_ordinal: u64 = self.max_ordinal_present();
10270            encoder.write_num(max_ordinal, offset);
10271            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10272            // Calling encoder.out_of_line_offset(0) is not allowed.
10273            if max_ordinal == 0 {
10274                return Ok(());
10275            }
10276            depth.increment()?;
10277            let envelope_size = 8;
10278            let bytes_len = max_ordinal as usize * envelope_size;
10279            #[allow(unused_variables)]
10280            let offset = encoder.out_of_line_offset(bytes_len);
10281            let mut _prev_end_offset: usize = 0;
10282            if 1 > max_ordinal {
10283                return Ok(());
10284            }
10285
10286            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10287            // are envelope_size bytes.
10288            let cur_offset: usize = (1 - 1) * envelope_size;
10289
10290            // Zero reserved fields.
10291            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10292
10293            // Safety:
10294            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10295            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10296            //   envelope_size bytes, there is always sufficient room.
10297            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10298                self.selected_bssid
10299                    .as_ref()
10300                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10301                encoder,
10302                offset + cur_offset,
10303                depth,
10304            )?;
10305
10306            _prev_end_offset = cur_offset + envelope_size;
10307            if 2 > max_ordinal {
10308                return Ok(());
10309            }
10310
10311            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10312            // are envelope_size bytes.
10313            let cur_offset: usize = (2 - 1) * envelope_size;
10314
10315            // Zero reserved fields.
10316            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10317
10318            // Safety:
10319            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10320            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10321            //   envelope_size bytes, there is always sufficient room.
10322            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
10323            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
10324            encoder, offset + cur_offset, depth
10325        )?;
10326
10327            _prev_end_offset = cur_offset + envelope_size;
10328            if 3 > max_ordinal {
10329                return Ok(());
10330            }
10331
10332            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10333            // are envelope_size bytes.
10334            let cur_offset: usize = (3 - 1) * envelope_size;
10335
10336            // Zero reserved fields.
10337            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10338
10339            // Safety:
10340            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10341            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10342            //   envelope_size bytes, there is always sufficient room.
10343            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10344                self.original_association_maintained
10345                    .as_ref()
10346                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10347                encoder,
10348                offset + cur_offset,
10349                depth,
10350            )?;
10351
10352            _prev_end_offset = cur_offset + envelope_size;
10353            if 4 > max_ordinal {
10354                return Ok(());
10355            }
10356
10357            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10358            // are envelope_size bytes.
10359            let cur_offset: usize = (4 - 1) * envelope_size;
10360
10361            // Zero reserved fields.
10362            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10363
10364            // Safety:
10365            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10366            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10367            //   envelope_size bytes, there is always sufficient room.
10368            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10369                self.target_bss_authenticated
10370                    .as_ref()
10371                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10372                encoder,
10373                offset + cur_offset,
10374                depth,
10375            )?;
10376
10377            _prev_end_offset = cur_offset + envelope_size;
10378            if 5 > max_ordinal {
10379                return Ok(());
10380            }
10381
10382            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10383            // are envelope_size bytes.
10384            let cur_offset: usize = (5 - 1) * envelope_size;
10385
10386            // Zero reserved fields.
10387            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10388
10389            // Safety:
10390            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10391            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10392            //   envelope_size bytes, there is always sufficient room.
10393            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10394                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10395                encoder,
10396                offset + cur_offset,
10397                depth,
10398            )?;
10399
10400            _prev_end_offset = cur_offset + envelope_size;
10401            if 6 > max_ordinal {
10402                return Ok(());
10403            }
10404
10405            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10406            // are envelope_size bytes.
10407            let cur_offset: usize = (6 - 1) * envelope_size;
10408
10409            // Zero reserved fields.
10410            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10411
10412            // Safety:
10413            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10414            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10415            //   envelope_size bytes, there is always sufficient room.
10416            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10417            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10418            encoder, offset + cur_offset, depth
10419        )?;
10420
10421            _prev_end_offset = cur_offset + envelope_size;
10422
10423            Ok(())
10424        }
10425    }
10426
10427    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10428        for WlanFullmacImplIfcRoamResultIndRequest
10429    {
10430        #[inline(always)]
10431        fn new_empty() -> Self {
10432            Self::default()
10433        }
10434
10435        unsafe fn decode(
10436            &mut self,
10437            decoder: &mut fidl::encoding::Decoder<'_, D>,
10438            offset: usize,
10439            mut depth: fidl::encoding::Depth,
10440        ) -> fidl::Result<()> {
10441            decoder.debug_check_bounds::<Self>(offset);
10442            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10443                None => return Err(fidl::Error::NotNullable),
10444                Some(len) => len,
10445            };
10446            // Calling decoder.out_of_line_offset(0) is not allowed.
10447            if len == 0 {
10448                return Ok(());
10449            };
10450            depth.increment()?;
10451            let envelope_size = 8;
10452            let bytes_len = len * envelope_size;
10453            let offset = decoder.out_of_line_offset(bytes_len)?;
10454            // Decode the envelope for each type.
10455            let mut _next_ordinal_to_read = 0;
10456            let mut next_offset = offset;
10457            let end_offset = offset + bytes_len;
10458            _next_ordinal_to_read += 1;
10459            if next_offset >= end_offset {
10460                return Ok(());
10461            }
10462
10463            // Decode unknown envelopes for gaps in ordinals.
10464            while _next_ordinal_to_read < 1 {
10465                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10466                _next_ordinal_to_read += 1;
10467                next_offset += envelope_size;
10468            }
10469
10470            let next_out_of_line = decoder.next_out_of_line();
10471            let handles_before = decoder.remaining_handles();
10472            if let Some((inlined, num_bytes, num_handles)) =
10473                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10474            {
10475                let member_inline_size =
10476                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10477                        decoder.context,
10478                    );
10479                if inlined != (member_inline_size <= 4) {
10480                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10481                }
10482                let inner_offset;
10483                let mut inner_depth = depth.clone();
10484                if inlined {
10485                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10486                    inner_offset = next_offset;
10487                } else {
10488                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10489                    inner_depth.increment()?;
10490                }
10491                let val_ref = self
10492                    .selected_bssid
10493                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10494                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
10495                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10496                {
10497                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10498                }
10499                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10500                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10501                }
10502            }
10503
10504            next_offset += envelope_size;
10505            _next_ordinal_to_read += 1;
10506            if next_offset >= end_offset {
10507                return Ok(());
10508            }
10509
10510            // Decode unknown envelopes for gaps in ordinals.
10511            while _next_ordinal_to_read < 2 {
10512                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10513                _next_ordinal_to_read += 1;
10514                next_offset += envelope_size;
10515            }
10516
10517            let next_out_of_line = decoder.next_out_of_line();
10518            let handles_before = decoder.remaining_handles();
10519            if let Some((inlined, num_bytes, num_handles)) =
10520                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10521            {
10522                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10523                if inlined != (member_inline_size <= 4) {
10524                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10525                }
10526                let inner_offset;
10527                let mut inner_depth = depth.clone();
10528                if inlined {
10529                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10530                    inner_offset = next_offset;
10531                } else {
10532                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10533                    inner_depth.increment()?;
10534                }
10535                let val_ref = self.status_code.get_or_insert_with(|| {
10536                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
10537                });
10538                fidl::decode!(
10539                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10540                    D,
10541                    val_ref,
10542                    decoder,
10543                    inner_offset,
10544                    inner_depth
10545                )?;
10546                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10547                {
10548                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10549                }
10550                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10551                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10552                }
10553            }
10554
10555            next_offset += envelope_size;
10556            _next_ordinal_to_read += 1;
10557            if next_offset >= end_offset {
10558                return Ok(());
10559            }
10560
10561            // Decode unknown envelopes for gaps in ordinals.
10562            while _next_ordinal_to_read < 3 {
10563                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10564                _next_ordinal_to_read += 1;
10565                next_offset += envelope_size;
10566            }
10567
10568            let next_out_of_line = decoder.next_out_of_line();
10569            let handles_before = decoder.remaining_handles();
10570            if let Some((inlined, num_bytes, num_handles)) =
10571                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10572            {
10573                let member_inline_size =
10574                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10575                if inlined != (member_inline_size <= 4) {
10576                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10577                }
10578                let inner_offset;
10579                let mut inner_depth = depth.clone();
10580                if inlined {
10581                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10582                    inner_offset = next_offset;
10583                } else {
10584                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10585                    inner_depth.increment()?;
10586                }
10587                let val_ref = self
10588                    .original_association_maintained
10589                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
10590                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10591                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10592                {
10593                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10594                }
10595                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10596                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10597                }
10598            }
10599
10600            next_offset += envelope_size;
10601            _next_ordinal_to_read += 1;
10602            if next_offset >= end_offset {
10603                return Ok(());
10604            }
10605
10606            // Decode unknown envelopes for gaps in ordinals.
10607            while _next_ordinal_to_read < 4 {
10608                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10609                _next_ordinal_to_read += 1;
10610                next_offset += envelope_size;
10611            }
10612
10613            let next_out_of_line = decoder.next_out_of_line();
10614            let handles_before = decoder.remaining_handles();
10615            if let Some((inlined, num_bytes, num_handles)) =
10616                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10617            {
10618                let member_inline_size =
10619                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10620                if inlined != (member_inline_size <= 4) {
10621                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10622                }
10623                let inner_offset;
10624                let mut inner_depth = depth.clone();
10625                if inlined {
10626                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10627                    inner_offset = next_offset;
10628                } else {
10629                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10630                    inner_depth.increment()?;
10631                }
10632                let val_ref =
10633                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
10634                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10635                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10636                {
10637                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10638                }
10639                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10640                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10641                }
10642            }
10643
10644            next_offset += envelope_size;
10645            _next_ordinal_to_read += 1;
10646            if next_offset >= end_offset {
10647                return Ok(());
10648            }
10649
10650            // Decode unknown envelopes for gaps in ordinals.
10651            while _next_ordinal_to_read < 5 {
10652                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10653                _next_ordinal_to_read += 1;
10654                next_offset += envelope_size;
10655            }
10656
10657            let next_out_of_line = decoder.next_out_of_line();
10658            let handles_before = decoder.remaining_handles();
10659            if let Some((inlined, num_bytes, num_handles)) =
10660                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10661            {
10662                let member_inline_size =
10663                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10664                if inlined != (member_inline_size <= 4) {
10665                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10666                }
10667                let inner_offset;
10668                let mut inner_depth = depth.clone();
10669                if inlined {
10670                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10671                    inner_offset = next_offset;
10672                } else {
10673                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10674                    inner_depth.increment()?;
10675                }
10676                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10677                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10678                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10679                {
10680                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10681                }
10682                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10683                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10684                }
10685            }
10686
10687            next_offset += envelope_size;
10688            _next_ordinal_to_read += 1;
10689            if next_offset >= end_offset {
10690                return Ok(());
10691            }
10692
10693            // Decode unknown envelopes for gaps in ordinals.
10694            while _next_ordinal_to_read < 6 {
10695                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10696                _next_ordinal_to_read += 1;
10697                next_offset += envelope_size;
10698            }
10699
10700            let next_out_of_line = decoder.next_out_of_line();
10701            let handles_before = decoder.remaining_handles();
10702            if let Some((inlined, num_bytes, num_handles)) =
10703                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10704            {
10705                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10706                if inlined != (member_inline_size <= 4) {
10707                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10708                }
10709                let inner_offset;
10710                let mut inner_depth = depth.clone();
10711                if inlined {
10712                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10713                    inner_offset = next_offset;
10714                } else {
10715                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10716                    inner_depth.increment()?;
10717                }
10718                let val_ref = self.association_ies.get_or_insert_with(|| {
10719                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
10720                });
10721                fidl::decode!(
10722                    fidl::encoding::UnboundedVector<u8>,
10723                    D,
10724                    val_ref,
10725                    decoder,
10726                    inner_offset,
10727                    inner_depth
10728                )?;
10729                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10730                {
10731                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10732                }
10733                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10734                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10735                }
10736            }
10737
10738            next_offset += envelope_size;
10739
10740            // Decode the remaining unknown envelopes.
10741            while next_offset < end_offset {
10742                _next_ordinal_to_read += 1;
10743                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10744                next_offset += envelope_size;
10745            }
10746
10747            Ok(())
10748        }
10749    }
10750
10751    impl WlanFullmacImplIfcRoamStartIndRequest {
10752        #[inline(always)]
10753        fn max_ordinal_present(&self) -> u64 {
10754            if let Some(_) = self.original_association_maintained {
10755                return 3;
10756            }
10757            if let Some(_) = self.selected_bss {
10758                return 2;
10759            }
10760            if let Some(_) = self.selected_bssid {
10761                return 1;
10762            }
10763            0
10764        }
10765    }
10766
10767    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
10768        type Borrowed<'a> = &'a Self;
10769        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10770            value
10771        }
10772    }
10773
10774    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
10775        type Owned = Self;
10776
10777        #[inline(always)]
10778        fn inline_align(_context: fidl::encoding::Context) -> usize {
10779            8
10780        }
10781
10782        #[inline(always)]
10783        fn inline_size(_context: fidl::encoding::Context) -> usize {
10784            16
10785        }
10786    }
10787
10788    unsafe impl<D: fidl::encoding::ResourceDialect>
10789        fidl::encoding::Encode<WlanFullmacImplIfcRoamStartIndRequest, D>
10790        for &WlanFullmacImplIfcRoamStartIndRequest
10791    {
10792        unsafe fn encode(
10793            self,
10794            encoder: &mut fidl::encoding::Encoder<'_, D>,
10795            offset: usize,
10796            mut depth: fidl::encoding::Depth,
10797        ) -> fidl::Result<()> {
10798            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamStartIndRequest>(offset);
10799            // Vector header
10800            let max_ordinal: u64 = self.max_ordinal_present();
10801            encoder.write_num(max_ordinal, offset);
10802            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10803            // Calling encoder.out_of_line_offset(0) is not allowed.
10804            if max_ordinal == 0 {
10805                return Ok(());
10806            }
10807            depth.increment()?;
10808            let envelope_size = 8;
10809            let bytes_len = max_ordinal as usize * envelope_size;
10810            #[allow(unused_variables)]
10811            let offset = encoder.out_of_line_offset(bytes_len);
10812            let mut _prev_end_offset: usize = 0;
10813            if 1 > max_ordinal {
10814                return Ok(());
10815            }
10816
10817            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10818            // are envelope_size bytes.
10819            let cur_offset: usize = (1 - 1) * envelope_size;
10820
10821            // Zero reserved fields.
10822            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10823
10824            // Safety:
10825            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10826            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10827            //   envelope_size bytes, there is always sufficient room.
10828            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10829                self.selected_bssid
10830                    .as_ref()
10831                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10832                encoder,
10833                offset + cur_offset,
10834                depth,
10835            )?;
10836
10837            _prev_end_offset = cur_offset + envelope_size;
10838            if 2 > max_ordinal {
10839                return Ok(());
10840            }
10841
10842            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10843            // are envelope_size bytes.
10844            let cur_offset: usize = (2 - 1) * envelope_size;
10845
10846            // Zero reserved fields.
10847            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10848
10849            // Safety:
10850            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10851            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10852            //   envelope_size bytes, there is always sufficient room.
10853            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssDescription, D>(
10854            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
10855            encoder, offset + cur_offset, depth
10856        )?;
10857
10858            _prev_end_offset = cur_offset + envelope_size;
10859            if 3 > max_ordinal {
10860                return Ok(());
10861            }
10862
10863            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10864            // are envelope_size bytes.
10865            let cur_offset: usize = (3 - 1) * envelope_size;
10866
10867            // Zero reserved fields.
10868            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10869
10870            // Safety:
10871            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10872            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10873            //   envelope_size bytes, there is always sufficient room.
10874            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10875                self.original_association_maintained
10876                    .as_ref()
10877                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10878                encoder,
10879                offset + cur_offset,
10880                depth,
10881            )?;
10882
10883            _prev_end_offset = cur_offset + envelope_size;
10884
10885            Ok(())
10886        }
10887    }
10888
10889    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10890        for WlanFullmacImplIfcRoamStartIndRequest
10891    {
10892        #[inline(always)]
10893        fn new_empty() -> Self {
10894            Self::default()
10895        }
10896
10897        unsafe fn decode(
10898            &mut self,
10899            decoder: &mut fidl::encoding::Decoder<'_, D>,
10900            offset: usize,
10901            mut depth: fidl::encoding::Depth,
10902        ) -> fidl::Result<()> {
10903            decoder.debug_check_bounds::<Self>(offset);
10904            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10905                None => return Err(fidl::Error::NotNullable),
10906                Some(len) => len,
10907            };
10908            // Calling decoder.out_of_line_offset(0) is not allowed.
10909            if len == 0 {
10910                return Ok(());
10911            };
10912            depth.increment()?;
10913            let envelope_size = 8;
10914            let bytes_len = len * envelope_size;
10915            let offset = decoder.out_of_line_offset(bytes_len)?;
10916            // Decode the envelope for each type.
10917            let mut _next_ordinal_to_read = 0;
10918            let mut next_offset = offset;
10919            let end_offset = offset + bytes_len;
10920            _next_ordinal_to_read += 1;
10921            if next_offset >= end_offset {
10922                return Ok(());
10923            }
10924
10925            // Decode unknown envelopes for gaps in ordinals.
10926            while _next_ordinal_to_read < 1 {
10927                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10928                _next_ordinal_to_read += 1;
10929                next_offset += envelope_size;
10930            }
10931
10932            let next_out_of_line = decoder.next_out_of_line();
10933            let handles_before = decoder.remaining_handles();
10934            if let Some((inlined, num_bytes, num_handles)) =
10935                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10936            {
10937                let member_inline_size =
10938                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10939                        decoder.context,
10940                    );
10941                if inlined != (member_inline_size <= 4) {
10942                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10943                }
10944                let inner_offset;
10945                let mut inner_depth = depth.clone();
10946                if inlined {
10947                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10948                    inner_offset = next_offset;
10949                } else {
10950                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10951                    inner_depth.increment()?;
10952                }
10953                let val_ref = self
10954                    .selected_bssid
10955                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10956                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
10957                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10958                {
10959                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10960                }
10961                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10962                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10963                }
10964            }
10965
10966            next_offset += envelope_size;
10967            _next_ordinal_to_read += 1;
10968            if next_offset >= end_offset {
10969                return Ok(());
10970            }
10971
10972            // Decode unknown envelopes for gaps in ordinals.
10973            while _next_ordinal_to_read < 2 {
10974                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10975                _next_ordinal_to_read += 1;
10976                next_offset += envelope_size;
10977            }
10978
10979            let next_out_of_line = decoder.next_out_of_line();
10980            let handles_before = decoder.remaining_handles();
10981            if let Some((inlined, num_bytes, num_handles)) =
10982                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10983            {
10984                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10985                if inlined != (member_inline_size <= 4) {
10986                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10987                }
10988                let inner_offset;
10989                let mut inner_depth = depth.clone();
10990                if inlined {
10991                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10992                    inner_offset = next_offset;
10993                } else {
10994                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10995                    inner_depth.increment()?;
10996                }
10997                let val_ref = self.selected_bss.get_or_insert_with(|| {
10998                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D)
10999                });
11000                fidl::decode!(
11001                    fidl_fuchsia_wlan_common__common::BssDescription,
11002                    D,
11003                    val_ref,
11004                    decoder,
11005                    inner_offset,
11006                    inner_depth
11007                )?;
11008                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11009                {
11010                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11011                }
11012                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11013                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11014                }
11015            }
11016
11017            next_offset += envelope_size;
11018            _next_ordinal_to_read += 1;
11019            if next_offset >= end_offset {
11020                return Ok(());
11021            }
11022
11023            // Decode unknown envelopes for gaps in ordinals.
11024            while _next_ordinal_to_read < 3 {
11025                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11026                _next_ordinal_to_read += 1;
11027                next_offset += envelope_size;
11028            }
11029
11030            let next_out_of_line = decoder.next_out_of_line();
11031            let handles_before = decoder.remaining_handles();
11032            if let Some((inlined, num_bytes, num_handles)) =
11033                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11034            {
11035                let member_inline_size =
11036                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11037                if inlined != (member_inline_size <= 4) {
11038                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11039                }
11040                let inner_offset;
11041                let mut inner_depth = depth.clone();
11042                if inlined {
11043                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11044                    inner_offset = next_offset;
11045                } else {
11046                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11047                    inner_depth.increment()?;
11048                }
11049                let val_ref = self
11050                    .original_association_maintained
11051                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
11052                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11053                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11054                {
11055                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11056                }
11057                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11058                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11059                }
11060            }
11061
11062            next_offset += envelope_size;
11063
11064            // Decode the remaining unknown envelopes.
11065            while next_offset < end_offset {
11066                _next_ordinal_to_read += 1;
11067                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11068                next_offset += envelope_size;
11069            }
11070
11071            Ok(())
11072        }
11073    }
11074
11075    impl WlanFullmacImplIfcSaeHandshakeIndRequest {
11076        #[inline(always)]
11077        fn max_ordinal_present(&self) -> u64 {
11078            if let Some(_) = self.peer_sta_address {
11079                return 1;
11080            }
11081            0
11082        }
11083    }
11084
11085    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
11086        type Borrowed<'a> = &'a Self;
11087        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11088            value
11089        }
11090    }
11091
11092    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
11093        type Owned = Self;
11094
11095        #[inline(always)]
11096        fn inline_align(_context: fidl::encoding::Context) -> usize {
11097            8
11098        }
11099
11100        #[inline(always)]
11101        fn inline_size(_context: fidl::encoding::Context) -> usize {
11102            16
11103        }
11104    }
11105
11106    unsafe impl<D: fidl::encoding::ResourceDialect>
11107        fidl::encoding::Encode<WlanFullmacImplIfcSaeHandshakeIndRequest, D>
11108        for &WlanFullmacImplIfcSaeHandshakeIndRequest
11109    {
11110        unsafe fn encode(
11111            self,
11112            encoder: &mut fidl::encoding::Encoder<'_, D>,
11113            offset: usize,
11114            mut depth: fidl::encoding::Depth,
11115        ) -> fidl::Result<()> {
11116            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeHandshakeIndRequest>(offset);
11117            // Vector header
11118            let max_ordinal: u64 = self.max_ordinal_present();
11119            encoder.write_num(max_ordinal, offset);
11120            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11121            // Calling encoder.out_of_line_offset(0) is not allowed.
11122            if max_ordinal == 0 {
11123                return Ok(());
11124            }
11125            depth.increment()?;
11126            let envelope_size = 8;
11127            let bytes_len = max_ordinal as usize * envelope_size;
11128            #[allow(unused_variables)]
11129            let offset = encoder.out_of_line_offset(bytes_len);
11130            let mut _prev_end_offset: usize = 0;
11131            if 1 > max_ordinal {
11132                return Ok(());
11133            }
11134
11135            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11136            // are envelope_size bytes.
11137            let cur_offset: usize = (1 - 1) * envelope_size;
11138
11139            // Zero reserved fields.
11140            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11141
11142            // Safety:
11143            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11144            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11145            //   envelope_size bytes, there is always sufficient room.
11146            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
11147                self.peer_sta_address
11148                    .as_ref()
11149                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
11150                encoder,
11151                offset + cur_offset,
11152                depth,
11153            )?;
11154
11155            _prev_end_offset = cur_offset + envelope_size;
11156
11157            Ok(())
11158        }
11159    }
11160
11161    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11162        for WlanFullmacImplIfcSaeHandshakeIndRequest
11163    {
11164        #[inline(always)]
11165        fn new_empty() -> Self {
11166            Self::default()
11167        }
11168
11169        unsafe fn decode(
11170            &mut self,
11171            decoder: &mut fidl::encoding::Decoder<'_, D>,
11172            offset: usize,
11173            mut depth: fidl::encoding::Depth,
11174        ) -> fidl::Result<()> {
11175            decoder.debug_check_bounds::<Self>(offset);
11176            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11177                None => return Err(fidl::Error::NotNullable),
11178                Some(len) => len,
11179            };
11180            // Calling decoder.out_of_line_offset(0) is not allowed.
11181            if len == 0 {
11182                return Ok(());
11183            };
11184            depth.increment()?;
11185            let envelope_size = 8;
11186            let bytes_len = len * envelope_size;
11187            let offset = decoder.out_of_line_offset(bytes_len)?;
11188            // Decode the envelope for each type.
11189            let mut _next_ordinal_to_read = 0;
11190            let mut next_offset = offset;
11191            let end_offset = offset + bytes_len;
11192            _next_ordinal_to_read += 1;
11193            if next_offset >= end_offset {
11194                return Ok(());
11195            }
11196
11197            // Decode unknown envelopes for gaps in ordinals.
11198            while _next_ordinal_to_read < 1 {
11199                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11200                _next_ordinal_to_read += 1;
11201                next_offset += envelope_size;
11202            }
11203
11204            let next_out_of_line = decoder.next_out_of_line();
11205            let handles_before = decoder.remaining_handles();
11206            if let Some((inlined, num_bytes, num_handles)) =
11207                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11208            {
11209                let member_inline_size =
11210                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11211                        decoder.context,
11212                    );
11213                if inlined != (member_inline_size <= 4) {
11214                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11215                }
11216                let inner_offset;
11217                let mut inner_depth = depth.clone();
11218                if inlined {
11219                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11220                    inner_offset = next_offset;
11221                } else {
11222                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11223                    inner_depth.increment()?;
11224                }
11225                let val_ref = self
11226                    .peer_sta_address
11227                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11228                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
11229                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11230                {
11231                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11232                }
11233                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11234                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11235                }
11236            }
11237
11238            next_offset += envelope_size;
11239
11240            // Decode the remaining unknown envelopes.
11241            while next_offset < end_offset {
11242                _next_ordinal_to_read += 1;
11243                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11244                next_offset += envelope_size;
11245            }
11246
11247            Ok(())
11248        }
11249    }
11250
11251    impl WlanFullmacImplIfcStartConfRequest {
11252        #[inline(always)]
11253        fn max_ordinal_present(&self) -> u64 {
11254            if let Some(_) = self.result_code {
11255                return 1;
11256            }
11257            0
11258        }
11259    }
11260
11261    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStartConfRequest {
11262        type Borrowed<'a> = &'a Self;
11263        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11264            value
11265        }
11266    }
11267
11268    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStartConfRequest {
11269        type Owned = Self;
11270
11271        #[inline(always)]
11272        fn inline_align(_context: fidl::encoding::Context) -> usize {
11273            8
11274        }
11275
11276        #[inline(always)]
11277        fn inline_size(_context: fidl::encoding::Context) -> usize {
11278            16
11279        }
11280    }
11281
11282    unsafe impl<D: fidl::encoding::ResourceDialect>
11283        fidl::encoding::Encode<WlanFullmacImplIfcStartConfRequest, D>
11284        for &WlanFullmacImplIfcStartConfRequest
11285    {
11286        unsafe fn encode(
11287            self,
11288            encoder: &mut fidl::encoding::Encoder<'_, D>,
11289            offset: usize,
11290            mut depth: fidl::encoding::Depth,
11291        ) -> fidl::Result<()> {
11292            encoder.debug_check_bounds::<WlanFullmacImplIfcStartConfRequest>(offset);
11293            // Vector header
11294            let max_ordinal: u64 = self.max_ordinal_present();
11295            encoder.write_num(max_ordinal, offset);
11296            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11297            // Calling encoder.out_of_line_offset(0) is not allowed.
11298            if max_ordinal == 0 {
11299                return Ok(());
11300            }
11301            depth.increment()?;
11302            let envelope_size = 8;
11303            let bytes_len = max_ordinal as usize * envelope_size;
11304            #[allow(unused_variables)]
11305            let offset = encoder.out_of_line_offset(bytes_len);
11306            let mut _prev_end_offset: usize = 0;
11307            if 1 > max_ordinal {
11308                return Ok(());
11309            }
11310
11311            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11312            // are envelope_size bytes.
11313            let cur_offset: usize = (1 - 1) * envelope_size;
11314
11315            // Zero reserved fields.
11316            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11317
11318            // Safety:
11319            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11320            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11321            //   envelope_size bytes, there is always sufficient room.
11322            fidl::encoding::encode_in_envelope_optional::<StartResult, D>(
11323                self.result_code
11324                    .as_ref()
11325                    .map(<StartResult as fidl::encoding::ValueTypeMarker>::borrow),
11326                encoder,
11327                offset + cur_offset,
11328                depth,
11329            )?;
11330
11331            _prev_end_offset = cur_offset + envelope_size;
11332
11333            Ok(())
11334        }
11335    }
11336
11337    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11338        for WlanFullmacImplIfcStartConfRequest
11339    {
11340        #[inline(always)]
11341        fn new_empty() -> Self {
11342            Self::default()
11343        }
11344
11345        unsafe fn decode(
11346            &mut self,
11347            decoder: &mut fidl::encoding::Decoder<'_, D>,
11348            offset: usize,
11349            mut depth: fidl::encoding::Depth,
11350        ) -> fidl::Result<()> {
11351            decoder.debug_check_bounds::<Self>(offset);
11352            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11353                None => return Err(fidl::Error::NotNullable),
11354                Some(len) => len,
11355            };
11356            // Calling decoder.out_of_line_offset(0) is not allowed.
11357            if len == 0 {
11358                return Ok(());
11359            };
11360            depth.increment()?;
11361            let envelope_size = 8;
11362            let bytes_len = len * envelope_size;
11363            let offset = decoder.out_of_line_offset(bytes_len)?;
11364            // Decode the envelope for each type.
11365            let mut _next_ordinal_to_read = 0;
11366            let mut next_offset = offset;
11367            let end_offset = offset + bytes_len;
11368            _next_ordinal_to_read += 1;
11369            if next_offset >= end_offset {
11370                return Ok(());
11371            }
11372
11373            // Decode unknown envelopes for gaps in ordinals.
11374            while _next_ordinal_to_read < 1 {
11375                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11376                _next_ordinal_to_read += 1;
11377                next_offset += envelope_size;
11378            }
11379
11380            let next_out_of_line = decoder.next_out_of_line();
11381            let handles_before = decoder.remaining_handles();
11382            if let Some((inlined, num_bytes, num_handles)) =
11383                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11384            {
11385                let member_inline_size =
11386                    <StartResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11387                if inlined != (member_inline_size <= 4) {
11388                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11389                }
11390                let inner_offset;
11391                let mut inner_depth = depth.clone();
11392                if inlined {
11393                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11394                    inner_offset = next_offset;
11395                } else {
11396                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11397                    inner_depth.increment()?;
11398                }
11399                let val_ref =
11400                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StartResult, D));
11401                fidl::decode!(StartResult, D, val_ref, decoder, inner_offset, inner_depth)?;
11402                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11403                {
11404                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11405                }
11406                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11407                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11408                }
11409            }
11410
11411            next_offset += envelope_size;
11412
11413            // Decode the remaining unknown envelopes.
11414            while next_offset < end_offset {
11415                _next_ordinal_to_read += 1;
11416                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11417                next_offset += envelope_size;
11418            }
11419
11420            Ok(())
11421        }
11422    }
11423
11424    impl WlanFullmacImplIfcStopConfRequest {
11425        #[inline(always)]
11426        fn max_ordinal_present(&self) -> u64 {
11427            if let Some(_) = self.result_code {
11428                return 1;
11429            }
11430            0
11431        }
11432    }
11433
11434    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStopConfRequest {
11435        type Borrowed<'a> = &'a Self;
11436        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11437            value
11438        }
11439    }
11440
11441    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStopConfRequest {
11442        type Owned = Self;
11443
11444        #[inline(always)]
11445        fn inline_align(_context: fidl::encoding::Context) -> usize {
11446            8
11447        }
11448
11449        #[inline(always)]
11450        fn inline_size(_context: fidl::encoding::Context) -> usize {
11451            16
11452        }
11453    }
11454
11455    unsafe impl<D: fidl::encoding::ResourceDialect>
11456        fidl::encoding::Encode<WlanFullmacImplIfcStopConfRequest, D>
11457        for &WlanFullmacImplIfcStopConfRequest
11458    {
11459        unsafe fn encode(
11460            self,
11461            encoder: &mut fidl::encoding::Encoder<'_, D>,
11462            offset: usize,
11463            mut depth: fidl::encoding::Depth,
11464        ) -> fidl::Result<()> {
11465            encoder.debug_check_bounds::<WlanFullmacImplIfcStopConfRequest>(offset);
11466            // Vector header
11467            let max_ordinal: u64 = self.max_ordinal_present();
11468            encoder.write_num(max_ordinal, offset);
11469            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11470            // Calling encoder.out_of_line_offset(0) is not allowed.
11471            if max_ordinal == 0 {
11472                return Ok(());
11473            }
11474            depth.increment()?;
11475            let envelope_size = 8;
11476            let bytes_len = max_ordinal as usize * envelope_size;
11477            #[allow(unused_variables)]
11478            let offset = encoder.out_of_line_offset(bytes_len);
11479            let mut _prev_end_offset: usize = 0;
11480            if 1 > max_ordinal {
11481                return Ok(());
11482            }
11483
11484            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11485            // are envelope_size bytes.
11486            let cur_offset: usize = (1 - 1) * envelope_size;
11487
11488            // Zero reserved fields.
11489            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11490
11491            // Safety:
11492            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11493            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11494            //   envelope_size bytes, there is always sufficient room.
11495            fidl::encoding::encode_in_envelope_optional::<StopResult, D>(
11496                self.result_code
11497                    .as_ref()
11498                    .map(<StopResult as fidl::encoding::ValueTypeMarker>::borrow),
11499                encoder,
11500                offset + cur_offset,
11501                depth,
11502            )?;
11503
11504            _prev_end_offset = cur_offset + envelope_size;
11505
11506            Ok(())
11507        }
11508    }
11509
11510    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11511        for WlanFullmacImplIfcStopConfRequest
11512    {
11513        #[inline(always)]
11514        fn new_empty() -> Self {
11515            Self::default()
11516        }
11517
11518        unsafe fn decode(
11519            &mut self,
11520            decoder: &mut fidl::encoding::Decoder<'_, D>,
11521            offset: usize,
11522            mut depth: fidl::encoding::Depth,
11523        ) -> fidl::Result<()> {
11524            decoder.debug_check_bounds::<Self>(offset);
11525            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11526                None => return Err(fidl::Error::NotNullable),
11527                Some(len) => len,
11528            };
11529            // Calling decoder.out_of_line_offset(0) is not allowed.
11530            if len == 0 {
11531                return Ok(());
11532            };
11533            depth.increment()?;
11534            let envelope_size = 8;
11535            let bytes_len = len * envelope_size;
11536            let offset = decoder.out_of_line_offset(bytes_len)?;
11537            // Decode the envelope for each type.
11538            let mut _next_ordinal_to_read = 0;
11539            let mut next_offset = offset;
11540            let end_offset = offset + bytes_len;
11541            _next_ordinal_to_read += 1;
11542            if next_offset >= end_offset {
11543                return Ok(());
11544            }
11545
11546            // Decode unknown envelopes for gaps in ordinals.
11547            while _next_ordinal_to_read < 1 {
11548                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11549                _next_ordinal_to_read += 1;
11550                next_offset += envelope_size;
11551            }
11552
11553            let next_out_of_line = decoder.next_out_of_line();
11554            let handles_before = decoder.remaining_handles();
11555            if let Some((inlined, num_bytes, num_handles)) =
11556                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11557            {
11558                let member_inline_size =
11559                    <StopResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11560                if inlined != (member_inline_size <= 4) {
11561                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11562                }
11563                let inner_offset;
11564                let mut inner_depth = depth.clone();
11565                if inlined {
11566                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11567                    inner_offset = next_offset;
11568                } else {
11569                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11570                    inner_depth.increment()?;
11571                }
11572                let val_ref =
11573                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StopResult, D));
11574                fidl::decode!(StopResult, D, val_ref, decoder, inner_offset, inner_depth)?;
11575                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11576                {
11577                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11578                }
11579                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11580                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11581                }
11582            }
11583
11584            next_offset += envelope_size;
11585
11586            // Decode the remaining unknown envelopes.
11587            while next_offset < end_offset {
11588                _next_ordinal_to_read += 1;
11589                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11590                next_offset += envelope_size;
11591            }
11592
11593            Ok(())
11594        }
11595    }
11596
11597    impl WlanFullmacImplOnLinkStateChangedRequest {
11598        #[inline(always)]
11599        fn max_ordinal_present(&self) -> u64 {
11600            if let Some(_) = self.online {
11601                return 1;
11602            }
11603            0
11604        }
11605    }
11606
11607    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
11608        type Borrowed<'a> = &'a Self;
11609        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11610            value
11611        }
11612    }
11613
11614    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
11615        type Owned = Self;
11616
11617        #[inline(always)]
11618        fn inline_align(_context: fidl::encoding::Context) -> usize {
11619            8
11620        }
11621
11622        #[inline(always)]
11623        fn inline_size(_context: fidl::encoding::Context) -> usize {
11624            16
11625        }
11626    }
11627
11628    unsafe impl<D: fidl::encoding::ResourceDialect>
11629        fidl::encoding::Encode<WlanFullmacImplOnLinkStateChangedRequest, D>
11630        for &WlanFullmacImplOnLinkStateChangedRequest
11631    {
11632        unsafe fn encode(
11633            self,
11634            encoder: &mut fidl::encoding::Encoder<'_, D>,
11635            offset: usize,
11636            mut depth: fidl::encoding::Depth,
11637        ) -> fidl::Result<()> {
11638            encoder.debug_check_bounds::<WlanFullmacImplOnLinkStateChangedRequest>(offset);
11639            // Vector header
11640            let max_ordinal: u64 = self.max_ordinal_present();
11641            encoder.write_num(max_ordinal, offset);
11642            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11643            // Calling encoder.out_of_line_offset(0) is not allowed.
11644            if max_ordinal == 0 {
11645                return Ok(());
11646            }
11647            depth.increment()?;
11648            let envelope_size = 8;
11649            let bytes_len = max_ordinal as usize * envelope_size;
11650            #[allow(unused_variables)]
11651            let offset = encoder.out_of_line_offset(bytes_len);
11652            let mut _prev_end_offset: usize = 0;
11653            if 1 > max_ordinal {
11654                return Ok(());
11655            }
11656
11657            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11658            // are envelope_size bytes.
11659            let cur_offset: usize = (1 - 1) * envelope_size;
11660
11661            // Zero reserved fields.
11662            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11663
11664            // Safety:
11665            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11666            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11667            //   envelope_size bytes, there is always sufficient room.
11668            fidl::encoding::encode_in_envelope_optional::<bool, D>(
11669                self.online.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
11670                encoder,
11671                offset + cur_offset,
11672                depth,
11673            )?;
11674
11675            _prev_end_offset = cur_offset + envelope_size;
11676
11677            Ok(())
11678        }
11679    }
11680
11681    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11682        for WlanFullmacImplOnLinkStateChangedRequest
11683    {
11684        #[inline(always)]
11685        fn new_empty() -> Self {
11686            Self::default()
11687        }
11688
11689        unsafe fn decode(
11690            &mut self,
11691            decoder: &mut fidl::encoding::Decoder<'_, D>,
11692            offset: usize,
11693            mut depth: fidl::encoding::Depth,
11694        ) -> fidl::Result<()> {
11695            decoder.debug_check_bounds::<Self>(offset);
11696            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11697                None => return Err(fidl::Error::NotNullable),
11698                Some(len) => len,
11699            };
11700            // Calling decoder.out_of_line_offset(0) is not allowed.
11701            if len == 0 {
11702                return Ok(());
11703            };
11704            depth.increment()?;
11705            let envelope_size = 8;
11706            let bytes_len = len * envelope_size;
11707            let offset = decoder.out_of_line_offset(bytes_len)?;
11708            // Decode the envelope for each type.
11709            let mut _next_ordinal_to_read = 0;
11710            let mut next_offset = offset;
11711            let end_offset = offset + bytes_len;
11712            _next_ordinal_to_read += 1;
11713            if next_offset >= end_offset {
11714                return Ok(());
11715            }
11716
11717            // Decode unknown envelopes for gaps in ordinals.
11718            while _next_ordinal_to_read < 1 {
11719                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11720                _next_ordinal_to_read += 1;
11721                next_offset += envelope_size;
11722            }
11723
11724            let next_out_of_line = decoder.next_out_of_line();
11725            let handles_before = decoder.remaining_handles();
11726            if let Some((inlined, num_bytes, num_handles)) =
11727                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11728            {
11729                let member_inline_size =
11730                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11731                if inlined != (member_inline_size <= 4) {
11732                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11733                }
11734                let inner_offset;
11735                let mut inner_depth = depth.clone();
11736                if inlined {
11737                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11738                    inner_offset = next_offset;
11739                } else {
11740                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11741                    inner_depth.increment()?;
11742                }
11743                let val_ref = self.online.get_or_insert_with(|| fidl::new_empty!(bool, D));
11744                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11745                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11746                {
11747                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11748                }
11749                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11750                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11751                }
11752            }
11753
11754            next_offset += envelope_size;
11755
11756            // Decode the remaining unknown envelopes.
11757            while next_offset < end_offset {
11758                _next_ordinal_to_read += 1;
11759                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11760                next_offset += envelope_size;
11761            }
11762
11763            Ok(())
11764        }
11765    }
11766
11767    impl WlanFullmacImplReconnectRequest {
11768        #[inline(always)]
11769        fn max_ordinal_present(&self) -> u64 {
11770            if let Some(_) = self.peer_sta_address {
11771                return 1;
11772            }
11773            0
11774        }
11775    }
11776
11777    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplReconnectRequest {
11778        type Borrowed<'a> = &'a Self;
11779        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11780            value
11781        }
11782    }
11783
11784    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplReconnectRequest {
11785        type Owned = Self;
11786
11787        #[inline(always)]
11788        fn inline_align(_context: fidl::encoding::Context) -> usize {
11789            8
11790        }
11791
11792        #[inline(always)]
11793        fn inline_size(_context: fidl::encoding::Context) -> usize {
11794            16
11795        }
11796    }
11797
11798    unsafe impl<D: fidl::encoding::ResourceDialect>
11799        fidl::encoding::Encode<WlanFullmacImplReconnectRequest, D>
11800        for &WlanFullmacImplReconnectRequest
11801    {
11802        unsafe fn encode(
11803            self,
11804            encoder: &mut fidl::encoding::Encoder<'_, D>,
11805            offset: usize,
11806            mut depth: fidl::encoding::Depth,
11807        ) -> fidl::Result<()> {
11808            encoder.debug_check_bounds::<WlanFullmacImplReconnectRequest>(offset);
11809            // Vector header
11810            let max_ordinal: u64 = self.max_ordinal_present();
11811            encoder.write_num(max_ordinal, offset);
11812            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11813            // Calling encoder.out_of_line_offset(0) is not allowed.
11814            if max_ordinal == 0 {
11815                return Ok(());
11816            }
11817            depth.increment()?;
11818            let envelope_size = 8;
11819            let bytes_len = max_ordinal as usize * envelope_size;
11820            #[allow(unused_variables)]
11821            let offset = encoder.out_of_line_offset(bytes_len);
11822            let mut _prev_end_offset: usize = 0;
11823            if 1 > max_ordinal {
11824                return Ok(());
11825            }
11826
11827            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11828            // are envelope_size bytes.
11829            let cur_offset: usize = (1 - 1) * envelope_size;
11830
11831            // Zero reserved fields.
11832            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11833
11834            // Safety:
11835            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11836            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11837            //   envelope_size bytes, there is always sufficient room.
11838            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
11839                self.peer_sta_address
11840                    .as_ref()
11841                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
11842                encoder,
11843                offset + cur_offset,
11844                depth,
11845            )?;
11846
11847            _prev_end_offset = cur_offset + envelope_size;
11848
11849            Ok(())
11850        }
11851    }
11852
11853    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11854        for WlanFullmacImplReconnectRequest
11855    {
11856        #[inline(always)]
11857        fn new_empty() -> Self {
11858            Self::default()
11859        }
11860
11861        unsafe fn decode(
11862            &mut self,
11863            decoder: &mut fidl::encoding::Decoder<'_, D>,
11864            offset: usize,
11865            mut depth: fidl::encoding::Depth,
11866        ) -> fidl::Result<()> {
11867            decoder.debug_check_bounds::<Self>(offset);
11868            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11869                None => return Err(fidl::Error::NotNullable),
11870                Some(len) => len,
11871            };
11872            // Calling decoder.out_of_line_offset(0) is not allowed.
11873            if len == 0 {
11874                return Ok(());
11875            };
11876            depth.increment()?;
11877            let envelope_size = 8;
11878            let bytes_len = len * envelope_size;
11879            let offset = decoder.out_of_line_offset(bytes_len)?;
11880            // Decode the envelope for each type.
11881            let mut _next_ordinal_to_read = 0;
11882            let mut next_offset = offset;
11883            let end_offset = offset + bytes_len;
11884            _next_ordinal_to_read += 1;
11885            if next_offset >= end_offset {
11886                return Ok(());
11887            }
11888
11889            // Decode unknown envelopes for gaps in ordinals.
11890            while _next_ordinal_to_read < 1 {
11891                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11892                _next_ordinal_to_read += 1;
11893                next_offset += envelope_size;
11894            }
11895
11896            let next_out_of_line = decoder.next_out_of_line();
11897            let handles_before = decoder.remaining_handles();
11898            if let Some((inlined, num_bytes, num_handles)) =
11899                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11900            {
11901                let member_inline_size =
11902                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11903                        decoder.context,
11904                    );
11905                if inlined != (member_inline_size <= 4) {
11906                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11907                }
11908                let inner_offset;
11909                let mut inner_depth = depth.clone();
11910                if inlined {
11911                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11912                    inner_offset = next_offset;
11913                } else {
11914                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11915                    inner_depth.increment()?;
11916                }
11917                let val_ref = self
11918                    .peer_sta_address
11919                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11920                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
11921                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11922                {
11923                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11924                }
11925                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11926                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11927                }
11928            }
11929
11930            next_offset += envelope_size;
11931
11932            // Decode the remaining unknown envelopes.
11933            while next_offset < end_offset {
11934                _next_ordinal_to_read += 1;
11935                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11936                next_offset += envelope_size;
11937            }
11938
11939            Ok(())
11940        }
11941    }
11942
11943    impl WlanFullmacImplRoamRequest {
11944        #[inline(always)]
11945        fn max_ordinal_present(&self) -> u64 {
11946            if let Some(_) = self.selected_bss {
11947                return 1;
11948            }
11949            0
11950        }
11951    }
11952
11953    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplRoamRequest {
11954        type Borrowed<'a> = &'a Self;
11955        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11956            value
11957        }
11958    }
11959
11960    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplRoamRequest {
11961        type Owned = Self;
11962
11963        #[inline(always)]
11964        fn inline_align(_context: fidl::encoding::Context) -> usize {
11965            8
11966        }
11967
11968        #[inline(always)]
11969        fn inline_size(_context: fidl::encoding::Context) -> usize {
11970            16
11971        }
11972    }
11973
11974    unsafe impl<D: fidl::encoding::ResourceDialect>
11975        fidl::encoding::Encode<WlanFullmacImplRoamRequest, D> for &WlanFullmacImplRoamRequest
11976    {
11977        unsafe fn encode(
11978            self,
11979            encoder: &mut fidl::encoding::Encoder<'_, D>,
11980            offset: usize,
11981            mut depth: fidl::encoding::Depth,
11982        ) -> fidl::Result<()> {
11983            encoder.debug_check_bounds::<WlanFullmacImplRoamRequest>(offset);
11984            // Vector header
11985            let max_ordinal: u64 = self.max_ordinal_present();
11986            encoder.write_num(max_ordinal, offset);
11987            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11988            // Calling encoder.out_of_line_offset(0) is not allowed.
11989            if max_ordinal == 0 {
11990                return Ok(());
11991            }
11992            depth.increment()?;
11993            let envelope_size = 8;
11994            let bytes_len = max_ordinal as usize * envelope_size;
11995            #[allow(unused_variables)]
11996            let offset = encoder.out_of_line_offset(bytes_len);
11997            let mut _prev_end_offset: usize = 0;
11998            if 1 > max_ordinal {
11999                return Ok(());
12000            }
12001
12002            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12003            // are envelope_size bytes.
12004            let cur_offset: usize = (1 - 1) * envelope_size;
12005
12006            // Zero reserved fields.
12007            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12008
12009            // Safety:
12010            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12011            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12012            //   envelope_size bytes, there is always sufficient room.
12013            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssDescription, D>(
12014            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
12015            encoder, offset + cur_offset, depth
12016        )?;
12017
12018            _prev_end_offset = cur_offset + envelope_size;
12019
12020            Ok(())
12021        }
12022    }
12023
12024    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12025        for WlanFullmacImplRoamRequest
12026    {
12027        #[inline(always)]
12028        fn new_empty() -> Self {
12029            Self::default()
12030        }
12031
12032        unsafe fn decode(
12033            &mut self,
12034            decoder: &mut fidl::encoding::Decoder<'_, D>,
12035            offset: usize,
12036            mut depth: fidl::encoding::Depth,
12037        ) -> fidl::Result<()> {
12038            decoder.debug_check_bounds::<Self>(offset);
12039            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12040                None => return Err(fidl::Error::NotNullable),
12041                Some(len) => len,
12042            };
12043            // Calling decoder.out_of_line_offset(0) is not allowed.
12044            if len == 0 {
12045                return Ok(());
12046            };
12047            depth.increment()?;
12048            let envelope_size = 8;
12049            let bytes_len = len * envelope_size;
12050            let offset = decoder.out_of_line_offset(bytes_len)?;
12051            // Decode the envelope for each type.
12052            let mut _next_ordinal_to_read = 0;
12053            let mut next_offset = offset;
12054            let end_offset = offset + bytes_len;
12055            _next_ordinal_to_read += 1;
12056            if next_offset >= end_offset {
12057                return Ok(());
12058            }
12059
12060            // Decode unknown envelopes for gaps in ordinals.
12061            while _next_ordinal_to_read < 1 {
12062                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12063                _next_ordinal_to_read += 1;
12064                next_offset += envelope_size;
12065            }
12066
12067            let next_out_of_line = decoder.next_out_of_line();
12068            let handles_before = decoder.remaining_handles();
12069            if let Some((inlined, num_bytes, num_handles)) =
12070                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12071            {
12072                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12073                if inlined != (member_inline_size <= 4) {
12074                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12075                }
12076                let inner_offset;
12077                let mut inner_depth = depth.clone();
12078                if inlined {
12079                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12080                    inner_offset = next_offset;
12081                } else {
12082                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12083                    inner_depth.increment()?;
12084                }
12085                let val_ref = self.selected_bss.get_or_insert_with(|| {
12086                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D)
12087                });
12088                fidl::decode!(
12089                    fidl_fuchsia_wlan_common__common::BssDescription,
12090                    D,
12091                    val_ref,
12092                    decoder,
12093                    inner_offset,
12094                    inner_depth
12095                )?;
12096                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12097                {
12098                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12099                }
12100                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12101                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12102                }
12103            }
12104
12105            next_offset += envelope_size;
12106
12107            // Decode the remaining unknown envelopes.
12108            while next_offset < end_offset {
12109                _next_ordinal_to_read += 1;
12110                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12111                next_offset += envelope_size;
12112            }
12113
12114            Ok(())
12115        }
12116    }
12117
12118    impl WlanFullmacImplSaeHandshakeRespRequest {
12119        #[inline(always)]
12120        fn max_ordinal_present(&self) -> u64 {
12121            if let Some(_) = self.status_code {
12122                return 2;
12123            }
12124            if let Some(_) = self.peer_sta_address {
12125                return 1;
12126            }
12127            0
12128        }
12129    }
12130
12131    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
12132        type Borrowed<'a> = &'a Self;
12133        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12134            value
12135        }
12136    }
12137
12138    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
12139        type Owned = Self;
12140
12141        #[inline(always)]
12142        fn inline_align(_context: fidl::encoding::Context) -> usize {
12143            8
12144        }
12145
12146        #[inline(always)]
12147        fn inline_size(_context: fidl::encoding::Context) -> usize {
12148            16
12149        }
12150    }
12151
12152    unsafe impl<D: fidl::encoding::ResourceDialect>
12153        fidl::encoding::Encode<WlanFullmacImplSaeHandshakeRespRequest, D>
12154        for &WlanFullmacImplSaeHandshakeRespRequest
12155    {
12156        unsafe fn encode(
12157            self,
12158            encoder: &mut fidl::encoding::Encoder<'_, D>,
12159            offset: usize,
12160            mut depth: fidl::encoding::Depth,
12161        ) -> fidl::Result<()> {
12162            encoder.debug_check_bounds::<WlanFullmacImplSaeHandshakeRespRequest>(offset);
12163            // Vector header
12164            let max_ordinal: u64 = self.max_ordinal_present();
12165            encoder.write_num(max_ordinal, offset);
12166            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12167            // Calling encoder.out_of_line_offset(0) is not allowed.
12168            if max_ordinal == 0 {
12169                return Ok(());
12170            }
12171            depth.increment()?;
12172            let envelope_size = 8;
12173            let bytes_len = max_ordinal as usize * envelope_size;
12174            #[allow(unused_variables)]
12175            let offset = encoder.out_of_line_offset(bytes_len);
12176            let mut _prev_end_offset: usize = 0;
12177            if 1 > max_ordinal {
12178                return Ok(());
12179            }
12180
12181            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12182            // are envelope_size bytes.
12183            let cur_offset: usize = (1 - 1) * envelope_size;
12184
12185            // Zero reserved fields.
12186            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12187
12188            // Safety:
12189            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12190            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12191            //   envelope_size bytes, there is always sufficient room.
12192            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
12193                self.peer_sta_address
12194                    .as_ref()
12195                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
12196                encoder,
12197                offset + cur_offset,
12198                depth,
12199            )?;
12200
12201            _prev_end_offset = cur_offset + envelope_size;
12202            if 2 > max_ordinal {
12203                return Ok(());
12204            }
12205
12206            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12207            // are envelope_size bytes.
12208            let cur_offset: usize = (2 - 1) * envelope_size;
12209
12210            // Zero reserved fields.
12211            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12212
12213            // Safety:
12214            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12215            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12216            //   envelope_size bytes, there is always sufficient room.
12217            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
12218            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
12219            encoder, offset + cur_offset, depth
12220        )?;
12221
12222            _prev_end_offset = cur_offset + envelope_size;
12223
12224            Ok(())
12225        }
12226    }
12227
12228    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12229        for WlanFullmacImplSaeHandshakeRespRequest
12230    {
12231        #[inline(always)]
12232        fn new_empty() -> Self {
12233            Self::default()
12234        }
12235
12236        unsafe fn decode(
12237            &mut self,
12238            decoder: &mut fidl::encoding::Decoder<'_, D>,
12239            offset: usize,
12240            mut depth: fidl::encoding::Depth,
12241        ) -> fidl::Result<()> {
12242            decoder.debug_check_bounds::<Self>(offset);
12243            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12244                None => return Err(fidl::Error::NotNullable),
12245                Some(len) => len,
12246            };
12247            // Calling decoder.out_of_line_offset(0) is not allowed.
12248            if len == 0 {
12249                return Ok(());
12250            };
12251            depth.increment()?;
12252            let envelope_size = 8;
12253            let bytes_len = len * envelope_size;
12254            let offset = decoder.out_of_line_offset(bytes_len)?;
12255            // Decode the envelope for each type.
12256            let mut _next_ordinal_to_read = 0;
12257            let mut next_offset = offset;
12258            let end_offset = offset + bytes_len;
12259            _next_ordinal_to_read += 1;
12260            if next_offset >= end_offset {
12261                return Ok(());
12262            }
12263
12264            // Decode unknown envelopes for gaps in ordinals.
12265            while _next_ordinal_to_read < 1 {
12266                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12267                _next_ordinal_to_read += 1;
12268                next_offset += envelope_size;
12269            }
12270
12271            let next_out_of_line = decoder.next_out_of_line();
12272            let handles_before = decoder.remaining_handles();
12273            if let Some((inlined, num_bytes, num_handles)) =
12274                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12275            {
12276                let member_inline_size =
12277                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
12278                        decoder.context,
12279                    );
12280                if inlined != (member_inline_size <= 4) {
12281                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12282                }
12283                let inner_offset;
12284                let mut inner_depth = depth.clone();
12285                if inlined {
12286                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12287                    inner_offset = next_offset;
12288                } else {
12289                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12290                    inner_depth.increment()?;
12291                }
12292                let val_ref = self
12293                    .peer_sta_address
12294                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
12295                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
12296                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12297                {
12298                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12299                }
12300                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12301                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12302                }
12303            }
12304
12305            next_offset += envelope_size;
12306            _next_ordinal_to_read += 1;
12307            if next_offset >= end_offset {
12308                return Ok(());
12309            }
12310
12311            // Decode unknown envelopes for gaps in ordinals.
12312            while _next_ordinal_to_read < 2 {
12313                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12314                _next_ordinal_to_read += 1;
12315                next_offset += envelope_size;
12316            }
12317
12318            let next_out_of_line = decoder.next_out_of_line();
12319            let handles_before = decoder.remaining_handles();
12320            if let Some((inlined, num_bytes, num_handles)) =
12321                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12322            {
12323                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12324                if inlined != (member_inline_size <= 4) {
12325                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12326                }
12327                let inner_offset;
12328                let mut inner_depth = depth.clone();
12329                if inlined {
12330                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12331                    inner_offset = next_offset;
12332                } else {
12333                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12334                    inner_depth.increment()?;
12335                }
12336                let val_ref = self.status_code.get_or_insert_with(|| {
12337                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
12338                });
12339                fidl::decode!(
12340                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
12341                    D,
12342                    val_ref,
12343                    decoder,
12344                    inner_offset,
12345                    inner_depth
12346                )?;
12347                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12348                {
12349                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12350                }
12351                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12352                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12353                }
12354            }
12355
12356            next_offset += envelope_size;
12357
12358            // Decode the remaining unknown envelopes.
12359            while next_offset < end_offset {
12360                _next_ordinal_to_read += 1;
12361                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12362                next_offset += envelope_size;
12363            }
12364
12365            Ok(())
12366        }
12367    }
12368
12369    impl WlanFullmacImplSetKeysRequest {
12370        #[inline(always)]
12371        fn max_ordinal_present(&self) -> u64 {
12372            if let Some(_) = self.key_descriptors {
12373                return 2;
12374            }
12375            if let Some(_) = self.keylist {
12376                return 1;
12377            }
12378            0
12379        }
12380    }
12381
12382    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysRequest {
12383        type Borrowed<'a> = &'a Self;
12384        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12385            value
12386        }
12387    }
12388
12389    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysRequest {
12390        type Owned = Self;
12391
12392        #[inline(always)]
12393        fn inline_align(_context: fidl::encoding::Context) -> usize {
12394            8
12395        }
12396
12397        #[inline(always)]
12398        fn inline_size(_context: fidl::encoding::Context) -> usize {
12399            16
12400        }
12401    }
12402
12403    unsafe impl<D: fidl::encoding::ResourceDialect>
12404        fidl::encoding::Encode<WlanFullmacImplSetKeysRequest, D>
12405        for &WlanFullmacImplSetKeysRequest
12406    {
12407        unsafe fn encode(
12408            self,
12409            encoder: &mut fidl::encoding::Encoder<'_, D>,
12410            offset: usize,
12411            mut depth: fidl::encoding::Depth,
12412        ) -> fidl::Result<()> {
12413            encoder.debug_check_bounds::<WlanFullmacImplSetKeysRequest>(offset);
12414            // Vector header
12415            let max_ordinal: u64 = self.max_ordinal_present();
12416            encoder.write_num(max_ordinal, offset);
12417            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12418            // Calling encoder.out_of_line_offset(0) is not allowed.
12419            if max_ordinal == 0 {
12420                return Ok(());
12421            }
12422            depth.increment()?;
12423            let envelope_size = 8;
12424            let bytes_len = max_ordinal as usize * envelope_size;
12425            #[allow(unused_variables)]
12426            let offset = encoder.out_of_line_offset(bytes_len);
12427            let mut _prev_end_offset: usize = 0;
12428            if 1 > max_ordinal {
12429                return Ok(());
12430            }
12431
12432            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12433            // are envelope_size bytes.
12434            let cur_offset: usize = (1 - 1) * envelope_size;
12435
12436            // Zero reserved fields.
12437            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12438
12439            // Safety:
12440            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12441            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12442            //   envelope_size bytes, there is always sufficient room.
12443            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_common__common::WlanKeyConfig, 4>, D>(
12444            self.keylist.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_common__common::WlanKeyConfig, 4> as fidl::encoding::ValueTypeMarker>::borrow),
12445            encoder, offset + cur_offset, depth
12446        )?;
12447
12448            _prev_end_offset = cur_offset + envelope_size;
12449            if 2 > max_ordinal {
12450                return Ok(());
12451            }
12452
12453            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12454            // are envelope_size bytes.
12455            let cur_offset: usize = (2 - 1) * envelope_size;
12456
12457            // Zero reserved fields.
12458            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12459
12460            // Safety:
12461            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12462            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12463            //   envelope_size bytes, there is always sufficient room.
12464            fidl::encoding::encode_in_envelope_optional::<
12465                fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, 4>,
12466                D,
12467            >(
12468                self.key_descriptors.as_ref().map(
12469                    <fidl::encoding::Vector<
12470                        fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor,
12471                        4,
12472                    > as fidl::encoding::ValueTypeMarker>::borrow,
12473                ),
12474                encoder,
12475                offset + cur_offset,
12476                depth,
12477            )?;
12478
12479            _prev_end_offset = cur_offset + envelope_size;
12480
12481            Ok(())
12482        }
12483    }
12484
12485    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12486        for WlanFullmacImplSetKeysRequest
12487    {
12488        #[inline(always)]
12489        fn new_empty() -> Self {
12490            Self::default()
12491        }
12492
12493        unsafe fn decode(
12494            &mut self,
12495            decoder: &mut fidl::encoding::Decoder<'_, D>,
12496            offset: usize,
12497            mut depth: fidl::encoding::Depth,
12498        ) -> fidl::Result<()> {
12499            decoder.debug_check_bounds::<Self>(offset);
12500            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12501                None => return Err(fidl::Error::NotNullable),
12502                Some(len) => len,
12503            };
12504            // Calling decoder.out_of_line_offset(0) is not allowed.
12505            if len == 0 {
12506                return Ok(());
12507            };
12508            depth.increment()?;
12509            let envelope_size = 8;
12510            let bytes_len = len * envelope_size;
12511            let offset = decoder.out_of_line_offset(bytes_len)?;
12512            // Decode the envelope for each type.
12513            let mut _next_ordinal_to_read = 0;
12514            let mut next_offset = offset;
12515            let end_offset = offset + bytes_len;
12516            _next_ordinal_to_read += 1;
12517            if next_offset >= end_offset {
12518                return Ok(());
12519            }
12520
12521            // Decode unknown envelopes for gaps in ordinals.
12522            while _next_ordinal_to_read < 1 {
12523                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12524                _next_ordinal_to_read += 1;
12525                next_offset += envelope_size;
12526            }
12527
12528            let next_out_of_line = decoder.next_out_of_line();
12529            let handles_before = decoder.remaining_handles();
12530            if let Some((inlined, num_bytes, num_handles)) =
12531                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12532            {
12533                let member_inline_size = <fidl::encoding::Vector<
12534                    fidl_fuchsia_wlan_common__common::WlanKeyConfig,
12535                    4,
12536                > as fidl::encoding::TypeMarker>::inline_size(
12537                    decoder.context
12538                );
12539                if inlined != (member_inline_size <= 4) {
12540                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12541                }
12542                let inner_offset;
12543                let mut inner_depth = depth.clone();
12544                if inlined {
12545                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12546                    inner_offset = next_offset;
12547                } else {
12548                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12549                    inner_depth.increment()?;
12550                }
12551                let val_ref =
12552                self.keylist.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_common__common::WlanKeyConfig, 4>, D));
12553                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_common__common::WlanKeyConfig, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
12554                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12555                {
12556                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12557                }
12558                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12559                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12560                }
12561            }
12562
12563            next_offset += envelope_size;
12564            _next_ordinal_to_read += 1;
12565            if next_offset >= end_offset {
12566                return Ok(());
12567            }
12568
12569            // Decode unknown envelopes for gaps in ordinals.
12570            while _next_ordinal_to_read < 2 {
12571                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12572                _next_ordinal_to_read += 1;
12573                next_offset += envelope_size;
12574            }
12575
12576            let next_out_of_line = decoder.next_out_of_line();
12577            let handles_before = decoder.remaining_handles();
12578            if let Some((inlined, num_bytes, num_handles)) =
12579                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12580            {
12581                let member_inline_size = <fidl::encoding::Vector<
12582                    fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor,
12583                    4,
12584                > as fidl::encoding::TypeMarker>::inline_size(
12585                    decoder.context
12586                );
12587                if inlined != (member_inline_size <= 4) {
12588                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12589                }
12590                let inner_offset;
12591                let mut inner_depth = depth.clone();
12592                if inlined {
12593                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12594                    inner_offset = next_offset;
12595                } else {
12596                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12597                    inner_depth.increment()?;
12598                }
12599                let val_ref =
12600                self.key_descriptors.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, 4>, D));
12601                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211__common::SetKeyDescriptor, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
12602                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12603                {
12604                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12605                }
12606                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12607                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12608                }
12609            }
12610
12611            next_offset += envelope_size;
12612
12613            // Decode the remaining unknown envelopes.
12614            while next_offset < end_offset {
12615                _next_ordinal_to_read += 1;
12616                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12617                next_offset += envelope_size;
12618            }
12619
12620            Ok(())
12621        }
12622    }
12623
12624    impl WlanFullmacImplStartBssRequest {
12625        #[inline(always)]
12626        fn max_ordinal_present(&self) -> u64 {
12627            if let Some(_) = self.vendor_ie {
12628                return 7;
12629            }
12630            if let Some(_) = self.rsne {
12631                return 6;
12632            }
12633            if let Some(_) = self.channel {
12634                return 5;
12635            }
12636            if let Some(_) = self.dtim_period {
12637                return 4;
12638            }
12639            if let Some(_) = self.beacon_period {
12640                return 3;
12641            }
12642            if let Some(_) = self.bss_type {
12643                return 2;
12644            }
12645            if let Some(_) = self.ssid {
12646                return 1;
12647            }
12648            0
12649        }
12650    }
12651
12652    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartBssRequest {
12653        type Borrowed<'a> = &'a Self;
12654        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12655            value
12656        }
12657    }
12658
12659    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartBssRequest {
12660        type Owned = Self;
12661
12662        #[inline(always)]
12663        fn inline_align(_context: fidl::encoding::Context) -> usize {
12664            8
12665        }
12666
12667        #[inline(always)]
12668        fn inline_size(_context: fidl::encoding::Context) -> usize {
12669            16
12670        }
12671    }
12672
12673    unsafe impl<D: fidl::encoding::ResourceDialect>
12674        fidl::encoding::Encode<WlanFullmacImplStartBssRequest, D>
12675        for &WlanFullmacImplStartBssRequest
12676    {
12677        unsafe fn encode(
12678            self,
12679            encoder: &mut fidl::encoding::Encoder<'_, D>,
12680            offset: usize,
12681            mut depth: fidl::encoding::Depth,
12682        ) -> fidl::Result<()> {
12683            encoder.debug_check_bounds::<WlanFullmacImplStartBssRequest>(offset);
12684            // Vector header
12685            let max_ordinal: u64 = self.max_ordinal_present();
12686            encoder.write_num(max_ordinal, offset);
12687            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12688            // Calling encoder.out_of_line_offset(0) is not allowed.
12689            if max_ordinal == 0 {
12690                return Ok(());
12691            }
12692            depth.increment()?;
12693            let envelope_size = 8;
12694            let bytes_len = max_ordinal as usize * envelope_size;
12695            #[allow(unused_variables)]
12696            let offset = encoder.out_of_line_offset(bytes_len);
12697            let mut _prev_end_offset: usize = 0;
12698            if 1 > max_ordinal {
12699                return Ok(());
12700            }
12701
12702            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12703            // are envelope_size bytes.
12704            let cur_offset: usize = (1 - 1) * envelope_size;
12705
12706            // Zero reserved fields.
12707            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12708
12709            // Safety:
12710            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12711            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12712            //   envelope_size bytes, there is always sufficient room.
12713            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
12714                self.ssid.as_ref().map(
12715                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
12716                ),
12717                encoder,
12718                offset + cur_offset,
12719                depth,
12720            )?;
12721
12722            _prev_end_offset = cur_offset + envelope_size;
12723            if 2 > max_ordinal {
12724                return Ok(());
12725            }
12726
12727            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12728            // are envelope_size bytes.
12729            let cur_offset: usize = (2 - 1) * envelope_size;
12730
12731            // Zero reserved fields.
12732            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12733
12734            // Safety:
12735            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12736            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12737            //   envelope_size bytes, there is always sufficient room.
12738            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::BssType, D>(
12739            self.bss_type.as_ref().map(<fidl_fuchsia_wlan_common__common::BssType as fidl::encoding::ValueTypeMarker>::borrow),
12740            encoder, offset + cur_offset, depth
12741        )?;
12742
12743            _prev_end_offset = cur_offset + envelope_size;
12744            if 3 > max_ordinal {
12745                return Ok(());
12746            }
12747
12748            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12749            // are envelope_size bytes.
12750            let cur_offset: usize = (3 - 1) * envelope_size;
12751
12752            // Zero reserved fields.
12753            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12754
12755            // Safety:
12756            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12757            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12758            //   envelope_size bytes, there is always sufficient room.
12759            fidl::encoding::encode_in_envelope_optional::<u32, D>(
12760                self.beacon_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12761                encoder,
12762                offset + cur_offset,
12763                depth,
12764            )?;
12765
12766            _prev_end_offset = cur_offset + envelope_size;
12767            if 4 > max_ordinal {
12768                return Ok(());
12769            }
12770
12771            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12772            // are envelope_size bytes.
12773            let cur_offset: usize = (4 - 1) * envelope_size;
12774
12775            // Zero reserved fields.
12776            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12777
12778            // Safety:
12779            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12780            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12781            //   envelope_size bytes, there is always sufficient room.
12782            fidl::encoding::encode_in_envelope_optional::<u32, D>(
12783                self.dtim_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
12784                encoder,
12785                offset + cur_offset,
12786                depth,
12787            )?;
12788
12789            _prev_end_offset = cur_offset + envelope_size;
12790            if 5 > max_ordinal {
12791                return Ok(());
12792            }
12793
12794            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12795            // are envelope_size bytes.
12796            let cur_offset: usize = (5 - 1) * envelope_size;
12797
12798            // Zero reserved fields.
12799            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12800
12801            // Safety:
12802            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12803            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12804            //   envelope_size bytes, there is always sufficient room.
12805            fidl::encoding::encode_in_envelope_optional::<u8, D>(
12806                self.channel.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
12807                encoder,
12808                offset + cur_offset,
12809                depth,
12810            )?;
12811
12812            _prev_end_offset = cur_offset + envelope_size;
12813            if 6 > max_ordinal {
12814                return Ok(());
12815            }
12816
12817            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12818            // are envelope_size bytes.
12819            let cur_offset: usize = (6 - 1) * envelope_size;
12820
12821            // Zero reserved fields.
12822            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12823
12824            // Safety:
12825            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12826            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12827            //   envelope_size bytes, there is always sufficient room.
12828            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
12829                self.rsne.as_ref().map(
12830                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
12831                ),
12832                encoder,
12833                offset + cur_offset,
12834                depth,
12835            )?;
12836
12837            _prev_end_offset = cur_offset + envelope_size;
12838            if 7 > max_ordinal {
12839                return Ok(());
12840            }
12841
12842            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12843            // are envelope_size bytes.
12844            let cur_offset: usize = (7 - 1) * envelope_size;
12845
12846            // Zero reserved fields.
12847            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12848
12849            // Safety:
12850            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12851            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12852            //   envelope_size bytes, there is always sufficient room.
12853            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
12854                self.vendor_ie.as_ref().map(
12855                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
12856                ),
12857                encoder,
12858                offset + cur_offset,
12859                depth,
12860            )?;
12861
12862            _prev_end_offset = cur_offset + envelope_size;
12863
12864            Ok(())
12865        }
12866    }
12867
12868    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12869        for WlanFullmacImplStartBssRequest
12870    {
12871        #[inline(always)]
12872        fn new_empty() -> Self {
12873            Self::default()
12874        }
12875
12876        unsafe fn decode(
12877            &mut self,
12878            decoder: &mut fidl::encoding::Decoder<'_, D>,
12879            offset: usize,
12880            mut depth: fidl::encoding::Depth,
12881        ) -> fidl::Result<()> {
12882            decoder.debug_check_bounds::<Self>(offset);
12883            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12884                None => return Err(fidl::Error::NotNullable),
12885                Some(len) => len,
12886            };
12887            // Calling decoder.out_of_line_offset(0) is not allowed.
12888            if len == 0 {
12889                return Ok(());
12890            };
12891            depth.increment()?;
12892            let envelope_size = 8;
12893            let bytes_len = len * envelope_size;
12894            let offset = decoder.out_of_line_offset(bytes_len)?;
12895            // Decode the envelope for each type.
12896            let mut _next_ordinal_to_read = 0;
12897            let mut next_offset = offset;
12898            let end_offset = offset + bytes_len;
12899            _next_ordinal_to_read += 1;
12900            if next_offset >= end_offset {
12901                return Ok(());
12902            }
12903
12904            // Decode unknown envelopes for gaps in ordinals.
12905            while _next_ordinal_to_read < 1 {
12906                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12907                _next_ordinal_to_read += 1;
12908                next_offset += envelope_size;
12909            }
12910
12911            let next_out_of_line = decoder.next_out_of_line();
12912            let handles_before = decoder.remaining_handles();
12913            if let Some((inlined, num_bytes, num_handles)) =
12914                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12915            {
12916                let member_inline_size =
12917                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
12918                        decoder.context,
12919                    );
12920                if inlined != (member_inline_size <= 4) {
12921                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12922                }
12923                let inner_offset;
12924                let mut inner_depth = depth.clone();
12925                if inlined {
12926                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12927                    inner_offset = next_offset;
12928                } else {
12929                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12930                    inner_depth.increment()?;
12931                }
12932                let val_ref = self
12933                    .ssid
12934                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
12935                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
12936                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12937                {
12938                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12939                }
12940                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12941                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12942                }
12943            }
12944
12945            next_offset += envelope_size;
12946            _next_ordinal_to_read += 1;
12947            if next_offset >= end_offset {
12948                return Ok(());
12949            }
12950
12951            // Decode unknown envelopes for gaps in ordinals.
12952            while _next_ordinal_to_read < 2 {
12953                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12954                _next_ordinal_to_read += 1;
12955                next_offset += envelope_size;
12956            }
12957
12958            let next_out_of_line = decoder.next_out_of_line();
12959            let handles_before = decoder.remaining_handles();
12960            if let Some((inlined, num_bytes, num_handles)) =
12961                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12962            {
12963                let member_inline_size = <fidl_fuchsia_wlan_common__common::BssType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12964                if inlined != (member_inline_size <= 4) {
12965                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12966                }
12967                let inner_offset;
12968                let mut inner_depth = depth.clone();
12969                if inlined {
12970                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12971                    inner_offset = next_offset;
12972                } else {
12973                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12974                    inner_depth.increment()?;
12975                }
12976                let val_ref = self.bss_type.get_or_insert_with(|| {
12977                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssType, D)
12978                });
12979                fidl::decode!(
12980                    fidl_fuchsia_wlan_common__common::BssType,
12981                    D,
12982                    val_ref,
12983                    decoder,
12984                    inner_offset,
12985                    inner_depth
12986                )?;
12987                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12988                {
12989                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12990                }
12991                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12992                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12993                }
12994            }
12995
12996            next_offset += envelope_size;
12997            _next_ordinal_to_read += 1;
12998            if next_offset >= end_offset {
12999                return Ok(());
13000            }
13001
13002            // Decode unknown envelopes for gaps in ordinals.
13003            while _next_ordinal_to_read < 3 {
13004                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13005                _next_ordinal_to_read += 1;
13006                next_offset += envelope_size;
13007            }
13008
13009            let next_out_of_line = decoder.next_out_of_line();
13010            let handles_before = decoder.remaining_handles();
13011            if let Some((inlined, num_bytes, num_handles)) =
13012                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13013            {
13014                let member_inline_size =
13015                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13016                if inlined != (member_inline_size <= 4) {
13017                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13018                }
13019                let inner_offset;
13020                let mut inner_depth = depth.clone();
13021                if inlined {
13022                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13023                    inner_offset = next_offset;
13024                } else {
13025                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13026                    inner_depth.increment()?;
13027                }
13028                let val_ref = self.beacon_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
13029                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13030                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13031                {
13032                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13033                }
13034                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13035                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13036                }
13037            }
13038
13039            next_offset += envelope_size;
13040            _next_ordinal_to_read += 1;
13041            if next_offset >= end_offset {
13042                return Ok(());
13043            }
13044
13045            // Decode unknown envelopes for gaps in ordinals.
13046            while _next_ordinal_to_read < 4 {
13047                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13048                _next_ordinal_to_read += 1;
13049                next_offset += envelope_size;
13050            }
13051
13052            let next_out_of_line = decoder.next_out_of_line();
13053            let handles_before = decoder.remaining_handles();
13054            if let Some((inlined, num_bytes, num_handles)) =
13055                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13056            {
13057                let member_inline_size =
13058                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13059                if inlined != (member_inline_size <= 4) {
13060                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13061                }
13062                let inner_offset;
13063                let mut inner_depth = depth.clone();
13064                if inlined {
13065                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13066                    inner_offset = next_offset;
13067                } else {
13068                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13069                    inner_depth.increment()?;
13070                }
13071                let val_ref = self.dtim_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
13072                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13073                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13074                {
13075                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13076                }
13077                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13078                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13079                }
13080            }
13081
13082            next_offset += envelope_size;
13083            _next_ordinal_to_read += 1;
13084            if next_offset >= end_offset {
13085                return Ok(());
13086            }
13087
13088            // Decode unknown envelopes for gaps in ordinals.
13089            while _next_ordinal_to_read < 5 {
13090                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13091                _next_ordinal_to_read += 1;
13092                next_offset += envelope_size;
13093            }
13094
13095            let next_out_of_line = decoder.next_out_of_line();
13096            let handles_before = decoder.remaining_handles();
13097            if let Some((inlined, num_bytes, num_handles)) =
13098                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13099            {
13100                let member_inline_size =
13101                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13102                if inlined != (member_inline_size <= 4) {
13103                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13104                }
13105                let inner_offset;
13106                let mut inner_depth = depth.clone();
13107                if inlined {
13108                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13109                    inner_offset = next_offset;
13110                } else {
13111                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13112                    inner_depth.increment()?;
13113                }
13114                let val_ref = self.channel.get_or_insert_with(|| fidl::new_empty!(u8, D));
13115                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
13116                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13117                {
13118                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13119                }
13120                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13121                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13122                }
13123            }
13124
13125            next_offset += envelope_size;
13126            _next_ordinal_to_read += 1;
13127            if next_offset >= end_offset {
13128                return Ok(());
13129            }
13130
13131            // Decode unknown envelopes for gaps in ordinals.
13132            while _next_ordinal_to_read < 6 {
13133                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13134                _next_ordinal_to_read += 1;
13135                next_offset += envelope_size;
13136            }
13137
13138            let next_out_of_line = decoder.next_out_of_line();
13139            let handles_before = decoder.remaining_handles();
13140            if let Some((inlined, num_bytes, num_handles)) =
13141                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13142            {
13143                let member_inline_size =
13144                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
13145                        decoder.context,
13146                    );
13147                if inlined != (member_inline_size <= 4) {
13148                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13149                }
13150                let inner_offset;
13151                let mut inner_depth = depth.clone();
13152                if inlined {
13153                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13154                    inner_offset = next_offset;
13155                } else {
13156                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13157                    inner_depth.increment()?;
13158                }
13159                let val_ref = self
13160                    .rsne
13161                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
13162                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
13163                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13164                {
13165                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13166                }
13167                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13168                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13169                }
13170            }
13171
13172            next_offset += envelope_size;
13173            _next_ordinal_to_read += 1;
13174            if next_offset >= end_offset {
13175                return Ok(());
13176            }
13177
13178            // Decode unknown envelopes for gaps in ordinals.
13179            while _next_ordinal_to_read < 7 {
13180                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13181                _next_ordinal_to_read += 1;
13182                next_offset += envelope_size;
13183            }
13184
13185            let next_out_of_line = decoder.next_out_of_line();
13186            let handles_before = decoder.remaining_handles();
13187            if let Some((inlined, num_bytes, num_handles)) =
13188                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13189            {
13190                let member_inline_size =
13191                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
13192                        decoder.context,
13193                    );
13194                if inlined != (member_inline_size <= 4) {
13195                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13196                }
13197                let inner_offset;
13198                let mut inner_depth = depth.clone();
13199                if inlined {
13200                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13201                    inner_offset = next_offset;
13202                } else {
13203                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13204                    inner_depth.increment()?;
13205                }
13206                let val_ref = self
13207                    .vendor_ie
13208                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
13209                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
13210                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13211                {
13212                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13213                }
13214                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13215                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13216                }
13217            }
13218
13219            next_offset += envelope_size;
13220
13221            // Decode the remaining unknown envelopes.
13222            while next_offset < end_offset {
13223                _next_ordinal_to_read += 1;
13224                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13225                next_offset += envelope_size;
13226            }
13227
13228            Ok(())
13229        }
13230    }
13231
13232    impl WlanFullmacImplStartScanRequest {
13233        #[inline(always)]
13234        fn max_ordinal_present(&self) -> u64 {
13235            if let Some(_) = self.max_channel_time {
13236                return 6;
13237            }
13238            if let Some(_) = self.min_channel_time {
13239                return 5;
13240            }
13241            if let Some(_) = self.ssids {
13242                return 4;
13243            }
13244            if let Some(_) = self.channels {
13245                return 3;
13246            }
13247            if let Some(_) = self.scan_type {
13248                return 2;
13249            }
13250            if let Some(_) = self.txn_id {
13251                return 1;
13252            }
13253            0
13254        }
13255    }
13256
13257    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartScanRequest {
13258        type Borrowed<'a> = &'a Self;
13259        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13260            value
13261        }
13262    }
13263
13264    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartScanRequest {
13265        type Owned = Self;
13266
13267        #[inline(always)]
13268        fn inline_align(_context: fidl::encoding::Context) -> usize {
13269            8
13270        }
13271
13272        #[inline(always)]
13273        fn inline_size(_context: fidl::encoding::Context) -> usize {
13274            16
13275        }
13276    }
13277
13278    unsafe impl<D: fidl::encoding::ResourceDialect>
13279        fidl::encoding::Encode<WlanFullmacImplStartScanRequest, D>
13280        for &WlanFullmacImplStartScanRequest
13281    {
13282        unsafe fn encode(
13283            self,
13284            encoder: &mut fidl::encoding::Encoder<'_, D>,
13285            offset: usize,
13286            mut depth: fidl::encoding::Depth,
13287        ) -> fidl::Result<()> {
13288            encoder.debug_check_bounds::<WlanFullmacImplStartScanRequest>(offset);
13289            // Vector header
13290            let max_ordinal: u64 = self.max_ordinal_present();
13291            encoder.write_num(max_ordinal, offset);
13292            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13293            // Calling encoder.out_of_line_offset(0) is not allowed.
13294            if max_ordinal == 0 {
13295                return Ok(());
13296            }
13297            depth.increment()?;
13298            let envelope_size = 8;
13299            let bytes_len = max_ordinal as usize * envelope_size;
13300            #[allow(unused_variables)]
13301            let offset = encoder.out_of_line_offset(bytes_len);
13302            let mut _prev_end_offset: usize = 0;
13303            if 1 > max_ordinal {
13304                return Ok(());
13305            }
13306
13307            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13308            // are envelope_size bytes.
13309            let cur_offset: usize = (1 - 1) * envelope_size;
13310
13311            // Zero reserved fields.
13312            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13313
13314            // Safety:
13315            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13316            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13317            //   envelope_size bytes, there is always sufficient room.
13318            fidl::encoding::encode_in_envelope_optional::<u64, D>(
13319                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
13320                encoder,
13321                offset + cur_offset,
13322                depth,
13323            )?;
13324
13325            _prev_end_offset = cur_offset + envelope_size;
13326            if 2 > max_ordinal {
13327                return Ok(());
13328            }
13329
13330            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13331            // are envelope_size bytes.
13332            let cur_offset: usize = (2 - 1) * envelope_size;
13333
13334            // Zero reserved fields.
13335            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13336
13337            // Safety:
13338            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13339            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13340            //   envelope_size bytes, there is always sufficient room.
13341            fidl::encoding::encode_in_envelope_optional::<WlanScanType, D>(
13342                self.scan_type
13343                    .as_ref()
13344                    .map(<WlanScanType as fidl::encoding::ValueTypeMarker>::borrow),
13345                encoder,
13346                offset + cur_offset,
13347                depth,
13348            )?;
13349
13350            _prev_end_offset = cur_offset + envelope_size;
13351            if 3 > max_ordinal {
13352                return Ok(());
13353            }
13354
13355            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13356            // are envelope_size bytes.
13357            let cur_offset: usize = (3 - 1) * envelope_size;
13358
13359            // Zero reserved fields.
13360            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13361
13362            // Safety:
13363            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13364            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13365            //   envelope_size bytes, there is always sufficient room.
13366            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 256>, D>(
13367                self.channels.as_ref().map(
13368                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow,
13369                ),
13370                encoder,
13371                offset + cur_offset,
13372                depth,
13373            )?;
13374
13375            _prev_end_offset = cur_offset + envelope_size;
13376            if 4 > max_ordinal {
13377                return Ok(());
13378            }
13379
13380            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13381            // are envelope_size bytes.
13382            let cur_offset: usize = (4 - 1) * envelope_size;
13383
13384            // Zero reserved fields.
13385            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13386
13387            // Safety:
13388            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13389            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13390            //   envelope_size bytes, there is always sufficient room.
13391            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>(
13392            self.ssids.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow),
13393            encoder, offset + cur_offset, depth
13394        )?;
13395
13396            _prev_end_offset = cur_offset + envelope_size;
13397            if 5 > max_ordinal {
13398                return Ok(());
13399            }
13400
13401            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13402            // are envelope_size bytes.
13403            let cur_offset: usize = (5 - 1) * envelope_size;
13404
13405            // Zero reserved fields.
13406            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13407
13408            // Safety:
13409            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13410            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13411            //   envelope_size bytes, there is always sufficient room.
13412            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13413                self.min_channel_time
13414                    .as_ref()
13415                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13416                encoder,
13417                offset + cur_offset,
13418                depth,
13419            )?;
13420
13421            _prev_end_offset = cur_offset + envelope_size;
13422            if 6 > max_ordinal {
13423                return Ok(());
13424            }
13425
13426            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13427            // are envelope_size bytes.
13428            let cur_offset: usize = (6 - 1) * envelope_size;
13429
13430            // Zero reserved fields.
13431            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13432
13433            // Safety:
13434            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13435            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13436            //   envelope_size bytes, there is always sufficient room.
13437            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13438                self.max_channel_time
13439                    .as_ref()
13440                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13441                encoder,
13442                offset + cur_offset,
13443                depth,
13444            )?;
13445
13446            _prev_end_offset = cur_offset + envelope_size;
13447
13448            Ok(())
13449        }
13450    }
13451
13452    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13453        for WlanFullmacImplStartScanRequest
13454    {
13455        #[inline(always)]
13456        fn new_empty() -> Self {
13457            Self::default()
13458        }
13459
13460        unsafe fn decode(
13461            &mut self,
13462            decoder: &mut fidl::encoding::Decoder<'_, D>,
13463            offset: usize,
13464            mut depth: fidl::encoding::Depth,
13465        ) -> fidl::Result<()> {
13466            decoder.debug_check_bounds::<Self>(offset);
13467            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13468                None => return Err(fidl::Error::NotNullable),
13469                Some(len) => len,
13470            };
13471            // Calling decoder.out_of_line_offset(0) is not allowed.
13472            if len == 0 {
13473                return Ok(());
13474            };
13475            depth.increment()?;
13476            let envelope_size = 8;
13477            let bytes_len = len * envelope_size;
13478            let offset = decoder.out_of_line_offset(bytes_len)?;
13479            // Decode the envelope for each type.
13480            let mut _next_ordinal_to_read = 0;
13481            let mut next_offset = offset;
13482            let end_offset = offset + bytes_len;
13483            _next_ordinal_to_read += 1;
13484            if next_offset >= end_offset {
13485                return Ok(());
13486            }
13487
13488            // Decode unknown envelopes for gaps in ordinals.
13489            while _next_ordinal_to_read < 1 {
13490                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13491                _next_ordinal_to_read += 1;
13492                next_offset += envelope_size;
13493            }
13494
13495            let next_out_of_line = decoder.next_out_of_line();
13496            let handles_before = decoder.remaining_handles();
13497            if let Some((inlined, num_bytes, num_handles)) =
13498                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13499            {
13500                let member_inline_size =
13501                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13502                if inlined != (member_inline_size <= 4) {
13503                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13504                }
13505                let inner_offset;
13506                let mut inner_depth = depth.clone();
13507                if inlined {
13508                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13509                    inner_offset = next_offset;
13510                } else {
13511                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13512                    inner_depth.increment()?;
13513                }
13514                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
13515                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
13516                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13517                {
13518                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13519                }
13520                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13521                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13522                }
13523            }
13524
13525            next_offset += envelope_size;
13526            _next_ordinal_to_read += 1;
13527            if next_offset >= end_offset {
13528                return Ok(());
13529            }
13530
13531            // Decode unknown envelopes for gaps in ordinals.
13532            while _next_ordinal_to_read < 2 {
13533                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13534                _next_ordinal_to_read += 1;
13535                next_offset += envelope_size;
13536            }
13537
13538            let next_out_of_line = decoder.next_out_of_line();
13539            let handles_before = decoder.remaining_handles();
13540            if let Some((inlined, num_bytes, num_handles)) =
13541                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13542            {
13543                let member_inline_size =
13544                    <WlanScanType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13545                if inlined != (member_inline_size <= 4) {
13546                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13547                }
13548                let inner_offset;
13549                let mut inner_depth = depth.clone();
13550                if inlined {
13551                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13552                    inner_offset = next_offset;
13553                } else {
13554                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13555                    inner_depth.increment()?;
13556                }
13557                let val_ref =
13558                    self.scan_type.get_or_insert_with(|| fidl::new_empty!(WlanScanType, D));
13559                fidl::decode!(WlanScanType, D, val_ref, decoder, inner_offset, inner_depth)?;
13560                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13561                {
13562                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13563                }
13564                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13565                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13566                }
13567            }
13568
13569            next_offset += envelope_size;
13570            _next_ordinal_to_read += 1;
13571            if next_offset >= end_offset {
13572                return Ok(());
13573            }
13574
13575            // Decode unknown envelopes for gaps in ordinals.
13576            while _next_ordinal_to_read < 3 {
13577                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13578                _next_ordinal_to_read += 1;
13579                next_offset += envelope_size;
13580            }
13581
13582            let next_out_of_line = decoder.next_out_of_line();
13583            let handles_before = decoder.remaining_handles();
13584            if let Some((inlined, num_bytes, num_handles)) =
13585                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13586            {
13587                let member_inline_size =
13588                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::TypeMarker>::inline_size(
13589                        decoder.context,
13590                    );
13591                if inlined != (member_inline_size <= 4) {
13592                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13593                }
13594                let inner_offset;
13595                let mut inner_depth = depth.clone();
13596                if inlined {
13597                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13598                    inner_offset = next_offset;
13599                } else {
13600                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13601                    inner_depth.increment()?;
13602                }
13603                let val_ref = self
13604                    .channels
13605                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D));
13606                fidl::decode!(fidl::encoding::Vector<u8, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
13607                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13608                {
13609                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13610                }
13611                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13612                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13613                }
13614            }
13615
13616            next_offset += envelope_size;
13617            _next_ordinal_to_read += 1;
13618            if next_offset >= end_offset {
13619                return Ok(());
13620            }
13621
13622            // Decode unknown envelopes for gaps in ordinals.
13623            while _next_ordinal_to_read < 4 {
13624                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13625                _next_ordinal_to_read += 1;
13626                next_offset += envelope_size;
13627            }
13628
13629            let next_out_of_line = decoder.next_out_of_line();
13630            let handles_before = decoder.remaining_handles();
13631            if let Some((inlined, num_bytes, num_handles)) =
13632                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13633            {
13634                let member_inline_size = <fidl::encoding::UnboundedVector<
13635                    fidl::encoding::Vector<u8, 32>,
13636                > as fidl::encoding::TypeMarker>::inline_size(
13637                    decoder.context
13638                );
13639                if inlined != (member_inline_size <= 4) {
13640                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13641                }
13642                let inner_offset;
13643                let mut inner_depth = depth.clone();
13644                if inlined {
13645                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13646                    inner_offset = next_offset;
13647                } else {
13648                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13649                    inner_depth.increment()?;
13650                }
13651                let val_ref = self.ssids.get_or_insert_with(|| {
13652                    fidl::new_empty!(
13653                        fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
13654                        D
13655                    )
13656                });
13657                fidl::decode!(
13658                    fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
13659                    D,
13660                    val_ref,
13661                    decoder,
13662                    inner_offset,
13663                    inner_depth
13664                )?;
13665                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13666                {
13667                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13668                }
13669                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13670                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13671                }
13672            }
13673
13674            next_offset += envelope_size;
13675            _next_ordinal_to_read += 1;
13676            if next_offset >= end_offset {
13677                return Ok(());
13678            }
13679
13680            // Decode unknown envelopes for gaps in ordinals.
13681            while _next_ordinal_to_read < 5 {
13682                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13683                _next_ordinal_to_read += 1;
13684                next_offset += envelope_size;
13685            }
13686
13687            let next_out_of_line = decoder.next_out_of_line();
13688            let handles_before = decoder.remaining_handles();
13689            if let Some((inlined, num_bytes, num_handles)) =
13690                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13691            {
13692                let member_inline_size =
13693                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13694                if inlined != (member_inline_size <= 4) {
13695                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13696                }
13697                let inner_offset;
13698                let mut inner_depth = depth.clone();
13699                if inlined {
13700                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13701                    inner_offset = next_offset;
13702                } else {
13703                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13704                    inner_depth.increment()?;
13705                }
13706                let val_ref = self.min_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
13707                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13708                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13709                {
13710                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13711                }
13712                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13713                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13714                }
13715            }
13716
13717            next_offset += envelope_size;
13718            _next_ordinal_to_read += 1;
13719            if next_offset >= end_offset {
13720                return Ok(());
13721            }
13722
13723            // Decode unknown envelopes for gaps in ordinals.
13724            while _next_ordinal_to_read < 6 {
13725                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13726                _next_ordinal_to_read += 1;
13727                next_offset += envelope_size;
13728            }
13729
13730            let next_out_of_line = decoder.next_out_of_line();
13731            let handles_before = decoder.remaining_handles();
13732            if let Some((inlined, num_bytes, num_handles)) =
13733                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13734            {
13735                let member_inline_size =
13736                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13737                if inlined != (member_inline_size <= 4) {
13738                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13739                }
13740                let inner_offset;
13741                let mut inner_depth = depth.clone();
13742                if inlined {
13743                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13744                    inner_offset = next_offset;
13745                } else {
13746                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13747                    inner_depth.increment()?;
13748                }
13749                let val_ref = self.max_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
13750                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13751                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13752                {
13753                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13754                }
13755                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13756                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13757                }
13758            }
13759
13760            next_offset += envelope_size;
13761
13762            // Decode the remaining unknown envelopes.
13763            while next_offset < end_offset {
13764                _next_ordinal_to_read += 1;
13765                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13766                next_offset += envelope_size;
13767            }
13768
13769            Ok(())
13770        }
13771    }
13772
13773    impl WlanFullmacImplStopBssRequest {
13774        #[inline(always)]
13775        fn max_ordinal_present(&self) -> u64 {
13776            if let Some(_) = self.ssid {
13777                return 1;
13778            }
13779            0
13780        }
13781    }
13782
13783    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStopBssRequest {
13784        type Borrowed<'a> = &'a Self;
13785        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13786            value
13787        }
13788    }
13789
13790    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStopBssRequest {
13791        type Owned = Self;
13792
13793        #[inline(always)]
13794        fn inline_align(_context: fidl::encoding::Context) -> usize {
13795            8
13796        }
13797
13798        #[inline(always)]
13799        fn inline_size(_context: fidl::encoding::Context) -> usize {
13800            16
13801        }
13802    }
13803
13804    unsafe impl<D: fidl::encoding::ResourceDialect>
13805        fidl::encoding::Encode<WlanFullmacImplStopBssRequest, D>
13806        for &WlanFullmacImplStopBssRequest
13807    {
13808        unsafe fn encode(
13809            self,
13810            encoder: &mut fidl::encoding::Encoder<'_, D>,
13811            offset: usize,
13812            mut depth: fidl::encoding::Depth,
13813        ) -> fidl::Result<()> {
13814            encoder.debug_check_bounds::<WlanFullmacImplStopBssRequest>(offset);
13815            // Vector header
13816            let max_ordinal: u64 = self.max_ordinal_present();
13817            encoder.write_num(max_ordinal, offset);
13818            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13819            // Calling encoder.out_of_line_offset(0) is not allowed.
13820            if max_ordinal == 0 {
13821                return Ok(());
13822            }
13823            depth.increment()?;
13824            let envelope_size = 8;
13825            let bytes_len = max_ordinal as usize * envelope_size;
13826            #[allow(unused_variables)]
13827            let offset = encoder.out_of_line_offset(bytes_len);
13828            let mut _prev_end_offset: usize = 0;
13829            if 1 > max_ordinal {
13830                return Ok(());
13831            }
13832
13833            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13834            // are envelope_size bytes.
13835            let cur_offset: usize = (1 - 1) * envelope_size;
13836
13837            // Zero reserved fields.
13838            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13839
13840            // Safety:
13841            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13842            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13843            //   envelope_size bytes, there is always sufficient room.
13844            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
13845                self.ssid.as_ref().map(
13846                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
13847                ),
13848                encoder,
13849                offset + cur_offset,
13850                depth,
13851            )?;
13852
13853            _prev_end_offset = cur_offset + envelope_size;
13854
13855            Ok(())
13856        }
13857    }
13858
13859    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13860        for WlanFullmacImplStopBssRequest
13861    {
13862        #[inline(always)]
13863        fn new_empty() -> Self {
13864            Self::default()
13865        }
13866
13867        unsafe fn decode(
13868            &mut self,
13869            decoder: &mut fidl::encoding::Decoder<'_, D>,
13870            offset: usize,
13871            mut depth: fidl::encoding::Depth,
13872        ) -> fidl::Result<()> {
13873            decoder.debug_check_bounds::<Self>(offset);
13874            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13875                None => return Err(fidl::Error::NotNullable),
13876                Some(len) => len,
13877            };
13878            // Calling decoder.out_of_line_offset(0) is not allowed.
13879            if len == 0 {
13880                return Ok(());
13881            };
13882            depth.increment()?;
13883            let envelope_size = 8;
13884            let bytes_len = len * envelope_size;
13885            let offset = decoder.out_of_line_offset(bytes_len)?;
13886            // Decode the envelope for each type.
13887            let mut _next_ordinal_to_read = 0;
13888            let mut next_offset = offset;
13889            let end_offset = offset + bytes_len;
13890            _next_ordinal_to_read += 1;
13891            if next_offset >= end_offset {
13892                return Ok(());
13893            }
13894
13895            // Decode unknown envelopes for gaps in ordinals.
13896            while _next_ordinal_to_read < 1 {
13897                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13898                _next_ordinal_to_read += 1;
13899                next_offset += envelope_size;
13900            }
13901
13902            let next_out_of_line = decoder.next_out_of_line();
13903            let handles_before = decoder.remaining_handles();
13904            if let Some((inlined, num_bytes, num_handles)) =
13905                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13906            {
13907                let member_inline_size =
13908                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
13909                        decoder.context,
13910                    );
13911                if inlined != (member_inline_size <= 4) {
13912                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13913                }
13914                let inner_offset;
13915                let mut inner_depth = depth.clone();
13916                if inlined {
13917                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13918                    inner_offset = next_offset;
13919                } else {
13920                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13921                    inner_depth.increment()?;
13922                }
13923                let val_ref = self
13924                    .ssid
13925                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
13926                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
13927                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13928                {
13929                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13930                }
13931                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13932                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13933                }
13934            }
13935
13936            next_offset += envelope_size;
13937
13938            // Decode the remaining unknown envelopes.
13939            while next_offset < end_offset {
13940                _next_ordinal_to_read += 1;
13941                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13942                next_offset += envelope_size;
13943            }
13944
13945            Ok(())
13946        }
13947    }
13948
13949    impl WlanFullmacImplQueryResponse {
13950        #[inline(always)]
13951        fn max_ordinal_present(&self) -> u64 {
13952            if let Some(_) = self.factory_addr {
13953                return 4;
13954            }
13955            if let Some(_) = self.band_caps {
13956                return 3;
13957            }
13958            if let Some(_) = self.role {
13959                return 2;
13960            }
13961            if let Some(_) = self.sta_addr {
13962                return 1;
13963            }
13964            0
13965        }
13966    }
13967
13968    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryResponse {
13969        type Borrowed<'a> = &'a Self;
13970        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13971            value
13972        }
13973    }
13974
13975    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryResponse {
13976        type Owned = Self;
13977
13978        #[inline(always)]
13979        fn inline_align(_context: fidl::encoding::Context) -> usize {
13980            8
13981        }
13982
13983        #[inline(always)]
13984        fn inline_size(_context: fidl::encoding::Context) -> usize {
13985            16
13986        }
13987    }
13988
13989    unsafe impl<D: fidl::encoding::ResourceDialect>
13990        fidl::encoding::Encode<WlanFullmacImplQueryResponse, D> for &WlanFullmacImplQueryResponse
13991    {
13992        unsafe fn encode(
13993            self,
13994            encoder: &mut fidl::encoding::Encoder<'_, D>,
13995            offset: usize,
13996            mut depth: fidl::encoding::Depth,
13997        ) -> fidl::Result<()> {
13998            encoder.debug_check_bounds::<WlanFullmacImplQueryResponse>(offset);
13999            // Vector header
14000            let max_ordinal: u64 = self.max_ordinal_present();
14001            encoder.write_num(max_ordinal, offset);
14002            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14003            // Calling encoder.out_of_line_offset(0) is not allowed.
14004            if max_ordinal == 0 {
14005                return Ok(());
14006            }
14007            depth.increment()?;
14008            let envelope_size = 8;
14009            let bytes_len = max_ordinal as usize * envelope_size;
14010            #[allow(unused_variables)]
14011            let offset = encoder.out_of_line_offset(bytes_len);
14012            let mut _prev_end_offset: usize = 0;
14013            if 1 > max_ordinal {
14014                return Ok(());
14015            }
14016
14017            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14018            // are envelope_size bytes.
14019            let cur_offset: usize = (1 - 1) * envelope_size;
14020
14021            // Zero reserved fields.
14022            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14023
14024            // Safety:
14025            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14026            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14027            //   envelope_size bytes, there is always sufficient room.
14028            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
14029                self.sta_addr
14030                    .as_ref()
14031                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
14032                encoder,
14033                offset + cur_offset,
14034                depth,
14035            )?;
14036
14037            _prev_end_offset = cur_offset + envelope_size;
14038            if 2 > max_ordinal {
14039                return Ok(());
14040            }
14041
14042            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14043            // are envelope_size bytes.
14044            let cur_offset: usize = (2 - 1) * envelope_size;
14045
14046            // Zero reserved fields.
14047            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14048
14049            // Safety:
14050            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14051            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14052            //   envelope_size bytes, there is always sufficient room.
14053            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common__common::WlanMacRole, D>(
14054            self.role.as_ref().map(<fidl_fuchsia_wlan_common__common::WlanMacRole as fidl::encoding::ValueTypeMarker>::borrow),
14055            encoder, offset + cur_offset, depth
14056        )?;
14057
14058            _prev_end_offset = cur_offset + envelope_size;
14059            if 3 > max_ordinal {
14060                return Ok(());
14061            }
14062
14063            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14064            // are envelope_size bytes.
14065            let cur_offset: usize = (3 - 1) * envelope_size;
14066
14067            // Zero reserved fields.
14068            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14069
14070            // Safety:
14071            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14072            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14073            //   envelope_size bytes, there is always sufficient room.
14074            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BandCapability, 16>, D>(
14075            self.band_caps.as_ref().map(<fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::ValueTypeMarker>::borrow),
14076            encoder, offset + cur_offset, depth
14077        )?;
14078
14079            _prev_end_offset = cur_offset + envelope_size;
14080            if 4 > max_ordinal {
14081                return Ok(());
14082            }
14083
14084            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14085            // are envelope_size bytes.
14086            let cur_offset: usize = (4 - 1) * envelope_size;
14087
14088            // Zero reserved fields.
14089            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14090
14091            // Safety:
14092            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14093            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14094            //   envelope_size bytes, there is always sufficient room.
14095            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
14096                self.factory_addr
14097                    .as_ref()
14098                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
14099                encoder,
14100                offset + cur_offset,
14101                depth,
14102            )?;
14103
14104            _prev_end_offset = cur_offset + envelope_size;
14105
14106            Ok(())
14107        }
14108    }
14109
14110    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14111        for WlanFullmacImplQueryResponse
14112    {
14113        #[inline(always)]
14114        fn new_empty() -> Self {
14115            Self::default()
14116        }
14117
14118        unsafe fn decode(
14119            &mut self,
14120            decoder: &mut fidl::encoding::Decoder<'_, D>,
14121            offset: usize,
14122            mut depth: fidl::encoding::Depth,
14123        ) -> fidl::Result<()> {
14124            decoder.debug_check_bounds::<Self>(offset);
14125            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14126                None => return Err(fidl::Error::NotNullable),
14127                Some(len) => len,
14128            };
14129            // Calling decoder.out_of_line_offset(0) is not allowed.
14130            if len == 0 {
14131                return Ok(());
14132            };
14133            depth.increment()?;
14134            let envelope_size = 8;
14135            let bytes_len = len * envelope_size;
14136            let offset = decoder.out_of_line_offset(bytes_len)?;
14137            // Decode the envelope for each type.
14138            let mut _next_ordinal_to_read = 0;
14139            let mut next_offset = offset;
14140            let end_offset = offset + bytes_len;
14141            _next_ordinal_to_read += 1;
14142            if next_offset >= end_offset {
14143                return Ok(());
14144            }
14145
14146            // Decode unknown envelopes for gaps in ordinals.
14147            while _next_ordinal_to_read < 1 {
14148                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14149                _next_ordinal_to_read += 1;
14150                next_offset += envelope_size;
14151            }
14152
14153            let next_out_of_line = decoder.next_out_of_line();
14154            let handles_before = decoder.remaining_handles();
14155            if let Some((inlined, num_bytes, num_handles)) =
14156                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14157            {
14158                let member_inline_size =
14159                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
14160                        decoder.context,
14161                    );
14162                if inlined != (member_inline_size <= 4) {
14163                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14164                }
14165                let inner_offset;
14166                let mut inner_depth = depth.clone();
14167                if inlined {
14168                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14169                    inner_offset = next_offset;
14170                } else {
14171                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14172                    inner_depth.increment()?;
14173                }
14174                let val_ref = self
14175                    .sta_addr
14176                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
14177                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
14178                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14179                {
14180                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14181                }
14182                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14183                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14184                }
14185            }
14186
14187            next_offset += envelope_size;
14188            _next_ordinal_to_read += 1;
14189            if next_offset >= end_offset {
14190                return Ok(());
14191            }
14192
14193            // Decode unknown envelopes for gaps in ordinals.
14194            while _next_ordinal_to_read < 2 {
14195                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14196                _next_ordinal_to_read += 1;
14197                next_offset += envelope_size;
14198            }
14199
14200            let next_out_of_line = decoder.next_out_of_line();
14201            let handles_before = decoder.remaining_handles();
14202            if let Some((inlined, num_bytes, num_handles)) =
14203                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14204            {
14205                let member_inline_size = <fidl_fuchsia_wlan_common__common::WlanMacRole as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14206                if inlined != (member_inline_size <= 4) {
14207                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14208                }
14209                let inner_offset;
14210                let mut inner_depth = depth.clone();
14211                if inlined {
14212                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14213                    inner_offset = next_offset;
14214                } else {
14215                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14216                    inner_depth.increment()?;
14217                }
14218                let val_ref = self.role.get_or_insert_with(|| {
14219                    fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanMacRole, D)
14220                });
14221                fidl::decode!(
14222                    fidl_fuchsia_wlan_common__common::WlanMacRole,
14223                    D,
14224                    val_ref,
14225                    decoder,
14226                    inner_offset,
14227                    inner_depth
14228                )?;
14229                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14230                {
14231                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14232                }
14233                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14234                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14235                }
14236            }
14237
14238            next_offset += envelope_size;
14239            _next_ordinal_to_read += 1;
14240            if next_offset >= end_offset {
14241                return Ok(());
14242            }
14243
14244            // Decode unknown envelopes for gaps in ordinals.
14245            while _next_ordinal_to_read < 3 {
14246                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14247                _next_ordinal_to_read += 1;
14248                next_offset += envelope_size;
14249            }
14250
14251            let next_out_of_line = decoder.next_out_of_line();
14252            let handles_before = decoder.remaining_handles();
14253            if let Some((inlined, num_bytes, num_handles)) =
14254                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14255            {
14256                let member_inline_size = <fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14257                if inlined != (member_inline_size <= 4) {
14258                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14259                }
14260                let inner_offset;
14261                let mut inner_depth = depth.clone();
14262                if inlined {
14263                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14264                    inner_offset = next_offset;
14265                } else {
14266                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14267                    inner_depth.increment()?;
14268                }
14269                let val_ref = self.band_caps.get_or_insert_with(
14270                    || fidl::new_empty!(fidl::encoding::Vector<BandCapability, 16>, D),
14271                );
14272                fidl::decode!(fidl::encoding::Vector<BandCapability, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
14273                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14274                {
14275                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14276                }
14277                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14278                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14279                }
14280            }
14281
14282            next_offset += envelope_size;
14283            _next_ordinal_to_read += 1;
14284            if next_offset >= end_offset {
14285                return Ok(());
14286            }
14287
14288            // Decode unknown envelopes for gaps in ordinals.
14289            while _next_ordinal_to_read < 4 {
14290                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14291                _next_ordinal_to_read += 1;
14292                next_offset += envelope_size;
14293            }
14294
14295            let next_out_of_line = decoder.next_out_of_line();
14296            let handles_before = decoder.remaining_handles();
14297            if let Some((inlined, num_bytes, num_handles)) =
14298                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14299            {
14300                let member_inline_size =
14301                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
14302                        decoder.context,
14303                    );
14304                if inlined != (member_inline_size <= 4) {
14305                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14306                }
14307                let inner_offset;
14308                let mut inner_depth = depth.clone();
14309                if inlined {
14310                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14311                    inner_offset = next_offset;
14312                } else {
14313                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14314                    inner_depth.increment()?;
14315                }
14316                let val_ref = self
14317                    .factory_addr
14318                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
14319                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
14320                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14321                {
14322                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14323                }
14324                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14325                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14326                }
14327            }
14328
14329            next_offset += envelope_size;
14330
14331            // Decode the remaining unknown envelopes.
14332            while next_offset < end_offset {
14333                _next_ordinal_to_read += 1;
14334                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14335                next_offset += envelope_size;
14336            }
14337
14338            Ok(())
14339        }
14340    }
14341}