Skip to main content

fidl_fuchsia_wlan_fullmac_common/
fidl_fuchsia_wlan_fullmac_common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11pub const WLAN_MAX_KEYLIST_SIZE: u32 = 4;
12
13/// Max length for vendor IEs to be added to the association request. This is currently
14/// used for WPA.
15pub const WLAN_VIE_MAX_LEN: u32 = 514;
16
17#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
18pub enum EapolTxResult {
19    Success,
20    TransmissionFailure,
21    #[doc(hidden)]
22    __SourceBreaking {
23        unknown_ordinal: u8,
24    },
25}
26
27/// Pattern that matches an unknown `EapolTxResult` member.
28#[macro_export]
29macro_rules! EapolTxResultUnknown {
30    () => {
31        _
32    };
33}
34
35impl EapolTxResult {
36    #[inline]
37    pub fn from_primitive(prim: u8) -> Option<Self> {
38        match prim {
39            0 => Some(Self::Success),
40            1 => Some(Self::TransmissionFailure),
41            _ => None,
42        }
43    }
44
45    #[inline]
46    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
47        match prim {
48            0 => Self::Success,
49            1 => Self::TransmissionFailure,
50            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
51        }
52    }
53
54    #[inline]
55    pub fn unknown() -> Self {
56        Self::__SourceBreaking { unknown_ordinal: 0xff }
57    }
58
59    #[inline]
60    pub const fn into_primitive(self) -> u8 {
61        match self {
62            Self::Success => 0,
63            Self::TransmissionFailure => 1,
64            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
65        }
66    }
67
68    #[inline]
69    pub fn is_unknown(&self) -> bool {
70        match self {
71            Self::__SourceBreaking { unknown_ordinal: _ } => true,
72            _ => false,
73        }
74    }
75}
76
77#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
78pub enum StartResult {
79    Success,
80    BssAlreadyStartedOrJoined,
81    ResetRequiredBeforeStart,
82    NotSupported,
83    #[doc(hidden)]
84    __SourceBreaking {
85        unknown_ordinal: u8,
86    },
87}
88
89/// Pattern that matches an unknown `StartResult` member.
90#[macro_export]
91macro_rules! StartResultUnknown {
92    () => {
93        _
94    };
95}
96
97impl StartResult {
98    #[inline]
99    pub fn from_primitive(prim: u8) -> Option<Self> {
100        match prim {
101            0 => Some(Self::Success),
102            1 => Some(Self::BssAlreadyStartedOrJoined),
103            2 => Some(Self::ResetRequiredBeforeStart),
104            3 => Some(Self::NotSupported),
105            _ => None,
106        }
107    }
108
109    #[inline]
110    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
111        match prim {
112            0 => Self::Success,
113            1 => Self::BssAlreadyStartedOrJoined,
114            2 => Self::ResetRequiredBeforeStart,
115            3 => Self::NotSupported,
116            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
117        }
118    }
119
120    #[inline]
121    pub fn unknown() -> Self {
122        Self::__SourceBreaking { unknown_ordinal: 0xff }
123    }
124
125    #[inline]
126    pub const fn into_primitive(self) -> u8 {
127        match self {
128            Self::Success => 0,
129            Self::BssAlreadyStartedOrJoined => 1,
130            Self::ResetRequiredBeforeStart => 2,
131            Self::NotSupported => 3,
132            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
133        }
134    }
135
136    #[inline]
137    pub fn is_unknown(&self) -> bool {
138        match self {
139            Self::__SourceBreaking { unknown_ordinal: _ } => true,
140            _ => false,
141        }
142    }
143}
144
145#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
146pub enum StopResult {
147    Success,
148    BssAlreadyStopped,
149    InternalError,
150    #[doc(hidden)]
151    __SourceBreaking {
152        unknown_ordinal: u8,
153    },
154}
155
156/// Pattern that matches an unknown `StopResult` member.
157#[macro_export]
158macro_rules! StopResultUnknown {
159    () => {
160        _
161    };
162}
163
164impl StopResult {
165    #[inline]
166    pub fn from_primitive(prim: u8) -> Option<Self> {
167        match prim {
168            0 => Some(Self::Success),
169            1 => Some(Self::BssAlreadyStopped),
170            2 => Some(Self::InternalError),
171            _ => None,
172        }
173    }
174
175    #[inline]
176    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
177        match prim {
178            0 => Self::Success,
179            1 => Self::BssAlreadyStopped,
180            2 => Self::InternalError,
181            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
182        }
183    }
184
185    #[inline]
186    pub fn unknown() -> Self {
187        Self::__SourceBreaking { unknown_ordinal: 0xff }
188    }
189
190    #[inline]
191    pub const fn into_primitive(self) -> u8 {
192        match self {
193            Self::Success => 0,
194            Self::BssAlreadyStopped => 1,
195            Self::InternalError => 2,
196            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
197        }
198    }
199
200    #[inline]
201    pub fn is_unknown(&self) -> bool {
202        match self {
203            Self::__SourceBreaking { unknown_ordinal: _ } => true,
204            _ => false,
205        }
206    }
207}
208
209#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
210pub enum WlanAssocResult {
211    Success,
212    RefusedReasonUnspecified,
213    RefusedNotAuthenticated,
214    RefusedCapabilitiesMismatch,
215    RefusedExternalReason,
216    RefusedApOutOfMemory,
217    RefusedBasicRatesMismatch,
218    RejectedEmergencyServicesNotSupported,
219    RefusedTemporarily,
220    #[doc(hidden)]
221    __SourceBreaking {
222        unknown_ordinal: u8,
223    },
224}
225
226/// Pattern that matches an unknown `WlanAssocResult` member.
227#[macro_export]
228macro_rules! WlanAssocResultUnknown {
229    () => {
230        _
231    };
232}
233
234impl WlanAssocResult {
235    #[inline]
236    pub fn from_primitive(prim: u8) -> Option<Self> {
237        match prim {
238            0 => Some(Self::Success),
239            1 => Some(Self::RefusedReasonUnspecified),
240            2 => Some(Self::RefusedNotAuthenticated),
241            3 => Some(Self::RefusedCapabilitiesMismatch),
242            4 => Some(Self::RefusedExternalReason),
243            5 => Some(Self::RefusedApOutOfMemory),
244            6 => Some(Self::RefusedBasicRatesMismatch),
245            7 => Some(Self::RejectedEmergencyServicesNotSupported),
246            8 => Some(Self::RefusedTemporarily),
247            _ => None,
248        }
249    }
250
251    #[inline]
252    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
253        match prim {
254            0 => Self::Success,
255            1 => Self::RefusedReasonUnspecified,
256            2 => Self::RefusedNotAuthenticated,
257            3 => Self::RefusedCapabilitiesMismatch,
258            4 => Self::RefusedExternalReason,
259            5 => Self::RefusedApOutOfMemory,
260            6 => Self::RefusedBasicRatesMismatch,
261            7 => Self::RejectedEmergencyServicesNotSupported,
262            8 => Self::RefusedTemporarily,
263            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
264        }
265    }
266
267    #[inline]
268    pub fn unknown() -> Self {
269        Self::__SourceBreaking { unknown_ordinal: 0xff }
270    }
271
272    #[inline]
273    pub const fn into_primitive(self) -> u8 {
274        match self {
275            Self::Success => 0,
276            Self::RefusedReasonUnspecified => 1,
277            Self::RefusedNotAuthenticated => 2,
278            Self::RefusedCapabilitiesMismatch => 3,
279            Self::RefusedExternalReason => 4,
280            Self::RefusedApOutOfMemory => 5,
281            Self::RefusedBasicRatesMismatch => 6,
282            Self::RejectedEmergencyServicesNotSupported => 7,
283            Self::RefusedTemporarily => 8,
284            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
285        }
286    }
287
288    #[inline]
289    pub fn is_unknown(&self) -> bool {
290        match self {
291            Self::__SourceBreaking { unknown_ordinal: _ } => true,
292            _ => false,
293        }
294    }
295}
296
297#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
298pub enum WlanAuthResult {
299    Success,
300    Refused,
301    AntiCloggingTokenRequired,
302    FiniteCyclicGroupNotSupported,
303    Rejected,
304    FailureTimeout,
305    #[doc(hidden)]
306    __SourceBreaking {
307        unknown_ordinal: u8,
308    },
309}
310
311/// Pattern that matches an unknown `WlanAuthResult` member.
312#[macro_export]
313macro_rules! WlanAuthResultUnknown {
314    () => {
315        _
316    };
317}
318
319impl WlanAuthResult {
320    #[inline]
321    pub fn from_primitive(prim: u8) -> Option<Self> {
322        match prim {
323            0 => Some(Self::Success),
324            1 => Some(Self::Refused),
325            2 => Some(Self::AntiCloggingTokenRequired),
326            3 => Some(Self::FiniteCyclicGroupNotSupported),
327            4 => Some(Self::Rejected),
328            5 => Some(Self::FailureTimeout),
329            _ => None,
330        }
331    }
332
333    #[inline]
334    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
335        match prim {
336            0 => Self::Success,
337            1 => Self::Refused,
338            2 => Self::AntiCloggingTokenRequired,
339            3 => Self::FiniteCyclicGroupNotSupported,
340            4 => Self::Rejected,
341            5 => Self::FailureTimeout,
342            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
343        }
344    }
345
346    #[inline]
347    pub fn unknown() -> Self {
348        Self::__SourceBreaking { unknown_ordinal: 0xff }
349    }
350
351    #[inline]
352    pub const fn into_primitive(self) -> u8 {
353        match self {
354            Self::Success => 0,
355            Self::Refused => 1,
356            Self::AntiCloggingTokenRequired => 2,
357            Self::FiniteCyclicGroupNotSupported => 3,
358            Self::Rejected => 4,
359            Self::FailureTimeout => 5,
360            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
361        }
362    }
363
364    #[inline]
365    pub fn is_unknown(&self) -> bool {
366        match self {
367            Self::__SourceBreaking { unknown_ordinal: _ } => true,
368            _ => false,
369        }
370    }
371}
372
373#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
374pub enum WlanAuthType {
375    OpenSystem,
376    SharedKey,
377    FastBssTransition,
378    Sae,
379    #[doc(hidden)]
380    __SourceBreaking {
381        unknown_ordinal: u8,
382    },
383}
384
385/// Pattern that matches an unknown `WlanAuthType` member.
386#[macro_export]
387macro_rules! WlanAuthTypeUnknown {
388    () => {
389        _
390    };
391}
392
393impl WlanAuthType {
394    #[inline]
395    pub fn from_primitive(prim: u8) -> Option<Self> {
396        match prim {
397            1 => Some(Self::OpenSystem),
398            2 => Some(Self::SharedKey),
399            3 => Some(Self::FastBssTransition),
400            4 => Some(Self::Sae),
401            _ => None,
402        }
403    }
404
405    #[inline]
406    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
407        match prim {
408            1 => Self::OpenSystem,
409            2 => Self::SharedKey,
410            3 => Self::FastBssTransition,
411            4 => Self::Sae,
412            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
413        }
414    }
415
416    #[inline]
417    pub fn unknown() -> Self {
418        Self::__SourceBreaking { unknown_ordinal: 0xff }
419    }
420
421    #[inline]
422    pub const fn into_primitive(self) -> u8 {
423        match self {
424            Self::OpenSystem => 1,
425            Self::SharedKey => 2,
426            Self::FastBssTransition => 3,
427            Self::Sae => 4,
428            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
429        }
430    }
431
432    #[inline]
433    pub fn is_unknown(&self) -> bool {
434        match self {
435            Self::__SourceBreaking { unknown_ordinal: _ } => true,
436            _ => false,
437        }
438    }
439}
440
441#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
442pub enum WlanScanResult {
443    Success,
444    NotSupported,
445    InvalidArgs,
446    InternalError,
447    ShouldWait,
448    CanceledByDriverOrFirmware,
449    #[doc(hidden)]
450    __SourceBreaking {
451        unknown_ordinal: u8,
452    },
453}
454
455/// Pattern that matches an unknown `WlanScanResult` member.
456#[macro_export]
457macro_rules! WlanScanResultUnknown {
458    () => {
459        _
460    };
461}
462
463impl WlanScanResult {
464    #[inline]
465    pub fn from_primitive(prim: u8) -> Option<Self> {
466        match prim {
467            0 => Some(Self::Success),
468            1 => Some(Self::NotSupported),
469            2 => Some(Self::InvalidArgs),
470            3 => Some(Self::InternalError),
471            4 => Some(Self::ShouldWait),
472            5 => Some(Self::CanceledByDriverOrFirmware),
473            _ => None,
474        }
475    }
476
477    #[inline]
478    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
479        match prim {
480            0 => Self::Success,
481            1 => Self::NotSupported,
482            2 => Self::InvalidArgs,
483            3 => Self::InternalError,
484            4 => Self::ShouldWait,
485            5 => Self::CanceledByDriverOrFirmware,
486            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
487        }
488    }
489
490    #[inline]
491    pub fn unknown() -> Self {
492        Self::__SourceBreaking { unknown_ordinal: 0xff }
493    }
494
495    #[inline]
496    pub const fn into_primitive(self) -> u8 {
497        match self {
498            Self::Success => 0,
499            Self::NotSupported => 1,
500            Self::InvalidArgs => 2,
501            Self::InternalError => 3,
502            Self::ShouldWait => 4,
503            Self::CanceledByDriverOrFirmware => 5,
504            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
505        }
506    }
507
508    #[inline]
509    pub fn is_unknown(&self) -> bool {
510        match self {
511            Self::__SourceBreaking { unknown_ordinal: _ } => true,
512            _ => false,
513        }
514    }
515}
516
517#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
518pub enum WlanScanType {
519    Active,
520    Passive,
521    #[doc(hidden)]
522    __SourceBreaking {
523        unknown_ordinal: u8,
524    },
525}
526
527/// Pattern that matches an unknown `WlanScanType` member.
528#[macro_export]
529macro_rules! WlanScanTypeUnknown {
530    () => {
531        _
532    };
533}
534
535impl WlanScanType {
536    #[inline]
537    pub fn from_primitive(prim: u8) -> Option<Self> {
538        match prim {
539            1 => Some(Self::Active),
540            2 => Some(Self::Passive),
541            _ => None,
542        }
543    }
544
545    #[inline]
546    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
547        match prim {
548            1 => Self::Active,
549            2 => Self::Passive,
550            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
551        }
552    }
553
554    #[inline]
555    pub fn unknown() -> Self {
556        Self::__SourceBreaking { unknown_ordinal: 0xff }
557    }
558
559    #[inline]
560    pub const fn into_primitive(self) -> u8 {
561        match self {
562            Self::Active => 1,
563            Self::Passive => 2,
564            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
565        }
566    }
567
568    #[inline]
569    pub fn is_unknown(&self) -> bool {
570        match self {
571            Self::__SourceBreaking { unknown_ordinal: _ } => true,
572            _ => false,
573        }
574    }
575}
576
577#[derive(Clone, Debug, PartialEq)]
578pub struct WlanFullmacChannelSwitchInfo {
579    pub new_primary_channel: fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
580    pub bandwidth: fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth,
581    pub vht_secondary_80_channel: fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
582}
583
584impl fidl::Persistable for WlanFullmacChannelSwitchInfo {}
585
586#[derive(Clone, Debug, PartialEq)]
587pub struct WlanFullmacImplIfcOnChannelSwitchRequest {
588    pub ind: WlanFullmacChannelSwitchInfo,
589}
590
591impl fidl::Persistable for WlanFullmacImplIfcOnChannelSwitchRequest {}
592
593#[derive(Clone, Debug, PartialEq)]
594pub struct WlanFullmacImplIfcOnWmmStatusRespRequest {
595    pub status: i32,
596    pub wmm_params: fidl_fuchsia_wlan_driver_common::WlanWmmParameters,
597}
598
599impl fidl::Persistable for WlanFullmacImplIfcOnWmmStatusRespRequest {}
600
601#[derive(Clone, Debug, PartialEq)]
602pub struct WlanFullmacImplIfcSaeFrameRxRequest {
603    pub frame: SaeFrame,
604}
605
606impl fidl::Persistable for WlanFullmacImplIfcSaeFrameRxRequest {}
607
608#[derive(Clone, Debug, PartialEq)]
609pub struct WlanFullmacImplIfcSignalReportRequest {
610    pub ind: WlanFullmacSignalReportIndication,
611}
612
613impl fidl::Persistable for WlanFullmacImplIfcSignalReportRequest {}
614
615#[derive(Clone, Debug, PartialEq)]
616pub struct WlanFullmacImplSaeFrameTxRequest {
617    pub frame: SaeFrame,
618}
619
620impl fidl::Persistable for WlanFullmacImplSaeFrameTxRequest {}
621
622#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
623pub struct WlanFullmacImplSetKeysResponse {
624    pub resp: WlanFullmacSetKeysResp,
625}
626
627impl fidl::Persistable for WlanFullmacImplSetKeysResponse {}
628
629#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
630#[repr(C)]
631pub struct WlanFullmacImplSetMacAddressRequest {
632    pub mac_addr: [u8; 6],
633}
634
635impl fidl::Persistable for WlanFullmacImplSetMacAddressRequest {}
636
637#[derive(Clone, Debug, PartialEq)]
638pub struct WlanFullmacImplGetIfaceHistogramStatsResponse {
639    pub stats: fidl_fuchsia_wlan_stats_common::IfaceHistogramStats,
640}
641
642impl fidl::Persistable for WlanFullmacImplGetIfaceHistogramStatsResponse {}
643
644#[derive(Clone, Debug, PartialEq)]
645pub struct WlanFullmacImplGetIfaceStatsResponse {
646    pub stats: fidl_fuchsia_wlan_stats_common::IfaceStats,
647}
648
649impl fidl::Persistable for WlanFullmacImplGetIfaceStatsResponse {}
650
651#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
652pub struct WlanFullmacRssiStats {
653    pub hist: Vec<u64>,
654}
655
656impl fidl::Persistable for WlanFullmacRssiStats {}
657
658#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
659pub struct WlanFullmacSetKeysResp {
660    pub statuslist: Vec<i32>,
661}
662
663impl fidl::Persistable for WlanFullmacSetKeysResp {}
664
665/// Describes parameters and capabilities for a single WlanBand.
666#[derive(Clone, Debug, Default, PartialEq)]
667pub struct BandCapability {
668    /// The values of this table apply to the band indicated in this field.
669    ///
670    /// Required.
671    pub band: Option<fidl_fuchsia_wlan_ieee80211_common::WlanBand>,
672    /// Basic rates supported in units of 500 kbit/s (as defined in
673    /// IEEE Std 802.11-2016, 9.4.2.3), e.g., 0x02 represents 1 Mbps.
674    /// The value returned by this type indicates all the non-HT rates
675    /// the device supports transmitting and receiving.
676    ///
677    /// Required.
678    pub basic_rates: Option<Vec<u8>>,
679    /// HT PHY mode capabilities.
680    ///
681    /// Optional. If this field is not present, then the device does not support HT PHY mode in this
682    /// band.
683    pub ht_caps: Option<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
684    /// VHT PHY mode capabilities.
685    ///
686    /// Optional. If this field is not present, then the device does not support VHT PHY mode in
687    /// this band.
688    pub vht_caps: Option<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
689    /// A list of primary channels considered valid by hardware, in the context of
690    /// regulatory information known to the device driver, at the time of its
691    /// construction during iface creation. In this context, a primary channel
692    /// means a channel which APs may transmit Beacon frames on in the current
693    /// regulatory domain.
694    ///
695    /// This list should be used to determine efficacy of subsequent requests to
696    /// scan a subset of channels using the iface, or to determine which primary
697    /// channel to use when starting an AP.
698    ///
699    /// Required.
700    pub primary_channels: Option<Vec<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber>>,
701    #[doc(hidden)]
702    pub __source_breaking: fidl::marker::SourceBreaking,
703}
704
705impl fidl::Persistable for BandCapability {}
706
707/// Contains the information of SAE authentication frames. Shared between transmit and receive
708/// directions, see WlanFullmacImplIfc::SaeFrameRx and WlanFullmacImpl::SaeFrameTx.
709#[derive(Clone, Debug, Default, PartialEq)]
710pub struct SaeFrame {
711    /// The peer's MAC address. Required.
712    pub peer_sta_address: Option<[u8; 6]>,
713    /// The status code for this SAE frame. Required.
714    pub status_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
715    /// The sequence number. Required.
716    pub seq_num: Option<u16>,
717    /// Contains fields in the frame body relevant to SAE.
718    /// See IEEE Std 802.11-2016 table 9-35 and table 9-36 for more details.
719    /// Required.
720    pub sae_fields: Option<Vec<u8>>,
721    #[doc(hidden)]
722    pub __source_breaking: fidl::marker::SourceBreaking,
723}
724
725impl fidl::Persistable for SaeFrame {}
726
727#[derive(Clone, Debug, Default, PartialEq)]
728pub struct WlanFullmacImplAssocRespRequest {
729    pub peer_sta_address: Option<[u8; 6]>,
730    pub result_code: Option<WlanAssocResult>,
731    pub association_id: Option<u16>,
732    #[doc(hidden)]
733    pub __source_breaking: fidl::marker::SourceBreaking,
734}
735
736impl fidl::Persistable for WlanFullmacImplAssocRespRequest {}
737
738#[derive(Clone, Debug, Default, PartialEq)]
739pub struct WlanFullmacImplAuthRespRequest {
740    pub peer_sta_address: Option<[u8; 6]>,
741    pub result_code: Option<WlanAuthResult>,
742    #[doc(hidden)]
743    pub __source_breaking: fidl::marker::SourceBreaking,
744}
745
746impl fidl::Persistable for WlanFullmacImplAuthRespRequest {}
747
748#[derive(Clone, Debug, Default, PartialEq)]
749pub struct WlanFullmacImplConnectRequest {
750    pub selected_bss: Option<fidl_fuchsia_wlan_ieee80211_common::BssDescription>,
751    /// Timeout specified in beacon interval.
752    pub connect_failure_timeout: Option<u32>,
753    /// Additional parameters specific to the authentication exchange.
754    pub auth_type: Option<WlanAuthType>,
755    /// sae_password is ignored except when SAE_DRIVER_AUTH is enabled and the
756    /// auth_type is SAE.
757    pub sae_password: Option<Vec<u8>>,
758    /// WEP key used in the authentication exchange.
759    /// This is only populated for the WEP security type, otherwise this field is empty.
760    pub wep_key: Option<fidl_fuchsia_wlan_driver_common::WlanKeyConfig>,
761    /// Additional parameters specific to the association exchange.
762    pub security_ie: Option<Vec<u8>>,
763    /// WEP key used in the authentication exchange.
764    /// This is only populated for the WEP security type, otherwise this field is empty.
765    pub wep_key_desc: Option<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor>,
766    /// OWE public key used for Diffie Hellman exchange during association.
767    /// This is only populated for the OWE security type, otherwise this field is empty.
768    pub owe_public_key: Option<WlanFullmacOwePublicKey>,
769    #[doc(hidden)]
770    pub __source_breaking: fidl::marker::SourceBreaking,
771}
772
773impl fidl::Persistable for WlanFullmacImplConnectRequest {}
774
775#[derive(Clone, Debug, Default, PartialEq)]
776pub struct WlanFullmacImplDeauthRequest {
777    pub peer_sta_address: Option<[u8; 6]>,
778    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211_common::ReasonCode>,
779    #[doc(hidden)]
780    pub __source_breaking: fidl::marker::SourceBreaking,
781}
782
783impl fidl::Persistable for WlanFullmacImplDeauthRequest {}
784
785#[derive(Clone, Debug, Default, PartialEq)]
786pub struct WlanFullmacImplDisassocRequest {
787    pub peer_sta_address: Option<[u8; 6]>,
788    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211_common::ReasonCode>,
789    #[doc(hidden)]
790    pub __source_breaking: fidl::marker::SourceBreaking,
791}
792
793impl fidl::Persistable for WlanFullmacImplDisassocRequest {}
794
795#[derive(Clone, Debug, Default, PartialEq)]
796pub struct WlanFullmacImplEapolTxRequest {
797    pub src_addr: Option<[u8; 6]>,
798    pub dst_addr: Option<[u8; 6]>,
799    pub data: Option<Vec<u8>>,
800    #[doc(hidden)]
801    pub __source_breaking: fidl::marker::SourceBreaking,
802}
803
804impl fidl::Persistable for WlanFullmacImplEapolTxRequest {}
805
806#[derive(Clone, Debug, Default, PartialEq)]
807pub struct WlanFullmacImplIfcAssocIndRequest {
808    pub peer_sta_address: Option<[u8; 6]>,
809    pub listen_interval: Option<u16>,
810    pub ssid: Option<Vec<u8>>,
811    pub rsne: Option<Vec<u8>>,
812    pub vendor_ie: Option<Vec<u8>>,
813    #[doc(hidden)]
814    pub __source_breaking: fidl::marker::SourceBreaking,
815}
816
817impl fidl::Persistable for WlanFullmacImplIfcAssocIndRequest {}
818
819#[derive(Clone, Debug, Default, PartialEq)]
820pub struct WlanFullmacImplIfcAuthIndRequest {
821    pub peer_sta_address: Option<[u8; 6]>,
822    pub auth_type: Option<WlanAuthType>,
823    #[doc(hidden)]
824    pub __source_breaking: fidl::marker::SourceBreaking,
825}
826
827impl fidl::Persistable for WlanFullmacImplIfcAuthIndRequest {}
828
829#[derive(Clone, Debug, Default, PartialEq)]
830pub struct WlanFullmacImplIfcConnectConfRequest {
831    pub peer_sta_address: Option<[u8; 6]>,
832    pub result_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
833    pub association_id: Option<u16>,
834    pub association_ies: Option<Vec<u8>>,
835    #[doc(hidden)]
836    pub __source_breaking: fidl::marker::SourceBreaking,
837}
838
839impl fidl::Persistable for WlanFullmacImplIfcConnectConfRequest {}
840
841#[derive(Clone, Debug, Default, PartialEq)]
842pub struct WlanFullmacImplIfcDeauthConfRequest {
843    pub peer_sta_address: Option<[u8; 6]>,
844    #[doc(hidden)]
845    pub __source_breaking: fidl::marker::SourceBreaking,
846}
847
848impl fidl::Persistable for WlanFullmacImplIfcDeauthConfRequest {}
849
850#[derive(Clone, Debug, Default, PartialEq)]
851pub struct WlanFullmacImplIfcDeauthIndRequest {
852    /// MAC address of the peer. Required.
853    pub peer_sta_address: Option<[u8; 6]>,
854    /// Reason code for deauthentication. Required.
855    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211_common::ReasonCode>,
856    /// locally_initiated is true if deauth is initiated from the device,
857    /// and is false if it's initiated remotely (e.g. due to deauth frame)
858    pub locally_initiated: Option<bool>,
859    #[doc(hidden)]
860    pub __source_breaking: fidl::marker::SourceBreaking,
861}
862
863impl fidl::Persistable for WlanFullmacImplIfcDeauthIndRequest {}
864
865#[derive(Clone, Debug, Default, PartialEq)]
866pub struct WlanFullmacImplIfcDisassocConfRequest {
867    /// ZX_OK indicates that the disassociate request was serviced and the peer was
868    /// disassociated. Other errors indicate that the request could not be serviced, for these
869    /// or other reasons:
870    ///   - ZX_ERR_BAD_STATE: association not possible in current state (e.g. disconnected)
871    ///   - ZX_ERR_INVALID_ARGS: no association exists with specified peer
872    ///   - ZX_ERR_SHOULD_WAIT: disassociate request could not be serviced because firmware or
873    ///     driver was busy
874    pub status: Option<i32>,
875    #[doc(hidden)]
876    pub __source_breaking: fidl::marker::SourceBreaking,
877}
878
879impl fidl::Persistable for WlanFullmacImplIfcDisassocConfRequest {}
880
881#[derive(Clone, Debug, Default, PartialEq)]
882pub struct WlanFullmacImplIfcDisassocIndRequest {
883    /// Address of the peer that was disassociated. Required.
884    pub peer_sta_address: Option<[u8; 6]>,
885    /// Reason for the disassociation. Required.
886    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211_common::ReasonCode>,
887    /// Whether the disassociation was initiated from the device. Required.
888    /// locally_initiated is true if disassociation was initiated from the device (e.g. firmware
889    /// or vendor driver started the disassociation); false if the disassociation was initiated
890    /// externally (e.g. due to receipt of a disassociate frame from an AP).
891    pub locally_initiated: Option<bool>,
892    #[doc(hidden)]
893    pub __source_breaking: fidl::marker::SourceBreaking,
894}
895
896impl fidl::Persistable for WlanFullmacImplIfcDisassocIndRequest {}
897
898#[derive(Clone, Debug, Default, PartialEq)]
899pub struct WlanFullmacImplIfcEapolConfRequest {
900    /// The result of the transmission. Required.
901    pub result_code: Option<EapolTxResult>,
902    /// This value corresponds to the dst_addr in the EapolTxRequest we're confirming.
903    /// IEEE 802.11-2020 does not include this field, but we need it to disambiguate
904    /// if multiple EAPoL handshakes are ongoing.
905    /// Required.
906    pub dst_addr: Option<[u8; 6]>,
907    #[doc(hidden)]
908    pub __source_breaking: fidl::marker::SourceBreaking,
909}
910
911impl fidl::Persistable for WlanFullmacImplIfcEapolConfRequest {}
912
913#[derive(Clone, Debug, Default, PartialEq)]
914pub struct WlanFullmacImplIfcEapolIndRequest {
915    /// The address of the sender. Required.
916    pub src_addr: Option<[u8; 6]>,
917    /// The address of the intended destination. Required.
918    pub dst_addr: Option<[u8; 6]>,
919    /// The bytes of the EAPoL frame data. Required.
920    pub data: Option<Vec<u8>>,
921    #[doc(hidden)]
922    pub __source_breaking: fidl::marker::SourceBreaking,
923}
924
925impl fidl::Persistable for WlanFullmacImplIfcEapolIndRequest {}
926
927#[derive(Clone, Debug, Default, PartialEq)]
928pub struct WlanFullmacImplIfcOnPmkAvailableRequest {
929    /// The pairwise master key bytes. Required.
930    pub pmk: Option<Vec<u8>>,
931    /// The PMK IDs. Required.
932    pub pmkid: Option<Vec<u8>>,
933    #[doc(hidden)]
934    pub __source_breaking: fidl::marker::SourceBreaking,
935}
936
937impl fidl::Persistable for WlanFullmacImplIfcOnPmkAvailableRequest {}
938
939#[derive(Clone, Debug, Default, PartialEq)]
940pub struct WlanFullmacImplIfcOnRssiThresholdBreachedRequest {
941    pub cur_rssi_dbm: Option<i8>,
942    #[doc(hidden)]
943    pub __source_breaking: fidl::marker::SourceBreaking,
944}
945
946impl fidl::Persistable for WlanFullmacImplIfcOnRssiThresholdBreachedRequest {}
947
948#[derive(Clone, Debug, Default, PartialEq)]
949pub struct WlanFullmacImplIfcOnScanEndRequest {
950    pub txn_id: Option<u64>,
951    pub code: Option<WlanScanResult>,
952    #[doc(hidden)]
953    pub __source_breaking: fidl::marker::SourceBreaking,
954}
955
956impl fidl::Persistable for WlanFullmacImplIfcOnScanEndRequest {}
957
958#[derive(Clone, Debug, Default, PartialEq)]
959pub struct WlanFullmacImplIfcOnScanResultRequest {
960    pub txn_id: Option<u64>,
961    pub timestamp_nanos: Option<i64>,
962    pub bss: Option<fidl_fuchsia_wlan_ieee80211_common::BssDescription>,
963    #[doc(hidden)]
964    pub __source_breaking: fidl::marker::SourceBreaking,
965}
966
967impl fidl::Persistable for WlanFullmacImplIfcOnScanResultRequest {}
968
969#[derive(Clone, Debug, Default, PartialEq)]
970pub struct WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {
971    pub txn_id: Option<u64>,
972    #[doc(hidden)]
973    pub __source_breaking: fidl::marker::SourceBreaking,
974}
975
976impl fidl::Persistable for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {}
977
978#[derive(Clone, Debug, Default, PartialEq)]
979pub struct WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {
980    pub txn_id: Option<u64>,
981    #[doc(hidden)]
982    pub __source_breaking: fidl::marker::SourceBreaking,
983}
984
985impl fidl::Persistable for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {}
986
987#[derive(Clone, Debug, Default, PartialEq)]
988pub struct WlanFullmacImplIfcRoamConfRequest {
989    /// BSSID of the target BSS. Required.
990    pub selected_bssid: Option<[u8; 6]>,
991    /// Result of the roam attempt. Required.
992    pub status_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
993    /// Whether the original BSS association has been maintained through the roam attempt. Required.
994    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
995    /// success then this field must be set to false; a roam failure typically incurs disassociation
996    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
997    pub original_association_maintained: Option<bool>,
998    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
999    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1000    /// This allows higher layers to decide how to clean up connection state after a failed roam
1001    /// attempt.
1002    pub target_bss_authenticated: Option<bool>,
1003    /// Association ID for this association with the AP. Required if `status_code` is success.
1004    pub association_id: Option<u16>,
1005    /// IEs for this association with the AP. Required if `status_code` is success.
1006    pub association_ies: Option<Vec<u8>>,
1007    #[doc(hidden)]
1008    pub __source_breaking: fidl::marker::SourceBreaking,
1009}
1010
1011impl fidl::Persistable for WlanFullmacImplIfcRoamConfRequest {}
1012
1013#[derive(Clone, Debug, Default, PartialEq)]
1014pub struct WlanFullmacImplIfcRoamResultIndRequest {
1015    /// BSSID of the target BSS. Required.
1016    pub selected_bssid: Option<[u8; 6]>,
1017    /// Result of the roam attempt. Required.
1018    pub status_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
1019    /// Whether the original BSS association has been maintained through the roam attempt. Required.
1020    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1021    /// success then this field must be set to false; a roam failure typically incurs disassociation
1022    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1023    pub original_association_maintained: Option<bool>,
1024    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1025    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1026    /// This allows higher layers to decide how to clean up connection state after a failed roam
1027    /// attempt.
1028    pub target_bss_authenticated: Option<bool>,
1029    /// Association ID for this association with the AP. Required if `status_code` is success.
1030    pub association_id: Option<u16>,
1031    /// IEs for this association with the AP. Required if `status_code` is success.
1032    pub association_ies: Option<Vec<u8>>,
1033    #[doc(hidden)]
1034    pub __source_breaking: fidl::marker::SourceBreaking,
1035}
1036
1037impl fidl::Persistable for WlanFullmacImplIfcRoamResultIndRequest {}
1038
1039#[derive(Clone, Debug, Default, PartialEq)]
1040pub struct WlanFullmacImplIfcRoamStartIndRequest {
1041    /// BSSID of the target BSS. Required.
1042    pub selected_bssid: Option<[u8; 6]>,
1043    /// Full BSS description of the target BSS. Required.
1044    /// If the data in BssDescription is incorrect or incomplete, the roam cannot succeed,
1045    /// because higher layers will not be able to complete required actions (e.g. SAE).
1046    pub selected_bss: Option<fidl_fuchsia_wlan_ieee80211_common::BssDescription>,
1047    /// Whether the original BSS association has been maintained at the start of a roam attempt.
1048    /// Required. 802.11 dictates that a STA can only be associated with a single BSS, so a roam
1049    /// attempt typically incurs disassociation at the start of the roam attempt. However,
1050    /// 802.11 also provides a mechanism (i.e. Fast BSS Transition) that allows a device to
1051    /// maintain association with the original BSS while establishing authentication with the
1052    /// target BSS, in order to avoid losing the original association if authentication with the
1053    /// target BSS fails.
1054    pub original_association_maintained: Option<bool>,
1055    #[doc(hidden)]
1056    pub __source_breaking: fidl::marker::SourceBreaking,
1057}
1058
1059impl fidl::Persistable for WlanFullmacImplIfcRoamStartIndRequest {}
1060
1061#[derive(Clone, Debug, Default, PartialEq)]
1062pub struct WlanFullmacImplIfcSaeHandshakeIndRequest {
1063    pub peer_sta_address: Option<[u8; 6]>,
1064    #[doc(hidden)]
1065    pub __source_breaking: fidl::marker::SourceBreaking,
1066}
1067
1068impl fidl::Persistable for WlanFullmacImplIfcSaeHandshakeIndRequest {}
1069
1070#[derive(Clone, Debug, Default, PartialEq)]
1071pub struct WlanFullmacImplIfcStartConfRequest {
1072    /// The result of the StartBss request. Required.
1073    pub result_code: Option<StartResult>,
1074    #[doc(hidden)]
1075    pub __source_breaking: fidl::marker::SourceBreaking,
1076}
1077
1078impl fidl::Persistable for WlanFullmacImplIfcStartConfRequest {}
1079
1080#[derive(Clone, Debug, Default, PartialEq)]
1081pub struct WlanFullmacImplIfcStopConfRequest {
1082    /// The result of the StopBss request. Required.
1083    pub result_code: Option<StopResult>,
1084    #[doc(hidden)]
1085    pub __source_breaking: fidl::marker::SourceBreaking,
1086}
1087
1088impl fidl::Persistable for WlanFullmacImplIfcStopConfRequest {}
1089
1090#[derive(Clone, Debug, Default, PartialEq)]
1091pub struct WlanFullmacImplInstallApfPacketFilterRequest {
1092    pub program: Option<Vec<u8>>,
1093    #[doc(hidden)]
1094    pub __source_breaking: fidl::marker::SourceBreaking,
1095}
1096
1097impl fidl::Persistable for WlanFullmacImplInstallApfPacketFilterRequest {}
1098
1099#[derive(Clone, Debug, Default, PartialEq)]
1100pub struct WlanFullmacImplOnLinkStateChangedRequest {
1101    pub online: Option<bool>,
1102    #[doc(hidden)]
1103    pub __source_breaking: fidl::marker::SourceBreaking,
1104}
1105
1106impl fidl::Persistable for WlanFullmacImplOnLinkStateChangedRequest {}
1107
1108#[derive(Clone, Debug, Default, PartialEq)]
1109pub struct WlanFullmacImplReconnectRequest {
1110    pub peer_sta_address: Option<[u8; 6]>,
1111    #[doc(hidden)]
1112    pub __source_breaking: fidl::marker::SourceBreaking,
1113}
1114
1115impl fidl::Persistable for WlanFullmacImplReconnectRequest {}
1116
1117#[derive(Clone, Debug, Default, PartialEq)]
1118pub struct WlanFullmacImplRoamRequest {
1119    /// Full BSS description of the target BSS. Required.
1120    /// If the data in BssDescription is incorrect or incomplete, the roam cannot succeed,
1121    /// because higher layers will not be able to complete required actions (e.g. SAE).
1122    pub selected_bss: Option<fidl_fuchsia_wlan_ieee80211_common::BssDescription>,
1123    #[doc(hidden)]
1124    pub __source_breaking: fidl::marker::SourceBreaking,
1125}
1126
1127impl fidl::Persistable for WlanFullmacImplRoamRequest {}
1128
1129#[derive(Clone, Debug, Default, PartialEq)]
1130pub struct WlanFullmacImplSaeHandshakeRespRequest {
1131    /// The peer's MAC address. Required.
1132    pub peer_sta_address: Option<[u8; 6]>,
1133    /// The status of the SAE handshake. Required.
1134    pub status_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
1135    #[doc(hidden)]
1136    pub __source_breaking: fidl::marker::SourceBreaking,
1137}
1138
1139impl fidl::Persistable for WlanFullmacImplSaeHandshakeRespRequest {}
1140
1141#[derive(Clone, Debug, Default, PartialEq)]
1142pub struct WlanFullmacImplSetApfPacketFilterEnabledRequest {
1143    pub enabled: Option<bool>,
1144    #[doc(hidden)]
1145    pub __source_breaking: fidl::marker::SourceBreaking,
1146}
1147
1148impl fidl::Persistable for WlanFullmacImplSetApfPacketFilterEnabledRequest {}
1149
1150#[derive(Clone, Debug, Default, PartialEq)]
1151pub struct WlanFullmacImplSetKeysRequest {
1152    pub keylist: Option<Vec<fidl_fuchsia_wlan_driver_common::WlanKeyConfig>>,
1153    pub key_descriptors: Option<Vec<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor>>,
1154    #[doc(hidden)]
1155    pub __source_breaking: fidl::marker::SourceBreaking,
1156}
1157
1158impl fidl::Persistable for WlanFullmacImplSetKeysRequest {}
1159
1160#[derive(Clone, Debug, Default, PartialEq)]
1161pub struct WlanFullmacImplStartBssRequest {
1162    pub ssid: Option<Vec<u8>>,
1163    pub bss_type: Option<fidl_fuchsia_wlan_ieee80211_common::BssType>,
1164    pub beacon_period: Option<u32>,
1165    pub dtim_period: Option<u32>,
1166    pub primary: Option<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber>,
1167    pub rsne: Option<Vec<u8>>,
1168    pub vendor_ie: Option<Vec<u8>>,
1169    #[doc(hidden)]
1170    pub __source_breaking: fidl::marker::SourceBreaking,
1171}
1172
1173impl fidl::Persistable for WlanFullmacImplStartBssRequest {}
1174
1175#[derive(Clone, Debug, Default, PartialEq)]
1176pub struct WlanFullmacImplStartRssiMonitorRequest {
1177    pub min_rssi_dbm: Option<i8>,
1178    pub max_rssi_dbm: Option<i8>,
1179    #[doc(hidden)]
1180    pub __source_breaking: fidl::marker::SourceBreaking,
1181}
1182
1183impl fidl::Persistable for WlanFullmacImplStartRssiMonitorRequest {}
1184
1185#[derive(Clone, Debug, Default, PartialEq)]
1186pub struct WlanFullmacImplStartScanRequest {
1187    /// Unique transaction id (will be indicated in corresponding scan results).
1188    pub txn_id: Option<u64>,
1189    pub scan_type: Option<WlanScanType>,
1190    /// List of channels to scan on. An empty list of channels will cause a
1191    /// scan request to immediately return a OnScanEnd with code INVALID_ARGS.
1192    ///
1193    /// Invalid channel numbers will be silently ignored. The validity of a channel
1194    /// number depends on the current regulatory region, and a FullMAC driver cannot
1195    /// always determine the region setting. This is especially the case when
1196    /// firmware changes the region setting dynamically.
1197    pub channels: Option<Vec<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber>>,
1198    /// List of SSIDs to scan for. An empty list of ssids is the same as specifying
1199    /// a list containing only the wildcard SSID.
1200    ///
1201    /// There is no limit on the number of SSIDs specified. A large number of
1202    /// SSIDs may result in extended scan times because of hardware limitations on
1203    /// the number of SSIDs permitted per scan request and the technical limitation
1204    /// in IEEE 802.11-2016 that limits the number of SSIDs in a single Probe Request
1205    /// frame to ieee80211.SSID_LIST_MAX SSIDs.
1206    pub ssids: Option<Vec<Vec<u8>>>,
1207    /// Minimum amount of time in msecs spent on a channel during scan.
1208    pub min_channel_time: Option<u32>,
1209    /// Maximum amount of time in msecs spent on a channel during scan.
1210    pub max_channel_time: Option<u32>,
1211    #[doc(hidden)]
1212    pub __source_breaking: fidl::marker::SourceBreaking,
1213}
1214
1215impl fidl::Persistable for WlanFullmacImplStartScanRequest {}
1216
1217#[derive(Clone, Debug, Default, PartialEq)]
1218pub struct WlanFullmacImplStartScheduledScanRequest {
1219    pub txn_id: Option<u64>,
1220    pub req: Option<fidl_fuchsia_wlan_common_common::ScheduledScanRequest>,
1221    #[doc(hidden)]
1222    pub __source_breaking: fidl::marker::SourceBreaking,
1223}
1224
1225impl fidl::Persistable for WlanFullmacImplStartScheduledScanRequest {}
1226
1227#[derive(Clone, Debug, Default, PartialEq)]
1228pub struct WlanFullmacImplStopBssRequest {
1229    pub ssid: Option<Vec<u8>>,
1230    #[doc(hidden)]
1231    pub __source_breaking: fidl::marker::SourceBreaking,
1232}
1233
1234impl fidl::Persistable for WlanFullmacImplStopBssRequest {}
1235
1236#[derive(Clone, Debug, Default, PartialEq)]
1237pub struct WlanFullmacImplStopScheduledScanRequest {
1238    pub txn_id: Option<u64>,
1239    #[doc(hidden)]
1240    pub __source_breaking: fidl::marker::SourceBreaking,
1241}
1242
1243impl fidl::Persistable for WlanFullmacImplStopScheduledScanRequest {}
1244
1245#[derive(Clone, Debug, Default, PartialEq)]
1246pub struct WlanFullmacImplGetApfPacketFilterEnabledResponse {
1247    pub enabled: Option<bool>,
1248    #[doc(hidden)]
1249    pub __source_breaking: fidl::marker::SourceBreaking,
1250}
1251
1252impl fidl::Persistable for WlanFullmacImplGetApfPacketFilterEnabledResponse {}
1253
1254#[derive(Clone, Debug, Default, PartialEq)]
1255pub struct WlanFullmacImplGetScheduledScanEnabledResponse {
1256    pub active_txn_ids: Option<Vec<u64>>,
1257    #[doc(hidden)]
1258    pub __source_breaking: fidl::marker::SourceBreaking,
1259}
1260
1261impl fidl::Persistable for WlanFullmacImplGetScheduledScanEnabledResponse {}
1262
1263#[derive(Clone, Debug, Default, PartialEq)]
1264pub struct WlanFullmacImplQueryApfPacketFilterSupportResponse {
1265    pub resp: Option<fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport>,
1266    #[doc(hidden)]
1267    pub __source_breaking: fidl::marker::SourceBreaking,
1268}
1269
1270impl fidl::Persistable for WlanFullmacImplQueryApfPacketFilterSupportResponse {}
1271
1272#[derive(Clone, Debug, Default, PartialEq)]
1273pub struct WlanFullmacImplQueryRssiMonitorSupportResponse {
1274    pub resp: Option<fidl_fuchsia_wlan_common_common::RssiMonitorSupport>,
1275    #[doc(hidden)]
1276    pub __source_breaking: fidl::marker::SourceBreaking,
1277}
1278
1279impl fidl::Persistable for WlanFullmacImplQueryRssiMonitorSupportResponse {}
1280
1281#[derive(Clone, Debug, Default, PartialEq)]
1282pub struct WlanFullmacImplQuerySecuritySupportResponse {
1283    pub resp: Option<fidl_fuchsia_wlan_common_common::SecuritySupport>,
1284    #[doc(hidden)]
1285    pub __source_breaking: fidl::marker::SourceBreaking,
1286}
1287
1288impl fidl::Persistable for WlanFullmacImplQuerySecuritySupportResponse {}
1289
1290#[derive(Clone, Debug, Default, PartialEq)]
1291pub struct WlanFullmacImplQuerySpectrumManagementSupportResponse {
1292    pub resp: Option<fidl_fuchsia_wlan_common_common::SpectrumManagementSupport>,
1293    #[doc(hidden)]
1294    pub __source_breaking: fidl::marker::SourceBreaking,
1295}
1296
1297impl fidl::Persistable for WlanFullmacImplQuerySpectrumManagementSupportResponse {}
1298
1299#[derive(Clone, Debug, Default, PartialEq)]
1300pub struct WlanFullmacImplQueryTelemetrySupportResponse {
1301    pub resp: Option<fidl_fuchsia_wlan_stats_common::TelemetrySupport>,
1302    #[doc(hidden)]
1303    pub __source_breaking: fidl::marker::SourceBreaking,
1304}
1305
1306impl fidl::Persistable for WlanFullmacImplQueryTelemetrySupportResponse {}
1307
1308#[derive(Clone, Debug, Default, PartialEq)]
1309pub struct WlanFullmacImplQueryResponse {
1310    /// Current station address. Required.
1311    pub sta_addr: Option<[u8; 6]>,
1312    /// MAC role. Required.
1313    pub role: Option<fidl_fuchsia_wlan_common_common::WlanMacRole>,
1314    /// Supported bands. Required.
1315    pub band_caps: Option<Vec<BandCapability>>,
1316    /// Factory mac address. Required.
1317    pub factory_addr: Option<[u8; 6]>,
1318    #[doc(hidden)]
1319    pub __source_breaking: fidl::marker::SourceBreaking,
1320}
1321
1322impl fidl::Persistable for WlanFullmacImplQueryResponse {}
1323
1324#[derive(Clone, Debug, Default, PartialEq)]
1325pub struct WlanFullmacImplReadApfPacketFilterDataResponse {
1326    pub memory: Option<Vec<u8>>,
1327    #[doc(hidden)]
1328    pub __source_breaking: fidl::marker::SourceBreaking,
1329}
1330
1331impl fidl::Persistable for WlanFullmacImplReadApfPacketFilterDataResponse {}
1332
1333#[derive(Clone, Debug, Default, PartialEq)]
1334pub struct WlanFullmacOwePublicKey {
1335    pub group: Option<u16>,
1336    pub key: Option<Vec<u8>>,
1337    #[doc(hidden)]
1338    pub __source_breaking: fidl::marker::SourceBreaking,
1339}
1340
1341impl fidl::Persistable for WlanFullmacOwePublicKey {}
1342
1343#[derive(Clone, Debug, Default, PartialEq)]
1344pub struct WlanFullmacSignalReportIndication {
1345    pub rssi_dbm: Option<i8>,
1346    pub snr_db: Option<i8>,
1347    /// Transmit rate in units of 500 kbit/s, which are the units used for
1348    /// Supported Rates in IEEE Std 802.11-2024 9.4.2.3.
1349    pub tx_rate_500kbps: Option<u32>,
1350    /// Receive rate in units of 500 kbit/s.
1351    pub rx_rate_500kbps: Option<u32>,
1352    #[doc(hidden)]
1353    pub __source_breaking: fidl::marker::SourceBreaking,
1354}
1355
1356impl fidl::Persistable for WlanFullmacSignalReportIndication {}
1357
1358pub mod wlan_fullmac_impl__ordinals {
1359    pub const INIT: u64 = 0x593dfb6cb3f0f1aa;
1360    pub const QUERY: u64 = 0x28ac65f9da3941d4;
1361    pub const QUERY_SECURITY_SUPPORT: u64 = 0x11cf3fa6eeb93f84;
1362    pub const QUERY_SPECTRUM_MANAGEMENT_SUPPORT: u64 = 0x22ae7551d855b83a;
1363    pub const QUERY_TELEMETRY_SUPPORT: u64 = 0x4561479ca560827f;
1364    pub const QUERY_APF_PACKET_FILTER_SUPPORT: u64 = 0x6df8cdf0acd4dfad;
1365    pub const QUERY_RSSI_MONITOR_SUPPORT: u64 = 0x21d21e42d6aa61b5;
1366    pub const START_SCAN: u64 = 0x26c17bf595aa161c;
1367    pub const START_SCHEDULED_SCAN: u64 = 0x67bb4356265682d2;
1368    pub const STOP_SCHEDULED_SCAN: u64 = 0x71bf2a03f2cdc10f;
1369    pub const GET_SCHEDULED_SCAN_ENABLED: u64 = 0x96be6f11648f198;
1370    pub const CONNECT: u64 = 0x19eb0322efb07a76;
1371    pub const RECONNECT: u64 = 0x474084c4ef19ee71;
1372    pub const ROAM: u64 = 0x1e35dcc98b124b64;
1373    pub const AUTH_RESP: u64 = 0x5f7ea24b44a4aaeb;
1374    pub const DEAUTH: u64 = 0x112786eccbf12f37;
1375    pub const ASSOC_RESP: u64 = 0x5022ce6b8eefec2f;
1376    pub const DISASSOC: u64 = 0x9c0fc4e8de53e01;
1377    pub const START_BSS: u64 = 0x6922644d6b1d341d;
1378    pub const STOP_BSS: u64 = 0x5aeb9b72e7575268;
1379    pub const SET_KEYS: u64 = 0x20f46b1e039f0985;
1380    pub const EAPOL_TX: u64 = 0x529a2d90fd4c8177;
1381    pub const GET_IFACE_STATS: u64 = 0x505563776ef0392f;
1382    pub const GET_IFACE_HISTOGRAM_STATS: u64 = 0x503d586f30ccf2cd;
1383    pub const GET_SIGNAL_REPORT: u64 = 0x5d93f056e4796bb3;
1384    pub const SAE_HANDSHAKE_RESP: u64 = 0x72cd3a31ae5a54f6;
1385    pub const SAE_FRAME_TX: u64 = 0x4715ad5dc5a6340f;
1386    pub const WMM_STATUS_REQ: u64 = 0x635ecef3beb7a059;
1387    pub const ON_LINK_STATE_CHANGED: u64 = 0x4d896e5b68e488d7;
1388    pub const SET_MAC_ADDRESS: u64 = 0x211a97f6f21ae5f0;
1389    pub const INSTALL_APF_PACKET_FILTER: u64 = 0x14597eda84122115;
1390    pub const READ_APF_PACKET_FILTER_DATA: u64 = 0x6ddcf8a179553a3c;
1391    pub const SET_APF_PACKET_FILTER_ENABLED: u64 = 0x808792cade97d59;
1392    pub const GET_APF_PACKET_FILTER_ENABLED: u64 = 0x284e1725471e3ae7;
1393    pub const START_RSSI_MONITOR: u64 = 0x5e6e8feead94acec;
1394    pub const STOP_RSSI_MONITOR: u64 = 0x45795dfdd5760880;
1395}
1396
1397pub mod wlan_fullmac_impl_ifc_ordinals {
1398    pub const ON_SCAN_RESULT: u64 = 0x29aa81dc570f7a3e;
1399    pub const ON_SCAN_END: u64 = 0x7cd8aff80d27073c;
1400    pub const ON_SCHEDULED_SCAN_MATCHES_AVAILABLE: u64 = 0x3036cd8b8b35e81b;
1401    pub const ON_SCHEDULED_SCAN_STOPPED_BY_FIRMWARE: u64 = 0x50353be2c3029817;
1402    pub const CONNECT_CONF: u64 = 0x3c22c6d80b2a2759;
1403    pub const ROAM_CONF: u64 = 0x368b2a5b903b3f7b;
1404    pub const ROAM_START_IND: u64 = 0x23e1d9368935e7e4;
1405    pub const ROAM_RESULT_IND: u64 = 0x7081c1b1ceea4914;
1406    pub const AUTH_IND: u64 = 0x270e1f8889650d0b;
1407    pub const DEAUTH_CONF: u64 = 0x2c94b0d7258111b7;
1408    pub const DEAUTH_IND: u64 = 0x26cd27cdadd8dbaf;
1409    pub const ASSOC_IND: u64 = 0x3e44529e3dc179ce;
1410    pub const DISASSOC_CONF: u64 = 0x7c713bcd58a76cb3;
1411    pub const DISASSOC_IND: u64 = 0x6667b381b7f3990f;
1412    pub const START_CONF: u64 = 0x3e9b9641f3ddc7fc;
1413    pub const STOP_CONF: u64 = 0x320a5ff227a4e9df;
1414    pub const EAPOL_CONF: u64 = 0x77364db9cc3970ec;
1415    pub const ON_CHANNEL_SWITCH: u64 = 0x21db0b8f71cae647;
1416    pub const SIGNAL_REPORT: u64 = 0x79679fa8789c3d9f;
1417    pub const ON_RSSI_THRESHOLD_BREACHED: u64 = 0x5ddcf835177124b6;
1418    pub const EAPOL_IND: u64 = 0x3de8ec1eda10d1d0;
1419    pub const ON_PMK_AVAILABLE: u64 = 0x5cedd8d9be28a17e;
1420    pub const SAE_HANDSHAKE_IND: u64 = 0x4f3d53885503a1d8;
1421    pub const SAE_FRAME_RX: u64 = 0x51650906857ed4d4;
1422    pub const ON_WMM_STATUS_RESP: u64 = 0x6823a88bf3ba8b2a;
1423}
1424
1425mod internal {
1426    use super::*;
1427    unsafe impl fidl::encoding::TypeMarker for EapolTxResult {
1428        type Owned = Self;
1429
1430        #[inline(always)]
1431        fn inline_align(_context: fidl::encoding::Context) -> usize {
1432            std::mem::align_of::<u8>()
1433        }
1434
1435        #[inline(always)]
1436        fn inline_size(_context: fidl::encoding::Context) -> usize {
1437            std::mem::size_of::<u8>()
1438        }
1439
1440        #[inline(always)]
1441        fn encode_is_copy() -> bool {
1442            false
1443        }
1444
1445        #[inline(always)]
1446        fn decode_is_copy() -> bool {
1447            false
1448        }
1449    }
1450
1451    impl fidl::encoding::ValueTypeMarker for EapolTxResult {
1452        type Borrowed<'a> = Self;
1453        #[inline(always)]
1454        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1455            *value
1456        }
1457    }
1458
1459    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for EapolTxResult {
1460        #[inline]
1461        unsafe fn encode(
1462            self,
1463            encoder: &mut fidl::encoding::Encoder<'_, D>,
1464            offset: usize,
1465            _depth: fidl::encoding::Depth,
1466        ) -> fidl::Result<()> {
1467            encoder.debug_check_bounds::<Self>(offset);
1468            encoder.write_num(self.into_primitive(), offset);
1469            Ok(())
1470        }
1471    }
1472
1473    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolTxResult {
1474        #[inline(always)]
1475        fn new_empty() -> Self {
1476            Self::unknown()
1477        }
1478
1479        #[inline]
1480        unsafe fn decode(
1481            &mut self,
1482            decoder: &mut fidl::encoding::Decoder<'_, D>,
1483            offset: usize,
1484            _depth: fidl::encoding::Depth,
1485        ) -> fidl::Result<()> {
1486            decoder.debug_check_bounds::<Self>(offset);
1487            let prim = decoder.read_num::<u8>(offset);
1488
1489            *self = Self::from_primitive_allow_unknown(prim);
1490            Ok(())
1491        }
1492    }
1493    unsafe impl fidl::encoding::TypeMarker for StartResult {
1494        type Owned = Self;
1495
1496        #[inline(always)]
1497        fn inline_align(_context: fidl::encoding::Context) -> usize {
1498            std::mem::align_of::<u8>()
1499        }
1500
1501        #[inline(always)]
1502        fn inline_size(_context: fidl::encoding::Context) -> usize {
1503            std::mem::size_of::<u8>()
1504        }
1505
1506        #[inline(always)]
1507        fn encode_is_copy() -> bool {
1508            false
1509        }
1510
1511        #[inline(always)]
1512        fn decode_is_copy() -> bool {
1513            false
1514        }
1515    }
1516
1517    impl fidl::encoding::ValueTypeMarker for StartResult {
1518        type Borrowed<'a> = Self;
1519        #[inline(always)]
1520        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1521            *value
1522        }
1523    }
1524
1525    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StartResult {
1526        #[inline]
1527        unsafe fn encode(
1528            self,
1529            encoder: &mut fidl::encoding::Encoder<'_, D>,
1530            offset: usize,
1531            _depth: fidl::encoding::Depth,
1532        ) -> fidl::Result<()> {
1533            encoder.debug_check_bounds::<Self>(offset);
1534            encoder.write_num(self.into_primitive(), offset);
1535            Ok(())
1536        }
1537    }
1538
1539    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartResult {
1540        #[inline(always)]
1541        fn new_empty() -> Self {
1542            Self::unknown()
1543        }
1544
1545        #[inline]
1546        unsafe fn decode(
1547            &mut self,
1548            decoder: &mut fidl::encoding::Decoder<'_, D>,
1549            offset: usize,
1550            _depth: fidl::encoding::Depth,
1551        ) -> fidl::Result<()> {
1552            decoder.debug_check_bounds::<Self>(offset);
1553            let prim = decoder.read_num::<u8>(offset);
1554
1555            *self = Self::from_primitive_allow_unknown(prim);
1556            Ok(())
1557        }
1558    }
1559    unsafe impl fidl::encoding::TypeMarker for StopResult {
1560        type Owned = Self;
1561
1562        #[inline(always)]
1563        fn inline_align(_context: fidl::encoding::Context) -> usize {
1564            std::mem::align_of::<u8>()
1565        }
1566
1567        #[inline(always)]
1568        fn inline_size(_context: fidl::encoding::Context) -> usize {
1569            std::mem::size_of::<u8>()
1570        }
1571
1572        #[inline(always)]
1573        fn encode_is_copy() -> bool {
1574            false
1575        }
1576
1577        #[inline(always)]
1578        fn decode_is_copy() -> bool {
1579            false
1580        }
1581    }
1582
1583    impl fidl::encoding::ValueTypeMarker for StopResult {
1584        type Borrowed<'a> = Self;
1585        #[inline(always)]
1586        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1587            *value
1588        }
1589    }
1590
1591    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StopResult {
1592        #[inline]
1593        unsafe fn encode(
1594            self,
1595            encoder: &mut fidl::encoding::Encoder<'_, D>,
1596            offset: usize,
1597            _depth: fidl::encoding::Depth,
1598        ) -> fidl::Result<()> {
1599            encoder.debug_check_bounds::<Self>(offset);
1600            encoder.write_num(self.into_primitive(), offset);
1601            Ok(())
1602        }
1603    }
1604
1605    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopResult {
1606        #[inline(always)]
1607        fn new_empty() -> Self {
1608            Self::unknown()
1609        }
1610
1611        #[inline]
1612        unsafe fn decode(
1613            &mut self,
1614            decoder: &mut fidl::encoding::Decoder<'_, D>,
1615            offset: usize,
1616            _depth: fidl::encoding::Depth,
1617        ) -> fidl::Result<()> {
1618            decoder.debug_check_bounds::<Self>(offset);
1619            let prim = decoder.read_num::<u8>(offset);
1620
1621            *self = Self::from_primitive_allow_unknown(prim);
1622            Ok(())
1623        }
1624    }
1625    unsafe impl fidl::encoding::TypeMarker for WlanAssocResult {
1626        type Owned = Self;
1627
1628        #[inline(always)]
1629        fn inline_align(_context: fidl::encoding::Context) -> usize {
1630            std::mem::align_of::<u8>()
1631        }
1632
1633        #[inline(always)]
1634        fn inline_size(_context: fidl::encoding::Context) -> usize {
1635            std::mem::size_of::<u8>()
1636        }
1637
1638        #[inline(always)]
1639        fn encode_is_copy() -> bool {
1640            false
1641        }
1642
1643        #[inline(always)]
1644        fn decode_is_copy() -> bool {
1645            false
1646        }
1647    }
1648
1649    impl fidl::encoding::ValueTypeMarker for WlanAssocResult {
1650        type Borrowed<'a> = Self;
1651        #[inline(always)]
1652        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1653            *value
1654        }
1655    }
1656
1657    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1658        for WlanAssocResult
1659    {
1660        #[inline]
1661        unsafe fn encode(
1662            self,
1663            encoder: &mut fidl::encoding::Encoder<'_, D>,
1664            offset: usize,
1665            _depth: fidl::encoding::Depth,
1666        ) -> fidl::Result<()> {
1667            encoder.debug_check_bounds::<Self>(offset);
1668            encoder.write_num(self.into_primitive(), offset);
1669            Ok(())
1670        }
1671    }
1672
1673    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAssocResult {
1674        #[inline(always)]
1675        fn new_empty() -> Self {
1676            Self::unknown()
1677        }
1678
1679        #[inline]
1680        unsafe fn decode(
1681            &mut self,
1682            decoder: &mut fidl::encoding::Decoder<'_, D>,
1683            offset: usize,
1684            _depth: fidl::encoding::Depth,
1685        ) -> fidl::Result<()> {
1686            decoder.debug_check_bounds::<Self>(offset);
1687            let prim = decoder.read_num::<u8>(offset);
1688
1689            *self = Self::from_primitive_allow_unknown(prim);
1690            Ok(())
1691        }
1692    }
1693    unsafe impl fidl::encoding::TypeMarker for WlanAuthResult {
1694        type Owned = Self;
1695
1696        #[inline(always)]
1697        fn inline_align(_context: fidl::encoding::Context) -> usize {
1698            std::mem::align_of::<u8>()
1699        }
1700
1701        #[inline(always)]
1702        fn inline_size(_context: fidl::encoding::Context) -> usize {
1703            std::mem::size_of::<u8>()
1704        }
1705
1706        #[inline(always)]
1707        fn encode_is_copy() -> bool {
1708            false
1709        }
1710
1711        #[inline(always)]
1712        fn decode_is_copy() -> bool {
1713            false
1714        }
1715    }
1716
1717    impl fidl::encoding::ValueTypeMarker for WlanAuthResult {
1718        type Borrowed<'a> = Self;
1719        #[inline(always)]
1720        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1721            *value
1722        }
1723    }
1724
1725    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanAuthResult {
1726        #[inline]
1727        unsafe fn encode(
1728            self,
1729            encoder: &mut fidl::encoding::Encoder<'_, D>,
1730            offset: usize,
1731            _depth: fidl::encoding::Depth,
1732        ) -> fidl::Result<()> {
1733            encoder.debug_check_bounds::<Self>(offset);
1734            encoder.write_num(self.into_primitive(), offset);
1735            Ok(())
1736        }
1737    }
1738
1739    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAuthResult {
1740        #[inline(always)]
1741        fn new_empty() -> Self {
1742            Self::unknown()
1743        }
1744
1745        #[inline]
1746        unsafe fn decode(
1747            &mut self,
1748            decoder: &mut fidl::encoding::Decoder<'_, D>,
1749            offset: usize,
1750            _depth: fidl::encoding::Depth,
1751        ) -> fidl::Result<()> {
1752            decoder.debug_check_bounds::<Self>(offset);
1753            let prim = decoder.read_num::<u8>(offset);
1754
1755            *self = Self::from_primitive_allow_unknown(prim);
1756            Ok(())
1757        }
1758    }
1759    unsafe impl fidl::encoding::TypeMarker for WlanAuthType {
1760        type Owned = Self;
1761
1762        #[inline(always)]
1763        fn inline_align(_context: fidl::encoding::Context) -> usize {
1764            std::mem::align_of::<u8>()
1765        }
1766
1767        #[inline(always)]
1768        fn inline_size(_context: fidl::encoding::Context) -> usize {
1769            std::mem::size_of::<u8>()
1770        }
1771
1772        #[inline(always)]
1773        fn encode_is_copy() -> bool {
1774            false
1775        }
1776
1777        #[inline(always)]
1778        fn decode_is_copy() -> bool {
1779            false
1780        }
1781    }
1782
1783    impl fidl::encoding::ValueTypeMarker for WlanAuthType {
1784        type Borrowed<'a> = Self;
1785        #[inline(always)]
1786        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1787            *value
1788        }
1789    }
1790
1791    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanAuthType {
1792        #[inline]
1793        unsafe fn encode(
1794            self,
1795            encoder: &mut fidl::encoding::Encoder<'_, D>,
1796            offset: usize,
1797            _depth: fidl::encoding::Depth,
1798        ) -> fidl::Result<()> {
1799            encoder.debug_check_bounds::<Self>(offset);
1800            encoder.write_num(self.into_primitive(), offset);
1801            Ok(())
1802        }
1803    }
1804
1805    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanAuthType {
1806        #[inline(always)]
1807        fn new_empty() -> Self {
1808            Self::unknown()
1809        }
1810
1811        #[inline]
1812        unsafe fn decode(
1813            &mut self,
1814            decoder: &mut fidl::encoding::Decoder<'_, D>,
1815            offset: usize,
1816            _depth: fidl::encoding::Depth,
1817        ) -> fidl::Result<()> {
1818            decoder.debug_check_bounds::<Self>(offset);
1819            let prim = decoder.read_num::<u8>(offset);
1820
1821            *self = Self::from_primitive_allow_unknown(prim);
1822            Ok(())
1823        }
1824    }
1825    unsafe impl fidl::encoding::TypeMarker for WlanScanResult {
1826        type Owned = Self;
1827
1828        #[inline(always)]
1829        fn inline_align(_context: fidl::encoding::Context) -> usize {
1830            std::mem::align_of::<u8>()
1831        }
1832
1833        #[inline(always)]
1834        fn inline_size(_context: fidl::encoding::Context) -> usize {
1835            std::mem::size_of::<u8>()
1836        }
1837
1838        #[inline(always)]
1839        fn encode_is_copy() -> bool {
1840            false
1841        }
1842
1843        #[inline(always)]
1844        fn decode_is_copy() -> bool {
1845            false
1846        }
1847    }
1848
1849    impl fidl::encoding::ValueTypeMarker for WlanScanResult {
1850        type Borrowed<'a> = Self;
1851        #[inline(always)]
1852        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1853            *value
1854        }
1855    }
1856
1857    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanScanResult {
1858        #[inline]
1859        unsafe fn encode(
1860            self,
1861            encoder: &mut fidl::encoding::Encoder<'_, D>,
1862            offset: usize,
1863            _depth: fidl::encoding::Depth,
1864        ) -> fidl::Result<()> {
1865            encoder.debug_check_bounds::<Self>(offset);
1866            encoder.write_num(self.into_primitive(), offset);
1867            Ok(())
1868        }
1869    }
1870
1871    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanScanResult {
1872        #[inline(always)]
1873        fn new_empty() -> Self {
1874            Self::unknown()
1875        }
1876
1877        #[inline]
1878        unsafe fn decode(
1879            &mut self,
1880            decoder: &mut fidl::encoding::Decoder<'_, D>,
1881            offset: usize,
1882            _depth: fidl::encoding::Depth,
1883        ) -> fidl::Result<()> {
1884            decoder.debug_check_bounds::<Self>(offset);
1885            let prim = decoder.read_num::<u8>(offset);
1886
1887            *self = Self::from_primitive_allow_unknown(prim);
1888            Ok(())
1889        }
1890    }
1891    unsafe impl fidl::encoding::TypeMarker for WlanScanType {
1892        type Owned = Self;
1893
1894        #[inline(always)]
1895        fn inline_align(_context: fidl::encoding::Context) -> usize {
1896            std::mem::align_of::<u8>()
1897        }
1898
1899        #[inline(always)]
1900        fn inline_size(_context: fidl::encoding::Context) -> usize {
1901            std::mem::size_of::<u8>()
1902        }
1903
1904        #[inline(always)]
1905        fn encode_is_copy() -> bool {
1906            false
1907        }
1908
1909        #[inline(always)]
1910        fn decode_is_copy() -> bool {
1911            false
1912        }
1913    }
1914
1915    impl fidl::encoding::ValueTypeMarker for WlanScanType {
1916        type Borrowed<'a> = Self;
1917        #[inline(always)]
1918        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1919            *value
1920        }
1921    }
1922
1923    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanScanType {
1924        #[inline]
1925        unsafe fn encode(
1926            self,
1927            encoder: &mut fidl::encoding::Encoder<'_, D>,
1928            offset: usize,
1929            _depth: fidl::encoding::Depth,
1930        ) -> fidl::Result<()> {
1931            encoder.debug_check_bounds::<Self>(offset);
1932            encoder.write_num(self.into_primitive(), offset);
1933            Ok(())
1934        }
1935    }
1936
1937    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanScanType {
1938        #[inline(always)]
1939        fn new_empty() -> Self {
1940            Self::unknown()
1941        }
1942
1943        #[inline]
1944        unsafe fn decode(
1945            &mut self,
1946            decoder: &mut fidl::encoding::Decoder<'_, D>,
1947            offset: usize,
1948            _depth: fidl::encoding::Depth,
1949        ) -> fidl::Result<()> {
1950            decoder.debug_check_bounds::<Self>(offset);
1951            let prim = decoder.read_num::<u8>(offset);
1952
1953            *self = Self::from_primitive_allow_unknown(prim);
1954            Ok(())
1955        }
1956    }
1957
1958    impl fidl::encoding::ValueTypeMarker for WlanFullmacChannelSwitchInfo {
1959        type Borrowed<'a> = &'a Self;
1960        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1961            value
1962        }
1963    }
1964
1965    unsafe impl fidl::encoding::TypeMarker for WlanFullmacChannelSwitchInfo {
1966        type Owned = Self;
1967
1968        #[inline(always)]
1969        fn inline_align(_context: fidl::encoding::Context) -> usize {
1970            4
1971        }
1972
1973        #[inline(always)]
1974        fn inline_size(_context: fidl::encoding::Context) -> usize {
1975            12
1976        }
1977    }
1978
1979    unsafe impl<D: fidl::encoding::ResourceDialect>
1980        fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D> for &WlanFullmacChannelSwitchInfo
1981    {
1982        #[inline]
1983        unsafe fn encode(
1984            self,
1985            encoder: &mut fidl::encoding::Encoder<'_, D>,
1986            offset: usize,
1987            _depth: fidl::encoding::Depth,
1988        ) -> fidl::Result<()> {
1989            encoder.debug_check_bounds::<WlanFullmacChannelSwitchInfo>(offset);
1990            // Delegate to tuple encoding.
1991            fidl::encoding::Encode::<WlanFullmacChannelSwitchInfo, D>::encode(
1992                (
1993                    <fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::ValueTypeMarker>::borrow(&self.new_primary_channel),
1994                    <fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth as fidl::encoding::ValueTypeMarker>::borrow(&self.bandwidth),
1995                    <fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_secondary_80_channel),
1996                ),
1997                encoder, offset, _depth
1998            )
1999        }
2000    }
2001    unsafe impl<
2002        D: fidl::encoding::ResourceDialect,
2003        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D>,
2004        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth, D>,
2005        T2: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D>,
2006    > fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D> for (T0, T1, T2)
2007    {
2008        #[inline]
2009        unsafe fn encode(
2010            self,
2011            encoder: &mut fidl::encoding::Encoder<'_, D>,
2012            offset: usize,
2013            depth: fidl::encoding::Depth,
2014        ) -> fidl::Result<()> {
2015            encoder.debug_check_bounds::<WlanFullmacChannelSwitchInfo>(offset);
2016            // Zero out padding regions. There's no need to apply masks
2017            // because the unmasked parts will be overwritten by fields.
2018            unsafe {
2019                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2020                (ptr as *mut u32).write_unaligned(0);
2021            }
2022            unsafe {
2023                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2024                (ptr as *mut u32).write_unaligned(0);
2025            }
2026            // Write the fields.
2027            self.0.encode(encoder, offset + 0, depth)?;
2028            self.1.encode(encoder, offset + 4, depth)?;
2029            self.2.encode(encoder, offset + 8, depth)?;
2030            Ok(())
2031        }
2032    }
2033
2034    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2035        for WlanFullmacChannelSwitchInfo
2036    {
2037        #[inline(always)]
2038        fn new_empty() -> Self {
2039            Self {
2040                new_primary_channel: fidl::new_empty!(
2041                    fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
2042                    D
2043                ),
2044                bandwidth: fidl::new_empty!(
2045                    fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth,
2046                    D
2047                ),
2048                vht_secondary_80_channel: fidl::new_empty!(
2049                    fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
2050                    D
2051                ),
2052            }
2053        }
2054
2055        #[inline]
2056        unsafe fn decode(
2057            &mut self,
2058            decoder: &mut fidl::encoding::Decoder<'_, D>,
2059            offset: usize,
2060            _depth: fidl::encoding::Depth,
2061        ) -> fidl::Result<()> {
2062            decoder.debug_check_bounds::<Self>(offset);
2063            // Verify that padding bytes are zero.
2064            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2065            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2066            let mask = 0xffff0000u32;
2067            let maskedval = padval & mask;
2068            if maskedval != 0 {
2069                return Err(fidl::Error::NonZeroPadding {
2070                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2071                });
2072            }
2073            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2074            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2075            let mask = 0xffff0000u32;
2076            let maskedval = padval & mask;
2077            if maskedval != 0 {
2078                return Err(fidl::Error::NonZeroPadding {
2079                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2080                });
2081            }
2082            fidl::decode!(
2083                fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
2084                D,
2085                &mut self.new_primary_channel,
2086                decoder,
2087                offset + 0,
2088                _depth
2089            )?;
2090            fidl::decode!(
2091                fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth,
2092                D,
2093                &mut self.bandwidth,
2094                decoder,
2095                offset + 4,
2096                _depth
2097            )?;
2098            fidl::decode!(
2099                fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
2100                D,
2101                &mut self.vht_secondary_80_channel,
2102                decoder,
2103                offset + 8,
2104                _depth
2105            )?;
2106            Ok(())
2107        }
2108    }
2109
2110    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnChannelSwitchRequest {
2111        type Borrowed<'a> = &'a Self;
2112        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2113            value
2114        }
2115    }
2116
2117    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnChannelSwitchRequest {
2118        type Owned = Self;
2119
2120        #[inline(always)]
2121        fn inline_align(_context: fidl::encoding::Context) -> usize {
2122            4
2123        }
2124
2125        #[inline(always)]
2126        fn inline_size(_context: fidl::encoding::Context) -> usize {
2127            12
2128        }
2129    }
2130
2131    unsafe impl<D: fidl::encoding::ResourceDialect>
2132        fidl::encoding::Encode<WlanFullmacImplIfcOnChannelSwitchRequest, D>
2133        for &WlanFullmacImplIfcOnChannelSwitchRequest
2134    {
2135        #[inline]
2136        unsafe fn encode(
2137            self,
2138            encoder: &mut fidl::encoding::Encoder<'_, D>,
2139            offset: usize,
2140            _depth: fidl::encoding::Depth,
2141        ) -> fidl::Result<()> {
2142            encoder.debug_check_bounds::<WlanFullmacImplIfcOnChannelSwitchRequest>(offset);
2143            // Delegate to tuple encoding.
2144            fidl::encoding::Encode::<WlanFullmacImplIfcOnChannelSwitchRequest, D>::encode(
2145                (<WlanFullmacChannelSwitchInfo as fidl::encoding::ValueTypeMarker>::borrow(
2146                    &self.ind,
2147                ),),
2148                encoder,
2149                offset,
2150                _depth,
2151            )
2152        }
2153    }
2154    unsafe impl<
2155        D: fidl::encoding::ResourceDialect,
2156        T0: fidl::encoding::Encode<WlanFullmacChannelSwitchInfo, D>,
2157    > fidl::encoding::Encode<WlanFullmacImplIfcOnChannelSwitchRequest, 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::<WlanFullmacImplIfcOnChannelSwitchRequest>(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 WlanFullmacImplIfcOnChannelSwitchRequest
2177    {
2178        #[inline(always)]
2179        fn new_empty() -> Self {
2180            Self { ind: fidl::new_empty!(WlanFullmacChannelSwitchInfo, 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!(
2193                WlanFullmacChannelSwitchInfo,
2194                D,
2195                &mut self.ind,
2196                decoder,
2197                offset + 0,
2198                _depth
2199            )?;
2200            Ok(())
2201        }
2202    }
2203
2204    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnWmmStatusRespRequest {
2205        type Borrowed<'a> = &'a Self;
2206        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2207            value
2208        }
2209    }
2210
2211    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnWmmStatusRespRequest {
2212        type Owned = Self;
2213
2214        #[inline(always)]
2215        fn inline_align(_context: fidl::encoding::Context) -> usize {
2216            4
2217        }
2218
2219        #[inline(always)]
2220        fn inline_size(_context: fidl::encoding::Context) -> usize {
2221            40
2222        }
2223    }
2224
2225    unsafe impl<D: fidl::encoding::ResourceDialect>
2226        fidl::encoding::Encode<WlanFullmacImplIfcOnWmmStatusRespRequest, D>
2227        for &WlanFullmacImplIfcOnWmmStatusRespRequest
2228    {
2229        #[inline]
2230        unsafe fn encode(
2231            self,
2232            encoder: &mut fidl::encoding::Encoder<'_, D>,
2233            offset: usize,
2234            _depth: fidl::encoding::Depth,
2235        ) -> fidl::Result<()> {
2236            encoder.debug_check_bounds::<WlanFullmacImplIfcOnWmmStatusRespRequest>(offset);
2237            // Delegate to tuple encoding.
2238            fidl::encoding::Encode::<WlanFullmacImplIfcOnWmmStatusRespRequest, D>::encode(
2239                (
2240                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
2241                    <fidl_fuchsia_wlan_driver_common::WlanWmmParameters as fidl::encoding::ValueTypeMarker>::borrow(&self.wmm_params),
2242                ),
2243                encoder, offset, _depth
2244            )
2245        }
2246    }
2247    unsafe impl<
2248        D: fidl::encoding::ResourceDialect,
2249        T0: fidl::encoding::Encode<i32, D>,
2250        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_driver_common::WlanWmmParameters, D>,
2251    > fidl::encoding::Encode<WlanFullmacImplIfcOnWmmStatusRespRequest, D> for (T0, T1)
2252    {
2253        #[inline]
2254        unsafe fn encode(
2255            self,
2256            encoder: &mut fidl::encoding::Encoder<'_, D>,
2257            offset: usize,
2258            depth: fidl::encoding::Depth,
2259        ) -> fidl::Result<()> {
2260            encoder.debug_check_bounds::<WlanFullmacImplIfcOnWmmStatusRespRequest>(offset);
2261            // Zero out padding regions. There's no need to apply masks
2262            // because the unmasked parts will be overwritten by fields.
2263            unsafe {
2264                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(36);
2265                (ptr as *mut u32).write_unaligned(0);
2266            }
2267            // Write the fields.
2268            self.0.encode(encoder, offset + 0, depth)?;
2269            self.1.encode(encoder, offset + 4, depth)?;
2270            Ok(())
2271        }
2272    }
2273
2274    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2275        for WlanFullmacImplIfcOnWmmStatusRespRequest
2276    {
2277        #[inline(always)]
2278        fn new_empty() -> Self {
2279            Self {
2280                status: fidl::new_empty!(i32, D),
2281                wmm_params: fidl::new_empty!(fidl_fuchsia_wlan_driver_common::WlanWmmParameters, D),
2282            }
2283        }
2284
2285        #[inline]
2286        unsafe fn decode(
2287            &mut self,
2288            decoder: &mut fidl::encoding::Decoder<'_, D>,
2289            offset: usize,
2290            _depth: fidl::encoding::Depth,
2291        ) -> fidl::Result<()> {
2292            decoder.debug_check_bounds::<Self>(offset);
2293            // Verify that padding bytes are zero.
2294            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(36) };
2295            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2296            let mask = 0xffff0000u32;
2297            let maskedval = padval & mask;
2298            if maskedval != 0 {
2299                return Err(fidl::Error::NonZeroPadding {
2300                    padding_start: offset + 36 + ((mask as u64).trailing_zeros() / 8) as usize,
2301                });
2302            }
2303            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
2304            fidl::decode!(
2305                fidl_fuchsia_wlan_driver_common::WlanWmmParameters,
2306                D,
2307                &mut self.wmm_params,
2308                decoder,
2309                offset + 4,
2310                _depth
2311            )?;
2312            Ok(())
2313        }
2314    }
2315
2316    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2317        type Borrowed<'a> = &'a Self;
2318        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2319            value
2320        }
2321    }
2322
2323    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeFrameRxRequest {
2324        type Owned = Self;
2325
2326        #[inline(always)]
2327        fn inline_align(_context: fidl::encoding::Context) -> usize {
2328            8
2329        }
2330
2331        #[inline(always)]
2332        fn inline_size(_context: fidl::encoding::Context) -> usize {
2333            16
2334        }
2335    }
2336
2337    unsafe impl<D: fidl::encoding::ResourceDialect>
2338        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D>
2339        for &WlanFullmacImplIfcSaeFrameRxRequest
2340    {
2341        #[inline]
2342        unsafe fn encode(
2343            self,
2344            encoder: &mut fidl::encoding::Encoder<'_, D>,
2345            offset: usize,
2346            _depth: fidl::encoding::Depth,
2347        ) -> fidl::Result<()> {
2348            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2349            // Delegate to tuple encoding.
2350            fidl::encoding::Encode::<WlanFullmacImplIfcSaeFrameRxRequest, D>::encode(
2351                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2352                encoder,
2353                offset,
2354                _depth,
2355            )
2356        }
2357    }
2358    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2359        fidl::encoding::Encode<WlanFullmacImplIfcSaeFrameRxRequest, D> for (T0,)
2360    {
2361        #[inline]
2362        unsafe fn encode(
2363            self,
2364            encoder: &mut fidl::encoding::Encoder<'_, D>,
2365            offset: usize,
2366            depth: fidl::encoding::Depth,
2367        ) -> fidl::Result<()> {
2368            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeFrameRxRequest>(offset);
2369            // Zero out padding regions. There's no need to apply masks
2370            // because the unmasked parts will be overwritten by fields.
2371            // Write the fields.
2372            self.0.encode(encoder, offset + 0, depth)?;
2373            Ok(())
2374        }
2375    }
2376
2377    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2378        for WlanFullmacImplIfcSaeFrameRxRequest
2379    {
2380        #[inline(always)]
2381        fn new_empty() -> Self {
2382            Self { frame: fidl::new_empty!(SaeFrame, D) }
2383        }
2384
2385        #[inline]
2386        unsafe fn decode(
2387            &mut self,
2388            decoder: &mut fidl::encoding::Decoder<'_, D>,
2389            offset: usize,
2390            _depth: fidl::encoding::Depth,
2391        ) -> fidl::Result<()> {
2392            decoder.debug_check_bounds::<Self>(offset);
2393            // Verify that padding bytes are zero.
2394            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2395            Ok(())
2396        }
2397    }
2398
2399    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSignalReportRequest {
2400        type Borrowed<'a> = &'a Self;
2401        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2402            value
2403        }
2404    }
2405
2406    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSignalReportRequest {
2407        type Owned = Self;
2408
2409        #[inline(always)]
2410        fn inline_align(_context: fidl::encoding::Context) -> usize {
2411            8
2412        }
2413
2414        #[inline(always)]
2415        fn inline_size(_context: fidl::encoding::Context) -> usize {
2416            16
2417        }
2418    }
2419
2420    unsafe impl<D: fidl::encoding::ResourceDialect>
2421        fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D>
2422        for &WlanFullmacImplIfcSignalReportRequest
2423    {
2424        #[inline]
2425        unsafe fn encode(
2426            self,
2427            encoder: &mut fidl::encoding::Encoder<'_, D>,
2428            offset: usize,
2429            _depth: fidl::encoding::Depth,
2430        ) -> fidl::Result<()> {
2431            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2432            // Delegate to tuple encoding.
2433            fidl::encoding::Encode::<WlanFullmacImplIfcSignalReportRequest, D>::encode(
2434                (<WlanFullmacSignalReportIndication as fidl::encoding::ValueTypeMarker>::borrow(
2435                    &self.ind,
2436                ),),
2437                encoder,
2438                offset,
2439                _depth,
2440            )
2441        }
2442    }
2443    unsafe impl<
2444        D: fidl::encoding::ResourceDialect,
2445        T0: fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>,
2446    > fidl::encoding::Encode<WlanFullmacImplIfcSignalReportRequest, D> for (T0,)
2447    {
2448        #[inline]
2449        unsafe fn encode(
2450            self,
2451            encoder: &mut fidl::encoding::Encoder<'_, D>,
2452            offset: usize,
2453            depth: fidl::encoding::Depth,
2454        ) -> fidl::Result<()> {
2455            encoder.debug_check_bounds::<WlanFullmacImplIfcSignalReportRequest>(offset);
2456            // Zero out padding regions. There's no need to apply masks
2457            // because the unmasked parts will be overwritten by fields.
2458            // Write the fields.
2459            self.0.encode(encoder, offset + 0, depth)?;
2460            Ok(())
2461        }
2462    }
2463
2464    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2465        for WlanFullmacImplIfcSignalReportRequest
2466    {
2467        #[inline(always)]
2468        fn new_empty() -> Self {
2469            Self { ind: fidl::new_empty!(WlanFullmacSignalReportIndication, D) }
2470        }
2471
2472        #[inline]
2473        unsafe fn decode(
2474            &mut self,
2475            decoder: &mut fidl::encoding::Decoder<'_, D>,
2476            offset: usize,
2477            _depth: fidl::encoding::Depth,
2478        ) -> fidl::Result<()> {
2479            decoder.debug_check_bounds::<Self>(offset);
2480            // Verify that padding bytes are zero.
2481            fidl::decode!(
2482                WlanFullmacSignalReportIndication,
2483                D,
2484                &mut self.ind,
2485                decoder,
2486                offset + 0,
2487                _depth
2488            )?;
2489            Ok(())
2490        }
2491    }
2492
2493    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeFrameTxRequest {
2494        type Borrowed<'a> = &'a Self;
2495        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2496            value
2497        }
2498    }
2499
2500    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeFrameTxRequest {
2501        type Owned = Self;
2502
2503        #[inline(always)]
2504        fn inline_align(_context: fidl::encoding::Context) -> usize {
2505            8
2506        }
2507
2508        #[inline(always)]
2509        fn inline_size(_context: fidl::encoding::Context) -> usize {
2510            16
2511        }
2512    }
2513
2514    unsafe impl<D: fidl::encoding::ResourceDialect>
2515        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D>
2516        for &WlanFullmacImplSaeFrameTxRequest
2517    {
2518        #[inline]
2519        unsafe fn encode(
2520            self,
2521            encoder: &mut fidl::encoding::Encoder<'_, D>,
2522            offset: usize,
2523            _depth: fidl::encoding::Depth,
2524        ) -> fidl::Result<()> {
2525            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2526            // Delegate to tuple encoding.
2527            fidl::encoding::Encode::<WlanFullmacImplSaeFrameTxRequest, D>::encode(
2528                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
2529                encoder,
2530                offset,
2531                _depth,
2532            )
2533        }
2534    }
2535    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
2536        fidl::encoding::Encode<WlanFullmacImplSaeFrameTxRequest, D> for (T0,)
2537    {
2538        #[inline]
2539        unsafe fn encode(
2540            self,
2541            encoder: &mut fidl::encoding::Encoder<'_, D>,
2542            offset: usize,
2543            depth: fidl::encoding::Depth,
2544        ) -> fidl::Result<()> {
2545            encoder.debug_check_bounds::<WlanFullmacImplSaeFrameTxRequest>(offset);
2546            // Zero out padding regions. There's no need to apply masks
2547            // because the unmasked parts will be overwritten by fields.
2548            // Write the fields.
2549            self.0.encode(encoder, offset + 0, depth)?;
2550            Ok(())
2551        }
2552    }
2553
2554    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2555        for WlanFullmacImplSaeFrameTxRequest
2556    {
2557        #[inline(always)]
2558        fn new_empty() -> Self {
2559            Self { frame: fidl::new_empty!(SaeFrame, D) }
2560        }
2561
2562        #[inline]
2563        unsafe fn decode(
2564            &mut self,
2565            decoder: &mut fidl::encoding::Decoder<'_, D>,
2566            offset: usize,
2567            _depth: fidl::encoding::Depth,
2568        ) -> fidl::Result<()> {
2569            decoder.debug_check_bounds::<Self>(offset);
2570            // Verify that padding bytes are zero.
2571            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
2572            Ok(())
2573        }
2574    }
2575
2576    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysResponse {
2577        type Borrowed<'a> = &'a Self;
2578        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2579            value
2580        }
2581    }
2582
2583    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysResponse {
2584        type Owned = Self;
2585
2586        #[inline(always)]
2587        fn inline_align(_context: fidl::encoding::Context) -> usize {
2588            8
2589        }
2590
2591        #[inline(always)]
2592        fn inline_size(_context: fidl::encoding::Context) -> usize {
2593            16
2594        }
2595    }
2596
2597    unsafe impl<D: fidl::encoding::ResourceDialect>
2598        fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D>
2599        for &WlanFullmacImplSetKeysResponse
2600    {
2601        #[inline]
2602        unsafe fn encode(
2603            self,
2604            encoder: &mut fidl::encoding::Encoder<'_, D>,
2605            offset: usize,
2606            _depth: fidl::encoding::Depth,
2607        ) -> fidl::Result<()> {
2608            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2609            // Delegate to tuple encoding.
2610            fidl::encoding::Encode::<WlanFullmacImplSetKeysResponse, D>::encode(
2611                (<WlanFullmacSetKeysResp as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
2612                encoder,
2613                offset,
2614                _depth,
2615            )
2616        }
2617    }
2618    unsafe impl<
2619        D: fidl::encoding::ResourceDialect,
2620        T0: fidl::encoding::Encode<WlanFullmacSetKeysResp, D>,
2621    > fidl::encoding::Encode<WlanFullmacImplSetKeysResponse, D> for (T0,)
2622    {
2623        #[inline]
2624        unsafe fn encode(
2625            self,
2626            encoder: &mut fidl::encoding::Encoder<'_, D>,
2627            offset: usize,
2628            depth: fidl::encoding::Depth,
2629        ) -> fidl::Result<()> {
2630            encoder.debug_check_bounds::<WlanFullmacImplSetKeysResponse>(offset);
2631            // Zero out padding regions. There's no need to apply masks
2632            // because the unmasked parts will be overwritten by fields.
2633            // Write the fields.
2634            self.0.encode(encoder, offset + 0, depth)?;
2635            Ok(())
2636        }
2637    }
2638
2639    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2640        for WlanFullmacImplSetKeysResponse
2641    {
2642        #[inline(always)]
2643        fn new_empty() -> Self {
2644            Self { resp: fidl::new_empty!(WlanFullmacSetKeysResp, D) }
2645        }
2646
2647        #[inline]
2648        unsafe fn decode(
2649            &mut self,
2650            decoder: &mut fidl::encoding::Decoder<'_, D>,
2651            offset: usize,
2652            _depth: fidl::encoding::Depth,
2653        ) -> fidl::Result<()> {
2654            decoder.debug_check_bounds::<Self>(offset);
2655            // Verify that padding bytes are zero.
2656            fidl::decode!(WlanFullmacSetKeysResp, D, &mut self.resp, decoder, offset + 0, _depth)?;
2657            Ok(())
2658        }
2659    }
2660
2661    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetMacAddressRequest {
2662        type Borrowed<'a> = &'a Self;
2663        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2664            value
2665        }
2666    }
2667
2668    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetMacAddressRequest {
2669        type Owned = Self;
2670
2671        #[inline(always)]
2672        fn inline_align(_context: fidl::encoding::Context) -> usize {
2673            1
2674        }
2675
2676        #[inline(always)]
2677        fn inline_size(_context: fidl::encoding::Context) -> usize {
2678            6
2679        }
2680        #[inline(always)]
2681        fn encode_is_copy() -> bool {
2682            true
2683        }
2684
2685        #[inline(always)]
2686        fn decode_is_copy() -> bool {
2687            true
2688        }
2689    }
2690
2691    unsafe impl<D: fidl::encoding::ResourceDialect>
2692        fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D>
2693        for &WlanFullmacImplSetMacAddressRequest
2694    {
2695        #[inline]
2696        unsafe fn encode(
2697            self,
2698            encoder: &mut fidl::encoding::Encoder<'_, D>,
2699            offset: usize,
2700            _depth: fidl::encoding::Depth,
2701        ) -> fidl::Result<()> {
2702            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2703            unsafe {
2704                // Copy the object into the buffer.
2705                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2706                (buf_ptr as *mut WlanFullmacImplSetMacAddressRequest)
2707                    .write_unaligned((self as *const WlanFullmacImplSetMacAddressRequest).read());
2708                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2709                // done second because the memcpy will write garbage to these bytes.
2710            }
2711            Ok(())
2712        }
2713    }
2714    unsafe impl<
2715        D: fidl::encoding::ResourceDialect,
2716        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2717    > fidl::encoding::Encode<WlanFullmacImplSetMacAddressRequest, D> for (T0,)
2718    {
2719        #[inline]
2720        unsafe fn encode(
2721            self,
2722            encoder: &mut fidl::encoding::Encoder<'_, D>,
2723            offset: usize,
2724            depth: fidl::encoding::Depth,
2725        ) -> fidl::Result<()> {
2726            encoder.debug_check_bounds::<WlanFullmacImplSetMacAddressRequest>(offset);
2727            // Zero out padding regions. There's no need to apply masks
2728            // because the unmasked parts will be overwritten by fields.
2729            // Write the fields.
2730            self.0.encode(encoder, offset + 0, depth)?;
2731            Ok(())
2732        }
2733    }
2734
2735    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2736        for WlanFullmacImplSetMacAddressRequest
2737    {
2738        #[inline(always)]
2739        fn new_empty() -> Self {
2740            Self { mac_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
2741        }
2742
2743        #[inline]
2744        unsafe fn decode(
2745            &mut self,
2746            decoder: &mut fidl::encoding::Decoder<'_, D>,
2747            offset: usize,
2748            _depth: fidl::encoding::Depth,
2749        ) -> fidl::Result<()> {
2750            decoder.debug_check_bounds::<Self>(offset);
2751            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2752            // Verify that padding bytes are zero.
2753            // Copy from the buffer into the object.
2754            unsafe {
2755                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
2756            }
2757            Ok(())
2758        }
2759    }
2760
2761    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2762        type Borrowed<'a> = &'a Self;
2763        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2764            value
2765        }
2766    }
2767
2768    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceHistogramStatsResponse {
2769        type Owned = Self;
2770
2771        #[inline(always)]
2772        fn inline_align(_context: fidl::encoding::Context) -> usize {
2773            8
2774        }
2775
2776        #[inline(always)]
2777        fn inline_size(_context: fidl::encoding::Context) -> usize {
2778            16
2779        }
2780    }
2781
2782    unsafe impl<D: fidl::encoding::ResourceDialect>
2783        fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D>
2784        for &WlanFullmacImplGetIfaceHistogramStatsResponse
2785    {
2786        #[inline]
2787        unsafe fn encode(
2788            self,
2789            encoder: &mut fidl::encoding::Encoder<'_, D>,
2790            offset: usize,
2791            _depth: fidl::encoding::Depth,
2792        ) -> fidl::Result<()> {
2793            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2794            // Delegate to tuple encoding.
2795            fidl::encoding::Encode::<WlanFullmacImplGetIfaceHistogramStatsResponse, D>::encode(
2796                (
2797                    <fidl_fuchsia_wlan_stats_common::IfaceHistogramStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2798                ),
2799                encoder, offset, _depth
2800            )
2801        }
2802    }
2803    unsafe impl<
2804        D: fidl::encoding::ResourceDialect,
2805        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats_common::IfaceHistogramStats, D>,
2806    > fidl::encoding::Encode<WlanFullmacImplGetIfaceHistogramStatsResponse, D> for (T0,)
2807    {
2808        #[inline]
2809        unsafe fn encode(
2810            self,
2811            encoder: &mut fidl::encoding::Encoder<'_, D>,
2812            offset: usize,
2813            depth: fidl::encoding::Depth,
2814        ) -> fidl::Result<()> {
2815            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceHistogramStatsResponse>(offset);
2816            // Zero out padding regions. There's no need to apply masks
2817            // because the unmasked parts will be overwritten by fields.
2818            // Write the fields.
2819            self.0.encode(encoder, offset + 0, depth)?;
2820            Ok(())
2821        }
2822    }
2823
2824    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2825        for WlanFullmacImplGetIfaceHistogramStatsResponse
2826    {
2827        #[inline(always)]
2828        fn new_empty() -> Self {
2829            Self { stats: fidl::new_empty!(fidl_fuchsia_wlan_stats_common::IfaceHistogramStats, D) }
2830        }
2831
2832        #[inline]
2833        unsafe fn decode(
2834            &mut self,
2835            decoder: &mut fidl::encoding::Decoder<'_, D>,
2836            offset: usize,
2837            _depth: fidl::encoding::Depth,
2838        ) -> fidl::Result<()> {
2839            decoder.debug_check_bounds::<Self>(offset);
2840            // Verify that padding bytes are zero.
2841            fidl::decode!(
2842                fidl_fuchsia_wlan_stats_common::IfaceHistogramStats,
2843                D,
2844                &mut self.stats,
2845                decoder,
2846                offset + 0,
2847                _depth
2848            )?;
2849            Ok(())
2850        }
2851    }
2852
2853    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2854        type Borrowed<'a> = &'a Self;
2855        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2856            value
2857        }
2858    }
2859
2860    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetIfaceStatsResponse {
2861        type Owned = Self;
2862
2863        #[inline(always)]
2864        fn inline_align(_context: fidl::encoding::Context) -> usize {
2865            8
2866        }
2867
2868        #[inline(always)]
2869        fn inline_size(_context: fidl::encoding::Context) -> usize {
2870            16
2871        }
2872    }
2873
2874    unsafe impl<D: fidl::encoding::ResourceDialect>
2875        fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D>
2876        for &WlanFullmacImplGetIfaceStatsResponse
2877    {
2878        #[inline]
2879        unsafe fn encode(
2880            self,
2881            encoder: &mut fidl::encoding::Encoder<'_, D>,
2882            offset: usize,
2883            _depth: fidl::encoding::Depth,
2884        ) -> fidl::Result<()> {
2885            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2886            // Delegate to tuple encoding.
2887            fidl::encoding::Encode::<WlanFullmacImplGetIfaceStatsResponse, D>::encode(
2888                (
2889                    <fidl_fuchsia_wlan_stats_common::IfaceStats as fidl::encoding::ValueTypeMarker>::borrow(&self.stats),
2890                ),
2891                encoder, offset, _depth
2892            )
2893        }
2894    }
2895    unsafe impl<
2896        D: fidl::encoding::ResourceDialect,
2897        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats_common::IfaceStats, D>,
2898    > fidl::encoding::Encode<WlanFullmacImplGetIfaceStatsResponse, D> for (T0,)
2899    {
2900        #[inline]
2901        unsafe fn encode(
2902            self,
2903            encoder: &mut fidl::encoding::Encoder<'_, D>,
2904            offset: usize,
2905            depth: fidl::encoding::Depth,
2906        ) -> fidl::Result<()> {
2907            encoder.debug_check_bounds::<WlanFullmacImplGetIfaceStatsResponse>(offset);
2908            // Zero out padding regions. There's no need to apply masks
2909            // because the unmasked parts will be overwritten by fields.
2910            // Write the fields.
2911            self.0.encode(encoder, offset + 0, depth)?;
2912            Ok(())
2913        }
2914    }
2915
2916    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2917        for WlanFullmacImplGetIfaceStatsResponse
2918    {
2919        #[inline(always)]
2920        fn new_empty() -> Self {
2921            Self { stats: fidl::new_empty!(fidl_fuchsia_wlan_stats_common::IfaceStats, D) }
2922        }
2923
2924        #[inline]
2925        unsafe fn decode(
2926            &mut self,
2927            decoder: &mut fidl::encoding::Decoder<'_, D>,
2928            offset: usize,
2929            _depth: fidl::encoding::Depth,
2930        ) -> fidl::Result<()> {
2931            decoder.debug_check_bounds::<Self>(offset);
2932            // Verify that padding bytes are zero.
2933            fidl::decode!(
2934                fidl_fuchsia_wlan_stats_common::IfaceStats,
2935                D,
2936                &mut self.stats,
2937                decoder,
2938                offset + 0,
2939                _depth
2940            )?;
2941            Ok(())
2942        }
2943    }
2944
2945    impl fidl::encoding::ValueTypeMarker for WlanFullmacRssiStats {
2946        type Borrowed<'a> = &'a Self;
2947        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2948            value
2949        }
2950    }
2951
2952    unsafe impl fidl::encoding::TypeMarker for WlanFullmacRssiStats {
2953        type Owned = Self;
2954
2955        #[inline(always)]
2956        fn inline_align(_context: fidl::encoding::Context) -> usize {
2957            8
2958        }
2959
2960        #[inline(always)]
2961        fn inline_size(_context: fidl::encoding::Context) -> usize {
2962            16
2963        }
2964    }
2965
2966    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanFullmacRssiStats, D>
2967        for &WlanFullmacRssiStats
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::<WlanFullmacRssiStats>(offset);
2977            // Delegate to tuple encoding.
2978            fidl::encoding::Encode::<WlanFullmacRssiStats, D>::encode(
2979                (
2980                    <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.hist),
2981                ),
2982                encoder, offset, _depth
2983            )
2984        }
2985    }
2986    unsafe impl<
2987        D: fidl::encoding::ResourceDialect,
2988        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
2989    > fidl::encoding::Encode<WlanFullmacRssiStats, 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::<WlanFullmacRssiStats>(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> for WlanFullmacRssiStats {
3008        #[inline(always)]
3009        fn new_empty() -> Self {
3010            Self { hist: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D) }
3011        }
3012
3013        #[inline]
3014        unsafe fn decode(
3015            &mut self,
3016            decoder: &mut fidl::encoding::Decoder<'_, D>,
3017            offset: usize,
3018            _depth: fidl::encoding::Depth,
3019        ) -> fidl::Result<()> {
3020            decoder.debug_check_bounds::<Self>(offset);
3021            // Verify that padding bytes are zero.
3022            fidl::decode!(
3023                fidl::encoding::UnboundedVector<u64>,
3024                D,
3025                &mut self.hist,
3026                decoder,
3027                offset + 0,
3028                _depth
3029            )?;
3030            Ok(())
3031        }
3032    }
3033
3034    impl fidl::encoding::ValueTypeMarker for WlanFullmacSetKeysResp {
3035        type Borrowed<'a> = &'a Self;
3036        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3037            value
3038        }
3039    }
3040
3041    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSetKeysResp {
3042        type Owned = Self;
3043
3044        #[inline(always)]
3045        fn inline_align(_context: fidl::encoding::Context) -> usize {
3046            8
3047        }
3048
3049        #[inline(always)]
3050        fn inline_size(_context: fidl::encoding::Context) -> usize {
3051            16
3052        }
3053    }
3054
3055    unsafe impl<D: fidl::encoding::ResourceDialect>
3056        fidl::encoding::Encode<WlanFullmacSetKeysResp, D> for &WlanFullmacSetKeysResp
3057    {
3058        #[inline]
3059        unsafe fn encode(
3060            self,
3061            encoder: &mut fidl::encoding::Encoder<'_, D>,
3062            offset: usize,
3063            _depth: fidl::encoding::Depth,
3064        ) -> fidl::Result<()> {
3065            encoder.debug_check_bounds::<WlanFullmacSetKeysResp>(offset);
3066            // Delegate to tuple encoding.
3067            fidl::encoding::Encode::<WlanFullmacSetKeysResp, D>::encode(
3068                (<fidl::encoding::Vector<i32, 4> as fidl::encoding::ValueTypeMarker>::borrow(
3069                    &self.statuslist,
3070                ),),
3071                encoder,
3072                offset,
3073                _depth,
3074            )
3075        }
3076    }
3077    unsafe impl<
3078        D: fidl::encoding::ResourceDialect,
3079        T0: fidl::encoding::Encode<fidl::encoding::Vector<i32, 4>, D>,
3080    > fidl::encoding::Encode<WlanFullmacSetKeysResp, 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::<WlanFullmacSetKeysResp>(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>
3099        for WlanFullmacSetKeysResp
3100    {
3101        #[inline(always)]
3102        fn new_empty() -> Self {
3103            Self { statuslist: fidl::new_empty!(fidl::encoding::Vector<i32, 4>, D) }
3104        }
3105
3106        #[inline]
3107        unsafe fn decode(
3108            &mut self,
3109            decoder: &mut fidl::encoding::Decoder<'_, D>,
3110            offset: usize,
3111            _depth: fidl::encoding::Depth,
3112        ) -> fidl::Result<()> {
3113            decoder.debug_check_bounds::<Self>(offset);
3114            // Verify that padding bytes are zero.
3115            fidl::decode!(fidl::encoding::Vector<i32, 4>, D, &mut self.statuslist, decoder, offset + 0, _depth)?;
3116            Ok(())
3117        }
3118    }
3119
3120    impl BandCapability {
3121        #[inline(always)]
3122        fn max_ordinal_present(&self) -> u64 {
3123            if let Some(_) = self.primary_channels {
3124                return 5;
3125            }
3126            if let Some(_) = self.vht_caps {
3127                return 4;
3128            }
3129            if let Some(_) = self.ht_caps {
3130                return 3;
3131            }
3132            if let Some(_) = self.basic_rates {
3133                return 2;
3134            }
3135            if let Some(_) = self.band {
3136                return 1;
3137            }
3138            0
3139        }
3140    }
3141
3142    impl fidl::encoding::ValueTypeMarker for BandCapability {
3143        type Borrowed<'a> = &'a Self;
3144        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3145            value
3146        }
3147    }
3148
3149    unsafe impl fidl::encoding::TypeMarker for BandCapability {
3150        type Owned = Self;
3151
3152        #[inline(always)]
3153        fn inline_align(_context: fidl::encoding::Context) -> usize {
3154            8
3155        }
3156
3157        #[inline(always)]
3158        fn inline_size(_context: fidl::encoding::Context) -> usize {
3159            16
3160        }
3161    }
3162
3163    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandCapability, D>
3164        for &BandCapability
3165    {
3166        unsafe fn encode(
3167            self,
3168            encoder: &mut fidl::encoding::Encoder<'_, D>,
3169            offset: usize,
3170            mut depth: fidl::encoding::Depth,
3171        ) -> fidl::Result<()> {
3172            encoder.debug_check_bounds::<BandCapability>(offset);
3173            // Vector header
3174            let max_ordinal: u64 = self.max_ordinal_present();
3175            encoder.write_num(max_ordinal, offset);
3176            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3177            // Calling encoder.out_of_line_offset(0) is not allowed.
3178            if max_ordinal == 0 {
3179                return Ok(());
3180            }
3181            depth.increment()?;
3182            let envelope_size = 8;
3183            let bytes_len = max_ordinal as usize * envelope_size;
3184            #[allow(unused_variables)]
3185            let offset = encoder.out_of_line_offset(bytes_len);
3186            let mut _prev_end_offset: usize = 0;
3187            if 1 > max_ordinal {
3188                return Ok(());
3189            }
3190
3191            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3192            // are envelope_size bytes.
3193            let cur_offset: usize = (1 - 1) * envelope_size;
3194
3195            // Zero reserved fields.
3196            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3197
3198            // Safety:
3199            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3200            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3201            //   envelope_size bytes, there is always sufficient room.
3202            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::WlanBand, D>(
3203            self.band.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow),
3204            encoder, offset + cur_offset, depth
3205        )?;
3206
3207            _prev_end_offset = cur_offset + envelope_size;
3208            if 2 > max_ordinal {
3209                return Ok(());
3210            }
3211
3212            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3213            // are envelope_size bytes.
3214            let cur_offset: usize = (2 - 1) * envelope_size;
3215
3216            // Zero reserved fields.
3217            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3218
3219            // Safety:
3220            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3221            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3222            //   envelope_size bytes, there is always sufficient room.
3223            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 12>, D>(
3224                self.basic_rates.as_ref().map(
3225                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::ValueTypeMarker>::borrow,
3226                ),
3227                encoder,
3228                offset + cur_offset,
3229                depth,
3230            )?;
3231
3232            _prev_end_offset = cur_offset + envelope_size;
3233            if 3 > max_ordinal {
3234                return Ok(());
3235            }
3236
3237            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3238            // are envelope_size bytes.
3239            let cur_offset: usize = (3 - 1) * envelope_size;
3240
3241            // Zero reserved fields.
3242            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3243
3244            // Safety:
3245            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3246            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3247            //   envelope_size bytes, there is always sufficient room.
3248            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities, D>(
3249            self.ht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3250            encoder, offset + cur_offset, depth
3251        )?;
3252
3253            _prev_end_offset = cur_offset + envelope_size;
3254            if 4 > max_ordinal {
3255                return Ok(());
3256            }
3257
3258            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3259            // are envelope_size bytes.
3260            let cur_offset: usize = (4 - 1) * envelope_size;
3261
3262            // Zero reserved fields.
3263            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3264
3265            // Safety:
3266            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3267            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3268            //   envelope_size bytes, there is always sufficient room.
3269            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities, D>(
3270            self.vht_caps.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
3271            encoder, offset + cur_offset, depth
3272        )?;
3273
3274            _prev_end_offset = cur_offset + envelope_size;
3275            if 5 > max_ordinal {
3276                return Ok(());
3277            }
3278
3279            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3280            // are envelope_size bytes.
3281            let cur_offset: usize = (5 - 1) * envelope_size;
3282
3283            // Zero reserved fields.
3284            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3285
3286            // Safety:
3287            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3288            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3289            //   envelope_size bytes, there is always sufficient room.
3290            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D>(
3291            self.primary_channels.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256> as fidl::encoding::ValueTypeMarker>::borrow),
3292            encoder, offset + cur_offset, depth
3293        )?;
3294
3295            _prev_end_offset = cur_offset + envelope_size;
3296
3297            Ok(())
3298        }
3299    }
3300
3301    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandCapability {
3302        #[inline(always)]
3303        fn new_empty() -> Self {
3304            Self::default()
3305        }
3306
3307        unsafe fn decode(
3308            &mut self,
3309            decoder: &mut fidl::encoding::Decoder<'_, D>,
3310            offset: usize,
3311            mut depth: fidl::encoding::Depth,
3312        ) -> fidl::Result<()> {
3313            decoder.debug_check_bounds::<Self>(offset);
3314            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3315                None => return Err(fidl::Error::NotNullable),
3316                Some(len) => len,
3317            };
3318            // Calling decoder.out_of_line_offset(0) is not allowed.
3319            if len == 0 {
3320                return Ok(());
3321            };
3322            depth.increment()?;
3323            let envelope_size = 8;
3324            let bytes_len = len * envelope_size;
3325            let offset = decoder.out_of_line_offset(bytes_len)?;
3326            // Decode the envelope for each type.
3327            let mut _next_ordinal_to_read = 0;
3328            let mut next_offset = offset;
3329            let end_offset = offset + bytes_len;
3330            _next_ordinal_to_read += 1;
3331            if next_offset >= end_offset {
3332                return Ok(());
3333            }
3334
3335            // Decode unknown envelopes for gaps in ordinals.
3336            while _next_ordinal_to_read < 1 {
3337                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3338                _next_ordinal_to_read += 1;
3339                next_offset += envelope_size;
3340            }
3341
3342            let next_out_of_line = decoder.next_out_of_line();
3343            let handles_before = decoder.remaining_handles();
3344            if let Some((inlined, num_bytes, num_handles)) =
3345                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3346            {
3347                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::WlanBand as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3348                if inlined != (member_inline_size <= 4) {
3349                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3350                }
3351                let inner_offset;
3352                let mut inner_depth = depth.clone();
3353                if inlined {
3354                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3355                    inner_offset = next_offset;
3356                } else {
3357                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3358                    inner_depth.increment()?;
3359                }
3360                let val_ref = self.band.get_or_insert_with(|| {
3361                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::WlanBand, D)
3362                });
3363                fidl::decode!(
3364                    fidl_fuchsia_wlan_ieee80211_common::WlanBand,
3365                    D,
3366                    val_ref,
3367                    decoder,
3368                    inner_offset,
3369                    inner_depth
3370                )?;
3371                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3372                {
3373                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3374                }
3375                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3376                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3377                }
3378            }
3379
3380            next_offset += envelope_size;
3381            _next_ordinal_to_read += 1;
3382            if next_offset >= end_offset {
3383                return Ok(());
3384            }
3385
3386            // Decode unknown envelopes for gaps in ordinals.
3387            while _next_ordinal_to_read < 2 {
3388                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3389                _next_ordinal_to_read += 1;
3390                next_offset += envelope_size;
3391            }
3392
3393            let next_out_of_line = decoder.next_out_of_line();
3394            let handles_before = decoder.remaining_handles();
3395            if let Some((inlined, num_bytes, num_handles)) =
3396                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3397            {
3398                let member_inline_size =
3399                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::TypeMarker>::inline_size(
3400                        decoder.context,
3401                    );
3402                if inlined != (member_inline_size <= 4) {
3403                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3404                }
3405                let inner_offset;
3406                let mut inner_depth = depth.clone();
3407                if inlined {
3408                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3409                    inner_offset = next_offset;
3410                } else {
3411                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3412                    inner_depth.increment()?;
3413                }
3414                let val_ref = self
3415                    .basic_rates
3416                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 12>, D));
3417                fidl::decode!(fidl::encoding::Vector<u8, 12>, D, val_ref, decoder, inner_offset, inner_depth)?;
3418                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3419                {
3420                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3421                }
3422                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3423                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3424                }
3425            }
3426
3427            next_offset += envelope_size;
3428            _next_ordinal_to_read += 1;
3429            if next_offset >= end_offset {
3430                return Ok(());
3431            }
3432
3433            // Decode unknown envelopes for gaps in ordinals.
3434            while _next_ordinal_to_read < 3 {
3435                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3436                _next_ordinal_to_read += 1;
3437                next_offset += envelope_size;
3438            }
3439
3440            let next_out_of_line = decoder.next_out_of_line();
3441            let handles_before = decoder.remaining_handles();
3442            if let Some((inlined, num_bytes, num_handles)) =
3443                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3444            {
3445                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::HtCapabilities as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3446                if inlined != (member_inline_size <= 4) {
3447                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3448                }
3449                let inner_offset;
3450                let mut inner_depth = depth.clone();
3451                if inlined {
3452                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3453                    inner_offset = next_offset;
3454                } else {
3455                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3456                    inner_depth.increment()?;
3457                }
3458                let val_ref = self.ht_caps.get_or_insert_with(|| {
3459                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::HtCapabilities, D)
3460                });
3461                fidl::decode!(
3462                    fidl_fuchsia_wlan_ieee80211_common::HtCapabilities,
3463                    D,
3464                    val_ref,
3465                    decoder,
3466                    inner_offset,
3467                    inner_depth
3468                )?;
3469                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3470                {
3471                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3472                }
3473                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3474                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3475                }
3476            }
3477
3478            next_offset += envelope_size;
3479            _next_ordinal_to_read += 1;
3480            if next_offset >= end_offset {
3481                return Ok(());
3482            }
3483
3484            // Decode unknown envelopes for gaps in ordinals.
3485            while _next_ordinal_to_read < 4 {
3486                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3487                _next_ordinal_to_read += 1;
3488                next_offset += envelope_size;
3489            }
3490
3491            let next_out_of_line = decoder.next_out_of_line();
3492            let handles_before = decoder.remaining_handles();
3493            if let Some((inlined, num_bytes, num_handles)) =
3494                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3495            {
3496                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3497                if inlined != (member_inline_size <= 4) {
3498                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3499                }
3500                let inner_offset;
3501                let mut inner_depth = depth.clone();
3502                if inlined {
3503                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3504                    inner_offset = next_offset;
3505                } else {
3506                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3507                    inner_depth.increment()?;
3508                }
3509                let val_ref = self.vht_caps.get_or_insert_with(|| {
3510                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities, D)
3511                });
3512                fidl::decode!(
3513                    fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities,
3514                    D,
3515                    val_ref,
3516                    decoder,
3517                    inner_offset,
3518                    inner_depth
3519                )?;
3520                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3521                {
3522                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3523                }
3524                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3525                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3526                }
3527            }
3528
3529            next_offset += envelope_size;
3530            _next_ordinal_to_read += 1;
3531            if next_offset >= end_offset {
3532                return Ok(());
3533            }
3534
3535            // Decode unknown envelopes for gaps in ordinals.
3536            while _next_ordinal_to_read < 5 {
3537                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3538                _next_ordinal_to_read += 1;
3539                next_offset += envelope_size;
3540            }
3541
3542            let next_out_of_line = decoder.next_out_of_line();
3543            let handles_before = decoder.remaining_handles();
3544            if let Some((inlined, num_bytes, num_handles)) =
3545                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3546            {
3547                let member_inline_size = <fidl::encoding::Vector<
3548                    fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
3549                    256,
3550                > as fidl::encoding::TypeMarker>::inline_size(
3551                    decoder.context
3552                );
3553                if inlined != (member_inline_size <= 4) {
3554                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3555                }
3556                let inner_offset;
3557                let mut inner_depth = depth.clone();
3558                if inlined {
3559                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3560                    inner_offset = next_offset;
3561                } else {
3562                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3563                    inner_depth.increment()?;
3564                }
3565                let val_ref =
3566                self.primary_channels.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D));
3567                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
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
3579            // Decode the remaining unknown envelopes.
3580            while next_offset < end_offset {
3581                _next_ordinal_to_read += 1;
3582                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3583                next_offset += envelope_size;
3584            }
3585
3586            Ok(())
3587        }
3588    }
3589
3590    impl SaeFrame {
3591        #[inline(always)]
3592        fn max_ordinal_present(&self) -> u64 {
3593            if let Some(_) = self.sae_fields {
3594                return 4;
3595            }
3596            if let Some(_) = self.seq_num {
3597                return 3;
3598            }
3599            if let Some(_) = self.status_code {
3600                return 2;
3601            }
3602            if let Some(_) = self.peer_sta_address {
3603                return 1;
3604            }
3605            0
3606        }
3607    }
3608
3609    impl fidl::encoding::ValueTypeMarker for SaeFrame {
3610        type Borrowed<'a> = &'a Self;
3611        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3612            value
3613        }
3614    }
3615
3616    unsafe impl fidl::encoding::TypeMarker for SaeFrame {
3617        type Owned = Self;
3618
3619        #[inline(always)]
3620        fn inline_align(_context: fidl::encoding::Context) -> usize {
3621            8
3622        }
3623
3624        #[inline(always)]
3625        fn inline_size(_context: fidl::encoding::Context) -> usize {
3626            16
3627        }
3628    }
3629
3630    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFrame, D> for &SaeFrame {
3631        unsafe fn encode(
3632            self,
3633            encoder: &mut fidl::encoding::Encoder<'_, D>,
3634            offset: usize,
3635            mut depth: fidl::encoding::Depth,
3636        ) -> fidl::Result<()> {
3637            encoder.debug_check_bounds::<SaeFrame>(offset);
3638            // Vector header
3639            let max_ordinal: u64 = self.max_ordinal_present();
3640            encoder.write_num(max_ordinal, offset);
3641            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3642            // Calling encoder.out_of_line_offset(0) is not allowed.
3643            if max_ordinal == 0 {
3644                return Ok(());
3645            }
3646            depth.increment()?;
3647            let envelope_size = 8;
3648            let bytes_len = max_ordinal as usize * envelope_size;
3649            #[allow(unused_variables)]
3650            let offset = encoder.out_of_line_offset(bytes_len);
3651            let mut _prev_end_offset: usize = 0;
3652            if 1 > max_ordinal {
3653                return Ok(());
3654            }
3655
3656            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3657            // are envelope_size bytes.
3658            let cur_offset: usize = (1 - 1) * envelope_size;
3659
3660            // Zero reserved fields.
3661            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3662
3663            // Safety:
3664            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3665            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3666            //   envelope_size bytes, there is always sufficient room.
3667            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3668                self.peer_sta_address
3669                    .as_ref()
3670                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3671                encoder,
3672                offset + cur_offset,
3673                depth,
3674            )?;
3675
3676            _prev_end_offset = cur_offset + envelope_size;
3677            if 2 > max_ordinal {
3678                return Ok(());
3679            }
3680
3681            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3682            // are envelope_size bytes.
3683            let cur_offset: usize = (2 - 1) * envelope_size;
3684
3685            // Zero reserved fields.
3686            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3687
3688            // Safety:
3689            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3690            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3691            //   envelope_size bytes, there is always sufficient room.
3692            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
3693            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
3694            encoder, offset + cur_offset, depth
3695        )?;
3696
3697            _prev_end_offset = cur_offset + envelope_size;
3698            if 3 > max_ordinal {
3699                return Ok(());
3700            }
3701
3702            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3703            // are envelope_size bytes.
3704            let cur_offset: usize = (3 - 1) * envelope_size;
3705
3706            // Zero reserved fields.
3707            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3708
3709            // Safety:
3710            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3711            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3712            //   envelope_size bytes, there is always sufficient room.
3713            fidl::encoding::encode_in_envelope_optional::<u16, D>(
3714                self.seq_num.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3715                encoder,
3716                offset + cur_offset,
3717                depth,
3718            )?;
3719
3720            _prev_end_offset = cur_offset + envelope_size;
3721            if 4 > max_ordinal {
3722                return Ok(());
3723            }
3724
3725            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3726            // are envelope_size bytes.
3727            let cur_offset: usize = (4 - 1) * envelope_size;
3728
3729            // Zero reserved fields.
3730            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3731
3732            // Safety:
3733            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3734            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3735            //   envelope_size bytes, there is always sufficient room.
3736            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
3737            self.sae_fields.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
3738            encoder, offset + cur_offset, depth
3739        )?;
3740
3741            _prev_end_offset = cur_offset + envelope_size;
3742
3743            Ok(())
3744        }
3745    }
3746
3747    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFrame {
3748        #[inline(always)]
3749        fn new_empty() -> Self {
3750            Self::default()
3751        }
3752
3753        unsafe fn decode(
3754            &mut self,
3755            decoder: &mut fidl::encoding::Decoder<'_, D>,
3756            offset: usize,
3757            mut depth: fidl::encoding::Depth,
3758        ) -> fidl::Result<()> {
3759            decoder.debug_check_bounds::<Self>(offset);
3760            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3761                None => return Err(fidl::Error::NotNullable),
3762                Some(len) => len,
3763            };
3764            // Calling decoder.out_of_line_offset(0) is not allowed.
3765            if len == 0 {
3766                return Ok(());
3767            };
3768            depth.increment()?;
3769            let envelope_size = 8;
3770            let bytes_len = len * envelope_size;
3771            let offset = decoder.out_of_line_offset(bytes_len)?;
3772            // Decode the envelope for each type.
3773            let mut _next_ordinal_to_read = 0;
3774            let mut next_offset = offset;
3775            let end_offset = offset + bytes_len;
3776            _next_ordinal_to_read += 1;
3777            if next_offset >= end_offset {
3778                return Ok(());
3779            }
3780
3781            // Decode unknown envelopes for gaps in ordinals.
3782            while _next_ordinal_to_read < 1 {
3783                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3784                _next_ordinal_to_read += 1;
3785                next_offset += envelope_size;
3786            }
3787
3788            let next_out_of_line = decoder.next_out_of_line();
3789            let handles_before = decoder.remaining_handles();
3790            if let Some((inlined, num_bytes, num_handles)) =
3791                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3792            {
3793                let member_inline_size =
3794                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3795                        decoder.context,
3796                    );
3797                if inlined != (member_inline_size <= 4) {
3798                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3799                }
3800                let inner_offset;
3801                let mut inner_depth = depth.clone();
3802                if inlined {
3803                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3804                    inner_offset = next_offset;
3805                } else {
3806                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3807                    inner_depth.increment()?;
3808                }
3809                let val_ref = self
3810                    .peer_sta_address
3811                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
3812                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
3813                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3814                {
3815                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3816                }
3817                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3818                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3819                }
3820            }
3821
3822            next_offset += envelope_size;
3823            _next_ordinal_to_read += 1;
3824            if next_offset >= end_offset {
3825                return Ok(());
3826            }
3827
3828            // Decode unknown envelopes for gaps in ordinals.
3829            while _next_ordinal_to_read < 2 {
3830                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3831                _next_ordinal_to_read += 1;
3832                next_offset += envelope_size;
3833            }
3834
3835            let next_out_of_line = decoder.next_out_of_line();
3836            let handles_before = decoder.remaining_handles();
3837            if let Some((inlined, num_bytes, num_handles)) =
3838                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3839            {
3840                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3841                if inlined != (member_inline_size <= 4) {
3842                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3843                }
3844                let inner_offset;
3845                let mut inner_depth = depth.clone();
3846                if inlined {
3847                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3848                    inner_offset = next_offset;
3849                } else {
3850                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3851                    inner_depth.increment()?;
3852                }
3853                let val_ref = self.status_code.get_or_insert_with(|| {
3854                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
3855                });
3856                fidl::decode!(
3857                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
3858                    D,
3859                    val_ref,
3860                    decoder,
3861                    inner_offset,
3862                    inner_depth
3863                )?;
3864                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3865                {
3866                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3867                }
3868                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3869                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3870                }
3871            }
3872
3873            next_offset += envelope_size;
3874            _next_ordinal_to_read += 1;
3875            if next_offset >= end_offset {
3876                return Ok(());
3877            }
3878
3879            // Decode unknown envelopes for gaps in ordinals.
3880            while _next_ordinal_to_read < 3 {
3881                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3882                _next_ordinal_to_read += 1;
3883                next_offset += envelope_size;
3884            }
3885
3886            let next_out_of_line = decoder.next_out_of_line();
3887            let handles_before = decoder.remaining_handles();
3888            if let Some((inlined, num_bytes, num_handles)) =
3889                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3890            {
3891                let member_inline_size =
3892                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3893                if inlined != (member_inline_size <= 4) {
3894                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3895                }
3896                let inner_offset;
3897                let mut inner_depth = depth.clone();
3898                if inlined {
3899                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3900                    inner_offset = next_offset;
3901                } else {
3902                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3903                    inner_depth.increment()?;
3904                }
3905                let val_ref = self.seq_num.get_or_insert_with(|| fidl::new_empty!(u16, D));
3906                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3907                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3908                {
3909                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3910                }
3911                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3912                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3913                }
3914            }
3915
3916            next_offset += envelope_size;
3917            _next_ordinal_to_read += 1;
3918            if next_offset >= end_offset {
3919                return Ok(());
3920            }
3921
3922            // Decode unknown envelopes for gaps in ordinals.
3923            while _next_ordinal_to_read < 4 {
3924                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3925                _next_ordinal_to_read += 1;
3926                next_offset += envelope_size;
3927            }
3928
3929            let next_out_of_line = decoder.next_out_of_line();
3930            let handles_before = decoder.remaining_handles();
3931            if let Some((inlined, num_bytes, num_handles)) =
3932                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3933            {
3934                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3935                if inlined != (member_inline_size <= 4) {
3936                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3937                }
3938                let inner_offset;
3939                let mut inner_depth = depth.clone();
3940                if inlined {
3941                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3942                    inner_offset = next_offset;
3943                } else {
3944                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3945                    inner_depth.increment()?;
3946                }
3947                let val_ref = self.sae_fields.get_or_insert_with(|| {
3948                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
3949                });
3950                fidl::decode!(
3951                    fidl::encoding::UnboundedVector<u8>,
3952                    D,
3953                    val_ref,
3954                    decoder,
3955                    inner_offset,
3956                    inner_depth
3957                )?;
3958                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3959                {
3960                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3961                }
3962                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3963                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3964                }
3965            }
3966
3967            next_offset += envelope_size;
3968
3969            // Decode the remaining unknown envelopes.
3970            while next_offset < end_offset {
3971                _next_ordinal_to_read += 1;
3972                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3973                next_offset += envelope_size;
3974            }
3975
3976            Ok(())
3977        }
3978    }
3979
3980    impl WlanFullmacImplAssocRespRequest {
3981        #[inline(always)]
3982        fn max_ordinal_present(&self) -> u64 {
3983            if let Some(_) = self.association_id {
3984                return 3;
3985            }
3986            if let Some(_) = self.result_code {
3987                return 2;
3988            }
3989            if let Some(_) = self.peer_sta_address {
3990                return 1;
3991            }
3992            0
3993        }
3994    }
3995
3996    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAssocRespRequest {
3997        type Borrowed<'a> = &'a Self;
3998        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3999            value
4000        }
4001    }
4002
4003    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAssocRespRequest {
4004        type Owned = Self;
4005
4006        #[inline(always)]
4007        fn inline_align(_context: fidl::encoding::Context) -> usize {
4008            8
4009        }
4010
4011        #[inline(always)]
4012        fn inline_size(_context: fidl::encoding::Context) -> usize {
4013            16
4014        }
4015    }
4016
4017    unsafe impl<D: fidl::encoding::ResourceDialect>
4018        fidl::encoding::Encode<WlanFullmacImplAssocRespRequest, D>
4019        for &WlanFullmacImplAssocRespRequest
4020    {
4021        unsafe fn encode(
4022            self,
4023            encoder: &mut fidl::encoding::Encoder<'_, D>,
4024            offset: usize,
4025            mut depth: fidl::encoding::Depth,
4026        ) -> fidl::Result<()> {
4027            encoder.debug_check_bounds::<WlanFullmacImplAssocRespRequest>(offset);
4028            // Vector header
4029            let max_ordinal: u64 = self.max_ordinal_present();
4030            encoder.write_num(max_ordinal, offset);
4031            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4032            // Calling encoder.out_of_line_offset(0) is not allowed.
4033            if max_ordinal == 0 {
4034                return Ok(());
4035            }
4036            depth.increment()?;
4037            let envelope_size = 8;
4038            let bytes_len = max_ordinal as usize * envelope_size;
4039            #[allow(unused_variables)]
4040            let offset = encoder.out_of_line_offset(bytes_len);
4041            let mut _prev_end_offset: usize = 0;
4042            if 1 > max_ordinal {
4043                return Ok(());
4044            }
4045
4046            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4047            // are envelope_size bytes.
4048            let cur_offset: usize = (1 - 1) * envelope_size;
4049
4050            // Zero reserved fields.
4051            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4052
4053            // Safety:
4054            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4055            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4056            //   envelope_size bytes, there is always sufficient room.
4057            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4058                self.peer_sta_address
4059                    .as_ref()
4060                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4061                encoder,
4062                offset + cur_offset,
4063                depth,
4064            )?;
4065
4066            _prev_end_offset = cur_offset + envelope_size;
4067            if 2 > max_ordinal {
4068                return Ok(());
4069            }
4070
4071            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4072            // are envelope_size bytes.
4073            let cur_offset: usize = (2 - 1) * envelope_size;
4074
4075            // Zero reserved fields.
4076            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4077
4078            // Safety:
4079            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4080            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4081            //   envelope_size bytes, there is always sufficient room.
4082            fidl::encoding::encode_in_envelope_optional::<WlanAssocResult, D>(
4083                self.result_code
4084                    .as_ref()
4085                    .map(<WlanAssocResult as fidl::encoding::ValueTypeMarker>::borrow),
4086                encoder,
4087                offset + cur_offset,
4088                depth,
4089            )?;
4090
4091            _prev_end_offset = cur_offset + envelope_size;
4092            if 3 > max_ordinal {
4093                return Ok(());
4094            }
4095
4096            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4097            // are envelope_size bytes.
4098            let cur_offset: usize = (3 - 1) * envelope_size;
4099
4100            // Zero reserved fields.
4101            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4102
4103            // Safety:
4104            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4105            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4106            //   envelope_size bytes, there is always sufficient room.
4107            fidl::encoding::encode_in_envelope_optional::<u16, D>(
4108                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4109                encoder,
4110                offset + cur_offset,
4111                depth,
4112            )?;
4113
4114            _prev_end_offset = cur_offset + envelope_size;
4115
4116            Ok(())
4117        }
4118    }
4119
4120    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4121        for WlanFullmacImplAssocRespRequest
4122    {
4123        #[inline(always)]
4124        fn new_empty() -> Self {
4125            Self::default()
4126        }
4127
4128        unsafe fn decode(
4129            &mut self,
4130            decoder: &mut fidl::encoding::Decoder<'_, D>,
4131            offset: usize,
4132            mut depth: fidl::encoding::Depth,
4133        ) -> fidl::Result<()> {
4134            decoder.debug_check_bounds::<Self>(offset);
4135            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4136                None => return Err(fidl::Error::NotNullable),
4137                Some(len) => len,
4138            };
4139            // Calling decoder.out_of_line_offset(0) is not allowed.
4140            if len == 0 {
4141                return Ok(());
4142            };
4143            depth.increment()?;
4144            let envelope_size = 8;
4145            let bytes_len = len * envelope_size;
4146            let offset = decoder.out_of_line_offset(bytes_len)?;
4147            // Decode the envelope for each type.
4148            let mut _next_ordinal_to_read = 0;
4149            let mut next_offset = offset;
4150            let end_offset = offset + bytes_len;
4151            _next_ordinal_to_read += 1;
4152            if next_offset >= end_offset {
4153                return Ok(());
4154            }
4155
4156            // Decode unknown envelopes for gaps in ordinals.
4157            while _next_ordinal_to_read < 1 {
4158                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4159                _next_ordinal_to_read += 1;
4160                next_offset += envelope_size;
4161            }
4162
4163            let next_out_of_line = decoder.next_out_of_line();
4164            let handles_before = decoder.remaining_handles();
4165            if let Some((inlined, num_bytes, num_handles)) =
4166                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4167            {
4168                let member_inline_size =
4169                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4170                        decoder.context,
4171                    );
4172                if inlined != (member_inline_size <= 4) {
4173                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4174                }
4175                let inner_offset;
4176                let mut inner_depth = depth.clone();
4177                if inlined {
4178                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4179                    inner_offset = next_offset;
4180                } else {
4181                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4182                    inner_depth.increment()?;
4183                }
4184                let val_ref = self
4185                    .peer_sta_address
4186                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4187                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4188                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4189                {
4190                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4191                }
4192                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4193                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4194                }
4195            }
4196
4197            next_offset += envelope_size;
4198            _next_ordinal_to_read += 1;
4199            if next_offset >= end_offset {
4200                return Ok(());
4201            }
4202
4203            // Decode unknown envelopes for gaps in ordinals.
4204            while _next_ordinal_to_read < 2 {
4205                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4206                _next_ordinal_to_read += 1;
4207                next_offset += envelope_size;
4208            }
4209
4210            let next_out_of_line = decoder.next_out_of_line();
4211            let handles_before = decoder.remaining_handles();
4212            if let Some((inlined, num_bytes, num_handles)) =
4213                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4214            {
4215                let member_inline_size =
4216                    <WlanAssocResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4217                if inlined != (member_inline_size <= 4) {
4218                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4219                }
4220                let inner_offset;
4221                let mut inner_depth = depth.clone();
4222                if inlined {
4223                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4224                    inner_offset = next_offset;
4225                } else {
4226                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4227                    inner_depth.increment()?;
4228                }
4229                let val_ref =
4230                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAssocResult, D));
4231                fidl::decode!(WlanAssocResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4232                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4233                {
4234                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4235                }
4236                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4237                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4238                }
4239            }
4240
4241            next_offset += envelope_size;
4242            _next_ordinal_to_read += 1;
4243            if next_offset >= end_offset {
4244                return Ok(());
4245            }
4246
4247            // Decode unknown envelopes for gaps in ordinals.
4248            while _next_ordinal_to_read < 3 {
4249                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4250                _next_ordinal_to_read += 1;
4251                next_offset += envelope_size;
4252            }
4253
4254            let next_out_of_line = decoder.next_out_of_line();
4255            let handles_before = decoder.remaining_handles();
4256            if let Some((inlined, num_bytes, num_handles)) =
4257                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4258            {
4259                let member_inline_size =
4260                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4261                if inlined != (member_inline_size <= 4) {
4262                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4263                }
4264                let inner_offset;
4265                let mut inner_depth = depth.clone();
4266                if inlined {
4267                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4268                    inner_offset = next_offset;
4269                } else {
4270                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4271                    inner_depth.increment()?;
4272                }
4273                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
4274                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4275                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4276                {
4277                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4278                }
4279                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4280                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4281                }
4282            }
4283
4284            next_offset += envelope_size;
4285
4286            // Decode the remaining unknown envelopes.
4287            while next_offset < end_offset {
4288                _next_ordinal_to_read += 1;
4289                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4290                next_offset += envelope_size;
4291            }
4292
4293            Ok(())
4294        }
4295    }
4296
4297    impl WlanFullmacImplAuthRespRequest {
4298        #[inline(always)]
4299        fn max_ordinal_present(&self) -> u64 {
4300            if let Some(_) = self.result_code {
4301                return 2;
4302            }
4303            if let Some(_) = self.peer_sta_address {
4304                return 1;
4305            }
4306            0
4307        }
4308    }
4309
4310    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplAuthRespRequest {
4311        type Borrowed<'a> = &'a Self;
4312        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4313            value
4314        }
4315    }
4316
4317    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplAuthRespRequest {
4318        type Owned = Self;
4319
4320        #[inline(always)]
4321        fn inline_align(_context: fidl::encoding::Context) -> usize {
4322            8
4323        }
4324
4325        #[inline(always)]
4326        fn inline_size(_context: fidl::encoding::Context) -> usize {
4327            16
4328        }
4329    }
4330
4331    unsafe impl<D: fidl::encoding::ResourceDialect>
4332        fidl::encoding::Encode<WlanFullmacImplAuthRespRequest, D>
4333        for &WlanFullmacImplAuthRespRequest
4334    {
4335        unsafe fn encode(
4336            self,
4337            encoder: &mut fidl::encoding::Encoder<'_, D>,
4338            offset: usize,
4339            mut depth: fidl::encoding::Depth,
4340        ) -> fidl::Result<()> {
4341            encoder.debug_check_bounds::<WlanFullmacImplAuthRespRequest>(offset);
4342            // Vector header
4343            let max_ordinal: u64 = self.max_ordinal_present();
4344            encoder.write_num(max_ordinal, offset);
4345            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4346            // Calling encoder.out_of_line_offset(0) is not allowed.
4347            if max_ordinal == 0 {
4348                return Ok(());
4349            }
4350            depth.increment()?;
4351            let envelope_size = 8;
4352            let bytes_len = max_ordinal as usize * envelope_size;
4353            #[allow(unused_variables)]
4354            let offset = encoder.out_of_line_offset(bytes_len);
4355            let mut _prev_end_offset: usize = 0;
4356            if 1 > max_ordinal {
4357                return Ok(());
4358            }
4359
4360            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4361            // are envelope_size bytes.
4362            let cur_offset: usize = (1 - 1) * envelope_size;
4363
4364            // Zero reserved fields.
4365            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4366
4367            // Safety:
4368            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4369            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4370            //   envelope_size bytes, there is always sufficient room.
4371            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4372                self.peer_sta_address
4373                    .as_ref()
4374                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4375                encoder,
4376                offset + cur_offset,
4377                depth,
4378            )?;
4379
4380            _prev_end_offset = cur_offset + envelope_size;
4381            if 2 > max_ordinal {
4382                return Ok(());
4383            }
4384
4385            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4386            // are envelope_size bytes.
4387            let cur_offset: usize = (2 - 1) * envelope_size;
4388
4389            // Zero reserved fields.
4390            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4391
4392            // Safety:
4393            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4394            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4395            //   envelope_size bytes, there is always sufficient room.
4396            fidl::encoding::encode_in_envelope_optional::<WlanAuthResult, D>(
4397                self.result_code
4398                    .as_ref()
4399                    .map(<WlanAuthResult as fidl::encoding::ValueTypeMarker>::borrow),
4400                encoder,
4401                offset + cur_offset,
4402                depth,
4403            )?;
4404
4405            _prev_end_offset = cur_offset + envelope_size;
4406
4407            Ok(())
4408        }
4409    }
4410
4411    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4412        for WlanFullmacImplAuthRespRequest
4413    {
4414        #[inline(always)]
4415        fn new_empty() -> Self {
4416            Self::default()
4417        }
4418
4419        unsafe fn decode(
4420            &mut self,
4421            decoder: &mut fidl::encoding::Decoder<'_, D>,
4422            offset: usize,
4423            mut depth: fidl::encoding::Depth,
4424        ) -> fidl::Result<()> {
4425            decoder.debug_check_bounds::<Self>(offset);
4426            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4427                None => return Err(fidl::Error::NotNullable),
4428                Some(len) => len,
4429            };
4430            // Calling decoder.out_of_line_offset(0) is not allowed.
4431            if len == 0 {
4432                return Ok(());
4433            };
4434            depth.increment()?;
4435            let envelope_size = 8;
4436            let bytes_len = len * envelope_size;
4437            let offset = decoder.out_of_line_offset(bytes_len)?;
4438            // Decode the envelope for each type.
4439            let mut _next_ordinal_to_read = 0;
4440            let mut next_offset = offset;
4441            let end_offset = offset + bytes_len;
4442            _next_ordinal_to_read += 1;
4443            if next_offset >= end_offset {
4444                return Ok(());
4445            }
4446
4447            // Decode unknown envelopes for gaps in ordinals.
4448            while _next_ordinal_to_read < 1 {
4449                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4450                _next_ordinal_to_read += 1;
4451                next_offset += envelope_size;
4452            }
4453
4454            let next_out_of_line = decoder.next_out_of_line();
4455            let handles_before = decoder.remaining_handles();
4456            if let Some((inlined, num_bytes, num_handles)) =
4457                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4458            {
4459                let member_inline_size =
4460                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4461                        decoder.context,
4462                    );
4463                if inlined != (member_inline_size <= 4) {
4464                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4465                }
4466                let inner_offset;
4467                let mut inner_depth = depth.clone();
4468                if inlined {
4469                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4470                    inner_offset = next_offset;
4471                } else {
4472                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4473                    inner_depth.increment()?;
4474                }
4475                let val_ref = self
4476                    .peer_sta_address
4477                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4478                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4479                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4480                {
4481                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4482                }
4483                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4484                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4485                }
4486            }
4487
4488            next_offset += envelope_size;
4489            _next_ordinal_to_read += 1;
4490            if next_offset >= end_offset {
4491                return Ok(());
4492            }
4493
4494            // Decode unknown envelopes for gaps in ordinals.
4495            while _next_ordinal_to_read < 2 {
4496                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4497                _next_ordinal_to_read += 1;
4498                next_offset += envelope_size;
4499            }
4500
4501            let next_out_of_line = decoder.next_out_of_line();
4502            let handles_before = decoder.remaining_handles();
4503            if let Some((inlined, num_bytes, num_handles)) =
4504                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4505            {
4506                let member_inline_size =
4507                    <WlanAuthResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4508                if inlined != (member_inline_size <= 4) {
4509                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4510                }
4511                let inner_offset;
4512                let mut inner_depth = depth.clone();
4513                if inlined {
4514                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4515                    inner_offset = next_offset;
4516                } else {
4517                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4518                    inner_depth.increment()?;
4519                }
4520                let val_ref =
4521                    self.result_code.get_or_insert_with(|| fidl::new_empty!(WlanAuthResult, D));
4522                fidl::decode!(WlanAuthResult, D, val_ref, decoder, inner_offset, inner_depth)?;
4523                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4524                {
4525                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4526                }
4527                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4528                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4529                }
4530            }
4531
4532            next_offset += envelope_size;
4533
4534            // Decode the remaining unknown envelopes.
4535            while next_offset < end_offset {
4536                _next_ordinal_to_read += 1;
4537                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4538                next_offset += envelope_size;
4539            }
4540
4541            Ok(())
4542        }
4543    }
4544
4545    impl WlanFullmacImplConnectRequest {
4546        #[inline(always)]
4547        fn max_ordinal_present(&self) -> u64 {
4548            if let Some(_) = self.owe_public_key {
4549                return 8;
4550            }
4551            if let Some(_) = self.wep_key_desc {
4552                return 7;
4553            }
4554            if let Some(_) = self.security_ie {
4555                return 6;
4556            }
4557            if let Some(_) = self.wep_key {
4558                return 5;
4559            }
4560            if let Some(_) = self.sae_password {
4561                return 4;
4562            }
4563            if let Some(_) = self.auth_type {
4564                return 3;
4565            }
4566            if let Some(_) = self.connect_failure_timeout {
4567                return 2;
4568            }
4569            if let Some(_) = self.selected_bss {
4570                return 1;
4571            }
4572            0
4573        }
4574    }
4575
4576    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplConnectRequest {
4577        type Borrowed<'a> = &'a Self;
4578        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4579            value
4580        }
4581    }
4582
4583    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplConnectRequest {
4584        type Owned = Self;
4585
4586        #[inline(always)]
4587        fn inline_align(_context: fidl::encoding::Context) -> usize {
4588            8
4589        }
4590
4591        #[inline(always)]
4592        fn inline_size(_context: fidl::encoding::Context) -> usize {
4593            16
4594        }
4595    }
4596
4597    unsafe impl<D: fidl::encoding::ResourceDialect>
4598        fidl::encoding::Encode<WlanFullmacImplConnectRequest, D>
4599        for &WlanFullmacImplConnectRequest
4600    {
4601        unsafe fn encode(
4602            self,
4603            encoder: &mut fidl::encoding::Encoder<'_, D>,
4604            offset: usize,
4605            mut depth: fidl::encoding::Depth,
4606        ) -> fidl::Result<()> {
4607            encoder.debug_check_bounds::<WlanFullmacImplConnectRequest>(offset);
4608            // Vector header
4609            let max_ordinal: u64 = self.max_ordinal_present();
4610            encoder.write_num(max_ordinal, offset);
4611            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4612            // Calling encoder.out_of_line_offset(0) is not allowed.
4613            if max_ordinal == 0 {
4614                return Ok(());
4615            }
4616            depth.increment()?;
4617            let envelope_size = 8;
4618            let bytes_len = max_ordinal as usize * envelope_size;
4619            #[allow(unused_variables)]
4620            let offset = encoder.out_of_line_offset(bytes_len);
4621            let mut _prev_end_offset: usize = 0;
4622            if 1 > max_ordinal {
4623                return Ok(());
4624            }
4625
4626            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4627            // are envelope_size bytes.
4628            let cur_offset: usize = (1 - 1) * envelope_size;
4629
4630            // Zero reserved fields.
4631            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4632
4633            // Safety:
4634            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4635            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4636            //   envelope_size bytes, there is always sufficient room.
4637            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>(
4638            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
4639            encoder, offset + cur_offset, depth
4640        )?;
4641
4642            _prev_end_offset = cur_offset + envelope_size;
4643            if 2 > max_ordinal {
4644                return Ok(());
4645            }
4646
4647            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4648            // are envelope_size bytes.
4649            let cur_offset: usize = (2 - 1) * envelope_size;
4650
4651            // Zero reserved fields.
4652            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4653
4654            // Safety:
4655            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4656            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4657            //   envelope_size bytes, there is always sufficient room.
4658            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4659                self.connect_failure_timeout
4660                    .as_ref()
4661                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4662                encoder,
4663                offset + cur_offset,
4664                depth,
4665            )?;
4666
4667            _prev_end_offset = cur_offset + envelope_size;
4668            if 3 > max_ordinal {
4669                return Ok(());
4670            }
4671
4672            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4673            // are envelope_size bytes.
4674            let cur_offset: usize = (3 - 1) * envelope_size;
4675
4676            // Zero reserved fields.
4677            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4678
4679            // Safety:
4680            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4681            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4682            //   envelope_size bytes, there is always sufficient room.
4683            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
4684                self.auth_type
4685                    .as_ref()
4686                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
4687                encoder,
4688                offset + cur_offset,
4689                depth,
4690            )?;
4691
4692            _prev_end_offset = cur_offset + envelope_size;
4693            if 4 > max_ordinal {
4694                return Ok(());
4695            }
4696
4697            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4698            // are envelope_size bytes.
4699            let cur_offset: usize = (4 - 1) * envelope_size;
4700
4701            // Zero reserved fields.
4702            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4703
4704            // Safety:
4705            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4706            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4707            //   envelope_size bytes, there is always sufficient room.
4708            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
4709            self.sae_password.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
4710            encoder, offset + cur_offset, depth
4711        )?;
4712
4713            _prev_end_offset = cur_offset + envelope_size;
4714            if 5 > max_ordinal {
4715                return Ok(());
4716            }
4717
4718            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4719            // are envelope_size bytes.
4720            let cur_offset: usize = (5 - 1) * envelope_size;
4721
4722            // Zero reserved fields.
4723            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4724
4725            // Safety:
4726            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4727            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4728            //   envelope_size bytes, there is always sufficient room.
4729            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, D>(
4730            self.wep_key.as_ref().map(<fidl_fuchsia_wlan_driver_common::WlanKeyConfig as fidl::encoding::ValueTypeMarker>::borrow),
4731            encoder, offset + cur_offset, depth
4732        )?;
4733
4734            _prev_end_offset = cur_offset + envelope_size;
4735            if 6 > max_ordinal {
4736                return Ok(());
4737            }
4738
4739            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4740            // are envelope_size bytes.
4741            let cur_offset: usize = (6 - 1) * envelope_size;
4742
4743            // Zero reserved fields.
4744            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4745
4746            // Safety:
4747            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4748            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4749            //   envelope_size bytes, there is always sufficient room.
4750            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
4751                self.security_ie.as_ref().map(
4752                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
4753                ),
4754                encoder,
4755                offset + cur_offset,
4756                depth,
4757            )?;
4758
4759            _prev_end_offset = cur_offset + envelope_size;
4760            if 7 > max_ordinal {
4761                return Ok(());
4762            }
4763
4764            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4765            // are envelope_size bytes.
4766            let cur_offset: usize = (7 - 1) * envelope_size;
4767
4768            // Zero reserved fields.
4769            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4770
4771            // Safety:
4772            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4773            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4774            //   envelope_size bytes, there is always sufficient room.
4775            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, D>(
4776            self.wep_key_desc.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor as fidl::encoding::ValueTypeMarker>::borrow),
4777            encoder, offset + cur_offset, depth
4778        )?;
4779
4780            _prev_end_offset = cur_offset + envelope_size;
4781            if 8 > max_ordinal {
4782                return Ok(());
4783            }
4784
4785            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4786            // are envelope_size bytes.
4787            let cur_offset: usize = (8 - 1) * envelope_size;
4788
4789            // Zero reserved fields.
4790            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4791
4792            // Safety:
4793            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4794            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4795            //   envelope_size bytes, there is always sufficient room.
4796            fidl::encoding::encode_in_envelope_optional::<WlanFullmacOwePublicKey, D>(
4797                self.owe_public_key
4798                    .as_ref()
4799                    .map(<WlanFullmacOwePublicKey as fidl::encoding::ValueTypeMarker>::borrow),
4800                encoder,
4801                offset + cur_offset,
4802                depth,
4803            )?;
4804
4805            _prev_end_offset = cur_offset + envelope_size;
4806
4807            Ok(())
4808        }
4809    }
4810
4811    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4812        for WlanFullmacImplConnectRequest
4813    {
4814        #[inline(always)]
4815        fn new_empty() -> Self {
4816            Self::default()
4817        }
4818
4819        unsafe fn decode(
4820            &mut self,
4821            decoder: &mut fidl::encoding::Decoder<'_, D>,
4822            offset: usize,
4823            mut depth: fidl::encoding::Depth,
4824        ) -> fidl::Result<()> {
4825            decoder.debug_check_bounds::<Self>(offset);
4826            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4827                None => return Err(fidl::Error::NotNullable),
4828                Some(len) => len,
4829            };
4830            // Calling decoder.out_of_line_offset(0) is not allowed.
4831            if len == 0 {
4832                return Ok(());
4833            };
4834            depth.increment()?;
4835            let envelope_size = 8;
4836            let bytes_len = len * envelope_size;
4837            let offset = decoder.out_of_line_offset(bytes_len)?;
4838            // Decode the envelope for each type.
4839            let mut _next_ordinal_to_read = 0;
4840            let mut next_offset = offset;
4841            let end_offset = offset + bytes_len;
4842            _next_ordinal_to_read += 1;
4843            if next_offset >= end_offset {
4844                return Ok(());
4845            }
4846
4847            // Decode unknown envelopes for gaps in ordinals.
4848            while _next_ordinal_to_read < 1 {
4849                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4850                _next_ordinal_to_read += 1;
4851                next_offset += envelope_size;
4852            }
4853
4854            let next_out_of_line = decoder.next_out_of_line();
4855            let handles_before = decoder.remaining_handles();
4856            if let Some((inlined, num_bytes, num_handles)) =
4857                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4858            {
4859                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4860                if inlined != (member_inline_size <= 4) {
4861                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4862                }
4863                let inner_offset;
4864                let mut inner_depth = depth.clone();
4865                if inlined {
4866                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4867                    inner_offset = next_offset;
4868                } else {
4869                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4870                    inner_depth.increment()?;
4871                }
4872                let val_ref = self.selected_bss.get_or_insert_with(|| {
4873                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D)
4874                });
4875                fidl::decode!(
4876                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
4877                    D,
4878                    val_ref,
4879                    decoder,
4880                    inner_offset,
4881                    inner_depth
4882                )?;
4883                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4884                {
4885                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4886                }
4887                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4888                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4889                }
4890            }
4891
4892            next_offset += envelope_size;
4893            _next_ordinal_to_read += 1;
4894            if next_offset >= end_offset {
4895                return Ok(());
4896            }
4897
4898            // Decode unknown envelopes for gaps in ordinals.
4899            while _next_ordinal_to_read < 2 {
4900                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4901                _next_ordinal_to_read += 1;
4902                next_offset += envelope_size;
4903            }
4904
4905            let next_out_of_line = decoder.next_out_of_line();
4906            let handles_before = decoder.remaining_handles();
4907            if let Some((inlined, num_bytes, num_handles)) =
4908                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4909            {
4910                let member_inline_size =
4911                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4912                if inlined != (member_inline_size <= 4) {
4913                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4914                }
4915                let inner_offset;
4916                let mut inner_depth = depth.clone();
4917                if inlined {
4918                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4919                    inner_offset = next_offset;
4920                } else {
4921                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4922                    inner_depth.increment()?;
4923                }
4924                let val_ref =
4925                    self.connect_failure_timeout.get_or_insert_with(|| fidl::new_empty!(u32, D));
4926                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4927                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4928                {
4929                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4930                }
4931                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4932                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4933                }
4934            }
4935
4936            next_offset += envelope_size;
4937            _next_ordinal_to_read += 1;
4938            if next_offset >= end_offset {
4939                return Ok(());
4940            }
4941
4942            // Decode unknown envelopes for gaps in ordinals.
4943            while _next_ordinal_to_read < 3 {
4944                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4945                _next_ordinal_to_read += 1;
4946                next_offset += envelope_size;
4947            }
4948
4949            let next_out_of_line = decoder.next_out_of_line();
4950            let handles_before = decoder.remaining_handles();
4951            if let Some((inlined, num_bytes, num_handles)) =
4952                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4953            {
4954                let member_inline_size =
4955                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4956                if inlined != (member_inline_size <= 4) {
4957                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4958                }
4959                let inner_offset;
4960                let mut inner_depth = depth.clone();
4961                if inlined {
4962                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4963                    inner_offset = next_offset;
4964                } else {
4965                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4966                    inner_depth.increment()?;
4967                }
4968                let val_ref =
4969                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
4970                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
4971                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4972                {
4973                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4974                }
4975                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4976                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4977                }
4978            }
4979
4980            next_offset += envelope_size;
4981            _next_ordinal_to_read += 1;
4982            if next_offset >= end_offset {
4983                return Ok(());
4984            }
4985
4986            // Decode unknown envelopes for gaps in ordinals.
4987            while _next_ordinal_to_read < 4 {
4988                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4989                _next_ordinal_to_read += 1;
4990                next_offset += envelope_size;
4991            }
4992
4993            let next_out_of_line = decoder.next_out_of_line();
4994            let handles_before = decoder.remaining_handles();
4995            if let Some((inlined, num_bytes, num_handles)) =
4996                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4997            {
4998                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4999                if inlined != (member_inline_size <= 4) {
5000                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5001                }
5002                let inner_offset;
5003                let mut inner_depth = depth.clone();
5004                if inlined {
5005                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5006                    inner_offset = next_offset;
5007                } else {
5008                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5009                    inner_depth.increment()?;
5010                }
5011                let val_ref = self.sae_password.get_or_insert_with(|| {
5012                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
5013                });
5014                fidl::decode!(
5015                    fidl::encoding::UnboundedVector<u8>,
5016                    D,
5017                    val_ref,
5018                    decoder,
5019                    inner_offset,
5020                    inner_depth
5021                )?;
5022                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5023                {
5024                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5025                }
5026                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5027                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5028                }
5029            }
5030
5031            next_offset += envelope_size;
5032            _next_ordinal_to_read += 1;
5033            if next_offset >= end_offset {
5034                return Ok(());
5035            }
5036
5037            // Decode unknown envelopes for gaps in ordinals.
5038            while _next_ordinal_to_read < 5 {
5039                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5040                _next_ordinal_to_read += 1;
5041                next_offset += envelope_size;
5042            }
5043
5044            let next_out_of_line = decoder.next_out_of_line();
5045            let handles_before = decoder.remaining_handles();
5046            if let Some((inlined, num_bytes, num_handles)) =
5047                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5048            {
5049                let member_inline_size = <fidl_fuchsia_wlan_driver_common::WlanKeyConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5050                if inlined != (member_inline_size <= 4) {
5051                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5052                }
5053                let inner_offset;
5054                let mut inner_depth = depth.clone();
5055                if inlined {
5056                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5057                    inner_offset = next_offset;
5058                } else {
5059                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5060                    inner_depth.increment()?;
5061                }
5062                let val_ref = self.wep_key.get_or_insert_with(|| {
5063                    fidl::new_empty!(fidl_fuchsia_wlan_driver_common::WlanKeyConfig, D)
5064                });
5065                fidl::decode!(
5066                    fidl_fuchsia_wlan_driver_common::WlanKeyConfig,
5067                    D,
5068                    val_ref,
5069                    decoder,
5070                    inner_offset,
5071                    inner_depth
5072                )?;
5073                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5074                {
5075                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5076                }
5077                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5078                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5079                }
5080            }
5081
5082            next_offset += envelope_size;
5083            _next_ordinal_to_read += 1;
5084            if next_offset >= end_offset {
5085                return Ok(());
5086            }
5087
5088            // Decode unknown envelopes for gaps in ordinals.
5089            while _next_ordinal_to_read < 6 {
5090                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5091                _next_ordinal_to_read += 1;
5092                next_offset += envelope_size;
5093            }
5094
5095            let next_out_of_line = decoder.next_out_of_line();
5096            let handles_before = decoder.remaining_handles();
5097            if let Some((inlined, num_bytes, num_handles)) =
5098                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5099            {
5100                let member_inline_size =
5101                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
5102                        decoder.context,
5103                    );
5104                if inlined != (member_inline_size <= 4) {
5105                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5106                }
5107                let inner_offset;
5108                let mut inner_depth = depth.clone();
5109                if inlined {
5110                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5111                    inner_offset = next_offset;
5112                } else {
5113                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5114                    inner_depth.increment()?;
5115                }
5116                let val_ref = self
5117                    .security_ie
5118                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
5119                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
5120                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5121                {
5122                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5123                }
5124                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5125                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5126                }
5127            }
5128
5129            next_offset += envelope_size;
5130            _next_ordinal_to_read += 1;
5131            if next_offset >= end_offset {
5132                return Ok(());
5133            }
5134
5135            // Decode unknown envelopes for gaps in ordinals.
5136            while _next_ordinal_to_read < 7 {
5137                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5138                _next_ordinal_to_read += 1;
5139                next_offset += envelope_size;
5140            }
5141
5142            let next_out_of_line = decoder.next_out_of_line();
5143            let handles_before = decoder.remaining_handles();
5144            if let Some((inlined, num_bytes, num_handles)) =
5145                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5146            {
5147                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5148                if inlined != (member_inline_size <= 4) {
5149                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5150                }
5151                let inner_offset;
5152                let mut inner_depth = depth.clone();
5153                if inlined {
5154                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5155                    inner_offset = next_offset;
5156                } else {
5157                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5158                    inner_depth.increment()?;
5159                }
5160                let val_ref = self.wep_key_desc.get_or_insert_with(|| {
5161                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, D)
5162                });
5163                fidl::decode!(
5164                    fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor,
5165                    D,
5166                    val_ref,
5167                    decoder,
5168                    inner_offset,
5169                    inner_depth
5170                )?;
5171                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5172                {
5173                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5174                }
5175                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5176                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5177                }
5178            }
5179
5180            next_offset += envelope_size;
5181            _next_ordinal_to_read += 1;
5182            if next_offset >= end_offset {
5183                return Ok(());
5184            }
5185
5186            // Decode unknown envelopes for gaps in ordinals.
5187            while _next_ordinal_to_read < 8 {
5188                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5189                _next_ordinal_to_read += 1;
5190                next_offset += envelope_size;
5191            }
5192
5193            let next_out_of_line = decoder.next_out_of_line();
5194            let handles_before = decoder.remaining_handles();
5195            if let Some((inlined, num_bytes, num_handles)) =
5196                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5197            {
5198                let member_inline_size =
5199                    <WlanFullmacOwePublicKey as fidl::encoding::TypeMarker>::inline_size(
5200                        decoder.context,
5201                    );
5202                if inlined != (member_inline_size <= 4) {
5203                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5204                }
5205                let inner_offset;
5206                let mut inner_depth = depth.clone();
5207                if inlined {
5208                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5209                    inner_offset = next_offset;
5210                } else {
5211                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5212                    inner_depth.increment()?;
5213                }
5214                let val_ref = self
5215                    .owe_public_key
5216                    .get_or_insert_with(|| fidl::new_empty!(WlanFullmacOwePublicKey, D));
5217                fidl::decode!(
5218                    WlanFullmacOwePublicKey,
5219                    D,
5220                    val_ref,
5221                    decoder,
5222                    inner_offset,
5223                    inner_depth
5224                )?;
5225                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5226                {
5227                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5228                }
5229                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5230                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5231                }
5232            }
5233
5234            next_offset += envelope_size;
5235
5236            // Decode the remaining unknown envelopes.
5237            while next_offset < end_offset {
5238                _next_ordinal_to_read += 1;
5239                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5240                next_offset += envelope_size;
5241            }
5242
5243            Ok(())
5244        }
5245    }
5246
5247    impl WlanFullmacImplDeauthRequest {
5248        #[inline(always)]
5249        fn max_ordinal_present(&self) -> u64 {
5250            if let Some(_) = self.reason_code {
5251                return 2;
5252            }
5253            if let Some(_) = self.peer_sta_address {
5254                return 1;
5255            }
5256            0
5257        }
5258    }
5259
5260    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDeauthRequest {
5261        type Borrowed<'a> = &'a Self;
5262        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5263            value
5264        }
5265    }
5266
5267    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDeauthRequest {
5268        type Owned = Self;
5269
5270        #[inline(always)]
5271        fn inline_align(_context: fidl::encoding::Context) -> usize {
5272            8
5273        }
5274
5275        #[inline(always)]
5276        fn inline_size(_context: fidl::encoding::Context) -> usize {
5277            16
5278        }
5279    }
5280
5281    unsafe impl<D: fidl::encoding::ResourceDialect>
5282        fidl::encoding::Encode<WlanFullmacImplDeauthRequest, D> for &WlanFullmacImplDeauthRequest
5283    {
5284        unsafe fn encode(
5285            self,
5286            encoder: &mut fidl::encoding::Encoder<'_, D>,
5287            offset: usize,
5288            mut depth: fidl::encoding::Depth,
5289        ) -> fidl::Result<()> {
5290            encoder.debug_check_bounds::<WlanFullmacImplDeauthRequest>(offset);
5291            // Vector header
5292            let max_ordinal: u64 = self.max_ordinal_present();
5293            encoder.write_num(max_ordinal, offset);
5294            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5295            // Calling encoder.out_of_line_offset(0) is not allowed.
5296            if max_ordinal == 0 {
5297                return Ok(());
5298            }
5299            depth.increment()?;
5300            let envelope_size = 8;
5301            let bytes_len = max_ordinal as usize * envelope_size;
5302            #[allow(unused_variables)]
5303            let offset = encoder.out_of_line_offset(bytes_len);
5304            let mut _prev_end_offset: usize = 0;
5305            if 1 > max_ordinal {
5306                return Ok(());
5307            }
5308
5309            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5310            // are envelope_size bytes.
5311            let cur_offset: usize = (1 - 1) * envelope_size;
5312
5313            // Zero reserved fields.
5314            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5315
5316            // Safety:
5317            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5318            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5319            //   envelope_size bytes, there is always sufficient room.
5320            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5321                self.peer_sta_address
5322                    .as_ref()
5323                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5324                encoder,
5325                offset + cur_offset,
5326                depth,
5327            )?;
5328
5329            _prev_end_offset = cur_offset + envelope_size;
5330            if 2 > max_ordinal {
5331                return Ok(());
5332            }
5333
5334            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5335            // are envelope_size bytes.
5336            let cur_offset: usize = (2 - 1) * envelope_size;
5337
5338            // Zero reserved fields.
5339            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5340
5341            // Safety:
5342            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5343            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5344            //   envelope_size bytes, there is always sufficient room.
5345            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>(
5346            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5347            encoder, offset + cur_offset, depth
5348        )?;
5349
5350            _prev_end_offset = cur_offset + envelope_size;
5351
5352            Ok(())
5353        }
5354    }
5355
5356    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5357        for WlanFullmacImplDeauthRequest
5358    {
5359        #[inline(always)]
5360        fn new_empty() -> Self {
5361            Self::default()
5362        }
5363
5364        unsafe fn decode(
5365            &mut self,
5366            decoder: &mut fidl::encoding::Decoder<'_, D>,
5367            offset: usize,
5368            mut depth: fidl::encoding::Depth,
5369        ) -> fidl::Result<()> {
5370            decoder.debug_check_bounds::<Self>(offset);
5371            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5372                None => return Err(fidl::Error::NotNullable),
5373                Some(len) => len,
5374            };
5375            // Calling decoder.out_of_line_offset(0) is not allowed.
5376            if len == 0 {
5377                return Ok(());
5378            };
5379            depth.increment()?;
5380            let envelope_size = 8;
5381            let bytes_len = len * envelope_size;
5382            let offset = decoder.out_of_line_offset(bytes_len)?;
5383            // Decode the envelope for each type.
5384            let mut _next_ordinal_to_read = 0;
5385            let mut next_offset = offset;
5386            let end_offset = offset + bytes_len;
5387            _next_ordinal_to_read += 1;
5388            if next_offset >= end_offset {
5389                return Ok(());
5390            }
5391
5392            // Decode unknown envelopes for gaps in ordinals.
5393            while _next_ordinal_to_read < 1 {
5394                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5395                _next_ordinal_to_read += 1;
5396                next_offset += envelope_size;
5397            }
5398
5399            let next_out_of_line = decoder.next_out_of_line();
5400            let handles_before = decoder.remaining_handles();
5401            if let Some((inlined, num_bytes, num_handles)) =
5402                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5403            {
5404                let member_inline_size =
5405                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5406                        decoder.context,
5407                    );
5408                if inlined != (member_inline_size <= 4) {
5409                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5410                }
5411                let inner_offset;
5412                let mut inner_depth = depth.clone();
5413                if inlined {
5414                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5415                    inner_offset = next_offset;
5416                } else {
5417                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5418                    inner_depth.increment()?;
5419                }
5420                let val_ref = self
5421                    .peer_sta_address
5422                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5423                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5424                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5425                {
5426                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5427                }
5428                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5429                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5430                }
5431            }
5432
5433            next_offset += envelope_size;
5434            _next_ordinal_to_read += 1;
5435            if next_offset >= end_offset {
5436                return Ok(());
5437            }
5438
5439            // Decode unknown envelopes for gaps in ordinals.
5440            while _next_ordinal_to_read < 2 {
5441                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5442                _next_ordinal_to_read += 1;
5443                next_offset += envelope_size;
5444            }
5445
5446            let next_out_of_line = decoder.next_out_of_line();
5447            let handles_before = decoder.remaining_handles();
5448            if let Some((inlined, num_bytes, num_handles)) =
5449                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5450            {
5451                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5452                if inlined != (member_inline_size <= 4) {
5453                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5454                }
5455                let inner_offset;
5456                let mut inner_depth = depth.clone();
5457                if inlined {
5458                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5459                    inner_offset = next_offset;
5460                } else {
5461                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5462                    inner_depth.increment()?;
5463                }
5464                let val_ref = self.reason_code.get_or_insert_with(|| {
5465                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D)
5466                });
5467                fidl::decode!(
5468                    fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
5469                    D,
5470                    val_ref,
5471                    decoder,
5472                    inner_offset,
5473                    inner_depth
5474                )?;
5475                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5476                {
5477                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5478                }
5479                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5480                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5481                }
5482            }
5483
5484            next_offset += envelope_size;
5485
5486            // Decode the remaining unknown envelopes.
5487            while next_offset < end_offset {
5488                _next_ordinal_to_read += 1;
5489                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5490                next_offset += envelope_size;
5491            }
5492
5493            Ok(())
5494        }
5495    }
5496
5497    impl WlanFullmacImplDisassocRequest {
5498        #[inline(always)]
5499        fn max_ordinal_present(&self) -> u64 {
5500            if let Some(_) = self.reason_code {
5501                return 2;
5502            }
5503            if let Some(_) = self.peer_sta_address {
5504                return 1;
5505            }
5506            0
5507        }
5508    }
5509
5510    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplDisassocRequest {
5511        type Borrowed<'a> = &'a Self;
5512        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5513            value
5514        }
5515    }
5516
5517    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplDisassocRequest {
5518        type Owned = Self;
5519
5520        #[inline(always)]
5521        fn inline_align(_context: fidl::encoding::Context) -> usize {
5522            8
5523        }
5524
5525        #[inline(always)]
5526        fn inline_size(_context: fidl::encoding::Context) -> usize {
5527            16
5528        }
5529    }
5530
5531    unsafe impl<D: fidl::encoding::ResourceDialect>
5532        fidl::encoding::Encode<WlanFullmacImplDisassocRequest, D>
5533        for &WlanFullmacImplDisassocRequest
5534    {
5535        unsafe fn encode(
5536            self,
5537            encoder: &mut fidl::encoding::Encoder<'_, D>,
5538            offset: usize,
5539            mut depth: fidl::encoding::Depth,
5540        ) -> fidl::Result<()> {
5541            encoder.debug_check_bounds::<WlanFullmacImplDisassocRequest>(offset);
5542            // Vector header
5543            let max_ordinal: u64 = self.max_ordinal_present();
5544            encoder.write_num(max_ordinal, offset);
5545            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5546            // Calling encoder.out_of_line_offset(0) is not allowed.
5547            if max_ordinal == 0 {
5548                return Ok(());
5549            }
5550            depth.increment()?;
5551            let envelope_size = 8;
5552            let bytes_len = max_ordinal as usize * envelope_size;
5553            #[allow(unused_variables)]
5554            let offset = encoder.out_of_line_offset(bytes_len);
5555            let mut _prev_end_offset: usize = 0;
5556            if 1 > max_ordinal {
5557                return Ok(());
5558            }
5559
5560            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5561            // are envelope_size bytes.
5562            let cur_offset: usize = (1 - 1) * envelope_size;
5563
5564            // Zero reserved fields.
5565            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5566
5567            // Safety:
5568            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5569            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5570            //   envelope_size bytes, there is always sufficient room.
5571            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5572                self.peer_sta_address
5573                    .as_ref()
5574                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5575                encoder,
5576                offset + cur_offset,
5577                depth,
5578            )?;
5579
5580            _prev_end_offset = cur_offset + envelope_size;
5581            if 2 > max_ordinal {
5582                return Ok(());
5583            }
5584
5585            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5586            // are envelope_size bytes.
5587            let cur_offset: usize = (2 - 1) * envelope_size;
5588
5589            // Zero reserved fields.
5590            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5591
5592            // Safety:
5593            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5594            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5595            //   envelope_size bytes, there is always sufficient room.
5596            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>(
5597            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
5598            encoder, offset + cur_offset, depth
5599        )?;
5600
5601            _prev_end_offset = cur_offset + envelope_size;
5602
5603            Ok(())
5604        }
5605    }
5606
5607    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5608        for WlanFullmacImplDisassocRequest
5609    {
5610        #[inline(always)]
5611        fn new_empty() -> Self {
5612            Self::default()
5613        }
5614
5615        unsafe fn decode(
5616            &mut self,
5617            decoder: &mut fidl::encoding::Decoder<'_, D>,
5618            offset: usize,
5619            mut depth: fidl::encoding::Depth,
5620        ) -> fidl::Result<()> {
5621            decoder.debug_check_bounds::<Self>(offset);
5622            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5623                None => return Err(fidl::Error::NotNullable),
5624                Some(len) => len,
5625            };
5626            // Calling decoder.out_of_line_offset(0) is not allowed.
5627            if len == 0 {
5628                return Ok(());
5629            };
5630            depth.increment()?;
5631            let envelope_size = 8;
5632            let bytes_len = len * envelope_size;
5633            let offset = decoder.out_of_line_offset(bytes_len)?;
5634            // Decode the envelope for each type.
5635            let mut _next_ordinal_to_read = 0;
5636            let mut next_offset = offset;
5637            let end_offset = offset + bytes_len;
5638            _next_ordinal_to_read += 1;
5639            if next_offset >= end_offset {
5640                return Ok(());
5641            }
5642
5643            // Decode unknown envelopes for gaps in ordinals.
5644            while _next_ordinal_to_read < 1 {
5645                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5646                _next_ordinal_to_read += 1;
5647                next_offset += envelope_size;
5648            }
5649
5650            let next_out_of_line = decoder.next_out_of_line();
5651            let handles_before = decoder.remaining_handles();
5652            if let Some((inlined, num_bytes, num_handles)) =
5653                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5654            {
5655                let member_inline_size =
5656                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5657                        decoder.context,
5658                    );
5659                if inlined != (member_inline_size <= 4) {
5660                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5661                }
5662                let inner_offset;
5663                let mut inner_depth = depth.clone();
5664                if inlined {
5665                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5666                    inner_offset = next_offset;
5667                } else {
5668                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5669                    inner_depth.increment()?;
5670                }
5671                let val_ref = self
5672                    .peer_sta_address
5673                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5674                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5675                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5676                {
5677                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5678                }
5679                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5680                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5681                }
5682            }
5683
5684            next_offset += envelope_size;
5685            _next_ordinal_to_read += 1;
5686            if next_offset >= end_offset {
5687                return Ok(());
5688            }
5689
5690            // Decode unknown envelopes for gaps in ordinals.
5691            while _next_ordinal_to_read < 2 {
5692                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5693                _next_ordinal_to_read += 1;
5694                next_offset += envelope_size;
5695            }
5696
5697            let next_out_of_line = decoder.next_out_of_line();
5698            let handles_before = decoder.remaining_handles();
5699            if let Some((inlined, num_bytes, num_handles)) =
5700                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5701            {
5702                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5703                if inlined != (member_inline_size <= 4) {
5704                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5705                }
5706                let inner_offset;
5707                let mut inner_depth = depth.clone();
5708                if inlined {
5709                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5710                    inner_offset = next_offset;
5711                } else {
5712                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5713                    inner_depth.increment()?;
5714                }
5715                let val_ref = self.reason_code.get_or_insert_with(|| {
5716                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D)
5717                });
5718                fidl::decode!(
5719                    fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
5720                    D,
5721                    val_ref,
5722                    decoder,
5723                    inner_offset,
5724                    inner_depth
5725                )?;
5726                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5727                {
5728                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5729                }
5730                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5731                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5732                }
5733            }
5734
5735            next_offset += envelope_size;
5736
5737            // Decode the remaining unknown envelopes.
5738            while next_offset < end_offset {
5739                _next_ordinal_to_read += 1;
5740                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5741                next_offset += envelope_size;
5742            }
5743
5744            Ok(())
5745        }
5746    }
5747
5748    impl WlanFullmacImplEapolTxRequest {
5749        #[inline(always)]
5750        fn max_ordinal_present(&self) -> u64 {
5751            if let Some(_) = self.data {
5752                return 3;
5753            }
5754            if let Some(_) = self.dst_addr {
5755                return 2;
5756            }
5757            if let Some(_) = self.src_addr {
5758                return 1;
5759            }
5760            0
5761        }
5762    }
5763
5764    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplEapolTxRequest {
5765        type Borrowed<'a> = &'a Self;
5766        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5767            value
5768        }
5769    }
5770
5771    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplEapolTxRequest {
5772        type Owned = Self;
5773
5774        #[inline(always)]
5775        fn inline_align(_context: fidl::encoding::Context) -> usize {
5776            8
5777        }
5778
5779        #[inline(always)]
5780        fn inline_size(_context: fidl::encoding::Context) -> usize {
5781            16
5782        }
5783    }
5784
5785    unsafe impl<D: fidl::encoding::ResourceDialect>
5786        fidl::encoding::Encode<WlanFullmacImplEapolTxRequest, D>
5787        for &WlanFullmacImplEapolTxRequest
5788    {
5789        unsafe fn encode(
5790            self,
5791            encoder: &mut fidl::encoding::Encoder<'_, D>,
5792            offset: usize,
5793            mut depth: fidl::encoding::Depth,
5794        ) -> fidl::Result<()> {
5795            encoder.debug_check_bounds::<WlanFullmacImplEapolTxRequest>(offset);
5796            // Vector header
5797            let max_ordinal: u64 = self.max_ordinal_present();
5798            encoder.write_num(max_ordinal, offset);
5799            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5800            // Calling encoder.out_of_line_offset(0) is not allowed.
5801            if max_ordinal == 0 {
5802                return Ok(());
5803            }
5804            depth.increment()?;
5805            let envelope_size = 8;
5806            let bytes_len = max_ordinal as usize * envelope_size;
5807            #[allow(unused_variables)]
5808            let offset = encoder.out_of_line_offset(bytes_len);
5809            let mut _prev_end_offset: usize = 0;
5810            if 1 > max_ordinal {
5811                return Ok(());
5812            }
5813
5814            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5815            // are envelope_size bytes.
5816            let cur_offset: usize = (1 - 1) * envelope_size;
5817
5818            // Zero reserved fields.
5819            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5820
5821            // Safety:
5822            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5823            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5824            //   envelope_size bytes, there is always sufficient room.
5825            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5826                self.src_addr
5827                    .as_ref()
5828                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5829                encoder,
5830                offset + cur_offset,
5831                depth,
5832            )?;
5833
5834            _prev_end_offset = cur_offset + envelope_size;
5835            if 2 > max_ordinal {
5836                return Ok(());
5837            }
5838
5839            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5840            // are envelope_size bytes.
5841            let cur_offset: usize = (2 - 1) * envelope_size;
5842
5843            // Zero reserved fields.
5844            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5845
5846            // Safety:
5847            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5848            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5849            //   envelope_size bytes, there is always sufficient room.
5850            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5851                self.dst_addr
5852                    .as_ref()
5853                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5854                encoder,
5855                offset + cur_offset,
5856                depth,
5857            )?;
5858
5859            _prev_end_offset = cur_offset + envelope_size;
5860            if 3 > max_ordinal {
5861                return Ok(());
5862            }
5863
5864            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5865            // are envelope_size bytes.
5866            let cur_offset: usize = (3 - 1) * envelope_size;
5867
5868            // Zero reserved fields.
5869            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5870
5871            // Safety:
5872            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5873            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5874            //   envelope_size bytes, there is always sufficient room.
5875            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
5876            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
5877            encoder, offset + cur_offset, depth
5878        )?;
5879
5880            _prev_end_offset = cur_offset + envelope_size;
5881
5882            Ok(())
5883        }
5884    }
5885
5886    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5887        for WlanFullmacImplEapolTxRequest
5888    {
5889        #[inline(always)]
5890        fn new_empty() -> Self {
5891            Self::default()
5892        }
5893
5894        unsafe fn decode(
5895            &mut self,
5896            decoder: &mut fidl::encoding::Decoder<'_, D>,
5897            offset: usize,
5898            mut depth: fidl::encoding::Depth,
5899        ) -> fidl::Result<()> {
5900            decoder.debug_check_bounds::<Self>(offset);
5901            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5902                None => return Err(fidl::Error::NotNullable),
5903                Some(len) => len,
5904            };
5905            // Calling decoder.out_of_line_offset(0) is not allowed.
5906            if len == 0 {
5907                return Ok(());
5908            };
5909            depth.increment()?;
5910            let envelope_size = 8;
5911            let bytes_len = len * envelope_size;
5912            let offset = decoder.out_of_line_offset(bytes_len)?;
5913            // Decode the envelope for each type.
5914            let mut _next_ordinal_to_read = 0;
5915            let mut next_offset = offset;
5916            let end_offset = offset + bytes_len;
5917            _next_ordinal_to_read += 1;
5918            if next_offset >= end_offset {
5919                return Ok(());
5920            }
5921
5922            // Decode unknown envelopes for gaps in ordinals.
5923            while _next_ordinal_to_read < 1 {
5924                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5925                _next_ordinal_to_read += 1;
5926                next_offset += envelope_size;
5927            }
5928
5929            let next_out_of_line = decoder.next_out_of_line();
5930            let handles_before = decoder.remaining_handles();
5931            if let Some((inlined, num_bytes, num_handles)) =
5932                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5933            {
5934                let member_inline_size =
5935                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5936                        decoder.context,
5937                    );
5938                if inlined != (member_inline_size <= 4) {
5939                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5940                }
5941                let inner_offset;
5942                let mut inner_depth = depth.clone();
5943                if inlined {
5944                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5945                    inner_offset = next_offset;
5946                } else {
5947                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5948                    inner_depth.increment()?;
5949                }
5950                let val_ref = self
5951                    .src_addr
5952                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5953                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5954                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5955                {
5956                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5957                }
5958                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5959                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5960                }
5961            }
5962
5963            next_offset += envelope_size;
5964            _next_ordinal_to_read += 1;
5965            if next_offset >= end_offset {
5966                return Ok(());
5967            }
5968
5969            // Decode unknown envelopes for gaps in ordinals.
5970            while _next_ordinal_to_read < 2 {
5971                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5972                _next_ordinal_to_read += 1;
5973                next_offset += envelope_size;
5974            }
5975
5976            let next_out_of_line = decoder.next_out_of_line();
5977            let handles_before = decoder.remaining_handles();
5978            if let Some((inlined, num_bytes, num_handles)) =
5979                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5980            {
5981                let member_inline_size =
5982                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5983                        decoder.context,
5984                    );
5985                if inlined != (member_inline_size <= 4) {
5986                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5987                }
5988                let inner_offset;
5989                let mut inner_depth = depth.clone();
5990                if inlined {
5991                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5992                    inner_offset = next_offset;
5993                } else {
5994                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5995                    inner_depth.increment()?;
5996                }
5997                let val_ref = self
5998                    .dst_addr
5999                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6000                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6001                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6002                {
6003                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6004                }
6005                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6006                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6007                }
6008            }
6009
6010            next_offset += envelope_size;
6011            _next_ordinal_to_read += 1;
6012            if next_offset >= end_offset {
6013                return Ok(());
6014            }
6015
6016            // Decode unknown envelopes for gaps in ordinals.
6017            while _next_ordinal_to_read < 3 {
6018                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6019                _next_ordinal_to_read += 1;
6020                next_offset += envelope_size;
6021            }
6022
6023            let next_out_of_line = decoder.next_out_of_line();
6024            let handles_before = decoder.remaining_handles();
6025            if let Some((inlined, num_bytes, num_handles)) =
6026                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6027            {
6028                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6029                if inlined != (member_inline_size <= 4) {
6030                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6031                }
6032                let inner_offset;
6033                let mut inner_depth = depth.clone();
6034                if inlined {
6035                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6036                    inner_offset = next_offset;
6037                } else {
6038                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6039                    inner_depth.increment()?;
6040                }
6041                let val_ref = self.data.get_or_insert_with(|| {
6042                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
6043                });
6044                fidl::decode!(
6045                    fidl::encoding::UnboundedVector<u8>,
6046                    D,
6047                    val_ref,
6048                    decoder,
6049                    inner_offset,
6050                    inner_depth
6051                )?;
6052                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6053                {
6054                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6055                }
6056                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6057                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6058                }
6059            }
6060
6061            next_offset += envelope_size;
6062
6063            // Decode the remaining unknown envelopes.
6064            while next_offset < end_offset {
6065                _next_ordinal_to_read += 1;
6066                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6067                next_offset += envelope_size;
6068            }
6069
6070            Ok(())
6071        }
6072    }
6073
6074    impl WlanFullmacImplIfcAssocIndRequest {
6075        #[inline(always)]
6076        fn max_ordinal_present(&self) -> u64 {
6077            if let Some(_) = self.vendor_ie {
6078                return 5;
6079            }
6080            if let Some(_) = self.rsne {
6081                return 4;
6082            }
6083            if let Some(_) = self.ssid {
6084                return 3;
6085            }
6086            if let Some(_) = self.listen_interval {
6087                return 2;
6088            }
6089            if let Some(_) = self.peer_sta_address {
6090                return 1;
6091            }
6092            0
6093        }
6094    }
6095
6096    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAssocIndRequest {
6097        type Borrowed<'a> = &'a Self;
6098        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6099            value
6100        }
6101    }
6102
6103    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAssocIndRequest {
6104        type Owned = Self;
6105
6106        #[inline(always)]
6107        fn inline_align(_context: fidl::encoding::Context) -> usize {
6108            8
6109        }
6110
6111        #[inline(always)]
6112        fn inline_size(_context: fidl::encoding::Context) -> usize {
6113            16
6114        }
6115    }
6116
6117    unsafe impl<D: fidl::encoding::ResourceDialect>
6118        fidl::encoding::Encode<WlanFullmacImplIfcAssocIndRequest, D>
6119        for &WlanFullmacImplIfcAssocIndRequest
6120    {
6121        unsafe fn encode(
6122            self,
6123            encoder: &mut fidl::encoding::Encoder<'_, D>,
6124            offset: usize,
6125            mut depth: fidl::encoding::Depth,
6126        ) -> fidl::Result<()> {
6127            encoder.debug_check_bounds::<WlanFullmacImplIfcAssocIndRequest>(offset);
6128            // Vector header
6129            let max_ordinal: u64 = self.max_ordinal_present();
6130            encoder.write_num(max_ordinal, offset);
6131            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6132            // Calling encoder.out_of_line_offset(0) is not allowed.
6133            if max_ordinal == 0 {
6134                return Ok(());
6135            }
6136            depth.increment()?;
6137            let envelope_size = 8;
6138            let bytes_len = max_ordinal as usize * envelope_size;
6139            #[allow(unused_variables)]
6140            let offset = encoder.out_of_line_offset(bytes_len);
6141            let mut _prev_end_offset: usize = 0;
6142            if 1 > max_ordinal {
6143                return Ok(());
6144            }
6145
6146            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6147            // are envelope_size bytes.
6148            let cur_offset: usize = (1 - 1) * envelope_size;
6149
6150            // Zero reserved fields.
6151            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6152
6153            // Safety:
6154            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6155            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6156            //   envelope_size bytes, there is always sufficient room.
6157            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6158                self.peer_sta_address
6159                    .as_ref()
6160                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6161                encoder,
6162                offset + cur_offset,
6163                depth,
6164            )?;
6165
6166            _prev_end_offset = cur_offset + envelope_size;
6167            if 2 > max_ordinal {
6168                return Ok(());
6169            }
6170
6171            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6172            // are envelope_size bytes.
6173            let cur_offset: usize = (2 - 1) * envelope_size;
6174
6175            // Zero reserved fields.
6176            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6177
6178            // Safety:
6179            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6180            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6181            //   envelope_size bytes, there is always sufficient room.
6182            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6183                self.listen_interval.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6184                encoder,
6185                offset + cur_offset,
6186                depth,
6187            )?;
6188
6189            _prev_end_offset = cur_offset + envelope_size;
6190            if 3 > max_ordinal {
6191                return Ok(());
6192            }
6193
6194            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6195            // are envelope_size bytes.
6196            let cur_offset: usize = (3 - 1) * envelope_size;
6197
6198            // Zero reserved fields.
6199            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6200
6201            // Safety:
6202            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6203            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6204            //   envelope_size bytes, there is always sufficient room.
6205            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
6206                self.ssid.as_ref().map(
6207                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
6208                ),
6209                encoder,
6210                offset + cur_offset,
6211                depth,
6212            )?;
6213
6214            _prev_end_offset = cur_offset + envelope_size;
6215            if 4 > max_ordinal {
6216                return Ok(());
6217            }
6218
6219            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6220            // are envelope_size bytes.
6221            let cur_offset: usize = (4 - 1) * envelope_size;
6222
6223            // Zero reserved fields.
6224            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6225
6226            // Safety:
6227            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6228            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6229            //   envelope_size bytes, there is always sufficient room.
6230            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
6231                self.rsne.as_ref().map(
6232                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
6233                ),
6234                encoder,
6235                offset + cur_offset,
6236                depth,
6237            )?;
6238
6239            _prev_end_offset = cur_offset + envelope_size;
6240            if 5 > max_ordinal {
6241                return Ok(());
6242            }
6243
6244            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6245            // are envelope_size bytes.
6246            let cur_offset: usize = (5 - 1) * envelope_size;
6247
6248            // Zero reserved fields.
6249            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6250
6251            // Safety:
6252            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6253            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6254            //   envelope_size bytes, there is always sufficient room.
6255            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
6256                self.vendor_ie.as_ref().map(
6257                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
6258                ),
6259                encoder,
6260                offset + cur_offset,
6261                depth,
6262            )?;
6263
6264            _prev_end_offset = cur_offset + envelope_size;
6265
6266            Ok(())
6267        }
6268    }
6269
6270    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6271        for WlanFullmacImplIfcAssocIndRequest
6272    {
6273        #[inline(always)]
6274        fn new_empty() -> Self {
6275            Self::default()
6276        }
6277
6278        unsafe fn decode(
6279            &mut self,
6280            decoder: &mut fidl::encoding::Decoder<'_, D>,
6281            offset: usize,
6282            mut depth: fidl::encoding::Depth,
6283        ) -> fidl::Result<()> {
6284            decoder.debug_check_bounds::<Self>(offset);
6285            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6286                None => return Err(fidl::Error::NotNullable),
6287                Some(len) => len,
6288            };
6289            // Calling decoder.out_of_line_offset(0) is not allowed.
6290            if len == 0 {
6291                return Ok(());
6292            };
6293            depth.increment()?;
6294            let envelope_size = 8;
6295            let bytes_len = len * envelope_size;
6296            let offset = decoder.out_of_line_offset(bytes_len)?;
6297            // Decode the envelope for each type.
6298            let mut _next_ordinal_to_read = 0;
6299            let mut next_offset = offset;
6300            let end_offset = offset + bytes_len;
6301            _next_ordinal_to_read += 1;
6302            if next_offset >= end_offset {
6303                return Ok(());
6304            }
6305
6306            // Decode unknown envelopes for gaps in ordinals.
6307            while _next_ordinal_to_read < 1 {
6308                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6309                _next_ordinal_to_read += 1;
6310                next_offset += envelope_size;
6311            }
6312
6313            let next_out_of_line = decoder.next_out_of_line();
6314            let handles_before = decoder.remaining_handles();
6315            if let Some((inlined, num_bytes, num_handles)) =
6316                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6317            {
6318                let member_inline_size =
6319                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6320                        decoder.context,
6321                    );
6322                if inlined != (member_inline_size <= 4) {
6323                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6324                }
6325                let inner_offset;
6326                let mut inner_depth = depth.clone();
6327                if inlined {
6328                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6329                    inner_offset = next_offset;
6330                } else {
6331                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6332                    inner_depth.increment()?;
6333                }
6334                let val_ref = self
6335                    .peer_sta_address
6336                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6337                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6338                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6339                {
6340                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6341                }
6342                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6343                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6344                }
6345            }
6346
6347            next_offset += envelope_size;
6348            _next_ordinal_to_read += 1;
6349            if next_offset >= end_offset {
6350                return Ok(());
6351            }
6352
6353            // Decode unknown envelopes for gaps in ordinals.
6354            while _next_ordinal_to_read < 2 {
6355                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6356                _next_ordinal_to_read += 1;
6357                next_offset += envelope_size;
6358            }
6359
6360            let next_out_of_line = decoder.next_out_of_line();
6361            let handles_before = decoder.remaining_handles();
6362            if let Some((inlined, num_bytes, num_handles)) =
6363                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6364            {
6365                let member_inline_size =
6366                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6367                if inlined != (member_inline_size <= 4) {
6368                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6369                }
6370                let inner_offset;
6371                let mut inner_depth = depth.clone();
6372                if inlined {
6373                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6374                    inner_offset = next_offset;
6375                } else {
6376                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6377                    inner_depth.increment()?;
6378                }
6379                let val_ref = self.listen_interval.get_or_insert_with(|| fidl::new_empty!(u16, D));
6380                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6381                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6382                {
6383                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6384                }
6385                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6386                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6387                }
6388            }
6389
6390            next_offset += envelope_size;
6391            _next_ordinal_to_read += 1;
6392            if next_offset >= end_offset {
6393                return Ok(());
6394            }
6395
6396            // Decode unknown envelopes for gaps in ordinals.
6397            while _next_ordinal_to_read < 3 {
6398                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6399                _next_ordinal_to_read += 1;
6400                next_offset += envelope_size;
6401            }
6402
6403            let next_out_of_line = decoder.next_out_of_line();
6404            let handles_before = decoder.remaining_handles();
6405            if let Some((inlined, num_bytes, num_handles)) =
6406                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6407            {
6408                let member_inline_size =
6409                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
6410                        decoder.context,
6411                    );
6412                if inlined != (member_inline_size <= 4) {
6413                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6414                }
6415                let inner_offset;
6416                let mut inner_depth = depth.clone();
6417                if inlined {
6418                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6419                    inner_offset = next_offset;
6420                } else {
6421                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6422                    inner_depth.increment()?;
6423                }
6424                let val_ref = self
6425                    .ssid
6426                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
6427                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
6428                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6429                {
6430                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6431                }
6432                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6433                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6434                }
6435            }
6436
6437            next_offset += envelope_size;
6438            _next_ordinal_to_read += 1;
6439            if next_offset >= end_offset {
6440                return Ok(());
6441            }
6442
6443            // Decode unknown envelopes for gaps in ordinals.
6444            while _next_ordinal_to_read < 4 {
6445                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6446                _next_ordinal_to_read += 1;
6447                next_offset += envelope_size;
6448            }
6449
6450            let next_out_of_line = decoder.next_out_of_line();
6451            let handles_before = decoder.remaining_handles();
6452            if let Some((inlined, num_bytes, num_handles)) =
6453                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6454            {
6455                let member_inline_size =
6456                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
6457                        decoder.context,
6458                    );
6459                if inlined != (member_inline_size <= 4) {
6460                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6461                }
6462                let inner_offset;
6463                let mut inner_depth = depth.clone();
6464                if inlined {
6465                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6466                    inner_offset = next_offset;
6467                } else {
6468                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6469                    inner_depth.increment()?;
6470                }
6471                let val_ref = self
6472                    .rsne
6473                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
6474                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
6475                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6476                {
6477                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6478                }
6479                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6480                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6481                }
6482            }
6483
6484            next_offset += envelope_size;
6485            _next_ordinal_to_read += 1;
6486            if next_offset >= end_offset {
6487                return Ok(());
6488            }
6489
6490            // Decode unknown envelopes for gaps in ordinals.
6491            while _next_ordinal_to_read < 5 {
6492                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6493                _next_ordinal_to_read += 1;
6494                next_offset += envelope_size;
6495            }
6496
6497            let next_out_of_line = decoder.next_out_of_line();
6498            let handles_before = decoder.remaining_handles();
6499            if let Some((inlined, num_bytes, num_handles)) =
6500                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6501            {
6502                let member_inline_size =
6503                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
6504                        decoder.context,
6505                    );
6506                if inlined != (member_inline_size <= 4) {
6507                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6508                }
6509                let inner_offset;
6510                let mut inner_depth = depth.clone();
6511                if inlined {
6512                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6513                    inner_offset = next_offset;
6514                } else {
6515                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6516                    inner_depth.increment()?;
6517                }
6518                let val_ref = self
6519                    .vendor_ie
6520                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
6521                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
6522                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6523                {
6524                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6525                }
6526                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6527                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6528                }
6529            }
6530
6531            next_offset += envelope_size;
6532
6533            // Decode the remaining unknown envelopes.
6534            while next_offset < end_offset {
6535                _next_ordinal_to_read += 1;
6536                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6537                next_offset += envelope_size;
6538            }
6539
6540            Ok(())
6541        }
6542    }
6543
6544    impl WlanFullmacImplIfcAuthIndRequest {
6545        #[inline(always)]
6546        fn max_ordinal_present(&self) -> u64 {
6547            if let Some(_) = self.auth_type {
6548                return 2;
6549            }
6550            if let Some(_) = self.peer_sta_address {
6551                return 1;
6552            }
6553            0
6554        }
6555    }
6556
6557    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcAuthIndRequest {
6558        type Borrowed<'a> = &'a Self;
6559        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6560            value
6561        }
6562    }
6563
6564    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcAuthIndRequest {
6565        type Owned = Self;
6566
6567        #[inline(always)]
6568        fn inline_align(_context: fidl::encoding::Context) -> usize {
6569            8
6570        }
6571
6572        #[inline(always)]
6573        fn inline_size(_context: fidl::encoding::Context) -> usize {
6574            16
6575        }
6576    }
6577
6578    unsafe impl<D: fidl::encoding::ResourceDialect>
6579        fidl::encoding::Encode<WlanFullmacImplIfcAuthIndRequest, D>
6580        for &WlanFullmacImplIfcAuthIndRequest
6581    {
6582        unsafe fn encode(
6583            self,
6584            encoder: &mut fidl::encoding::Encoder<'_, D>,
6585            offset: usize,
6586            mut depth: fidl::encoding::Depth,
6587        ) -> fidl::Result<()> {
6588            encoder.debug_check_bounds::<WlanFullmacImplIfcAuthIndRequest>(offset);
6589            // Vector header
6590            let max_ordinal: u64 = self.max_ordinal_present();
6591            encoder.write_num(max_ordinal, offset);
6592            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6593            // Calling encoder.out_of_line_offset(0) is not allowed.
6594            if max_ordinal == 0 {
6595                return Ok(());
6596            }
6597            depth.increment()?;
6598            let envelope_size = 8;
6599            let bytes_len = max_ordinal as usize * envelope_size;
6600            #[allow(unused_variables)]
6601            let offset = encoder.out_of_line_offset(bytes_len);
6602            let mut _prev_end_offset: usize = 0;
6603            if 1 > max_ordinal {
6604                return Ok(());
6605            }
6606
6607            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6608            // are envelope_size bytes.
6609            let cur_offset: usize = (1 - 1) * envelope_size;
6610
6611            // Zero reserved fields.
6612            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6613
6614            // Safety:
6615            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6616            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6617            //   envelope_size bytes, there is always sufficient room.
6618            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6619                self.peer_sta_address
6620                    .as_ref()
6621                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6622                encoder,
6623                offset + cur_offset,
6624                depth,
6625            )?;
6626
6627            _prev_end_offset = cur_offset + envelope_size;
6628            if 2 > max_ordinal {
6629                return Ok(());
6630            }
6631
6632            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6633            // are envelope_size bytes.
6634            let cur_offset: usize = (2 - 1) * envelope_size;
6635
6636            // Zero reserved fields.
6637            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6638
6639            // Safety:
6640            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6641            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6642            //   envelope_size bytes, there is always sufficient room.
6643            fidl::encoding::encode_in_envelope_optional::<WlanAuthType, D>(
6644                self.auth_type
6645                    .as_ref()
6646                    .map(<WlanAuthType as fidl::encoding::ValueTypeMarker>::borrow),
6647                encoder,
6648                offset + cur_offset,
6649                depth,
6650            )?;
6651
6652            _prev_end_offset = cur_offset + envelope_size;
6653
6654            Ok(())
6655        }
6656    }
6657
6658    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6659        for WlanFullmacImplIfcAuthIndRequest
6660    {
6661        #[inline(always)]
6662        fn new_empty() -> Self {
6663            Self::default()
6664        }
6665
6666        unsafe fn decode(
6667            &mut self,
6668            decoder: &mut fidl::encoding::Decoder<'_, D>,
6669            offset: usize,
6670            mut depth: fidl::encoding::Depth,
6671        ) -> fidl::Result<()> {
6672            decoder.debug_check_bounds::<Self>(offset);
6673            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6674                None => return Err(fidl::Error::NotNullable),
6675                Some(len) => len,
6676            };
6677            // Calling decoder.out_of_line_offset(0) is not allowed.
6678            if len == 0 {
6679                return Ok(());
6680            };
6681            depth.increment()?;
6682            let envelope_size = 8;
6683            let bytes_len = len * envelope_size;
6684            let offset = decoder.out_of_line_offset(bytes_len)?;
6685            // Decode the envelope for each type.
6686            let mut _next_ordinal_to_read = 0;
6687            let mut next_offset = offset;
6688            let end_offset = offset + bytes_len;
6689            _next_ordinal_to_read += 1;
6690            if next_offset >= end_offset {
6691                return Ok(());
6692            }
6693
6694            // Decode unknown envelopes for gaps in ordinals.
6695            while _next_ordinal_to_read < 1 {
6696                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6697                _next_ordinal_to_read += 1;
6698                next_offset += envelope_size;
6699            }
6700
6701            let next_out_of_line = decoder.next_out_of_line();
6702            let handles_before = decoder.remaining_handles();
6703            if let Some((inlined, num_bytes, num_handles)) =
6704                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6705            {
6706                let member_inline_size =
6707                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6708                        decoder.context,
6709                    );
6710                if inlined != (member_inline_size <= 4) {
6711                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6712                }
6713                let inner_offset;
6714                let mut inner_depth = depth.clone();
6715                if inlined {
6716                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6717                    inner_offset = next_offset;
6718                } else {
6719                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6720                    inner_depth.increment()?;
6721                }
6722                let val_ref = self
6723                    .peer_sta_address
6724                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6725                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6726                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6727                {
6728                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6729                }
6730                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6731                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6732                }
6733            }
6734
6735            next_offset += envelope_size;
6736            _next_ordinal_to_read += 1;
6737            if next_offset >= end_offset {
6738                return Ok(());
6739            }
6740
6741            // Decode unknown envelopes for gaps in ordinals.
6742            while _next_ordinal_to_read < 2 {
6743                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6744                _next_ordinal_to_read += 1;
6745                next_offset += envelope_size;
6746            }
6747
6748            let next_out_of_line = decoder.next_out_of_line();
6749            let handles_before = decoder.remaining_handles();
6750            if let Some((inlined, num_bytes, num_handles)) =
6751                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6752            {
6753                let member_inline_size =
6754                    <WlanAuthType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6755                if inlined != (member_inline_size <= 4) {
6756                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6757                }
6758                let inner_offset;
6759                let mut inner_depth = depth.clone();
6760                if inlined {
6761                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6762                    inner_offset = next_offset;
6763                } else {
6764                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6765                    inner_depth.increment()?;
6766                }
6767                let val_ref =
6768                    self.auth_type.get_or_insert_with(|| fidl::new_empty!(WlanAuthType, D));
6769                fidl::decode!(WlanAuthType, D, val_ref, decoder, inner_offset, inner_depth)?;
6770                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6771                {
6772                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6773                }
6774                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6775                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6776                }
6777            }
6778
6779            next_offset += envelope_size;
6780
6781            // Decode the remaining unknown envelopes.
6782            while next_offset < end_offset {
6783                _next_ordinal_to_read += 1;
6784                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6785                next_offset += envelope_size;
6786            }
6787
6788            Ok(())
6789        }
6790    }
6791
6792    impl WlanFullmacImplIfcConnectConfRequest {
6793        #[inline(always)]
6794        fn max_ordinal_present(&self) -> u64 {
6795            if let Some(_) = self.association_ies {
6796                return 4;
6797            }
6798            if let Some(_) = self.association_id {
6799                return 3;
6800            }
6801            if let Some(_) = self.result_code {
6802                return 2;
6803            }
6804            if let Some(_) = self.peer_sta_address {
6805                return 1;
6806            }
6807            0
6808        }
6809    }
6810
6811    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcConnectConfRequest {
6812        type Borrowed<'a> = &'a Self;
6813        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6814            value
6815        }
6816    }
6817
6818    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcConnectConfRequest {
6819        type Owned = Self;
6820
6821        #[inline(always)]
6822        fn inline_align(_context: fidl::encoding::Context) -> usize {
6823            8
6824        }
6825
6826        #[inline(always)]
6827        fn inline_size(_context: fidl::encoding::Context) -> usize {
6828            16
6829        }
6830    }
6831
6832    unsafe impl<D: fidl::encoding::ResourceDialect>
6833        fidl::encoding::Encode<WlanFullmacImplIfcConnectConfRequest, D>
6834        for &WlanFullmacImplIfcConnectConfRequest
6835    {
6836        unsafe fn encode(
6837            self,
6838            encoder: &mut fidl::encoding::Encoder<'_, D>,
6839            offset: usize,
6840            mut depth: fidl::encoding::Depth,
6841        ) -> fidl::Result<()> {
6842            encoder.debug_check_bounds::<WlanFullmacImplIfcConnectConfRequest>(offset);
6843            // Vector header
6844            let max_ordinal: u64 = self.max_ordinal_present();
6845            encoder.write_num(max_ordinal, offset);
6846            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6847            // Calling encoder.out_of_line_offset(0) is not allowed.
6848            if max_ordinal == 0 {
6849                return Ok(());
6850            }
6851            depth.increment()?;
6852            let envelope_size = 8;
6853            let bytes_len = max_ordinal as usize * envelope_size;
6854            #[allow(unused_variables)]
6855            let offset = encoder.out_of_line_offset(bytes_len);
6856            let mut _prev_end_offset: usize = 0;
6857            if 1 > max_ordinal {
6858                return Ok(());
6859            }
6860
6861            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6862            // are envelope_size bytes.
6863            let cur_offset: usize = (1 - 1) * envelope_size;
6864
6865            // Zero reserved fields.
6866            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6867
6868            // Safety:
6869            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6870            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6871            //   envelope_size bytes, there is always sufficient room.
6872            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6873                self.peer_sta_address
6874                    .as_ref()
6875                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6876                encoder,
6877                offset + cur_offset,
6878                depth,
6879            )?;
6880
6881            _prev_end_offset = cur_offset + envelope_size;
6882            if 2 > max_ordinal {
6883                return Ok(());
6884            }
6885
6886            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6887            // are envelope_size bytes.
6888            let cur_offset: usize = (2 - 1) * envelope_size;
6889
6890            // Zero reserved fields.
6891            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6892
6893            // Safety:
6894            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6895            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6896            //   envelope_size bytes, there is always sufficient room.
6897            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
6898            self.result_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
6899            encoder, offset + cur_offset, depth
6900        )?;
6901
6902            _prev_end_offset = cur_offset + envelope_size;
6903            if 3 > max_ordinal {
6904                return Ok(());
6905            }
6906
6907            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6908            // are envelope_size bytes.
6909            let cur_offset: usize = (3 - 1) * envelope_size;
6910
6911            // Zero reserved fields.
6912            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6913
6914            // Safety:
6915            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6916            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6917            //   envelope_size bytes, there is always sufficient room.
6918            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6919                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6920                encoder,
6921                offset + cur_offset,
6922                depth,
6923            )?;
6924
6925            _prev_end_offset = cur_offset + envelope_size;
6926            if 4 > max_ordinal {
6927                return Ok(());
6928            }
6929
6930            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6931            // are envelope_size bytes.
6932            let cur_offset: usize = (4 - 1) * envelope_size;
6933
6934            // Zero reserved fields.
6935            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6936
6937            // Safety:
6938            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6939            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6940            //   envelope_size bytes, there is always sufficient room.
6941            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
6942            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
6943            encoder, offset + cur_offset, depth
6944        )?;
6945
6946            _prev_end_offset = cur_offset + envelope_size;
6947
6948            Ok(())
6949        }
6950    }
6951
6952    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6953        for WlanFullmacImplIfcConnectConfRequest
6954    {
6955        #[inline(always)]
6956        fn new_empty() -> Self {
6957            Self::default()
6958        }
6959
6960        unsafe fn decode(
6961            &mut self,
6962            decoder: &mut fidl::encoding::Decoder<'_, D>,
6963            offset: usize,
6964            mut depth: fidl::encoding::Depth,
6965        ) -> fidl::Result<()> {
6966            decoder.debug_check_bounds::<Self>(offset);
6967            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6968                None => return Err(fidl::Error::NotNullable),
6969                Some(len) => len,
6970            };
6971            // Calling decoder.out_of_line_offset(0) is not allowed.
6972            if len == 0 {
6973                return Ok(());
6974            };
6975            depth.increment()?;
6976            let envelope_size = 8;
6977            let bytes_len = len * envelope_size;
6978            let offset = decoder.out_of_line_offset(bytes_len)?;
6979            // Decode the envelope for each type.
6980            let mut _next_ordinal_to_read = 0;
6981            let mut next_offset = offset;
6982            let end_offset = offset + bytes_len;
6983            _next_ordinal_to_read += 1;
6984            if next_offset >= end_offset {
6985                return Ok(());
6986            }
6987
6988            // Decode unknown envelopes for gaps in ordinals.
6989            while _next_ordinal_to_read < 1 {
6990                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6991                _next_ordinal_to_read += 1;
6992                next_offset += envelope_size;
6993            }
6994
6995            let next_out_of_line = decoder.next_out_of_line();
6996            let handles_before = decoder.remaining_handles();
6997            if let Some((inlined, num_bytes, num_handles)) =
6998                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6999            {
7000                let member_inline_size =
7001                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7002                        decoder.context,
7003                    );
7004                if inlined != (member_inline_size <= 4) {
7005                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7006                }
7007                let inner_offset;
7008                let mut inner_depth = depth.clone();
7009                if inlined {
7010                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7011                    inner_offset = next_offset;
7012                } else {
7013                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7014                    inner_depth.increment()?;
7015                }
7016                let val_ref = self
7017                    .peer_sta_address
7018                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7019                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7020                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7021                {
7022                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7023                }
7024                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7025                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7026                }
7027            }
7028
7029            next_offset += envelope_size;
7030            _next_ordinal_to_read += 1;
7031            if next_offset >= end_offset {
7032                return Ok(());
7033            }
7034
7035            // Decode unknown envelopes for gaps in ordinals.
7036            while _next_ordinal_to_read < 2 {
7037                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7038                _next_ordinal_to_read += 1;
7039                next_offset += envelope_size;
7040            }
7041
7042            let next_out_of_line = decoder.next_out_of_line();
7043            let handles_before = decoder.remaining_handles();
7044            if let Some((inlined, num_bytes, num_handles)) =
7045                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7046            {
7047                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7048                if inlined != (member_inline_size <= 4) {
7049                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7050                }
7051                let inner_offset;
7052                let mut inner_depth = depth.clone();
7053                if inlined {
7054                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7055                    inner_offset = next_offset;
7056                } else {
7057                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7058                    inner_depth.increment()?;
7059                }
7060                let val_ref = self.result_code.get_or_insert_with(|| {
7061                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
7062                });
7063                fidl::decode!(
7064                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
7065                    D,
7066                    val_ref,
7067                    decoder,
7068                    inner_offset,
7069                    inner_depth
7070                )?;
7071                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7072                {
7073                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7074                }
7075                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7076                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7077                }
7078            }
7079
7080            next_offset += envelope_size;
7081            _next_ordinal_to_read += 1;
7082            if next_offset >= end_offset {
7083                return Ok(());
7084            }
7085
7086            // Decode unknown envelopes for gaps in ordinals.
7087            while _next_ordinal_to_read < 3 {
7088                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7089                _next_ordinal_to_read += 1;
7090                next_offset += envelope_size;
7091            }
7092
7093            let next_out_of_line = decoder.next_out_of_line();
7094            let handles_before = decoder.remaining_handles();
7095            if let Some((inlined, num_bytes, num_handles)) =
7096                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7097            {
7098                let member_inline_size =
7099                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7100                if inlined != (member_inline_size <= 4) {
7101                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7102                }
7103                let inner_offset;
7104                let mut inner_depth = depth.clone();
7105                if inlined {
7106                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7107                    inner_offset = next_offset;
7108                } else {
7109                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7110                    inner_depth.increment()?;
7111                }
7112                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
7113                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7114                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7115                {
7116                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7117                }
7118                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7119                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7120                }
7121            }
7122
7123            next_offset += envelope_size;
7124            _next_ordinal_to_read += 1;
7125            if next_offset >= end_offset {
7126                return Ok(());
7127            }
7128
7129            // Decode unknown envelopes for gaps in ordinals.
7130            while _next_ordinal_to_read < 4 {
7131                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7132                _next_ordinal_to_read += 1;
7133                next_offset += envelope_size;
7134            }
7135
7136            let next_out_of_line = decoder.next_out_of_line();
7137            let handles_before = decoder.remaining_handles();
7138            if let Some((inlined, num_bytes, num_handles)) =
7139                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7140            {
7141                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7142                if inlined != (member_inline_size <= 4) {
7143                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7144                }
7145                let inner_offset;
7146                let mut inner_depth = depth.clone();
7147                if inlined {
7148                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7149                    inner_offset = next_offset;
7150                } else {
7151                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7152                    inner_depth.increment()?;
7153                }
7154                let val_ref = self.association_ies.get_or_insert_with(|| {
7155                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
7156                });
7157                fidl::decode!(
7158                    fidl::encoding::UnboundedVector<u8>,
7159                    D,
7160                    val_ref,
7161                    decoder,
7162                    inner_offset,
7163                    inner_depth
7164                )?;
7165                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7166                {
7167                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7168                }
7169                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7170                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7171                }
7172            }
7173
7174            next_offset += envelope_size;
7175
7176            // Decode the remaining unknown envelopes.
7177            while next_offset < end_offset {
7178                _next_ordinal_to_read += 1;
7179                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7180                next_offset += envelope_size;
7181            }
7182
7183            Ok(())
7184        }
7185    }
7186
7187    impl WlanFullmacImplIfcDeauthConfRequest {
7188        #[inline(always)]
7189        fn max_ordinal_present(&self) -> u64 {
7190            if let Some(_) = self.peer_sta_address {
7191                return 1;
7192            }
7193            0
7194        }
7195    }
7196
7197    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7198        type Borrowed<'a> = &'a Self;
7199        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7200            value
7201        }
7202    }
7203
7204    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthConfRequest {
7205        type Owned = Self;
7206
7207        #[inline(always)]
7208        fn inline_align(_context: fidl::encoding::Context) -> usize {
7209            8
7210        }
7211
7212        #[inline(always)]
7213        fn inline_size(_context: fidl::encoding::Context) -> usize {
7214            16
7215        }
7216    }
7217
7218    unsafe impl<D: fidl::encoding::ResourceDialect>
7219        fidl::encoding::Encode<WlanFullmacImplIfcDeauthConfRequest, D>
7220        for &WlanFullmacImplIfcDeauthConfRequest
7221    {
7222        unsafe fn encode(
7223            self,
7224            encoder: &mut fidl::encoding::Encoder<'_, D>,
7225            offset: usize,
7226            mut depth: fidl::encoding::Depth,
7227        ) -> fidl::Result<()> {
7228            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthConfRequest>(offset);
7229            // Vector header
7230            let max_ordinal: u64 = self.max_ordinal_present();
7231            encoder.write_num(max_ordinal, offset);
7232            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7233            // Calling encoder.out_of_line_offset(0) is not allowed.
7234            if max_ordinal == 0 {
7235                return Ok(());
7236            }
7237            depth.increment()?;
7238            let envelope_size = 8;
7239            let bytes_len = max_ordinal as usize * envelope_size;
7240            #[allow(unused_variables)]
7241            let offset = encoder.out_of_line_offset(bytes_len);
7242            let mut _prev_end_offset: usize = 0;
7243            if 1 > max_ordinal {
7244                return Ok(());
7245            }
7246
7247            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7248            // are envelope_size bytes.
7249            let cur_offset: usize = (1 - 1) * envelope_size;
7250
7251            // Zero reserved fields.
7252            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7253
7254            // Safety:
7255            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7256            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7257            //   envelope_size bytes, there is always sufficient room.
7258            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7259                self.peer_sta_address
7260                    .as_ref()
7261                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7262                encoder,
7263                offset + cur_offset,
7264                depth,
7265            )?;
7266
7267            _prev_end_offset = cur_offset + envelope_size;
7268
7269            Ok(())
7270        }
7271    }
7272
7273    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7274        for WlanFullmacImplIfcDeauthConfRequest
7275    {
7276        #[inline(always)]
7277        fn new_empty() -> Self {
7278            Self::default()
7279        }
7280
7281        unsafe fn decode(
7282            &mut self,
7283            decoder: &mut fidl::encoding::Decoder<'_, D>,
7284            offset: usize,
7285            mut depth: fidl::encoding::Depth,
7286        ) -> fidl::Result<()> {
7287            decoder.debug_check_bounds::<Self>(offset);
7288            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7289                None => return Err(fidl::Error::NotNullable),
7290                Some(len) => len,
7291            };
7292            // Calling decoder.out_of_line_offset(0) is not allowed.
7293            if len == 0 {
7294                return Ok(());
7295            };
7296            depth.increment()?;
7297            let envelope_size = 8;
7298            let bytes_len = len * envelope_size;
7299            let offset = decoder.out_of_line_offset(bytes_len)?;
7300            // Decode the envelope for each type.
7301            let mut _next_ordinal_to_read = 0;
7302            let mut next_offset = offset;
7303            let end_offset = offset + bytes_len;
7304            _next_ordinal_to_read += 1;
7305            if next_offset >= end_offset {
7306                return Ok(());
7307            }
7308
7309            // Decode unknown envelopes for gaps in ordinals.
7310            while _next_ordinal_to_read < 1 {
7311                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7312                _next_ordinal_to_read += 1;
7313                next_offset += envelope_size;
7314            }
7315
7316            let next_out_of_line = decoder.next_out_of_line();
7317            let handles_before = decoder.remaining_handles();
7318            if let Some((inlined, num_bytes, num_handles)) =
7319                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7320            {
7321                let member_inline_size =
7322                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7323                        decoder.context,
7324                    );
7325                if inlined != (member_inline_size <= 4) {
7326                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7327                }
7328                let inner_offset;
7329                let mut inner_depth = depth.clone();
7330                if inlined {
7331                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7332                    inner_offset = next_offset;
7333                } else {
7334                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7335                    inner_depth.increment()?;
7336                }
7337                let val_ref = self
7338                    .peer_sta_address
7339                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7340                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7341                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7342                {
7343                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7344                }
7345                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7346                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7347                }
7348            }
7349
7350            next_offset += envelope_size;
7351
7352            // Decode the remaining unknown envelopes.
7353            while next_offset < end_offset {
7354                _next_ordinal_to_read += 1;
7355                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7356                next_offset += envelope_size;
7357            }
7358
7359            Ok(())
7360        }
7361    }
7362
7363    impl WlanFullmacImplIfcDeauthIndRequest {
7364        #[inline(always)]
7365        fn max_ordinal_present(&self) -> u64 {
7366            if let Some(_) = self.locally_initiated {
7367                return 3;
7368            }
7369            if let Some(_) = self.reason_code {
7370                return 2;
7371            }
7372            if let Some(_) = self.peer_sta_address {
7373                return 1;
7374            }
7375            0
7376        }
7377    }
7378
7379    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7380        type Borrowed<'a> = &'a Self;
7381        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7382            value
7383        }
7384    }
7385
7386    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDeauthIndRequest {
7387        type Owned = Self;
7388
7389        #[inline(always)]
7390        fn inline_align(_context: fidl::encoding::Context) -> usize {
7391            8
7392        }
7393
7394        #[inline(always)]
7395        fn inline_size(_context: fidl::encoding::Context) -> usize {
7396            16
7397        }
7398    }
7399
7400    unsafe impl<D: fidl::encoding::ResourceDialect>
7401        fidl::encoding::Encode<WlanFullmacImplIfcDeauthIndRequest, D>
7402        for &WlanFullmacImplIfcDeauthIndRequest
7403    {
7404        unsafe fn encode(
7405            self,
7406            encoder: &mut fidl::encoding::Encoder<'_, D>,
7407            offset: usize,
7408            mut depth: fidl::encoding::Depth,
7409        ) -> fidl::Result<()> {
7410            encoder.debug_check_bounds::<WlanFullmacImplIfcDeauthIndRequest>(offset);
7411            // Vector header
7412            let max_ordinal: u64 = self.max_ordinal_present();
7413            encoder.write_num(max_ordinal, offset);
7414            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7415            // Calling encoder.out_of_line_offset(0) is not allowed.
7416            if max_ordinal == 0 {
7417                return Ok(());
7418            }
7419            depth.increment()?;
7420            let envelope_size = 8;
7421            let bytes_len = max_ordinal as usize * envelope_size;
7422            #[allow(unused_variables)]
7423            let offset = encoder.out_of_line_offset(bytes_len);
7424            let mut _prev_end_offset: usize = 0;
7425            if 1 > max_ordinal {
7426                return Ok(());
7427            }
7428
7429            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7430            // are envelope_size bytes.
7431            let cur_offset: usize = (1 - 1) * envelope_size;
7432
7433            // Zero reserved fields.
7434            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7435
7436            // Safety:
7437            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7438            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7439            //   envelope_size bytes, there is always sufficient room.
7440            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7441                self.peer_sta_address
7442                    .as_ref()
7443                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7444                encoder,
7445                offset + cur_offset,
7446                depth,
7447            )?;
7448
7449            _prev_end_offset = cur_offset + envelope_size;
7450            if 2 > max_ordinal {
7451                return Ok(());
7452            }
7453
7454            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7455            // are envelope_size bytes.
7456            let cur_offset: usize = (2 - 1) * envelope_size;
7457
7458            // Zero reserved fields.
7459            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7460
7461            // Safety:
7462            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7463            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7464            //   envelope_size bytes, there is always sufficient room.
7465            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>(
7466            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
7467            encoder, offset + cur_offset, depth
7468        )?;
7469
7470            _prev_end_offset = cur_offset + envelope_size;
7471            if 3 > max_ordinal {
7472                return Ok(());
7473            }
7474
7475            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7476            // are envelope_size bytes.
7477            let cur_offset: usize = (3 - 1) * envelope_size;
7478
7479            // Zero reserved fields.
7480            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7481
7482            // Safety:
7483            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7484            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7485            //   envelope_size bytes, there is always sufficient room.
7486            fidl::encoding::encode_in_envelope_optional::<bool, D>(
7487                self.locally_initiated
7488                    .as_ref()
7489                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7490                encoder,
7491                offset + cur_offset,
7492                depth,
7493            )?;
7494
7495            _prev_end_offset = cur_offset + envelope_size;
7496
7497            Ok(())
7498        }
7499    }
7500
7501    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7502        for WlanFullmacImplIfcDeauthIndRequest
7503    {
7504        #[inline(always)]
7505        fn new_empty() -> Self {
7506            Self::default()
7507        }
7508
7509        unsafe fn decode(
7510            &mut self,
7511            decoder: &mut fidl::encoding::Decoder<'_, D>,
7512            offset: usize,
7513            mut depth: fidl::encoding::Depth,
7514        ) -> fidl::Result<()> {
7515            decoder.debug_check_bounds::<Self>(offset);
7516            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7517                None => return Err(fidl::Error::NotNullable),
7518                Some(len) => len,
7519            };
7520            // Calling decoder.out_of_line_offset(0) is not allowed.
7521            if len == 0 {
7522                return Ok(());
7523            };
7524            depth.increment()?;
7525            let envelope_size = 8;
7526            let bytes_len = len * envelope_size;
7527            let offset = decoder.out_of_line_offset(bytes_len)?;
7528            // Decode the envelope for each type.
7529            let mut _next_ordinal_to_read = 0;
7530            let mut next_offset = offset;
7531            let end_offset = offset + bytes_len;
7532            _next_ordinal_to_read += 1;
7533            if next_offset >= end_offset {
7534                return Ok(());
7535            }
7536
7537            // Decode unknown envelopes for gaps in ordinals.
7538            while _next_ordinal_to_read < 1 {
7539                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7540                _next_ordinal_to_read += 1;
7541                next_offset += envelope_size;
7542            }
7543
7544            let next_out_of_line = decoder.next_out_of_line();
7545            let handles_before = decoder.remaining_handles();
7546            if let Some((inlined, num_bytes, num_handles)) =
7547                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7548            {
7549                let member_inline_size =
7550                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
7551                        decoder.context,
7552                    );
7553                if inlined != (member_inline_size <= 4) {
7554                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7555                }
7556                let inner_offset;
7557                let mut inner_depth = depth.clone();
7558                if inlined {
7559                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7560                    inner_offset = next_offset;
7561                } else {
7562                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7563                    inner_depth.increment()?;
7564                }
7565                let val_ref = self
7566                    .peer_sta_address
7567                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
7568                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
7569                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7570                {
7571                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7572                }
7573                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7574                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7575                }
7576            }
7577
7578            next_offset += envelope_size;
7579            _next_ordinal_to_read += 1;
7580            if next_offset >= end_offset {
7581                return Ok(());
7582            }
7583
7584            // Decode unknown envelopes for gaps in ordinals.
7585            while _next_ordinal_to_read < 2 {
7586                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7587                _next_ordinal_to_read += 1;
7588                next_offset += envelope_size;
7589            }
7590
7591            let next_out_of_line = decoder.next_out_of_line();
7592            let handles_before = decoder.remaining_handles();
7593            if let Some((inlined, num_bytes, num_handles)) =
7594                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7595            {
7596                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7597                if inlined != (member_inline_size <= 4) {
7598                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7599                }
7600                let inner_offset;
7601                let mut inner_depth = depth.clone();
7602                if inlined {
7603                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7604                    inner_offset = next_offset;
7605                } else {
7606                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7607                    inner_depth.increment()?;
7608                }
7609                let val_ref = self.reason_code.get_or_insert_with(|| {
7610                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D)
7611                });
7612                fidl::decode!(
7613                    fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
7614                    D,
7615                    val_ref,
7616                    decoder,
7617                    inner_offset,
7618                    inner_depth
7619                )?;
7620                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7621                {
7622                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7623                }
7624                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7625                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7626                }
7627            }
7628
7629            next_offset += envelope_size;
7630            _next_ordinal_to_read += 1;
7631            if next_offset >= end_offset {
7632                return Ok(());
7633            }
7634
7635            // Decode unknown envelopes for gaps in ordinals.
7636            while _next_ordinal_to_read < 3 {
7637                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7638                _next_ordinal_to_read += 1;
7639                next_offset += envelope_size;
7640            }
7641
7642            let next_out_of_line = decoder.next_out_of_line();
7643            let handles_before = decoder.remaining_handles();
7644            if let Some((inlined, num_bytes, num_handles)) =
7645                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7646            {
7647                let member_inline_size =
7648                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7649                if inlined != (member_inline_size <= 4) {
7650                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7651                }
7652                let inner_offset;
7653                let mut inner_depth = depth.clone();
7654                if inlined {
7655                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7656                    inner_offset = next_offset;
7657                } else {
7658                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7659                    inner_depth.increment()?;
7660                }
7661                let val_ref =
7662                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
7663                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7664                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7665                {
7666                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7667                }
7668                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7669                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7670                }
7671            }
7672
7673            next_offset += envelope_size;
7674
7675            // Decode the remaining unknown envelopes.
7676            while next_offset < end_offset {
7677                _next_ordinal_to_read += 1;
7678                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7679                next_offset += envelope_size;
7680            }
7681
7682            Ok(())
7683        }
7684    }
7685
7686    impl WlanFullmacImplIfcDisassocConfRequest {
7687        #[inline(always)]
7688        fn max_ordinal_present(&self) -> u64 {
7689            if let Some(_) = self.status {
7690                return 1;
7691            }
7692            0
7693        }
7694    }
7695
7696    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7697        type Borrowed<'a> = &'a Self;
7698        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7699            value
7700        }
7701    }
7702
7703    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocConfRequest {
7704        type Owned = Self;
7705
7706        #[inline(always)]
7707        fn inline_align(_context: fidl::encoding::Context) -> usize {
7708            8
7709        }
7710
7711        #[inline(always)]
7712        fn inline_size(_context: fidl::encoding::Context) -> usize {
7713            16
7714        }
7715    }
7716
7717    unsafe impl<D: fidl::encoding::ResourceDialect>
7718        fidl::encoding::Encode<WlanFullmacImplIfcDisassocConfRequest, D>
7719        for &WlanFullmacImplIfcDisassocConfRequest
7720    {
7721        unsafe fn encode(
7722            self,
7723            encoder: &mut fidl::encoding::Encoder<'_, D>,
7724            offset: usize,
7725            mut depth: fidl::encoding::Depth,
7726        ) -> fidl::Result<()> {
7727            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocConfRequest>(offset);
7728            // Vector header
7729            let max_ordinal: u64 = self.max_ordinal_present();
7730            encoder.write_num(max_ordinal, offset);
7731            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7732            // Calling encoder.out_of_line_offset(0) is not allowed.
7733            if max_ordinal == 0 {
7734                return Ok(());
7735            }
7736            depth.increment()?;
7737            let envelope_size = 8;
7738            let bytes_len = max_ordinal as usize * envelope_size;
7739            #[allow(unused_variables)]
7740            let offset = encoder.out_of_line_offset(bytes_len);
7741            let mut _prev_end_offset: usize = 0;
7742            if 1 > max_ordinal {
7743                return Ok(());
7744            }
7745
7746            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7747            // are envelope_size bytes.
7748            let cur_offset: usize = (1 - 1) * envelope_size;
7749
7750            // Zero reserved fields.
7751            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7752
7753            // Safety:
7754            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7755            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7756            //   envelope_size bytes, there is always sufficient room.
7757            fidl::encoding::encode_in_envelope_optional::<i32, D>(
7758                self.status.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
7759                encoder,
7760                offset + cur_offset,
7761                depth,
7762            )?;
7763
7764            _prev_end_offset = cur_offset + envelope_size;
7765
7766            Ok(())
7767        }
7768    }
7769
7770    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7771        for WlanFullmacImplIfcDisassocConfRequest
7772    {
7773        #[inline(always)]
7774        fn new_empty() -> Self {
7775            Self::default()
7776        }
7777
7778        unsafe fn decode(
7779            &mut self,
7780            decoder: &mut fidl::encoding::Decoder<'_, D>,
7781            offset: usize,
7782            mut depth: fidl::encoding::Depth,
7783        ) -> fidl::Result<()> {
7784            decoder.debug_check_bounds::<Self>(offset);
7785            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7786                None => return Err(fidl::Error::NotNullable),
7787                Some(len) => len,
7788            };
7789            // Calling decoder.out_of_line_offset(0) is not allowed.
7790            if len == 0 {
7791                return Ok(());
7792            };
7793            depth.increment()?;
7794            let envelope_size = 8;
7795            let bytes_len = len * envelope_size;
7796            let offset = decoder.out_of_line_offset(bytes_len)?;
7797            // Decode the envelope for each type.
7798            let mut _next_ordinal_to_read = 0;
7799            let mut next_offset = offset;
7800            let end_offset = offset + bytes_len;
7801            _next_ordinal_to_read += 1;
7802            if next_offset >= end_offset {
7803                return Ok(());
7804            }
7805
7806            // Decode unknown envelopes for gaps in ordinals.
7807            while _next_ordinal_to_read < 1 {
7808                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7809                _next_ordinal_to_read += 1;
7810                next_offset += envelope_size;
7811            }
7812
7813            let next_out_of_line = decoder.next_out_of_line();
7814            let handles_before = decoder.remaining_handles();
7815            if let Some((inlined, num_bytes, num_handles)) =
7816                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7817            {
7818                let member_inline_size =
7819                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7820                if inlined != (member_inline_size <= 4) {
7821                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7822                }
7823                let inner_offset;
7824                let mut inner_depth = depth.clone();
7825                if inlined {
7826                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7827                    inner_offset = next_offset;
7828                } else {
7829                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7830                    inner_depth.increment()?;
7831                }
7832                let val_ref = self.status.get_or_insert_with(|| fidl::new_empty!(i32, D));
7833                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
7834                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7835                {
7836                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7837                }
7838                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7839                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7840                }
7841            }
7842
7843            next_offset += envelope_size;
7844
7845            // Decode the remaining unknown envelopes.
7846            while next_offset < end_offset {
7847                _next_ordinal_to_read += 1;
7848                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7849                next_offset += envelope_size;
7850            }
7851
7852            Ok(())
7853        }
7854    }
7855
7856    impl WlanFullmacImplIfcDisassocIndRequest {
7857        #[inline(always)]
7858        fn max_ordinal_present(&self) -> u64 {
7859            if let Some(_) = self.locally_initiated {
7860                return 3;
7861            }
7862            if let Some(_) = self.reason_code {
7863                return 2;
7864            }
7865            if let Some(_) = self.peer_sta_address {
7866                return 1;
7867            }
7868            0
7869        }
7870    }
7871
7872    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcDisassocIndRequest {
7873        type Borrowed<'a> = &'a Self;
7874        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7875            value
7876        }
7877    }
7878
7879    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcDisassocIndRequest {
7880        type Owned = Self;
7881
7882        #[inline(always)]
7883        fn inline_align(_context: fidl::encoding::Context) -> usize {
7884            8
7885        }
7886
7887        #[inline(always)]
7888        fn inline_size(_context: fidl::encoding::Context) -> usize {
7889            16
7890        }
7891    }
7892
7893    unsafe impl<D: fidl::encoding::ResourceDialect>
7894        fidl::encoding::Encode<WlanFullmacImplIfcDisassocIndRequest, D>
7895        for &WlanFullmacImplIfcDisassocIndRequest
7896    {
7897        unsafe fn encode(
7898            self,
7899            encoder: &mut fidl::encoding::Encoder<'_, D>,
7900            offset: usize,
7901            mut depth: fidl::encoding::Depth,
7902        ) -> fidl::Result<()> {
7903            encoder.debug_check_bounds::<WlanFullmacImplIfcDisassocIndRequest>(offset);
7904            // Vector header
7905            let max_ordinal: u64 = self.max_ordinal_present();
7906            encoder.write_num(max_ordinal, offset);
7907            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7908            // Calling encoder.out_of_line_offset(0) is not allowed.
7909            if max_ordinal == 0 {
7910                return Ok(());
7911            }
7912            depth.increment()?;
7913            let envelope_size = 8;
7914            let bytes_len = max_ordinal as usize * envelope_size;
7915            #[allow(unused_variables)]
7916            let offset = encoder.out_of_line_offset(bytes_len);
7917            let mut _prev_end_offset: usize = 0;
7918            if 1 > max_ordinal {
7919                return Ok(());
7920            }
7921
7922            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7923            // are envelope_size bytes.
7924            let cur_offset: usize = (1 - 1) * envelope_size;
7925
7926            // Zero reserved fields.
7927            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7928
7929            // Safety:
7930            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7931            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7932            //   envelope_size bytes, there is always sufficient room.
7933            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
7934                self.peer_sta_address
7935                    .as_ref()
7936                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
7937                encoder,
7938                offset + cur_offset,
7939                depth,
7940            )?;
7941
7942            _prev_end_offset = cur_offset + envelope_size;
7943            if 2 > max_ordinal {
7944                return Ok(());
7945            }
7946
7947            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7948            // are envelope_size bytes.
7949            let cur_offset: usize = (2 - 1) * envelope_size;
7950
7951            // Zero reserved fields.
7952            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7953
7954            // Safety:
7955            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7956            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7957            //   envelope_size bytes, there is always sufficient room.
7958            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>(
7959            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
7960            encoder, offset + cur_offset, depth
7961        )?;
7962
7963            _prev_end_offset = cur_offset + envelope_size;
7964            if 3 > max_ordinal {
7965                return Ok(());
7966            }
7967
7968            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7969            // are envelope_size bytes.
7970            let cur_offset: usize = (3 - 1) * envelope_size;
7971
7972            // Zero reserved fields.
7973            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7974
7975            // Safety:
7976            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7977            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7978            //   envelope_size bytes, there is always sufficient room.
7979            fidl::encoding::encode_in_envelope_optional::<bool, D>(
7980                self.locally_initiated
7981                    .as_ref()
7982                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7983                encoder,
7984                offset + cur_offset,
7985                depth,
7986            )?;
7987
7988            _prev_end_offset = cur_offset + envelope_size;
7989
7990            Ok(())
7991        }
7992    }
7993
7994    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7995        for WlanFullmacImplIfcDisassocIndRequest
7996    {
7997        #[inline(always)]
7998        fn new_empty() -> Self {
7999            Self::default()
8000        }
8001
8002        unsafe fn decode(
8003            &mut self,
8004            decoder: &mut fidl::encoding::Decoder<'_, D>,
8005            offset: usize,
8006            mut depth: fidl::encoding::Depth,
8007        ) -> fidl::Result<()> {
8008            decoder.debug_check_bounds::<Self>(offset);
8009            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8010                None => return Err(fidl::Error::NotNullable),
8011                Some(len) => len,
8012            };
8013            // Calling decoder.out_of_line_offset(0) is not allowed.
8014            if len == 0 {
8015                return Ok(());
8016            };
8017            depth.increment()?;
8018            let envelope_size = 8;
8019            let bytes_len = len * envelope_size;
8020            let offset = decoder.out_of_line_offset(bytes_len)?;
8021            // Decode the envelope for each type.
8022            let mut _next_ordinal_to_read = 0;
8023            let mut next_offset = offset;
8024            let end_offset = offset + bytes_len;
8025            _next_ordinal_to_read += 1;
8026            if next_offset >= end_offset {
8027                return Ok(());
8028            }
8029
8030            // Decode unknown envelopes for gaps in ordinals.
8031            while _next_ordinal_to_read < 1 {
8032                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8033                _next_ordinal_to_read += 1;
8034                next_offset += envelope_size;
8035            }
8036
8037            let next_out_of_line = decoder.next_out_of_line();
8038            let handles_before = decoder.remaining_handles();
8039            if let Some((inlined, num_bytes, num_handles)) =
8040                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8041            {
8042                let member_inline_size =
8043                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8044                        decoder.context,
8045                    );
8046                if inlined != (member_inline_size <= 4) {
8047                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8048                }
8049                let inner_offset;
8050                let mut inner_depth = depth.clone();
8051                if inlined {
8052                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8053                    inner_offset = next_offset;
8054                } else {
8055                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8056                    inner_depth.increment()?;
8057                }
8058                let val_ref = self
8059                    .peer_sta_address
8060                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8061                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8062                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8063                {
8064                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8065                }
8066                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8067                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8068                }
8069            }
8070
8071            next_offset += envelope_size;
8072            _next_ordinal_to_read += 1;
8073            if next_offset >= end_offset {
8074                return Ok(());
8075            }
8076
8077            // Decode unknown envelopes for gaps in ordinals.
8078            while _next_ordinal_to_read < 2 {
8079                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8080                _next_ordinal_to_read += 1;
8081                next_offset += envelope_size;
8082            }
8083
8084            let next_out_of_line = decoder.next_out_of_line();
8085            let handles_before = decoder.remaining_handles();
8086            if let Some((inlined, num_bytes, num_handles)) =
8087                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8088            {
8089                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8090                if inlined != (member_inline_size <= 4) {
8091                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8092                }
8093                let inner_offset;
8094                let mut inner_depth = depth.clone();
8095                if inlined {
8096                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8097                    inner_offset = next_offset;
8098                } else {
8099                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8100                    inner_depth.increment()?;
8101                }
8102                let val_ref = self.reason_code.get_or_insert_with(|| {
8103                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D)
8104                });
8105                fidl::decode!(
8106                    fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
8107                    D,
8108                    val_ref,
8109                    decoder,
8110                    inner_offset,
8111                    inner_depth
8112                )?;
8113                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8114                {
8115                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8116                }
8117                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8118                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8119                }
8120            }
8121
8122            next_offset += envelope_size;
8123            _next_ordinal_to_read += 1;
8124            if next_offset >= end_offset {
8125                return Ok(());
8126            }
8127
8128            // Decode unknown envelopes for gaps in ordinals.
8129            while _next_ordinal_to_read < 3 {
8130                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8131                _next_ordinal_to_read += 1;
8132                next_offset += envelope_size;
8133            }
8134
8135            let next_out_of_line = decoder.next_out_of_line();
8136            let handles_before = decoder.remaining_handles();
8137            if let Some((inlined, num_bytes, num_handles)) =
8138                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8139            {
8140                let member_inline_size =
8141                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8142                if inlined != (member_inline_size <= 4) {
8143                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8144                }
8145                let inner_offset;
8146                let mut inner_depth = depth.clone();
8147                if inlined {
8148                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8149                    inner_offset = next_offset;
8150                } else {
8151                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8152                    inner_depth.increment()?;
8153                }
8154                let val_ref =
8155                    self.locally_initiated.get_or_insert_with(|| fidl::new_empty!(bool, D));
8156                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8157                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8158                {
8159                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8160                }
8161                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8162                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8163                }
8164            }
8165
8166            next_offset += envelope_size;
8167
8168            // Decode the remaining unknown envelopes.
8169            while next_offset < end_offset {
8170                _next_ordinal_to_read += 1;
8171                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8172                next_offset += envelope_size;
8173            }
8174
8175            Ok(())
8176        }
8177    }
8178
8179    impl WlanFullmacImplIfcEapolConfRequest {
8180        #[inline(always)]
8181        fn max_ordinal_present(&self) -> u64 {
8182            if let Some(_) = self.dst_addr {
8183                return 2;
8184            }
8185            if let Some(_) = self.result_code {
8186                return 1;
8187            }
8188            0
8189        }
8190    }
8191
8192    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolConfRequest {
8193        type Borrowed<'a> = &'a Self;
8194        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8195            value
8196        }
8197    }
8198
8199    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolConfRequest {
8200        type Owned = Self;
8201
8202        #[inline(always)]
8203        fn inline_align(_context: fidl::encoding::Context) -> usize {
8204            8
8205        }
8206
8207        #[inline(always)]
8208        fn inline_size(_context: fidl::encoding::Context) -> usize {
8209            16
8210        }
8211    }
8212
8213    unsafe impl<D: fidl::encoding::ResourceDialect>
8214        fidl::encoding::Encode<WlanFullmacImplIfcEapolConfRequest, D>
8215        for &WlanFullmacImplIfcEapolConfRequest
8216    {
8217        unsafe fn encode(
8218            self,
8219            encoder: &mut fidl::encoding::Encoder<'_, D>,
8220            offset: usize,
8221            mut depth: fidl::encoding::Depth,
8222        ) -> fidl::Result<()> {
8223            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolConfRequest>(offset);
8224            // Vector header
8225            let max_ordinal: u64 = self.max_ordinal_present();
8226            encoder.write_num(max_ordinal, offset);
8227            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8228            // Calling encoder.out_of_line_offset(0) is not allowed.
8229            if max_ordinal == 0 {
8230                return Ok(());
8231            }
8232            depth.increment()?;
8233            let envelope_size = 8;
8234            let bytes_len = max_ordinal as usize * envelope_size;
8235            #[allow(unused_variables)]
8236            let offset = encoder.out_of_line_offset(bytes_len);
8237            let mut _prev_end_offset: usize = 0;
8238            if 1 > max_ordinal {
8239                return Ok(());
8240            }
8241
8242            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8243            // are envelope_size bytes.
8244            let cur_offset: usize = (1 - 1) * envelope_size;
8245
8246            // Zero reserved fields.
8247            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8248
8249            // Safety:
8250            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8251            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8252            //   envelope_size bytes, there is always sufficient room.
8253            fidl::encoding::encode_in_envelope_optional::<EapolTxResult, D>(
8254                self.result_code
8255                    .as_ref()
8256                    .map(<EapolTxResult as fidl::encoding::ValueTypeMarker>::borrow),
8257                encoder,
8258                offset + cur_offset,
8259                depth,
8260            )?;
8261
8262            _prev_end_offset = cur_offset + envelope_size;
8263            if 2 > max_ordinal {
8264                return Ok(());
8265            }
8266
8267            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8268            // are envelope_size bytes.
8269            let cur_offset: usize = (2 - 1) * envelope_size;
8270
8271            // Zero reserved fields.
8272            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8273
8274            // Safety:
8275            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8276            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8277            //   envelope_size bytes, there is always sufficient room.
8278            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8279                self.dst_addr
8280                    .as_ref()
8281                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8282                encoder,
8283                offset + cur_offset,
8284                depth,
8285            )?;
8286
8287            _prev_end_offset = cur_offset + envelope_size;
8288
8289            Ok(())
8290        }
8291    }
8292
8293    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8294        for WlanFullmacImplIfcEapolConfRequest
8295    {
8296        #[inline(always)]
8297        fn new_empty() -> Self {
8298            Self::default()
8299        }
8300
8301        unsafe fn decode(
8302            &mut self,
8303            decoder: &mut fidl::encoding::Decoder<'_, D>,
8304            offset: usize,
8305            mut depth: fidl::encoding::Depth,
8306        ) -> fidl::Result<()> {
8307            decoder.debug_check_bounds::<Self>(offset);
8308            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8309                None => return Err(fidl::Error::NotNullable),
8310                Some(len) => len,
8311            };
8312            // Calling decoder.out_of_line_offset(0) is not allowed.
8313            if len == 0 {
8314                return Ok(());
8315            };
8316            depth.increment()?;
8317            let envelope_size = 8;
8318            let bytes_len = len * envelope_size;
8319            let offset = decoder.out_of_line_offset(bytes_len)?;
8320            // Decode the envelope for each type.
8321            let mut _next_ordinal_to_read = 0;
8322            let mut next_offset = offset;
8323            let end_offset = offset + bytes_len;
8324            _next_ordinal_to_read += 1;
8325            if next_offset >= end_offset {
8326                return Ok(());
8327            }
8328
8329            // Decode unknown envelopes for gaps in ordinals.
8330            while _next_ordinal_to_read < 1 {
8331                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8332                _next_ordinal_to_read += 1;
8333                next_offset += envelope_size;
8334            }
8335
8336            let next_out_of_line = decoder.next_out_of_line();
8337            let handles_before = decoder.remaining_handles();
8338            if let Some((inlined, num_bytes, num_handles)) =
8339                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8340            {
8341                let member_inline_size =
8342                    <EapolTxResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8343                if inlined != (member_inline_size <= 4) {
8344                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8345                }
8346                let inner_offset;
8347                let mut inner_depth = depth.clone();
8348                if inlined {
8349                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8350                    inner_offset = next_offset;
8351                } else {
8352                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8353                    inner_depth.increment()?;
8354                }
8355                let val_ref =
8356                    self.result_code.get_or_insert_with(|| fidl::new_empty!(EapolTxResult, D));
8357                fidl::decode!(EapolTxResult, D, val_ref, decoder, inner_offset, inner_depth)?;
8358                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8359                {
8360                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8361                }
8362                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8363                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8364                }
8365            }
8366
8367            next_offset += envelope_size;
8368            _next_ordinal_to_read += 1;
8369            if next_offset >= end_offset {
8370                return Ok(());
8371            }
8372
8373            // Decode unknown envelopes for gaps in ordinals.
8374            while _next_ordinal_to_read < 2 {
8375                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8376                _next_ordinal_to_read += 1;
8377                next_offset += envelope_size;
8378            }
8379
8380            let next_out_of_line = decoder.next_out_of_line();
8381            let handles_before = decoder.remaining_handles();
8382            if let Some((inlined, num_bytes, num_handles)) =
8383                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8384            {
8385                let member_inline_size =
8386                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8387                        decoder.context,
8388                    );
8389                if inlined != (member_inline_size <= 4) {
8390                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8391                }
8392                let inner_offset;
8393                let mut inner_depth = depth.clone();
8394                if inlined {
8395                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8396                    inner_offset = next_offset;
8397                } else {
8398                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8399                    inner_depth.increment()?;
8400                }
8401                let val_ref = self
8402                    .dst_addr
8403                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8404                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8405                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8406                {
8407                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8408                }
8409                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8410                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8411                }
8412            }
8413
8414            next_offset += envelope_size;
8415
8416            // Decode the remaining unknown envelopes.
8417            while next_offset < end_offset {
8418                _next_ordinal_to_read += 1;
8419                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8420                next_offset += envelope_size;
8421            }
8422
8423            Ok(())
8424        }
8425    }
8426
8427    impl WlanFullmacImplIfcEapolIndRequest {
8428        #[inline(always)]
8429        fn max_ordinal_present(&self) -> u64 {
8430            if let Some(_) = self.data {
8431                return 3;
8432            }
8433            if let Some(_) = self.dst_addr {
8434                return 2;
8435            }
8436            if let Some(_) = self.src_addr {
8437                return 1;
8438            }
8439            0
8440        }
8441    }
8442
8443    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcEapolIndRequest {
8444        type Borrowed<'a> = &'a Self;
8445        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8446            value
8447        }
8448    }
8449
8450    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcEapolIndRequest {
8451        type Owned = Self;
8452
8453        #[inline(always)]
8454        fn inline_align(_context: fidl::encoding::Context) -> usize {
8455            8
8456        }
8457
8458        #[inline(always)]
8459        fn inline_size(_context: fidl::encoding::Context) -> usize {
8460            16
8461        }
8462    }
8463
8464    unsafe impl<D: fidl::encoding::ResourceDialect>
8465        fidl::encoding::Encode<WlanFullmacImplIfcEapolIndRequest, D>
8466        for &WlanFullmacImplIfcEapolIndRequest
8467    {
8468        unsafe fn encode(
8469            self,
8470            encoder: &mut fidl::encoding::Encoder<'_, D>,
8471            offset: usize,
8472            mut depth: fidl::encoding::Depth,
8473        ) -> fidl::Result<()> {
8474            encoder.debug_check_bounds::<WlanFullmacImplIfcEapolIndRequest>(offset);
8475            // Vector header
8476            let max_ordinal: u64 = self.max_ordinal_present();
8477            encoder.write_num(max_ordinal, offset);
8478            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8479            // Calling encoder.out_of_line_offset(0) is not allowed.
8480            if max_ordinal == 0 {
8481                return Ok(());
8482            }
8483            depth.increment()?;
8484            let envelope_size = 8;
8485            let bytes_len = max_ordinal as usize * envelope_size;
8486            #[allow(unused_variables)]
8487            let offset = encoder.out_of_line_offset(bytes_len);
8488            let mut _prev_end_offset: usize = 0;
8489            if 1 > max_ordinal {
8490                return Ok(());
8491            }
8492
8493            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8494            // are envelope_size bytes.
8495            let cur_offset: usize = (1 - 1) * envelope_size;
8496
8497            // Zero reserved fields.
8498            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8499
8500            // Safety:
8501            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8502            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8503            //   envelope_size bytes, there is always sufficient room.
8504            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8505                self.src_addr
8506                    .as_ref()
8507                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8508                encoder,
8509                offset + cur_offset,
8510                depth,
8511            )?;
8512
8513            _prev_end_offset = cur_offset + envelope_size;
8514            if 2 > max_ordinal {
8515                return Ok(());
8516            }
8517
8518            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8519            // are envelope_size bytes.
8520            let cur_offset: usize = (2 - 1) * envelope_size;
8521
8522            // Zero reserved fields.
8523            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8524
8525            // Safety:
8526            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8527            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8528            //   envelope_size bytes, there is always sufficient room.
8529            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
8530                self.dst_addr
8531                    .as_ref()
8532                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
8533                encoder,
8534                offset + cur_offset,
8535                depth,
8536            )?;
8537
8538            _prev_end_offset = cur_offset + envelope_size;
8539            if 3 > max_ordinal {
8540                return Ok(());
8541            }
8542
8543            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8544            // are envelope_size bytes.
8545            let cur_offset: usize = (3 - 1) * envelope_size;
8546
8547            // Zero reserved fields.
8548            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8549
8550            // Safety:
8551            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8552            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8553            //   envelope_size bytes, there is always sufficient room.
8554            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8555            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8556            encoder, offset + cur_offset, depth
8557        )?;
8558
8559            _prev_end_offset = cur_offset + envelope_size;
8560
8561            Ok(())
8562        }
8563    }
8564
8565    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8566        for WlanFullmacImplIfcEapolIndRequest
8567    {
8568        #[inline(always)]
8569        fn new_empty() -> Self {
8570            Self::default()
8571        }
8572
8573        unsafe fn decode(
8574            &mut self,
8575            decoder: &mut fidl::encoding::Decoder<'_, D>,
8576            offset: usize,
8577            mut depth: fidl::encoding::Depth,
8578        ) -> fidl::Result<()> {
8579            decoder.debug_check_bounds::<Self>(offset);
8580            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8581                None => return Err(fidl::Error::NotNullable),
8582                Some(len) => len,
8583            };
8584            // Calling decoder.out_of_line_offset(0) is not allowed.
8585            if len == 0 {
8586                return Ok(());
8587            };
8588            depth.increment()?;
8589            let envelope_size = 8;
8590            let bytes_len = len * envelope_size;
8591            let offset = decoder.out_of_line_offset(bytes_len)?;
8592            // Decode the envelope for each type.
8593            let mut _next_ordinal_to_read = 0;
8594            let mut next_offset = offset;
8595            let end_offset = offset + bytes_len;
8596            _next_ordinal_to_read += 1;
8597            if next_offset >= end_offset {
8598                return Ok(());
8599            }
8600
8601            // Decode unknown envelopes for gaps in ordinals.
8602            while _next_ordinal_to_read < 1 {
8603                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8604                _next_ordinal_to_read += 1;
8605                next_offset += envelope_size;
8606            }
8607
8608            let next_out_of_line = decoder.next_out_of_line();
8609            let handles_before = decoder.remaining_handles();
8610            if let Some((inlined, num_bytes, num_handles)) =
8611                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8612            {
8613                let member_inline_size =
8614                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8615                        decoder.context,
8616                    );
8617                if inlined != (member_inline_size <= 4) {
8618                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8619                }
8620                let inner_offset;
8621                let mut inner_depth = depth.clone();
8622                if inlined {
8623                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8624                    inner_offset = next_offset;
8625                } else {
8626                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8627                    inner_depth.increment()?;
8628                }
8629                let val_ref = self
8630                    .src_addr
8631                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8632                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8633                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8634                {
8635                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8636                }
8637                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8638                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8639                }
8640            }
8641
8642            next_offset += envelope_size;
8643            _next_ordinal_to_read += 1;
8644            if next_offset >= end_offset {
8645                return Ok(());
8646            }
8647
8648            // Decode unknown envelopes for gaps in ordinals.
8649            while _next_ordinal_to_read < 2 {
8650                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8651                _next_ordinal_to_read += 1;
8652                next_offset += envelope_size;
8653            }
8654
8655            let next_out_of_line = decoder.next_out_of_line();
8656            let handles_before = decoder.remaining_handles();
8657            if let Some((inlined, num_bytes, num_handles)) =
8658                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8659            {
8660                let member_inline_size =
8661                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
8662                        decoder.context,
8663                    );
8664                if inlined != (member_inline_size <= 4) {
8665                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8666                }
8667                let inner_offset;
8668                let mut inner_depth = depth.clone();
8669                if inlined {
8670                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8671                    inner_offset = next_offset;
8672                } else {
8673                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8674                    inner_depth.increment()?;
8675                }
8676                let val_ref = self
8677                    .dst_addr
8678                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
8679                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
8680                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8681                {
8682                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8683                }
8684                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8685                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8686                }
8687            }
8688
8689            next_offset += envelope_size;
8690            _next_ordinal_to_read += 1;
8691            if next_offset >= end_offset {
8692                return Ok(());
8693            }
8694
8695            // Decode unknown envelopes for gaps in ordinals.
8696            while _next_ordinal_to_read < 3 {
8697                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8698                _next_ordinal_to_read += 1;
8699                next_offset += envelope_size;
8700            }
8701
8702            let next_out_of_line = decoder.next_out_of_line();
8703            let handles_before = decoder.remaining_handles();
8704            if let Some((inlined, num_bytes, num_handles)) =
8705                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8706            {
8707                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8708                if inlined != (member_inline_size <= 4) {
8709                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8710                }
8711                let inner_offset;
8712                let mut inner_depth = depth.clone();
8713                if inlined {
8714                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8715                    inner_offset = next_offset;
8716                } else {
8717                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8718                    inner_depth.increment()?;
8719                }
8720                let val_ref = self.data.get_or_insert_with(|| {
8721                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8722                });
8723                fidl::decode!(
8724                    fidl::encoding::UnboundedVector<u8>,
8725                    D,
8726                    val_ref,
8727                    decoder,
8728                    inner_offset,
8729                    inner_depth
8730                )?;
8731                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8732                {
8733                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8734                }
8735                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8736                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8737                }
8738            }
8739
8740            next_offset += envelope_size;
8741
8742            // Decode the remaining unknown envelopes.
8743            while next_offset < end_offset {
8744                _next_ordinal_to_read += 1;
8745                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8746                next_offset += envelope_size;
8747            }
8748
8749            Ok(())
8750        }
8751    }
8752
8753    impl WlanFullmacImplIfcOnPmkAvailableRequest {
8754        #[inline(always)]
8755        fn max_ordinal_present(&self) -> u64 {
8756            if let Some(_) = self.pmkid {
8757                return 2;
8758            }
8759            if let Some(_) = self.pmk {
8760                return 1;
8761            }
8762            0
8763        }
8764    }
8765
8766    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8767        type Borrowed<'a> = &'a Self;
8768        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8769            value
8770        }
8771    }
8772
8773    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnPmkAvailableRequest {
8774        type Owned = Self;
8775
8776        #[inline(always)]
8777        fn inline_align(_context: fidl::encoding::Context) -> usize {
8778            8
8779        }
8780
8781        #[inline(always)]
8782        fn inline_size(_context: fidl::encoding::Context) -> usize {
8783            16
8784        }
8785    }
8786
8787    unsafe impl<D: fidl::encoding::ResourceDialect>
8788        fidl::encoding::Encode<WlanFullmacImplIfcOnPmkAvailableRequest, D>
8789        for &WlanFullmacImplIfcOnPmkAvailableRequest
8790    {
8791        unsafe fn encode(
8792            self,
8793            encoder: &mut fidl::encoding::Encoder<'_, D>,
8794            offset: usize,
8795            mut depth: fidl::encoding::Depth,
8796        ) -> fidl::Result<()> {
8797            encoder.debug_check_bounds::<WlanFullmacImplIfcOnPmkAvailableRequest>(offset);
8798            // Vector header
8799            let max_ordinal: u64 = self.max_ordinal_present();
8800            encoder.write_num(max_ordinal, offset);
8801            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8802            // Calling encoder.out_of_line_offset(0) is not allowed.
8803            if max_ordinal == 0 {
8804                return Ok(());
8805            }
8806            depth.increment()?;
8807            let envelope_size = 8;
8808            let bytes_len = max_ordinal as usize * envelope_size;
8809            #[allow(unused_variables)]
8810            let offset = encoder.out_of_line_offset(bytes_len);
8811            let mut _prev_end_offset: usize = 0;
8812            if 1 > max_ordinal {
8813                return Ok(());
8814            }
8815
8816            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8817            // are envelope_size bytes.
8818            let cur_offset: usize = (1 - 1) * envelope_size;
8819
8820            // Zero reserved fields.
8821            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8822
8823            // Safety:
8824            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8825            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8826            //   envelope_size bytes, there is always sufficient room.
8827            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8828            self.pmk.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8829            encoder, offset + cur_offset, depth
8830        )?;
8831
8832            _prev_end_offset = cur_offset + envelope_size;
8833            if 2 > max_ordinal {
8834                return Ok(());
8835            }
8836
8837            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8838            // are envelope_size bytes.
8839            let cur_offset: usize = (2 - 1) * envelope_size;
8840
8841            // Zero reserved fields.
8842            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8843
8844            // Safety:
8845            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8846            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8847            //   envelope_size bytes, there is always sufficient room.
8848            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8849            self.pmkid.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8850            encoder, offset + cur_offset, depth
8851        )?;
8852
8853            _prev_end_offset = cur_offset + envelope_size;
8854
8855            Ok(())
8856        }
8857    }
8858
8859    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8860        for WlanFullmacImplIfcOnPmkAvailableRequest
8861    {
8862        #[inline(always)]
8863        fn new_empty() -> Self {
8864            Self::default()
8865        }
8866
8867        unsafe fn decode(
8868            &mut self,
8869            decoder: &mut fidl::encoding::Decoder<'_, D>,
8870            offset: usize,
8871            mut depth: fidl::encoding::Depth,
8872        ) -> fidl::Result<()> {
8873            decoder.debug_check_bounds::<Self>(offset);
8874            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8875                None => return Err(fidl::Error::NotNullable),
8876                Some(len) => len,
8877            };
8878            // Calling decoder.out_of_line_offset(0) is not allowed.
8879            if len == 0 {
8880                return Ok(());
8881            };
8882            depth.increment()?;
8883            let envelope_size = 8;
8884            let bytes_len = len * envelope_size;
8885            let offset = decoder.out_of_line_offset(bytes_len)?;
8886            // Decode the envelope for each type.
8887            let mut _next_ordinal_to_read = 0;
8888            let mut next_offset = offset;
8889            let end_offset = offset + bytes_len;
8890            _next_ordinal_to_read += 1;
8891            if next_offset >= end_offset {
8892                return Ok(());
8893            }
8894
8895            // Decode unknown envelopes for gaps in ordinals.
8896            while _next_ordinal_to_read < 1 {
8897                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8898                _next_ordinal_to_read += 1;
8899                next_offset += envelope_size;
8900            }
8901
8902            let next_out_of_line = decoder.next_out_of_line();
8903            let handles_before = decoder.remaining_handles();
8904            if let Some((inlined, num_bytes, num_handles)) =
8905                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8906            {
8907                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8908                if inlined != (member_inline_size <= 4) {
8909                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8910                }
8911                let inner_offset;
8912                let mut inner_depth = depth.clone();
8913                if inlined {
8914                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8915                    inner_offset = next_offset;
8916                } else {
8917                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8918                    inner_depth.increment()?;
8919                }
8920                let val_ref = self.pmk.get_or_insert_with(|| {
8921                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8922                });
8923                fidl::decode!(
8924                    fidl::encoding::UnboundedVector<u8>,
8925                    D,
8926                    val_ref,
8927                    decoder,
8928                    inner_offset,
8929                    inner_depth
8930                )?;
8931                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8932                {
8933                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8934                }
8935                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8936                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8937                }
8938            }
8939
8940            next_offset += envelope_size;
8941            _next_ordinal_to_read += 1;
8942            if next_offset >= end_offset {
8943                return Ok(());
8944            }
8945
8946            // Decode unknown envelopes for gaps in ordinals.
8947            while _next_ordinal_to_read < 2 {
8948                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8949                _next_ordinal_to_read += 1;
8950                next_offset += envelope_size;
8951            }
8952
8953            let next_out_of_line = decoder.next_out_of_line();
8954            let handles_before = decoder.remaining_handles();
8955            if let Some((inlined, num_bytes, num_handles)) =
8956                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8957            {
8958                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8959                if inlined != (member_inline_size <= 4) {
8960                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8961                }
8962                let inner_offset;
8963                let mut inner_depth = depth.clone();
8964                if inlined {
8965                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8966                    inner_offset = next_offset;
8967                } else {
8968                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8969                    inner_depth.increment()?;
8970                }
8971                let val_ref = self.pmkid.get_or_insert_with(|| {
8972                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8973                });
8974                fidl::decode!(
8975                    fidl::encoding::UnboundedVector<u8>,
8976                    D,
8977                    val_ref,
8978                    decoder,
8979                    inner_offset,
8980                    inner_depth
8981                )?;
8982                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8983                {
8984                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8985                }
8986                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8987                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8988                }
8989            }
8990
8991            next_offset += envelope_size;
8992
8993            // Decode the remaining unknown envelopes.
8994            while next_offset < end_offset {
8995                _next_ordinal_to_read += 1;
8996                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8997                next_offset += envelope_size;
8998            }
8999
9000            Ok(())
9001        }
9002    }
9003
9004    impl WlanFullmacImplIfcOnRssiThresholdBreachedRequest {
9005        #[inline(always)]
9006        fn max_ordinal_present(&self) -> u64 {
9007            if let Some(_) = self.cur_rssi_dbm {
9008                return 1;
9009            }
9010            0
9011        }
9012    }
9013
9014    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnRssiThresholdBreachedRequest {
9015        type Borrowed<'a> = &'a Self;
9016        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9017            value
9018        }
9019    }
9020
9021    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnRssiThresholdBreachedRequest {
9022        type Owned = Self;
9023
9024        #[inline(always)]
9025        fn inline_align(_context: fidl::encoding::Context) -> usize {
9026            8
9027        }
9028
9029        #[inline(always)]
9030        fn inline_size(_context: fidl::encoding::Context) -> usize {
9031            16
9032        }
9033    }
9034
9035    unsafe impl<D: fidl::encoding::ResourceDialect>
9036        fidl::encoding::Encode<WlanFullmacImplIfcOnRssiThresholdBreachedRequest, D>
9037        for &WlanFullmacImplIfcOnRssiThresholdBreachedRequest
9038    {
9039        unsafe fn encode(
9040            self,
9041            encoder: &mut fidl::encoding::Encoder<'_, D>,
9042            offset: usize,
9043            mut depth: fidl::encoding::Depth,
9044        ) -> fidl::Result<()> {
9045            encoder.debug_check_bounds::<WlanFullmacImplIfcOnRssiThresholdBreachedRequest>(offset);
9046            // Vector header
9047            let max_ordinal: u64 = self.max_ordinal_present();
9048            encoder.write_num(max_ordinal, offset);
9049            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9050            // Calling encoder.out_of_line_offset(0) is not allowed.
9051            if max_ordinal == 0 {
9052                return Ok(());
9053            }
9054            depth.increment()?;
9055            let envelope_size = 8;
9056            let bytes_len = max_ordinal as usize * envelope_size;
9057            #[allow(unused_variables)]
9058            let offset = encoder.out_of_line_offset(bytes_len);
9059            let mut _prev_end_offset: usize = 0;
9060            if 1 > max_ordinal {
9061                return Ok(());
9062            }
9063
9064            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9065            // are envelope_size bytes.
9066            let cur_offset: usize = (1 - 1) * envelope_size;
9067
9068            // Zero reserved fields.
9069            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9070
9071            // Safety:
9072            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9073            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9074            //   envelope_size bytes, there is always sufficient room.
9075            fidl::encoding::encode_in_envelope_optional::<i8, D>(
9076                self.cur_rssi_dbm.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
9077                encoder,
9078                offset + cur_offset,
9079                depth,
9080            )?;
9081
9082            _prev_end_offset = cur_offset + envelope_size;
9083
9084            Ok(())
9085        }
9086    }
9087
9088    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9089        for WlanFullmacImplIfcOnRssiThresholdBreachedRequest
9090    {
9091        #[inline(always)]
9092        fn new_empty() -> Self {
9093            Self::default()
9094        }
9095
9096        unsafe fn decode(
9097            &mut self,
9098            decoder: &mut fidl::encoding::Decoder<'_, D>,
9099            offset: usize,
9100            mut depth: fidl::encoding::Depth,
9101        ) -> fidl::Result<()> {
9102            decoder.debug_check_bounds::<Self>(offset);
9103            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9104                None => return Err(fidl::Error::NotNullable),
9105                Some(len) => len,
9106            };
9107            // Calling decoder.out_of_line_offset(0) is not allowed.
9108            if len == 0 {
9109                return Ok(());
9110            };
9111            depth.increment()?;
9112            let envelope_size = 8;
9113            let bytes_len = len * envelope_size;
9114            let offset = decoder.out_of_line_offset(bytes_len)?;
9115            // Decode the envelope for each type.
9116            let mut _next_ordinal_to_read = 0;
9117            let mut next_offset = offset;
9118            let end_offset = offset + bytes_len;
9119            _next_ordinal_to_read += 1;
9120            if next_offset >= end_offset {
9121                return Ok(());
9122            }
9123
9124            // Decode unknown envelopes for gaps in ordinals.
9125            while _next_ordinal_to_read < 1 {
9126                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9127                _next_ordinal_to_read += 1;
9128                next_offset += envelope_size;
9129            }
9130
9131            let next_out_of_line = decoder.next_out_of_line();
9132            let handles_before = decoder.remaining_handles();
9133            if let Some((inlined, num_bytes, num_handles)) =
9134                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9135            {
9136                let member_inline_size =
9137                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9138                if inlined != (member_inline_size <= 4) {
9139                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9140                }
9141                let inner_offset;
9142                let mut inner_depth = depth.clone();
9143                if inlined {
9144                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9145                    inner_offset = next_offset;
9146                } else {
9147                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9148                    inner_depth.increment()?;
9149                }
9150                let val_ref = self.cur_rssi_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
9151                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
9152                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9153                {
9154                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9155                }
9156                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9157                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9158                }
9159            }
9160
9161            next_offset += envelope_size;
9162
9163            // Decode the remaining unknown envelopes.
9164            while next_offset < end_offset {
9165                _next_ordinal_to_read += 1;
9166                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9167                next_offset += envelope_size;
9168            }
9169
9170            Ok(())
9171        }
9172    }
9173
9174    impl WlanFullmacImplIfcOnScanEndRequest {
9175        #[inline(always)]
9176        fn max_ordinal_present(&self) -> u64 {
9177            if let Some(_) = self.code {
9178                return 2;
9179            }
9180            if let Some(_) = self.txn_id {
9181                return 1;
9182            }
9183            0
9184        }
9185    }
9186
9187    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanEndRequest {
9188        type Borrowed<'a> = &'a Self;
9189        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9190            value
9191        }
9192    }
9193
9194    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanEndRequest {
9195        type Owned = Self;
9196
9197        #[inline(always)]
9198        fn inline_align(_context: fidl::encoding::Context) -> usize {
9199            8
9200        }
9201
9202        #[inline(always)]
9203        fn inline_size(_context: fidl::encoding::Context) -> usize {
9204            16
9205        }
9206    }
9207
9208    unsafe impl<D: fidl::encoding::ResourceDialect>
9209        fidl::encoding::Encode<WlanFullmacImplIfcOnScanEndRequest, D>
9210        for &WlanFullmacImplIfcOnScanEndRequest
9211    {
9212        unsafe fn encode(
9213            self,
9214            encoder: &mut fidl::encoding::Encoder<'_, D>,
9215            offset: usize,
9216            mut depth: fidl::encoding::Depth,
9217        ) -> fidl::Result<()> {
9218            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanEndRequest>(offset);
9219            // Vector header
9220            let max_ordinal: u64 = self.max_ordinal_present();
9221            encoder.write_num(max_ordinal, offset);
9222            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9223            // Calling encoder.out_of_line_offset(0) is not allowed.
9224            if max_ordinal == 0 {
9225                return Ok(());
9226            }
9227            depth.increment()?;
9228            let envelope_size = 8;
9229            let bytes_len = max_ordinal as usize * envelope_size;
9230            #[allow(unused_variables)]
9231            let offset = encoder.out_of_line_offset(bytes_len);
9232            let mut _prev_end_offset: usize = 0;
9233            if 1 > max_ordinal {
9234                return Ok(());
9235            }
9236
9237            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9238            // are envelope_size bytes.
9239            let cur_offset: usize = (1 - 1) * envelope_size;
9240
9241            // Zero reserved fields.
9242            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9243
9244            // Safety:
9245            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9246            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9247            //   envelope_size bytes, there is always sufficient room.
9248            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9249                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9250                encoder,
9251                offset + cur_offset,
9252                depth,
9253            )?;
9254
9255            _prev_end_offset = cur_offset + envelope_size;
9256            if 2 > max_ordinal {
9257                return Ok(());
9258            }
9259
9260            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9261            // are envelope_size bytes.
9262            let cur_offset: usize = (2 - 1) * envelope_size;
9263
9264            // Zero reserved fields.
9265            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9266
9267            // Safety:
9268            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9269            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9270            //   envelope_size bytes, there is always sufficient room.
9271            fidl::encoding::encode_in_envelope_optional::<WlanScanResult, D>(
9272                self.code.as_ref().map(<WlanScanResult as fidl::encoding::ValueTypeMarker>::borrow),
9273                encoder,
9274                offset + cur_offset,
9275                depth,
9276            )?;
9277
9278            _prev_end_offset = cur_offset + envelope_size;
9279
9280            Ok(())
9281        }
9282    }
9283
9284    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9285        for WlanFullmacImplIfcOnScanEndRequest
9286    {
9287        #[inline(always)]
9288        fn new_empty() -> Self {
9289            Self::default()
9290        }
9291
9292        unsafe fn decode(
9293            &mut self,
9294            decoder: &mut fidl::encoding::Decoder<'_, D>,
9295            offset: usize,
9296            mut depth: fidl::encoding::Depth,
9297        ) -> fidl::Result<()> {
9298            decoder.debug_check_bounds::<Self>(offset);
9299            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9300                None => return Err(fidl::Error::NotNullable),
9301                Some(len) => len,
9302            };
9303            // Calling decoder.out_of_line_offset(0) is not allowed.
9304            if len == 0 {
9305                return Ok(());
9306            };
9307            depth.increment()?;
9308            let envelope_size = 8;
9309            let bytes_len = len * envelope_size;
9310            let offset = decoder.out_of_line_offset(bytes_len)?;
9311            // Decode the envelope for each type.
9312            let mut _next_ordinal_to_read = 0;
9313            let mut next_offset = offset;
9314            let end_offset = offset + bytes_len;
9315            _next_ordinal_to_read += 1;
9316            if next_offset >= end_offset {
9317                return Ok(());
9318            }
9319
9320            // Decode unknown envelopes for gaps in ordinals.
9321            while _next_ordinal_to_read < 1 {
9322                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9323                _next_ordinal_to_read += 1;
9324                next_offset += envelope_size;
9325            }
9326
9327            let next_out_of_line = decoder.next_out_of_line();
9328            let handles_before = decoder.remaining_handles();
9329            if let Some((inlined, num_bytes, num_handles)) =
9330                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9331            {
9332                let member_inline_size =
9333                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9334                if inlined != (member_inline_size <= 4) {
9335                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9336                }
9337                let inner_offset;
9338                let mut inner_depth = depth.clone();
9339                if inlined {
9340                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9341                    inner_offset = next_offset;
9342                } else {
9343                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9344                    inner_depth.increment()?;
9345                }
9346                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9347                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9348                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9349                {
9350                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9351                }
9352                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9353                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9354                }
9355            }
9356
9357            next_offset += envelope_size;
9358            _next_ordinal_to_read += 1;
9359            if next_offset >= end_offset {
9360                return Ok(());
9361            }
9362
9363            // Decode unknown envelopes for gaps in ordinals.
9364            while _next_ordinal_to_read < 2 {
9365                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9366                _next_ordinal_to_read += 1;
9367                next_offset += envelope_size;
9368            }
9369
9370            let next_out_of_line = decoder.next_out_of_line();
9371            let handles_before = decoder.remaining_handles();
9372            if let Some((inlined, num_bytes, num_handles)) =
9373                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9374            {
9375                let member_inline_size =
9376                    <WlanScanResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9377                if inlined != (member_inline_size <= 4) {
9378                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9379                }
9380                let inner_offset;
9381                let mut inner_depth = depth.clone();
9382                if inlined {
9383                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9384                    inner_offset = next_offset;
9385                } else {
9386                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9387                    inner_depth.increment()?;
9388                }
9389                let val_ref = self.code.get_or_insert_with(|| fidl::new_empty!(WlanScanResult, D));
9390                fidl::decode!(WlanScanResult, D, val_ref, decoder, inner_offset, inner_depth)?;
9391                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9392                {
9393                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9394                }
9395                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9396                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9397                }
9398            }
9399
9400            next_offset += envelope_size;
9401
9402            // Decode the remaining unknown envelopes.
9403            while next_offset < end_offset {
9404                _next_ordinal_to_read += 1;
9405                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9406                next_offset += envelope_size;
9407            }
9408
9409            Ok(())
9410        }
9411    }
9412
9413    impl WlanFullmacImplIfcOnScanResultRequest {
9414        #[inline(always)]
9415        fn max_ordinal_present(&self) -> u64 {
9416            if let Some(_) = self.bss {
9417                return 3;
9418            }
9419            if let Some(_) = self.timestamp_nanos {
9420                return 2;
9421            }
9422            if let Some(_) = self.txn_id {
9423                return 1;
9424            }
9425            0
9426        }
9427    }
9428
9429    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9430        type Borrowed<'a> = &'a Self;
9431        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9432            value
9433        }
9434    }
9435
9436    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcOnScanResultRequest {
9437        type Owned = Self;
9438
9439        #[inline(always)]
9440        fn inline_align(_context: fidl::encoding::Context) -> usize {
9441            8
9442        }
9443
9444        #[inline(always)]
9445        fn inline_size(_context: fidl::encoding::Context) -> usize {
9446            16
9447        }
9448    }
9449
9450    unsafe impl<D: fidl::encoding::ResourceDialect>
9451        fidl::encoding::Encode<WlanFullmacImplIfcOnScanResultRequest, D>
9452        for &WlanFullmacImplIfcOnScanResultRequest
9453    {
9454        unsafe fn encode(
9455            self,
9456            encoder: &mut fidl::encoding::Encoder<'_, D>,
9457            offset: usize,
9458            mut depth: fidl::encoding::Depth,
9459        ) -> fidl::Result<()> {
9460            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScanResultRequest>(offset);
9461            // Vector header
9462            let max_ordinal: u64 = self.max_ordinal_present();
9463            encoder.write_num(max_ordinal, offset);
9464            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9465            // Calling encoder.out_of_line_offset(0) is not allowed.
9466            if max_ordinal == 0 {
9467                return Ok(());
9468            }
9469            depth.increment()?;
9470            let envelope_size = 8;
9471            let bytes_len = max_ordinal as usize * envelope_size;
9472            #[allow(unused_variables)]
9473            let offset = encoder.out_of_line_offset(bytes_len);
9474            let mut _prev_end_offset: usize = 0;
9475            if 1 > max_ordinal {
9476                return Ok(());
9477            }
9478
9479            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9480            // are envelope_size bytes.
9481            let cur_offset: usize = (1 - 1) * envelope_size;
9482
9483            // Zero reserved fields.
9484            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9485
9486            // Safety:
9487            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9488            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9489            //   envelope_size bytes, there is always sufficient room.
9490            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9491                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9492                encoder,
9493                offset + cur_offset,
9494                depth,
9495            )?;
9496
9497            _prev_end_offset = cur_offset + envelope_size;
9498            if 2 > max_ordinal {
9499                return Ok(());
9500            }
9501
9502            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9503            // are envelope_size bytes.
9504            let cur_offset: usize = (2 - 1) * envelope_size;
9505
9506            // Zero reserved fields.
9507            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9508
9509            // Safety:
9510            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9511            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9512            //   envelope_size bytes, there is always sufficient room.
9513            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9514                self.timestamp_nanos.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9515                encoder,
9516                offset + cur_offset,
9517                depth,
9518            )?;
9519
9520            _prev_end_offset = cur_offset + envelope_size;
9521            if 3 > max_ordinal {
9522                return Ok(());
9523            }
9524
9525            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9526            // are envelope_size bytes.
9527            let cur_offset: usize = (3 - 1) * envelope_size;
9528
9529            // Zero reserved fields.
9530            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9531
9532            // Safety:
9533            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9534            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9535            //   envelope_size bytes, there is always sufficient room.
9536            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>(
9537            self.bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
9538            encoder, offset + cur_offset, depth
9539        )?;
9540
9541            _prev_end_offset = cur_offset + envelope_size;
9542
9543            Ok(())
9544        }
9545    }
9546
9547    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9548        for WlanFullmacImplIfcOnScanResultRequest
9549    {
9550        #[inline(always)]
9551        fn new_empty() -> Self {
9552            Self::default()
9553        }
9554
9555        unsafe fn decode(
9556            &mut self,
9557            decoder: &mut fidl::encoding::Decoder<'_, D>,
9558            offset: usize,
9559            mut depth: fidl::encoding::Depth,
9560        ) -> fidl::Result<()> {
9561            decoder.debug_check_bounds::<Self>(offset);
9562            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9563                None => return Err(fidl::Error::NotNullable),
9564                Some(len) => len,
9565            };
9566            // Calling decoder.out_of_line_offset(0) is not allowed.
9567            if len == 0 {
9568                return Ok(());
9569            };
9570            depth.increment()?;
9571            let envelope_size = 8;
9572            let bytes_len = len * envelope_size;
9573            let offset = decoder.out_of_line_offset(bytes_len)?;
9574            // Decode the envelope for each type.
9575            let mut _next_ordinal_to_read = 0;
9576            let mut next_offset = offset;
9577            let end_offset = offset + bytes_len;
9578            _next_ordinal_to_read += 1;
9579            if next_offset >= end_offset {
9580                return Ok(());
9581            }
9582
9583            // Decode unknown envelopes for gaps in ordinals.
9584            while _next_ordinal_to_read < 1 {
9585                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9586                _next_ordinal_to_read += 1;
9587                next_offset += envelope_size;
9588            }
9589
9590            let next_out_of_line = decoder.next_out_of_line();
9591            let handles_before = decoder.remaining_handles();
9592            if let Some((inlined, num_bytes, num_handles)) =
9593                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9594            {
9595                let member_inline_size =
9596                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9597                if inlined != (member_inline_size <= 4) {
9598                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9599                }
9600                let inner_offset;
9601                let mut inner_depth = depth.clone();
9602                if inlined {
9603                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9604                    inner_offset = next_offset;
9605                } else {
9606                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9607                    inner_depth.increment()?;
9608                }
9609                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9610                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9611                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9612                {
9613                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9614                }
9615                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9616                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9617                }
9618            }
9619
9620            next_offset += envelope_size;
9621            _next_ordinal_to_read += 1;
9622            if next_offset >= end_offset {
9623                return Ok(());
9624            }
9625
9626            // Decode unknown envelopes for gaps in ordinals.
9627            while _next_ordinal_to_read < 2 {
9628                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9629                _next_ordinal_to_read += 1;
9630                next_offset += envelope_size;
9631            }
9632
9633            let next_out_of_line = decoder.next_out_of_line();
9634            let handles_before = decoder.remaining_handles();
9635            if let Some((inlined, num_bytes, num_handles)) =
9636                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9637            {
9638                let member_inline_size =
9639                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9640                if inlined != (member_inline_size <= 4) {
9641                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9642                }
9643                let inner_offset;
9644                let mut inner_depth = depth.clone();
9645                if inlined {
9646                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9647                    inner_offset = next_offset;
9648                } else {
9649                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9650                    inner_depth.increment()?;
9651                }
9652                let val_ref = self.timestamp_nanos.get_or_insert_with(|| fidl::new_empty!(i64, D));
9653                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9654                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9655                {
9656                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9657                }
9658                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9659                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9660                }
9661            }
9662
9663            next_offset += envelope_size;
9664            _next_ordinal_to_read += 1;
9665            if next_offset >= end_offset {
9666                return Ok(());
9667            }
9668
9669            // Decode unknown envelopes for gaps in ordinals.
9670            while _next_ordinal_to_read < 3 {
9671                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9672                _next_ordinal_to_read += 1;
9673                next_offset += envelope_size;
9674            }
9675
9676            let next_out_of_line = decoder.next_out_of_line();
9677            let handles_before = decoder.remaining_handles();
9678            if let Some((inlined, num_bytes, num_handles)) =
9679                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9680            {
9681                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9682                if inlined != (member_inline_size <= 4) {
9683                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9684                }
9685                let inner_offset;
9686                let mut inner_depth = depth.clone();
9687                if inlined {
9688                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9689                    inner_offset = next_offset;
9690                } else {
9691                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9692                    inner_depth.increment()?;
9693                }
9694                let val_ref = self.bss.get_or_insert_with(|| {
9695                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D)
9696                });
9697                fidl::decode!(
9698                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
9699                    D,
9700                    val_ref,
9701                    decoder,
9702                    inner_offset,
9703                    inner_depth
9704                )?;
9705                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9706                {
9707                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9708                }
9709                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9710                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9711                }
9712            }
9713
9714            next_offset += envelope_size;
9715
9716            // Decode the remaining unknown envelopes.
9717            while next_offset < end_offset {
9718                _next_ordinal_to_read += 1;
9719                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9720                next_offset += envelope_size;
9721            }
9722
9723            Ok(())
9724        }
9725    }
9726
9727    impl WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {
9728        #[inline(always)]
9729        fn max_ordinal_present(&self) -> u64 {
9730            if let Some(_) = self.txn_id {
9731                return 1;
9732            }
9733            0
9734        }
9735    }
9736
9737    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest {
9738        type Borrowed<'a> = &'a Self;
9739        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9740            value
9741        }
9742    }
9743
9744    unsafe impl fidl::encoding::TypeMarker
9745        for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest
9746    {
9747        type Owned = Self;
9748
9749        #[inline(always)]
9750        fn inline_align(_context: fidl::encoding::Context) -> usize {
9751            8
9752        }
9753
9754        #[inline(always)]
9755        fn inline_size(_context: fidl::encoding::Context) -> usize {
9756            16
9757        }
9758    }
9759
9760    unsafe impl<D: fidl::encoding::ResourceDialect>
9761        fidl::encoding::Encode<WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest, D>
9762        for &WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest
9763    {
9764        unsafe fn encode(
9765            self,
9766            encoder: &mut fidl::encoding::Encoder<'_, D>,
9767            offset: usize,
9768            mut depth: fidl::encoding::Depth,
9769        ) -> fidl::Result<()> {
9770            encoder.debug_check_bounds::<WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest>(
9771                offset,
9772            );
9773            // Vector header
9774            let max_ordinal: u64 = self.max_ordinal_present();
9775            encoder.write_num(max_ordinal, offset);
9776            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9777            // Calling encoder.out_of_line_offset(0) is not allowed.
9778            if max_ordinal == 0 {
9779                return Ok(());
9780            }
9781            depth.increment()?;
9782            let envelope_size = 8;
9783            let bytes_len = max_ordinal as usize * envelope_size;
9784            #[allow(unused_variables)]
9785            let offset = encoder.out_of_line_offset(bytes_len);
9786            let mut _prev_end_offset: usize = 0;
9787            if 1 > max_ordinal {
9788                return Ok(());
9789            }
9790
9791            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9792            // are envelope_size bytes.
9793            let cur_offset: usize = (1 - 1) * envelope_size;
9794
9795            // Zero reserved fields.
9796            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9797
9798            // Safety:
9799            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9800            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9801            //   envelope_size bytes, there is always sufficient room.
9802            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9803                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9804                encoder,
9805                offset + cur_offset,
9806                depth,
9807            )?;
9808
9809            _prev_end_offset = cur_offset + envelope_size;
9810
9811            Ok(())
9812        }
9813    }
9814
9815    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9816        for WlanFullmacImplIfcOnScheduledScanMatchesAvailableRequest
9817    {
9818        #[inline(always)]
9819        fn new_empty() -> Self {
9820            Self::default()
9821        }
9822
9823        unsafe fn decode(
9824            &mut self,
9825            decoder: &mut fidl::encoding::Decoder<'_, D>,
9826            offset: usize,
9827            mut depth: fidl::encoding::Depth,
9828        ) -> fidl::Result<()> {
9829            decoder.debug_check_bounds::<Self>(offset);
9830            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9831                None => return Err(fidl::Error::NotNullable),
9832                Some(len) => len,
9833            };
9834            // Calling decoder.out_of_line_offset(0) is not allowed.
9835            if len == 0 {
9836                return Ok(());
9837            };
9838            depth.increment()?;
9839            let envelope_size = 8;
9840            let bytes_len = len * envelope_size;
9841            let offset = decoder.out_of_line_offset(bytes_len)?;
9842            // Decode the envelope for each type.
9843            let mut _next_ordinal_to_read = 0;
9844            let mut next_offset = offset;
9845            let end_offset = offset + bytes_len;
9846            _next_ordinal_to_read += 1;
9847            if next_offset >= end_offset {
9848                return Ok(());
9849            }
9850
9851            // Decode unknown envelopes for gaps in ordinals.
9852            while _next_ordinal_to_read < 1 {
9853                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9854                _next_ordinal_to_read += 1;
9855                next_offset += envelope_size;
9856            }
9857
9858            let next_out_of_line = decoder.next_out_of_line();
9859            let handles_before = decoder.remaining_handles();
9860            if let Some((inlined, num_bytes, num_handles)) =
9861                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9862            {
9863                let member_inline_size =
9864                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9865                if inlined != (member_inline_size <= 4) {
9866                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9867                }
9868                let inner_offset;
9869                let mut inner_depth = depth.clone();
9870                if inlined {
9871                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9872                    inner_offset = next_offset;
9873                } else {
9874                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9875                    inner_depth.increment()?;
9876                }
9877                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
9878                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
9879                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9880                {
9881                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9882                }
9883                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9884                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9885                }
9886            }
9887
9888            next_offset += envelope_size;
9889
9890            // Decode the remaining unknown envelopes.
9891            while next_offset < end_offset {
9892                _next_ordinal_to_read += 1;
9893                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9894                next_offset += envelope_size;
9895            }
9896
9897            Ok(())
9898        }
9899    }
9900
9901    impl WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {
9902        #[inline(always)]
9903        fn max_ordinal_present(&self) -> u64 {
9904            if let Some(_) = self.txn_id {
9905                return 1;
9906            }
9907            0
9908        }
9909    }
9910
9911    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest {
9912        type Borrowed<'a> = &'a Self;
9913        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9914            value
9915        }
9916    }
9917
9918    unsafe impl fidl::encoding::TypeMarker
9919        for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest
9920    {
9921        type Owned = Self;
9922
9923        #[inline(always)]
9924        fn inline_align(_context: fidl::encoding::Context) -> usize {
9925            8
9926        }
9927
9928        #[inline(always)]
9929        fn inline_size(_context: fidl::encoding::Context) -> usize {
9930            16
9931        }
9932    }
9933
9934    unsafe impl<D: fidl::encoding::ResourceDialect>
9935        fidl::encoding::Encode<WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest, D>
9936        for &WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest
9937    {
9938        unsafe fn encode(
9939            self,
9940            encoder: &mut fidl::encoding::Encoder<'_, D>,
9941            offset: usize,
9942            mut depth: fidl::encoding::Depth,
9943        ) -> fidl::Result<()> {
9944            encoder
9945                .debug_check_bounds::<WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest>(
9946                    offset,
9947                );
9948            // Vector header
9949            let max_ordinal: u64 = self.max_ordinal_present();
9950            encoder.write_num(max_ordinal, offset);
9951            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9952            // Calling encoder.out_of_line_offset(0) is not allowed.
9953            if max_ordinal == 0 {
9954                return Ok(());
9955            }
9956            depth.increment()?;
9957            let envelope_size = 8;
9958            let bytes_len = max_ordinal as usize * envelope_size;
9959            #[allow(unused_variables)]
9960            let offset = encoder.out_of_line_offset(bytes_len);
9961            let mut _prev_end_offset: usize = 0;
9962            if 1 > max_ordinal {
9963                return Ok(());
9964            }
9965
9966            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9967            // are envelope_size bytes.
9968            let cur_offset: usize = (1 - 1) * envelope_size;
9969
9970            // Zero reserved fields.
9971            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9972
9973            // Safety:
9974            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9975            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9976            //   envelope_size bytes, there is always sufficient room.
9977            fidl::encoding::encode_in_envelope_optional::<u64, D>(
9978                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
9979                encoder,
9980                offset + cur_offset,
9981                depth,
9982            )?;
9983
9984            _prev_end_offset = cur_offset + envelope_size;
9985
9986            Ok(())
9987        }
9988    }
9989
9990    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9991        for WlanFullmacImplIfcOnScheduledScanStoppedByFirmwareRequest
9992    {
9993        #[inline(always)]
9994        fn new_empty() -> Self {
9995            Self::default()
9996        }
9997
9998        unsafe fn decode(
9999            &mut self,
10000            decoder: &mut fidl::encoding::Decoder<'_, D>,
10001            offset: usize,
10002            mut depth: fidl::encoding::Depth,
10003        ) -> fidl::Result<()> {
10004            decoder.debug_check_bounds::<Self>(offset);
10005            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10006                None => return Err(fidl::Error::NotNullable),
10007                Some(len) => len,
10008            };
10009            // Calling decoder.out_of_line_offset(0) is not allowed.
10010            if len == 0 {
10011                return Ok(());
10012            };
10013            depth.increment()?;
10014            let envelope_size = 8;
10015            let bytes_len = len * envelope_size;
10016            let offset = decoder.out_of_line_offset(bytes_len)?;
10017            // Decode the envelope for each type.
10018            let mut _next_ordinal_to_read = 0;
10019            let mut next_offset = offset;
10020            let end_offset = offset + bytes_len;
10021            _next_ordinal_to_read += 1;
10022            if next_offset >= end_offset {
10023                return Ok(());
10024            }
10025
10026            // Decode unknown envelopes for gaps in ordinals.
10027            while _next_ordinal_to_read < 1 {
10028                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10029                _next_ordinal_to_read += 1;
10030                next_offset += envelope_size;
10031            }
10032
10033            let next_out_of_line = decoder.next_out_of_line();
10034            let handles_before = decoder.remaining_handles();
10035            if let Some((inlined, num_bytes, num_handles)) =
10036                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10037            {
10038                let member_inline_size =
10039                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10040                if inlined != (member_inline_size <= 4) {
10041                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10042                }
10043                let inner_offset;
10044                let mut inner_depth = depth.clone();
10045                if inlined {
10046                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10047                    inner_offset = next_offset;
10048                } else {
10049                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10050                    inner_depth.increment()?;
10051                }
10052                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
10053                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
10054                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10055                {
10056                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10057                }
10058                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10059                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10060                }
10061            }
10062
10063            next_offset += envelope_size;
10064
10065            // Decode the remaining unknown envelopes.
10066            while next_offset < end_offset {
10067                _next_ordinal_to_read += 1;
10068                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10069                next_offset += envelope_size;
10070            }
10071
10072            Ok(())
10073        }
10074    }
10075
10076    impl WlanFullmacImplIfcRoamConfRequest {
10077        #[inline(always)]
10078        fn max_ordinal_present(&self) -> u64 {
10079            if let Some(_) = self.association_ies {
10080                return 6;
10081            }
10082            if let Some(_) = self.association_id {
10083                return 5;
10084            }
10085            if let Some(_) = self.target_bss_authenticated {
10086                return 4;
10087            }
10088            if let Some(_) = self.original_association_maintained {
10089                return 3;
10090            }
10091            if let Some(_) = self.status_code {
10092                return 2;
10093            }
10094            if let Some(_) = self.selected_bssid {
10095                return 1;
10096            }
10097            0
10098        }
10099    }
10100
10101    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamConfRequest {
10102        type Borrowed<'a> = &'a Self;
10103        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10104            value
10105        }
10106    }
10107
10108    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamConfRequest {
10109        type Owned = Self;
10110
10111        #[inline(always)]
10112        fn inline_align(_context: fidl::encoding::Context) -> usize {
10113            8
10114        }
10115
10116        #[inline(always)]
10117        fn inline_size(_context: fidl::encoding::Context) -> usize {
10118            16
10119        }
10120    }
10121
10122    unsafe impl<D: fidl::encoding::ResourceDialect>
10123        fidl::encoding::Encode<WlanFullmacImplIfcRoamConfRequest, D>
10124        for &WlanFullmacImplIfcRoamConfRequest
10125    {
10126        unsafe fn encode(
10127            self,
10128            encoder: &mut fidl::encoding::Encoder<'_, D>,
10129            offset: usize,
10130            mut depth: fidl::encoding::Depth,
10131        ) -> fidl::Result<()> {
10132            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamConfRequest>(offset);
10133            // Vector header
10134            let max_ordinal: u64 = self.max_ordinal_present();
10135            encoder.write_num(max_ordinal, offset);
10136            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10137            // Calling encoder.out_of_line_offset(0) is not allowed.
10138            if max_ordinal == 0 {
10139                return Ok(());
10140            }
10141            depth.increment()?;
10142            let envelope_size = 8;
10143            let bytes_len = max_ordinal as usize * envelope_size;
10144            #[allow(unused_variables)]
10145            let offset = encoder.out_of_line_offset(bytes_len);
10146            let mut _prev_end_offset: usize = 0;
10147            if 1 > max_ordinal {
10148                return Ok(());
10149            }
10150
10151            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10152            // are envelope_size bytes.
10153            let cur_offset: usize = (1 - 1) * envelope_size;
10154
10155            // Zero reserved fields.
10156            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10157
10158            // Safety:
10159            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10160            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10161            //   envelope_size bytes, there is always sufficient room.
10162            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10163                self.selected_bssid
10164                    .as_ref()
10165                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10166                encoder,
10167                offset + cur_offset,
10168                depth,
10169            )?;
10170
10171            _prev_end_offset = cur_offset + envelope_size;
10172            if 2 > max_ordinal {
10173                return Ok(());
10174            }
10175
10176            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10177            // are envelope_size bytes.
10178            let cur_offset: usize = (2 - 1) * envelope_size;
10179
10180            // Zero reserved fields.
10181            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10182
10183            // Safety:
10184            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10185            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10186            //   envelope_size bytes, there is always sufficient room.
10187            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
10188            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
10189            encoder, offset + cur_offset, depth
10190        )?;
10191
10192            _prev_end_offset = cur_offset + envelope_size;
10193            if 3 > max_ordinal {
10194                return Ok(());
10195            }
10196
10197            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10198            // are envelope_size bytes.
10199            let cur_offset: usize = (3 - 1) * envelope_size;
10200
10201            // Zero reserved fields.
10202            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10203
10204            // Safety:
10205            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10206            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10207            //   envelope_size bytes, there is always sufficient room.
10208            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10209                self.original_association_maintained
10210                    .as_ref()
10211                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10212                encoder,
10213                offset + cur_offset,
10214                depth,
10215            )?;
10216
10217            _prev_end_offset = cur_offset + envelope_size;
10218            if 4 > max_ordinal {
10219                return Ok(());
10220            }
10221
10222            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10223            // are envelope_size bytes.
10224            let cur_offset: usize = (4 - 1) * envelope_size;
10225
10226            // Zero reserved fields.
10227            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10228
10229            // Safety:
10230            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10231            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10232            //   envelope_size bytes, there is always sufficient room.
10233            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10234                self.target_bss_authenticated
10235                    .as_ref()
10236                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10237                encoder,
10238                offset + cur_offset,
10239                depth,
10240            )?;
10241
10242            _prev_end_offset = cur_offset + envelope_size;
10243            if 5 > max_ordinal {
10244                return Ok(());
10245            }
10246
10247            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10248            // are envelope_size bytes.
10249            let cur_offset: usize = (5 - 1) * envelope_size;
10250
10251            // Zero reserved fields.
10252            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10253
10254            // Safety:
10255            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10256            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10257            //   envelope_size bytes, there is always sufficient room.
10258            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10259                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10260                encoder,
10261                offset + cur_offset,
10262                depth,
10263            )?;
10264
10265            _prev_end_offset = cur_offset + envelope_size;
10266            if 6 > max_ordinal {
10267                return Ok(());
10268            }
10269
10270            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10271            // are envelope_size bytes.
10272            let cur_offset: usize = (6 - 1) * envelope_size;
10273
10274            // Zero reserved fields.
10275            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10276
10277            // Safety:
10278            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10279            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10280            //   envelope_size bytes, there is always sufficient room.
10281            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10282            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10283            encoder, offset + cur_offset, depth
10284        )?;
10285
10286            _prev_end_offset = cur_offset + envelope_size;
10287
10288            Ok(())
10289        }
10290    }
10291
10292    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10293        for WlanFullmacImplIfcRoamConfRequest
10294    {
10295        #[inline(always)]
10296        fn new_empty() -> Self {
10297            Self::default()
10298        }
10299
10300        unsafe fn decode(
10301            &mut self,
10302            decoder: &mut fidl::encoding::Decoder<'_, D>,
10303            offset: usize,
10304            mut depth: fidl::encoding::Depth,
10305        ) -> fidl::Result<()> {
10306            decoder.debug_check_bounds::<Self>(offset);
10307            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10308                None => return Err(fidl::Error::NotNullable),
10309                Some(len) => len,
10310            };
10311            // Calling decoder.out_of_line_offset(0) is not allowed.
10312            if len == 0 {
10313                return Ok(());
10314            };
10315            depth.increment()?;
10316            let envelope_size = 8;
10317            let bytes_len = len * envelope_size;
10318            let offset = decoder.out_of_line_offset(bytes_len)?;
10319            // Decode the envelope for each type.
10320            let mut _next_ordinal_to_read = 0;
10321            let mut next_offset = offset;
10322            let end_offset = offset + bytes_len;
10323            _next_ordinal_to_read += 1;
10324            if next_offset >= end_offset {
10325                return Ok(());
10326            }
10327
10328            // Decode unknown envelopes for gaps in ordinals.
10329            while _next_ordinal_to_read < 1 {
10330                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10331                _next_ordinal_to_read += 1;
10332                next_offset += envelope_size;
10333            }
10334
10335            let next_out_of_line = decoder.next_out_of_line();
10336            let handles_before = decoder.remaining_handles();
10337            if let Some((inlined, num_bytes, num_handles)) =
10338                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10339            {
10340                let member_inline_size =
10341                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10342                        decoder.context,
10343                    );
10344                if inlined != (member_inline_size <= 4) {
10345                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10346                }
10347                let inner_offset;
10348                let mut inner_depth = depth.clone();
10349                if inlined {
10350                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10351                    inner_offset = next_offset;
10352                } else {
10353                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10354                    inner_depth.increment()?;
10355                }
10356                let val_ref = self
10357                    .selected_bssid
10358                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10359                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
10360                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10361                {
10362                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10363                }
10364                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10365                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10366                }
10367            }
10368
10369            next_offset += envelope_size;
10370            _next_ordinal_to_read += 1;
10371            if next_offset >= end_offset {
10372                return Ok(());
10373            }
10374
10375            // Decode unknown envelopes for gaps in ordinals.
10376            while _next_ordinal_to_read < 2 {
10377                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10378                _next_ordinal_to_read += 1;
10379                next_offset += envelope_size;
10380            }
10381
10382            let next_out_of_line = decoder.next_out_of_line();
10383            let handles_before = decoder.remaining_handles();
10384            if let Some((inlined, num_bytes, num_handles)) =
10385                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10386            {
10387                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10388                if inlined != (member_inline_size <= 4) {
10389                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10390                }
10391                let inner_offset;
10392                let mut inner_depth = depth.clone();
10393                if inlined {
10394                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10395                    inner_offset = next_offset;
10396                } else {
10397                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10398                    inner_depth.increment()?;
10399                }
10400                let val_ref = self.status_code.get_or_insert_with(|| {
10401                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
10402                });
10403                fidl::decode!(
10404                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
10405                    D,
10406                    val_ref,
10407                    decoder,
10408                    inner_offset,
10409                    inner_depth
10410                )?;
10411                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10412                {
10413                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10414                }
10415                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10416                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10417                }
10418            }
10419
10420            next_offset += envelope_size;
10421            _next_ordinal_to_read += 1;
10422            if next_offset >= end_offset {
10423                return Ok(());
10424            }
10425
10426            // Decode unknown envelopes for gaps in ordinals.
10427            while _next_ordinal_to_read < 3 {
10428                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10429                _next_ordinal_to_read += 1;
10430                next_offset += envelope_size;
10431            }
10432
10433            let next_out_of_line = decoder.next_out_of_line();
10434            let handles_before = decoder.remaining_handles();
10435            if let Some((inlined, num_bytes, num_handles)) =
10436                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10437            {
10438                let member_inline_size =
10439                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10440                if inlined != (member_inline_size <= 4) {
10441                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10442                }
10443                let inner_offset;
10444                let mut inner_depth = depth.clone();
10445                if inlined {
10446                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10447                    inner_offset = next_offset;
10448                } else {
10449                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10450                    inner_depth.increment()?;
10451                }
10452                let val_ref = self
10453                    .original_association_maintained
10454                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
10455                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10456                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10457                {
10458                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10459                }
10460                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10461                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10462                }
10463            }
10464
10465            next_offset += envelope_size;
10466            _next_ordinal_to_read += 1;
10467            if next_offset >= end_offset {
10468                return Ok(());
10469            }
10470
10471            // Decode unknown envelopes for gaps in ordinals.
10472            while _next_ordinal_to_read < 4 {
10473                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10474                _next_ordinal_to_read += 1;
10475                next_offset += envelope_size;
10476            }
10477
10478            let next_out_of_line = decoder.next_out_of_line();
10479            let handles_before = decoder.remaining_handles();
10480            if let Some((inlined, num_bytes, num_handles)) =
10481                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10482            {
10483                let member_inline_size =
10484                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10485                if inlined != (member_inline_size <= 4) {
10486                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10487                }
10488                let inner_offset;
10489                let mut inner_depth = depth.clone();
10490                if inlined {
10491                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10492                    inner_offset = next_offset;
10493                } else {
10494                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10495                    inner_depth.increment()?;
10496                }
10497                let val_ref =
10498                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
10499                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10500                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10501                {
10502                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10503                }
10504                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10505                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10506                }
10507            }
10508
10509            next_offset += envelope_size;
10510            _next_ordinal_to_read += 1;
10511            if next_offset >= end_offset {
10512                return Ok(());
10513            }
10514
10515            // Decode unknown envelopes for gaps in ordinals.
10516            while _next_ordinal_to_read < 5 {
10517                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10518                _next_ordinal_to_read += 1;
10519                next_offset += envelope_size;
10520            }
10521
10522            let next_out_of_line = decoder.next_out_of_line();
10523            let handles_before = decoder.remaining_handles();
10524            if let Some((inlined, num_bytes, num_handles)) =
10525                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10526            {
10527                let member_inline_size =
10528                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10529                if inlined != (member_inline_size <= 4) {
10530                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10531                }
10532                let inner_offset;
10533                let mut inner_depth = depth.clone();
10534                if inlined {
10535                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10536                    inner_offset = next_offset;
10537                } else {
10538                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10539                    inner_depth.increment()?;
10540                }
10541                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10542                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10543                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10544                {
10545                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10546                }
10547                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10548                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10549                }
10550            }
10551
10552            next_offset += envelope_size;
10553            _next_ordinal_to_read += 1;
10554            if next_offset >= end_offset {
10555                return Ok(());
10556            }
10557
10558            // Decode unknown envelopes for gaps in ordinals.
10559            while _next_ordinal_to_read < 6 {
10560                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10561                _next_ordinal_to_read += 1;
10562                next_offset += envelope_size;
10563            }
10564
10565            let next_out_of_line = decoder.next_out_of_line();
10566            let handles_before = decoder.remaining_handles();
10567            if let Some((inlined, num_bytes, num_handles)) =
10568                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10569            {
10570                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10571                if inlined != (member_inline_size <= 4) {
10572                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10573                }
10574                let inner_offset;
10575                let mut inner_depth = depth.clone();
10576                if inlined {
10577                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10578                    inner_offset = next_offset;
10579                } else {
10580                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10581                    inner_depth.increment()?;
10582                }
10583                let val_ref = self.association_ies.get_or_insert_with(|| {
10584                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
10585                });
10586                fidl::decode!(
10587                    fidl::encoding::UnboundedVector<u8>,
10588                    D,
10589                    val_ref,
10590                    decoder,
10591                    inner_offset,
10592                    inner_depth
10593                )?;
10594                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10595                {
10596                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10597                }
10598                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10599                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10600                }
10601            }
10602
10603            next_offset += envelope_size;
10604
10605            // Decode the remaining unknown envelopes.
10606            while next_offset < end_offset {
10607                _next_ordinal_to_read += 1;
10608                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10609                next_offset += envelope_size;
10610            }
10611
10612            Ok(())
10613        }
10614    }
10615
10616    impl WlanFullmacImplIfcRoamResultIndRequest {
10617        #[inline(always)]
10618        fn max_ordinal_present(&self) -> u64 {
10619            if let Some(_) = self.association_ies {
10620                return 6;
10621            }
10622            if let Some(_) = self.association_id {
10623                return 5;
10624            }
10625            if let Some(_) = self.target_bss_authenticated {
10626                return 4;
10627            }
10628            if let Some(_) = self.original_association_maintained {
10629                return 3;
10630            }
10631            if let Some(_) = self.status_code {
10632                return 2;
10633            }
10634            if let Some(_) = self.selected_bssid {
10635                return 1;
10636            }
10637            0
10638        }
10639    }
10640
10641    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
10642        type Borrowed<'a> = &'a Self;
10643        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10644            value
10645        }
10646    }
10647
10648    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamResultIndRequest {
10649        type Owned = Self;
10650
10651        #[inline(always)]
10652        fn inline_align(_context: fidl::encoding::Context) -> usize {
10653            8
10654        }
10655
10656        #[inline(always)]
10657        fn inline_size(_context: fidl::encoding::Context) -> usize {
10658            16
10659        }
10660    }
10661
10662    unsafe impl<D: fidl::encoding::ResourceDialect>
10663        fidl::encoding::Encode<WlanFullmacImplIfcRoamResultIndRequest, D>
10664        for &WlanFullmacImplIfcRoamResultIndRequest
10665    {
10666        unsafe fn encode(
10667            self,
10668            encoder: &mut fidl::encoding::Encoder<'_, D>,
10669            offset: usize,
10670            mut depth: fidl::encoding::Depth,
10671        ) -> fidl::Result<()> {
10672            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamResultIndRequest>(offset);
10673            // Vector header
10674            let max_ordinal: u64 = self.max_ordinal_present();
10675            encoder.write_num(max_ordinal, offset);
10676            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10677            // Calling encoder.out_of_line_offset(0) is not allowed.
10678            if max_ordinal == 0 {
10679                return Ok(());
10680            }
10681            depth.increment()?;
10682            let envelope_size = 8;
10683            let bytes_len = max_ordinal as usize * envelope_size;
10684            #[allow(unused_variables)]
10685            let offset = encoder.out_of_line_offset(bytes_len);
10686            let mut _prev_end_offset: usize = 0;
10687            if 1 > max_ordinal {
10688                return Ok(());
10689            }
10690
10691            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10692            // are envelope_size bytes.
10693            let cur_offset: usize = (1 - 1) * envelope_size;
10694
10695            // Zero reserved fields.
10696            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10697
10698            // Safety:
10699            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10700            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10701            //   envelope_size bytes, there is always sufficient room.
10702            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
10703                self.selected_bssid
10704                    .as_ref()
10705                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
10706                encoder,
10707                offset + cur_offset,
10708                depth,
10709            )?;
10710
10711            _prev_end_offset = cur_offset + envelope_size;
10712            if 2 > max_ordinal {
10713                return Ok(());
10714            }
10715
10716            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10717            // are envelope_size bytes.
10718            let cur_offset: usize = (2 - 1) * envelope_size;
10719
10720            // Zero reserved fields.
10721            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10722
10723            // Safety:
10724            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10725            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10726            //   envelope_size bytes, there is always sufficient room.
10727            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
10728            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
10729            encoder, offset + cur_offset, depth
10730        )?;
10731
10732            _prev_end_offset = cur_offset + envelope_size;
10733            if 3 > max_ordinal {
10734                return Ok(());
10735            }
10736
10737            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10738            // are envelope_size bytes.
10739            let cur_offset: usize = (3 - 1) * envelope_size;
10740
10741            // Zero reserved fields.
10742            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10743
10744            // Safety:
10745            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10746            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10747            //   envelope_size bytes, there is always sufficient room.
10748            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10749                self.original_association_maintained
10750                    .as_ref()
10751                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10752                encoder,
10753                offset + cur_offset,
10754                depth,
10755            )?;
10756
10757            _prev_end_offset = cur_offset + envelope_size;
10758            if 4 > max_ordinal {
10759                return Ok(());
10760            }
10761
10762            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10763            // are envelope_size bytes.
10764            let cur_offset: usize = (4 - 1) * envelope_size;
10765
10766            // Zero reserved fields.
10767            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10768
10769            // Safety:
10770            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10771            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10772            //   envelope_size bytes, there is always sufficient room.
10773            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10774                self.target_bss_authenticated
10775                    .as_ref()
10776                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10777                encoder,
10778                offset + cur_offset,
10779                depth,
10780            )?;
10781
10782            _prev_end_offset = cur_offset + envelope_size;
10783            if 5 > max_ordinal {
10784                return Ok(());
10785            }
10786
10787            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10788            // are envelope_size bytes.
10789            let cur_offset: usize = (5 - 1) * envelope_size;
10790
10791            // Zero reserved fields.
10792            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10793
10794            // Safety:
10795            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10796            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10797            //   envelope_size bytes, there is always sufficient room.
10798            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10799                self.association_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10800                encoder,
10801                offset + cur_offset,
10802                depth,
10803            )?;
10804
10805            _prev_end_offset = cur_offset + envelope_size;
10806            if 6 > max_ordinal {
10807                return Ok(());
10808            }
10809
10810            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10811            // are envelope_size bytes.
10812            let cur_offset: usize = (6 - 1) * envelope_size;
10813
10814            // Zero reserved fields.
10815            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10816
10817            // Safety:
10818            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10819            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10820            //   envelope_size bytes, there is always sufficient room.
10821            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
10822            self.association_ies.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
10823            encoder, offset + cur_offset, depth
10824        )?;
10825
10826            _prev_end_offset = cur_offset + envelope_size;
10827
10828            Ok(())
10829        }
10830    }
10831
10832    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10833        for WlanFullmacImplIfcRoamResultIndRequest
10834    {
10835        #[inline(always)]
10836        fn new_empty() -> Self {
10837            Self::default()
10838        }
10839
10840        unsafe fn decode(
10841            &mut self,
10842            decoder: &mut fidl::encoding::Decoder<'_, D>,
10843            offset: usize,
10844            mut depth: fidl::encoding::Depth,
10845        ) -> fidl::Result<()> {
10846            decoder.debug_check_bounds::<Self>(offset);
10847            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10848                None => return Err(fidl::Error::NotNullable),
10849                Some(len) => len,
10850            };
10851            // Calling decoder.out_of_line_offset(0) is not allowed.
10852            if len == 0 {
10853                return Ok(());
10854            };
10855            depth.increment()?;
10856            let envelope_size = 8;
10857            let bytes_len = len * envelope_size;
10858            let offset = decoder.out_of_line_offset(bytes_len)?;
10859            // Decode the envelope for each type.
10860            let mut _next_ordinal_to_read = 0;
10861            let mut next_offset = offset;
10862            let end_offset = offset + bytes_len;
10863            _next_ordinal_to_read += 1;
10864            if next_offset >= end_offset {
10865                return Ok(());
10866            }
10867
10868            // Decode unknown envelopes for gaps in ordinals.
10869            while _next_ordinal_to_read < 1 {
10870                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10871                _next_ordinal_to_read += 1;
10872                next_offset += envelope_size;
10873            }
10874
10875            let next_out_of_line = decoder.next_out_of_line();
10876            let handles_before = decoder.remaining_handles();
10877            if let Some((inlined, num_bytes, num_handles)) =
10878                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10879            {
10880                let member_inline_size =
10881                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
10882                        decoder.context,
10883                    );
10884                if inlined != (member_inline_size <= 4) {
10885                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10886                }
10887                let inner_offset;
10888                let mut inner_depth = depth.clone();
10889                if inlined {
10890                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10891                    inner_offset = next_offset;
10892                } else {
10893                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10894                    inner_depth.increment()?;
10895                }
10896                let val_ref = self
10897                    .selected_bssid
10898                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
10899                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
10900                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10901                {
10902                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10903                }
10904                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10905                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10906                }
10907            }
10908
10909            next_offset += envelope_size;
10910            _next_ordinal_to_read += 1;
10911            if next_offset >= end_offset {
10912                return Ok(());
10913            }
10914
10915            // Decode unknown envelopes for gaps in ordinals.
10916            while _next_ordinal_to_read < 2 {
10917                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10918                _next_ordinal_to_read += 1;
10919                next_offset += envelope_size;
10920            }
10921
10922            let next_out_of_line = decoder.next_out_of_line();
10923            let handles_before = decoder.remaining_handles();
10924            if let Some((inlined, num_bytes, num_handles)) =
10925                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10926            {
10927                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10928                if inlined != (member_inline_size <= 4) {
10929                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10930                }
10931                let inner_offset;
10932                let mut inner_depth = depth.clone();
10933                if inlined {
10934                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10935                    inner_offset = next_offset;
10936                } else {
10937                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10938                    inner_depth.increment()?;
10939                }
10940                let val_ref = self.status_code.get_or_insert_with(|| {
10941                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
10942                });
10943                fidl::decode!(
10944                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
10945                    D,
10946                    val_ref,
10947                    decoder,
10948                    inner_offset,
10949                    inner_depth
10950                )?;
10951                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10952                {
10953                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10954                }
10955                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10956                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10957                }
10958            }
10959
10960            next_offset += envelope_size;
10961            _next_ordinal_to_read += 1;
10962            if next_offset >= end_offset {
10963                return Ok(());
10964            }
10965
10966            // Decode unknown envelopes for gaps in ordinals.
10967            while _next_ordinal_to_read < 3 {
10968                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10969                _next_ordinal_to_read += 1;
10970                next_offset += envelope_size;
10971            }
10972
10973            let next_out_of_line = decoder.next_out_of_line();
10974            let handles_before = decoder.remaining_handles();
10975            if let Some((inlined, num_bytes, num_handles)) =
10976                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10977            {
10978                let member_inline_size =
10979                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10980                if inlined != (member_inline_size <= 4) {
10981                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10982                }
10983                let inner_offset;
10984                let mut inner_depth = depth.clone();
10985                if inlined {
10986                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10987                    inner_offset = next_offset;
10988                } else {
10989                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10990                    inner_depth.increment()?;
10991                }
10992                let val_ref = self
10993                    .original_association_maintained
10994                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
10995                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10996                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10997                {
10998                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10999                }
11000                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11001                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11002                }
11003            }
11004
11005            next_offset += envelope_size;
11006            _next_ordinal_to_read += 1;
11007            if next_offset >= end_offset {
11008                return Ok(());
11009            }
11010
11011            // Decode unknown envelopes for gaps in ordinals.
11012            while _next_ordinal_to_read < 4 {
11013                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11014                _next_ordinal_to_read += 1;
11015                next_offset += envelope_size;
11016            }
11017
11018            let next_out_of_line = decoder.next_out_of_line();
11019            let handles_before = decoder.remaining_handles();
11020            if let Some((inlined, num_bytes, num_handles)) =
11021                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11022            {
11023                let member_inline_size =
11024                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11025                if inlined != (member_inline_size <= 4) {
11026                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11027                }
11028                let inner_offset;
11029                let mut inner_depth = depth.clone();
11030                if inlined {
11031                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11032                    inner_offset = next_offset;
11033                } else {
11034                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11035                    inner_depth.increment()?;
11036                }
11037                let val_ref =
11038                    self.target_bss_authenticated.get_or_insert_with(|| fidl::new_empty!(bool, D));
11039                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11040                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11041                {
11042                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11043                }
11044                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11045                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11046                }
11047            }
11048
11049            next_offset += envelope_size;
11050            _next_ordinal_to_read += 1;
11051            if next_offset >= end_offset {
11052                return Ok(());
11053            }
11054
11055            // Decode unknown envelopes for gaps in ordinals.
11056            while _next_ordinal_to_read < 5 {
11057                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11058                _next_ordinal_to_read += 1;
11059                next_offset += envelope_size;
11060            }
11061
11062            let next_out_of_line = decoder.next_out_of_line();
11063            let handles_before = decoder.remaining_handles();
11064            if let Some((inlined, num_bytes, num_handles)) =
11065                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11066            {
11067                let member_inline_size =
11068                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11069                if inlined != (member_inline_size <= 4) {
11070                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11071                }
11072                let inner_offset;
11073                let mut inner_depth = depth.clone();
11074                if inlined {
11075                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11076                    inner_offset = next_offset;
11077                } else {
11078                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11079                    inner_depth.increment()?;
11080                }
11081                let val_ref = self.association_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
11082                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
11083                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11084                {
11085                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11086                }
11087                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11088                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11089                }
11090            }
11091
11092            next_offset += envelope_size;
11093            _next_ordinal_to_read += 1;
11094            if next_offset >= end_offset {
11095                return Ok(());
11096            }
11097
11098            // Decode unknown envelopes for gaps in ordinals.
11099            while _next_ordinal_to_read < 6 {
11100                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11101                _next_ordinal_to_read += 1;
11102                next_offset += envelope_size;
11103            }
11104
11105            let next_out_of_line = decoder.next_out_of_line();
11106            let handles_before = decoder.remaining_handles();
11107            if let Some((inlined, num_bytes, num_handles)) =
11108                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11109            {
11110                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11111                if inlined != (member_inline_size <= 4) {
11112                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11113                }
11114                let inner_offset;
11115                let mut inner_depth = depth.clone();
11116                if inlined {
11117                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11118                    inner_offset = next_offset;
11119                } else {
11120                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11121                    inner_depth.increment()?;
11122                }
11123                let val_ref = self.association_ies.get_or_insert_with(|| {
11124                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
11125                });
11126                fidl::decode!(
11127                    fidl::encoding::UnboundedVector<u8>,
11128                    D,
11129                    val_ref,
11130                    decoder,
11131                    inner_offset,
11132                    inner_depth
11133                )?;
11134                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11135                {
11136                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11137                }
11138                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11139                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11140                }
11141            }
11142
11143            next_offset += envelope_size;
11144
11145            // Decode the remaining unknown envelopes.
11146            while next_offset < end_offset {
11147                _next_ordinal_to_read += 1;
11148                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11149                next_offset += envelope_size;
11150            }
11151
11152            Ok(())
11153        }
11154    }
11155
11156    impl WlanFullmacImplIfcRoamStartIndRequest {
11157        #[inline(always)]
11158        fn max_ordinal_present(&self) -> u64 {
11159            if let Some(_) = self.original_association_maintained {
11160                return 3;
11161            }
11162            if let Some(_) = self.selected_bss {
11163                return 2;
11164            }
11165            if let Some(_) = self.selected_bssid {
11166                return 1;
11167            }
11168            0
11169        }
11170    }
11171
11172    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
11173        type Borrowed<'a> = &'a Self;
11174        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11175            value
11176        }
11177    }
11178
11179    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcRoamStartIndRequest {
11180        type Owned = Self;
11181
11182        #[inline(always)]
11183        fn inline_align(_context: fidl::encoding::Context) -> usize {
11184            8
11185        }
11186
11187        #[inline(always)]
11188        fn inline_size(_context: fidl::encoding::Context) -> usize {
11189            16
11190        }
11191    }
11192
11193    unsafe impl<D: fidl::encoding::ResourceDialect>
11194        fidl::encoding::Encode<WlanFullmacImplIfcRoamStartIndRequest, D>
11195        for &WlanFullmacImplIfcRoamStartIndRequest
11196    {
11197        unsafe fn encode(
11198            self,
11199            encoder: &mut fidl::encoding::Encoder<'_, D>,
11200            offset: usize,
11201            mut depth: fidl::encoding::Depth,
11202        ) -> fidl::Result<()> {
11203            encoder.debug_check_bounds::<WlanFullmacImplIfcRoamStartIndRequest>(offset);
11204            // Vector header
11205            let max_ordinal: u64 = self.max_ordinal_present();
11206            encoder.write_num(max_ordinal, offset);
11207            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11208            // Calling encoder.out_of_line_offset(0) is not allowed.
11209            if max_ordinal == 0 {
11210                return Ok(());
11211            }
11212            depth.increment()?;
11213            let envelope_size = 8;
11214            let bytes_len = max_ordinal as usize * envelope_size;
11215            #[allow(unused_variables)]
11216            let offset = encoder.out_of_line_offset(bytes_len);
11217            let mut _prev_end_offset: usize = 0;
11218            if 1 > max_ordinal {
11219                return Ok(());
11220            }
11221
11222            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11223            // are envelope_size bytes.
11224            let cur_offset: usize = (1 - 1) * envelope_size;
11225
11226            // Zero reserved fields.
11227            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11228
11229            // Safety:
11230            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11231            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11232            //   envelope_size bytes, there is always sufficient room.
11233            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
11234                self.selected_bssid
11235                    .as_ref()
11236                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
11237                encoder,
11238                offset + cur_offset,
11239                depth,
11240            )?;
11241
11242            _prev_end_offset = cur_offset + envelope_size;
11243            if 2 > max_ordinal {
11244                return Ok(());
11245            }
11246
11247            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11248            // are envelope_size bytes.
11249            let cur_offset: usize = (2 - 1) * envelope_size;
11250
11251            // Zero reserved fields.
11252            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11253
11254            // Safety:
11255            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11256            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11257            //   envelope_size bytes, there is always sufficient room.
11258            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>(
11259            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
11260            encoder, offset + cur_offset, depth
11261        )?;
11262
11263            _prev_end_offset = cur_offset + envelope_size;
11264            if 3 > max_ordinal {
11265                return Ok(());
11266            }
11267
11268            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11269            // are envelope_size bytes.
11270            let cur_offset: usize = (3 - 1) * envelope_size;
11271
11272            // Zero reserved fields.
11273            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11274
11275            // Safety:
11276            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11277            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11278            //   envelope_size bytes, there is always sufficient room.
11279            fidl::encoding::encode_in_envelope_optional::<bool, D>(
11280                self.original_association_maintained
11281                    .as_ref()
11282                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
11283                encoder,
11284                offset + cur_offset,
11285                depth,
11286            )?;
11287
11288            _prev_end_offset = cur_offset + envelope_size;
11289
11290            Ok(())
11291        }
11292    }
11293
11294    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11295        for WlanFullmacImplIfcRoamStartIndRequest
11296    {
11297        #[inline(always)]
11298        fn new_empty() -> Self {
11299            Self::default()
11300        }
11301
11302        unsafe fn decode(
11303            &mut self,
11304            decoder: &mut fidl::encoding::Decoder<'_, D>,
11305            offset: usize,
11306            mut depth: fidl::encoding::Depth,
11307        ) -> fidl::Result<()> {
11308            decoder.debug_check_bounds::<Self>(offset);
11309            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11310                None => return Err(fidl::Error::NotNullable),
11311                Some(len) => len,
11312            };
11313            // Calling decoder.out_of_line_offset(0) is not allowed.
11314            if len == 0 {
11315                return Ok(());
11316            };
11317            depth.increment()?;
11318            let envelope_size = 8;
11319            let bytes_len = len * envelope_size;
11320            let offset = decoder.out_of_line_offset(bytes_len)?;
11321            // Decode the envelope for each type.
11322            let mut _next_ordinal_to_read = 0;
11323            let mut next_offset = offset;
11324            let end_offset = offset + bytes_len;
11325            _next_ordinal_to_read += 1;
11326            if next_offset >= end_offset {
11327                return Ok(());
11328            }
11329
11330            // Decode unknown envelopes for gaps in ordinals.
11331            while _next_ordinal_to_read < 1 {
11332                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11333                _next_ordinal_to_read += 1;
11334                next_offset += envelope_size;
11335            }
11336
11337            let next_out_of_line = decoder.next_out_of_line();
11338            let handles_before = decoder.remaining_handles();
11339            if let Some((inlined, num_bytes, num_handles)) =
11340                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11341            {
11342                let member_inline_size =
11343                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11344                        decoder.context,
11345                    );
11346                if inlined != (member_inline_size <= 4) {
11347                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11348                }
11349                let inner_offset;
11350                let mut inner_depth = depth.clone();
11351                if inlined {
11352                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11353                    inner_offset = next_offset;
11354                } else {
11355                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11356                    inner_depth.increment()?;
11357                }
11358                let val_ref = self
11359                    .selected_bssid
11360                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11361                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
11362                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11363                {
11364                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11365                }
11366                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11367                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11368                }
11369            }
11370
11371            next_offset += envelope_size;
11372            _next_ordinal_to_read += 1;
11373            if next_offset >= end_offset {
11374                return Ok(());
11375            }
11376
11377            // Decode unknown envelopes for gaps in ordinals.
11378            while _next_ordinal_to_read < 2 {
11379                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11380                _next_ordinal_to_read += 1;
11381                next_offset += envelope_size;
11382            }
11383
11384            let next_out_of_line = decoder.next_out_of_line();
11385            let handles_before = decoder.remaining_handles();
11386            if let Some((inlined, num_bytes, num_handles)) =
11387                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11388            {
11389                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11390                if inlined != (member_inline_size <= 4) {
11391                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11392                }
11393                let inner_offset;
11394                let mut inner_depth = depth.clone();
11395                if inlined {
11396                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11397                    inner_offset = next_offset;
11398                } else {
11399                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11400                    inner_depth.increment()?;
11401                }
11402                let val_ref = self.selected_bss.get_or_insert_with(|| {
11403                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D)
11404                });
11405                fidl::decode!(
11406                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
11407                    D,
11408                    val_ref,
11409                    decoder,
11410                    inner_offset,
11411                    inner_depth
11412                )?;
11413                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11414                {
11415                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11416                }
11417                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11418                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11419                }
11420            }
11421
11422            next_offset += envelope_size;
11423            _next_ordinal_to_read += 1;
11424            if next_offset >= end_offset {
11425                return Ok(());
11426            }
11427
11428            // Decode unknown envelopes for gaps in ordinals.
11429            while _next_ordinal_to_read < 3 {
11430                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11431                _next_ordinal_to_read += 1;
11432                next_offset += envelope_size;
11433            }
11434
11435            let next_out_of_line = decoder.next_out_of_line();
11436            let handles_before = decoder.remaining_handles();
11437            if let Some((inlined, num_bytes, num_handles)) =
11438                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11439            {
11440                let member_inline_size =
11441                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11442                if inlined != (member_inline_size <= 4) {
11443                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11444                }
11445                let inner_offset;
11446                let mut inner_depth = depth.clone();
11447                if inlined {
11448                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11449                    inner_offset = next_offset;
11450                } else {
11451                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11452                    inner_depth.increment()?;
11453                }
11454                let val_ref = self
11455                    .original_association_maintained
11456                    .get_or_insert_with(|| fidl::new_empty!(bool, D));
11457                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11458                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11459                {
11460                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11461                }
11462                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11463                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11464                }
11465            }
11466
11467            next_offset += envelope_size;
11468
11469            // Decode the remaining unknown envelopes.
11470            while next_offset < end_offset {
11471                _next_ordinal_to_read += 1;
11472                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11473                next_offset += envelope_size;
11474            }
11475
11476            Ok(())
11477        }
11478    }
11479
11480    impl WlanFullmacImplIfcSaeHandshakeIndRequest {
11481        #[inline(always)]
11482        fn max_ordinal_present(&self) -> u64 {
11483            if let Some(_) = self.peer_sta_address {
11484                return 1;
11485            }
11486            0
11487        }
11488    }
11489
11490    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
11491        type Borrowed<'a> = &'a Self;
11492        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11493            value
11494        }
11495    }
11496
11497    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcSaeHandshakeIndRequest {
11498        type Owned = Self;
11499
11500        #[inline(always)]
11501        fn inline_align(_context: fidl::encoding::Context) -> usize {
11502            8
11503        }
11504
11505        #[inline(always)]
11506        fn inline_size(_context: fidl::encoding::Context) -> usize {
11507            16
11508        }
11509    }
11510
11511    unsafe impl<D: fidl::encoding::ResourceDialect>
11512        fidl::encoding::Encode<WlanFullmacImplIfcSaeHandshakeIndRequest, D>
11513        for &WlanFullmacImplIfcSaeHandshakeIndRequest
11514    {
11515        unsafe fn encode(
11516            self,
11517            encoder: &mut fidl::encoding::Encoder<'_, D>,
11518            offset: usize,
11519            mut depth: fidl::encoding::Depth,
11520        ) -> fidl::Result<()> {
11521            encoder.debug_check_bounds::<WlanFullmacImplIfcSaeHandshakeIndRequest>(offset);
11522            // Vector header
11523            let max_ordinal: u64 = self.max_ordinal_present();
11524            encoder.write_num(max_ordinal, offset);
11525            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11526            // Calling encoder.out_of_line_offset(0) is not allowed.
11527            if max_ordinal == 0 {
11528                return Ok(());
11529            }
11530            depth.increment()?;
11531            let envelope_size = 8;
11532            let bytes_len = max_ordinal as usize * envelope_size;
11533            #[allow(unused_variables)]
11534            let offset = encoder.out_of_line_offset(bytes_len);
11535            let mut _prev_end_offset: usize = 0;
11536            if 1 > max_ordinal {
11537                return Ok(());
11538            }
11539
11540            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11541            // are envelope_size bytes.
11542            let cur_offset: usize = (1 - 1) * envelope_size;
11543
11544            // Zero reserved fields.
11545            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11546
11547            // Safety:
11548            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11549            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11550            //   envelope_size bytes, there is always sufficient room.
11551            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
11552                self.peer_sta_address
11553                    .as_ref()
11554                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
11555                encoder,
11556                offset + cur_offset,
11557                depth,
11558            )?;
11559
11560            _prev_end_offset = cur_offset + envelope_size;
11561
11562            Ok(())
11563        }
11564    }
11565
11566    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11567        for WlanFullmacImplIfcSaeHandshakeIndRequest
11568    {
11569        #[inline(always)]
11570        fn new_empty() -> Self {
11571            Self::default()
11572        }
11573
11574        unsafe fn decode(
11575            &mut self,
11576            decoder: &mut fidl::encoding::Decoder<'_, D>,
11577            offset: usize,
11578            mut depth: fidl::encoding::Depth,
11579        ) -> fidl::Result<()> {
11580            decoder.debug_check_bounds::<Self>(offset);
11581            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11582                None => return Err(fidl::Error::NotNullable),
11583                Some(len) => len,
11584            };
11585            // Calling decoder.out_of_line_offset(0) is not allowed.
11586            if len == 0 {
11587                return Ok(());
11588            };
11589            depth.increment()?;
11590            let envelope_size = 8;
11591            let bytes_len = len * envelope_size;
11592            let offset = decoder.out_of_line_offset(bytes_len)?;
11593            // Decode the envelope for each type.
11594            let mut _next_ordinal_to_read = 0;
11595            let mut next_offset = offset;
11596            let end_offset = offset + bytes_len;
11597            _next_ordinal_to_read += 1;
11598            if next_offset >= end_offset {
11599                return Ok(());
11600            }
11601
11602            // Decode unknown envelopes for gaps in ordinals.
11603            while _next_ordinal_to_read < 1 {
11604                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11605                _next_ordinal_to_read += 1;
11606                next_offset += envelope_size;
11607            }
11608
11609            let next_out_of_line = decoder.next_out_of_line();
11610            let handles_before = decoder.remaining_handles();
11611            if let Some((inlined, num_bytes, num_handles)) =
11612                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11613            {
11614                let member_inline_size =
11615                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
11616                        decoder.context,
11617                    );
11618                if inlined != (member_inline_size <= 4) {
11619                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11620                }
11621                let inner_offset;
11622                let mut inner_depth = depth.clone();
11623                if inlined {
11624                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11625                    inner_offset = next_offset;
11626                } else {
11627                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11628                    inner_depth.increment()?;
11629                }
11630                let val_ref = self
11631                    .peer_sta_address
11632                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
11633                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
11634                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11635                {
11636                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11637                }
11638                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11639                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11640                }
11641            }
11642
11643            next_offset += envelope_size;
11644
11645            // Decode the remaining unknown envelopes.
11646            while next_offset < end_offset {
11647                _next_ordinal_to_read += 1;
11648                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11649                next_offset += envelope_size;
11650            }
11651
11652            Ok(())
11653        }
11654    }
11655
11656    impl WlanFullmacImplIfcStartConfRequest {
11657        #[inline(always)]
11658        fn max_ordinal_present(&self) -> u64 {
11659            if let Some(_) = self.result_code {
11660                return 1;
11661            }
11662            0
11663        }
11664    }
11665
11666    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStartConfRequest {
11667        type Borrowed<'a> = &'a Self;
11668        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11669            value
11670        }
11671    }
11672
11673    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStartConfRequest {
11674        type Owned = Self;
11675
11676        #[inline(always)]
11677        fn inline_align(_context: fidl::encoding::Context) -> usize {
11678            8
11679        }
11680
11681        #[inline(always)]
11682        fn inline_size(_context: fidl::encoding::Context) -> usize {
11683            16
11684        }
11685    }
11686
11687    unsafe impl<D: fidl::encoding::ResourceDialect>
11688        fidl::encoding::Encode<WlanFullmacImplIfcStartConfRequest, D>
11689        for &WlanFullmacImplIfcStartConfRequest
11690    {
11691        unsafe fn encode(
11692            self,
11693            encoder: &mut fidl::encoding::Encoder<'_, D>,
11694            offset: usize,
11695            mut depth: fidl::encoding::Depth,
11696        ) -> fidl::Result<()> {
11697            encoder.debug_check_bounds::<WlanFullmacImplIfcStartConfRequest>(offset);
11698            // Vector header
11699            let max_ordinal: u64 = self.max_ordinal_present();
11700            encoder.write_num(max_ordinal, offset);
11701            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11702            // Calling encoder.out_of_line_offset(0) is not allowed.
11703            if max_ordinal == 0 {
11704                return Ok(());
11705            }
11706            depth.increment()?;
11707            let envelope_size = 8;
11708            let bytes_len = max_ordinal as usize * envelope_size;
11709            #[allow(unused_variables)]
11710            let offset = encoder.out_of_line_offset(bytes_len);
11711            let mut _prev_end_offset: usize = 0;
11712            if 1 > max_ordinal {
11713                return Ok(());
11714            }
11715
11716            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11717            // are envelope_size bytes.
11718            let cur_offset: usize = (1 - 1) * envelope_size;
11719
11720            // Zero reserved fields.
11721            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11722
11723            // Safety:
11724            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11725            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11726            //   envelope_size bytes, there is always sufficient room.
11727            fidl::encoding::encode_in_envelope_optional::<StartResult, D>(
11728                self.result_code
11729                    .as_ref()
11730                    .map(<StartResult as fidl::encoding::ValueTypeMarker>::borrow),
11731                encoder,
11732                offset + cur_offset,
11733                depth,
11734            )?;
11735
11736            _prev_end_offset = cur_offset + envelope_size;
11737
11738            Ok(())
11739        }
11740    }
11741
11742    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11743        for WlanFullmacImplIfcStartConfRequest
11744    {
11745        #[inline(always)]
11746        fn new_empty() -> Self {
11747            Self::default()
11748        }
11749
11750        unsafe fn decode(
11751            &mut self,
11752            decoder: &mut fidl::encoding::Decoder<'_, D>,
11753            offset: usize,
11754            mut depth: fidl::encoding::Depth,
11755        ) -> fidl::Result<()> {
11756            decoder.debug_check_bounds::<Self>(offset);
11757            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11758                None => return Err(fidl::Error::NotNullable),
11759                Some(len) => len,
11760            };
11761            // Calling decoder.out_of_line_offset(0) is not allowed.
11762            if len == 0 {
11763                return Ok(());
11764            };
11765            depth.increment()?;
11766            let envelope_size = 8;
11767            let bytes_len = len * envelope_size;
11768            let offset = decoder.out_of_line_offset(bytes_len)?;
11769            // Decode the envelope for each type.
11770            let mut _next_ordinal_to_read = 0;
11771            let mut next_offset = offset;
11772            let end_offset = offset + bytes_len;
11773            _next_ordinal_to_read += 1;
11774            if next_offset >= end_offset {
11775                return Ok(());
11776            }
11777
11778            // Decode unknown envelopes for gaps in ordinals.
11779            while _next_ordinal_to_read < 1 {
11780                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11781                _next_ordinal_to_read += 1;
11782                next_offset += envelope_size;
11783            }
11784
11785            let next_out_of_line = decoder.next_out_of_line();
11786            let handles_before = decoder.remaining_handles();
11787            if let Some((inlined, num_bytes, num_handles)) =
11788                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11789            {
11790                let member_inline_size =
11791                    <StartResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11792                if inlined != (member_inline_size <= 4) {
11793                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11794                }
11795                let inner_offset;
11796                let mut inner_depth = depth.clone();
11797                if inlined {
11798                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11799                    inner_offset = next_offset;
11800                } else {
11801                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11802                    inner_depth.increment()?;
11803                }
11804                let val_ref =
11805                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StartResult, D));
11806                fidl::decode!(StartResult, D, val_ref, decoder, inner_offset, inner_depth)?;
11807                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11808                {
11809                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11810                }
11811                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11812                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11813                }
11814            }
11815
11816            next_offset += envelope_size;
11817
11818            // Decode the remaining unknown envelopes.
11819            while next_offset < end_offset {
11820                _next_ordinal_to_read += 1;
11821                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11822                next_offset += envelope_size;
11823            }
11824
11825            Ok(())
11826        }
11827    }
11828
11829    impl WlanFullmacImplIfcStopConfRequest {
11830        #[inline(always)]
11831        fn max_ordinal_present(&self) -> u64 {
11832            if let Some(_) = self.result_code {
11833                return 1;
11834            }
11835            0
11836        }
11837    }
11838
11839    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplIfcStopConfRequest {
11840        type Borrowed<'a> = &'a Self;
11841        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11842            value
11843        }
11844    }
11845
11846    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplIfcStopConfRequest {
11847        type Owned = Self;
11848
11849        #[inline(always)]
11850        fn inline_align(_context: fidl::encoding::Context) -> usize {
11851            8
11852        }
11853
11854        #[inline(always)]
11855        fn inline_size(_context: fidl::encoding::Context) -> usize {
11856            16
11857        }
11858    }
11859
11860    unsafe impl<D: fidl::encoding::ResourceDialect>
11861        fidl::encoding::Encode<WlanFullmacImplIfcStopConfRequest, D>
11862        for &WlanFullmacImplIfcStopConfRequest
11863    {
11864        unsafe fn encode(
11865            self,
11866            encoder: &mut fidl::encoding::Encoder<'_, D>,
11867            offset: usize,
11868            mut depth: fidl::encoding::Depth,
11869        ) -> fidl::Result<()> {
11870            encoder.debug_check_bounds::<WlanFullmacImplIfcStopConfRequest>(offset);
11871            // Vector header
11872            let max_ordinal: u64 = self.max_ordinal_present();
11873            encoder.write_num(max_ordinal, offset);
11874            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11875            // Calling encoder.out_of_line_offset(0) is not allowed.
11876            if max_ordinal == 0 {
11877                return Ok(());
11878            }
11879            depth.increment()?;
11880            let envelope_size = 8;
11881            let bytes_len = max_ordinal as usize * envelope_size;
11882            #[allow(unused_variables)]
11883            let offset = encoder.out_of_line_offset(bytes_len);
11884            let mut _prev_end_offset: usize = 0;
11885            if 1 > max_ordinal {
11886                return Ok(());
11887            }
11888
11889            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11890            // are envelope_size bytes.
11891            let cur_offset: usize = (1 - 1) * envelope_size;
11892
11893            // Zero reserved fields.
11894            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11895
11896            // Safety:
11897            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11898            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11899            //   envelope_size bytes, there is always sufficient room.
11900            fidl::encoding::encode_in_envelope_optional::<StopResult, D>(
11901                self.result_code
11902                    .as_ref()
11903                    .map(<StopResult as fidl::encoding::ValueTypeMarker>::borrow),
11904                encoder,
11905                offset + cur_offset,
11906                depth,
11907            )?;
11908
11909            _prev_end_offset = cur_offset + envelope_size;
11910
11911            Ok(())
11912        }
11913    }
11914
11915    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11916        for WlanFullmacImplIfcStopConfRequest
11917    {
11918        #[inline(always)]
11919        fn new_empty() -> Self {
11920            Self::default()
11921        }
11922
11923        unsafe fn decode(
11924            &mut self,
11925            decoder: &mut fidl::encoding::Decoder<'_, D>,
11926            offset: usize,
11927            mut depth: fidl::encoding::Depth,
11928        ) -> fidl::Result<()> {
11929            decoder.debug_check_bounds::<Self>(offset);
11930            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11931                None => return Err(fidl::Error::NotNullable),
11932                Some(len) => len,
11933            };
11934            // Calling decoder.out_of_line_offset(0) is not allowed.
11935            if len == 0 {
11936                return Ok(());
11937            };
11938            depth.increment()?;
11939            let envelope_size = 8;
11940            let bytes_len = len * envelope_size;
11941            let offset = decoder.out_of_line_offset(bytes_len)?;
11942            // Decode the envelope for each type.
11943            let mut _next_ordinal_to_read = 0;
11944            let mut next_offset = offset;
11945            let end_offset = offset + bytes_len;
11946            _next_ordinal_to_read += 1;
11947            if next_offset >= end_offset {
11948                return Ok(());
11949            }
11950
11951            // Decode unknown envelopes for gaps in ordinals.
11952            while _next_ordinal_to_read < 1 {
11953                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11954                _next_ordinal_to_read += 1;
11955                next_offset += envelope_size;
11956            }
11957
11958            let next_out_of_line = decoder.next_out_of_line();
11959            let handles_before = decoder.remaining_handles();
11960            if let Some((inlined, num_bytes, num_handles)) =
11961                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11962            {
11963                let member_inline_size =
11964                    <StopResult as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11965                if inlined != (member_inline_size <= 4) {
11966                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11967                }
11968                let inner_offset;
11969                let mut inner_depth = depth.clone();
11970                if inlined {
11971                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11972                    inner_offset = next_offset;
11973                } else {
11974                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11975                    inner_depth.increment()?;
11976                }
11977                let val_ref =
11978                    self.result_code.get_or_insert_with(|| fidl::new_empty!(StopResult, D));
11979                fidl::decode!(StopResult, D, val_ref, decoder, inner_offset, inner_depth)?;
11980                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11981                {
11982                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11983                }
11984                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11985                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11986                }
11987            }
11988
11989            next_offset += envelope_size;
11990
11991            // Decode the remaining unknown envelopes.
11992            while next_offset < end_offset {
11993                _next_ordinal_to_read += 1;
11994                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11995                next_offset += envelope_size;
11996            }
11997
11998            Ok(())
11999        }
12000    }
12001
12002    impl WlanFullmacImplInstallApfPacketFilterRequest {
12003        #[inline(always)]
12004        fn max_ordinal_present(&self) -> u64 {
12005            if let Some(_) = self.program {
12006                return 1;
12007            }
12008            0
12009        }
12010    }
12011
12012    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplInstallApfPacketFilterRequest {
12013        type Borrowed<'a> = &'a Self;
12014        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12015            value
12016        }
12017    }
12018
12019    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplInstallApfPacketFilterRequest {
12020        type Owned = Self;
12021
12022        #[inline(always)]
12023        fn inline_align(_context: fidl::encoding::Context) -> usize {
12024            8
12025        }
12026
12027        #[inline(always)]
12028        fn inline_size(_context: fidl::encoding::Context) -> usize {
12029            16
12030        }
12031    }
12032
12033    unsafe impl<D: fidl::encoding::ResourceDialect>
12034        fidl::encoding::Encode<WlanFullmacImplInstallApfPacketFilterRequest, D>
12035        for &WlanFullmacImplInstallApfPacketFilterRequest
12036    {
12037        unsafe fn encode(
12038            self,
12039            encoder: &mut fidl::encoding::Encoder<'_, D>,
12040            offset: usize,
12041            mut depth: fidl::encoding::Depth,
12042        ) -> fidl::Result<()> {
12043            encoder.debug_check_bounds::<WlanFullmacImplInstallApfPacketFilterRequest>(offset);
12044            // Vector header
12045            let max_ordinal: u64 = self.max_ordinal_present();
12046            encoder.write_num(max_ordinal, offset);
12047            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12048            // Calling encoder.out_of_line_offset(0) is not allowed.
12049            if max_ordinal == 0 {
12050                return Ok(());
12051            }
12052            depth.increment()?;
12053            let envelope_size = 8;
12054            let bytes_len = max_ordinal as usize * envelope_size;
12055            #[allow(unused_variables)]
12056            let offset = encoder.out_of_line_offset(bytes_len);
12057            let mut _prev_end_offset: usize = 0;
12058            if 1 > max_ordinal {
12059                return Ok(());
12060            }
12061
12062            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12063            // are envelope_size bytes.
12064            let cur_offset: usize = (1 - 1) * envelope_size;
12065
12066            // Zero reserved fields.
12067            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12068
12069            // Safety:
12070            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12071            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12072            //   envelope_size bytes, there is always sufficient room.
12073            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
12074            self.program.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
12075            encoder, offset + cur_offset, depth
12076        )?;
12077
12078            _prev_end_offset = cur_offset + envelope_size;
12079
12080            Ok(())
12081        }
12082    }
12083
12084    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12085        for WlanFullmacImplInstallApfPacketFilterRequest
12086    {
12087        #[inline(always)]
12088        fn new_empty() -> Self {
12089            Self::default()
12090        }
12091
12092        unsafe fn decode(
12093            &mut self,
12094            decoder: &mut fidl::encoding::Decoder<'_, D>,
12095            offset: usize,
12096            mut depth: fidl::encoding::Depth,
12097        ) -> fidl::Result<()> {
12098            decoder.debug_check_bounds::<Self>(offset);
12099            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12100                None => return Err(fidl::Error::NotNullable),
12101                Some(len) => len,
12102            };
12103            // Calling decoder.out_of_line_offset(0) is not allowed.
12104            if len == 0 {
12105                return Ok(());
12106            };
12107            depth.increment()?;
12108            let envelope_size = 8;
12109            let bytes_len = len * envelope_size;
12110            let offset = decoder.out_of_line_offset(bytes_len)?;
12111            // Decode the envelope for each type.
12112            let mut _next_ordinal_to_read = 0;
12113            let mut next_offset = offset;
12114            let end_offset = offset + bytes_len;
12115            _next_ordinal_to_read += 1;
12116            if next_offset >= end_offset {
12117                return Ok(());
12118            }
12119
12120            // Decode unknown envelopes for gaps in ordinals.
12121            while _next_ordinal_to_read < 1 {
12122                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12123                _next_ordinal_to_read += 1;
12124                next_offset += envelope_size;
12125            }
12126
12127            let next_out_of_line = decoder.next_out_of_line();
12128            let handles_before = decoder.remaining_handles();
12129            if let Some((inlined, num_bytes, num_handles)) =
12130                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12131            {
12132                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12133                if inlined != (member_inline_size <= 4) {
12134                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12135                }
12136                let inner_offset;
12137                let mut inner_depth = depth.clone();
12138                if inlined {
12139                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12140                    inner_offset = next_offset;
12141                } else {
12142                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12143                    inner_depth.increment()?;
12144                }
12145                let val_ref = self.program.get_or_insert_with(|| {
12146                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
12147                });
12148                fidl::decode!(
12149                    fidl::encoding::UnboundedVector<u8>,
12150                    D,
12151                    val_ref,
12152                    decoder,
12153                    inner_offset,
12154                    inner_depth
12155                )?;
12156                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12157                {
12158                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12159                }
12160                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12161                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12162                }
12163            }
12164
12165            next_offset += envelope_size;
12166
12167            // Decode the remaining unknown envelopes.
12168            while next_offset < end_offset {
12169                _next_ordinal_to_read += 1;
12170                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12171                next_offset += envelope_size;
12172            }
12173
12174            Ok(())
12175        }
12176    }
12177
12178    impl WlanFullmacImplOnLinkStateChangedRequest {
12179        #[inline(always)]
12180        fn max_ordinal_present(&self) -> u64 {
12181            if let Some(_) = self.online {
12182                return 1;
12183            }
12184            0
12185        }
12186    }
12187
12188    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
12189        type Borrowed<'a> = &'a Self;
12190        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12191            value
12192        }
12193    }
12194
12195    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplOnLinkStateChangedRequest {
12196        type Owned = Self;
12197
12198        #[inline(always)]
12199        fn inline_align(_context: fidl::encoding::Context) -> usize {
12200            8
12201        }
12202
12203        #[inline(always)]
12204        fn inline_size(_context: fidl::encoding::Context) -> usize {
12205            16
12206        }
12207    }
12208
12209    unsafe impl<D: fidl::encoding::ResourceDialect>
12210        fidl::encoding::Encode<WlanFullmacImplOnLinkStateChangedRequest, D>
12211        for &WlanFullmacImplOnLinkStateChangedRequest
12212    {
12213        unsafe fn encode(
12214            self,
12215            encoder: &mut fidl::encoding::Encoder<'_, D>,
12216            offset: usize,
12217            mut depth: fidl::encoding::Depth,
12218        ) -> fidl::Result<()> {
12219            encoder.debug_check_bounds::<WlanFullmacImplOnLinkStateChangedRequest>(offset);
12220            // Vector header
12221            let max_ordinal: u64 = self.max_ordinal_present();
12222            encoder.write_num(max_ordinal, offset);
12223            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12224            // Calling encoder.out_of_line_offset(0) is not allowed.
12225            if max_ordinal == 0 {
12226                return Ok(());
12227            }
12228            depth.increment()?;
12229            let envelope_size = 8;
12230            let bytes_len = max_ordinal as usize * envelope_size;
12231            #[allow(unused_variables)]
12232            let offset = encoder.out_of_line_offset(bytes_len);
12233            let mut _prev_end_offset: usize = 0;
12234            if 1 > max_ordinal {
12235                return Ok(());
12236            }
12237
12238            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12239            // are envelope_size bytes.
12240            let cur_offset: usize = (1 - 1) * envelope_size;
12241
12242            // Zero reserved fields.
12243            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12244
12245            // Safety:
12246            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12247            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12248            //   envelope_size bytes, there is always sufficient room.
12249            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12250                self.online.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12251                encoder,
12252                offset + cur_offset,
12253                depth,
12254            )?;
12255
12256            _prev_end_offset = cur_offset + envelope_size;
12257
12258            Ok(())
12259        }
12260    }
12261
12262    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12263        for WlanFullmacImplOnLinkStateChangedRequest
12264    {
12265        #[inline(always)]
12266        fn new_empty() -> Self {
12267            Self::default()
12268        }
12269
12270        unsafe fn decode(
12271            &mut self,
12272            decoder: &mut fidl::encoding::Decoder<'_, D>,
12273            offset: usize,
12274            mut depth: fidl::encoding::Depth,
12275        ) -> fidl::Result<()> {
12276            decoder.debug_check_bounds::<Self>(offset);
12277            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12278                None => return Err(fidl::Error::NotNullable),
12279                Some(len) => len,
12280            };
12281            // Calling decoder.out_of_line_offset(0) is not allowed.
12282            if len == 0 {
12283                return Ok(());
12284            };
12285            depth.increment()?;
12286            let envelope_size = 8;
12287            let bytes_len = len * envelope_size;
12288            let offset = decoder.out_of_line_offset(bytes_len)?;
12289            // Decode the envelope for each type.
12290            let mut _next_ordinal_to_read = 0;
12291            let mut next_offset = offset;
12292            let end_offset = offset + bytes_len;
12293            _next_ordinal_to_read += 1;
12294            if next_offset >= end_offset {
12295                return Ok(());
12296            }
12297
12298            // Decode unknown envelopes for gaps in ordinals.
12299            while _next_ordinal_to_read < 1 {
12300                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12301                _next_ordinal_to_read += 1;
12302                next_offset += envelope_size;
12303            }
12304
12305            let next_out_of_line = decoder.next_out_of_line();
12306            let handles_before = decoder.remaining_handles();
12307            if let Some((inlined, num_bytes, num_handles)) =
12308                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12309            {
12310                let member_inline_size =
12311                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12312                if inlined != (member_inline_size <= 4) {
12313                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12314                }
12315                let inner_offset;
12316                let mut inner_depth = depth.clone();
12317                if inlined {
12318                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12319                    inner_offset = next_offset;
12320                } else {
12321                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12322                    inner_depth.increment()?;
12323                }
12324                let val_ref = self.online.get_or_insert_with(|| fidl::new_empty!(bool, D));
12325                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12326                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12327                {
12328                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12329                }
12330                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12331                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12332                }
12333            }
12334
12335            next_offset += envelope_size;
12336
12337            // Decode the remaining unknown envelopes.
12338            while next_offset < end_offset {
12339                _next_ordinal_to_read += 1;
12340                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12341                next_offset += envelope_size;
12342            }
12343
12344            Ok(())
12345        }
12346    }
12347
12348    impl WlanFullmacImplReconnectRequest {
12349        #[inline(always)]
12350        fn max_ordinal_present(&self) -> u64 {
12351            if let Some(_) = self.peer_sta_address {
12352                return 1;
12353            }
12354            0
12355        }
12356    }
12357
12358    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplReconnectRequest {
12359        type Borrowed<'a> = &'a Self;
12360        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12361            value
12362        }
12363    }
12364
12365    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplReconnectRequest {
12366        type Owned = Self;
12367
12368        #[inline(always)]
12369        fn inline_align(_context: fidl::encoding::Context) -> usize {
12370            8
12371        }
12372
12373        #[inline(always)]
12374        fn inline_size(_context: fidl::encoding::Context) -> usize {
12375            16
12376        }
12377    }
12378
12379    unsafe impl<D: fidl::encoding::ResourceDialect>
12380        fidl::encoding::Encode<WlanFullmacImplReconnectRequest, D>
12381        for &WlanFullmacImplReconnectRequest
12382    {
12383        unsafe fn encode(
12384            self,
12385            encoder: &mut fidl::encoding::Encoder<'_, D>,
12386            offset: usize,
12387            mut depth: fidl::encoding::Depth,
12388        ) -> fidl::Result<()> {
12389            encoder.debug_check_bounds::<WlanFullmacImplReconnectRequest>(offset);
12390            // Vector header
12391            let max_ordinal: u64 = self.max_ordinal_present();
12392            encoder.write_num(max_ordinal, offset);
12393            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12394            // Calling encoder.out_of_line_offset(0) is not allowed.
12395            if max_ordinal == 0 {
12396                return Ok(());
12397            }
12398            depth.increment()?;
12399            let envelope_size = 8;
12400            let bytes_len = max_ordinal as usize * envelope_size;
12401            #[allow(unused_variables)]
12402            let offset = encoder.out_of_line_offset(bytes_len);
12403            let mut _prev_end_offset: usize = 0;
12404            if 1 > max_ordinal {
12405                return Ok(());
12406            }
12407
12408            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12409            // are envelope_size bytes.
12410            let cur_offset: usize = (1 - 1) * envelope_size;
12411
12412            // Zero reserved fields.
12413            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12414
12415            // Safety:
12416            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12417            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12418            //   envelope_size bytes, there is always sufficient room.
12419            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
12420                self.peer_sta_address
12421                    .as_ref()
12422                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
12423                encoder,
12424                offset + cur_offset,
12425                depth,
12426            )?;
12427
12428            _prev_end_offset = cur_offset + envelope_size;
12429
12430            Ok(())
12431        }
12432    }
12433
12434    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12435        for WlanFullmacImplReconnectRequest
12436    {
12437        #[inline(always)]
12438        fn new_empty() -> Self {
12439            Self::default()
12440        }
12441
12442        unsafe fn decode(
12443            &mut self,
12444            decoder: &mut fidl::encoding::Decoder<'_, D>,
12445            offset: usize,
12446            mut depth: fidl::encoding::Depth,
12447        ) -> fidl::Result<()> {
12448            decoder.debug_check_bounds::<Self>(offset);
12449            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12450                None => return Err(fidl::Error::NotNullable),
12451                Some(len) => len,
12452            };
12453            // Calling decoder.out_of_line_offset(0) is not allowed.
12454            if len == 0 {
12455                return Ok(());
12456            };
12457            depth.increment()?;
12458            let envelope_size = 8;
12459            let bytes_len = len * envelope_size;
12460            let offset = decoder.out_of_line_offset(bytes_len)?;
12461            // Decode the envelope for each type.
12462            let mut _next_ordinal_to_read = 0;
12463            let mut next_offset = offset;
12464            let end_offset = offset + bytes_len;
12465            _next_ordinal_to_read += 1;
12466            if next_offset >= end_offset {
12467                return Ok(());
12468            }
12469
12470            // Decode unknown envelopes for gaps in ordinals.
12471            while _next_ordinal_to_read < 1 {
12472                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12473                _next_ordinal_to_read += 1;
12474                next_offset += envelope_size;
12475            }
12476
12477            let next_out_of_line = decoder.next_out_of_line();
12478            let handles_before = decoder.remaining_handles();
12479            if let Some((inlined, num_bytes, num_handles)) =
12480                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12481            {
12482                let member_inline_size =
12483                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
12484                        decoder.context,
12485                    );
12486                if inlined != (member_inline_size <= 4) {
12487                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12488                }
12489                let inner_offset;
12490                let mut inner_depth = depth.clone();
12491                if inlined {
12492                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12493                    inner_offset = next_offset;
12494                } else {
12495                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12496                    inner_depth.increment()?;
12497                }
12498                let val_ref = self
12499                    .peer_sta_address
12500                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
12501                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
12502                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12503                {
12504                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12505                }
12506                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12507                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12508                }
12509            }
12510
12511            next_offset += envelope_size;
12512
12513            // Decode the remaining unknown envelopes.
12514            while next_offset < end_offset {
12515                _next_ordinal_to_read += 1;
12516                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12517                next_offset += envelope_size;
12518            }
12519
12520            Ok(())
12521        }
12522    }
12523
12524    impl WlanFullmacImplRoamRequest {
12525        #[inline(always)]
12526        fn max_ordinal_present(&self) -> u64 {
12527            if let Some(_) = self.selected_bss {
12528                return 1;
12529            }
12530            0
12531        }
12532    }
12533
12534    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplRoamRequest {
12535        type Borrowed<'a> = &'a Self;
12536        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12537            value
12538        }
12539    }
12540
12541    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplRoamRequest {
12542        type Owned = Self;
12543
12544        #[inline(always)]
12545        fn inline_align(_context: fidl::encoding::Context) -> usize {
12546            8
12547        }
12548
12549        #[inline(always)]
12550        fn inline_size(_context: fidl::encoding::Context) -> usize {
12551            16
12552        }
12553    }
12554
12555    unsafe impl<D: fidl::encoding::ResourceDialect>
12556        fidl::encoding::Encode<WlanFullmacImplRoamRequest, D> for &WlanFullmacImplRoamRequest
12557    {
12558        unsafe fn encode(
12559            self,
12560            encoder: &mut fidl::encoding::Encoder<'_, D>,
12561            offset: usize,
12562            mut depth: fidl::encoding::Depth,
12563        ) -> fidl::Result<()> {
12564            encoder.debug_check_bounds::<WlanFullmacImplRoamRequest>(offset);
12565            // Vector header
12566            let max_ordinal: u64 = self.max_ordinal_present();
12567            encoder.write_num(max_ordinal, offset);
12568            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12569            // Calling encoder.out_of_line_offset(0) is not allowed.
12570            if max_ordinal == 0 {
12571                return Ok(());
12572            }
12573            depth.increment()?;
12574            let envelope_size = 8;
12575            let bytes_len = max_ordinal as usize * envelope_size;
12576            #[allow(unused_variables)]
12577            let offset = encoder.out_of_line_offset(bytes_len);
12578            let mut _prev_end_offset: usize = 0;
12579            if 1 > max_ordinal {
12580                return Ok(());
12581            }
12582
12583            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12584            // are envelope_size bytes.
12585            let cur_offset: usize = (1 - 1) * envelope_size;
12586
12587            // Zero reserved fields.
12588            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12589
12590            // Safety:
12591            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12592            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12593            //   envelope_size bytes, there is always sufficient room.
12594            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>(
12595            self.selected_bss.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow),
12596            encoder, offset + cur_offset, depth
12597        )?;
12598
12599            _prev_end_offset = cur_offset + envelope_size;
12600
12601            Ok(())
12602        }
12603    }
12604
12605    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12606        for WlanFullmacImplRoamRequest
12607    {
12608        #[inline(always)]
12609        fn new_empty() -> Self {
12610            Self::default()
12611        }
12612
12613        unsafe fn decode(
12614            &mut self,
12615            decoder: &mut fidl::encoding::Decoder<'_, D>,
12616            offset: usize,
12617            mut depth: fidl::encoding::Depth,
12618        ) -> fidl::Result<()> {
12619            decoder.debug_check_bounds::<Self>(offset);
12620            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12621                None => return Err(fidl::Error::NotNullable),
12622                Some(len) => len,
12623            };
12624            // Calling decoder.out_of_line_offset(0) is not allowed.
12625            if len == 0 {
12626                return Ok(());
12627            };
12628            depth.increment()?;
12629            let envelope_size = 8;
12630            let bytes_len = len * envelope_size;
12631            let offset = decoder.out_of_line_offset(bytes_len)?;
12632            // Decode the envelope for each type.
12633            let mut _next_ordinal_to_read = 0;
12634            let mut next_offset = offset;
12635            let end_offset = offset + bytes_len;
12636            _next_ordinal_to_read += 1;
12637            if next_offset >= end_offset {
12638                return Ok(());
12639            }
12640
12641            // Decode unknown envelopes for gaps in ordinals.
12642            while _next_ordinal_to_read < 1 {
12643                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12644                _next_ordinal_to_read += 1;
12645                next_offset += envelope_size;
12646            }
12647
12648            let next_out_of_line = decoder.next_out_of_line();
12649            let handles_before = decoder.remaining_handles();
12650            if let Some((inlined, num_bytes, num_handles)) =
12651                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12652            {
12653                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12654                if inlined != (member_inline_size <= 4) {
12655                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12656                }
12657                let inner_offset;
12658                let mut inner_depth = depth.clone();
12659                if inlined {
12660                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12661                    inner_offset = next_offset;
12662                } else {
12663                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12664                    inner_depth.increment()?;
12665                }
12666                let val_ref = self.selected_bss.get_or_insert_with(|| {
12667                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D)
12668                });
12669                fidl::decode!(
12670                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
12671                    D,
12672                    val_ref,
12673                    decoder,
12674                    inner_offset,
12675                    inner_depth
12676                )?;
12677                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12678                {
12679                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12680                }
12681                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12682                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12683                }
12684            }
12685
12686            next_offset += envelope_size;
12687
12688            // Decode the remaining unknown envelopes.
12689            while next_offset < end_offset {
12690                _next_ordinal_to_read += 1;
12691                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12692                next_offset += envelope_size;
12693            }
12694
12695            Ok(())
12696        }
12697    }
12698
12699    impl WlanFullmacImplSaeHandshakeRespRequest {
12700        #[inline(always)]
12701        fn max_ordinal_present(&self) -> u64 {
12702            if let Some(_) = self.status_code {
12703                return 2;
12704            }
12705            if let Some(_) = self.peer_sta_address {
12706                return 1;
12707            }
12708            0
12709        }
12710    }
12711
12712    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
12713        type Borrowed<'a> = &'a Self;
12714        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12715            value
12716        }
12717    }
12718
12719    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSaeHandshakeRespRequest {
12720        type Owned = Self;
12721
12722        #[inline(always)]
12723        fn inline_align(_context: fidl::encoding::Context) -> usize {
12724            8
12725        }
12726
12727        #[inline(always)]
12728        fn inline_size(_context: fidl::encoding::Context) -> usize {
12729            16
12730        }
12731    }
12732
12733    unsafe impl<D: fidl::encoding::ResourceDialect>
12734        fidl::encoding::Encode<WlanFullmacImplSaeHandshakeRespRequest, D>
12735        for &WlanFullmacImplSaeHandshakeRespRequest
12736    {
12737        unsafe fn encode(
12738            self,
12739            encoder: &mut fidl::encoding::Encoder<'_, D>,
12740            offset: usize,
12741            mut depth: fidl::encoding::Depth,
12742        ) -> fidl::Result<()> {
12743            encoder.debug_check_bounds::<WlanFullmacImplSaeHandshakeRespRequest>(offset);
12744            // Vector header
12745            let max_ordinal: u64 = self.max_ordinal_present();
12746            encoder.write_num(max_ordinal, offset);
12747            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12748            // Calling encoder.out_of_line_offset(0) is not allowed.
12749            if max_ordinal == 0 {
12750                return Ok(());
12751            }
12752            depth.increment()?;
12753            let envelope_size = 8;
12754            let bytes_len = max_ordinal as usize * envelope_size;
12755            #[allow(unused_variables)]
12756            let offset = encoder.out_of_line_offset(bytes_len);
12757            let mut _prev_end_offset: usize = 0;
12758            if 1 > max_ordinal {
12759                return Ok(());
12760            }
12761
12762            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12763            // are envelope_size bytes.
12764            let cur_offset: usize = (1 - 1) * envelope_size;
12765
12766            // Zero reserved fields.
12767            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12768
12769            // Safety:
12770            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12771            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12772            //   envelope_size bytes, there is always sufficient room.
12773            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
12774                self.peer_sta_address
12775                    .as_ref()
12776                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
12777                encoder,
12778                offset + cur_offset,
12779                depth,
12780            )?;
12781
12782            _prev_end_offset = cur_offset + envelope_size;
12783            if 2 > max_ordinal {
12784                return Ok(());
12785            }
12786
12787            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12788            // are envelope_size bytes.
12789            let cur_offset: usize = (2 - 1) * envelope_size;
12790
12791            // Zero reserved fields.
12792            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12793
12794            // Safety:
12795            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12796            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12797            //   envelope_size bytes, there is always sufficient room.
12798            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
12799            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
12800            encoder, offset + cur_offset, depth
12801        )?;
12802
12803            _prev_end_offset = cur_offset + envelope_size;
12804
12805            Ok(())
12806        }
12807    }
12808
12809    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12810        for WlanFullmacImplSaeHandshakeRespRequest
12811    {
12812        #[inline(always)]
12813        fn new_empty() -> Self {
12814            Self::default()
12815        }
12816
12817        unsafe fn decode(
12818            &mut self,
12819            decoder: &mut fidl::encoding::Decoder<'_, D>,
12820            offset: usize,
12821            mut depth: fidl::encoding::Depth,
12822        ) -> fidl::Result<()> {
12823            decoder.debug_check_bounds::<Self>(offset);
12824            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12825                None => return Err(fidl::Error::NotNullable),
12826                Some(len) => len,
12827            };
12828            // Calling decoder.out_of_line_offset(0) is not allowed.
12829            if len == 0 {
12830                return Ok(());
12831            };
12832            depth.increment()?;
12833            let envelope_size = 8;
12834            let bytes_len = len * envelope_size;
12835            let offset = decoder.out_of_line_offset(bytes_len)?;
12836            // Decode the envelope for each type.
12837            let mut _next_ordinal_to_read = 0;
12838            let mut next_offset = offset;
12839            let end_offset = offset + bytes_len;
12840            _next_ordinal_to_read += 1;
12841            if next_offset >= end_offset {
12842                return Ok(());
12843            }
12844
12845            // Decode unknown envelopes for gaps in ordinals.
12846            while _next_ordinal_to_read < 1 {
12847                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12848                _next_ordinal_to_read += 1;
12849                next_offset += envelope_size;
12850            }
12851
12852            let next_out_of_line = decoder.next_out_of_line();
12853            let handles_before = decoder.remaining_handles();
12854            if let Some((inlined, num_bytes, num_handles)) =
12855                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12856            {
12857                let member_inline_size =
12858                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
12859                        decoder.context,
12860                    );
12861                if inlined != (member_inline_size <= 4) {
12862                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12863                }
12864                let inner_offset;
12865                let mut inner_depth = depth.clone();
12866                if inlined {
12867                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12868                    inner_offset = next_offset;
12869                } else {
12870                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12871                    inner_depth.increment()?;
12872                }
12873                let val_ref = self
12874                    .peer_sta_address
12875                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
12876                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
12877                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12878                {
12879                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12880                }
12881                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12882                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12883                }
12884            }
12885
12886            next_offset += envelope_size;
12887            _next_ordinal_to_read += 1;
12888            if next_offset >= end_offset {
12889                return Ok(());
12890            }
12891
12892            // Decode unknown envelopes for gaps in ordinals.
12893            while _next_ordinal_to_read < 2 {
12894                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12895                _next_ordinal_to_read += 1;
12896                next_offset += envelope_size;
12897            }
12898
12899            let next_out_of_line = decoder.next_out_of_line();
12900            let handles_before = decoder.remaining_handles();
12901            if let Some((inlined, num_bytes, num_handles)) =
12902                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12903            {
12904                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12905                if inlined != (member_inline_size <= 4) {
12906                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12907                }
12908                let inner_offset;
12909                let mut inner_depth = depth.clone();
12910                if inlined {
12911                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12912                    inner_offset = next_offset;
12913                } else {
12914                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12915                    inner_depth.increment()?;
12916                }
12917                let val_ref = self.status_code.get_or_insert_with(|| {
12918                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
12919                });
12920                fidl::decode!(
12921                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
12922                    D,
12923                    val_ref,
12924                    decoder,
12925                    inner_offset,
12926                    inner_depth
12927                )?;
12928                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12929                {
12930                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12931                }
12932                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12933                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12934                }
12935            }
12936
12937            next_offset += envelope_size;
12938
12939            // Decode the remaining unknown envelopes.
12940            while next_offset < end_offset {
12941                _next_ordinal_to_read += 1;
12942                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12943                next_offset += envelope_size;
12944            }
12945
12946            Ok(())
12947        }
12948    }
12949
12950    impl WlanFullmacImplSetApfPacketFilterEnabledRequest {
12951        #[inline(always)]
12952        fn max_ordinal_present(&self) -> u64 {
12953            if let Some(_) = self.enabled {
12954                return 1;
12955            }
12956            0
12957        }
12958    }
12959
12960    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetApfPacketFilterEnabledRequest {
12961        type Borrowed<'a> = &'a Self;
12962        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12963            value
12964        }
12965    }
12966
12967    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetApfPacketFilterEnabledRequest {
12968        type Owned = Self;
12969
12970        #[inline(always)]
12971        fn inline_align(_context: fidl::encoding::Context) -> usize {
12972            8
12973        }
12974
12975        #[inline(always)]
12976        fn inline_size(_context: fidl::encoding::Context) -> usize {
12977            16
12978        }
12979    }
12980
12981    unsafe impl<D: fidl::encoding::ResourceDialect>
12982        fidl::encoding::Encode<WlanFullmacImplSetApfPacketFilterEnabledRequest, D>
12983        for &WlanFullmacImplSetApfPacketFilterEnabledRequest
12984    {
12985        unsafe fn encode(
12986            self,
12987            encoder: &mut fidl::encoding::Encoder<'_, D>,
12988            offset: usize,
12989            mut depth: fidl::encoding::Depth,
12990        ) -> fidl::Result<()> {
12991            encoder.debug_check_bounds::<WlanFullmacImplSetApfPacketFilterEnabledRequest>(offset);
12992            // Vector header
12993            let max_ordinal: u64 = self.max_ordinal_present();
12994            encoder.write_num(max_ordinal, offset);
12995            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12996            // Calling encoder.out_of_line_offset(0) is not allowed.
12997            if max_ordinal == 0 {
12998                return Ok(());
12999            }
13000            depth.increment()?;
13001            let envelope_size = 8;
13002            let bytes_len = max_ordinal as usize * envelope_size;
13003            #[allow(unused_variables)]
13004            let offset = encoder.out_of_line_offset(bytes_len);
13005            let mut _prev_end_offset: usize = 0;
13006            if 1 > max_ordinal {
13007                return Ok(());
13008            }
13009
13010            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13011            // are envelope_size bytes.
13012            let cur_offset: usize = (1 - 1) * envelope_size;
13013
13014            // Zero reserved fields.
13015            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13016
13017            // Safety:
13018            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13019            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13020            //   envelope_size bytes, there is always sufficient room.
13021            fidl::encoding::encode_in_envelope_optional::<bool, D>(
13022                self.enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
13023                encoder,
13024                offset + cur_offset,
13025                depth,
13026            )?;
13027
13028            _prev_end_offset = cur_offset + envelope_size;
13029
13030            Ok(())
13031        }
13032    }
13033
13034    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13035        for WlanFullmacImplSetApfPacketFilterEnabledRequest
13036    {
13037        #[inline(always)]
13038        fn new_empty() -> Self {
13039            Self::default()
13040        }
13041
13042        unsafe fn decode(
13043            &mut self,
13044            decoder: &mut fidl::encoding::Decoder<'_, D>,
13045            offset: usize,
13046            mut depth: fidl::encoding::Depth,
13047        ) -> fidl::Result<()> {
13048            decoder.debug_check_bounds::<Self>(offset);
13049            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13050                None => return Err(fidl::Error::NotNullable),
13051                Some(len) => len,
13052            };
13053            // Calling decoder.out_of_line_offset(0) is not allowed.
13054            if len == 0 {
13055                return Ok(());
13056            };
13057            depth.increment()?;
13058            let envelope_size = 8;
13059            let bytes_len = len * envelope_size;
13060            let offset = decoder.out_of_line_offset(bytes_len)?;
13061            // Decode the envelope for each type.
13062            let mut _next_ordinal_to_read = 0;
13063            let mut next_offset = offset;
13064            let end_offset = offset + bytes_len;
13065            _next_ordinal_to_read += 1;
13066            if next_offset >= end_offset {
13067                return Ok(());
13068            }
13069
13070            // Decode unknown envelopes for gaps in ordinals.
13071            while _next_ordinal_to_read < 1 {
13072                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13073                _next_ordinal_to_read += 1;
13074                next_offset += envelope_size;
13075            }
13076
13077            let next_out_of_line = decoder.next_out_of_line();
13078            let handles_before = decoder.remaining_handles();
13079            if let Some((inlined, num_bytes, num_handles)) =
13080                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13081            {
13082                let member_inline_size =
13083                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13084                if inlined != (member_inline_size <= 4) {
13085                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13086                }
13087                let inner_offset;
13088                let mut inner_depth = depth.clone();
13089                if inlined {
13090                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13091                    inner_offset = next_offset;
13092                } else {
13093                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13094                    inner_depth.increment()?;
13095                }
13096                let val_ref = self.enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
13097                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13098                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13099                {
13100                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13101                }
13102                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13103                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13104                }
13105            }
13106
13107            next_offset += envelope_size;
13108
13109            // Decode the remaining unknown envelopes.
13110            while next_offset < end_offset {
13111                _next_ordinal_to_read += 1;
13112                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13113                next_offset += envelope_size;
13114            }
13115
13116            Ok(())
13117        }
13118    }
13119
13120    impl WlanFullmacImplSetKeysRequest {
13121        #[inline(always)]
13122        fn max_ordinal_present(&self) -> u64 {
13123            if let Some(_) = self.key_descriptors {
13124                return 2;
13125            }
13126            if let Some(_) = self.keylist {
13127                return 1;
13128            }
13129            0
13130        }
13131    }
13132
13133    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplSetKeysRequest {
13134        type Borrowed<'a> = &'a Self;
13135        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13136            value
13137        }
13138    }
13139
13140    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplSetKeysRequest {
13141        type Owned = Self;
13142
13143        #[inline(always)]
13144        fn inline_align(_context: fidl::encoding::Context) -> usize {
13145            8
13146        }
13147
13148        #[inline(always)]
13149        fn inline_size(_context: fidl::encoding::Context) -> usize {
13150            16
13151        }
13152    }
13153
13154    unsafe impl<D: fidl::encoding::ResourceDialect>
13155        fidl::encoding::Encode<WlanFullmacImplSetKeysRequest, D>
13156        for &WlanFullmacImplSetKeysRequest
13157    {
13158        unsafe fn encode(
13159            self,
13160            encoder: &mut fidl::encoding::Encoder<'_, D>,
13161            offset: usize,
13162            mut depth: fidl::encoding::Depth,
13163        ) -> fidl::Result<()> {
13164            encoder.debug_check_bounds::<WlanFullmacImplSetKeysRequest>(offset);
13165            // Vector header
13166            let max_ordinal: u64 = self.max_ordinal_present();
13167            encoder.write_num(max_ordinal, offset);
13168            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13169            // Calling encoder.out_of_line_offset(0) is not allowed.
13170            if max_ordinal == 0 {
13171                return Ok(());
13172            }
13173            depth.increment()?;
13174            let envelope_size = 8;
13175            let bytes_len = max_ordinal as usize * envelope_size;
13176            #[allow(unused_variables)]
13177            let offset = encoder.out_of_line_offset(bytes_len);
13178            let mut _prev_end_offset: usize = 0;
13179            if 1 > max_ordinal {
13180                return Ok(());
13181            }
13182
13183            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13184            // are envelope_size bytes.
13185            let cur_offset: usize = (1 - 1) * envelope_size;
13186
13187            // Zero reserved fields.
13188            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13189
13190            // Safety:
13191            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13192            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13193            //   envelope_size bytes, there is always sufficient room.
13194            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, 4>, D>(
13195            self.keylist.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, 4> as fidl::encoding::ValueTypeMarker>::borrow),
13196            encoder, offset + cur_offset, depth
13197        )?;
13198
13199            _prev_end_offset = cur_offset + envelope_size;
13200            if 2 > max_ordinal {
13201                return Ok(());
13202            }
13203
13204            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13205            // are envelope_size bytes.
13206            let cur_offset: usize = (2 - 1) * envelope_size;
13207
13208            // Zero reserved fields.
13209            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13210
13211            // Safety:
13212            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13213            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13214            //   envelope_size bytes, there is always sufficient room.
13215            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, 4>, D>(
13216            self.key_descriptors.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, 4> as fidl::encoding::ValueTypeMarker>::borrow),
13217            encoder, offset + cur_offset, depth
13218        )?;
13219
13220            _prev_end_offset = cur_offset + envelope_size;
13221
13222            Ok(())
13223        }
13224    }
13225
13226    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13227        for WlanFullmacImplSetKeysRequest
13228    {
13229        #[inline(always)]
13230        fn new_empty() -> Self {
13231            Self::default()
13232        }
13233
13234        unsafe fn decode(
13235            &mut self,
13236            decoder: &mut fidl::encoding::Decoder<'_, D>,
13237            offset: usize,
13238            mut depth: fidl::encoding::Depth,
13239        ) -> fidl::Result<()> {
13240            decoder.debug_check_bounds::<Self>(offset);
13241            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13242                None => return Err(fidl::Error::NotNullable),
13243                Some(len) => len,
13244            };
13245            // Calling decoder.out_of_line_offset(0) is not allowed.
13246            if len == 0 {
13247                return Ok(());
13248            };
13249            depth.increment()?;
13250            let envelope_size = 8;
13251            let bytes_len = len * envelope_size;
13252            let offset = decoder.out_of_line_offset(bytes_len)?;
13253            // Decode the envelope for each type.
13254            let mut _next_ordinal_to_read = 0;
13255            let mut next_offset = offset;
13256            let end_offset = offset + bytes_len;
13257            _next_ordinal_to_read += 1;
13258            if next_offset >= end_offset {
13259                return Ok(());
13260            }
13261
13262            // Decode unknown envelopes for gaps in ordinals.
13263            while _next_ordinal_to_read < 1 {
13264                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13265                _next_ordinal_to_read += 1;
13266                next_offset += envelope_size;
13267            }
13268
13269            let next_out_of_line = decoder.next_out_of_line();
13270            let handles_before = decoder.remaining_handles();
13271            if let Some((inlined, num_bytes, num_handles)) =
13272                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13273            {
13274                let member_inline_size = <fidl::encoding::Vector<
13275                    fidl_fuchsia_wlan_driver_common::WlanKeyConfig,
13276                    4,
13277                > as fidl::encoding::TypeMarker>::inline_size(
13278                    decoder.context
13279                );
13280                if inlined != (member_inline_size <= 4) {
13281                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13282                }
13283                let inner_offset;
13284                let mut inner_depth = depth.clone();
13285                if inlined {
13286                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13287                    inner_offset = next_offset;
13288                } else {
13289                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13290                    inner_depth.increment()?;
13291                }
13292                let val_ref =
13293                self.keylist.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, 4>, D));
13294                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_driver_common::WlanKeyConfig, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
13295                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13296                {
13297                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13298                }
13299                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13300                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13301                }
13302            }
13303
13304            next_offset += envelope_size;
13305            _next_ordinal_to_read += 1;
13306            if next_offset >= end_offset {
13307                return Ok(());
13308            }
13309
13310            // Decode unknown envelopes for gaps in ordinals.
13311            while _next_ordinal_to_read < 2 {
13312                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13313                _next_ordinal_to_read += 1;
13314                next_offset += envelope_size;
13315            }
13316
13317            let next_out_of_line = decoder.next_out_of_line();
13318            let handles_before = decoder.remaining_handles();
13319            if let Some((inlined, num_bytes, num_handles)) =
13320                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13321            {
13322                let member_inline_size = <fidl::encoding::Vector<
13323                    fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor,
13324                    4,
13325                > as fidl::encoding::TypeMarker>::inline_size(
13326                    decoder.context
13327                );
13328                if inlined != (member_inline_size <= 4) {
13329                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13330                }
13331                let inner_offset;
13332                let mut inner_depth = depth.clone();
13333                if inlined {
13334                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13335                    inner_offset = next_offset;
13336                } else {
13337                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13338                    inner_depth.increment()?;
13339                }
13340                let val_ref =
13341                self.key_descriptors.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, 4>, D));
13342                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::SetKeyDescriptor, 4>, D, val_ref, decoder, inner_offset, inner_depth)?;
13343                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13344                {
13345                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13346                }
13347                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13348                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13349                }
13350            }
13351
13352            next_offset += envelope_size;
13353
13354            // Decode the remaining unknown envelopes.
13355            while next_offset < end_offset {
13356                _next_ordinal_to_read += 1;
13357                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13358                next_offset += envelope_size;
13359            }
13360
13361            Ok(())
13362        }
13363    }
13364
13365    impl WlanFullmacImplStartBssRequest {
13366        #[inline(always)]
13367        fn max_ordinal_present(&self) -> u64 {
13368            if let Some(_) = self.vendor_ie {
13369                return 7;
13370            }
13371            if let Some(_) = self.rsne {
13372                return 6;
13373            }
13374            if let Some(_) = self.primary {
13375                return 5;
13376            }
13377            if let Some(_) = self.dtim_period {
13378                return 4;
13379            }
13380            if let Some(_) = self.beacon_period {
13381                return 3;
13382            }
13383            if let Some(_) = self.bss_type {
13384                return 2;
13385            }
13386            if let Some(_) = self.ssid {
13387                return 1;
13388            }
13389            0
13390        }
13391    }
13392
13393    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartBssRequest {
13394        type Borrowed<'a> = &'a Self;
13395        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13396            value
13397        }
13398    }
13399
13400    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartBssRequest {
13401        type Owned = Self;
13402
13403        #[inline(always)]
13404        fn inline_align(_context: fidl::encoding::Context) -> usize {
13405            8
13406        }
13407
13408        #[inline(always)]
13409        fn inline_size(_context: fidl::encoding::Context) -> usize {
13410            16
13411        }
13412    }
13413
13414    unsafe impl<D: fidl::encoding::ResourceDialect>
13415        fidl::encoding::Encode<WlanFullmacImplStartBssRequest, D>
13416        for &WlanFullmacImplStartBssRequest
13417    {
13418        unsafe fn encode(
13419            self,
13420            encoder: &mut fidl::encoding::Encoder<'_, D>,
13421            offset: usize,
13422            mut depth: fidl::encoding::Depth,
13423        ) -> fidl::Result<()> {
13424            encoder.debug_check_bounds::<WlanFullmacImplStartBssRequest>(offset);
13425            // Vector header
13426            let max_ordinal: u64 = self.max_ordinal_present();
13427            encoder.write_num(max_ordinal, offset);
13428            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13429            // Calling encoder.out_of_line_offset(0) is not allowed.
13430            if max_ordinal == 0 {
13431                return Ok(());
13432            }
13433            depth.increment()?;
13434            let envelope_size = 8;
13435            let bytes_len = max_ordinal as usize * envelope_size;
13436            #[allow(unused_variables)]
13437            let offset = encoder.out_of_line_offset(bytes_len);
13438            let mut _prev_end_offset: usize = 0;
13439            if 1 > max_ordinal {
13440                return Ok(());
13441            }
13442
13443            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13444            // are envelope_size bytes.
13445            let cur_offset: usize = (1 - 1) * envelope_size;
13446
13447            // Zero reserved fields.
13448            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13449
13450            // Safety:
13451            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13452            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13453            //   envelope_size bytes, there is always sufficient room.
13454            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
13455                self.ssid.as_ref().map(
13456                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
13457                ),
13458                encoder,
13459                offset + cur_offset,
13460                depth,
13461            )?;
13462
13463            _prev_end_offset = cur_offset + envelope_size;
13464            if 2 > max_ordinal {
13465                return Ok(());
13466            }
13467
13468            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13469            // are envelope_size bytes.
13470            let cur_offset: usize = (2 - 1) * envelope_size;
13471
13472            // Zero reserved fields.
13473            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13474
13475            // Safety:
13476            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13477            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13478            //   envelope_size bytes, there is always sufficient room.
13479            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::BssType, D>(
13480            self.bss_type.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::BssType as fidl::encoding::ValueTypeMarker>::borrow),
13481            encoder, offset + cur_offset, depth
13482        )?;
13483
13484            _prev_end_offset = cur_offset + envelope_size;
13485            if 3 > max_ordinal {
13486                return Ok(());
13487            }
13488
13489            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13490            // are envelope_size bytes.
13491            let cur_offset: usize = (3 - 1) * envelope_size;
13492
13493            // Zero reserved fields.
13494            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13495
13496            // Safety:
13497            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13498            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13499            //   envelope_size bytes, there is always sufficient room.
13500            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13501                self.beacon_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13502                encoder,
13503                offset + cur_offset,
13504                depth,
13505            )?;
13506
13507            _prev_end_offset = cur_offset + envelope_size;
13508            if 4 > max_ordinal {
13509                return Ok(());
13510            }
13511
13512            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13513            // are envelope_size bytes.
13514            let cur_offset: usize = (4 - 1) * envelope_size;
13515
13516            // Zero reserved fields.
13517            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13518
13519            // Safety:
13520            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13521            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13522            //   envelope_size bytes, there is always sufficient room.
13523            fidl::encoding::encode_in_envelope_optional::<u32, D>(
13524                self.dtim_period.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
13525                encoder,
13526                offset + cur_offset,
13527                depth,
13528            )?;
13529
13530            _prev_end_offset = cur_offset + envelope_size;
13531            if 5 > max_ordinal {
13532                return Ok(());
13533            }
13534
13535            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13536            // are envelope_size bytes.
13537            let cur_offset: usize = (5 - 1) * envelope_size;
13538
13539            // Zero reserved fields.
13540            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13541
13542            // Safety:
13543            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13544            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13545            //   envelope_size bytes, there is always sufficient room.
13546            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D>(
13547            self.primary.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::ValueTypeMarker>::borrow),
13548            encoder, offset + cur_offset, depth
13549        )?;
13550
13551            _prev_end_offset = cur_offset + envelope_size;
13552            if 6 > max_ordinal {
13553                return Ok(());
13554            }
13555
13556            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13557            // are envelope_size bytes.
13558            let cur_offset: usize = (6 - 1) * envelope_size;
13559
13560            // Zero reserved fields.
13561            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13562
13563            // Safety:
13564            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13565            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13566            //   envelope_size bytes, there is always sufficient room.
13567            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 257>, D>(
13568                self.rsne.as_ref().map(
13569                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow,
13570                ),
13571                encoder,
13572                offset + cur_offset,
13573                depth,
13574            )?;
13575
13576            _prev_end_offset = cur_offset + envelope_size;
13577            if 7 > max_ordinal {
13578                return Ok(());
13579            }
13580
13581            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13582            // are envelope_size bytes.
13583            let cur_offset: usize = (7 - 1) * envelope_size;
13584
13585            // Zero reserved fields.
13586            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13587
13588            // Safety:
13589            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13590            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13591            //   envelope_size bytes, there is always sufficient room.
13592            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 514>, D>(
13593                self.vendor_ie.as_ref().map(
13594                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::ValueTypeMarker>::borrow,
13595                ),
13596                encoder,
13597                offset + cur_offset,
13598                depth,
13599            )?;
13600
13601            _prev_end_offset = cur_offset + envelope_size;
13602
13603            Ok(())
13604        }
13605    }
13606
13607    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13608        for WlanFullmacImplStartBssRequest
13609    {
13610        #[inline(always)]
13611        fn new_empty() -> Self {
13612            Self::default()
13613        }
13614
13615        unsafe fn decode(
13616            &mut self,
13617            decoder: &mut fidl::encoding::Decoder<'_, D>,
13618            offset: usize,
13619            mut depth: fidl::encoding::Depth,
13620        ) -> fidl::Result<()> {
13621            decoder.debug_check_bounds::<Self>(offset);
13622            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13623                None => return Err(fidl::Error::NotNullable),
13624                Some(len) => len,
13625            };
13626            // Calling decoder.out_of_line_offset(0) is not allowed.
13627            if len == 0 {
13628                return Ok(());
13629            };
13630            depth.increment()?;
13631            let envelope_size = 8;
13632            let bytes_len = len * envelope_size;
13633            let offset = decoder.out_of_line_offset(bytes_len)?;
13634            // Decode the envelope for each type.
13635            let mut _next_ordinal_to_read = 0;
13636            let mut next_offset = offset;
13637            let end_offset = offset + bytes_len;
13638            _next_ordinal_to_read += 1;
13639            if next_offset >= end_offset {
13640                return Ok(());
13641            }
13642
13643            // Decode unknown envelopes for gaps in ordinals.
13644            while _next_ordinal_to_read < 1 {
13645                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13646                _next_ordinal_to_read += 1;
13647                next_offset += envelope_size;
13648            }
13649
13650            let next_out_of_line = decoder.next_out_of_line();
13651            let handles_before = decoder.remaining_handles();
13652            if let Some((inlined, num_bytes, num_handles)) =
13653                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13654            {
13655                let member_inline_size =
13656                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
13657                        decoder.context,
13658                    );
13659                if inlined != (member_inline_size <= 4) {
13660                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13661                }
13662                let inner_offset;
13663                let mut inner_depth = depth.clone();
13664                if inlined {
13665                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13666                    inner_offset = next_offset;
13667                } else {
13668                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13669                    inner_depth.increment()?;
13670                }
13671                let val_ref = self
13672                    .ssid
13673                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
13674                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
13675                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13676                {
13677                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13678                }
13679                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13680                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13681                }
13682            }
13683
13684            next_offset += envelope_size;
13685            _next_ordinal_to_read += 1;
13686            if next_offset >= end_offset {
13687                return Ok(());
13688            }
13689
13690            // Decode unknown envelopes for gaps in ordinals.
13691            while _next_ordinal_to_read < 2 {
13692                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13693                _next_ordinal_to_read += 1;
13694                next_offset += envelope_size;
13695            }
13696
13697            let next_out_of_line = decoder.next_out_of_line();
13698            let handles_before = decoder.remaining_handles();
13699            if let Some((inlined, num_bytes, num_handles)) =
13700                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13701            {
13702                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::BssType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13703                if inlined != (member_inline_size <= 4) {
13704                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13705                }
13706                let inner_offset;
13707                let mut inner_depth = depth.clone();
13708                if inlined {
13709                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13710                    inner_offset = next_offset;
13711                } else {
13712                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13713                    inner_depth.increment()?;
13714                }
13715                let val_ref = self.bss_type.get_or_insert_with(|| {
13716                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssType, D)
13717                });
13718                fidl::decode!(
13719                    fidl_fuchsia_wlan_ieee80211_common::BssType,
13720                    D,
13721                    val_ref,
13722                    decoder,
13723                    inner_offset,
13724                    inner_depth
13725                )?;
13726                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13727                {
13728                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13729                }
13730                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13731                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13732                }
13733            }
13734
13735            next_offset += envelope_size;
13736            _next_ordinal_to_read += 1;
13737            if next_offset >= end_offset {
13738                return Ok(());
13739            }
13740
13741            // Decode unknown envelopes for gaps in ordinals.
13742            while _next_ordinal_to_read < 3 {
13743                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13744                _next_ordinal_to_read += 1;
13745                next_offset += envelope_size;
13746            }
13747
13748            let next_out_of_line = decoder.next_out_of_line();
13749            let handles_before = decoder.remaining_handles();
13750            if let Some((inlined, num_bytes, num_handles)) =
13751                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13752            {
13753                let member_inline_size =
13754                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13755                if inlined != (member_inline_size <= 4) {
13756                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13757                }
13758                let inner_offset;
13759                let mut inner_depth = depth.clone();
13760                if inlined {
13761                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13762                    inner_offset = next_offset;
13763                } else {
13764                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13765                    inner_depth.increment()?;
13766                }
13767                let val_ref = self.beacon_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
13768                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13769                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13770                {
13771                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13772                }
13773                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13774                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13775                }
13776            }
13777
13778            next_offset += envelope_size;
13779            _next_ordinal_to_read += 1;
13780            if next_offset >= end_offset {
13781                return Ok(());
13782            }
13783
13784            // Decode unknown envelopes for gaps in ordinals.
13785            while _next_ordinal_to_read < 4 {
13786                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13787                _next_ordinal_to_read += 1;
13788                next_offset += envelope_size;
13789            }
13790
13791            let next_out_of_line = decoder.next_out_of_line();
13792            let handles_before = decoder.remaining_handles();
13793            if let Some((inlined, num_bytes, num_handles)) =
13794                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13795            {
13796                let member_inline_size =
13797                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13798                if inlined != (member_inline_size <= 4) {
13799                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13800                }
13801                let inner_offset;
13802                let mut inner_depth = depth.clone();
13803                if inlined {
13804                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13805                    inner_offset = next_offset;
13806                } else {
13807                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13808                    inner_depth.increment()?;
13809                }
13810                let val_ref = self.dtim_period.get_or_insert_with(|| fidl::new_empty!(u32, D));
13811                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
13812                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13813                {
13814                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13815                }
13816                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13817                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13818                }
13819            }
13820
13821            next_offset += envelope_size;
13822            _next_ordinal_to_read += 1;
13823            if next_offset >= end_offset {
13824                return Ok(());
13825            }
13826
13827            // Decode unknown envelopes for gaps in ordinals.
13828            while _next_ordinal_to_read < 5 {
13829                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13830                _next_ordinal_to_read += 1;
13831                next_offset += envelope_size;
13832            }
13833
13834            let next_out_of_line = decoder.next_out_of_line();
13835            let handles_before = decoder.remaining_handles();
13836            if let Some((inlined, num_bytes, num_handles)) =
13837                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13838            {
13839                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13840                if inlined != (member_inline_size <= 4) {
13841                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13842                }
13843                let inner_offset;
13844                let mut inner_depth = depth.clone();
13845                if inlined {
13846                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13847                    inner_offset = next_offset;
13848                } else {
13849                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13850                    inner_depth.increment()?;
13851                }
13852                let val_ref = self.primary.get_or_insert_with(|| {
13853                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D)
13854                });
13855                fidl::decode!(
13856                    fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
13857                    D,
13858                    val_ref,
13859                    decoder,
13860                    inner_offset,
13861                    inner_depth
13862                )?;
13863                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13864                {
13865                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13866                }
13867                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13868                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13869                }
13870            }
13871
13872            next_offset += envelope_size;
13873            _next_ordinal_to_read += 1;
13874            if next_offset >= end_offset {
13875                return Ok(());
13876            }
13877
13878            // Decode unknown envelopes for gaps in ordinals.
13879            while _next_ordinal_to_read < 6 {
13880                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13881                _next_ordinal_to_read += 1;
13882                next_offset += envelope_size;
13883            }
13884
13885            let next_out_of_line = decoder.next_out_of_line();
13886            let handles_before = decoder.remaining_handles();
13887            if let Some((inlined, num_bytes, num_handles)) =
13888                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13889            {
13890                let member_inline_size =
13891                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
13892                        decoder.context,
13893                    );
13894                if inlined != (member_inline_size <= 4) {
13895                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13896                }
13897                let inner_offset;
13898                let mut inner_depth = depth.clone();
13899                if inlined {
13900                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13901                    inner_offset = next_offset;
13902                } else {
13903                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13904                    inner_depth.increment()?;
13905                }
13906                let val_ref = self
13907                    .rsne
13908                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D));
13909                fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val_ref, decoder, inner_offset, inner_depth)?;
13910                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13911                {
13912                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13913                }
13914                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13915                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13916                }
13917            }
13918
13919            next_offset += envelope_size;
13920            _next_ordinal_to_read += 1;
13921            if next_offset >= end_offset {
13922                return Ok(());
13923            }
13924
13925            // Decode unknown envelopes for gaps in ordinals.
13926            while _next_ordinal_to_read < 7 {
13927                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13928                _next_ordinal_to_read += 1;
13929                next_offset += envelope_size;
13930            }
13931
13932            let next_out_of_line = decoder.next_out_of_line();
13933            let handles_before = decoder.remaining_handles();
13934            if let Some((inlined, num_bytes, num_handles)) =
13935                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13936            {
13937                let member_inline_size =
13938                    <fidl::encoding::Vector<u8, 514> as fidl::encoding::TypeMarker>::inline_size(
13939                        decoder.context,
13940                    );
13941                if inlined != (member_inline_size <= 4) {
13942                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13943                }
13944                let inner_offset;
13945                let mut inner_depth = depth.clone();
13946                if inlined {
13947                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13948                    inner_offset = next_offset;
13949                } else {
13950                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13951                    inner_depth.increment()?;
13952                }
13953                let val_ref = self
13954                    .vendor_ie
13955                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 514>, D));
13956                fidl::decode!(fidl::encoding::Vector<u8, 514>, D, val_ref, decoder, inner_offset, inner_depth)?;
13957                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13958                {
13959                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13960                }
13961                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13962                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13963                }
13964            }
13965
13966            next_offset += envelope_size;
13967
13968            // Decode the remaining unknown envelopes.
13969            while next_offset < end_offset {
13970                _next_ordinal_to_read += 1;
13971                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13972                next_offset += envelope_size;
13973            }
13974
13975            Ok(())
13976        }
13977    }
13978
13979    impl WlanFullmacImplStartRssiMonitorRequest {
13980        #[inline(always)]
13981        fn max_ordinal_present(&self) -> u64 {
13982            if let Some(_) = self.max_rssi_dbm {
13983                return 2;
13984            }
13985            if let Some(_) = self.min_rssi_dbm {
13986                return 1;
13987            }
13988            0
13989        }
13990    }
13991
13992    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartRssiMonitorRequest {
13993        type Borrowed<'a> = &'a Self;
13994        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13995            value
13996        }
13997    }
13998
13999    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartRssiMonitorRequest {
14000        type Owned = Self;
14001
14002        #[inline(always)]
14003        fn inline_align(_context: fidl::encoding::Context) -> usize {
14004            8
14005        }
14006
14007        #[inline(always)]
14008        fn inline_size(_context: fidl::encoding::Context) -> usize {
14009            16
14010        }
14011    }
14012
14013    unsafe impl<D: fidl::encoding::ResourceDialect>
14014        fidl::encoding::Encode<WlanFullmacImplStartRssiMonitorRequest, D>
14015        for &WlanFullmacImplStartRssiMonitorRequest
14016    {
14017        unsafe fn encode(
14018            self,
14019            encoder: &mut fidl::encoding::Encoder<'_, D>,
14020            offset: usize,
14021            mut depth: fidl::encoding::Depth,
14022        ) -> fidl::Result<()> {
14023            encoder.debug_check_bounds::<WlanFullmacImplStartRssiMonitorRequest>(offset);
14024            // Vector header
14025            let max_ordinal: u64 = self.max_ordinal_present();
14026            encoder.write_num(max_ordinal, offset);
14027            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14028            // Calling encoder.out_of_line_offset(0) is not allowed.
14029            if max_ordinal == 0 {
14030                return Ok(());
14031            }
14032            depth.increment()?;
14033            let envelope_size = 8;
14034            let bytes_len = max_ordinal as usize * envelope_size;
14035            #[allow(unused_variables)]
14036            let offset = encoder.out_of_line_offset(bytes_len);
14037            let mut _prev_end_offset: usize = 0;
14038            if 1 > 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 = (1 - 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::<i8, D>(
14054                self.min_rssi_dbm.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
14055                encoder,
14056                offset + cur_offset,
14057                depth,
14058            )?;
14059
14060            _prev_end_offset = cur_offset + envelope_size;
14061            if 2 > max_ordinal {
14062                return Ok(());
14063            }
14064
14065            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14066            // are envelope_size bytes.
14067            let cur_offset: usize = (2 - 1) * envelope_size;
14068
14069            // Zero reserved fields.
14070            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14071
14072            // Safety:
14073            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14074            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14075            //   envelope_size bytes, there is always sufficient room.
14076            fidl::encoding::encode_in_envelope_optional::<i8, D>(
14077                self.max_rssi_dbm.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
14078                encoder,
14079                offset + cur_offset,
14080                depth,
14081            )?;
14082
14083            _prev_end_offset = cur_offset + envelope_size;
14084
14085            Ok(())
14086        }
14087    }
14088
14089    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14090        for WlanFullmacImplStartRssiMonitorRequest
14091    {
14092        #[inline(always)]
14093        fn new_empty() -> Self {
14094            Self::default()
14095        }
14096
14097        unsafe fn decode(
14098            &mut self,
14099            decoder: &mut fidl::encoding::Decoder<'_, D>,
14100            offset: usize,
14101            mut depth: fidl::encoding::Depth,
14102        ) -> fidl::Result<()> {
14103            decoder.debug_check_bounds::<Self>(offset);
14104            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14105                None => return Err(fidl::Error::NotNullable),
14106                Some(len) => len,
14107            };
14108            // Calling decoder.out_of_line_offset(0) is not allowed.
14109            if len == 0 {
14110                return Ok(());
14111            };
14112            depth.increment()?;
14113            let envelope_size = 8;
14114            let bytes_len = len * envelope_size;
14115            let offset = decoder.out_of_line_offset(bytes_len)?;
14116            // Decode the envelope for each type.
14117            let mut _next_ordinal_to_read = 0;
14118            let mut next_offset = offset;
14119            let end_offset = offset + bytes_len;
14120            _next_ordinal_to_read += 1;
14121            if next_offset >= end_offset {
14122                return Ok(());
14123            }
14124
14125            // Decode unknown envelopes for gaps in ordinals.
14126            while _next_ordinal_to_read < 1 {
14127                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14128                _next_ordinal_to_read += 1;
14129                next_offset += envelope_size;
14130            }
14131
14132            let next_out_of_line = decoder.next_out_of_line();
14133            let handles_before = decoder.remaining_handles();
14134            if let Some((inlined, num_bytes, num_handles)) =
14135                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14136            {
14137                let member_inline_size =
14138                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14139                if inlined != (member_inline_size <= 4) {
14140                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14141                }
14142                let inner_offset;
14143                let mut inner_depth = depth.clone();
14144                if inlined {
14145                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14146                    inner_offset = next_offset;
14147                } else {
14148                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14149                    inner_depth.increment()?;
14150                }
14151                let val_ref = self.min_rssi_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
14152                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
14153                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14154                {
14155                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14156                }
14157                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14158                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14159                }
14160            }
14161
14162            next_offset += envelope_size;
14163            _next_ordinal_to_read += 1;
14164            if next_offset >= end_offset {
14165                return Ok(());
14166            }
14167
14168            // Decode unknown envelopes for gaps in ordinals.
14169            while _next_ordinal_to_read < 2 {
14170                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14171                _next_ordinal_to_read += 1;
14172                next_offset += envelope_size;
14173            }
14174
14175            let next_out_of_line = decoder.next_out_of_line();
14176            let handles_before = decoder.remaining_handles();
14177            if let Some((inlined, num_bytes, num_handles)) =
14178                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14179            {
14180                let member_inline_size =
14181                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14182                if inlined != (member_inline_size <= 4) {
14183                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14184                }
14185                let inner_offset;
14186                let mut inner_depth = depth.clone();
14187                if inlined {
14188                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14189                    inner_offset = next_offset;
14190                } else {
14191                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14192                    inner_depth.increment()?;
14193                }
14194                let val_ref = self.max_rssi_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
14195                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
14196                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14197                {
14198                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14199                }
14200                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14201                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14202                }
14203            }
14204
14205            next_offset += envelope_size;
14206
14207            // Decode the remaining unknown envelopes.
14208            while next_offset < end_offset {
14209                _next_ordinal_to_read += 1;
14210                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14211                next_offset += envelope_size;
14212            }
14213
14214            Ok(())
14215        }
14216    }
14217
14218    impl WlanFullmacImplStartScanRequest {
14219        #[inline(always)]
14220        fn max_ordinal_present(&self) -> u64 {
14221            if let Some(_) = self.max_channel_time {
14222                return 6;
14223            }
14224            if let Some(_) = self.min_channel_time {
14225                return 5;
14226            }
14227            if let Some(_) = self.ssids {
14228                return 4;
14229            }
14230            if let Some(_) = self.channels {
14231                return 3;
14232            }
14233            if let Some(_) = self.scan_type {
14234                return 2;
14235            }
14236            if let Some(_) = self.txn_id {
14237                return 1;
14238            }
14239            0
14240        }
14241    }
14242
14243    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartScanRequest {
14244        type Borrowed<'a> = &'a Self;
14245        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14246            value
14247        }
14248    }
14249
14250    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartScanRequest {
14251        type Owned = Self;
14252
14253        #[inline(always)]
14254        fn inline_align(_context: fidl::encoding::Context) -> usize {
14255            8
14256        }
14257
14258        #[inline(always)]
14259        fn inline_size(_context: fidl::encoding::Context) -> usize {
14260            16
14261        }
14262    }
14263
14264    unsafe impl<D: fidl::encoding::ResourceDialect>
14265        fidl::encoding::Encode<WlanFullmacImplStartScanRequest, D>
14266        for &WlanFullmacImplStartScanRequest
14267    {
14268        unsafe fn encode(
14269            self,
14270            encoder: &mut fidl::encoding::Encoder<'_, D>,
14271            offset: usize,
14272            mut depth: fidl::encoding::Depth,
14273        ) -> fidl::Result<()> {
14274            encoder.debug_check_bounds::<WlanFullmacImplStartScanRequest>(offset);
14275            // Vector header
14276            let max_ordinal: u64 = self.max_ordinal_present();
14277            encoder.write_num(max_ordinal, offset);
14278            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14279            // Calling encoder.out_of_line_offset(0) is not allowed.
14280            if max_ordinal == 0 {
14281                return Ok(());
14282            }
14283            depth.increment()?;
14284            let envelope_size = 8;
14285            let bytes_len = max_ordinal as usize * envelope_size;
14286            #[allow(unused_variables)]
14287            let offset = encoder.out_of_line_offset(bytes_len);
14288            let mut _prev_end_offset: usize = 0;
14289            if 1 > max_ordinal {
14290                return Ok(());
14291            }
14292
14293            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14294            // are envelope_size bytes.
14295            let cur_offset: usize = (1 - 1) * envelope_size;
14296
14297            // Zero reserved fields.
14298            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14299
14300            // Safety:
14301            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14302            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14303            //   envelope_size bytes, there is always sufficient room.
14304            fidl::encoding::encode_in_envelope_optional::<u64, D>(
14305                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
14306                encoder,
14307                offset + cur_offset,
14308                depth,
14309            )?;
14310
14311            _prev_end_offset = cur_offset + envelope_size;
14312            if 2 > max_ordinal {
14313                return Ok(());
14314            }
14315
14316            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14317            // are envelope_size bytes.
14318            let cur_offset: usize = (2 - 1) * envelope_size;
14319
14320            // Zero reserved fields.
14321            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14322
14323            // Safety:
14324            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14325            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14326            //   envelope_size bytes, there is always sufficient room.
14327            fidl::encoding::encode_in_envelope_optional::<WlanScanType, D>(
14328                self.scan_type
14329                    .as_ref()
14330                    .map(<WlanScanType as fidl::encoding::ValueTypeMarker>::borrow),
14331                encoder,
14332                offset + cur_offset,
14333                depth,
14334            )?;
14335
14336            _prev_end_offset = cur_offset + envelope_size;
14337            if 3 > max_ordinal {
14338                return Ok(());
14339            }
14340
14341            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14342            // are envelope_size bytes.
14343            let cur_offset: usize = (3 - 1) * envelope_size;
14344
14345            // Zero reserved fields.
14346            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14347
14348            // Safety:
14349            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14350            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14351            //   envelope_size bytes, there is always sufficient room.
14352            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D>(
14353            self.channels.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256> as fidl::encoding::ValueTypeMarker>::borrow),
14354            encoder, offset + cur_offset, depth
14355        )?;
14356
14357            _prev_end_offset = cur_offset + envelope_size;
14358            if 4 > max_ordinal {
14359                return Ok(());
14360            }
14361
14362            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14363            // are envelope_size bytes.
14364            let cur_offset: usize = (4 - 1) * envelope_size;
14365
14366            // Zero reserved fields.
14367            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14368
14369            // Safety:
14370            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14371            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14372            //   envelope_size bytes, there is always sufficient room.
14373            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>(
14374            self.ssids.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow),
14375            encoder, offset + cur_offset, depth
14376        )?;
14377
14378            _prev_end_offset = cur_offset + envelope_size;
14379            if 5 > max_ordinal {
14380                return Ok(());
14381            }
14382
14383            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14384            // are envelope_size bytes.
14385            let cur_offset: usize = (5 - 1) * envelope_size;
14386
14387            // Zero reserved fields.
14388            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14389
14390            // Safety:
14391            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14392            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14393            //   envelope_size bytes, there is always sufficient room.
14394            fidl::encoding::encode_in_envelope_optional::<u32, D>(
14395                self.min_channel_time
14396                    .as_ref()
14397                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
14398                encoder,
14399                offset + cur_offset,
14400                depth,
14401            )?;
14402
14403            _prev_end_offset = cur_offset + envelope_size;
14404            if 6 > max_ordinal {
14405                return Ok(());
14406            }
14407
14408            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14409            // are envelope_size bytes.
14410            let cur_offset: usize = (6 - 1) * envelope_size;
14411
14412            // Zero reserved fields.
14413            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14414
14415            // Safety:
14416            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14417            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14418            //   envelope_size bytes, there is always sufficient room.
14419            fidl::encoding::encode_in_envelope_optional::<u32, D>(
14420                self.max_channel_time
14421                    .as_ref()
14422                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
14423                encoder,
14424                offset + cur_offset,
14425                depth,
14426            )?;
14427
14428            _prev_end_offset = cur_offset + envelope_size;
14429
14430            Ok(())
14431        }
14432    }
14433
14434    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14435        for WlanFullmacImplStartScanRequest
14436    {
14437        #[inline(always)]
14438        fn new_empty() -> Self {
14439            Self::default()
14440        }
14441
14442        unsafe fn decode(
14443            &mut self,
14444            decoder: &mut fidl::encoding::Decoder<'_, D>,
14445            offset: usize,
14446            mut depth: fidl::encoding::Depth,
14447        ) -> fidl::Result<()> {
14448            decoder.debug_check_bounds::<Self>(offset);
14449            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14450                None => return Err(fidl::Error::NotNullable),
14451                Some(len) => len,
14452            };
14453            // Calling decoder.out_of_line_offset(0) is not allowed.
14454            if len == 0 {
14455                return Ok(());
14456            };
14457            depth.increment()?;
14458            let envelope_size = 8;
14459            let bytes_len = len * envelope_size;
14460            let offset = decoder.out_of_line_offset(bytes_len)?;
14461            // Decode the envelope for each type.
14462            let mut _next_ordinal_to_read = 0;
14463            let mut next_offset = offset;
14464            let end_offset = offset + bytes_len;
14465            _next_ordinal_to_read += 1;
14466            if next_offset >= end_offset {
14467                return Ok(());
14468            }
14469
14470            // Decode unknown envelopes for gaps in ordinals.
14471            while _next_ordinal_to_read < 1 {
14472                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14473                _next_ordinal_to_read += 1;
14474                next_offset += envelope_size;
14475            }
14476
14477            let next_out_of_line = decoder.next_out_of_line();
14478            let handles_before = decoder.remaining_handles();
14479            if let Some((inlined, num_bytes, num_handles)) =
14480                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14481            {
14482                let member_inline_size =
14483                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14484                if inlined != (member_inline_size <= 4) {
14485                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14486                }
14487                let inner_offset;
14488                let mut inner_depth = depth.clone();
14489                if inlined {
14490                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14491                    inner_offset = next_offset;
14492                } else {
14493                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14494                    inner_depth.increment()?;
14495                }
14496                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
14497                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
14498                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14499                {
14500                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14501                }
14502                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14503                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14504                }
14505            }
14506
14507            next_offset += envelope_size;
14508            _next_ordinal_to_read += 1;
14509            if next_offset >= end_offset {
14510                return Ok(());
14511            }
14512
14513            // Decode unknown envelopes for gaps in ordinals.
14514            while _next_ordinal_to_read < 2 {
14515                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14516                _next_ordinal_to_read += 1;
14517                next_offset += envelope_size;
14518            }
14519
14520            let next_out_of_line = decoder.next_out_of_line();
14521            let handles_before = decoder.remaining_handles();
14522            if let Some((inlined, num_bytes, num_handles)) =
14523                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14524            {
14525                let member_inline_size =
14526                    <WlanScanType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14527                if inlined != (member_inline_size <= 4) {
14528                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14529                }
14530                let inner_offset;
14531                let mut inner_depth = depth.clone();
14532                if inlined {
14533                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14534                    inner_offset = next_offset;
14535                } else {
14536                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14537                    inner_depth.increment()?;
14538                }
14539                let val_ref =
14540                    self.scan_type.get_or_insert_with(|| fidl::new_empty!(WlanScanType, D));
14541                fidl::decode!(WlanScanType, D, val_ref, decoder, inner_offset, inner_depth)?;
14542                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14543                {
14544                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14545                }
14546                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14547                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14548                }
14549            }
14550
14551            next_offset += envelope_size;
14552            _next_ordinal_to_read += 1;
14553            if next_offset >= end_offset {
14554                return Ok(());
14555            }
14556
14557            // Decode unknown envelopes for gaps in ordinals.
14558            while _next_ordinal_to_read < 3 {
14559                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14560                _next_ordinal_to_read += 1;
14561                next_offset += envelope_size;
14562            }
14563
14564            let next_out_of_line = decoder.next_out_of_line();
14565            let handles_before = decoder.remaining_handles();
14566            if let Some((inlined, num_bytes, num_handles)) =
14567                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14568            {
14569                let member_inline_size = <fidl::encoding::Vector<
14570                    fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
14571                    256,
14572                > as fidl::encoding::TypeMarker>::inline_size(
14573                    decoder.context
14574                );
14575                if inlined != (member_inline_size <= 4) {
14576                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14577                }
14578                let inner_offset;
14579                let mut inner_depth = depth.clone();
14580                if inlined {
14581                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14582                    inner_offset = next_offset;
14583                } else {
14584                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14585                    inner_depth.increment()?;
14586                }
14587                let val_ref =
14588                self.channels.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D));
14589                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D, val_ref, decoder, inner_offset, inner_depth)?;
14590                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14591                {
14592                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14593                }
14594                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14595                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14596                }
14597            }
14598
14599            next_offset += envelope_size;
14600            _next_ordinal_to_read += 1;
14601            if next_offset >= end_offset {
14602                return Ok(());
14603            }
14604
14605            // Decode unknown envelopes for gaps in ordinals.
14606            while _next_ordinal_to_read < 4 {
14607                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14608                _next_ordinal_to_read += 1;
14609                next_offset += envelope_size;
14610            }
14611
14612            let next_out_of_line = decoder.next_out_of_line();
14613            let handles_before = decoder.remaining_handles();
14614            if let Some((inlined, num_bytes, num_handles)) =
14615                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14616            {
14617                let member_inline_size = <fidl::encoding::UnboundedVector<
14618                    fidl::encoding::Vector<u8, 32>,
14619                > as fidl::encoding::TypeMarker>::inline_size(
14620                    decoder.context
14621                );
14622                if inlined != (member_inline_size <= 4) {
14623                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14624                }
14625                let inner_offset;
14626                let mut inner_depth = depth.clone();
14627                if inlined {
14628                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14629                    inner_offset = next_offset;
14630                } else {
14631                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14632                    inner_depth.increment()?;
14633                }
14634                let val_ref = self.ssids.get_or_insert_with(|| {
14635                    fidl::new_empty!(
14636                        fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
14637                        D
14638                    )
14639                });
14640                fidl::decode!(
14641                    fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
14642                    D,
14643                    val_ref,
14644                    decoder,
14645                    inner_offset,
14646                    inner_depth
14647                )?;
14648                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14649                {
14650                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14651                }
14652                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14653                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14654                }
14655            }
14656
14657            next_offset += envelope_size;
14658            _next_ordinal_to_read += 1;
14659            if next_offset >= end_offset {
14660                return Ok(());
14661            }
14662
14663            // Decode unknown envelopes for gaps in ordinals.
14664            while _next_ordinal_to_read < 5 {
14665                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14666                _next_ordinal_to_read += 1;
14667                next_offset += envelope_size;
14668            }
14669
14670            let next_out_of_line = decoder.next_out_of_line();
14671            let handles_before = decoder.remaining_handles();
14672            if let Some((inlined, num_bytes, num_handles)) =
14673                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14674            {
14675                let member_inline_size =
14676                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14677                if inlined != (member_inline_size <= 4) {
14678                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14679                }
14680                let inner_offset;
14681                let mut inner_depth = depth.clone();
14682                if inlined {
14683                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14684                    inner_offset = next_offset;
14685                } else {
14686                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14687                    inner_depth.increment()?;
14688                }
14689                let val_ref = self.min_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
14690                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
14691                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14692                {
14693                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14694                }
14695                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14696                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14697                }
14698            }
14699
14700            next_offset += envelope_size;
14701            _next_ordinal_to_read += 1;
14702            if next_offset >= end_offset {
14703                return Ok(());
14704            }
14705
14706            // Decode unknown envelopes for gaps in ordinals.
14707            while _next_ordinal_to_read < 6 {
14708                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14709                _next_ordinal_to_read += 1;
14710                next_offset += envelope_size;
14711            }
14712
14713            let next_out_of_line = decoder.next_out_of_line();
14714            let handles_before = decoder.remaining_handles();
14715            if let Some((inlined, num_bytes, num_handles)) =
14716                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14717            {
14718                let member_inline_size =
14719                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14720                if inlined != (member_inline_size <= 4) {
14721                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14722                }
14723                let inner_offset;
14724                let mut inner_depth = depth.clone();
14725                if inlined {
14726                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14727                    inner_offset = next_offset;
14728                } else {
14729                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14730                    inner_depth.increment()?;
14731                }
14732                let val_ref = self.max_channel_time.get_or_insert_with(|| fidl::new_empty!(u32, D));
14733                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
14734                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14735                {
14736                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14737                }
14738                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14739                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14740                }
14741            }
14742
14743            next_offset += envelope_size;
14744
14745            // Decode the remaining unknown envelopes.
14746            while next_offset < end_offset {
14747                _next_ordinal_to_read += 1;
14748                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14749                next_offset += envelope_size;
14750            }
14751
14752            Ok(())
14753        }
14754    }
14755
14756    impl WlanFullmacImplStartScheduledScanRequest {
14757        #[inline(always)]
14758        fn max_ordinal_present(&self) -> u64 {
14759            if let Some(_) = self.req {
14760                return 2;
14761            }
14762            if let Some(_) = self.txn_id {
14763                return 1;
14764            }
14765            0
14766        }
14767    }
14768
14769    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStartScheduledScanRequest {
14770        type Borrowed<'a> = &'a Self;
14771        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14772            value
14773        }
14774    }
14775
14776    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStartScheduledScanRequest {
14777        type Owned = Self;
14778
14779        #[inline(always)]
14780        fn inline_align(_context: fidl::encoding::Context) -> usize {
14781            8
14782        }
14783
14784        #[inline(always)]
14785        fn inline_size(_context: fidl::encoding::Context) -> usize {
14786            16
14787        }
14788    }
14789
14790    unsafe impl<D: fidl::encoding::ResourceDialect>
14791        fidl::encoding::Encode<WlanFullmacImplStartScheduledScanRequest, D>
14792        for &WlanFullmacImplStartScheduledScanRequest
14793    {
14794        unsafe fn encode(
14795            self,
14796            encoder: &mut fidl::encoding::Encoder<'_, D>,
14797            offset: usize,
14798            mut depth: fidl::encoding::Depth,
14799        ) -> fidl::Result<()> {
14800            encoder.debug_check_bounds::<WlanFullmacImplStartScheduledScanRequest>(offset);
14801            // Vector header
14802            let max_ordinal: u64 = self.max_ordinal_present();
14803            encoder.write_num(max_ordinal, offset);
14804            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14805            // Calling encoder.out_of_line_offset(0) is not allowed.
14806            if max_ordinal == 0 {
14807                return Ok(());
14808            }
14809            depth.increment()?;
14810            let envelope_size = 8;
14811            let bytes_len = max_ordinal as usize * envelope_size;
14812            #[allow(unused_variables)]
14813            let offset = encoder.out_of_line_offset(bytes_len);
14814            let mut _prev_end_offset: usize = 0;
14815            if 1 > max_ordinal {
14816                return Ok(());
14817            }
14818
14819            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14820            // are envelope_size bytes.
14821            let cur_offset: usize = (1 - 1) * envelope_size;
14822
14823            // Zero reserved fields.
14824            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14825
14826            // Safety:
14827            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14828            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14829            //   envelope_size bytes, there is always sufficient room.
14830            fidl::encoding::encode_in_envelope_optional::<u64, D>(
14831                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
14832                encoder,
14833                offset + cur_offset,
14834                depth,
14835            )?;
14836
14837            _prev_end_offset = cur_offset + envelope_size;
14838            if 2 > max_ordinal {
14839                return Ok(());
14840            }
14841
14842            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14843            // are envelope_size bytes.
14844            let cur_offset: usize = (2 - 1) * envelope_size;
14845
14846            // Zero reserved fields.
14847            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14848
14849            // Safety:
14850            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14851            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14852            //   envelope_size bytes, there is always sufficient room.
14853            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::ScheduledScanRequest, D>(
14854            self.req.as_ref().map(<fidl_fuchsia_wlan_common_common::ScheduledScanRequest as fidl::encoding::ValueTypeMarker>::borrow),
14855            encoder, offset + cur_offset, depth
14856        )?;
14857
14858            _prev_end_offset = cur_offset + envelope_size;
14859
14860            Ok(())
14861        }
14862    }
14863
14864    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14865        for WlanFullmacImplStartScheduledScanRequest
14866    {
14867        #[inline(always)]
14868        fn new_empty() -> Self {
14869            Self::default()
14870        }
14871
14872        unsafe fn decode(
14873            &mut self,
14874            decoder: &mut fidl::encoding::Decoder<'_, D>,
14875            offset: usize,
14876            mut depth: fidl::encoding::Depth,
14877        ) -> fidl::Result<()> {
14878            decoder.debug_check_bounds::<Self>(offset);
14879            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14880                None => return Err(fidl::Error::NotNullable),
14881                Some(len) => len,
14882            };
14883            // Calling decoder.out_of_line_offset(0) is not allowed.
14884            if len == 0 {
14885                return Ok(());
14886            };
14887            depth.increment()?;
14888            let envelope_size = 8;
14889            let bytes_len = len * envelope_size;
14890            let offset = decoder.out_of_line_offset(bytes_len)?;
14891            // Decode the envelope for each type.
14892            let mut _next_ordinal_to_read = 0;
14893            let mut next_offset = offset;
14894            let end_offset = offset + bytes_len;
14895            _next_ordinal_to_read += 1;
14896            if next_offset >= end_offset {
14897                return Ok(());
14898            }
14899
14900            // Decode unknown envelopes for gaps in ordinals.
14901            while _next_ordinal_to_read < 1 {
14902                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14903                _next_ordinal_to_read += 1;
14904                next_offset += envelope_size;
14905            }
14906
14907            let next_out_of_line = decoder.next_out_of_line();
14908            let handles_before = decoder.remaining_handles();
14909            if let Some((inlined, num_bytes, num_handles)) =
14910                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14911            {
14912                let member_inline_size =
14913                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14914                if inlined != (member_inline_size <= 4) {
14915                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14916                }
14917                let inner_offset;
14918                let mut inner_depth = depth.clone();
14919                if inlined {
14920                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14921                    inner_offset = next_offset;
14922                } else {
14923                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14924                    inner_depth.increment()?;
14925                }
14926                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
14927                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
14928                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14929                {
14930                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14931                }
14932                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14933                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14934                }
14935            }
14936
14937            next_offset += envelope_size;
14938            _next_ordinal_to_read += 1;
14939            if next_offset >= end_offset {
14940                return Ok(());
14941            }
14942
14943            // Decode unknown envelopes for gaps in ordinals.
14944            while _next_ordinal_to_read < 2 {
14945                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14946                _next_ordinal_to_read += 1;
14947                next_offset += envelope_size;
14948            }
14949
14950            let next_out_of_line = decoder.next_out_of_line();
14951            let handles_before = decoder.remaining_handles();
14952            if let Some((inlined, num_bytes, num_handles)) =
14953                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14954            {
14955                let member_inline_size = <fidl_fuchsia_wlan_common_common::ScheduledScanRequest as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14956                if inlined != (member_inline_size <= 4) {
14957                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14958                }
14959                let inner_offset;
14960                let mut inner_depth = depth.clone();
14961                if inlined {
14962                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14963                    inner_offset = next_offset;
14964                } else {
14965                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14966                    inner_depth.increment()?;
14967                }
14968                let val_ref = self.req.get_or_insert_with(|| {
14969                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::ScheduledScanRequest, D)
14970                });
14971                fidl::decode!(
14972                    fidl_fuchsia_wlan_common_common::ScheduledScanRequest,
14973                    D,
14974                    val_ref,
14975                    decoder,
14976                    inner_offset,
14977                    inner_depth
14978                )?;
14979                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14980                {
14981                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14982                }
14983                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14984                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14985                }
14986            }
14987
14988            next_offset += envelope_size;
14989
14990            // Decode the remaining unknown envelopes.
14991            while next_offset < end_offset {
14992                _next_ordinal_to_read += 1;
14993                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14994                next_offset += envelope_size;
14995            }
14996
14997            Ok(())
14998        }
14999    }
15000
15001    impl WlanFullmacImplStopBssRequest {
15002        #[inline(always)]
15003        fn max_ordinal_present(&self) -> u64 {
15004            if let Some(_) = self.ssid {
15005                return 1;
15006            }
15007            0
15008        }
15009    }
15010
15011    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStopBssRequest {
15012        type Borrowed<'a> = &'a Self;
15013        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15014            value
15015        }
15016    }
15017
15018    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStopBssRequest {
15019        type Owned = Self;
15020
15021        #[inline(always)]
15022        fn inline_align(_context: fidl::encoding::Context) -> usize {
15023            8
15024        }
15025
15026        #[inline(always)]
15027        fn inline_size(_context: fidl::encoding::Context) -> usize {
15028            16
15029        }
15030    }
15031
15032    unsafe impl<D: fidl::encoding::ResourceDialect>
15033        fidl::encoding::Encode<WlanFullmacImplStopBssRequest, D>
15034        for &WlanFullmacImplStopBssRequest
15035    {
15036        unsafe fn encode(
15037            self,
15038            encoder: &mut fidl::encoding::Encoder<'_, D>,
15039            offset: usize,
15040            mut depth: fidl::encoding::Depth,
15041        ) -> fidl::Result<()> {
15042            encoder.debug_check_bounds::<WlanFullmacImplStopBssRequest>(offset);
15043            // Vector header
15044            let max_ordinal: u64 = self.max_ordinal_present();
15045            encoder.write_num(max_ordinal, offset);
15046            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15047            // Calling encoder.out_of_line_offset(0) is not allowed.
15048            if max_ordinal == 0 {
15049                return Ok(());
15050            }
15051            depth.increment()?;
15052            let envelope_size = 8;
15053            let bytes_len = max_ordinal as usize * envelope_size;
15054            #[allow(unused_variables)]
15055            let offset = encoder.out_of_line_offset(bytes_len);
15056            let mut _prev_end_offset: usize = 0;
15057            if 1 > max_ordinal {
15058                return Ok(());
15059            }
15060
15061            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15062            // are envelope_size bytes.
15063            let cur_offset: usize = (1 - 1) * envelope_size;
15064
15065            // Zero reserved fields.
15066            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15067
15068            // Safety:
15069            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15070            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15071            //   envelope_size bytes, there is always sufficient room.
15072            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
15073                self.ssid.as_ref().map(
15074                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
15075                ),
15076                encoder,
15077                offset + cur_offset,
15078                depth,
15079            )?;
15080
15081            _prev_end_offset = cur_offset + envelope_size;
15082
15083            Ok(())
15084        }
15085    }
15086
15087    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15088        for WlanFullmacImplStopBssRequest
15089    {
15090        #[inline(always)]
15091        fn new_empty() -> Self {
15092            Self::default()
15093        }
15094
15095        unsafe fn decode(
15096            &mut self,
15097            decoder: &mut fidl::encoding::Decoder<'_, D>,
15098            offset: usize,
15099            mut depth: fidl::encoding::Depth,
15100        ) -> fidl::Result<()> {
15101            decoder.debug_check_bounds::<Self>(offset);
15102            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15103                None => return Err(fidl::Error::NotNullable),
15104                Some(len) => len,
15105            };
15106            // Calling decoder.out_of_line_offset(0) is not allowed.
15107            if len == 0 {
15108                return Ok(());
15109            };
15110            depth.increment()?;
15111            let envelope_size = 8;
15112            let bytes_len = len * envelope_size;
15113            let offset = decoder.out_of_line_offset(bytes_len)?;
15114            // Decode the envelope for each type.
15115            let mut _next_ordinal_to_read = 0;
15116            let mut next_offset = offset;
15117            let end_offset = offset + bytes_len;
15118            _next_ordinal_to_read += 1;
15119            if next_offset >= end_offset {
15120                return Ok(());
15121            }
15122
15123            // Decode unknown envelopes for gaps in ordinals.
15124            while _next_ordinal_to_read < 1 {
15125                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15126                _next_ordinal_to_read += 1;
15127                next_offset += envelope_size;
15128            }
15129
15130            let next_out_of_line = decoder.next_out_of_line();
15131            let handles_before = decoder.remaining_handles();
15132            if let Some((inlined, num_bytes, num_handles)) =
15133                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15134            {
15135                let member_inline_size =
15136                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
15137                        decoder.context,
15138                    );
15139                if inlined != (member_inline_size <= 4) {
15140                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15141                }
15142                let inner_offset;
15143                let mut inner_depth = depth.clone();
15144                if inlined {
15145                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15146                    inner_offset = next_offset;
15147                } else {
15148                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15149                    inner_depth.increment()?;
15150                }
15151                let val_ref = self
15152                    .ssid
15153                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
15154                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
15155                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15156                {
15157                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15158                }
15159                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15160                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15161                }
15162            }
15163
15164            next_offset += envelope_size;
15165
15166            // Decode the remaining unknown envelopes.
15167            while next_offset < end_offset {
15168                _next_ordinal_to_read += 1;
15169                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15170                next_offset += envelope_size;
15171            }
15172
15173            Ok(())
15174        }
15175    }
15176
15177    impl WlanFullmacImplStopScheduledScanRequest {
15178        #[inline(always)]
15179        fn max_ordinal_present(&self) -> u64 {
15180            if let Some(_) = self.txn_id {
15181                return 1;
15182            }
15183            0
15184        }
15185    }
15186
15187    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplStopScheduledScanRequest {
15188        type Borrowed<'a> = &'a Self;
15189        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15190            value
15191        }
15192    }
15193
15194    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplStopScheduledScanRequest {
15195        type Owned = Self;
15196
15197        #[inline(always)]
15198        fn inline_align(_context: fidl::encoding::Context) -> usize {
15199            8
15200        }
15201
15202        #[inline(always)]
15203        fn inline_size(_context: fidl::encoding::Context) -> usize {
15204            16
15205        }
15206    }
15207
15208    unsafe impl<D: fidl::encoding::ResourceDialect>
15209        fidl::encoding::Encode<WlanFullmacImplStopScheduledScanRequest, D>
15210        for &WlanFullmacImplStopScheduledScanRequest
15211    {
15212        unsafe fn encode(
15213            self,
15214            encoder: &mut fidl::encoding::Encoder<'_, D>,
15215            offset: usize,
15216            mut depth: fidl::encoding::Depth,
15217        ) -> fidl::Result<()> {
15218            encoder.debug_check_bounds::<WlanFullmacImplStopScheduledScanRequest>(offset);
15219            // Vector header
15220            let max_ordinal: u64 = self.max_ordinal_present();
15221            encoder.write_num(max_ordinal, offset);
15222            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15223            // Calling encoder.out_of_line_offset(0) is not allowed.
15224            if max_ordinal == 0 {
15225                return Ok(());
15226            }
15227            depth.increment()?;
15228            let envelope_size = 8;
15229            let bytes_len = max_ordinal as usize * envelope_size;
15230            #[allow(unused_variables)]
15231            let offset = encoder.out_of_line_offset(bytes_len);
15232            let mut _prev_end_offset: usize = 0;
15233            if 1 > max_ordinal {
15234                return Ok(());
15235            }
15236
15237            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15238            // are envelope_size bytes.
15239            let cur_offset: usize = (1 - 1) * envelope_size;
15240
15241            // Zero reserved fields.
15242            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15243
15244            // Safety:
15245            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15246            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15247            //   envelope_size bytes, there is always sufficient room.
15248            fidl::encoding::encode_in_envelope_optional::<u64, D>(
15249                self.txn_id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
15250                encoder,
15251                offset + cur_offset,
15252                depth,
15253            )?;
15254
15255            _prev_end_offset = cur_offset + envelope_size;
15256
15257            Ok(())
15258        }
15259    }
15260
15261    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15262        for WlanFullmacImplStopScheduledScanRequest
15263    {
15264        #[inline(always)]
15265        fn new_empty() -> Self {
15266            Self::default()
15267        }
15268
15269        unsafe fn decode(
15270            &mut self,
15271            decoder: &mut fidl::encoding::Decoder<'_, D>,
15272            offset: usize,
15273            mut depth: fidl::encoding::Depth,
15274        ) -> fidl::Result<()> {
15275            decoder.debug_check_bounds::<Self>(offset);
15276            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15277                None => return Err(fidl::Error::NotNullable),
15278                Some(len) => len,
15279            };
15280            // Calling decoder.out_of_line_offset(0) is not allowed.
15281            if len == 0 {
15282                return Ok(());
15283            };
15284            depth.increment()?;
15285            let envelope_size = 8;
15286            let bytes_len = len * envelope_size;
15287            let offset = decoder.out_of_line_offset(bytes_len)?;
15288            // Decode the envelope for each type.
15289            let mut _next_ordinal_to_read = 0;
15290            let mut next_offset = offset;
15291            let end_offset = offset + bytes_len;
15292            _next_ordinal_to_read += 1;
15293            if next_offset >= end_offset {
15294                return Ok(());
15295            }
15296
15297            // Decode unknown envelopes for gaps in ordinals.
15298            while _next_ordinal_to_read < 1 {
15299                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15300                _next_ordinal_to_read += 1;
15301                next_offset += envelope_size;
15302            }
15303
15304            let next_out_of_line = decoder.next_out_of_line();
15305            let handles_before = decoder.remaining_handles();
15306            if let Some((inlined, num_bytes, num_handles)) =
15307                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15308            {
15309                let member_inline_size =
15310                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15311                if inlined != (member_inline_size <= 4) {
15312                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15313                }
15314                let inner_offset;
15315                let mut inner_depth = depth.clone();
15316                if inlined {
15317                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15318                    inner_offset = next_offset;
15319                } else {
15320                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15321                    inner_depth.increment()?;
15322                }
15323                let val_ref = self.txn_id.get_or_insert_with(|| fidl::new_empty!(u64, D));
15324                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
15325                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15326                {
15327                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15328                }
15329                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15330                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15331                }
15332            }
15333
15334            next_offset += envelope_size;
15335
15336            // Decode the remaining unknown envelopes.
15337            while next_offset < end_offset {
15338                _next_ordinal_to_read += 1;
15339                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15340                next_offset += envelope_size;
15341            }
15342
15343            Ok(())
15344        }
15345    }
15346
15347    impl WlanFullmacImplGetApfPacketFilterEnabledResponse {
15348        #[inline(always)]
15349        fn max_ordinal_present(&self) -> u64 {
15350            if let Some(_) = self.enabled {
15351                return 1;
15352            }
15353            0
15354        }
15355    }
15356
15357    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetApfPacketFilterEnabledResponse {
15358        type Borrowed<'a> = &'a Self;
15359        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15360            value
15361        }
15362    }
15363
15364    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetApfPacketFilterEnabledResponse {
15365        type Owned = Self;
15366
15367        #[inline(always)]
15368        fn inline_align(_context: fidl::encoding::Context) -> usize {
15369            8
15370        }
15371
15372        #[inline(always)]
15373        fn inline_size(_context: fidl::encoding::Context) -> usize {
15374            16
15375        }
15376    }
15377
15378    unsafe impl<D: fidl::encoding::ResourceDialect>
15379        fidl::encoding::Encode<WlanFullmacImplGetApfPacketFilterEnabledResponse, D>
15380        for &WlanFullmacImplGetApfPacketFilterEnabledResponse
15381    {
15382        unsafe fn encode(
15383            self,
15384            encoder: &mut fidl::encoding::Encoder<'_, D>,
15385            offset: usize,
15386            mut depth: fidl::encoding::Depth,
15387        ) -> fidl::Result<()> {
15388            encoder.debug_check_bounds::<WlanFullmacImplGetApfPacketFilterEnabledResponse>(offset);
15389            // Vector header
15390            let max_ordinal: u64 = self.max_ordinal_present();
15391            encoder.write_num(max_ordinal, offset);
15392            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15393            // Calling encoder.out_of_line_offset(0) is not allowed.
15394            if max_ordinal == 0 {
15395                return Ok(());
15396            }
15397            depth.increment()?;
15398            let envelope_size = 8;
15399            let bytes_len = max_ordinal as usize * envelope_size;
15400            #[allow(unused_variables)]
15401            let offset = encoder.out_of_line_offset(bytes_len);
15402            let mut _prev_end_offset: usize = 0;
15403            if 1 > max_ordinal {
15404                return Ok(());
15405            }
15406
15407            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15408            // are envelope_size bytes.
15409            let cur_offset: usize = (1 - 1) * envelope_size;
15410
15411            // Zero reserved fields.
15412            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15413
15414            // Safety:
15415            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15416            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15417            //   envelope_size bytes, there is always sufficient room.
15418            fidl::encoding::encode_in_envelope_optional::<bool, D>(
15419                self.enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
15420                encoder,
15421                offset + cur_offset,
15422                depth,
15423            )?;
15424
15425            _prev_end_offset = cur_offset + envelope_size;
15426
15427            Ok(())
15428        }
15429    }
15430
15431    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15432        for WlanFullmacImplGetApfPacketFilterEnabledResponse
15433    {
15434        #[inline(always)]
15435        fn new_empty() -> Self {
15436            Self::default()
15437        }
15438
15439        unsafe fn decode(
15440            &mut self,
15441            decoder: &mut fidl::encoding::Decoder<'_, D>,
15442            offset: usize,
15443            mut depth: fidl::encoding::Depth,
15444        ) -> fidl::Result<()> {
15445            decoder.debug_check_bounds::<Self>(offset);
15446            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15447                None => return Err(fidl::Error::NotNullable),
15448                Some(len) => len,
15449            };
15450            // Calling decoder.out_of_line_offset(0) is not allowed.
15451            if len == 0 {
15452                return Ok(());
15453            };
15454            depth.increment()?;
15455            let envelope_size = 8;
15456            let bytes_len = len * envelope_size;
15457            let offset = decoder.out_of_line_offset(bytes_len)?;
15458            // Decode the envelope for each type.
15459            let mut _next_ordinal_to_read = 0;
15460            let mut next_offset = offset;
15461            let end_offset = offset + bytes_len;
15462            _next_ordinal_to_read += 1;
15463            if next_offset >= end_offset {
15464                return Ok(());
15465            }
15466
15467            // Decode unknown envelopes for gaps in ordinals.
15468            while _next_ordinal_to_read < 1 {
15469                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15470                _next_ordinal_to_read += 1;
15471                next_offset += envelope_size;
15472            }
15473
15474            let next_out_of_line = decoder.next_out_of_line();
15475            let handles_before = decoder.remaining_handles();
15476            if let Some((inlined, num_bytes, num_handles)) =
15477                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15478            {
15479                let member_inline_size =
15480                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15481                if inlined != (member_inline_size <= 4) {
15482                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15483                }
15484                let inner_offset;
15485                let mut inner_depth = depth.clone();
15486                if inlined {
15487                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15488                    inner_offset = next_offset;
15489                } else {
15490                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15491                    inner_depth.increment()?;
15492                }
15493                let val_ref = self.enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
15494                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
15495                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15496                {
15497                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15498                }
15499                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15500                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15501                }
15502            }
15503
15504            next_offset += envelope_size;
15505
15506            // Decode the remaining unknown envelopes.
15507            while next_offset < end_offset {
15508                _next_ordinal_to_read += 1;
15509                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15510                next_offset += envelope_size;
15511            }
15512
15513            Ok(())
15514        }
15515    }
15516
15517    impl WlanFullmacImplGetScheduledScanEnabledResponse {
15518        #[inline(always)]
15519        fn max_ordinal_present(&self) -> u64 {
15520            if let Some(_) = self.active_txn_ids {
15521                return 1;
15522            }
15523            0
15524        }
15525    }
15526
15527    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplGetScheduledScanEnabledResponse {
15528        type Borrowed<'a> = &'a Self;
15529        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15530            value
15531        }
15532    }
15533
15534    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplGetScheduledScanEnabledResponse {
15535        type Owned = Self;
15536
15537        #[inline(always)]
15538        fn inline_align(_context: fidl::encoding::Context) -> usize {
15539            8
15540        }
15541
15542        #[inline(always)]
15543        fn inline_size(_context: fidl::encoding::Context) -> usize {
15544            16
15545        }
15546    }
15547
15548    unsafe impl<D: fidl::encoding::ResourceDialect>
15549        fidl::encoding::Encode<WlanFullmacImplGetScheduledScanEnabledResponse, D>
15550        for &WlanFullmacImplGetScheduledScanEnabledResponse
15551    {
15552        unsafe fn encode(
15553            self,
15554            encoder: &mut fidl::encoding::Encoder<'_, D>,
15555            offset: usize,
15556            mut depth: fidl::encoding::Depth,
15557        ) -> fidl::Result<()> {
15558            encoder.debug_check_bounds::<WlanFullmacImplGetScheduledScanEnabledResponse>(offset);
15559            // Vector header
15560            let max_ordinal: u64 = self.max_ordinal_present();
15561            encoder.write_num(max_ordinal, offset);
15562            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15563            // Calling encoder.out_of_line_offset(0) is not allowed.
15564            if max_ordinal == 0 {
15565                return Ok(());
15566            }
15567            depth.increment()?;
15568            let envelope_size = 8;
15569            let bytes_len = max_ordinal as usize * envelope_size;
15570            #[allow(unused_variables)]
15571            let offset = encoder.out_of_line_offset(bytes_len);
15572            let mut _prev_end_offset: usize = 0;
15573            if 1 > max_ordinal {
15574                return Ok(());
15575            }
15576
15577            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15578            // are envelope_size bytes.
15579            let cur_offset: usize = (1 - 1) * envelope_size;
15580
15581            // Zero reserved fields.
15582            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15583
15584            // Safety:
15585            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15586            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15587            //   envelope_size bytes, there is always sufficient room.
15588            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u64>, D>(
15589            self.active_txn_ids.as_ref().map(<fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow),
15590            encoder, offset + cur_offset, depth
15591        )?;
15592
15593            _prev_end_offset = cur_offset + envelope_size;
15594
15595            Ok(())
15596        }
15597    }
15598
15599    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15600        for WlanFullmacImplGetScheduledScanEnabledResponse
15601    {
15602        #[inline(always)]
15603        fn new_empty() -> Self {
15604            Self::default()
15605        }
15606
15607        unsafe fn decode(
15608            &mut self,
15609            decoder: &mut fidl::encoding::Decoder<'_, D>,
15610            offset: usize,
15611            mut depth: fidl::encoding::Depth,
15612        ) -> fidl::Result<()> {
15613            decoder.debug_check_bounds::<Self>(offset);
15614            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15615                None => return Err(fidl::Error::NotNullable),
15616                Some(len) => len,
15617            };
15618            // Calling decoder.out_of_line_offset(0) is not allowed.
15619            if len == 0 {
15620                return Ok(());
15621            };
15622            depth.increment()?;
15623            let envelope_size = 8;
15624            let bytes_len = len * envelope_size;
15625            let offset = decoder.out_of_line_offset(bytes_len)?;
15626            // Decode the envelope for each type.
15627            let mut _next_ordinal_to_read = 0;
15628            let mut next_offset = offset;
15629            let end_offset = offset + bytes_len;
15630            _next_ordinal_to_read += 1;
15631            if next_offset >= end_offset {
15632                return Ok(());
15633            }
15634
15635            // Decode unknown envelopes for gaps in ordinals.
15636            while _next_ordinal_to_read < 1 {
15637                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15638                _next_ordinal_to_read += 1;
15639                next_offset += envelope_size;
15640            }
15641
15642            let next_out_of_line = decoder.next_out_of_line();
15643            let handles_before = decoder.remaining_handles();
15644            if let Some((inlined, num_bytes, num_handles)) =
15645                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15646            {
15647                let member_inline_size = <fidl::encoding::UnboundedVector<u64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15648                if inlined != (member_inline_size <= 4) {
15649                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15650                }
15651                let inner_offset;
15652                let mut inner_depth = depth.clone();
15653                if inlined {
15654                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15655                    inner_offset = next_offset;
15656                } else {
15657                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15658                    inner_depth.increment()?;
15659                }
15660                let val_ref = self.active_txn_ids.get_or_insert_with(|| {
15661                    fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D)
15662                });
15663                fidl::decode!(
15664                    fidl::encoding::UnboundedVector<u64>,
15665                    D,
15666                    val_ref,
15667                    decoder,
15668                    inner_offset,
15669                    inner_depth
15670                )?;
15671                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15672                {
15673                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15674                }
15675                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15676                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15677                }
15678            }
15679
15680            next_offset += envelope_size;
15681
15682            // Decode the remaining unknown envelopes.
15683            while next_offset < end_offset {
15684                _next_ordinal_to_read += 1;
15685                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15686                next_offset += envelope_size;
15687            }
15688
15689            Ok(())
15690        }
15691    }
15692
15693    impl WlanFullmacImplQueryApfPacketFilterSupportResponse {
15694        #[inline(always)]
15695        fn max_ordinal_present(&self) -> u64 {
15696            if let Some(_) = self.resp {
15697                return 1;
15698            }
15699            0
15700        }
15701    }
15702
15703    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryApfPacketFilterSupportResponse {
15704        type Borrowed<'a> = &'a Self;
15705        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15706            value
15707        }
15708    }
15709
15710    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryApfPacketFilterSupportResponse {
15711        type Owned = Self;
15712
15713        #[inline(always)]
15714        fn inline_align(_context: fidl::encoding::Context) -> usize {
15715            8
15716        }
15717
15718        #[inline(always)]
15719        fn inline_size(_context: fidl::encoding::Context) -> usize {
15720            16
15721        }
15722    }
15723
15724    unsafe impl<D: fidl::encoding::ResourceDialect>
15725        fidl::encoding::Encode<WlanFullmacImplQueryApfPacketFilterSupportResponse, D>
15726        for &WlanFullmacImplQueryApfPacketFilterSupportResponse
15727    {
15728        unsafe fn encode(
15729            self,
15730            encoder: &mut fidl::encoding::Encoder<'_, D>,
15731            offset: usize,
15732            mut depth: fidl::encoding::Depth,
15733        ) -> fidl::Result<()> {
15734            encoder
15735                .debug_check_bounds::<WlanFullmacImplQueryApfPacketFilterSupportResponse>(offset);
15736            // Vector header
15737            let max_ordinal: u64 = self.max_ordinal_present();
15738            encoder.write_num(max_ordinal, offset);
15739            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15740            // Calling encoder.out_of_line_offset(0) is not allowed.
15741            if max_ordinal == 0 {
15742                return Ok(());
15743            }
15744            depth.increment()?;
15745            let envelope_size = 8;
15746            let bytes_len = max_ordinal as usize * envelope_size;
15747            #[allow(unused_variables)]
15748            let offset = encoder.out_of_line_offset(bytes_len);
15749            let mut _prev_end_offset: usize = 0;
15750            if 1 > max_ordinal {
15751                return Ok(());
15752            }
15753
15754            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15755            // are envelope_size bytes.
15756            let cur_offset: usize = (1 - 1) * envelope_size;
15757
15758            // Zero reserved fields.
15759            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15760
15761            // Safety:
15762            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15763            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15764            //   envelope_size bytes, there is always sufficient room.
15765            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport, D>(
15766            self.resp.as_ref().map(<fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport as fidl::encoding::ValueTypeMarker>::borrow),
15767            encoder, offset + cur_offset, depth
15768        )?;
15769
15770            _prev_end_offset = cur_offset + envelope_size;
15771
15772            Ok(())
15773        }
15774    }
15775
15776    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15777        for WlanFullmacImplQueryApfPacketFilterSupportResponse
15778    {
15779        #[inline(always)]
15780        fn new_empty() -> Self {
15781            Self::default()
15782        }
15783
15784        unsafe fn decode(
15785            &mut self,
15786            decoder: &mut fidl::encoding::Decoder<'_, D>,
15787            offset: usize,
15788            mut depth: fidl::encoding::Depth,
15789        ) -> fidl::Result<()> {
15790            decoder.debug_check_bounds::<Self>(offset);
15791            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15792                None => return Err(fidl::Error::NotNullable),
15793                Some(len) => len,
15794            };
15795            // Calling decoder.out_of_line_offset(0) is not allowed.
15796            if len == 0 {
15797                return Ok(());
15798            };
15799            depth.increment()?;
15800            let envelope_size = 8;
15801            let bytes_len = len * envelope_size;
15802            let offset = decoder.out_of_line_offset(bytes_len)?;
15803            // Decode the envelope for each type.
15804            let mut _next_ordinal_to_read = 0;
15805            let mut next_offset = offset;
15806            let end_offset = offset + bytes_len;
15807            _next_ordinal_to_read += 1;
15808            if next_offset >= end_offset {
15809                return Ok(());
15810            }
15811
15812            // Decode unknown envelopes for gaps in ordinals.
15813            while _next_ordinal_to_read < 1 {
15814                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15815                _next_ordinal_to_read += 1;
15816                next_offset += envelope_size;
15817            }
15818
15819            let next_out_of_line = decoder.next_out_of_line();
15820            let handles_before = decoder.remaining_handles();
15821            if let Some((inlined, num_bytes, num_handles)) =
15822                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15823            {
15824                let member_inline_size = <fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15825                if inlined != (member_inline_size <= 4) {
15826                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15827                }
15828                let inner_offset;
15829                let mut inner_depth = depth.clone();
15830                if inlined {
15831                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15832                    inner_offset = next_offset;
15833                } else {
15834                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15835                    inner_depth.increment()?;
15836                }
15837                let val_ref = self.resp.get_or_insert_with(|| {
15838                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport, D)
15839                });
15840                fidl::decode!(
15841                    fidl_fuchsia_wlan_common_common::ApfPacketFilterSupport,
15842                    D,
15843                    val_ref,
15844                    decoder,
15845                    inner_offset,
15846                    inner_depth
15847                )?;
15848                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15849                {
15850                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15851                }
15852                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15853                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15854                }
15855            }
15856
15857            next_offset += envelope_size;
15858
15859            // Decode the remaining unknown envelopes.
15860            while next_offset < end_offset {
15861                _next_ordinal_to_read += 1;
15862                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15863                next_offset += envelope_size;
15864            }
15865
15866            Ok(())
15867        }
15868    }
15869
15870    impl WlanFullmacImplQueryRssiMonitorSupportResponse {
15871        #[inline(always)]
15872        fn max_ordinal_present(&self) -> u64 {
15873            if let Some(_) = self.resp {
15874                return 1;
15875            }
15876            0
15877        }
15878    }
15879
15880    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryRssiMonitorSupportResponse {
15881        type Borrowed<'a> = &'a Self;
15882        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15883            value
15884        }
15885    }
15886
15887    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryRssiMonitorSupportResponse {
15888        type Owned = Self;
15889
15890        #[inline(always)]
15891        fn inline_align(_context: fidl::encoding::Context) -> usize {
15892            8
15893        }
15894
15895        #[inline(always)]
15896        fn inline_size(_context: fidl::encoding::Context) -> usize {
15897            16
15898        }
15899    }
15900
15901    unsafe impl<D: fidl::encoding::ResourceDialect>
15902        fidl::encoding::Encode<WlanFullmacImplQueryRssiMonitorSupportResponse, D>
15903        for &WlanFullmacImplQueryRssiMonitorSupportResponse
15904    {
15905        unsafe fn encode(
15906            self,
15907            encoder: &mut fidl::encoding::Encoder<'_, D>,
15908            offset: usize,
15909            mut depth: fidl::encoding::Depth,
15910        ) -> fidl::Result<()> {
15911            encoder.debug_check_bounds::<WlanFullmacImplQueryRssiMonitorSupportResponse>(offset);
15912            // Vector header
15913            let max_ordinal: u64 = self.max_ordinal_present();
15914            encoder.write_num(max_ordinal, offset);
15915            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15916            // Calling encoder.out_of_line_offset(0) is not allowed.
15917            if max_ordinal == 0 {
15918                return Ok(());
15919            }
15920            depth.increment()?;
15921            let envelope_size = 8;
15922            let bytes_len = max_ordinal as usize * envelope_size;
15923            #[allow(unused_variables)]
15924            let offset = encoder.out_of_line_offset(bytes_len);
15925            let mut _prev_end_offset: usize = 0;
15926            if 1 > max_ordinal {
15927                return Ok(());
15928            }
15929
15930            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15931            // are envelope_size bytes.
15932            let cur_offset: usize = (1 - 1) * envelope_size;
15933
15934            // Zero reserved fields.
15935            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15936
15937            // Safety:
15938            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15939            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15940            //   envelope_size bytes, there is always sufficient room.
15941            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::RssiMonitorSupport, D>(
15942            self.resp.as_ref().map(<fidl_fuchsia_wlan_common_common::RssiMonitorSupport as fidl::encoding::ValueTypeMarker>::borrow),
15943            encoder, offset + cur_offset, depth
15944        )?;
15945
15946            _prev_end_offset = cur_offset + envelope_size;
15947
15948            Ok(())
15949        }
15950    }
15951
15952    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
15953        for WlanFullmacImplQueryRssiMonitorSupportResponse
15954    {
15955        #[inline(always)]
15956        fn new_empty() -> Self {
15957            Self::default()
15958        }
15959
15960        unsafe fn decode(
15961            &mut self,
15962            decoder: &mut fidl::encoding::Decoder<'_, D>,
15963            offset: usize,
15964            mut depth: fidl::encoding::Depth,
15965        ) -> fidl::Result<()> {
15966            decoder.debug_check_bounds::<Self>(offset);
15967            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15968                None => return Err(fidl::Error::NotNullable),
15969                Some(len) => len,
15970            };
15971            // Calling decoder.out_of_line_offset(0) is not allowed.
15972            if len == 0 {
15973                return Ok(());
15974            };
15975            depth.increment()?;
15976            let envelope_size = 8;
15977            let bytes_len = len * envelope_size;
15978            let offset = decoder.out_of_line_offset(bytes_len)?;
15979            // Decode the envelope for each type.
15980            let mut _next_ordinal_to_read = 0;
15981            let mut next_offset = offset;
15982            let end_offset = offset + bytes_len;
15983            _next_ordinal_to_read += 1;
15984            if next_offset >= end_offset {
15985                return Ok(());
15986            }
15987
15988            // Decode unknown envelopes for gaps in ordinals.
15989            while _next_ordinal_to_read < 1 {
15990                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15991                _next_ordinal_to_read += 1;
15992                next_offset += envelope_size;
15993            }
15994
15995            let next_out_of_line = decoder.next_out_of_line();
15996            let handles_before = decoder.remaining_handles();
15997            if let Some((inlined, num_bytes, num_handles)) =
15998                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15999            {
16000                let member_inline_size = <fidl_fuchsia_wlan_common_common::RssiMonitorSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16001                if inlined != (member_inline_size <= 4) {
16002                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16003                }
16004                let inner_offset;
16005                let mut inner_depth = depth.clone();
16006                if inlined {
16007                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16008                    inner_offset = next_offset;
16009                } else {
16010                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16011                    inner_depth.increment()?;
16012                }
16013                let val_ref = self.resp.get_or_insert_with(|| {
16014                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::RssiMonitorSupport, D)
16015                });
16016                fidl::decode!(
16017                    fidl_fuchsia_wlan_common_common::RssiMonitorSupport,
16018                    D,
16019                    val_ref,
16020                    decoder,
16021                    inner_offset,
16022                    inner_depth
16023                )?;
16024                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16025                {
16026                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16027                }
16028                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16029                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16030                }
16031            }
16032
16033            next_offset += envelope_size;
16034
16035            // Decode the remaining unknown envelopes.
16036            while next_offset < end_offset {
16037                _next_ordinal_to_read += 1;
16038                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16039                next_offset += envelope_size;
16040            }
16041
16042            Ok(())
16043        }
16044    }
16045
16046    impl WlanFullmacImplQuerySecuritySupportResponse {
16047        #[inline(always)]
16048        fn max_ordinal_present(&self) -> u64 {
16049            if let Some(_) = self.resp {
16050                return 1;
16051            }
16052            0
16053        }
16054    }
16055
16056    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
16057        type Borrowed<'a> = &'a Self;
16058        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16059            value
16060        }
16061    }
16062
16063    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySecuritySupportResponse {
16064        type Owned = Self;
16065
16066        #[inline(always)]
16067        fn inline_align(_context: fidl::encoding::Context) -> usize {
16068            8
16069        }
16070
16071        #[inline(always)]
16072        fn inline_size(_context: fidl::encoding::Context) -> usize {
16073            16
16074        }
16075    }
16076
16077    unsafe impl<D: fidl::encoding::ResourceDialect>
16078        fidl::encoding::Encode<WlanFullmacImplQuerySecuritySupportResponse, D>
16079        for &WlanFullmacImplQuerySecuritySupportResponse
16080    {
16081        unsafe fn encode(
16082            self,
16083            encoder: &mut fidl::encoding::Encoder<'_, D>,
16084            offset: usize,
16085            mut depth: fidl::encoding::Depth,
16086        ) -> fidl::Result<()> {
16087            encoder.debug_check_bounds::<WlanFullmacImplQuerySecuritySupportResponse>(offset);
16088            // Vector header
16089            let max_ordinal: u64 = self.max_ordinal_present();
16090            encoder.write_num(max_ordinal, offset);
16091            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16092            // Calling encoder.out_of_line_offset(0) is not allowed.
16093            if max_ordinal == 0 {
16094                return Ok(());
16095            }
16096            depth.increment()?;
16097            let envelope_size = 8;
16098            let bytes_len = max_ordinal as usize * envelope_size;
16099            #[allow(unused_variables)]
16100            let offset = encoder.out_of_line_offset(bytes_len);
16101            let mut _prev_end_offset: usize = 0;
16102            if 1 > max_ordinal {
16103                return Ok(());
16104            }
16105
16106            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16107            // are envelope_size bytes.
16108            let cur_offset: usize = (1 - 1) * envelope_size;
16109
16110            // Zero reserved fields.
16111            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16112
16113            // Safety:
16114            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16115            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16116            //   envelope_size bytes, there is always sufficient room.
16117            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::SecuritySupport, D>(
16118            self.resp.as_ref().map(<fidl_fuchsia_wlan_common_common::SecuritySupport as fidl::encoding::ValueTypeMarker>::borrow),
16119            encoder, offset + cur_offset, depth
16120        )?;
16121
16122            _prev_end_offset = cur_offset + envelope_size;
16123
16124            Ok(())
16125        }
16126    }
16127
16128    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16129        for WlanFullmacImplQuerySecuritySupportResponse
16130    {
16131        #[inline(always)]
16132        fn new_empty() -> Self {
16133            Self::default()
16134        }
16135
16136        unsafe fn decode(
16137            &mut self,
16138            decoder: &mut fidl::encoding::Decoder<'_, D>,
16139            offset: usize,
16140            mut depth: fidl::encoding::Depth,
16141        ) -> fidl::Result<()> {
16142            decoder.debug_check_bounds::<Self>(offset);
16143            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16144                None => return Err(fidl::Error::NotNullable),
16145                Some(len) => len,
16146            };
16147            // Calling decoder.out_of_line_offset(0) is not allowed.
16148            if len == 0 {
16149                return Ok(());
16150            };
16151            depth.increment()?;
16152            let envelope_size = 8;
16153            let bytes_len = len * envelope_size;
16154            let offset = decoder.out_of_line_offset(bytes_len)?;
16155            // Decode the envelope for each type.
16156            let mut _next_ordinal_to_read = 0;
16157            let mut next_offset = offset;
16158            let end_offset = offset + bytes_len;
16159            _next_ordinal_to_read += 1;
16160            if next_offset >= end_offset {
16161                return Ok(());
16162            }
16163
16164            // Decode unknown envelopes for gaps in ordinals.
16165            while _next_ordinal_to_read < 1 {
16166                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16167                _next_ordinal_to_read += 1;
16168                next_offset += envelope_size;
16169            }
16170
16171            let next_out_of_line = decoder.next_out_of_line();
16172            let handles_before = decoder.remaining_handles();
16173            if let Some((inlined, num_bytes, num_handles)) =
16174                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16175            {
16176                let member_inline_size = <fidl_fuchsia_wlan_common_common::SecuritySupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16177                if inlined != (member_inline_size <= 4) {
16178                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16179                }
16180                let inner_offset;
16181                let mut inner_depth = depth.clone();
16182                if inlined {
16183                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16184                    inner_offset = next_offset;
16185                } else {
16186                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16187                    inner_depth.increment()?;
16188                }
16189                let val_ref = self.resp.get_or_insert_with(|| {
16190                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::SecuritySupport, D)
16191                });
16192                fidl::decode!(
16193                    fidl_fuchsia_wlan_common_common::SecuritySupport,
16194                    D,
16195                    val_ref,
16196                    decoder,
16197                    inner_offset,
16198                    inner_depth
16199                )?;
16200                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16201                {
16202                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16203                }
16204                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16205                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16206                }
16207            }
16208
16209            next_offset += envelope_size;
16210
16211            // Decode the remaining unknown envelopes.
16212            while next_offset < end_offset {
16213                _next_ordinal_to_read += 1;
16214                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16215                next_offset += envelope_size;
16216            }
16217
16218            Ok(())
16219        }
16220    }
16221
16222    impl WlanFullmacImplQuerySpectrumManagementSupportResponse {
16223        #[inline(always)]
16224        fn max_ordinal_present(&self) -> u64 {
16225            if let Some(_) = self.resp {
16226                return 1;
16227            }
16228            0
16229        }
16230    }
16231
16232    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
16233        type Borrowed<'a> = &'a Self;
16234        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16235            value
16236        }
16237    }
16238
16239    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQuerySpectrumManagementSupportResponse {
16240        type Owned = Self;
16241
16242        #[inline(always)]
16243        fn inline_align(_context: fidl::encoding::Context) -> usize {
16244            8
16245        }
16246
16247        #[inline(always)]
16248        fn inline_size(_context: fidl::encoding::Context) -> usize {
16249            16
16250        }
16251    }
16252
16253    unsafe impl<D: fidl::encoding::ResourceDialect>
16254        fidl::encoding::Encode<WlanFullmacImplQuerySpectrumManagementSupportResponse, D>
16255        for &WlanFullmacImplQuerySpectrumManagementSupportResponse
16256    {
16257        unsafe fn encode(
16258            self,
16259            encoder: &mut fidl::encoding::Encoder<'_, D>,
16260            offset: usize,
16261            mut depth: fidl::encoding::Depth,
16262        ) -> fidl::Result<()> {
16263            encoder.debug_check_bounds::<WlanFullmacImplQuerySpectrumManagementSupportResponse>(
16264                offset,
16265            );
16266            // Vector header
16267            let max_ordinal: u64 = self.max_ordinal_present();
16268            encoder.write_num(max_ordinal, offset);
16269            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16270            // Calling encoder.out_of_line_offset(0) is not allowed.
16271            if max_ordinal == 0 {
16272                return Ok(());
16273            }
16274            depth.increment()?;
16275            let envelope_size = 8;
16276            let bytes_len = max_ordinal as usize * envelope_size;
16277            #[allow(unused_variables)]
16278            let offset = encoder.out_of_line_offset(bytes_len);
16279            let mut _prev_end_offset: usize = 0;
16280            if 1 > max_ordinal {
16281                return Ok(());
16282            }
16283
16284            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16285            // are envelope_size bytes.
16286            let cur_offset: usize = (1 - 1) * envelope_size;
16287
16288            // Zero reserved fields.
16289            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16290
16291            // Safety:
16292            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16293            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16294            //   envelope_size bytes, there is always sufficient room.
16295            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::SpectrumManagementSupport, D>(
16296            self.resp.as_ref().map(<fidl_fuchsia_wlan_common_common::SpectrumManagementSupport as fidl::encoding::ValueTypeMarker>::borrow),
16297            encoder, offset + cur_offset, depth
16298        )?;
16299
16300            _prev_end_offset = cur_offset + envelope_size;
16301
16302            Ok(())
16303        }
16304    }
16305
16306    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16307        for WlanFullmacImplQuerySpectrumManagementSupportResponse
16308    {
16309        #[inline(always)]
16310        fn new_empty() -> Self {
16311            Self::default()
16312        }
16313
16314        unsafe fn decode(
16315            &mut self,
16316            decoder: &mut fidl::encoding::Decoder<'_, D>,
16317            offset: usize,
16318            mut depth: fidl::encoding::Depth,
16319        ) -> fidl::Result<()> {
16320            decoder.debug_check_bounds::<Self>(offset);
16321            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16322                None => return Err(fidl::Error::NotNullable),
16323                Some(len) => len,
16324            };
16325            // Calling decoder.out_of_line_offset(0) is not allowed.
16326            if len == 0 {
16327                return Ok(());
16328            };
16329            depth.increment()?;
16330            let envelope_size = 8;
16331            let bytes_len = len * envelope_size;
16332            let offset = decoder.out_of_line_offset(bytes_len)?;
16333            // Decode the envelope for each type.
16334            let mut _next_ordinal_to_read = 0;
16335            let mut next_offset = offset;
16336            let end_offset = offset + bytes_len;
16337            _next_ordinal_to_read += 1;
16338            if next_offset >= end_offset {
16339                return Ok(());
16340            }
16341
16342            // Decode unknown envelopes for gaps in ordinals.
16343            while _next_ordinal_to_read < 1 {
16344                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16345                _next_ordinal_to_read += 1;
16346                next_offset += envelope_size;
16347            }
16348
16349            let next_out_of_line = decoder.next_out_of_line();
16350            let handles_before = decoder.remaining_handles();
16351            if let Some((inlined, num_bytes, num_handles)) =
16352                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16353            {
16354                let member_inline_size = <fidl_fuchsia_wlan_common_common::SpectrumManagementSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16355                if inlined != (member_inline_size <= 4) {
16356                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16357                }
16358                let inner_offset;
16359                let mut inner_depth = depth.clone();
16360                if inlined {
16361                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16362                    inner_offset = next_offset;
16363                } else {
16364                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16365                    inner_depth.increment()?;
16366                }
16367                let val_ref = self.resp.get_or_insert_with(|| {
16368                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::SpectrumManagementSupport, D)
16369                });
16370                fidl::decode!(
16371                    fidl_fuchsia_wlan_common_common::SpectrumManagementSupport,
16372                    D,
16373                    val_ref,
16374                    decoder,
16375                    inner_offset,
16376                    inner_depth
16377                )?;
16378                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16379                {
16380                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16381                }
16382                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16383                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16384                }
16385            }
16386
16387            next_offset += envelope_size;
16388
16389            // Decode the remaining unknown envelopes.
16390            while next_offset < end_offset {
16391                _next_ordinal_to_read += 1;
16392                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16393                next_offset += envelope_size;
16394            }
16395
16396            Ok(())
16397        }
16398    }
16399
16400    impl WlanFullmacImplQueryTelemetrySupportResponse {
16401        #[inline(always)]
16402        fn max_ordinal_present(&self) -> u64 {
16403            if let Some(_) = self.resp {
16404                return 1;
16405            }
16406            0
16407        }
16408    }
16409
16410    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
16411        type Borrowed<'a> = &'a Self;
16412        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16413            value
16414        }
16415    }
16416
16417    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryTelemetrySupportResponse {
16418        type Owned = Self;
16419
16420        #[inline(always)]
16421        fn inline_align(_context: fidl::encoding::Context) -> usize {
16422            8
16423        }
16424
16425        #[inline(always)]
16426        fn inline_size(_context: fidl::encoding::Context) -> usize {
16427            16
16428        }
16429    }
16430
16431    unsafe impl<D: fidl::encoding::ResourceDialect>
16432        fidl::encoding::Encode<WlanFullmacImplQueryTelemetrySupportResponse, D>
16433        for &WlanFullmacImplQueryTelemetrySupportResponse
16434    {
16435        unsafe fn encode(
16436            self,
16437            encoder: &mut fidl::encoding::Encoder<'_, D>,
16438            offset: usize,
16439            mut depth: fidl::encoding::Depth,
16440        ) -> fidl::Result<()> {
16441            encoder.debug_check_bounds::<WlanFullmacImplQueryTelemetrySupportResponse>(offset);
16442            // Vector header
16443            let max_ordinal: u64 = self.max_ordinal_present();
16444            encoder.write_num(max_ordinal, offset);
16445            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16446            // Calling encoder.out_of_line_offset(0) is not allowed.
16447            if max_ordinal == 0 {
16448                return Ok(());
16449            }
16450            depth.increment()?;
16451            let envelope_size = 8;
16452            let bytes_len = max_ordinal as usize * envelope_size;
16453            #[allow(unused_variables)]
16454            let offset = encoder.out_of_line_offset(bytes_len);
16455            let mut _prev_end_offset: usize = 0;
16456            if 1 > max_ordinal {
16457                return Ok(());
16458            }
16459
16460            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16461            // are envelope_size bytes.
16462            let cur_offset: usize = (1 - 1) * envelope_size;
16463
16464            // Zero reserved fields.
16465            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16466
16467            // Safety:
16468            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16469            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16470            //   envelope_size bytes, there is always sufficient room.
16471            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_stats_common::TelemetrySupport, D>(
16472            self.resp.as_ref().map(<fidl_fuchsia_wlan_stats_common::TelemetrySupport as fidl::encoding::ValueTypeMarker>::borrow),
16473            encoder, offset + cur_offset, depth
16474        )?;
16475
16476            _prev_end_offset = cur_offset + envelope_size;
16477
16478            Ok(())
16479        }
16480    }
16481
16482    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16483        for WlanFullmacImplQueryTelemetrySupportResponse
16484    {
16485        #[inline(always)]
16486        fn new_empty() -> Self {
16487            Self::default()
16488        }
16489
16490        unsafe fn decode(
16491            &mut self,
16492            decoder: &mut fidl::encoding::Decoder<'_, D>,
16493            offset: usize,
16494            mut depth: fidl::encoding::Depth,
16495        ) -> fidl::Result<()> {
16496            decoder.debug_check_bounds::<Self>(offset);
16497            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16498                None => return Err(fidl::Error::NotNullable),
16499                Some(len) => len,
16500            };
16501            // Calling decoder.out_of_line_offset(0) is not allowed.
16502            if len == 0 {
16503                return Ok(());
16504            };
16505            depth.increment()?;
16506            let envelope_size = 8;
16507            let bytes_len = len * envelope_size;
16508            let offset = decoder.out_of_line_offset(bytes_len)?;
16509            // Decode the envelope for each type.
16510            let mut _next_ordinal_to_read = 0;
16511            let mut next_offset = offset;
16512            let end_offset = offset + bytes_len;
16513            _next_ordinal_to_read += 1;
16514            if next_offset >= end_offset {
16515                return Ok(());
16516            }
16517
16518            // Decode unknown envelopes for gaps in ordinals.
16519            while _next_ordinal_to_read < 1 {
16520                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16521                _next_ordinal_to_read += 1;
16522                next_offset += envelope_size;
16523            }
16524
16525            let next_out_of_line = decoder.next_out_of_line();
16526            let handles_before = decoder.remaining_handles();
16527            if let Some((inlined, num_bytes, num_handles)) =
16528                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16529            {
16530                let member_inline_size = <fidl_fuchsia_wlan_stats_common::TelemetrySupport as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16531                if inlined != (member_inline_size <= 4) {
16532                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16533                }
16534                let inner_offset;
16535                let mut inner_depth = depth.clone();
16536                if inlined {
16537                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16538                    inner_offset = next_offset;
16539                } else {
16540                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16541                    inner_depth.increment()?;
16542                }
16543                let val_ref = self.resp.get_or_insert_with(|| {
16544                    fidl::new_empty!(fidl_fuchsia_wlan_stats_common::TelemetrySupport, D)
16545                });
16546                fidl::decode!(
16547                    fidl_fuchsia_wlan_stats_common::TelemetrySupport,
16548                    D,
16549                    val_ref,
16550                    decoder,
16551                    inner_offset,
16552                    inner_depth
16553                )?;
16554                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16555                {
16556                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16557                }
16558                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16559                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16560                }
16561            }
16562
16563            next_offset += envelope_size;
16564
16565            // Decode the remaining unknown envelopes.
16566            while next_offset < end_offset {
16567                _next_ordinal_to_read += 1;
16568                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16569                next_offset += envelope_size;
16570            }
16571
16572            Ok(())
16573        }
16574    }
16575
16576    impl WlanFullmacImplQueryResponse {
16577        #[inline(always)]
16578        fn max_ordinal_present(&self) -> u64 {
16579            if let Some(_) = self.factory_addr {
16580                return 4;
16581            }
16582            if let Some(_) = self.band_caps {
16583                return 3;
16584            }
16585            if let Some(_) = self.role {
16586                return 2;
16587            }
16588            if let Some(_) = self.sta_addr {
16589                return 1;
16590            }
16591            0
16592        }
16593    }
16594
16595    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplQueryResponse {
16596        type Borrowed<'a> = &'a Self;
16597        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16598            value
16599        }
16600    }
16601
16602    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplQueryResponse {
16603        type Owned = Self;
16604
16605        #[inline(always)]
16606        fn inline_align(_context: fidl::encoding::Context) -> usize {
16607            8
16608        }
16609
16610        #[inline(always)]
16611        fn inline_size(_context: fidl::encoding::Context) -> usize {
16612            16
16613        }
16614    }
16615
16616    unsafe impl<D: fidl::encoding::ResourceDialect>
16617        fidl::encoding::Encode<WlanFullmacImplQueryResponse, D> for &WlanFullmacImplQueryResponse
16618    {
16619        unsafe fn encode(
16620            self,
16621            encoder: &mut fidl::encoding::Encoder<'_, D>,
16622            offset: usize,
16623            mut depth: fidl::encoding::Depth,
16624        ) -> fidl::Result<()> {
16625            encoder.debug_check_bounds::<WlanFullmacImplQueryResponse>(offset);
16626            // Vector header
16627            let max_ordinal: u64 = self.max_ordinal_present();
16628            encoder.write_num(max_ordinal, offset);
16629            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16630            // Calling encoder.out_of_line_offset(0) is not allowed.
16631            if max_ordinal == 0 {
16632                return Ok(());
16633            }
16634            depth.increment()?;
16635            let envelope_size = 8;
16636            let bytes_len = max_ordinal as usize * envelope_size;
16637            #[allow(unused_variables)]
16638            let offset = encoder.out_of_line_offset(bytes_len);
16639            let mut _prev_end_offset: usize = 0;
16640            if 1 > max_ordinal {
16641                return Ok(());
16642            }
16643
16644            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16645            // are envelope_size bytes.
16646            let cur_offset: usize = (1 - 1) * envelope_size;
16647
16648            // Zero reserved fields.
16649            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16650
16651            // Safety:
16652            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16653            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16654            //   envelope_size bytes, there is always sufficient room.
16655            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
16656                self.sta_addr
16657                    .as_ref()
16658                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
16659                encoder,
16660                offset + cur_offset,
16661                depth,
16662            )?;
16663
16664            _prev_end_offset = cur_offset + envelope_size;
16665            if 2 > max_ordinal {
16666                return Ok(());
16667            }
16668
16669            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16670            // are envelope_size bytes.
16671            let cur_offset: usize = (2 - 1) * envelope_size;
16672
16673            // Zero reserved fields.
16674            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16675
16676            // Safety:
16677            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16678            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16679            //   envelope_size bytes, there is always sufficient room.
16680            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::WlanMacRole, D>(
16681            self.role.as_ref().map(<fidl_fuchsia_wlan_common_common::WlanMacRole as fidl::encoding::ValueTypeMarker>::borrow),
16682            encoder, offset + cur_offset, depth
16683        )?;
16684
16685            _prev_end_offset = cur_offset + envelope_size;
16686            if 3 > max_ordinal {
16687                return Ok(());
16688            }
16689
16690            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16691            // are envelope_size bytes.
16692            let cur_offset: usize = (3 - 1) * envelope_size;
16693
16694            // Zero reserved fields.
16695            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16696
16697            // Safety:
16698            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16699            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16700            //   envelope_size bytes, there is always sufficient room.
16701            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<BandCapability, 16>, D>(
16702            self.band_caps.as_ref().map(<fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::ValueTypeMarker>::borrow),
16703            encoder, offset + cur_offset, depth
16704        )?;
16705
16706            _prev_end_offset = cur_offset + envelope_size;
16707            if 4 > max_ordinal {
16708                return Ok(());
16709            }
16710
16711            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16712            // are envelope_size bytes.
16713            let cur_offset: usize = (4 - 1) * envelope_size;
16714
16715            // Zero reserved fields.
16716            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16717
16718            // Safety:
16719            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16720            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16721            //   envelope_size bytes, there is always sufficient room.
16722            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
16723                self.factory_addr
16724                    .as_ref()
16725                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
16726                encoder,
16727                offset + cur_offset,
16728                depth,
16729            )?;
16730
16731            _prev_end_offset = cur_offset + envelope_size;
16732
16733            Ok(())
16734        }
16735    }
16736
16737    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16738        for WlanFullmacImplQueryResponse
16739    {
16740        #[inline(always)]
16741        fn new_empty() -> Self {
16742            Self::default()
16743        }
16744
16745        unsafe fn decode(
16746            &mut self,
16747            decoder: &mut fidl::encoding::Decoder<'_, D>,
16748            offset: usize,
16749            mut depth: fidl::encoding::Depth,
16750        ) -> fidl::Result<()> {
16751            decoder.debug_check_bounds::<Self>(offset);
16752            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
16753                None => return Err(fidl::Error::NotNullable),
16754                Some(len) => len,
16755            };
16756            // Calling decoder.out_of_line_offset(0) is not allowed.
16757            if len == 0 {
16758                return Ok(());
16759            };
16760            depth.increment()?;
16761            let envelope_size = 8;
16762            let bytes_len = len * envelope_size;
16763            let offset = decoder.out_of_line_offset(bytes_len)?;
16764            // Decode the envelope for each type.
16765            let mut _next_ordinal_to_read = 0;
16766            let mut next_offset = offset;
16767            let end_offset = offset + bytes_len;
16768            _next_ordinal_to_read += 1;
16769            if next_offset >= end_offset {
16770                return Ok(());
16771            }
16772
16773            // Decode unknown envelopes for gaps in ordinals.
16774            while _next_ordinal_to_read < 1 {
16775                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16776                _next_ordinal_to_read += 1;
16777                next_offset += envelope_size;
16778            }
16779
16780            let next_out_of_line = decoder.next_out_of_line();
16781            let handles_before = decoder.remaining_handles();
16782            if let Some((inlined, num_bytes, num_handles)) =
16783                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16784            {
16785                let member_inline_size =
16786                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
16787                        decoder.context,
16788                    );
16789                if inlined != (member_inline_size <= 4) {
16790                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16791                }
16792                let inner_offset;
16793                let mut inner_depth = depth.clone();
16794                if inlined {
16795                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16796                    inner_offset = next_offset;
16797                } else {
16798                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16799                    inner_depth.increment()?;
16800                }
16801                let val_ref = self
16802                    .sta_addr
16803                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
16804                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
16805                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16806                {
16807                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16808                }
16809                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16810                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16811                }
16812            }
16813
16814            next_offset += envelope_size;
16815            _next_ordinal_to_read += 1;
16816            if next_offset >= end_offset {
16817                return Ok(());
16818            }
16819
16820            // Decode unknown envelopes for gaps in ordinals.
16821            while _next_ordinal_to_read < 2 {
16822                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16823                _next_ordinal_to_read += 1;
16824                next_offset += envelope_size;
16825            }
16826
16827            let next_out_of_line = decoder.next_out_of_line();
16828            let handles_before = decoder.remaining_handles();
16829            if let Some((inlined, num_bytes, num_handles)) =
16830                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16831            {
16832                let member_inline_size = <fidl_fuchsia_wlan_common_common::WlanMacRole as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16833                if inlined != (member_inline_size <= 4) {
16834                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16835                }
16836                let inner_offset;
16837                let mut inner_depth = depth.clone();
16838                if inlined {
16839                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16840                    inner_offset = next_offset;
16841                } else {
16842                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16843                    inner_depth.increment()?;
16844                }
16845                let val_ref = self.role.get_or_insert_with(|| {
16846                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::WlanMacRole, D)
16847                });
16848                fidl::decode!(
16849                    fidl_fuchsia_wlan_common_common::WlanMacRole,
16850                    D,
16851                    val_ref,
16852                    decoder,
16853                    inner_offset,
16854                    inner_depth
16855                )?;
16856                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16857                {
16858                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16859                }
16860                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16861                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16862                }
16863            }
16864
16865            next_offset += envelope_size;
16866            _next_ordinal_to_read += 1;
16867            if next_offset >= end_offset {
16868                return Ok(());
16869            }
16870
16871            // Decode unknown envelopes for gaps in ordinals.
16872            while _next_ordinal_to_read < 3 {
16873                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16874                _next_ordinal_to_read += 1;
16875                next_offset += envelope_size;
16876            }
16877
16878            let next_out_of_line = decoder.next_out_of_line();
16879            let handles_before = decoder.remaining_handles();
16880            if let Some((inlined, num_bytes, num_handles)) =
16881                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16882            {
16883                let member_inline_size = <fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
16884                if inlined != (member_inline_size <= 4) {
16885                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16886                }
16887                let inner_offset;
16888                let mut inner_depth = depth.clone();
16889                if inlined {
16890                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16891                    inner_offset = next_offset;
16892                } else {
16893                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16894                    inner_depth.increment()?;
16895                }
16896                let val_ref = self.band_caps.get_or_insert_with(
16897                    || fidl::new_empty!(fidl::encoding::Vector<BandCapability, 16>, D),
16898                );
16899                fidl::decode!(fidl::encoding::Vector<BandCapability, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
16900                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16901                {
16902                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16903                }
16904                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16905                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16906                }
16907            }
16908
16909            next_offset += envelope_size;
16910            _next_ordinal_to_read += 1;
16911            if next_offset >= end_offset {
16912                return Ok(());
16913            }
16914
16915            // Decode unknown envelopes for gaps in ordinals.
16916            while _next_ordinal_to_read < 4 {
16917                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16918                _next_ordinal_to_read += 1;
16919                next_offset += envelope_size;
16920            }
16921
16922            let next_out_of_line = decoder.next_out_of_line();
16923            let handles_before = decoder.remaining_handles();
16924            if let Some((inlined, num_bytes, num_handles)) =
16925                fidl::encoding::decode_envelope_header(decoder, next_offset)?
16926            {
16927                let member_inline_size =
16928                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
16929                        decoder.context,
16930                    );
16931                if inlined != (member_inline_size <= 4) {
16932                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
16933                }
16934                let inner_offset;
16935                let mut inner_depth = depth.clone();
16936                if inlined {
16937                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
16938                    inner_offset = next_offset;
16939                } else {
16940                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16941                    inner_depth.increment()?;
16942                }
16943                let val_ref = self
16944                    .factory_addr
16945                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
16946                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
16947                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16948                {
16949                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16950                }
16951                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16952                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16953                }
16954            }
16955
16956            next_offset += envelope_size;
16957
16958            // Decode the remaining unknown envelopes.
16959            while next_offset < end_offset {
16960                _next_ordinal_to_read += 1;
16961                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16962                next_offset += envelope_size;
16963            }
16964
16965            Ok(())
16966        }
16967    }
16968
16969    impl WlanFullmacImplReadApfPacketFilterDataResponse {
16970        #[inline(always)]
16971        fn max_ordinal_present(&self) -> u64 {
16972            if let Some(_) = self.memory {
16973                return 1;
16974            }
16975            0
16976        }
16977    }
16978
16979    impl fidl::encoding::ValueTypeMarker for WlanFullmacImplReadApfPacketFilterDataResponse {
16980        type Borrowed<'a> = &'a Self;
16981        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16982            value
16983        }
16984    }
16985
16986    unsafe impl fidl::encoding::TypeMarker for WlanFullmacImplReadApfPacketFilterDataResponse {
16987        type Owned = Self;
16988
16989        #[inline(always)]
16990        fn inline_align(_context: fidl::encoding::Context) -> usize {
16991            8
16992        }
16993
16994        #[inline(always)]
16995        fn inline_size(_context: fidl::encoding::Context) -> usize {
16996            16
16997        }
16998    }
16999
17000    unsafe impl<D: fidl::encoding::ResourceDialect>
17001        fidl::encoding::Encode<WlanFullmacImplReadApfPacketFilterDataResponse, D>
17002        for &WlanFullmacImplReadApfPacketFilterDataResponse
17003    {
17004        unsafe fn encode(
17005            self,
17006            encoder: &mut fidl::encoding::Encoder<'_, D>,
17007            offset: usize,
17008            mut depth: fidl::encoding::Depth,
17009        ) -> fidl::Result<()> {
17010            encoder.debug_check_bounds::<WlanFullmacImplReadApfPacketFilterDataResponse>(offset);
17011            // Vector header
17012            let max_ordinal: u64 = self.max_ordinal_present();
17013            encoder.write_num(max_ordinal, offset);
17014            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17015            // Calling encoder.out_of_line_offset(0) is not allowed.
17016            if max_ordinal == 0 {
17017                return Ok(());
17018            }
17019            depth.increment()?;
17020            let envelope_size = 8;
17021            let bytes_len = max_ordinal as usize * envelope_size;
17022            #[allow(unused_variables)]
17023            let offset = encoder.out_of_line_offset(bytes_len);
17024            let mut _prev_end_offset: usize = 0;
17025            if 1 > max_ordinal {
17026                return Ok(());
17027            }
17028
17029            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17030            // are envelope_size bytes.
17031            let cur_offset: usize = (1 - 1) * envelope_size;
17032
17033            // Zero reserved fields.
17034            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17035
17036            // Safety:
17037            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17038            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17039            //   envelope_size bytes, there is always sufficient room.
17040            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
17041            self.memory.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
17042            encoder, offset + cur_offset, depth
17043        )?;
17044
17045            _prev_end_offset = cur_offset + envelope_size;
17046
17047            Ok(())
17048        }
17049    }
17050
17051    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
17052        for WlanFullmacImplReadApfPacketFilterDataResponse
17053    {
17054        #[inline(always)]
17055        fn new_empty() -> Self {
17056            Self::default()
17057        }
17058
17059        unsafe fn decode(
17060            &mut self,
17061            decoder: &mut fidl::encoding::Decoder<'_, D>,
17062            offset: usize,
17063            mut depth: fidl::encoding::Depth,
17064        ) -> fidl::Result<()> {
17065            decoder.debug_check_bounds::<Self>(offset);
17066            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17067                None => return Err(fidl::Error::NotNullable),
17068                Some(len) => len,
17069            };
17070            // Calling decoder.out_of_line_offset(0) is not allowed.
17071            if len == 0 {
17072                return Ok(());
17073            };
17074            depth.increment()?;
17075            let envelope_size = 8;
17076            let bytes_len = len * envelope_size;
17077            let offset = decoder.out_of_line_offset(bytes_len)?;
17078            // Decode the envelope for each type.
17079            let mut _next_ordinal_to_read = 0;
17080            let mut next_offset = offset;
17081            let end_offset = offset + bytes_len;
17082            _next_ordinal_to_read += 1;
17083            if next_offset >= end_offset {
17084                return Ok(());
17085            }
17086
17087            // Decode unknown envelopes for gaps in ordinals.
17088            while _next_ordinal_to_read < 1 {
17089                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17090                _next_ordinal_to_read += 1;
17091                next_offset += envelope_size;
17092            }
17093
17094            let next_out_of_line = decoder.next_out_of_line();
17095            let handles_before = decoder.remaining_handles();
17096            if let Some((inlined, num_bytes, num_handles)) =
17097                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17098            {
17099                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17100                if inlined != (member_inline_size <= 4) {
17101                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17102                }
17103                let inner_offset;
17104                let mut inner_depth = depth.clone();
17105                if inlined {
17106                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17107                    inner_offset = next_offset;
17108                } else {
17109                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17110                    inner_depth.increment()?;
17111                }
17112                let val_ref = self.memory.get_or_insert_with(|| {
17113                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
17114                });
17115                fidl::decode!(
17116                    fidl::encoding::UnboundedVector<u8>,
17117                    D,
17118                    val_ref,
17119                    decoder,
17120                    inner_offset,
17121                    inner_depth
17122                )?;
17123                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17124                {
17125                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17126                }
17127                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17128                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17129                }
17130            }
17131
17132            next_offset += envelope_size;
17133
17134            // Decode the remaining unknown envelopes.
17135            while next_offset < end_offset {
17136                _next_ordinal_to_read += 1;
17137                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17138                next_offset += envelope_size;
17139            }
17140
17141            Ok(())
17142        }
17143    }
17144
17145    impl WlanFullmacOwePublicKey {
17146        #[inline(always)]
17147        fn max_ordinal_present(&self) -> u64 {
17148            if let Some(_) = self.key {
17149                return 2;
17150            }
17151            if let Some(_) = self.group {
17152                return 1;
17153            }
17154            0
17155        }
17156    }
17157
17158    impl fidl::encoding::ValueTypeMarker for WlanFullmacOwePublicKey {
17159        type Borrowed<'a> = &'a Self;
17160        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17161            value
17162        }
17163    }
17164
17165    unsafe impl fidl::encoding::TypeMarker for WlanFullmacOwePublicKey {
17166        type Owned = Self;
17167
17168        #[inline(always)]
17169        fn inline_align(_context: fidl::encoding::Context) -> usize {
17170            8
17171        }
17172
17173        #[inline(always)]
17174        fn inline_size(_context: fidl::encoding::Context) -> usize {
17175            16
17176        }
17177    }
17178
17179    unsafe impl<D: fidl::encoding::ResourceDialect>
17180        fidl::encoding::Encode<WlanFullmacOwePublicKey, D> for &WlanFullmacOwePublicKey
17181    {
17182        unsafe fn encode(
17183            self,
17184            encoder: &mut fidl::encoding::Encoder<'_, D>,
17185            offset: usize,
17186            mut depth: fidl::encoding::Depth,
17187        ) -> fidl::Result<()> {
17188            encoder.debug_check_bounds::<WlanFullmacOwePublicKey>(offset);
17189            // Vector header
17190            let max_ordinal: u64 = self.max_ordinal_present();
17191            encoder.write_num(max_ordinal, offset);
17192            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17193            // Calling encoder.out_of_line_offset(0) is not allowed.
17194            if max_ordinal == 0 {
17195                return Ok(());
17196            }
17197            depth.increment()?;
17198            let envelope_size = 8;
17199            let bytes_len = max_ordinal as usize * envelope_size;
17200            #[allow(unused_variables)]
17201            let offset = encoder.out_of_line_offset(bytes_len);
17202            let mut _prev_end_offset: usize = 0;
17203            if 1 > max_ordinal {
17204                return Ok(());
17205            }
17206
17207            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17208            // are envelope_size bytes.
17209            let cur_offset: usize = (1 - 1) * envelope_size;
17210
17211            // Zero reserved fields.
17212            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17213
17214            // Safety:
17215            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17216            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17217            //   envelope_size bytes, there is always sufficient room.
17218            fidl::encoding::encode_in_envelope_optional::<u16, D>(
17219                self.group.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
17220                encoder,
17221                offset + cur_offset,
17222                depth,
17223            )?;
17224
17225            _prev_end_offset = cur_offset + envelope_size;
17226            if 2 > max_ordinal {
17227                return Ok(());
17228            }
17229
17230            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17231            // are envelope_size bytes.
17232            let cur_offset: usize = (2 - 1) * envelope_size;
17233
17234            // Zero reserved fields.
17235            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17236
17237            // Safety:
17238            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17239            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17240            //   envelope_size bytes, there is always sufficient room.
17241            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
17242            self.key.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
17243            encoder, offset + cur_offset, depth
17244        )?;
17245
17246            _prev_end_offset = cur_offset + envelope_size;
17247
17248            Ok(())
17249        }
17250    }
17251
17252    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
17253        for WlanFullmacOwePublicKey
17254    {
17255        #[inline(always)]
17256        fn new_empty() -> Self {
17257            Self::default()
17258        }
17259
17260        unsafe fn decode(
17261            &mut self,
17262            decoder: &mut fidl::encoding::Decoder<'_, D>,
17263            offset: usize,
17264            mut depth: fidl::encoding::Depth,
17265        ) -> fidl::Result<()> {
17266            decoder.debug_check_bounds::<Self>(offset);
17267            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17268                None => return Err(fidl::Error::NotNullable),
17269                Some(len) => len,
17270            };
17271            // Calling decoder.out_of_line_offset(0) is not allowed.
17272            if len == 0 {
17273                return Ok(());
17274            };
17275            depth.increment()?;
17276            let envelope_size = 8;
17277            let bytes_len = len * envelope_size;
17278            let offset = decoder.out_of_line_offset(bytes_len)?;
17279            // Decode the envelope for each type.
17280            let mut _next_ordinal_to_read = 0;
17281            let mut next_offset = offset;
17282            let end_offset = offset + bytes_len;
17283            _next_ordinal_to_read += 1;
17284            if next_offset >= end_offset {
17285                return Ok(());
17286            }
17287
17288            // Decode unknown envelopes for gaps in ordinals.
17289            while _next_ordinal_to_read < 1 {
17290                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17291                _next_ordinal_to_read += 1;
17292                next_offset += envelope_size;
17293            }
17294
17295            let next_out_of_line = decoder.next_out_of_line();
17296            let handles_before = decoder.remaining_handles();
17297            if let Some((inlined, num_bytes, num_handles)) =
17298                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17299            {
17300                let member_inline_size =
17301                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17302                if inlined != (member_inline_size <= 4) {
17303                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17304                }
17305                let inner_offset;
17306                let mut inner_depth = depth.clone();
17307                if inlined {
17308                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17309                    inner_offset = next_offset;
17310                } else {
17311                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17312                    inner_depth.increment()?;
17313                }
17314                let val_ref = self.group.get_or_insert_with(|| fidl::new_empty!(u16, D));
17315                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
17316                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17317                {
17318                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17319                }
17320                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17321                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17322                }
17323            }
17324
17325            next_offset += envelope_size;
17326            _next_ordinal_to_read += 1;
17327            if next_offset >= end_offset {
17328                return Ok(());
17329            }
17330
17331            // Decode unknown envelopes for gaps in ordinals.
17332            while _next_ordinal_to_read < 2 {
17333                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17334                _next_ordinal_to_read += 1;
17335                next_offset += envelope_size;
17336            }
17337
17338            let next_out_of_line = decoder.next_out_of_line();
17339            let handles_before = decoder.remaining_handles();
17340            if let Some((inlined, num_bytes, num_handles)) =
17341                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17342            {
17343                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17344                if inlined != (member_inline_size <= 4) {
17345                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17346                }
17347                let inner_offset;
17348                let mut inner_depth = depth.clone();
17349                if inlined {
17350                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17351                    inner_offset = next_offset;
17352                } else {
17353                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17354                    inner_depth.increment()?;
17355                }
17356                let val_ref = self.key.get_or_insert_with(|| {
17357                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
17358                });
17359                fidl::decode!(
17360                    fidl::encoding::UnboundedVector<u8>,
17361                    D,
17362                    val_ref,
17363                    decoder,
17364                    inner_offset,
17365                    inner_depth
17366                )?;
17367                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17368                {
17369                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17370                }
17371                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17372                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17373                }
17374            }
17375
17376            next_offset += envelope_size;
17377
17378            // Decode the remaining unknown envelopes.
17379            while next_offset < end_offset {
17380                _next_ordinal_to_read += 1;
17381                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17382                next_offset += envelope_size;
17383            }
17384
17385            Ok(())
17386        }
17387    }
17388
17389    impl WlanFullmacSignalReportIndication {
17390        #[inline(always)]
17391        fn max_ordinal_present(&self) -> u64 {
17392            if let Some(_) = self.rx_rate_500kbps {
17393                return 4;
17394            }
17395            if let Some(_) = self.tx_rate_500kbps {
17396                return 3;
17397            }
17398            if let Some(_) = self.snr_db {
17399                return 2;
17400            }
17401            if let Some(_) = self.rssi_dbm {
17402                return 1;
17403            }
17404            0
17405        }
17406    }
17407
17408    impl fidl::encoding::ValueTypeMarker for WlanFullmacSignalReportIndication {
17409        type Borrowed<'a> = &'a Self;
17410        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17411            value
17412        }
17413    }
17414
17415    unsafe impl fidl::encoding::TypeMarker for WlanFullmacSignalReportIndication {
17416        type Owned = Self;
17417
17418        #[inline(always)]
17419        fn inline_align(_context: fidl::encoding::Context) -> usize {
17420            8
17421        }
17422
17423        #[inline(always)]
17424        fn inline_size(_context: fidl::encoding::Context) -> usize {
17425            16
17426        }
17427    }
17428
17429    unsafe impl<D: fidl::encoding::ResourceDialect>
17430        fidl::encoding::Encode<WlanFullmacSignalReportIndication, D>
17431        for &WlanFullmacSignalReportIndication
17432    {
17433        unsafe fn encode(
17434            self,
17435            encoder: &mut fidl::encoding::Encoder<'_, D>,
17436            offset: usize,
17437            mut depth: fidl::encoding::Depth,
17438        ) -> fidl::Result<()> {
17439            encoder.debug_check_bounds::<WlanFullmacSignalReportIndication>(offset);
17440            // Vector header
17441            let max_ordinal: u64 = self.max_ordinal_present();
17442            encoder.write_num(max_ordinal, offset);
17443            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17444            // Calling encoder.out_of_line_offset(0) is not allowed.
17445            if max_ordinal == 0 {
17446                return Ok(());
17447            }
17448            depth.increment()?;
17449            let envelope_size = 8;
17450            let bytes_len = max_ordinal as usize * envelope_size;
17451            #[allow(unused_variables)]
17452            let offset = encoder.out_of_line_offset(bytes_len);
17453            let mut _prev_end_offset: usize = 0;
17454            if 1 > max_ordinal {
17455                return Ok(());
17456            }
17457
17458            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17459            // are envelope_size bytes.
17460            let cur_offset: usize = (1 - 1) * envelope_size;
17461
17462            // Zero reserved fields.
17463            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17464
17465            // Safety:
17466            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17467            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17468            //   envelope_size bytes, there is always sufficient room.
17469            fidl::encoding::encode_in_envelope_optional::<i8, D>(
17470                self.rssi_dbm.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
17471                encoder,
17472                offset + cur_offset,
17473                depth,
17474            )?;
17475
17476            _prev_end_offset = cur_offset + envelope_size;
17477            if 2 > max_ordinal {
17478                return Ok(());
17479            }
17480
17481            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17482            // are envelope_size bytes.
17483            let cur_offset: usize = (2 - 1) * envelope_size;
17484
17485            // Zero reserved fields.
17486            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17487
17488            // Safety:
17489            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17490            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17491            //   envelope_size bytes, there is always sufficient room.
17492            fidl::encoding::encode_in_envelope_optional::<i8, D>(
17493                self.snr_db.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
17494                encoder,
17495                offset + cur_offset,
17496                depth,
17497            )?;
17498
17499            _prev_end_offset = cur_offset + envelope_size;
17500            if 3 > max_ordinal {
17501                return Ok(());
17502            }
17503
17504            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17505            // are envelope_size bytes.
17506            let cur_offset: usize = (3 - 1) * envelope_size;
17507
17508            // Zero reserved fields.
17509            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17510
17511            // Safety:
17512            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17513            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17514            //   envelope_size bytes, there is always sufficient room.
17515            fidl::encoding::encode_in_envelope_optional::<u32, D>(
17516                self.tx_rate_500kbps.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
17517                encoder,
17518                offset + cur_offset,
17519                depth,
17520            )?;
17521
17522            _prev_end_offset = cur_offset + envelope_size;
17523            if 4 > max_ordinal {
17524                return Ok(());
17525            }
17526
17527            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17528            // are envelope_size bytes.
17529            let cur_offset: usize = (4 - 1) * envelope_size;
17530
17531            // Zero reserved fields.
17532            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17533
17534            // Safety:
17535            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17536            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17537            //   envelope_size bytes, there is always sufficient room.
17538            fidl::encoding::encode_in_envelope_optional::<u32, D>(
17539                self.rx_rate_500kbps.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
17540                encoder,
17541                offset + cur_offset,
17542                depth,
17543            )?;
17544
17545            _prev_end_offset = cur_offset + envelope_size;
17546
17547            Ok(())
17548        }
17549    }
17550
17551    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
17552        for WlanFullmacSignalReportIndication
17553    {
17554        #[inline(always)]
17555        fn new_empty() -> Self {
17556            Self::default()
17557        }
17558
17559        unsafe fn decode(
17560            &mut self,
17561            decoder: &mut fidl::encoding::Decoder<'_, D>,
17562            offset: usize,
17563            mut depth: fidl::encoding::Depth,
17564        ) -> fidl::Result<()> {
17565            decoder.debug_check_bounds::<Self>(offset);
17566            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17567                None => return Err(fidl::Error::NotNullable),
17568                Some(len) => len,
17569            };
17570            // Calling decoder.out_of_line_offset(0) is not allowed.
17571            if len == 0 {
17572                return Ok(());
17573            };
17574            depth.increment()?;
17575            let envelope_size = 8;
17576            let bytes_len = len * envelope_size;
17577            let offset = decoder.out_of_line_offset(bytes_len)?;
17578            // Decode the envelope for each type.
17579            let mut _next_ordinal_to_read = 0;
17580            let mut next_offset = offset;
17581            let end_offset = offset + bytes_len;
17582            _next_ordinal_to_read += 1;
17583            if next_offset >= end_offset {
17584                return Ok(());
17585            }
17586
17587            // Decode unknown envelopes for gaps in ordinals.
17588            while _next_ordinal_to_read < 1 {
17589                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17590                _next_ordinal_to_read += 1;
17591                next_offset += envelope_size;
17592            }
17593
17594            let next_out_of_line = decoder.next_out_of_line();
17595            let handles_before = decoder.remaining_handles();
17596            if let Some((inlined, num_bytes, num_handles)) =
17597                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17598            {
17599                let member_inline_size =
17600                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17601                if inlined != (member_inline_size <= 4) {
17602                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17603                }
17604                let inner_offset;
17605                let mut inner_depth = depth.clone();
17606                if inlined {
17607                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17608                    inner_offset = next_offset;
17609                } else {
17610                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17611                    inner_depth.increment()?;
17612                }
17613                let val_ref = self.rssi_dbm.get_or_insert_with(|| fidl::new_empty!(i8, D));
17614                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
17615                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17616                {
17617                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17618                }
17619                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17620                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17621                }
17622            }
17623
17624            next_offset += envelope_size;
17625            _next_ordinal_to_read += 1;
17626            if next_offset >= end_offset {
17627                return Ok(());
17628            }
17629
17630            // Decode unknown envelopes for gaps in ordinals.
17631            while _next_ordinal_to_read < 2 {
17632                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17633                _next_ordinal_to_read += 1;
17634                next_offset += envelope_size;
17635            }
17636
17637            let next_out_of_line = decoder.next_out_of_line();
17638            let handles_before = decoder.remaining_handles();
17639            if let Some((inlined, num_bytes, num_handles)) =
17640                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17641            {
17642                let member_inline_size =
17643                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17644                if inlined != (member_inline_size <= 4) {
17645                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17646                }
17647                let inner_offset;
17648                let mut inner_depth = depth.clone();
17649                if inlined {
17650                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17651                    inner_offset = next_offset;
17652                } else {
17653                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17654                    inner_depth.increment()?;
17655                }
17656                let val_ref = self.snr_db.get_or_insert_with(|| fidl::new_empty!(i8, D));
17657                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
17658                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17659                {
17660                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17661                }
17662                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17663                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17664                }
17665            }
17666
17667            next_offset += envelope_size;
17668            _next_ordinal_to_read += 1;
17669            if next_offset >= end_offset {
17670                return Ok(());
17671            }
17672
17673            // Decode unknown envelopes for gaps in ordinals.
17674            while _next_ordinal_to_read < 3 {
17675                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17676                _next_ordinal_to_read += 1;
17677                next_offset += envelope_size;
17678            }
17679
17680            let next_out_of_line = decoder.next_out_of_line();
17681            let handles_before = decoder.remaining_handles();
17682            if let Some((inlined, num_bytes, num_handles)) =
17683                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17684            {
17685                let member_inline_size =
17686                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17687                if inlined != (member_inline_size <= 4) {
17688                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17689                }
17690                let inner_offset;
17691                let mut inner_depth = depth.clone();
17692                if inlined {
17693                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17694                    inner_offset = next_offset;
17695                } else {
17696                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17697                    inner_depth.increment()?;
17698                }
17699                let val_ref = self.tx_rate_500kbps.get_or_insert_with(|| fidl::new_empty!(u32, D));
17700                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
17701                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17702                {
17703                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17704                }
17705                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17706                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17707                }
17708            }
17709
17710            next_offset += envelope_size;
17711            _next_ordinal_to_read += 1;
17712            if next_offset >= end_offset {
17713                return Ok(());
17714            }
17715
17716            // Decode unknown envelopes for gaps in ordinals.
17717            while _next_ordinal_to_read < 4 {
17718                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17719                _next_ordinal_to_read += 1;
17720                next_offset += envelope_size;
17721            }
17722
17723            let next_out_of_line = decoder.next_out_of_line();
17724            let handles_before = decoder.remaining_handles();
17725            if let Some((inlined, num_bytes, num_handles)) =
17726                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17727            {
17728                let member_inline_size =
17729                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
17730                if inlined != (member_inline_size <= 4) {
17731                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17732                }
17733                let inner_offset;
17734                let mut inner_depth = depth.clone();
17735                if inlined {
17736                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17737                    inner_offset = next_offset;
17738                } else {
17739                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17740                    inner_depth.increment()?;
17741                }
17742                let val_ref = self.rx_rate_500kbps.get_or_insert_with(|| fidl::new_empty!(u32, D));
17743                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
17744                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17745                {
17746                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17747                }
17748                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17749                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17750                }
17751            }
17752
17753            next_offset += envelope_size;
17754
17755            // Decode the remaining unknown envelopes.
17756            while next_offset < end_offset {
17757                _next_ordinal_to_read += 1;
17758                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17759                next_offset += envelope_size;
17760            }
17761
17762            Ok(())
17763        }
17764    }
17765}