Skip to main content

fidl_fuchsia_wlan_mlme_common/
fidl_fuchsia_wlan_mlme_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
11/// WFA WMM v1.2, 2.2.1
12pub type QosInfo = u8;
13
14pub const MAX_SSIDS_PER_SCAN_REQUEST: u32 = 32;
15
16/// WFA WMM v1.2, 2.2.2 Table 5
17/// Length of the WMM Parameter Element body. This does not include IE and vendor IE headers,
18/// and only includes the QoS Info, reserved, and AC parameters fields.
19pub const WMM_PARAM_LEN: u8 = 18;
20
21pub const COUNTRY_ENVIRON_ALL: u8 = 32;
22
23pub const COUNTRY_ENVIRON_INDOOR: u8 = 73;
24
25pub const COUNTRY_ENVIRON_NON_COUNTRY: u8 = 88;
26
27pub const COUNTRY_ENVIRON_OUTDOOR: u8 = 79;
28
29bitflags! {
30    /// Bits used to request management frame subtypes to be captured. Also used in
31    /// StartCaptureFramesResponse to indicate what management frames are supported.
32    ///
33    /// These values are set at `1 << MgmtFrameSubtypeValue`
34    /// See IEEE Std 802.11-2016, 9.2.4.1.3, for value of each management frame subtype
35    #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
36    pub struct MgmtFrameCaptureFlags: u32 {
37        const ASSOC_REQ = 1;
38        const ASSOC_RESP = 2;
39        const REASSOC_REQ = 4;
40        const REASSOC_RESP = 8;
41        const PROBE_REQ = 16;
42        const PROBE_RESP = 32;
43        const TIMING_AD = 64;
44        const BEACON = 256;
45        const ATIM = 512;
46        const DISASSOC = 1024;
47        const AUTH = 2048;
48        const DEAUTH = 4096;
49        const ACTION = 8192;
50        const ACTION_NO_ACK = 16384;
51    }
52}
53
54impl MgmtFrameCaptureFlags {}
55
56#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
57#[repr(u32)]
58pub enum AssociateResultCode {
59    Success = 0,
60    RefusedReasonUnspecified = 1,
61    RefusedNotAuthenticated = 2,
62    RefusedCapabilitiesMismatch = 3,
63    RefusedExternalReason = 4,
64    RefusedApOutOfMemory = 5,
65    RefusedBasicRatesMismatch = 6,
66    RejectedEmergencyServicesNotSupported = 7,
67    RefusedTemporarily = 8,
68}
69
70impl AssociateResultCode {
71    #[inline]
72    pub fn from_primitive(prim: u32) -> Option<Self> {
73        match prim {
74            0 => Some(Self::Success),
75            1 => Some(Self::RefusedReasonUnspecified),
76            2 => Some(Self::RefusedNotAuthenticated),
77            3 => Some(Self::RefusedCapabilitiesMismatch),
78            4 => Some(Self::RefusedExternalReason),
79            5 => Some(Self::RefusedApOutOfMemory),
80            6 => Some(Self::RefusedBasicRatesMismatch),
81            7 => Some(Self::RejectedEmergencyServicesNotSupported),
82            8 => Some(Self::RefusedTemporarily),
83            _ => None,
84        }
85    }
86
87    #[inline]
88    pub const fn into_primitive(self) -> u32 {
89        self as u32
90    }
91}
92
93#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
94#[repr(u32)]
95pub enum AuthenticateResultCode {
96    Success = 0,
97    Refused = 1,
98    AntiCloggingTokenRequired = 2,
99    FiniteCyclicGroupNotSupported = 3,
100    AuthenticationRejected = 4,
101    AuthFailureTimeout = 5,
102}
103
104impl AuthenticateResultCode {
105    #[inline]
106    pub fn from_primitive(prim: u32) -> Option<Self> {
107        match prim {
108            0 => Some(Self::Success),
109            1 => Some(Self::Refused),
110            2 => Some(Self::AntiCloggingTokenRequired),
111            3 => Some(Self::FiniteCyclicGroupNotSupported),
112            4 => Some(Self::AuthenticationRejected),
113            5 => Some(Self::AuthFailureTimeout),
114            _ => None,
115        }
116    }
117
118    #[inline]
119    pub const fn into_primitive(self) -> u32 {
120        self as u32
121    }
122}
123
124#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
125#[repr(u32)]
126pub enum AuthenticationTypes {
127    OpenSystem = 1,
128    SharedKey = 2,
129    FastBssTransition = 3,
130    Sae = 4,
131}
132
133impl AuthenticationTypes {
134    #[inline]
135    pub fn from_primitive(prim: u32) -> Option<Self> {
136        match prim {
137            1 => Some(Self::OpenSystem),
138            2 => Some(Self::SharedKey),
139            3 => Some(Self::FastBssTransition),
140            4 => Some(Self::Sae),
141            _ => None,
142        }
143    }
144
145    #[inline]
146    pub const fn into_primitive(self) -> u32 {
147        self as u32
148    }
149}
150
151#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
152#[repr(u32)]
153pub enum ControlledPortState {
154    Closed = 0,
155    Open = 1,
156}
157
158impl ControlledPortState {
159    #[inline]
160    pub fn from_primitive(prim: u32) -> Option<Self> {
161        match prim {
162            0 => Some(Self::Closed),
163            1 => Some(Self::Open),
164            _ => None,
165        }
166    }
167
168    #[inline]
169    pub const fn into_primitive(self) -> u32 {
170        self as u32
171    }
172}
173
174#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
175#[repr(u32)]
176pub enum EapolResultCode {
177    Success = 0,
178    TransmissionFailure = 1,
179}
180
181impl EapolResultCode {
182    #[inline]
183    pub fn from_primitive(prim: u32) -> Option<Self> {
184        match prim {
185            0 => Some(Self::Success),
186            1 => Some(Self::TransmissionFailure),
187            _ => None,
188        }
189    }
190
191    #[inline]
192    pub const fn into_primitive(self) -> u32 {
193        self as u32
194    }
195}
196
197#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
198#[repr(u32)]
199pub enum KeyType {
200    Group = 1,
201    Pairwise = 2,
202    PeerKey = 3,
203    Igtk = 4,
204}
205
206impl KeyType {
207    #[inline]
208    pub fn from_primitive(prim: u32) -> Option<Self> {
209        match prim {
210            1 => Some(Self::Group),
211            2 => Some(Self::Pairwise),
212            3 => Some(Self::PeerKey),
213            4 => Some(Self::Igtk),
214            _ => None,
215        }
216    }
217
218    #[inline]
219    pub const fn into_primitive(self) -> u32 {
220        self as u32
221    }
222}
223
224#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
225#[repr(u32)]
226pub enum ScanResultCode {
227    Success = 0,
228    NotSupported = 1,
229    InvalidArgs = 2,
230    InternalError = 3,
231    ShouldWait = 4,
232    CanceledByDriverOrFirmware = 5,
233}
234
235impl ScanResultCode {
236    #[inline]
237    pub fn from_primitive(prim: u32) -> Option<Self> {
238        match prim {
239            0 => Some(Self::Success),
240            1 => Some(Self::NotSupported),
241            2 => Some(Self::InvalidArgs),
242            3 => Some(Self::InternalError),
243            4 => Some(Self::ShouldWait),
244            5 => Some(Self::CanceledByDriverOrFirmware),
245            _ => None,
246        }
247    }
248
249    #[inline]
250    pub const fn into_primitive(self) -> u32 {
251        self as u32
252    }
253}
254
255#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
256#[repr(u32)]
257pub enum ScanTypes {
258    Active = 1,
259    Passive = 2,
260}
261
262impl ScanTypes {
263    #[inline]
264    pub fn from_primitive(prim: u32) -> Option<Self> {
265        match prim {
266            1 => Some(Self::Active),
267            2 => Some(Self::Passive),
268            _ => None,
269        }
270    }
271
272    #[inline]
273    pub const fn into_primitive(self) -> u32 {
274        self as u32
275    }
276}
277
278#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
279#[repr(u32)]
280pub enum StartResultCode {
281    Success = 0,
282    BssAlreadyStartedOrJoined = 1,
283    ResetRequiredBeforeStart = 2,
284    NotSupported = 3,
285    InternalError = 4,
286}
287
288impl StartResultCode {
289    #[inline]
290    pub fn from_primitive(prim: u32) -> Option<Self> {
291        match prim {
292            0 => Some(Self::Success),
293            1 => Some(Self::BssAlreadyStartedOrJoined),
294            2 => Some(Self::ResetRequiredBeforeStart),
295            3 => Some(Self::NotSupported),
296            4 => Some(Self::InternalError),
297            _ => None,
298        }
299    }
300
301    #[inline]
302    pub const fn into_primitive(self) -> u32 {
303        self as u32
304    }
305}
306
307#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
308#[repr(u32)]
309pub enum StopResultCode {
310    Success = 0,
311    BssAlreadyStopped = 1,
312    InternalError = 2,
313}
314
315impl StopResultCode {
316    #[inline]
317    pub fn from_primitive(prim: u32) -> Option<Self> {
318        match prim {
319            0 => Some(Self::Success),
320            1 => Some(Self::BssAlreadyStopped),
321            2 => Some(Self::InternalError),
322            _ => None,
323        }
324    }
325
326    #[inline]
327    pub const fn into_primitive(self) -> u32 {
328        self as u32
329    }
330}
331
332#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
333pub struct AssociateIndication {
334    pub peer_sta_address: [u8; 6],
335    pub capability_info: u16,
336    pub listen_interval: u16,
337    pub ssid: Option<Vec<u8>>,
338    pub rates: Vec<u8>,
339    pub rsne: Option<Vec<u8>>,
340}
341
342impl fidl::Persistable for AssociateIndication {}
343
344#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
345pub struct AssociateResponse {
346    pub peer_sta_address: [u8; 6],
347    pub result_code: AssociateResultCode,
348    pub association_id: u16,
349    pub capability_info: u16,
350    pub rates: Vec<u8>,
351}
352
353impl fidl::Persistable for AssociateResponse {}
354
355#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
356pub struct AuthenticateIndication {
357    pub peer_sta_address: [u8; 6],
358    pub auth_type: AuthenticationTypes,
359}
360
361impl fidl::Persistable for AuthenticateIndication {}
362
363#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
364pub struct AuthenticateResponse {
365    pub peer_sta_address: [u8; 6],
366    pub result_code: AuthenticateResultCode,
367}
368
369impl fidl::Persistable for AuthenticateResponse {}
370
371#[derive(Clone, Debug, PartialEq)]
372pub struct BandCapability {
373    /// The values of this struct apply to the band indicated in this field.
374    pub band: fidl_fuchsia_wlan_ieee80211_common::WlanBand,
375    /// Basic rates supported in units of 500 kbit/s (as defined in
376    /// IEEE Std 802.11-2016, 9.4.2.3), e.g., 0x02 represents 1 Mbps.
377    /// The value returned by this type indicates all the non-HT rates
378    /// the device supports transmitting and receiving.
379    pub basic_rates: Vec<u8>,
380    pub ht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>>,
381    pub vht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>>,
382    /// A list of operating channels considered valid by hardware, in the context of
383    /// regulatory information known to the device driver, at the time of its
384    /// construction during iface creation. In this context, an operating channel
385    /// means a channel which APs may transmit Beacon frames on in the current
386    /// regulatory domain.
387    ///
388    /// This list should be used to determine efficacy of subsequent requests to
389    /// scan a subset of channels using the iface, or to determine which operating
390    /// channel to use when starting an AP.
391    pub operating_channels: Vec<u8>,
392}
393
394impl fidl::Persistable for BandCapability {}
395
396#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
397pub struct CapturedFrameResult {
398    pub frame: Vec<u8>,
399}
400
401impl fidl::Persistable for CapturedFrameResult {}
402
403#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
404pub struct ConnectConfirm {
405    pub peer_sta_address: [u8; 6],
406    pub result_code: fidl_fuchsia_wlan_ieee80211_common::StatusCode,
407    pub association_id: u16,
408    pub association_ies: Vec<u8>,
409}
410
411impl fidl::Persistable for ConnectConfirm {}
412
413#[derive(Clone, Debug, PartialEq)]
414pub struct ConnectRequest {
415    pub selected_bss: fidl_fuchsia_wlan_ieee80211_common::BssDescription,
416    pub connect_failure_timeout: u32,
417    /// Additional parameters specific to the authentication exchange.
418    pub auth_type: AuthenticationTypes,
419    pub sae_password: Vec<u8>,
420    /// WEP key used in the authentication exchange. Only included for WEP security type.
421    pub wep_key: Option<Box<SetKeyDescriptor>>,
422    /// Additional parameters specific to the association exchange.
423    pub security_ie: Vec<u8>,
424    /// OWE public key used for Diffie Hellman exchange during association.
425    /// Only included for OWE security type.
426    pub owe_public_key: Option<Box<fidl_fuchsia_wlan_internal_common::OwePublicKey>>,
427}
428
429impl fidl::Persistable for ConnectRequest {}
430
431#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
432#[repr(C)]
433pub struct Country {
434    pub alpha2: [u8; 2],
435    pub suffix: u8,
436}
437
438impl fidl::Persistable for Country {}
439
440#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
441#[repr(C)]
442pub struct DeauthenticateConfirm {
443    pub peer_sta_address: [u8; 6],
444}
445
446impl fidl::Persistable for DeauthenticateConfirm {}
447
448#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
449pub struct DeauthenticateIndication {
450    pub peer_sta_address: [u8; 6],
451    pub reason_code: fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
452    /// locally_initiated is true if deauth is initiated from the device,
453    /// and is false if it's initiated remotely (e.g. due to deauth frame)
454    pub locally_initiated: bool,
455}
456
457impl fidl::Persistable for DeauthenticateIndication {}
458
459#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
460pub struct DeauthenticateRequest {
461    pub peer_sta_address: [u8; 6],
462    pub reason_code: fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
463}
464
465impl fidl::Persistable for DeauthenticateRequest {}
466
467#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
468pub struct DeleteKeyDescriptor {
469    pub key_id: u16,
470    pub key_type: KeyType,
471    pub address: [u8; 6],
472}
473
474impl fidl::Persistable for DeleteKeyDescriptor {}
475
476#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
477pub struct DeleteKeysRequest {
478    pub keylist: Vec<DeleteKeyDescriptor>,
479}
480
481impl fidl::Persistable for DeleteKeysRequest {}
482
483#[derive(Clone, Debug, PartialEq)]
484pub struct DeviceInfo {
485    pub sta_addr: [u8; 6],
486    pub factory_addr: [u8; 6],
487    pub role: fidl_fuchsia_wlan_common_common::WlanMacRole,
488    pub bands: Vec<BandCapability>,
489    pub softmac_hardware_capability: u32,
490    pub qos_capable: bool,
491}
492
493impl fidl::Persistable for DeviceInfo {}
494
495#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
496#[repr(C)]
497pub struct DisassociateConfirm {
498    pub status: i32,
499}
500
501impl fidl::Persistable for DisassociateConfirm {}
502
503#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
504pub struct DisassociateIndication {
505    pub peer_sta_address: [u8; 6],
506    pub reason_code: fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
507    /// locally_initiated is true if diassoc is initiated from the device,
508    /// and is false if it's initiated remotely (e.g. due to disassoc frame)
509    pub locally_initiated: bool,
510}
511
512impl fidl::Persistable for DisassociateIndication {}
513
514#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
515pub struct DisassociateRequest {
516    pub peer_sta_address: [u8; 6],
517    pub reason_code: fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
518}
519
520impl fidl::Persistable for DisassociateRequest {}
521
522#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
523pub struct EapolConfirm {
524    pub result_code: EapolResultCode,
525    /// This value corresponds to the dst_addr in the EapolRequest we're confirming.
526    /// IEEE 802.11-2016 does not include this field, but we need it to disambiguate
527    /// if multiple EAPoL handshakes are ongoing.
528    pub dst_addr: [u8; 6],
529}
530
531impl fidl::Persistable for EapolConfirm {}
532
533#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
534pub struct EapolIndication {
535    pub src_addr: [u8; 6],
536    pub dst_addr: [u8; 6],
537    pub data: Vec<u8>,
538}
539
540impl fidl::Persistable for EapolIndication {}
541
542#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
543pub struct EapolRequest {
544    pub src_addr: [u8; 6],
545    pub dst_addr: [u8; 6],
546    pub data: Vec<u8>,
547}
548
549impl fidl::Persistable for EapolRequest {}
550
551#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
552pub struct MlmeGetApfPacketFilterEnabledResponse {
553    pub enabled: bool,
554}
555
556impl fidl::Persistable for MlmeGetApfPacketFilterEnabledResponse {}
557
558#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
559pub struct MlmeGetScheduledScanEnabledResponse {
560    pub active_txn_ids: Vec<u64>,
561}
562
563impl fidl::Persistable for MlmeGetScheduledScanEnabledResponse {}
564
565#[derive(Clone, Debug, PartialEq)]
566pub struct MlmeGetSignalReportResponse {
567    pub resp: fidl_fuchsia_wlan_stats_common::SignalReport,
568}
569
570impl fidl::Persistable for MlmeGetSignalReportResponse {}
571
572#[derive(Clone, Debug, PartialEq)]
573pub struct MlmeQueryTelemetrySupportResponse {
574    pub resp: fidl_fuchsia_wlan_stats_common::TelemetrySupport,
575}
576
577impl fidl::Persistable for MlmeQueryTelemetrySupportResponse {}
578
579#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
580pub struct MlmeReadApfPacketFilterDataResponse {
581    pub memory: Vec<u8>,
582}
583
584impl fidl::Persistable for MlmeReadApfPacketFilterDataResponse {}
585
586#[derive(Clone, Debug, PartialEq)]
587pub struct MinstrelListResponse {
588    pub peers: fidl_fuchsia_wlan_minstrel_common::Peers,
589}
590
591impl fidl::Persistable for MinstrelListResponse {}
592
593#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
594#[repr(C)]
595pub struct MinstrelStatsRequest {
596    pub peer_addr: [u8; 6],
597}
598
599impl fidl::Persistable for MinstrelStatsRequest {}
600
601#[derive(Clone, Debug, PartialEq)]
602pub struct MinstrelStatsResponse {
603    pub peer: Option<Box<fidl_fuchsia_wlan_minstrel_common::Peer>>,
604}
605
606impl fidl::Persistable for MinstrelStatsResponse {}
607
608#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
609pub struct MlmeAssociateIndRequest {
610    pub ind: AssociateIndication,
611}
612
613impl fidl::Persistable for MlmeAssociateIndRequest {}
614
615#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
616pub struct MlmeAssociateRespRequest {
617    pub resp: AssociateResponse,
618}
619
620impl fidl::Persistable for MlmeAssociateRespRequest {}
621
622#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
623pub struct MlmeAuthenticateIndRequest {
624    pub ind: AuthenticateIndication,
625}
626
627impl fidl::Persistable for MlmeAuthenticateIndRequest {}
628
629#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
630pub struct MlmeAuthenticateRespRequest {
631    pub resp: AuthenticateResponse,
632}
633
634impl fidl::Persistable for MlmeAuthenticateRespRequest {}
635
636#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
637pub struct MlmeConnectConfRequest {
638    pub resp: ConnectConfirm,
639}
640
641impl fidl::Persistable for MlmeConnectConfRequest {}
642
643#[derive(Clone, Debug, PartialEq)]
644pub struct MlmeConnectReqRequest {
645    pub req: ConnectRequest,
646}
647
648impl fidl::Persistable for MlmeConnectReqRequest {}
649
650#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
651#[repr(C)]
652pub struct MlmeDeauthenticateConfRequest {
653    pub resp: DeauthenticateConfirm,
654}
655
656impl fidl::Persistable for MlmeDeauthenticateConfRequest {}
657
658#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
659pub struct MlmeDeauthenticateIndRequest {
660    pub ind: DeauthenticateIndication,
661}
662
663impl fidl::Persistable for MlmeDeauthenticateIndRequest {}
664
665#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
666pub struct MlmeDeauthenticateReqRequest {
667    pub req: DeauthenticateRequest,
668}
669
670impl fidl::Persistable for MlmeDeauthenticateReqRequest {}
671
672#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
673pub struct MlmeDeleteKeysReqRequest {
674    pub req: DeleteKeysRequest,
675}
676
677impl fidl::Persistable for MlmeDeleteKeysReqRequest {}
678
679#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
680#[repr(C)]
681pub struct MlmeDisassociateConfRequest {
682    pub resp: DisassociateConfirm,
683}
684
685impl fidl::Persistable for MlmeDisassociateConfRequest {}
686
687#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
688pub struct MlmeDisassociateIndRequest {
689    pub ind: DisassociateIndication,
690}
691
692impl fidl::Persistable for MlmeDisassociateIndRequest {}
693
694#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
695pub struct MlmeDisassociateReqRequest {
696    pub req: DisassociateRequest,
697}
698
699impl fidl::Persistable for MlmeDisassociateReqRequest {}
700
701#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
702pub struct MlmeEapolConfRequest {
703    pub resp: EapolConfirm,
704}
705
706impl fidl::Persistable for MlmeEapolConfRequest {}
707
708#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
709pub struct MlmeEapolIndRequest {
710    pub ind: EapolIndication,
711}
712
713impl fidl::Persistable for MlmeEapolIndRequest {}
714
715#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
716pub struct MlmeEapolReqRequest {
717    pub req: EapolRequest,
718}
719
720impl fidl::Persistable for MlmeEapolReqRequest {}
721
722#[derive(Clone, Debug, PartialEq)]
723pub struct MlmeFinalizeAssociationReqRequest {
724    pub negotiated_capabilities: NegotiatedCapabilities,
725}
726
727impl fidl::Persistable for MlmeFinalizeAssociationReqRequest {}
728
729#[derive(Clone, Debug, PartialEq)]
730pub struct MlmeGetIfaceHistogramStatsResponse {
731    pub resp: GetIfaceHistogramStatsResponse,
732}
733
734impl fidl::Persistable for MlmeGetIfaceHistogramStatsResponse {}
735
736#[derive(Clone, Debug, PartialEq)]
737pub struct MlmeGetIfaceStatsResponse {
738    pub resp: GetIfaceStatsResponse,
739}
740
741impl fidl::Persistable for MlmeGetIfaceStatsResponse {}
742
743#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
744#[repr(C)]
745pub struct MlmeGetMinstrelStatsRequest {
746    pub req: MinstrelStatsRequest,
747}
748
749impl fidl::Persistable for MlmeGetMinstrelStatsRequest {}
750
751#[derive(Clone, Debug, PartialEq)]
752pub struct MlmeGetMinstrelStatsResponse {
753    pub resp: MinstrelStatsResponse,
754}
755
756impl fidl::Persistable for MlmeGetMinstrelStatsResponse {}
757
758#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
759pub struct MlmeInstallApfPacketFilterRequest {
760    pub program: Vec<u8>,
761}
762
763impl fidl::Persistable for MlmeInstallApfPacketFilterRequest {}
764
765#[derive(Clone, Debug, PartialEq)]
766pub struct MlmeListMinstrelPeersResponse {
767    pub resp: MinstrelListResponse,
768}
769
770impl fidl::Persistable for MlmeListMinstrelPeersResponse {}
771
772#[derive(Clone, Debug, PartialEq)]
773pub struct MlmeOnChannelSwitchedRequest {
774    pub info: fidl_fuchsia_wlan_internal_common::ChannelSwitchInfo,
775}
776
777impl fidl::Persistable for MlmeOnChannelSwitchedRequest {}
778
779#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
780pub struct MlmeOnPmkAvailableRequest {
781    pub info: PmkInfo,
782}
783
784impl fidl::Persistable for MlmeOnPmkAvailableRequest {}
785
786#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
787pub struct MlmeOnSaeFrameRxRequest {
788    pub frame: SaeFrame,
789}
790
791impl fidl::Persistable for MlmeOnSaeFrameRxRequest {}
792
793#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
794#[repr(C)]
795pub struct MlmeOnSaeHandshakeIndRequest {
796    pub ind: SaeHandshakeIndication,
797}
798
799impl fidl::Persistable for MlmeOnSaeHandshakeIndRequest {}
800
801#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
802pub struct MlmeOnScanEndRequest {
803    pub end: ScanEnd,
804}
805
806impl fidl::Persistable for MlmeOnScanEndRequest {}
807
808#[derive(Clone, Debug, PartialEq)]
809pub struct MlmeOnScanResultRequest {
810    pub result: ScanResult,
811}
812
813impl fidl::Persistable for MlmeOnScanResultRequest {}
814
815#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
816#[repr(C)]
817pub struct MlmeOnScheduledScanMatchesAvailableRequest {
818    pub txn_id: u64,
819}
820
821impl fidl::Persistable for MlmeOnScheduledScanMatchesAvailableRequest {}
822
823#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
824#[repr(C)]
825pub struct MlmeOnScheduledScanStoppedByFirmwareRequest {
826    pub txn_id: u64,
827}
828
829impl fidl::Persistable for MlmeOnScheduledScanStoppedByFirmwareRequest {}
830
831#[derive(Clone, Debug, PartialEq)]
832pub struct MlmeOnWmmStatusRespRequest {
833    pub status: i32,
834    pub resp: fidl_fuchsia_wlan_internal_common::WmmStatusResponse,
835}
836
837impl fidl::Persistable for MlmeOnWmmStatusRespRequest {}
838
839#[derive(Clone, Debug, PartialEq)]
840pub struct MlmeQueryDeviceInfoResponse {
841    pub info: DeviceInfo,
842}
843
844impl fidl::Persistable for MlmeQueryDeviceInfoResponse {}
845
846#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
847#[repr(C)]
848pub struct MlmeReconnectReqRequest {
849    pub req: ReconnectRequest,
850}
851
852impl fidl::Persistable for MlmeReconnectReqRequest {}
853
854#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
855pub struct MlmeRelayCapturedFrameRequest {
856    pub result: CapturedFrameResult,
857}
858
859impl fidl::Persistable for MlmeRelayCapturedFrameRequest {}
860
861#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
862pub struct MlmeResetReqRequest {
863    pub req: ResetRequest,
864}
865
866impl fidl::Persistable for MlmeResetReqRequest {}
867
868#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
869pub struct MlmeRoamConfRequest {
870    pub conf: RoamConfirm,
871}
872
873impl fidl::Persistable for MlmeRoamConfRequest {}
874
875#[derive(Clone, Debug, PartialEq)]
876pub struct MlmeRoamReqRequest {
877    pub req: RoamRequest,
878}
879
880impl fidl::Persistable for MlmeRoamReqRequest {}
881
882#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
883pub struct MlmeRoamResultIndRequest {
884    pub ind: RoamResultIndication,
885}
886
887impl fidl::Persistable for MlmeRoamResultIndRequest {}
888
889#[derive(Clone, Debug, PartialEq)]
890pub struct MlmeRoamStartIndRequest {
891    pub ind: RoamStartIndication,
892}
893
894impl fidl::Persistable for MlmeRoamStartIndRequest {}
895
896#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
897pub struct MlmeSaeFrameTxRequest {
898    pub frame: SaeFrame,
899}
900
901impl fidl::Persistable for MlmeSaeFrameTxRequest {}
902
903#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
904pub struct MlmeSaeHandshakeRespRequest {
905    pub resp: SaeHandshakeResponse,
906}
907
908impl fidl::Persistable for MlmeSaeHandshakeRespRequest {}
909
910#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
911pub struct MlmeSetApfPacketFilterEnabledRequest {
912    pub enabled: bool,
913}
914
915impl fidl::Persistable for MlmeSetApfPacketFilterEnabledRequest {}
916
917#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
918pub struct MlmeSetControlledPortRequest {
919    pub req: SetControlledPortRequest,
920}
921
922impl fidl::Persistable for MlmeSetControlledPortRequest {}
923
924#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
925pub struct MlmeSetKeysConfRequest {
926    pub conf: SetKeysConfirm,
927}
928
929impl fidl::Persistable for MlmeSetKeysConfRequest {}
930
931#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
932pub struct MlmeSetKeysReqRequest {
933    pub req: SetKeysRequest,
934}
935
936impl fidl::Persistable for MlmeSetKeysReqRequest {}
937
938#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
939#[repr(C)]
940pub struct MlmeSetMacAddressRequest {
941    pub mac_addr: [u8; 6],
942}
943
944impl fidl::Persistable for MlmeSetMacAddressRequest {}
945
946#[derive(Clone, Debug, PartialEq)]
947pub struct MlmeSignalReportRequest {
948    pub ind: fidl_fuchsia_wlan_internal_common::SignalReportIndication,
949}
950
951impl fidl::Persistable for MlmeSignalReportRequest {}
952
953#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
954pub struct MlmeStartCaptureFramesRequest {
955    pub req: StartCaptureFramesRequest,
956}
957
958impl fidl::Persistable for MlmeStartCaptureFramesRequest {}
959
960#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
961pub struct MlmeStartCaptureFramesResponse {
962    pub resp: StartCaptureFramesResponse,
963}
964
965impl fidl::Persistable for MlmeStartCaptureFramesResponse {}
966
967#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
968pub struct MlmeStartConfRequest {
969    pub resp: StartConfirm,
970}
971
972impl fidl::Persistable for MlmeStartConfRequest {}
973
974#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
975pub struct MlmeStartReqRequest {
976    pub req: StartRequest,
977}
978
979impl fidl::Persistable for MlmeStartReqRequest {}
980
981#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
982pub struct MlmeStartScanRequest {
983    pub req: ScanRequest,
984}
985
986impl fidl::Persistable for MlmeStartScanRequest {}
987
988#[derive(Clone, Debug, PartialEq)]
989pub struct MlmeStartScheduledScanRequest {
990    pub txn_id: u64,
991    pub req: fidl_fuchsia_wlan_common_common::ScheduledScanRequest,
992}
993
994impl fidl::Persistable for MlmeStartScheduledScanRequest {}
995
996#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
997pub struct MlmeStopConfRequest {
998    pub resp: StopConfirm,
999}
1000
1001impl fidl::Persistable for MlmeStopConfRequest {}
1002
1003#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1004pub struct MlmeStopReqRequest {
1005    pub req: StopRequest,
1006}
1007
1008impl fidl::Persistable for MlmeStopReqRequest {}
1009
1010#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1011#[repr(C)]
1012pub struct MlmeStopScheduledScanRequest {
1013    pub txn_id: u64,
1014}
1015
1016impl fidl::Persistable for MlmeStopScheduledScanRequest {}
1017
1018/// Non-IEEE custom structure to inform a SoftMAC device about the association negotiation outcome.
1019#[derive(Clone, Debug, PartialEq)]
1020pub struct NegotiatedCapabilities {
1021    pub channel: fidl_fuchsia_wlan_ieee80211_common::WlanChannel,
1022    pub capability_info: u16,
1023    pub rates: Vec<u8>,
1024    pub wmm_param: Option<Box<WmmParameter>>,
1025    pub ht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>>,
1026    pub vht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>>,
1027}
1028
1029impl fidl::Persistable for NegotiatedCapabilities {}
1030
1031#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1032pub struct PmkInfo {
1033    pub pmk: Vec<u8>,
1034    pub pmkid: Vec<u8>,
1035}
1036
1037impl fidl::Persistable for PmkInfo {}
1038
1039#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1040#[repr(C)]
1041pub struct ReconnectRequest {
1042    pub peer_sta_address: [u8; 6],
1043}
1044
1045impl fidl::Persistable for ReconnectRequest {}
1046
1047#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1048pub struct ResetRequest {
1049    pub sta_address: [u8; 6],
1050    pub set_default_mib: bool,
1051}
1052
1053impl fidl::Persistable for ResetRequest {}
1054
1055/// Result of an SME-initiated roam attempt.
1056#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1057pub struct RoamConfirm {
1058    pub selected_bssid: [u8; 6],
1059    pub status_code: fidl_fuchsia_wlan_ieee80211_common::StatusCode,
1060    /// Whether the original BSS association has been maintained through the roam attempt.
1061    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1062    /// success then this field must be set to false; a roam failure typically incurs disassociation
1063    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1064    pub original_association_maintained: bool,
1065    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1066    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1067    /// This allows higher layers to decide how to clean up connection state after a failed roam
1068    /// attempt.
1069    pub target_bss_authenticated: bool,
1070    pub association_id: u16,
1071    pub association_ies: Vec<u8>,
1072}
1073
1074impl fidl::Persistable for RoamConfirm {}
1075
1076#[derive(Clone, Debug, PartialEq)]
1077pub struct RoamRequest {
1078    pub selected_bss: fidl_fuchsia_wlan_ieee80211_common::BssDescription,
1079}
1080
1081impl fidl::Persistable for RoamRequest {}
1082
1083/// Result of a fullmac-initiated roam attempt.
1084#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1085pub struct RoamResultIndication {
1086    pub selected_bssid: [u8; 6],
1087    pub status_code: fidl_fuchsia_wlan_ieee80211_common::StatusCode,
1088    /// Whether the original BSS association has been maintained through the roam attempt.
1089    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1090    /// success then this field must be set to false; a roam failure typically incurs disassociation
1091    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1092    pub original_association_maintained: bool,
1093    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1094    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1095    /// This allows higher layers to decide how to clean up connection state after a failed roam
1096    /// attempt.
1097    pub target_bss_authenticated: bool,
1098    pub association_id: u16,
1099    pub association_ies: Vec<u8>,
1100}
1101
1102impl fidl::Persistable for RoamResultIndication {}
1103
1104/// In-progress fullmac-initiated roam attempt details.
1105#[derive(Clone, Debug, PartialEq)]
1106pub struct RoamStartIndication {
1107    pub selected_bssid: [u8; 6],
1108    pub selected_bss: fidl_fuchsia_wlan_ieee80211_common::BssDescription,
1109    /// Whether the original BSS association has been maintained at the start of a roam attempt.
1110    /// 802.11 dictates that a STA can only be associated with a single BSS, so a roam attempt
1111    /// typically incurs disassociation at the start of the roam attempt. However, 802.11 also
1112    /// provides a mechanism (i.e. Fast BSS Transition) that allows a device to maintain
1113    /// association with the original BSS while establishing authentication with the target BSS, in
1114    /// order to avoid losing the original association if authentication with the target BSS fails.
1115    pub original_association_maintained: bool,
1116}
1117
1118impl fidl::Persistable for RoamStartIndication {}
1119
1120#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1121pub struct SaeFrame {
1122    pub peer_sta_address: [u8; 6],
1123    pub status_code: fidl_fuchsia_wlan_ieee80211_common::StatusCode,
1124    pub seq_num: u16,
1125    pub sae_fields: Vec<u8>,
1126}
1127
1128impl fidl::Persistable for SaeFrame {}
1129
1130#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1131#[repr(C)]
1132pub struct SaeHandshakeIndication {
1133    pub peer_sta_address: [u8; 6],
1134}
1135
1136impl fidl::Persistable for SaeHandshakeIndication {}
1137
1138#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1139pub struct SaeHandshakeResponse {
1140    pub peer_sta_address: [u8; 6],
1141    pub status_code: fidl_fuchsia_wlan_ieee80211_common::StatusCode,
1142}
1143
1144impl fidl::Persistable for SaeHandshakeResponse {}
1145
1146#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1147pub struct ScanEnd {
1148    pub txn_id: u64,
1149    pub code: ScanResultCode,
1150}
1151
1152impl fidl::Persistable for ScanEnd {}
1153
1154#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1155pub struct ScanRequest {
1156    pub txn_id: u64,
1157    pub scan_type: ScanTypes,
1158    /// List of channels to scan on. An empty list of channels will cause a
1159    /// scan request to immediately return a ScanEnd with code INVALID_ARGS.
1160    ///
1161    /// Invalid channel numbers will be silently ignored. The validity of a channel
1162    /// number depends on the current regulatory region, and MLME does not control
1163    /// or know this setting.
1164    pub channel_list: Vec<u8>,
1165    /// List of SSIDs to scan for. An empty list of ssids is the same as specifying
1166    /// a list containing only the wildcard SSID.
1167    ///
1168    /// There is no limit on the number of SSIDs specified. A large number of
1169    /// SSIDs may result in extended scan times because of hardware limitations on
1170    /// the number of SSIDs permitted per scan request and the technical limitation
1171    /// in IEEE 802.11-2016 that limits the number of SSIDs in a single Probe Request
1172    /// frame to ieee80211.SSID_LIST_MAX SSIDs.
1173    pub ssid_list: Vec<Vec<u8>>,
1174    pub probe_delay: u32,
1175    pub min_channel_time: u32,
1176    pub max_channel_time: u32,
1177}
1178
1179impl fidl::Persistable for ScanRequest {}
1180
1181#[derive(Clone, Debug, PartialEq)]
1182pub struct ScanResult {
1183    pub txn_id: u64,
1184    pub timestamp_nanos: i64,
1185    pub bss: fidl_fuchsia_wlan_ieee80211_common::BssDescription,
1186}
1187
1188impl fidl::Persistable for ScanResult {}
1189
1190#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1191pub struct SetControlledPortRequest {
1192    pub peer_sta_address: [u8; 6],
1193    pub state: ControlledPortState,
1194}
1195
1196impl fidl::Persistable for SetControlledPortRequest {}
1197
1198#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1199pub struct SetKeyDescriptor {
1200    pub key: Vec<u8>,
1201    pub key_id: u16,
1202    pub key_type: KeyType,
1203    pub address: [u8; 6],
1204    pub rsc: u64,
1205    pub cipher_suite_oui: [u8; 3],
1206    pub cipher_suite_type: fidl_fuchsia_wlan_ieee80211_common::CipherSuiteType,
1207}
1208
1209impl fidl::Persistable for SetKeyDescriptor {}
1210
1211#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1212#[repr(C)]
1213pub struct SetKeyResult {
1214    pub key_id: u16,
1215    pub status: i32,
1216}
1217
1218impl fidl::Persistable for SetKeyResult {}
1219
1220#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1221pub struct SetKeysConfirm {
1222    pub results: Vec<SetKeyResult>,
1223}
1224
1225impl fidl::Persistable for SetKeysConfirm {}
1226
1227#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1228pub struct SetKeysRequest {
1229    pub keylist: Vec<SetKeyDescriptor>,
1230}
1231
1232impl fidl::Persistable for SetKeysRequest {}
1233
1234#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1235pub struct StartCaptureFramesRequest {
1236    pub mgmt_frame_flags: MgmtFrameCaptureFlags,
1237}
1238
1239impl fidl::Persistable for StartCaptureFramesRequest {}
1240
1241#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1242pub struct StartCaptureFramesResponse {
1243    pub status: i32,
1244    pub supported_mgmt_frames: MgmtFrameCaptureFlags,
1245}
1246
1247impl fidl::Persistable for StartCaptureFramesResponse {}
1248
1249#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1250pub struct StartConfirm {
1251    pub result_code: StartResultCode,
1252}
1253
1254impl fidl::Persistable for StartConfirm {}
1255
1256#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1257pub struct StartRequest {
1258    pub ssid: Vec<u8>,
1259    pub bss_type: fidl_fuchsia_wlan_ieee80211_common::BssType,
1260    pub beacon_period: u16,
1261    pub dtim_period: u8,
1262    pub channel: u8,
1263    pub capability_info: u16,
1264    pub rates: Vec<u8>,
1265    pub country: Country,
1266    pub mesh_id: Vec<u8>,
1267    pub rsne: Option<Vec<u8>>,
1268    pub phy: fidl_fuchsia_wlan_ieee80211_common::WlanPhyType,
1269    pub channel_bandwidth: fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth,
1270}
1271
1272impl fidl::Persistable for StartRequest {}
1273
1274#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1275pub struct StopConfirm {
1276    pub result_code: StopResultCode,
1277}
1278
1279impl fidl::Persistable for StopConfirm {}
1280
1281#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1282pub struct StopRequest {
1283    pub ssid: Vec<u8>,
1284}
1285
1286impl fidl::Persistable for StopRequest {}
1287
1288#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1289#[repr(C)]
1290pub struct WmmParameter {
1291    pub bytes: [u8; 18],
1292}
1293
1294impl fidl::Persistable for WmmParameter {}
1295
1296#[derive(Clone, Debug, PartialEq)]
1297pub enum GetIfaceHistogramStatsResponse {
1298    Stats(fidl_fuchsia_wlan_stats_common::IfaceHistogramStats),
1299    ErrorStatus(i32),
1300}
1301
1302impl GetIfaceHistogramStatsResponse {
1303    #[inline]
1304    pub fn ordinal(&self) -> u64 {
1305        match *self {
1306            Self::Stats(_) => 1,
1307            Self::ErrorStatus(_) => 2,
1308        }
1309    }
1310}
1311
1312impl fidl::Persistable for GetIfaceHistogramStatsResponse {}
1313
1314#[derive(Clone, Debug, PartialEq)]
1315pub enum GetIfaceStatsResponse {
1316    Stats(fidl_fuchsia_wlan_stats_common::IfaceStats),
1317    ErrorStatus(i32),
1318}
1319
1320impl GetIfaceStatsResponse {
1321    #[inline]
1322    pub fn ordinal(&self) -> u64 {
1323        match *self {
1324            Self::Stats(_) => 1,
1325            Self::ErrorStatus(_) => 2,
1326        }
1327    }
1328}
1329
1330impl fidl::Persistable for GetIfaceStatsResponse {}
1331
1332pub mod connector_ordinals {
1333    pub const CONNECT: u64 = 0x42131859717af962;
1334}
1335
1336pub mod mlme_ordinals {
1337    pub const START_SCAN: u64 = 0x342cc5ec6a957479;
1338    pub const ON_SCAN_RESULT: u64 = 0x681af7466a75074d;
1339    pub const ON_SCAN_END: u64 = 0x7f2702d253e7ca59;
1340    pub const START_SCHEDULED_SCAN: u64 = 0x7fff163af4620212;
1341    pub const STOP_SCHEDULED_SCAN: u64 = 0x5fbc466f3daa4dd9;
1342    pub const GET_SCHEDULED_SCAN_ENABLED: u64 = 0x1ecc6a7fe7f9fcff;
1343    pub const ON_SCHEDULED_SCAN_MATCHES_AVAILABLE: u64 = 0x3d915df5108ec4e1;
1344    pub const ON_SCHEDULED_SCAN_STOPPED_BY_FIRMWARE: u64 = 0x4c2cb4b145163fd0;
1345    pub const CONNECT_REQ: u64 = 0x31153dc85f8f64c;
1346    pub const CONNECT_CONF: u64 = 0x77b27623279b981e;
1347    pub const RECONNECT_REQ: u64 = 0x74e0f1bd758b6b78;
1348    pub const ROAM_REQ: u64 = 0x3ba163eadf7dba45;
1349    pub const ROAM_CONF: u64 = 0x3f608034faa054bc;
1350    pub const ROAM_START_IND: u64 = 0x270a1ec78672d094;
1351    pub const ROAM_RESULT_IND: u64 = 0x26d074364fc84865;
1352    pub const AUTHENTICATE_IND: u64 = 0x460f49ae891adbe9;
1353    pub const AUTHENTICATE_RESP: u64 = 0x26108aade2fdd2f4;
1354    pub const DEAUTHENTICATE_REQ: u64 = 0x228983b200de5d12;
1355    pub const DEAUTHENTICATE_CONF: u64 = 0x3b44debc21b88c8c;
1356    pub const DEAUTHENTICATE_IND: u64 = 0x7ee0889b326da1d7;
1357    pub const ASSOCIATE_IND: u64 = 0x6a86f20e3063dd63;
1358    pub const ASSOCIATE_RESP: u64 = 0x70244dbd652ed6d9;
1359    pub const DISASSOCIATE_REQ: u64 = 0x5765807f1387d764;
1360    pub const DISASSOCIATE_CONF: u64 = 0x61345fbce732a28d;
1361    pub const DISASSOCIATE_IND: u64 = 0x77ac0ebf387c1f35;
1362    pub const RESET_REQ: u64 = 0x780b98c58a286b9f;
1363    pub const START_REQ: u64 = 0x5d95885f8053654;
1364    pub const START_CONF: u64 = 0x15ea6cdf3b8382b3;
1365    pub const STOP_REQ: u64 = 0x27b9a2ab04a2c79f;
1366    pub const STOP_CONF: u64 = 0x50b426ef4a84a2df;
1367    pub const SET_KEYS_REQ: u64 = 0x6b30a07fd3a11a79;
1368    pub const SET_KEYS_CONF: u64 = 0x5bafb3a8d4039380;
1369    pub const DELETE_KEYS_REQ: u64 = 0x1e3524d20d190c8f;
1370    pub const EAPOL_REQ: u64 = 0xc3c096924704d4;
1371    pub const EAPOL_CONF: u64 = 0x6ffa21f4ee73ce64;
1372    pub const SIGNAL_REPORT: u64 = 0x48f32a876aa53d8f;
1373    pub const EAPOL_IND: u64 = 0x7038dca46a3142fc;
1374    pub const SET_CONTROLLED_PORT: u64 = 0x4e47065668890c8d;
1375    pub const QUERY_DEVICE_INFO: u64 = 0x6ee3e7f63f2b7bc0;
1376    pub const QUERY_TELEMETRY_SUPPORT: u64 = 0x1598879b70332c99;
1377    pub const GET_IFACE_STATS: u64 = 0xede1a8342d1b211;
1378    pub const GET_IFACE_HISTOGRAM_STATS: u64 = 0x1979c9d3449f8675;
1379    pub const GET_SIGNAL_REPORT: u64 = 0x7e47e7ebe92acec9;
1380    pub const LIST_MINSTREL_PEERS: u64 = 0x4ac5d1e66fe1ffd5;
1381    pub const GET_MINSTREL_STATS: u64 = 0x2f688b1245323f4b;
1382    pub const START_CAPTURE_FRAMES: u64 = 0x23b369ed5749ee69;
1383    pub const STOP_CAPTURE_FRAMES: u64 = 0x2f1aebbc68bf7c54;
1384    pub const RELAY_CAPTURED_FRAME: u64 = 0x6f00a6f3cff9b1f5;
1385    pub const ON_CHANNEL_SWITCHED: u64 = 0x581750594e4c0c1;
1386    pub const ON_PMK_AVAILABLE: u64 = 0x1314fc2c79643f90;
1387    pub const ON_SAE_HANDSHAKE_IND: u64 = 0x6308b10e18986d7e;
1388    pub const SAE_HANDSHAKE_RESP: u64 = 0x28477bd2f7a5ab0c;
1389    pub const SAE_FRAME_TX: u64 = 0x7700c0d536733d8c;
1390    pub const ON_SAE_FRAME_RX: u64 = 0x4ebf51c86ef5f3cd;
1391    pub const WMM_STATUS_REQ: u64 = 0xef4851f6088fede;
1392    pub const ON_WMM_STATUS_RESP: u64 = 0x53f056b432e7b5cb;
1393    pub const FINALIZE_ASSOCIATION_REQ: u64 = 0x7aea59787cfd385a;
1394    pub const SET_MAC_ADDRESS: u64 = 0x476999f9bb27afe1;
1395    pub const INSTALL_APF_PACKET_FILTER: u64 = 0x267565b4916c825b;
1396    pub const READ_APF_PACKET_FILTER_DATA: u64 = 0x6040d744f1b2cb61;
1397    pub const SET_APF_PACKET_FILTER_ENABLED: u64 = 0x6d99bdca77076aea;
1398    pub const GET_APF_PACKET_FILTER_ENABLED: u64 = 0x1df408bc154be1e4;
1399}
1400
1401mod internal {
1402    use super::*;
1403    unsafe impl fidl::encoding::TypeMarker for MgmtFrameCaptureFlags {
1404        type Owned = Self;
1405
1406        #[inline(always)]
1407        fn inline_align(_context: fidl::encoding::Context) -> usize {
1408            4
1409        }
1410
1411        #[inline(always)]
1412        fn inline_size(_context: fidl::encoding::Context) -> usize {
1413            4
1414        }
1415    }
1416
1417    impl fidl::encoding::ValueTypeMarker for MgmtFrameCaptureFlags {
1418        type Borrowed<'a> = Self;
1419        #[inline(always)]
1420        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1421            *value
1422        }
1423    }
1424
1425    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1426        for MgmtFrameCaptureFlags
1427    {
1428        #[inline]
1429        unsafe fn encode(
1430            self,
1431            encoder: &mut fidl::encoding::Encoder<'_, D>,
1432            offset: usize,
1433            _depth: fidl::encoding::Depth,
1434        ) -> fidl::Result<()> {
1435            encoder.debug_check_bounds::<Self>(offset);
1436            if self.bits() & Self::all().bits() != self.bits() {
1437                return Err(fidl::Error::InvalidBitsValue);
1438            }
1439            encoder.write_num(self.bits(), offset);
1440            Ok(())
1441        }
1442    }
1443
1444    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MgmtFrameCaptureFlags {
1445        #[inline(always)]
1446        fn new_empty() -> Self {
1447            Self::empty()
1448        }
1449
1450        #[inline]
1451        unsafe fn decode(
1452            &mut self,
1453            decoder: &mut fidl::encoding::Decoder<'_, D>,
1454            offset: usize,
1455            _depth: fidl::encoding::Depth,
1456        ) -> fidl::Result<()> {
1457            decoder.debug_check_bounds::<Self>(offset);
1458            let prim = decoder.read_num::<u32>(offset);
1459            *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
1460            Ok(())
1461        }
1462    }
1463    unsafe impl fidl::encoding::TypeMarker for AssociateResultCode {
1464        type Owned = Self;
1465
1466        #[inline(always)]
1467        fn inline_align(_context: fidl::encoding::Context) -> usize {
1468            std::mem::align_of::<u32>()
1469        }
1470
1471        #[inline(always)]
1472        fn inline_size(_context: fidl::encoding::Context) -> usize {
1473            std::mem::size_of::<u32>()
1474        }
1475
1476        #[inline(always)]
1477        fn encode_is_copy() -> bool {
1478            true
1479        }
1480
1481        #[inline(always)]
1482        fn decode_is_copy() -> bool {
1483            false
1484        }
1485    }
1486
1487    impl fidl::encoding::ValueTypeMarker for AssociateResultCode {
1488        type Borrowed<'a> = Self;
1489        #[inline(always)]
1490        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1491            *value
1492        }
1493    }
1494
1495    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1496        for AssociateResultCode
1497    {
1498        #[inline]
1499        unsafe fn encode(
1500            self,
1501            encoder: &mut fidl::encoding::Encoder<'_, D>,
1502            offset: usize,
1503            _depth: fidl::encoding::Depth,
1504        ) -> fidl::Result<()> {
1505            encoder.debug_check_bounds::<Self>(offset);
1506            encoder.write_num(self.into_primitive(), offset);
1507            Ok(())
1508        }
1509    }
1510
1511    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateResultCode {
1512        #[inline(always)]
1513        fn new_empty() -> Self {
1514            Self::Success
1515        }
1516
1517        #[inline]
1518        unsafe fn decode(
1519            &mut self,
1520            decoder: &mut fidl::encoding::Decoder<'_, D>,
1521            offset: usize,
1522            _depth: fidl::encoding::Depth,
1523        ) -> fidl::Result<()> {
1524            decoder.debug_check_bounds::<Self>(offset);
1525            let prim = decoder.read_num::<u32>(offset);
1526
1527            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1528            Ok(())
1529        }
1530    }
1531    unsafe impl fidl::encoding::TypeMarker for AuthenticateResultCode {
1532        type Owned = Self;
1533
1534        #[inline(always)]
1535        fn inline_align(_context: fidl::encoding::Context) -> usize {
1536            std::mem::align_of::<u32>()
1537        }
1538
1539        #[inline(always)]
1540        fn inline_size(_context: fidl::encoding::Context) -> usize {
1541            std::mem::size_of::<u32>()
1542        }
1543
1544        #[inline(always)]
1545        fn encode_is_copy() -> bool {
1546            true
1547        }
1548
1549        #[inline(always)]
1550        fn decode_is_copy() -> bool {
1551            false
1552        }
1553    }
1554
1555    impl fidl::encoding::ValueTypeMarker for AuthenticateResultCode {
1556        type Borrowed<'a> = Self;
1557        #[inline(always)]
1558        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1559            *value
1560        }
1561    }
1562
1563    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1564        for AuthenticateResultCode
1565    {
1566        #[inline]
1567        unsafe fn encode(
1568            self,
1569            encoder: &mut fidl::encoding::Encoder<'_, D>,
1570            offset: usize,
1571            _depth: fidl::encoding::Depth,
1572        ) -> fidl::Result<()> {
1573            encoder.debug_check_bounds::<Self>(offset);
1574            encoder.write_num(self.into_primitive(), offset);
1575            Ok(())
1576        }
1577    }
1578
1579    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1580        for AuthenticateResultCode
1581    {
1582        #[inline(always)]
1583        fn new_empty() -> Self {
1584            Self::Success
1585        }
1586
1587        #[inline]
1588        unsafe fn decode(
1589            &mut self,
1590            decoder: &mut fidl::encoding::Decoder<'_, D>,
1591            offset: usize,
1592            _depth: fidl::encoding::Depth,
1593        ) -> fidl::Result<()> {
1594            decoder.debug_check_bounds::<Self>(offset);
1595            let prim = decoder.read_num::<u32>(offset);
1596
1597            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1598            Ok(())
1599        }
1600    }
1601    unsafe impl fidl::encoding::TypeMarker for AuthenticationTypes {
1602        type Owned = Self;
1603
1604        #[inline(always)]
1605        fn inline_align(_context: fidl::encoding::Context) -> usize {
1606            std::mem::align_of::<u32>()
1607        }
1608
1609        #[inline(always)]
1610        fn inline_size(_context: fidl::encoding::Context) -> usize {
1611            std::mem::size_of::<u32>()
1612        }
1613
1614        #[inline(always)]
1615        fn encode_is_copy() -> bool {
1616            true
1617        }
1618
1619        #[inline(always)]
1620        fn decode_is_copy() -> bool {
1621            false
1622        }
1623    }
1624
1625    impl fidl::encoding::ValueTypeMarker for AuthenticationTypes {
1626        type Borrowed<'a> = Self;
1627        #[inline(always)]
1628        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1629            *value
1630        }
1631    }
1632
1633    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1634        for AuthenticationTypes
1635    {
1636        #[inline]
1637        unsafe fn encode(
1638            self,
1639            encoder: &mut fidl::encoding::Encoder<'_, D>,
1640            offset: usize,
1641            _depth: fidl::encoding::Depth,
1642        ) -> fidl::Result<()> {
1643            encoder.debug_check_bounds::<Self>(offset);
1644            encoder.write_num(self.into_primitive(), offset);
1645            Ok(())
1646        }
1647    }
1648
1649    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AuthenticationTypes {
1650        #[inline(always)]
1651        fn new_empty() -> Self {
1652            Self::OpenSystem
1653        }
1654
1655        #[inline]
1656        unsafe fn decode(
1657            &mut self,
1658            decoder: &mut fidl::encoding::Decoder<'_, D>,
1659            offset: usize,
1660            _depth: fidl::encoding::Depth,
1661        ) -> fidl::Result<()> {
1662            decoder.debug_check_bounds::<Self>(offset);
1663            let prim = decoder.read_num::<u32>(offset);
1664
1665            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1666            Ok(())
1667        }
1668    }
1669    unsafe impl fidl::encoding::TypeMarker for ControlledPortState {
1670        type Owned = Self;
1671
1672        #[inline(always)]
1673        fn inline_align(_context: fidl::encoding::Context) -> usize {
1674            std::mem::align_of::<u32>()
1675        }
1676
1677        #[inline(always)]
1678        fn inline_size(_context: fidl::encoding::Context) -> usize {
1679            std::mem::size_of::<u32>()
1680        }
1681
1682        #[inline(always)]
1683        fn encode_is_copy() -> bool {
1684            true
1685        }
1686
1687        #[inline(always)]
1688        fn decode_is_copy() -> bool {
1689            false
1690        }
1691    }
1692
1693    impl fidl::encoding::ValueTypeMarker for ControlledPortState {
1694        type Borrowed<'a> = Self;
1695        #[inline(always)]
1696        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1697            *value
1698        }
1699    }
1700
1701    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1702        for ControlledPortState
1703    {
1704        #[inline]
1705        unsafe fn encode(
1706            self,
1707            encoder: &mut fidl::encoding::Encoder<'_, D>,
1708            offset: usize,
1709            _depth: fidl::encoding::Depth,
1710        ) -> fidl::Result<()> {
1711            encoder.debug_check_bounds::<Self>(offset);
1712            encoder.write_num(self.into_primitive(), offset);
1713            Ok(())
1714        }
1715    }
1716
1717    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlledPortState {
1718        #[inline(always)]
1719        fn new_empty() -> Self {
1720            Self::Closed
1721        }
1722
1723        #[inline]
1724        unsafe fn decode(
1725            &mut self,
1726            decoder: &mut fidl::encoding::Decoder<'_, D>,
1727            offset: usize,
1728            _depth: fidl::encoding::Depth,
1729        ) -> fidl::Result<()> {
1730            decoder.debug_check_bounds::<Self>(offset);
1731            let prim = decoder.read_num::<u32>(offset);
1732
1733            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1734            Ok(())
1735        }
1736    }
1737    unsafe impl fidl::encoding::TypeMarker for EapolResultCode {
1738        type Owned = Self;
1739
1740        #[inline(always)]
1741        fn inline_align(_context: fidl::encoding::Context) -> usize {
1742            std::mem::align_of::<u32>()
1743        }
1744
1745        #[inline(always)]
1746        fn inline_size(_context: fidl::encoding::Context) -> usize {
1747            std::mem::size_of::<u32>()
1748        }
1749
1750        #[inline(always)]
1751        fn encode_is_copy() -> bool {
1752            true
1753        }
1754
1755        #[inline(always)]
1756        fn decode_is_copy() -> bool {
1757            false
1758        }
1759    }
1760
1761    impl fidl::encoding::ValueTypeMarker for EapolResultCode {
1762        type Borrowed<'a> = Self;
1763        #[inline(always)]
1764        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1765            *value
1766        }
1767    }
1768
1769    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1770        for EapolResultCode
1771    {
1772        #[inline]
1773        unsafe fn encode(
1774            self,
1775            encoder: &mut fidl::encoding::Encoder<'_, D>,
1776            offset: usize,
1777            _depth: fidl::encoding::Depth,
1778        ) -> fidl::Result<()> {
1779            encoder.debug_check_bounds::<Self>(offset);
1780            encoder.write_num(self.into_primitive(), offset);
1781            Ok(())
1782        }
1783    }
1784
1785    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolResultCode {
1786        #[inline(always)]
1787        fn new_empty() -> Self {
1788            Self::Success
1789        }
1790
1791        #[inline]
1792        unsafe fn decode(
1793            &mut self,
1794            decoder: &mut fidl::encoding::Decoder<'_, D>,
1795            offset: usize,
1796            _depth: fidl::encoding::Depth,
1797        ) -> fidl::Result<()> {
1798            decoder.debug_check_bounds::<Self>(offset);
1799            let prim = decoder.read_num::<u32>(offset);
1800
1801            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1802            Ok(())
1803        }
1804    }
1805    unsafe impl fidl::encoding::TypeMarker for KeyType {
1806        type Owned = Self;
1807
1808        #[inline(always)]
1809        fn inline_align(_context: fidl::encoding::Context) -> usize {
1810            std::mem::align_of::<u32>()
1811        }
1812
1813        #[inline(always)]
1814        fn inline_size(_context: fidl::encoding::Context) -> usize {
1815            std::mem::size_of::<u32>()
1816        }
1817
1818        #[inline(always)]
1819        fn encode_is_copy() -> bool {
1820            true
1821        }
1822
1823        #[inline(always)]
1824        fn decode_is_copy() -> bool {
1825            false
1826        }
1827    }
1828
1829    impl fidl::encoding::ValueTypeMarker for KeyType {
1830        type Borrowed<'a> = Self;
1831        #[inline(always)]
1832        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1833            *value
1834        }
1835    }
1836
1837    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for KeyType {
1838        #[inline]
1839        unsafe fn encode(
1840            self,
1841            encoder: &mut fidl::encoding::Encoder<'_, D>,
1842            offset: usize,
1843            _depth: fidl::encoding::Depth,
1844        ) -> fidl::Result<()> {
1845            encoder.debug_check_bounds::<Self>(offset);
1846            encoder.write_num(self.into_primitive(), offset);
1847            Ok(())
1848        }
1849    }
1850
1851    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for KeyType {
1852        #[inline(always)]
1853        fn new_empty() -> Self {
1854            Self::Group
1855        }
1856
1857        #[inline]
1858        unsafe fn decode(
1859            &mut self,
1860            decoder: &mut fidl::encoding::Decoder<'_, D>,
1861            offset: usize,
1862            _depth: fidl::encoding::Depth,
1863        ) -> fidl::Result<()> {
1864            decoder.debug_check_bounds::<Self>(offset);
1865            let prim = decoder.read_num::<u32>(offset);
1866
1867            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1868            Ok(())
1869        }
1870    }
1871    unsafe impl fidl::encoding::TypeMarker for ScanResultCode {
1872        type Owned = Self;
1873
1874        #[inline(always)]
1875        fn inline_align(_context: fidl::encoding::Context) -> usize {
1876            std::mem::align_of::<u32>()
1877        }
1878
1879        #[inline(always)]
1880        fn inline_size(_context: fidl::encoding::Context) -> usize {
1881            std::mem::size_of::<u32>()
1882        }
1883
1884        #[inline(always)]
1885        fn encode_is_copy() -> bool {
1886            true
1887        }
1888
1889        #[inline(always)]
1890        fn decode_is_copy() -> bool {
1891            false
1892        }
1893    }
1894
1895    impl fidl::encoding::ValueTypeMarker for ScanResultCode {
1896        type Borrowed<'a> = Self;
1897        #[inline(always)]
1898        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1899            *value
1900        }
1901    }
1902
1903    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanResultCode {
1904        #[inline]
1905        unsafe fn encode(
1906            self,
1907            encoder: &mut fidl::encoding::Encoder<'_, D>,
1908            offset: usize,
1909            _depth: fidl::encoding::Depth,
1910        ) -> fidl::Result<()> {
1911            encoder.debug_check_bounds::<Self>(offset);
1912            encoder.write_num(self.into_primitive(), offset);
1913            Ok(())
1914        }
1915    }
1916
1917    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanResultCode {
1918        #[inline(always)]
1919        fn new_empty() -> Self {
1920            Self::Success
1921        }
1922
1923        #[inline]
1924        unsafe fn decode(
1925            &mut self,
1926            decoder: &mut fidl::encoding::Decoder<'_, D>,
1927            offset: usize,
1928            _depth: fidl::encoding::Depth,
1929        ) -> fidl::Result<()> {
1930            decoder.debug_check_bounds::<Self>(offset);
1931            let prim = decoder.read_num::<u32>(offset);
1932
1933            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1934            Ok(())
1935        }
1936    }
1937    unsafe impl fidl::encoding::TypeMarker for ScanTypes {
1938        type Owned = Self;
1939
1940        #[inline(always)]
1941        fn inline_align(_context: fidl::encoding::Context) -> usize {
1942            std::mem::align_of::<u32>()
1943        }
1944
1945        #[inline(always)]
1946        fn inline_size(_context: fidl::encoding::Context) -> usize {
1947            std::mem::size_of::<u32>()
1948        }
1949
1950        #[inline(always)]
1951        fn encode_is_copy() -> bool {
1952            true
1953        }
1954
1955        #[inline(always)]
1956        fn decode_is_copy() -> bool {
1957            false
1958        }
1959    }
1960
1961    impl fidl::encoding::ValueTypeMarker for ScanTypes {
1962        type Borrowed<'a> = Self;
1963        #[inline(always)]
1964        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1965            *value
1966        }
1967    }
1968
1969    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanTypes {
1970        #[inline]
1971        unsafe fn encode(
1972            self,
1973            encoder: &mut fidl::encoding::Encoder<'_, D>,
1974            offset: usize,
1975            _depth: fidl::encoding::Depth,
1976        ) -> fidl::Result<()> {
1977            encoder.debug_check_bounds::<Self>(offset);
1978            encoder.write_num(self.into_primitive(), offset);
1979            Ok(())
1980        }
1981    }
1982
1983    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanTypes {
1984        #[inline(always)]
1985        fn new_empty() -> Self {
1986            Self::Active
1987        }
1988
1989        #[inline]
1990        unsafe fn decode(
1991            &mut self,
1992            decoder: &mut fidl::encoding::Decoder<'_, D>,
1993            offset: usize,
1994            _depth: fidl::encoding::Depth,
1995        ) -> fidl::Result<()> {
1996            decoder.debug_check_bounds::<Self>(offset);
1997            let prim = decoder.read_num::<u32>(offset);
1998
1999            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2000            Ok(())
2001        }
2002    }
2003    unsafe impl fidl::encoding::TypeMarker for StartResultCode {
2004        type Owned = Self;
2005
2006        #[inline(always)]
2007        fn inline_align(_context: fidl::encoding::Context) -> usize {
2008            std::mem::align_of::<u32>()
2009        }
2010
2011        #[inline(always)]
2012        fn inline_size(_context: fidl::encoding::Context) -> usize {
2013            std::mem::size_of::<u32>()
2014        }
2015
2016        #[inline(always)]
2017        fn encode_is_copy() -> bool {
2018            true
2019        }
2020
2021        #[inline(always)]
2022        fn decode_is_copy() -> bool {
2023            false
2024        }
2025    }
2026
2027    impl fidl::encoding::ValueTypeMarker for StartResultCode {
2028        type Borrowed<'a> = Self;
2029        #[inline(always)]
2030        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2031            *value
2032        }
2033    }
2034
2035    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2036        for StartResultCode
2037    {
2038        #[inline]
2039        unsafe fn encode(
2040            self,
2041            encoder: &mut fidl::encoding::Encoder<'_, D>,
2042            offset: usize,
2043            _depth: fidl::encoding::Depth,
2044        ) -> fidl::Result<()> {
2045            encoder.debug_check_bounds::<Self>(offset);
2046            encoder.write_num(self.into_primitive(), offset);
2047            Ok(())
2048        }
2049    }
2050
2051    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartResultCode {
2052        #[inline(always)]
2053        fn new_empty() -> Self {
2054            Self::Success
2055        }
2056
2057        #[inline]
2058        unsafe fn decode(
2059            &mut self,
2060            decoder: &mut fidl::encoding::Decoder<'_, D>,
2061            offset: usize,
2062            _depth: fidl::encoding::Depth,
2063        ) -> fidl::Result<()> {
2064            decoder.debug_check_bounds::<Self>(offset);
2065            let prim = decoder.read_num::<u32>(offset);
2066
2067            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2068            Ok(())
2069        }
2070    }
2071    unsafe impl fidl::encoding::TypeMarker for StopResultCode {
2072        type Owned = Self;
2073
2074        #[inline(always)]
2075        fn inline_align(_context: fidl::encoding::Context) -> usize {
2076            std::mem::align_of::<u32>()
2077        }
2078
2079        #[inline(always)]
2080        fn inline_size(_context: fidl::encoding::Context) -> usize {
2081            std::mem::size_of::<u32>()
2082        }
2083
2084        #[inline(always)]
2085        fn encode_is_copy() -> bool {
2086            true
2087        }
2088
2089        #[inline(always)]
2090        fn decode_is_copy() -> bool {
2091            false
2092        }
2093    }
2094
2095    impl fidl::encoding::ValueTypeMarker for StopResultCode {
2096        type Borrowed<'a> = Self;
2097        #[inline(always)]
2098        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2099            *value
2100        }
2101    }
2102
2103    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StopResultCode {
2104        #[inline]
2105        unsafe fn encode(
2106            self,
2107            encoder: &mut fidl::encoding::Encoder<'_, D>,
2108            offset: usize,
2109            _depth: fidl::encoding::Depth,
2110        ) -> fidl::Result<()> {
2111            encoder.debug_check_bounds::<Self>(offset);
2112            encoder.write_num(self.into_primitive(), offset);
2113            Ok(())
2114        }
2115    }
2116
2117    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopResultCode {
2118        #[inline(always)]
2119        fn new_empty() -> Self {
2120            Self::Success
2121        }
2122
2123        #[inline]
2124        unsafe fn decode(
2125            &mut self,
2126            decoder: &mut fidl::encoding::Decoder<'_, D>,
2127            offset: usize,
2128            _depth: fidl::encoding::Depth,
2129        ) -> fidl::Result<()> {
2130            decoder.debug_check_bounds::<Self>(offset);
2131            let prim = decoder.read_num::<u32>(offset);
2132
2133            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2134            Ok(())
2135        }
2136    }
2137
2138    impl fidl::encoding::ValueTypeMarker for AssociateIndication {
2139        type Borrowed<'a> = &'a Self;
2140        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2141            value
2142        }
2143    }
2144
2145    unsafe impl fidl::encoding::TypeMarker for AssociateIndication {
2146        type Owned = Self;
2147
2148        #[inline(always)]
2149        fn inline_align(_context: fidl::encoding::Context) -> usize {
2150            8
2151        }
2152
2153        #[inline(always)]
2154        fn inline_size(_context: fidl::encoding::Context) -> usize {
2155            64
2156        }
2157    }
2158
2159    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AssociateIndication, D>
2160        for &AssociateIndication
2161    {
2162        #[inline]
2163        unsafe fn encode(
2164            self,
2165            encoder: &mut fidl::encoding::Encoder<'_, D>,
2166            offset: usize,
2167            _depth: fidl::encoding::Depth,
2168        ) -> fidl::Result<()> {
2169            encoder.debug_check_bounds::<AssociateIndication>(offset);
2170            // Delegate to tuple encoding.
2171            fidl::encoding::Encode::<AssociateIndication, D>::encode(
2172                (
2173                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
2174                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
2175                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.listen_interval),
2176                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid),
2177                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
2178                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>> as fidl::encoding::ValueTypeMarker>::borrow(&self.rsne),
2179                ),
2180                encoder, offset, _depth
2181            )
2182        }
2183    }
2184    unsafe impl<
2185        D: fidl::encoding::ResourceDialect,
2186        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2187        T1: fidl::encoding::Encode<u16, D>,
2188        T2: fidl::encoding::Encode<u16, D>,
2189        T3: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>, D>,
2190        T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
2191        T5: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>, D>,
2192    > fidl::encoding::Encode<AssociateIndication, D> for (T0, T1, T2, T3, T4, T5)
2193    {
2194        #[inline]
2195        unsafe fn encode(
2196            self,
2197            encoder: &mut fidl::encoding::Encoder<'_, D>,
2198            offset: usize,
2199            depth: fidl::encoding::Depth,
2200        ) -> fidl::Result<()> {
2201            encoder.debug_check_bounds::<AssociateIndication>(offset);
2202            // Zero out padding regions. There's no need to apply masks
2203            // because the unmasked parts will be overwritten by fields.
2204            unsafe {
2205                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2206                (ptr as *mut u64).write_unaligned(0);
2207            }
2208            // Write the fields.
2209            self.0.encode(encoder, offset + 0, depth)?;
2210            self.1.encode(encoder, offset + 6, depth)?;
2211            self.2.encode(encoder, offset + 8, depth)?;
2212            self.3.encode(encoder, offset + 16, depth)?;
2213            self.4.encode(encoder, offset + 32, depth)?;
2214            self.5.encode(encoder, offset + 48, depth)?;
2215            Ok(())
2216        }
2217    }
2218
2219    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateIndication {
2220        #[inline(always)]
2221        fn new_empty() -> Self {
2222            Self {
2223                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2224                capability_info: fidl::new_empty!(u16, D),
2225                listen_interval: fidl::new_empty!(u16, D),
2226                ssid: fidl::new_empty!(fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>, D),
2227                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
2228                rsne: fidl::new_empty!(
2229                    fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
2230                    D
2231                ),
2232            }
2233        }
2234
2235        #[inline]
2236        unsafe fn decode(
2237            &mut self,
2238            decoder: &mut fidl::encoding::Decoder<'_, D>,
2239            offset: usize,
2240            _depth: fidl::encoding::Depth,
2241        ) -> fidl::Result<()> {
2242            decoder.debug_check_bounds::<Self>(offset);
2243            // Verify that padding bytes are zero.
2244            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2245            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2246            let mask = 0xffffffffffff0000u64;
2247            let maskedval = padval & mask;
2248            if maskedval != 0 {
2249                return Err(fidl::Error::NonZeroPadding {
2250                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2251                });
2252            }
2253            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2254            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 6, _depth)?;
2255            fidl::decode!(u16, D, &mut self.listen_interval, decoder, offset + 8, _depth)?;
2256            fidl::decode!(
2257                fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>,
2258                D,
2259                &mut self.ssid,
2260                decoder,
2261                offset + 16,
2262                _depth
2263            )?;
2264            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 32, _depth)?;
2265            fidl::decode!(
2266                fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
2267                D,
2268                &mut self.rsne,
2269                decoder,
2270                offset + 48,
2271                _depth
2272            )?;
2273            Ok(())
2274        }
2275    }
2276
2277    impl fidl::encoding::ValueTypeMarker for AssociateResponse {
2278        type Borrowed<'a> = &'a Self;
2279        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2280            value
2281        }
2282    }
2283
2284    unsafe impl fidl::encoding::TypeMarker for AssociateResponse {
2285        type Owned = Self;
2286
2287        #[inline(always)]
2288        fn inline_align(_context: fidl::encoding::Context) -> usize {
2289            8
2290        }
2291
2292        #[inline(always)]
2293        fn inline_size(_context: fidl::encoding::Context) -> usize {
2294            32
2295        }
2296    }
2297
2298    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AssociateResponse, D>
2299        for &AssociateResponse
2300    {
2301        #[inline]
2302        unsafe fn encode(
2303            self,
2304            encoder: &mut fidl::encoding::Encoder<'_, D>,
2305            offset: usize,
2306            _depth: fidl::encoding::Depth,
2307        ) -> fidl::Result<()> {
2308            encoder.debug_check_bounds::<AssociateResponse>(offset);
2309            // Delegate to tuple encoding.
2310            fidl::encoding::Encode::<AssociateResponse, D>::encode(
2311                (
2312                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2313                        &self.peer_sta_address,
2314                    ),
2315                    <AssociateResultCode as fidl::encoding::ValueTypeMarker>::borrow(
2316                        &self.result_code,
2317                    ),
2318                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
2319                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
2320                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(
2321                        &self.rates,
2322                    ),
2323                ),
2324                encoder,
2325                offset,
2326                _depth,
2327            )
2328        }
2329    }
2330    unsafe impl<
2331        D: fidl::encoding::ResourceDialect,
2332        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2333        T1: fidl::encoding::Encode<AssociateResultCode, D>,
2334        T2: fidl::encoding::Encode<u16, D>,
2335        T3: fidl::encoding::Encode<u16, D>,
2336        T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
2337    > fidl::encoding::Encode<AssociateResponse, D> for (T0, T1, T2, T3, T4)
2338    {
2339        #[inline]
2340        unsafe fn encode(
2341            self,
2342            encoder: &mut fidl::encoding::Encoder<'_, D>,
2343            offset: usize,
2344            depth: fidl::encoding::Depth,
2345        ) -> fidl::Result<()> {
2346            encoder.debug_check_bounds::<AssociateResponse>(offset);
2347            // Zero out padding regions. There's no need to apply masks
2348            // because the unmasked parts will be overwritten by fields.
2349            unsafe {
2350                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2351                (ptr as *mut u64).write_unaligned(0);
2352            }
2353            // Write the fields.
2354            self.0.encode(encoder, offset + 0, depth)?;
2355            self.1.encode(encoder, offset + 8, depth)?;
2356            self.2.encode(encoder, offset + 12, depth)?;
2357            self.3.encode(encoder, offset + 14, depth)?;
2358            self.4.encode(encoder, offset + 16, depth)?;
2359            Ok(())
2360        }
2361    }
2362
2363    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateResponse {
2364        #[inline(always)]
2365        fn new_empty() -> Self {
2366            Self {
2367                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2368                result_code: fidl::new_empty!(AssociateResultCode, D),
2369                association_id: fidl::new_empty!(u16, D),
2370                capability_info: fidl::new_empty!(u16, D),
2371                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
2372            }
2373        }
2374
2375        #[inline]
2376        unsafe fn decode(
2377            &mut self,
2378            decoder: &mut fidl::encoding::Decoder<'_, D>,
2379            offset: usize,
2380            _depth: fidl::encoding::Depth,
2381        ) -> fidl::Result<()> {
2382            decoder.debug_check_bounds::<Self>(offset);
2383            // Verify that padding bytes are zero.
2384            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2385            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2386            let mask = 0xffff000000000000u64;
2387            let maskedval = padval & mask;
2388            if maskedval != 0 {
2389                return Err(fidl::Error::NonZeroPadding {
2390                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2391                });
2392            }
2393            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2394            fidl::decode!(
2395                AssociateResultCode,
2396                D,
2397                &mut self.result_code,
2398                decoder,
2399                offset + 8,
2400                _depth
2401            )?;
2402            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 12, _depth)?;
2403            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 14, _depth)?;
2404            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 16, _depth)?;
2405            Ok(())
2406        }
2407    }
2408
2409    impl fidl::encoding::ValueTypeMarker for AuthenticateIndication {
2410        type Borrowed<'a> = &'a Self;
2411        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2412            value
2413        }
2414    }
2415
2416    unsafe impl fidl::encoding::TypeMarker for AuthenticateIndication {
2417        type Owned = Self;
2418
2419        #[inline(always)]
2420        fn inline_align(_context: fidl::encoding::Context) -> usize {
2421            4
2422        }
2423
2424        #[inline(always)]
2425        fn inline_size(_context: fidl::encoding::Context) -> usize {
2426            12
2427        }
2428    }
2429
2430    unsafe impl<D: fidl::encoding::ResourceDialect>
2431        fidl::encoding::Encode<AuthenticateIndication, D> for &AuthenticateIndication
2432    {
2433        #[inline]
2434        unsafe fn encode(
2435            self,
2436            encoder: &mut fidl::encoding::Encoder<'_, D>,
2437            offset: usize,
2438            _depth: fidl::encoding::Depth,
2439        ) -> fidl::Result<()> {
2440            encoder.debug_check_bounds::<AuthenticateIndication>(offset);
2441            // Delegate to tuple encoding.
2442            fidl::encoding::Encode::<AuthenticateIndication, D>::encode(
2443                (
2444                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2445                        &self.peer_sta_address,
2446                    ),
2447                    <AuthenticationTypes as fidl::encoding::ValueTypeMarker>::borrow(
2448                        &self.auth_type,
2449                    ),
2450                ),
2451                encoder,
2452                offset,
2453                _depth,
2454            )
2455        }
2456    }
2457    unsafe impl<
2458        D: fidl::encoding::ResourceDialect,
2459        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2460        T1: fidl::encoding::Encode<AuthenticationTypes, D>,
2461    > fidl::encoding::Encode<AuthenticateIndication, D> for (T0, T1)
2462    {
2463        #[inline]
2464        unsafe fn encode(
2465            self,
2466            encoder: &mut fidl::encoding::Encoder<'_, D>,
2467            offset: usize,
2468            depth: fidl::encoding::Depth,
2469        ) -> fidl::Result<()> {
2470            encoder.debug_check_bounds::<AuthenticateIndication>(offset);
2471            // Zero out padding regions. There's no need to apply masks
2472            // because the unmasked parts will be overwritten by fields.
2473            unsafe {
2474                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
2475                (ptr as *mut u32).write_unaligned(0);
2476            }
2477            // Write the fields.
2478            self.0.encode(encoder, offset + 0, depth)?;
2479            self.1.encode(encoder, offset + 8, depth)?;
2480            Ok(())
2481        }
2482    }
2483
2484    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2485        for AuthenticateIndication
2486    {
2487        #[inline(always)]
2488        fn new_empty() -> Self {
2489            Self {
2490                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2491                auth_type: fidl::new_empty!(AuthenticationTypes, D),
2492            }
2493        }
2494
2495        #[inline]
2496        unsafe fn decode(
2497            &mut self,
2498            decoder: &mut fidl::encoding::Decoder<'_, D>,
2499            offset: usize,
2500            _depth: fidl::encoding::Depth,
2501        ) -> fidl::Result<()> {
2502            decoder.debug_check_bounds::<Self>(offset);
2503            // Verify that padding bytes are zero.
2504            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
2505            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2506            let mask = 0xffff0000u32;
2507            let maskedval = padval & mask;
2508            if maskedval != 0 {
2509                return Err(fidl::Error::NonZeroPadding {
2510                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
2511                });
2512            }
2513            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2514            fidl::decode!(
2515                AuthenticationTypes,
2516                D,
2517                &mut self.auth_type,
2518                decoder,
2519                offset + 8,
2520                _depth
2521            )?;
2522            Ok(())
2523        }
2524    }
2525
2526    impl fidl::encoding::ValueTypeMarker for AuthenticateResponse {
2527        type Borrowed<'a> = &'a Self;
2528        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2529            value
2530        }
2531    }
2532
2533    unsafe impl fidl::encoding::TypeMarker for AuthenticateResponse {
2534        type Owned = Self;
2535
2536        #[inline(always)]
2537        fn inline_align(_context: fidl::encoding::Context) -> usize {
2538            4
2539        }
2540
2541        #[inline(always)]
2542        fn inline_size(_context: fidl::encoding::Context) -> usize {
2543            12
2544        }
2545    }
2546
2547    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AuthenticateResponse, D>
2548        for &AuthenticateResponse
2549    {
2550        #[inline]
2551        unsafe fn encode(
2552            self,
2553            encoder: &mut fidl::encoding::Encoder<'_, D>,
2554            offset: usize,
2555            _depth: fidl::encoding::Depth,
2556        ) -> fidl::Result<()> {
2557            encoder.debug_check_bounds::<AuthenticateResponse>(offset);
2558            // Delegate to tuple encoding.
2559            fidl::encoding::Encode::<AuthenticateResponse, D>::encode(
2560                (
2561                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2562                        &self.peer_sta_address,
2563                    ),
2564                    <AuthenticateResultCode as fidl::encoding::ValueTypeMarker>::borrow(
2565                        &self.result_code,
2566                    ),
2567                ),
2568                encoder,
2569                offset,
2570                _depth,
2571            )
2572        }
2573    }
2574    unsafe impl<
2575        D: fidl::encoding::ResourceDialect,
2576        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2577        T1: fidl::encoding::Encode<AuthenticateResultCode, D>,
2578    > fidl::encoding::Encode<AuthenticateResponse, D> for (T0, T1)
2579    {
2580        #[inline]
2581        unsafe fn encode(
2582            self,
2583            encoder: &mut fidl::encoding::Encoder<'_, D>,
2584            offset: usize,
2585            depth: fidl::encoding::Depth,
2586        ) -> fidl::Result<()> {
2587            encoder.debug_check_bounds::<AuthenticateResponse>(offset);
2588            // Zero out padding regions. There's no need to apply masks
2589            // because the unmasked parts will be overwritten by fields.
2590            unsafe {
2591                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
2592                (ptr as *mut u32).write_unaligned(0);
2593            }
2594            // Write the fields.
2595            self.0.encode(encoder, offset + 0, depth)?;
2596            self.1.encode(encoder, offset + 8, depth)?;
2597            Ok(())
2598        }
2599    }
2600
2601    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AuthenticateResponse {
2602        #[inline(always)]
2603        fn new_empty() -> Self {
2604            Self {
2605                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2606                result_code: fidl::new_empty!(AuthenticateResultCode, D),
2607            }
2608        }
2609
2610        #[inline]
2611        unsafe fn decode(
2612            &mut self,
2613            decoder: &mut fidl::encoding::Decoder<'_, D>,
2614            offset: usize,
2615            _depth: fidl::encoding::Depth,
2616        ) -> fidl::Result<()> {
2617            decoder.debug_check_bounds::<Self>(offset);
2618            // Verify that padding bytes are zero.
2619            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
2620            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2621            let mask = 0xffff0000u32;
2622            let maskedval = padval & mask;
2623            if maskedval != 0 {
2624                return Err(fidl::Error::NonZeroPadding {
2625                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
2626                });
2627            }
2628            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2629            fidl::decode!(
2630                AuthenticateResultCode,
2631                D,
2632                &mut self.result_code,
2633                decoder,
2634                offset + 8,
2635                _depth
2636            )?;
2637            Ok(())
2638        }
2639    }
2640
2641    impl fidl::encoding::ValueTypeMarker for BandCapability {
2642        type Borrowed<'a> = &'a Self;
2643        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2644            value
2645        }
2646    }
2647
2648    unsafe impl fidl::encoding::TypeMarker for BandCapability {
2649        type Owned = Self;
2650
2651        #[inline(always)]
2652        fn inline_align(_context: fidl::encoding::Context) -> usize {
2653            8
2654        }
2655
2656        #[inline(always)]
2657        fn inline_size(_context: fidl::encoding::Context) -> usize {
2658            56
2659        }
2660    }
2661
2662    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandCapability, D>
2663        for &BandCapability
2664    {
2665        #[inline]
2666        unsafe fn encode(
2667            self,
2668            encoder: &mut fidl::encoding::Encoder<'_, D>,
2669            offset: usize,
2670            _depth: fidl::encoding::Depth,
2671        ) -> fidl::Result<()> {
2672            encoder.debug_check_bounds::<BandCapability>(offset);
2673            // Delegate to tuple encoding.
2674            fidl::encoding::Encode::<BandCapability, D>::encode(
2675                (
2676                    <fidl_fuchsia_wlan_ieee80211_common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow(&self.band),
2677                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::ValueTypeMarker>::borrow(&self.basic_rates),
2678                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.ht_cap),
2679                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_cap),
2680                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.operating_channels),
2681                ),
2682                encoder, offset, _depth
2683            )
2684        }
2685    }
2686    unsafe impl<
2687        D: fidl::encoding::ResourceDialect,
2688        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::WlanBand, D>,
2689        T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 12>, D>,
2690        T2: fidl::encoding::Encode<
2691                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
2692                D,
2693            >,
2694        T3: fidl::encoding::Encode<
2695                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
2696                D,
2697            >,
2698        T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 256>, D>,
2699    > fidl::encoding::Encode<BandCapability, D> for (T0, T1, T2, T3, T4)
2700    {
2701        #[inline]
2702        unsafe fn encode(
2703            self,
2704            encoder: &mut fidl::encoding::Encoder<'_, D>,
2705            offset: usize,
2706            depth: fidl::encoding::Depth,
2707        ) -> fidl::Result<()> {
2708            encoder.debug_check_bounds::<BandCapability>(offset);
2709            // Zero out padding regions. There's no need to apply masks
2710            // because the unmasked parts will be overwritten by fields.
2711            unsafe {
2712                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2713                (ptr as *mut u64).write_unaligned(0);
2714            }
2715            // Write the fields.
2716            self.0.encode(encoder, offset + 0, depth)?;
2717            self.1.encode(encoder, offset + 8, depth)?;
2718            self.2.encode(encoder, offset + 24, depth)?;
2719            self.3.encode(encoder, offset + 32, depth)?;
2720            self.4.encode(encoder, offset + 40, depth)?;
2721            Ok(())
2722        }
2723    }
2724
2725    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandCapability {
2726        #[inline(always)]
2727        fn new_empty() -> Self {
2728            Self {
2729                band: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::WlanBand, D),
2730                basic_rates: fidl::new_empty!(fidl::encoding::Vector<u8, 12>, D),
2731                ht_cap: fidl::new_empty!(
2732                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
2733                    D
2734                ),
2735                vht_cap: fidl::new_empty!(
2736                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
2737                    D
2738                ),
2739                operating_channels: fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D),
2740            }
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            // Verify that padding bytes are zero.
2752            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2753            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2754            let mask = 0xffffffffffffff00u64;
2755            let maskedval = padval & mask;
2756            if maskedval != 0 {
2757                return Err(fidl::Error::NonZeroPadding {
2758                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2759                });
2760            }
2761            fidl::decode!(
2762                fidl_fuchsia_wlan_ieee80211_common::WlanBand,
2763                D,
2764                &mut self.band,
2765                decoder,
2766                offset + 0,
2767                _depth
2768            )?;
2769            fidl::decode!(fidl::encoding::Vector<u8, 12>, D, &mut self.basic_rates, decoder, offset + 8, _depth)?;
2770            fidl::decode!(
2771                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
2772                D,
2773                &mut self.ht_cap,
2774                decoder,
2775                offset + 24,
2776                _depth
2777            )?;
2778            fidl::decode!(
2779                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
2780                D,
2781                &mut self.vht_cap,
2782                decoder,
2783                offset + 32,
2784                _depth
2785            )?;
2786            fidl::decode!(fidl::encoding::Vector<u8, 256>, D, &mut self.operating_channels, decoder, offset + 40, _depth)?;
2787            Ok(())
2788        }
2789    }
2790
2791    impl fidl::encoding::ValueTypeMarker for CapturedFrameResult {
2792        type Borrowed<'a> = &'a Self;
2793        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2794            value
2795        }
2796    }
2797
2798    unsafe impl fidl::encoding::TypeMarker for CapturedFrameResult {
2799        type Owned = Self;
2800
2801        #[inline(always)]
2802        fn inline_align(_context: fidl::encoding::Context) -> usize {
2803            8
2804        }
2805
2806        #[inline(always)]
2807        fn inline_size(_context: fidl::encoding::Context) -> usize {
2808            16
2809        }
2810    }
2811
2812    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CapturedFrameResult, D>
2813        for &CapturedFrameResult
2814    {
2815        #[inline]
2816        unsafe fn encode(
2817            self,
2818            encoder: &mut fidl::encoding::Encoder<'_, D>,
2819            offset: usize,
2820            _depth: fidl::encoding::Depth,
2821        ) -> fidl::Result<()> {
2822            encoder.debug_check_bounds::<CapturedFrameResult>(offset);
2823            // Delegate to tuple encoding.
2824            fidl::encoding::Encode::<CapturedFrameResult, D>::encode(
2825                (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
2826                    &self.frame,
2827                ),),
2828                encoder,
2829                offset,
2830                _depth,
2831            )
2832        }
2833    }
2834    unsafe impl<
2835        D: fidl::encoding::ResourceDialect,
2836        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2837    > fidl::encoding::Encode<CapturedFrameResult, D> for (T0,)
2838    {
2839        #[inline]
2840        unsafe fn encode(
2841            self,
2842            encoder: &mut fidl::encoding::Encoder<'_, D>,
2843            offset: usize,
2844            depth: fidl::encoding::Depth,
2845        ) -> fidl::Result<()> {
2846            encoder.debug_check_bounds::<CapturedFrameResult>(offset);
2847            // Zero out padding regions. There's no need to apply masks
2848            // because the unmasked parts will be overwritten by fields.
2849            // Write the fields.
2850            self.0.encode(encoder, offset + 0, depth)?;
2851            Ok(())
2852        }
2853    }
2854
2855    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CapturedFrameResult {
2856        #[inline(always)]
2857        fn new_empty() -> Self {
2858            Self { frame: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
2859        }
2860
2861        #[inline]
2862        unsafe fn decode(
2863            &mut self,
2864            decoder: &mut fidl::encoding::Decoder<'_, D>,
2865            offset: usize,
2866            _depth: fidl::encoding::Depth,
2867        ) -> fidl::Result<()> {
2868            decoder.debug_check_bounds::<Self>(offset);
2869            // Verify that padding bytes are zero.
2870            fidl::decode!(
2871                fidl::encoding::UnboundedVector<u8>,
2872                D,
2873                &mut self.frame,
2874                decoder,
2875                offset + 0,
2876                _depth
2877            )?;
2878            Ok(())
2879        }
2880    }
2881
2882    impl fidl::encoding::ValueTypeMarker for ConnectConfirm {
2883        type Borrowed<'a> = &'a Self;
2884        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2885            value
2886        }
2887    }
2888
2889    unsafe impl fidl::encoding::TypeMarker for ConnectConfirm {
2890        type Owned = Self;
2891
2892        #[inline(always)]
2893        fn inline_align(_context: fidl::encoding::Context) -> usize {
2894            8
2895        }
2896
2897        #[inline(always)]
2898        fn inline_size(_context: fidl::encoding::Context) -> usize {
2899            32
2900        }
2901    }
2902
2903    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectConfirm, D>
2904        for &ConnectConfirm
2905    {
2906        #[inline]
2907        unsafe fn encode(
2908            self,
2909            encoder: &mut fidl::encoding::Encoder<'_, D>,
2910            offset: usize,
2911            _depth: fidl::encoding::Depth,
2912        ) -> fidl::Result<()> {
2913            encoder.debug_check_bounds::<ConnectConfirm>(offset);
2914            // Delegate to tuple encoding.
2915            fidl::encoding::Encode::<ConnectConfirm, D>::encode(
2916                (
2917                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
2918                    <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
2919                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
2920                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
2921                ),
2922                encoder, offset, _depth
2923            )
2924        }
2925    }
2926    unsafe impl<
2927        D: fidl::encoding::ResourceDialect,
2928        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2929        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>,
2930        T2: fidl::encoding::Encode<u16, D>,
2931        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2932    > fidl::encoding::Encode<ConnectConfirm, D> for (T0, T1, T2, T3)
2933    {
2934        #[inline]
2935        unsafe fn encode(
2936            self,
2937            encoder: &mut fidl::encoding::Encoder<'_, D>,
2938            offset: usize,
2939            depth: fidl::encoding::Depth,
2940        ) -> fidl::Result<()> {
2941            encoder.debug_check_bounds::<ConnectConfirm>(offset);
2942            // Zero out padding regions. There's no need to apply masks
2943            // because the unmasked parts will be overwritten by fields.
2944            unsafe {
2945                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2946                (ptr as *mut u64).write_unaligned(0);
2947            }
2948            // Write the fields.
2949            self.0.encode(encoder, offset + 0, depth)?;
2950            self.1.encode(encoder, offset + 6, depth)?;
2951            self.2.encode(encoder, offset + 8, depth)?;
2952            self.3.encode(encoder, offset + 16, depth)?;
2953            Ok(())
2954        }
2955    }
2956
2957    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectConfirm {
2958        #[inline(always)]
2959        fn new_empty() -> Self {
2960            Self {
2961                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2962                result_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D),
2963                association_id: fidl::new_empty!(u16, D),
2964                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
2965            }
2966        }
2967
2968        #[inline]
2969        unsafe fn decode(
2970            &mut self,
2971            decoder: &mut fidl::encoding::Decoder<'_, D>,
2972            offset: usize,
2973            _depth: fidl::encoding::Depth,
2974        ) -> fidl::Result<()> {
2975            decoder.debug_check_bounds::<Self>(offset);
2976            // Verify that padding bytes are zero.
2977            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2978            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2979            let mask = 0xffffffffffff0000u64;
2980            let maskedval = padval & mask;
2981            if maskedval != 0 {
2982                return Err(fidl::Error::NonZeroPadding {
2983                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2984                });
2985            }
2986            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2987            fidl::decode!(
2988                fidl_fuchsia_wlan_ieee80211_common::StatusCode,
2989                D,
2990                &mut self.result_code,
2991                decoder,
2992                offset + 6,
2993                _depth
2994            )?;
2995            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 8, _depth)?;
2996            fidl::decode!(
2997                fidl::encoding::UnboundedVector<u8>,
2998                D,
2999                &mut self.association_ies,
3000                decoder,
3001                offset + 16,
3002                _depth
3003            )?;
3004            Ok(())
3005        }
3006    }
3007
3008    impl fidl::encoding::ValueTypeMarker for ConnectRequest {
3009        type Borrowed<'a> = &'a Self;
3010        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3011            value
3012        }
3013    }
3014
3015    unsafe impl fidl::encoding::TypeMarker for ConnectRequest {
3016        type Owned = Self;
3017
3018        #[inline(always)]
3019        fn inline_align(_context: fidl::encoding::Context) -> usize {
3020            8
3021        }
3022
3023        #[inline(always)]
3024        fn inline_size(_context: fidl::encoding::Context) -> usize {
3025            104
3026        }
3027    }
3028
3029    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectRequest, D>
3030        for &ConnectRequest
3031    {
3032        #[inline]
3033        unsafe fn encode(
3034            self,
3035            encoder: &mut fidl::encoding::Encoder<'_, D>,
3036            offset: usize,
3037            _depth: fidl::encoding::Depth,
3038        ) -> fidl::Result<()> {
3039            encoder.debug_check_bounds::<ConnectRequest>(offset);
3040            // Delegate to tuple encoding.
3041            fidl::encoding::Encode::<ConnectRequest, D>::encode(
3042                (
3043                    <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
3044                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.connect_failure_timeout),
3045                    <AuthenticationTypes as fidl::encoding::ValueTypeMarker>::borrow(&self.auth_type),
3046                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.sae_password),
3047                    <fidl::encoding::Boxed<SetKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.wep_key),
3048                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow(&self.security_ie),
3049                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_internal_common::OwePublicKey> as fidl::encoding::ValueTypeMarker>::borrow(&self.owe_public_key),
3050                ),
3051                encoder, offset, _depth
3052            )
3053        }
3054    }
3055    unsafe impl<
3056        D: fidl::encoding::ResourceDialect,
3057        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>,
3058        T1: fidl::encoding::Encode<u32, D>,
3059        T2: fidl::encoding::Encode<AuthenticationTypes, D>,
3060        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
3061        T4: fidl::encoding::Encode<fidl::encoding::Boxed<SetKeyDescriptor>, D>,
3062        T5: fidl::encoding::Encode<fidl::encoding::Vector<u8, 257>, D>,
3063        T6: fidl::encoding::Encode<
3064                fidl::encoding::Boxed<fidl_fuchsia_wlan_internal_common::OwePublicKey>,
3065                D,
3066            >,
3067    > fidl::encoding::Encode<ConnectRequest, D> for (T0, T1, T2, T3, T4, T5, T6)
3068    {
3069        #[inline]
3070        unsafe fn encode(
3071            self,
3072            encoder: &mut fidl::encoding::Encoder<'_, D>,
3073            offset: usize,
3074            depth: fidl::encoding::Depth,
3075        ) -> fidl::Result<()> {
3076            encoder.debug_check_bounds::<ConnectRequest>(offset);
3077            // Zero out padding regions. There's no need to apply masks
3078            // because the unmasked parts will be overwritten by fields.
3079            // Write the fields.
3080            self.0.encode(encoder, offset + 0, depth)?;
3081            self.1.encode(encoder, offset + 48, depth)?;
3082            self.2.encode(encoder, offset + 52, depth)?;
3083            self.3.encode(encoder, offset + 56, depth)?;
3084            self.4.encode(encoder, offset + 72, depth)?;
3085            self.5.encode(encoder, offset + 80, depth)?;
3086            self.6.encode(encoder, offset + 96, depth)?;
3087            Ok(())
3088        }
3089    }
3090
3091    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectRequest {
3092        #[inline(always)]
3093        fn new_empty() -> Self {
3094            Self {
3095                selected_bss: fidl::new_empty!(
3096                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
3097                    D
3098                ),
3099                connect_failure_timeout: fidl::new_empty!(u32, D),
3100                auth_type: fidl::new_empty!(AuthenticationTypes, D),
3101                sae_password: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
3102                wep_key: fidl::new_empty!(fidl::encoding::Boxed<SetKeyDescriptor>, D),
3103                security_ie: fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D),
3104                owe_public_key: fidl::new_empty!(
3105                    fidl::encoding::Boxed<fidl_fuchsia_wlan_internal_common::OwePublicKey>,
3106                    D
3107                ),
3108            }
3109        }
3110
3111        #[inline]
3112        unsafe fn decode(
3113            &mut self,
3114            decoder: &mut fidl::encoding::Decoder<'_, D>,
3115            offset: usize,
3116            _depth: fidl::encoding::Depth,
3117        ) -> fidl::Result<()> {
3118            decoder.debug_check_bounds::<Self>(offset);
3119            // Verify that padding bytes are zero.
3120            fidl::decode!(
3121                fidl_fuchsia_wlan_ieee80211_common::BssDescription,
3122                D,
3123                &mut self.selected_bss,
3124                decoder,
3125                offset + 0,
3126                _depth
3127            )?;
3128            fidl::decode!(u32, D, &mut self.connect_failure_timeout, decoder, offset + 48, _depth)?;
3129            fidl::decode!(
3130                AuthenticationTypes,
3131                D,
3132                &mut self.auth_type,
3133                decoder,
3134                offset + 52,
3135                _depth
3136            )?;
3137            fidl::decode!(
3138                fidl::encoding::UnboundedVector<u8>,
3139                D,
3140                &mut self.sae_password,
3141                decoder,
3142                offset + 56,
3143                _depth
3144            )?;
3145            fidl::decode!(
3146                fidl::encoding::Boxed<SetKeyDescriptor>,
3147                D,
3148                &mut self.wep_key,
3149                decoder,
3150                offset + 72,
3151                _depth
3152            )?;
3153            fidl::decode!(fidl::encoding::Vector<u8, 257>, D, &mut self.security_ie, decoder, offset + 80, _depth)?;
3154            fidl::decode!(
3155                fidl::encoding::Boxed<fidl_fuchsia_wlan_internal_common::OwePublicKey>,
3156                D,
3157                &mut self.owe_public_key,
3158                decoder,
3159                offset + 96,
3160                _depth
3161            )?;
3162            Ok(())
3163        }
3164    }
3165
3166    impl fidl::encoding::ValueTypeMarker for Country {
3167        type Borrowed<'a> = &'a Self;
3168        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3169            value
3170        }
3171    }
3172
3173    unsafe impl fidl::encoding::TypeMarker for Country {
3174        type Owned = Self;
3175
3176        #[inline(always)]
3177        fn inline_align(_context: fidl::encoding::Context) -> usize {
3178            1
3179        }
3180
3181        #[inline(always)]
3182        fn inline_size(_context: fidl::encoding::Context) -> usize {
3183            3
3184        }
3185        #[inline(always)]
3186        fn encode_is_copy() -> bool {
3187            true
3188        }
3189
3190        #[inline(always)]
3191        fn decode_is_copy() -> bool {
3192            true
3193        }
3194    }
3195
3196    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Country, D> for &Country {
3197        #[inline]
3198        unsafe fn encode(
3199            self,
3200            encoder: &mut fidl::encoding::Encoder<'_, D>,
3201            offset: usize,
3202            _depth: fidl::encoding::Depth,
3203        ) -> fidl::Result<()> {
3204            encoder.debug_check_bounds::<Country>(offset);
3205            unsafe {
3206                // Copy the object into the buffer.
3207                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3208                (buf_ptr as *mut Country).write_unaligned((self as *const Country).read());
3209                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3210                // done second because the memcpy will write garbage to these bytes.
3211            }
3212            Ok(())
3213        }
3214    }
3215    unsafe impl<
3216        D: fidl::encoding::ResourceDialect,
3217        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 2>, D>,
3218        T1: fidl::encoding::Encode<u8, D>,
3219    > fidl::encoding::Encode<Country, D> for (T0, T1)
3220    {
3221        #[inline]
3222        unsafe fn encode(
3223            self,
3224            encoder: &mut fidl::encoding::Encoder<'_, D>,
3225            offset: usize,
3226            depth: fidl::encoding::Depth,
3227        ) -> fidl::Result<()> {
3228            encoder.debug_check_bounds::<Country>(offset);
3229            // Zero out padding regions. There's no need to apply masks
3230            // because the unmasked parts will be overwritten by fields.
3231            // Write the fields.
3232            self.0.encode(encoder, offset + 0, depth)?;
3233            self.1.encode(encoder, offset + 2, depth)?;
3234            Ok(())
3235        }
3236    }
3237
3238    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Country {
3239        #[inline(always)]
3240        fn new_empty() -> Self {
3241            Self {
3242                alpha2: fidl::new_empty!(fidl::encoding::Array<u8, 2>, D),
3243                suffix: fidl::new_empty!(u8, D),
3244            }
3245        }
3246
3247        #[inline]
3248        unsafe fn decode(
3249            &mut self,
3250            decoder: &mut fidl::encoding::Decoder<'_, D>,
3251            offset: usize,
3252            _depth: fidl::encoding::Depth,
3253        ) -> fidl::Result<()> {
3254            decoder.debug_check_bounds::<Self>(offset);
3255            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3256            // Verify that padding bytes are zero.
3257            // Copy from the buffer into the object.
3258            unsafe {
3259                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 3);
3260            }
3261            Ok(())
3262        }
3263    }
3264
3265    impl fidl::encoding::ValueTypeMarker for DeauthenticateConfirm {
3266        type Borrowed<'a> = &'a Self;
3267        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3268            value
3269        }
3270    }
3271
3272    unsafe impl fidl::encoding::TypeMarker for DeauthenticateConfirm {
3273        type Owned = Self;
3274
3275        #[inline(always)]
3276        fn inline_align(_context: fidl::encoding::Context) -> usize {
3277            1
3278        }
3279
3280        #[inline(always)]
3281        fn inline_size(_context: fidl::encoding::Context) -> usize {
3282            6
3283        }
3284        #[inline(always)]
3285        fn encode_is_copy() -> bool {
3286            true
3287        }
3288
3289        #[inline(always)]
3290        fn decode_is_copy() -> bool {
3291            true
3292        }
3293    }
3294
3295    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeauthenticateConfirm, D>
3296        for &DeauthenticateConfirm
3297    {
3298        #[inline]
3299        unsafe fn encode(
3300            self,
3301            encoder: &mut fidl::encoding::Encoder<'_, D>,
3302            offset: usize,
3303            _depth: fidl::encoding::Depth,
3304        ) -> fidl::Result<()> {
3305            encoder.debug_check_bounds::<DeauthenticateConfirm>(offset);
3306            unsafe {
3307                // Copy the object into the buffer.
3308                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3309                (buf_ptr as *mut DeauthenticateConfirm)
3310                    .write_unaligned((self as *const DeauthenticateConfirm).read());
3311                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3312                // done second because the memcpy will write garbage to these bytes.
3313            }
3314            Ok(())
3315        }
3316    }
3317    unsafe impl<
3318        D: fidl::encoding::ResourceDialect,
3319        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3320    > fidl::encoding::Encode<DeauthenticateConfirm, D> for (T0,)
3321    {
3322        #[inline]
3323        unsafe fn encode(
3324            self,
3325            encoder: &mut fidl::encoding::Encoder<'_, D>,
3326            offset: usize,
3327            depth: fidl::encoding::Depth,
3328        ) -> fidl::Result<()> {
3329            encoder.debug_check_bounds::<DeauthenticateConfirm>(offset);
3330            // Zero out padding regions. There's no need to apply masks
3331            // because the unmasked parts will be overwritten by fields.
3332            // Write the fields.
3333            self.0.encode(encoder, offset + 0, depth)?;
3334            Ok(())
3335        }
3336    }
3337
3338    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeauthenticateConfirm {
3339        #[inline(always)]
3340        fn new_empty() -> Self {
3341            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
3342        }
3343
3344        #[inline]
3345        unsafe fn decode(
3346            &mut self,
3347            decoder: &mut fidl::encoding::Decoder<'_, D>,
3348            offset: usize,
3349            _depth: fidl::encoding::Depth,
3350        ) -> fidl::Result<()> {
3351            decoder.debug_check_bounds::<Self>(offset);
3352            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3353            // Verify that padding bytes are zero.
3354            // Copy from the buffer into the object.
3355            unsafe {
3356                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
3357            }
3358            Ok(())
3359        }
3360    }
3361
3362    impl fidl::encoding::ValueTypeMarker for DeauthenticateIndication {
3363        type Borrowed<'a> = &'a Self;
3364        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3365            value
3366        }
3367    }
3368
3369    unsafe impl fidl::encoding::TypeMarker for DeauthenticateIndication {
3370        type Owned = Self;
3371
3372        #[inline(always)]
3373        fn inline_align(_context: fidl::encoding::Context) -> usize {
3374            2
3375        }
3376
3377        #[inline(always)]
3378        fn inline_size(_context: fidl::encoding::Context) -> usize {
3379            10
3380        }
3381    }
3382
3383    unsafe impl<D: fidl::encoding::ResourceDialect>
3384        fidl::encoding::Encode<DeauthenticateIndication, D> for &DeauthenticateIndication
3385    {
3386        #[inline]
3387        unsafe fn encode(
3388            self,
3389            encoder: &mut fidl::encoding::Encoder<'_, D>,
3390            offset: usize,
3391            _depth: fidl::encoding::Depth,
3392        ) -> fidl::Result<()> {
3393            encoder.debug_check_bounds::<DeauthenticateIndication>(offset);
3394            // Delegate to tuple encoding.
3395            fidl::encoding::Encode::<DeauthenticateIndication, D>::encode(
3396                (
3397                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3398                    <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3399                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.locally_initiated),
3400                ),
3401                encoder, offset, _depth
3402            )
3403        }
3404    }
3405    unsafe impl<
3406        D: fidl::encoding::ResourceDialect,
3407        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3408        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>,
3409        T2: fidl::encoding::Encode<bool, D>,
3410    > fidl::encoding::Encode<DeauthenticateIndication, D> for (T0, T1, T2)
3411    {
3412        #[inline]
3413        unsafe fn encode(
3414            self,
3415            encoder: &mut fidl::encoding::Encoder<'_, D>,
3416            offset: usize,
3417            depth: fidl::encoding::Depth,
3418        ) -> fidl::Result<()> {
3419            encoder.debug_check_bounds::<DeauthenticateIndication>(offset);
3420            // Zero out padding regions. There's no need to apply masks
3421            // because the unmasked parts will be overwritten by fields.
3422            unsafe {
3423                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3424                (ptr as *mut u16).write_unaligned(0);
3425            }
3426            // Write the fields.
3427            self.0.encode(encoder, offset + 0, depth)?;
3428            self.1.encode(encoder, offset + 6, depth)?;
3429            self.2.encode(encoder, offset + 8, depth)?;
3430            Ok(())
3431        }
3432    }
3433
3434    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3435        for DeauthenticateIndication
3436    {
3437        #[inline(always)]
3438        fn new_empty() -> Self {
3439            Self {
3440                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3441                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D),
3442                locally_initiated: fidl::new_empty!(bool, D),
3443            }
3444        }
3445
3446        #[inline]
3447        unsafe fn decode(
3448            &mut self,
3449            decoder: &mut fidl::encoding::Decoder<'_, D>,
3450            offset: usize,
3451            _depth: fidl::encoding::Depth,
3452        ) -> fidl::Result<()> {
3453            decoder.debug_check_bounds::<Self>(offset);
3454            // Verify that padding bytes are zero.
3455            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
3456            let padval = unsafe { (ptr as *const u16).read_unaligned() };
3457            let mask = 0xff00u16;
3458            let maskedval = padval & mask;
3459            if maskedval != 0 {
3460                return Err(fidl::Error::NonZeroPadding {
3461                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
3462                });
3463            }
3464            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
3465            fidl::decode!(
3466                fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
3467                D,
3468                &mut self.reason_code,
3469                decoder,
3470                offset + 6,
3471                _depth
3472            )?;
3473            fidl::decode!(bool, D, &mut self.locally_initiated, decoder, offset + 8, _depth)?;
3474            Ok(())
3475        }
3476    }
3477
3478    impl fidl::encoding::ValueTypeMarker for DeauthenticateRequest {
3479        type Borrowed<'a> = &'a Self;
3480        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3481            value
3482        }
3483    }
3484
3485    unsafe impl fidl::encoding::TypeMarker for DeauthenticateRequest {
3486        type Owned = Self;
3487
3488        #[inline(always)]
3489        fn inline_align(_context: fidl::encoding::Context) -> usize {
3490            2
3491        }
3492
3493        #[inline(always)]
3494        fn inline_size(_context: fidl::encoding::Context) -> usize {
3495            8
3496        }
3497    }
3498
3499    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeauthenticateRequest, D>
3500        for &DeauthenticateRequest
3501    {
3502        #[inline]
3503        unsafe fn encode(
3504            self,
3505            encoder: &mut fidl::encoding::Encoder<'_, D>,
3506            offset: usize,
3507            _depth: fidl::encoding::Depth,
3508        ) -> fidl::Result<()> {
3509            encoder.debug_check_bounds::<DeauthenticateRequest>(offset);
3510            // Delegate to tuple encoding.
3511            fidl::encoding::Encode::<DeauthenticateRequest, D>::encode(
3512                (
3513                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3514                    <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3515                ),
3516                encoder, offset, _depth
3517            )
3518        }
3519    }
3520    unsafe impl<
3521        D: fidl::encoding::ResourceDialect,
3522        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3523        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>,
3524    > fidl::encoding::Encode<DeauthenticateRequest, D> for (T0, T1)
3525    {
3526        #[inline]
3527        unsafe fn encode(
3528            self,
3529            encoder: &mut fidl::encoding::Encoder<'_, D>,
3530            offset: usize,
3531            depth: fidl::encoding::Depth,
3532        ) -> fidl::Result<()> {
3533            encoder.debug_check_bounds::<DeauthenticateRequest>(offset);
3534            // Zero out padding regions. There's no need to apply masks
3535            // because the unmasked parts will be overwritten by fields.
3536            // Write the fields.
3537            self.0.encode(encoder, offset + 0, depth)?;
3538            self.1.encode(encoder, offset + 6, depth)?;
3539            Ok(())
3540        }
3541    }
3542
3543    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeauthenticateRequest {
3544        #[inline(always)]
3545        fn new_empty() -> Self {
3546            Self {
3547                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3548                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D),
3549            }
3550        }
3551
3552        #[inline]
3553        unsafe fn decode(
3554            &mut self,
3555            decoder: &mut fidl::encoding::Decoder<'_, D>,
3556            offset: usize,
3557            _depth: fidl::encoding::Depth,
3558        ) -> fidl::Result<()> {
3559            decoder.debug_check_bounds::<Self>(offset);
3560            // Verify that padding bytes are zero.
3561            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
3562            fidl::decode!(
3563                fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
3564                D,
3565                &mut self.reason_code,
3566                decoder,
3567                offset + 6,
3568                _depth
3569            )?;
3570            Ok(())
3571        }
3572    }
3573
3574    impl fidl::encoding::ValueTypeMarker for DeleteKeyDescriptor {
3575        type Borrowed<'a> = &'a Self;
3576        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3577            value
3578        }
3579    }
3580
3581    unsafe impl fidl::encoding::TypeMarker for DeleteKeyDescriptor {
3582        type Owned = Self;
3583
3584        #[inline(always)]
3585        fn inline_align(_context: fidl::encoding::Context) -> usize {
3586            4
3587        }
3588
3589        #[inline(always)]
3590        fn inline_size(_context: fidl::encoding::Context) -> usize {
3591            16
3592        }
3593    }
3594
3595    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeleteKeyDescriptor, D>
3596        for &DeleteKeyDescriptor
3597    {
3598        #[inline]
3599        unsafe fn encode(
3600            self,
3601            encoder: &mut fidl::encoding::Encoder<'_, D>,
3602            offset: usize,
3603            _depth: fidl::encoding::Depth,
3604        ) -> fidl::Result<()> {
3605            encoder.debug_check_bounds::<DeleteKeyDescriptor>(offset);
3606            // Delegate to tuple encoding.
3607            fidl::encoding::Encode::<DeleteKeyDescriptor, D>::encode(
3608                (
3609                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.key_id),
3610                    <KeyType as fidl::encoding::ValueTypeMarker>::borrow(&self.key_type),
3611                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
3612                        &self.address,
3613                    ),
3614                ),
3615                encoder,
3616                offset,
3617                _depth,
3618            )
3619        }
3620    }
3621    unsafe impl<
3622        D: fidl::encoding::ResourceDialect,
3623        T0: fidl::encoding::Encode<u16, D>,
3624        T1: fidl::encoding::Encode<KeyType, D>,
3625        T2: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3626    > fidl::encoding::Encode<DeleteKeyDescriptor, D> for (T0, T1, T2)
3627    {
3628        #[inline]
3629        unsafe fn encode(
3630            self,
3631            encoder: &mut fidl::encoding::Encoder<'_, D>,
3632            offset: usize,
3633            depth: fidl::encoding::Depth,
3634        ) -> fidl::Result<()> {
3635            encoder.debug_check_bounds::<DeleteKeyDescriptor>(offset);
3636            // Zero out padding regions. There's no need to apply masks
3637            // because the unmasked parts will be overwritten by fields.
3638            unsafe {
3639                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3640                (ptr as *mut u32).write_unaligned(0);
3641            }
3642            unsafe {
3643                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(12);
3644                (ptr as *mut u32).write_unaligned(0);
3645            }
3646            // Write the fields.
3647            self.0.encode(encoder, offset + 0, depth)?;
3648            self.1.encode(encoder, offset + 4, depth)?;
3649            self.2.encode(encoder, offset + 8, depth)?;
3650            Ok(())
3651        }
3652    }
3653
3654    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeleteKeyDescriptor {
3655        #[inline(always)]
3656        fn new_empty() -> Self {
3657            Self {
3658                key_id: fidl::new_empty!(u16, D),
3659                key_type: fidl::new_empty!(KeyType, D),
3660                address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3661            }
3662        }
3663
3664        #[inline]
3665        unsafe fn decode(
3666            &mut self,
3667            decoder: &mut fidl::encoding::Decoder<'_, D>,
3668            offset: usize,
3669            _depth: fidl::encoding::Depth,
3670        ) -> fidl::Result<()> {
3671            decoder.debug_check_bounds::<Self>(offset);
3672            // Verify that padding bytes are zero.
3673            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3674            let padval = unsafe { (ptr as *const u32).read_unaligned() };
3675            let mask = 0xffff0000u32;
3676            let maskedval = padval & mask;
3677            if maskedval != 0 {
3678                return Err(fidl::Error::NonZeroPadding {
3679                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3680                });
3681            }
3682            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(12) };
3683            let padval = unsafe { (ptr as *const u32).read_unaligned() };
3684            let mask = 0xffff0000u32;
3685            let maskedval = padval & mask;
3686            if maskedval != 0 {
3687                return Err(fidl::Error::NonZeroPadding {
3688                    padding_start: offset + 12 + ((mask as u64).trailing_zeros() / 8) as usize,
3689                });
3690            }
3691            fidl::decode!(u16, D, &mut self.key_id, decoder, offset + 0, _depth)?;
3692            fidl::decode!(KeyType, D, &mut self.key_type, decoder, offset + 4, _depth)?;
3693            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.address, decoder, offset + 8, _depth)?;
3694            Ok(())
3695        }
3696    }
3697
3698    impl fidl::encoding::ValueTypeMarker for DeleteKeysRequest {
3699        type Borrowed<'a> = &'a Self;
3700        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3701            value
3702        }
3703    }
3704
3705    unsafe impl fidl::encoding::TypeMarker for DeleteKeysRequest {
3706        type Owned = Self;
3707
3708        #[inline(always)]
3709        fn inline_align(_context: fidl::encoding::Context) -> usize {
3710            8
3711        }
3712
3713        #[inline(always)]
3714        fn inline_size(_context: fidl::encoding::Context) -> usize {
3715            16
3716        }
3717    }
3718
3719    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeleteKeysRequest, D>
3720        for &DeleteKeysRequest
3721    {
3722        #[inline]
3723        unsafe fn encode(
3724            self,
3725            encoder: &mut fidl::encoding::Encoder<'_, D>,
3726            offset: usize,
3727            _depth: fidl::encoding::Depth,
3728        ) -> fidl::Result<()> {
3729            encoder.debug_check_bounds::<DeleteKeysRequest>(offset);
3730            // Delegate to tuple encoding.
3731            fidl::encoding::Encode::<DeleteKeysRequest, D>::encode(
3732                (
3733                    <fidl::encoding::UnboundedVector<DeleteKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.keylist),
3734                ),
3735                encoder, offset, _depth
3736            )
3737        }
3738    }
3739    unsafe impl<
3740        D: fidl::encoding::ResourceDialect,
3741        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<DeleteKeyDescriptor>, D>,
3742    > fidl::encoding::Encode<DeleteKeysRequest, D> for (T0,)
3743    {
3744        #[inline]
3745        unsafe fn encode(
3746            self,
3747            encoder: &mut fidl::encoding::Encoder<'_, D>,
3748            offset: usize,
3749            depth: fidl::encoding::Depth,
3750        ) -> fidl::Result<()> {
3751            encoder.debug_check_bounds::<DeleteKeysRequest>(offset);
3752            // Zero out padding regions. There's no need to apply masks
3753            // because the unmasked parts will be overwritten by fields.
3754            // Write the fields.
3755            self.0.encode(encoder, offset + 0, depth)?;
3756            Ok(())
3757        }
3758    }
3759
3760    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeleteKeysRequest {
3761        #[inline(always)]
3762        fn new_empty() -> Self {
3763            Self {
3764                keylist: fidl::new_empty!(fidl::encoding::UnboundedVector<DeleteKeyDescriptor>, D),
3765            }
3766        }
3767
3768        #[inline]
3769        unsafe fn decode(
3770            &mut self,
3771            decoder: &mut fidl::encoding::Decoder<'_, D>,
3772            offset: usize,
3773            _depth: fidl::encoding::Depth,
3774        ) -> fidl::Result<()> {
3775            decoder.debug_check_bounds::<Self>(offset);
3776            // Verify that padding bytes are zero.
3777            fidl::decode!(
3778                fidl::encoding::UnboundedVector<DeleteKeyDescriptor>,
3779                D,
3780                &mut self.keylist,
3781                decoder,
3782                offset + 0,
3783                _depth
3784            )?;
3785            Ok(())
3786        }
3787    }
3788
3789    impl fidl::encoding::ValueTypeMarker for DeviceInfo {
3790        type Borrowed<'a> = &'a Self;
3791        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3792            value
3793        }
3794    }
3795
3796    unsafe impl fidl::encoding::TypeMarker for DeviceInfo {
3797        type Owned = Self;
3798
3799        #[inline(always)]
3800        fn inline_align(_context: fidl::encoding::Context) -> usize {
3801            8
3802        }
3803
3804        #[inline(always)]
3805        fn inline_size(_context: fidl::encoding::Context) -> usize {
3806            40
3807        }
3808    }
3809
3810    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceInfo, D>
3811        for &DeviceInfo
3812    {
3813        #[inline]
3814        unsafe fn encode(
3815            self,
3816            encoder: &mut fidl::encoding::Encoder<'_, D>,
3817            offset: usize,
3818            _depth: fidl::encoding::Depth,
3819        ) -> fidl::Result<()> {
3820            encoder.debug_check_bounds::<DeviceInfo>(offset);
3821            // Delegate to tuple encoding.
3822            fidl::encoding::Encode::<DeviceInfo, D>::encode(
3823                (
3824                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.sta_addr),
3825                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.factory_addr),
3826                    <fidl_fuchsia_wlan_common_common::WlanMacRole as fidl::encoding::ValueTypeMarker>::borrow(&self.role),
3827                    <fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::ValueTypeMarker>::borrow(&self.bands),
3828                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.softmac_hardware_capability),
3829                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.qos_capable),
3830                ),
3831                encoder, offset, _depth
3832            )
3833        }
3834    }
3835    unsafe impl<
3836        D: fidl::encoding::ResourceDialect,
3837        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3838        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3839        T2: fidl::encoding::Encode<fidl_fuchsia_wlan_common_common::WlanMacRole, D>,
3840        T3: fidl::encoding::Encode<fidl::encoding::Vector<BandCapability, 16>, D>,
3841        T4: fidl::encoding::Encode<u32, D>,
3842        T5: fidl::encoding::Encode<bool, D>,
3843    > fidl::encoding::Encode<DeviceInfo, D> for (T0, T1, T2, T3, T4, T5)
3844    {
3845        #[inline]
3846        unsafe fn encode(
3847            self,
3848            encoder: &mut fidl::encoding::Encoder<'_, D>,
3849            offset: usize,
3850            depth: fidl::encoding::Depth,
3851        ) -> fidl::Result<()> {
3852            encoder.debug_check_bounds::<DeviceInfo>(offset);
3853            // Zero out padding regions. There's no need to apply masks
3854            // because the unmasked parts will be overwritten by fields.
3855            unsafe {
3856                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
3857                (ptr as *mut u64).write_unaligned(0);
3858            }
3859            // Write the fields.
3860            self.0.encode(encoder, offset + 0, depth)?;
3861            self.1.encode(encoder, offset + 6, depth)?;
3862            self.2.encode(encoder, offset + 12, depth)?;
3863            self.3.encode(encoder, offset + 16, depth)?;
3864            self.4.encode(encoder, offset + 32, depth)?;
3865            self.5.encode(encoder, offset + 36, depth)?;
3866            Ok(())
3867        }
3868    }
3869
3870    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceInfo {
3871        #[inline(always)]
3872        fn new_empty() -> Self {
3873            Self {
3874                sta_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3875                factory_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3876                role: fidl::new_empty!(fidl_fuchsia_wlan_common_common::WlanMacRole, D),
3877                bands: fidl::new_empty!(fidl::encoding::Vector<BandCapability, 16>, D),
3878                softmac_hardware_capability: fidl::new_empty!(u32, D),
3879                qos_capable: fidl::new_empty!(bool, D),
3880            }
3881        }
3882
3883        #[inline]
3884        unsafe fn decode(
3885            &mut self,
3886            decoder: &mut fidl::encoding::Decoder<'_, D>,
3887            offset: usize,
3888            _depth: fidl::encoding::Depth,
3889        ) -> fidl::Result<()> {
3890            decoder.debug_check_bounds::<Self>(offset);
3891            // Verify that padding bytes are zero.
3892            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
3893            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3894            let mask = 0xffffff0000000000u64;
3895            let maskedval = padval & mask;
3896            if maskedval != 0 {
3897                return Err(fidl::Error::NonZeroPadding {
3898                    padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
3899                });
3900            }
3901            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.sta_addr, decoder, offset + 0, _depth)?;
3902            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.factory_addr, decoder, offset + 6, _depth)?;
3903            fidl::decode!(
3904                fidl_fuchsia_wlan_common_common::WlanMacRole,
3905                D,
3906                &mut self.role,
3907                decoder,
3908                offset + 12,
3909                _depth
3910            )?;
3911            fidl::decode!(fidl::encoding::Vector<BandCapability, 16>, D, &mut self.bands, decoder, offset + 16, _depth)?;
3912            fidl::decode!(
3913                u32,
3914                D,
3915                &mut self.softmac_hardware_capability,
3916                decoder,
3917                offset + 32,
3918                _depth
3919            )?;
3920            fidl::decode!(bool, D, &mut self.qos_capable, decoder, offset + 36, _depth)?;
3921            Ok(())
3922        }
3923    }
3924
3925    impl fidl::encoding::ValueTypeMarker for DisassociateConfirm {
3926        type Borrowed<'a> = &'a Self;
3927        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3928            value
3929        }
3930    }
3931
3932    unsafe impl fidl::encoding::TypeMarker for DisassociateConfirm {
3933        type Owned = Self;
3934
3935        #[inline(always)]
3936        fn inline_align(_context: fidl::encoding::Context) -> usize {
3937            4
3938        }
3939
3940        #[inline(always)]
3941        fn inline_size(_context: fidl::encoding::Context) -> usize {
3942            4
3943        }
3944        #[inline(always)]
3945        fn encode_is_copy() -> bool {
3946            true
3947        }
3948
3949        #[inline(always)]
3950        fn decode_is_copy() -> bool {
3951            true
3952        }
3953    }
3954
3955    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisassociateConfirm, D>
3956        for &DisassociateConfirm
3957    {
3958        #[inline]
3959        unsafe fn encode(
3960            self,
3961            encoder: &mut fidl::encoding::Encoder<'_, D>,
3962            offset: usize,
3963            _depth: fidl::encoding::Depth,
3964        ) -> fidl::Result<()> {
3965            encoder.debug_check_bounds::<DisassociateConfirm>(offset);
3966            unsafe {
3967                // Copy the object into the buffer.
3968                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3969                (buf_ptr as *mut DisassociateConfirm)
3970                    .write_unaligned((self as *const DisassociateConfirm).read());
3971                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3972                // done second because the memcpy will write garbage to these bytes.
3973            }
3974            Ok(())
3975        }
3976    }
3977    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
3978        fidl::encoding::Encode<DisassociateConfirm, D> for (T0,)
3979    {
3980        #[inline]
3981        unsafe fn encode(
3982            self,
3983            encoder: &mut fidl::encoding::Encoder<'_, D>,
3984            offset: usize,
3985            depth: fidl::encoding::Depth,
3986        ) -> fidl::Result<()> {
3987            encoder.debug_check_bounds::<DisassociateConfirm>(offset);
3988            // Zero out padding regions. There's no need to apply masks
3989            // because the unmasked parts will be overwritten by fields.
3990            // Write the fields.
3991            self.0.encode(encoder, offset + 0, depth)?;
3992            Ok(())
3993        }
3994    }
3995
3996    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisassociateConfirm {
3997        #[inline(always)]
3998        fn new_empty() -> Self {
3999            Self { status: fidl::new_empty!(i32, D) }
4000        }
4001
4002        #[inline]
4003        unsafe fn decode(
4004            &mut self,
4005            decoder: &mut fidl::encoding::Decoder<'_, D>,
4006            offset: usize,
4007            _depth: fidl::encoding::Depth,
4008        ) -> fidl::Result<()> {
4009            decoder.debug_check_bounds::<Self>(offset);
4010            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
4011            // Verify that padding bytes are zero.
4012            // Copy from the buffer into the object.
4013            unsafe {
4014                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
4015            }
4016            Ok(())
4017        }
4018    }
4019
4020    impl fidl::encoding::ValueTypeMarker for DisassociateIndication {
4021        type Borrowed<'a> = &'a Self;
4022        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4023            value
4024        }
4025    }
4026
4027    unsafe impl fidl::encoding::TypeMarker for DisassociateIndication {
4028        type Owned = Self;
4029
4030        #[inline(always)]
4031        fn inline_align(_context: fidl::encoding::Context) -> usize {
4032            2
4033        }
4034
4035        #[inline(always)]
4036        fn inline_size(_context: fidl::encoding::Context) -> usize {
4037            10
4038        }
4039    }
4040
4041    unsafe impl<D: fidl::encoding::ResourceDialect>
4042        fidl::encoding::Encode<DisassociateIndication, D> for &DisassociateIndication
4043    {
4044        #[inline]
4045        unsafe fn encode(
4046            self,
4047            encoder: &mut fidl::encoding::Encoder<'_, D>,
4048            offset: usize,
4049            _depth: fidl::encoding::Depth,
4050        ) -> fidl::Result<()> {
4051            encoder.debug_check_bounds::<DisassociateIndication>(offset);
4052            // Delegate to tuple encoding.
4053            fidl::encoding::Encode::<DisassociateIndication, D>::encode(
4054                (
4055                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
4056                    <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
4057                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.locally_initiated),
4058                ),
4059                encoder, offset, _depth
4060            )
4061        }
4062    }
4063    unsafe impl<
4064        D: fidl::encoding::ResourceDialect,
4065        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4066        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>,
4067        T2: fidl::encoding::Encode<bool, D>,
4068    > fidl::encoding::Encode<DisassociateIndication, D> for (T0, T1, T2)
4069    {
4070        #[inline]
4071        unsafe fn encode(
4072            self,
4073            encoder: &mut fidl::encoding::Encoder<'_, D>,
4074            offset: usize,
4075            depth: fidl::encoding::Depth,
4076        ) -> fidl::Result<()> {
4077            encoder.debug_check_bounds::<DisassociateIndication>(offset);
4078            // Zero out padding regions. There's no need to apply masks
4079            // because the unmasked parts will be overwritten by fields.
4080            unsafe {
4081                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4082                (ptr as *mut u16).write_unaligned(0);
4083            }
4084            // Write the fields.
4085            self.0.encode(encoder, offset + 0, depth)?;
4086            self.1.encode(encoder, offset + 6, depth)?;
4087            self.2.encode(encoder, offset + 8, depth)?;
4088            Ok(())
4089        }
4090    }
4091
4092    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4093        for DisassociateIndication
4094    {
4095        #[inline(always)]
4096        fn new_empty() -> Self {
4097            Self {
4098                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4099                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D),
4100                locally_initiated: fidl::new_empty!(bool, D),
4101            }
4102        }
4103
4104        #[inline]
4105        unsafe fn decode(
4106            &mut self,
4107            decoder: &mut fidl::encoding::Decoder<'_, D>,
4108            offset: usize,
4109            _depth: fidl::encoding::Depth,
4110        ) -> fidl::Result<()> {
4111            decoder.debug_check_bounds::<Self>(offset);
4112            // Verify that padding bytes are zero.
4113            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4114            let padval = unsafe { (ptr as *const u16).read_unaligned() };
4115            let mask = 0xff00u16;
4116            let maskedval = padval & mask;
4117            if maskedval != 0 {
4118                return Err(fidl::Error::NonZeroPadding {
4119                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4120                });
4121            }
4122            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
4123            fidl::decode!(
4124                fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
4125                D,
4126                &mut self.reason_code,
4127                decoder,
4128                offset + 6,
4129                _depth
4130            )?;
4131            fidl::decode!(bool, D, &mut self.locally_initiated, decoder, offset + 8, _depth)?;
4132            Ok(())
4133        }
4134    }
4135
4136    impl fidl::encoding::ValueTypeMarker for DisassociateRequest {
4137        type Borrowed<'a> = &'a Self;
4138        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4139            value
4140        }
4141    }
4142
4143    unsafe impl fidl::encoding::TypeMarker for DisassociateRequest {
4144        type Owned = Self;
4145
4146        #[inline(always)]
4147        fn inline_align(_context: fidl::encoding::Context) -> usize {
4148            2
4149        }
4150
4151        #[inline(always)]
4152        fn inline_size(_context: fidl::encoding::Context) -> usize {
4153            8
4154        }
4155    }
4156
4157    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisassociateRequest, D>
4158        for &DisassociateRequest
4159    {
4160        #[inline]
4161        unsafe fn encode(
4162            self,
4163            encoder: &mut fidl::encoding::Encoder<'_, D>,
4164            offset: usize,
4165            _depth: fidl::encoding::Depth,
4166        ) -> fidl::Result<()> {
4167            encoder.debug_check_bounds::<DisassociateRequest>(offset);
4168            // Delegate to tuple encoding.
4169            fidl::encoding::Encode::<DisassociateRequest, D>::encode(
4170                (
4171                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
4172                    <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
4173                ),
4174                encoder, offset, _depth
4175            )
4176        }
4177    }
4178    unsafe impl<
4179        D: fidl::encoding::ResourceDialect,
4180        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4181        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>,
4182    > fidl::encoding::Encode<DisassociateRequest, D> for (T0, T1)
4183    {
4184        #[inline]
4185        unsafe fn encode(
4186            self,
4187            encoder: &mut fidl::encoding::Encoder<'_, D>,
4188            offset: usize,
4189            depth: fidl::encoding::Depth,
4190        ) -> fidl::Result<()> {
4191            encoder.debug_check_bounds::<DisassociateRequest>(offset);
4192            // Zero out padding regions. There's no need to apply masks
4193            // because the unmasked parts will be overwritten by fields.
4194            // Write the fields.
4195            self.0.encode(encoder, offset + 0, depth)?;
4196            self.1.encode(encoder, offset + 6, depth)?;
4197            Ok(())
4198        }
4199    }
4200
4201    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisassociateRequest {
4202        #[inline(always)]
4203        fn new_empty() -> Self {
4204            Self {
4205                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4206                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D),
4207            }
4208        }
4209
4210        #[inline]
4211        unsafe fn decode(
4212            &mut self,
4213            decoder: &mut fidl::encoding::Decoder<'_, D>,
4214            offset: usize,
4215            _depth: fidl::encoding::Depth,
4216        ) -> fidl::Result<()> {
4217            decoder.debug_check_bounds::<Self>(offset);
4218            // Verify that padding bytes are zero.
4219            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
4220            fidl::decode!(
4221                fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
4222                D,
4223                &mut self.reason_code,
4224                decoder,
4225                offset + 6,
4226                _depth
4227            )?;
4228            Ok(())
4229        }
4230    }
4231
4232    impl fidl::encoding::ValueTypeMarker for EapolConfirm {
4233        type Borrowed<'a> = &'a Self;
4234        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4235            value
4236        }
4237    }
4238
4239    unsafe impl fidl::encoding::TypeMarker for EapolConfirm {
4240        type Owned = Self;
4241
4242        #[inline(always)]
4243        fn inline_align(_context: fidl::encoding::Context) -> usize {
4244            4
4245        }
4246
4247        #[inline(always)]
4248        fn inline_size(_context: fidl::encoding::Context) -> usize {
4249            12
4250        }
4251    }
4252
4253    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolConfirm, D>
4254        for &EapolConfirm
4255    {
4256        #[inline]
4257        unsafe fn encode(
4258            self,
4259            encoder: &mut fidl::encoding::Encoder<'_, D>,
4260            offset: usize,
4261            _depth: fidl::encoding::Depth,
4262        ) -> fidl::Result<()> {
4263            encoder.debug_check_bounds::<EapolConfirm>(offset);
4264            // Delegate to tuple encoding.
4265            fidl::encoding::Encode::<EapolConfirm, D>::encode(
4266                (
4267                    <EapolResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
4268                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
4269                        &self.dst_addr,
4270                    ),
4271                ),
4272                encoder,
4273                offset,
4274                _depth,
4275            )
4276        }
4277    }
4278    unsafe impl<
4279        D: fidl::encoding::ResourceDialect,
4280        T0: fidl::encoding::Encode<EapolResultCode, D>,
4281        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4282    > fidl::encoding::Encode<EapolConfirm, D> for (T0, T1)
4283    {
4284        #[inline]
4285        unsafe fn encode(
4286            self,
4287            encoder: &mut fidl::encoding::Encoder<'_, D>,
4288            offset: usize,
4289            depth: fidl::encoding::Depth,
4290        ) -> fidl::Result<()> {
4291            encoder.debug_check_bounds::<EapolConfirm>(offset);
4292            // Zero out padding regions. There's no need to apply masks
4293            // because the unmasked parts will be overwritten by fields.
4294            unsafe {
4295                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4296                (ptr as *mut u32).write_unaligned(0);
4297            }
4298            // Write the fields.
4299            self.0.encode(encoder, offset + 0, depth)?;
4300            self.1.encode(encoder, offset + 4, depth)?;
4301            Ok(())
4302        }
4303    }
4304
4305    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolConfirm {
4306        #[inline(always)]
4307        fn new_empty() -> Self {
4308            Self {
4309                result_code: fidl::new_empty!(EapolResultCode, D),
4310                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4311            }
4312        }
4313
4314        #[inline]
4315        unsafe fn decode(
4316            &mut self,
4317            decoder: &mut fidl::encoding::Decoder<'_, D>,
4318            offset: usize,
4319            _depth: fidl::encoding::Depth,
4320        ) -> fidl::Result<()> {
4321            decoder.debug_check_bounds::<Self>(offset);
4322            // Verify that padding bytes are zero.
4323            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4324            let padval = unsafe { (ptr as *const u32).read_unaligned() };
4325            let mask = 0xffff0000u32;
4326            let maskedval = padval & mask;
4327            if maskedval != 0 {
4328                return Err(fidl::Error::NonZeroPadding {
4329                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4330                });
4331            }
4332            fidl::decode!(EapolResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
4333            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 4, _depth)?;
4334            Ok(())
4335        }
4336    }
4337
4338    impl fidl::encoding::ValueTypeMarker for EapolIndication {
4339        type Borrowed<'a> = &'a Self;
4340        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4341            value
4342        }
4343    }
4344
4345    unsafe impl fidl::encoding::TypeMarker for EapolIndication {
4346        type Owned = Self;
4347
4348        #[inline(always)]
4349        fn inline_align(_context: fidl::encoding::Context) -> usize {
4350            8
4351        }
4352
4353        #[inline(always)]
4354        fn inline_size(_context: fidl::encoding::Context) -> usize {
4355            32
4356        }
4357    }
4358
4359    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolIndication, D>
4360        for &EapolIndication
4361    {
4362        #[inline]
4363        unsafe fn encode(
4364            self,
4365            encoder: &mut fidl::encoding::Encoder<'_, D>,
4366            offset: usize,
4367            _depth: fidl::encoding::Depth,
4368        ) -> fidl::Result<()> {
4369            encoder.debug_check_bounds::<EapolIndication>(offset);
4370            // Delegate to tuple encoding.
4371            fidl::encoding::Encode::<EapolIndication, D>::encode(
4372                (
4373                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.src_addr),
4374                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.dst_addr),
4375                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4376                ),
4377                encoder, offset, _depth
4378            )
4379        }
4380    }
4381    unsafe impl<
4382        D: fidl::encoding::ResourceDialect,
4383        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4384        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4385        T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4386    > fidl::encoding::Encode<EapolIndication, D> for (T0, T1, T2)
4387    {
4388        #[inline]
4389        unsafe fn encode(
4390            self,
4391            encoder: &mut fidl::encoding::Encoder<'_, D>,
4392            offset: usize,
4393            depth: fidl::encoding::Depth,
4394        ) -> fidl::Result<()> {
4395            encoder.debug_check_bounds::<EapolIndication>(offset);
4396            // Zero out padding regions. There's no need to apply masks
4397            // because the unmasked parts will be overwritten by fields.
4398            unsafe {
4399                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4400                (ptr as *mut u64).write_unaligned(0);
4401            }
4402            // Write the fields.
4403            self.0.encode(encoder, offset + 0, depth)?;
4404            self.1.encode(encoder, offset + 6, depth)?;
4405            self.2.encode(encoder, offset + 16, depth)?;
4406            Ok(())
4407        }
4408    }
4409
4410    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolIndication {
4411        #[inline(always)]
4412        fn new_empty() -> Self {
4413            Self {
4414                src_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4415                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4416                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4417            }
4418        }
4419
4420        #[inline]
4421        unsafe fn decode(
4422            &mut self,
4423            decoder: &mut fidl::encoding::Decoder<'_, D>,
4424            offset: usize,
4425            _depth: fidl::encoding::Depth,
4426        ) -> fidl::Result<()> {
4427            decoder.debug_check_bounds::<Self>(offset);
4428            // Verify that padding bytes are zero.
4429            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4430            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4431            let mask = 0xffffffff00000000u64;
4432            let maskedval = padval & mask;
4433            if maskedval != 0 {
4434                return Err(fidl::Error::NonZeroPadding {
4435                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4436                });
4437            }
4438            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.src_addr, decoder, offset + 0, _depth)?;
4439            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 6, _depth)?;
4440            fidl::decode!(
4441                fidl::encoding::UnboundedVector<u8>,
4442                D,
4443                &mut self.data,
4444                decoder,
4445                offset + 16,
4446                _depth
4447            )?;
4448            Ok(())
4449        }
4450    }
4451
4452    impl fidl::encoding::ValueTypeMarker for EapolRequest {
4453        type Borrowed<'a> = &'a Self;
4454        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4455            value
4456        }
4457    }
4458
4459    unsafe impl fidl::encoding::TypeMarker for EapolRequest {
4460        type Owned = Self;
4461
4462        #[inline(always)]
4463        fn inline_align(_context: fidl::encoding::Context) -> usize {
4464            8
4465        }
4466
4467        #[inline(always)]
4468        fn inline_size(_context: fidl::encoding::Context) -> usize {
4469            32
4470        }
4471    }
4472
4473    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolRequest, D>
4474        for &EapolRequest
4475    {
4476        #[inline]
4477        unsafe fn encode(
4478            self,
4479            encoder: &mut fidl::encoding::Encoder<'_, D>,
4480            offset: usize,
4481            _depth: fidl::encoding::Depth,
4482        ) -> fidl::Result<()> {
4483            encoder.debug_check_bounds::<EapolRequest>(offset);
4484            // Delegate to tuple encoding.
4485            fidl::encoding::Encode::<EapolRequest, D>::encode(
4486                (
4487                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.src_addr),
4488                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.dst_addr),
4489                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4490                ),
4491                encoder, offset, _depth
4492            )
4493        }
4494    }
4495    unsafe impl<
4496        D: fidl::encoding::ResourceDialect,
4497        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4498        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4499        T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4500    > fidl::encoding::Encode<EapolRequest, D> for (T0, T1, T2)
4501    {
4502        #[inline]
4503        unsafe fn encode(
4504            self,
4505            encoder: &mut fidl::encoding::Encoder<'_, D>,
4506            offset: usize,
4507            depth: fidl::encoding::Depth,
4508        ) -> fidl::Result<()> {
4509            encoder.debug_check_bounds::<EapolRequest>(offset);
4510            // Zero out padding regions. There's no need to apply masks
4511            // because the unmasked parts will be overwritten by fields.
4512            unsafe {
4513                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4514                (ptr as *mut u64).write_unaligned(0);
4515            }
4516            // Write the fields.
4517            self.0.encode(encoder, offset + 0, depth)?;
4518            self.1.encode(encoder, offset + 6, depth)?;
4519            self.2.encode(encoder, offset + 16, depth)?;
4520            Ok(())
4521        }
4522    }
4523
4524    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolRequest {
4525        #[inline(always)]
4526        fn new_empty() -> Self {
4527            Self {
4528                src_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4529                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4530                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4531            }
4532        }
4533
4534        #[inline]
4535        unsafe fn decode(
4536            &mut self,
4537            decoder: &mut fidl::encoding::Decoder<'_, D>,
4538            offset: usize,
4539            _depth: fidl::encoding::Depth,
4540        ) -> fidl::Result<()> {
4541            decoder.debug_check_bounds::<Self>(offset);
4542            // Verify that padding bytes are zero.
4543            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4544            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4545            let mask = 0xffffffff00000000u64;
4546            let maskedval = padval & mask;
4547            if maskedval != 0 {
4548                return Err(fidl::Error::NonZeroPadding {
4549                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4550                });
4551            }
4552            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.src_addr, decoder, offset + 0, _depth)?;
4553            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 6, _depth)?;
4554            fidl::decode!(
4555                fidl::encoding::UnboundedVector<u8>,
4556                D,
4557                &mut self.data,
4558                decoder,
4559                offset + 16,
4560                _depth
4561            )?;
4562            Ok(())
4563        }
4564    }
4565
4566    impl fidl::encoding::ValueTypeMarker for MlmeGetApfPacketFilterEnabledResponse {
4567        type Borrowed<'a> = &'a Self;
4568        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4569            value
4570        }
4571    }
4572
4573    unsafe impl fidl::encoding::TypeMarker for MlmeGetApfPacketFilterEnabledResponse {
4574        type Owned = Self;
4575
4576        #[inline(always)]
4577        fn inline_align(_context: fidl::encoding::Context) -> usize {
4578            1
4579        }
4580
4581        #[inline(always)]
4582        fn inline_size(_context: fidl::encoding::Context) -> usize {
4583            1
4584        }
4585    }
4586
4587    unsafe impl<D: fidl::encoding::ResourceDialect>
4588        fidl::encoding::Encode<MlmeGetApfPacketFilterEnabledResponse, D>
4589        for &MlmeGetApfPacketFilterEnabledResponse
4590    {
4591        #[inline]
4592        unsafe fn encode(
4593            self,
4594            encoder: &mut fidl::encoding::Encoder<'_, D>,
4595            offset: usize,
4596            _depth: fidl::encoding::Depth,
4597        ) -> fidl::Result<()> {
4598            encoder.debug_check_bounds::<MlmeGetApfPacketFilterEnabledResponse>(offset);
4599            // Delegate to tuple encoding.
4600            fidl::encoding::Encode::<MlmeGetApfPacketFilterEnabledResponse, D>::encode(
4601                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enabled),),
4602                encoder,
4603                offset,
4604                _depth,
4605            )
4606        }
4607    }
4608    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
4609        fidl::encoding::Encode<MlmeGetApfPacketFilterEnabledResponse, D> for (T0,)
4610    {
4611        #[inline]
4612        unsafe fn encode(
4613            self,
4614            encoder: &mut fidl::encoding::Encoder<'_, D>,
4615            offset: usize,
4616            depth: fidl::encoding::Depth,
4617        ) -> fidl::Result<()> {
4618            encoder.debug_check_bounds::<MlmeGetApfPacketFilterEnabledResponse>(offset);
4619            // Zero out padding regions. There's no need to apply masks
4620            // because the unmasked parts will be overwritten by fields.
4621            // Write the fields.
4622            self.0.encode(encoder, offset + 0, depth)?;
4623            Ok(())
4624        }
4625    }
4626
4627    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4628        for MlmeGetApfPacketFilterEnabledResponse
4629    {
4630        #[inline(always)]
4631        fn new_empty() -> Self {
4632            Self { enabled: fidl::new_empty!(bool, D) }
4633        }
4634
4635        #[inline]
4636        unsafe fn decode(
4637            &mut self,
4638            decoder: &mut fidl::encoding::Decoder<'_, D>,
4639            offset: usize,
4640            _depth: fidl::encoding::Depth,
4641        ) -> fidl::Result<()> {
4642            decoder.debug_check_bounds::<Self>(offset);
4643            // Verify that padding bytes are zero.
4644            fidl::decode!(bool, D, &mut self.enabled, decoder, offset + 0, _depth)?;
4645            Ok(())
4646        }
4647    }
4648
4649    impl fidl::encoding::ValueTypeMarker for MlmeGetScheduledScanEnabledResponse {
4650        type Borrowed<'a> = &'a Self;
4651        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4652            value
4653        }
4654    }
4655
4656    unsafe impl fidl::encoding::TypeMarker for MlmeGetScheduledScanEnabledResponse {
4657        type Owned = Self;
4658
4659        #[inline(always)]
4660        fn inline_align(_context: fidl::encoding::Context) -> usize {
4661            8
4662        }
4663
4664        #[inline(always)]
4665        fn inline_size(_context: fidl::encoding::Context) -> usize {
4666            16
4667        }
4668    }
4669
4670    unsafe impl<D: fidl::encoding::ResourceDialect>
4671        fidl::encoding::Encode<MlmeGetScheduledScanEnabledResponse, D>
4672        for &MlmeGetScheduledScanEnabledResponse
4673    {
4674        #[inline]
4675        unsafe fn encode(
4676            self,
4677            encoder: &mut fidl::encoding::Encoder<'_, D>,
4678            offset: usize,
4679            _depth: fidl::encoding::Depth,
4680        ) -> fidl::Result<()> {
4681            encoder.debug_check_bounds::<MlmeGetScheduledScanEnabledResponse>(offset);
4682            // Delegate to tuple encoding.
4683            fidl::encoding::Encode::<MlmeGetScheduledScanEnabledResponse, D>::encode(
4684                (
4685                    <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.active_txn_ids),
4686                ),
4687                encoder, offset, _depth
4688            )
4689        }
4690    }
4691    unsafe impl<
4692        D: fidl::encoding::ResourceDialect,
4693        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
4694    > fidl::encoding::Encode<MlmeGetScheduledScanEnabledResponse, D> for (T0,)
4695    {
4696        #[inline]
4697        unsafe fn encode(
4698            self,
4699            encoder: &mut fidl::encoding::Encoder<'_, D>,
4700            offset: usize,
4701            depth: fidl::encoding::Depth,
4702        ) -> fidl::Result<()> {
4703            encoder.debug_check_bounds::<MlmeGetScheduledScanEnabledResponse>(offset);
4704            // Zero out padding regions. There's no need to apply masks
4705            // because the unmasked parts will be overwritten by fields.
4706            // Write the fields.
4707            self.0.encode(encoder, offset + 0, depth)?;
4708            Ok(())
4709        }
4710    }
4711
4712    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4713        for MlmeGetScheduledScanEnabledResponse
4714    {
4715        #[inline(always)]
4716        fn new_empty() -> Self {
4717            Self { active_txn_ids: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D) }
4718        }
4719
4720        #[inline]
4721        unsafe fn decode(
4722            &mut self,
4723            decoder: &mut fidl::encoding::Decoder<'_, D>,
4724            offset: usize,
4725            _depth: fidl::encoding::Depth,
4726        ) -> fidl::Result<()> {
4727            decoder.debug_check_bounds::<Self>(offset);
4728            // Verify that padding bytes are zero.
4729            fidl::decode!(
4730                fidl::encoding::UnboundedVector<u64>,
4731                D,
4732                &mut self.active_txn_ids,
4733                decoder,
4734                offset + 0,
4735                _depth
4736            )?;
4737            Ok(())
4738        }
4739    }
4740
4741    impl fidl::encoding::ValueTypeMarker for MlmeGetSignalReportResponse {
4742        type Borrowed<'a> = &'a Self;
4743        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4744            value
4745        }
4746    }
4747
4748    unsafe impl fidl::encoding::TypeMarker for MlmeGetSignalReportResponse {
4749        type Owned = Self;
4750
4751        #[inline(always)]
4752        fn inline_align(_context: fidl::encoding::Context) -> usize {
4753            8
4754        }
4755
4756        #[inline(always)]
4757        fn inline_size(_context: fidl::encoding::Context) -> usize {
4758            16
4759        }
4760    }
4761
4762    unsafe impl<D: fidl::encoding::ResourceDialect>
4763        fidl::encoding::Encode<MlmeGetSignalReportResponse, D> for &MlmeGetSignalReportResponse
4764    {
4765        #[inline]
4766        unsafe fn encode(
4767            self,
4768            encoder: &mut fidl::encoding::Encoder<'_, D>,
4769            offset: usize,
4770            _depth: fidl::encoding::Depth,
4771        ) -> fidl::Result<()> {
4772            encoder.debug_check_bounds::<MlmeGetSignalReportResponse>(offset);
4773            // Delegate to tuple encoding.
4774            fidl::encoding::Encode::<MlmeGetSignalReportResponse, D>::encode(
4775                (
4776                    <fidl_fuchsia_wlan_stats_common::SignalReport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
4777                ),
4778                encoder, offset, _depth
4779            )
4780        }
4781    }
4782    unsafe impl<
4783        D: fidl::encoding::ResourceDialect,
4784        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats_common::SignalReport, D>,
4785    > fidl::encoding::Encode<MlmeGetSignalReportResponse, D> for (T0,)
4786    {
4787        #[inline]
4788        unsafe fn encode(
4789            self,
4790            encoder: &mut fidl::encoding::Encoder<'_, D>,
4791            offset: usize,
4792            depth: fidl::encoding::Depth,
4793        ) -> fidl::Result<()> {
4794            encoder.debug_check_bounds::<MlmeGetSignalReportResponse>(offset);
4795            // Zero out padding regions. There's no need to apply masks
4796            // because the unmasked parts will be overwritten by fields.
4797            // Write the fields.
4798            self.0.encode(encoder, offset + 0, depth)?;
4799            Ok(())
4800        }
4801    }
4802
4803    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4804        for MlmeGetSignalReportResponse
4805    {
4806        #[inline(always)]
4807        fn new_empty() -> Self {
4808            Self { resp: fidl::new_empty!(fidl_fuchsia_wlan_stats_common::SignalReport, D) }
4809        }
4810
4811        #[inline]
4812        unsafe fn decode(
4813            &mut self,
4814            decoder: &mut fidl::encoding::Decoder<'_, D>,
4815            offset: usize,
4816            _depth: fidl::encoding::Depth,
4817        ) -> fidl::Result<()> {
4818            decoder.debug_check_bounds::<Self>(offset);
4819            // Verify that padding bytes are zero.
4820            fidl::decode!(
4821                fidl_fuchsia_wlan_stats_common::SignalReport,
4822                D,
4823                &mut self.resp,
4824                decoder,
4825                offset + 0,
4826                _depth
4827            )?;
4828            Ok(())
4829        }
4830    }
4831
4832    impl fidl::encoding::ValueTypeMarker for MlmeQueryTelemetrySupportResponse {
4833        type Borrowed<'a> = &'a Self;
4834        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4835            value
4836        }
4837    }
4838
4839    unsafe impl fidl::encoding::TypeMarker for MlmeQueryTelemetrySupportResponse {
4840        type Owned = Self;
4841
4842        #[inline(always)]
4843        fn inline_align(_context: fidl::encoding::Context) -> usize {
4844            8
4845        }
4846
4847        #[inline(always)]
4848        fn inline_size(_context: fidl::encoding::Context) -> usize {
4849            16
4850        }
4851    }
4852
4853    unsafe impl<D: fidl::encoding::ResourceDialect>
4854        fidl::encoding::Encode<MlmeQueryTelemetrySupportResponse, D>
4855        for &MlmeQueryTelemetrySupportResponse
4856    {
4857        #[inline]
4858        unsafe fn encode(
4859            self,
4860            encoder: &mut fidl::encoding::Encoder<'_, D>,
4861            offset: usize,
4862            _depth: fidl::encoding::Depth,
4863        ) -> fidl::Result<()> {
4864            encoder.debug_check_bounds::<MlmeQueryTelemetrySupportResponse>(offset);
4865            // Delegate to tuple encoding.
4866            fidl::encoding::Encode::<MlmeQueryTelemetrySupportResponse, D>::encode(
4867                (
4868                    <fidl_fuchsia_wlan_stats_common::TelemetrySupport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
4869                ),
4870                encoder, offset, _depth
4871            )
4872        }
4873    }
4874    unsafe impl<
4875        D: fidl::encoding::ResourceDialect,
4876        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats_common::TelemetrySupport, D>,
4877    > fidl::encoding::Encode<MlmeQueryTelemetrySupportResponse, D> for (T0,)
4878    {
4879        #[inline]
4880        unsafe fn encode(
4881            self,
4882            encoder: &mut fidl::encoding::Encoder<'_, D>,
4883            offset: usize,
4884            depth: fidl::encoding::Depth,
4885        ) -> fidl::Result<()> {
4886            encoder.debug_check_bounds::<MlmeQueryTelemetrySupportResponse>(offset);
4887            // Zero out padding regions. There's no need to apply masks
4888            // because the unmasked parts will be overwritten by fields.
4889            // Write the fields.
4890            self.0.encode(encoder, offset + 0, depth)?;
4891            Ok(())
4892        }
4893    }
4894
4895    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4896        for MlmeQueryTelemetrySupportResponse
4897    {
4898        #[inline(always)]
4899        fn new_empty() -> Self {
4900            Self { resp: fidl::new_empty!(fidl_fuchsia_wlan_stats_common::TelemetrySupport, D) }
4901        }
4902
4903        #[inline]
4904        unsafe fn decode(
4905            &mut self,
4906            decoder: &mut fidl::encoding::Decoder<'_, D>,
4907            offset: usize,
4908            _depth: fidl::encoding::Depth,
4909        ) -> fidl::Result<()> {
4910            decoder.debug_check_bounds::<Self>(offset);
4911            // Verify that padding bytes are zero.
4912            fidl::decode!(
4913                fidl_fuchsia_wlan_stats_common::TelemetrySupport,
4914                D,
4915                &mut self.resp,
4916                decoder,
4917                offset + 0,
4918                _depth
4919            )?;
4920            Ok(())
4921        }
4922    }
4923
4924    impl fidl::encoding::ValueTypeMarker for MlmeReadApfPacketFilterDataResponse {
4925        type Borrowed<'a> = &'a Self;
4926        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4927            value
4928        }
4929    }
4930
4931    unsafe impl fidl::encoding::TypeMarker for MlmeReadApfPacketFilterDataResponse {
4932        type Owned = Self;
4933
4934        #[inline(always)]
4935        fn inline_align(_context: fidl::encoding::Context) -> usize {
4936            8
4937        }
4938
4939        #[inline(always)]
4940        fn inline_size(_context: fidl::encoding::Context) -> usize {
4941            16
4942        }
4943    }
4944
4945    unsafe impl<D: fidl::encoding::ResourceDialect>
4946        fidl::encoding::Encode<MlmeReadApfPacketFilterDataResponse, D>
4947        for &MlmeReadApfPacketFilterDataResponse
4948    {
4949        #[inline]
4950        unsafe fn encode(
4951            self,
4952            encoder: &mut fidl::encoding::Encoder<'_, D>,
4953            offset: usize,
4954            _depth: fidl::encoding::Depth,
4955        ) -> fidl::Result<()> {
4956            encoder.debug_check_bounds::<MlmeReadApfPacketFilterDataResponse>(offset);
4957            // Delegate to tuple encoding.
4958            fidl::encoding::Encode::<MlmeReadApfPacketFilterDataResponse, D>::encode(
4959                (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
4960                    &self.memory,
4961                ),),
4962                encoder,
4963                offset,
4964                _depth,
4965            )
4966        }
4967    }
4968    unsafe impl<
4969        D: fidl::encoding::ResourceDialect,
4970        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4971    > fidl::encoding::Encode<MlmeReadApfPacketFilterDataResponse, D> for (T0,)
4972    {
4973        #[inline]
4974        unsafe fn encode(
4975            self,
4976            encoder: &mut fidl::encoding::Encoder<'_, D>,
4977            offset: usize,
4978            depth: fidl::encoding::Depth,
4979        ) -> fidl::Result<()> {
4980            encoder.debug_check_bounds::<MlmeReadApfPacketFilterDataResponse>(offset);
4981            // Zero out padding regions. There's no need to apply masks
4982            // because the unmasked parts will be overwritten by fields.
4983            // Write the fields.
4984            self.0.encode(encoder, offset + 0, depth)?;
4985            Ok(())
4986        }
4987    }
4988
4989    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4990        for MlmeReadApfPacketFilterDataResponse
4991    {
4992        #[inline(always)]
4993        fn new_empty() -> Self {
4994            Self { memory: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
4995        }
4996
4997        #[inline]
4998        unsafe fn decode(
4999            &mut self,
5000            decoder: &mut fidl::encoding::Decoder<'_, D>,
5001            offset: usize,
5002            _depth: fidl::encoding::Depth,
5003        ) -> fidl::Result<()> {
5004            decoder.debug_check_bounds::<Self>(offset);
5005            // Verify that padding bytes are zero.
5006            fidl::decode!(
5007                fidl::encoding::UnboundedVector<u8>,
5008                D,
5009                &mut self.memory,
5010                decoder,
5011                offset + 0,
5012                _depth
5013            )?;
5014            Ok(())
5015        }
5016    }
5017
5018    impl fidl::encoding::ValueTypeMarker for MinstrelListResponse {
5019        type Borrowed<'a> = &'a Self;
5020        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5021            value
5022        }
5023    }
5024
5025    unsafe impl fidl::encoding::TypeMarker for MinstrelListResponse {
5026        type Owned = Self;
5027
5028        #[inline(always)]
5029        fn inline_align(_context: fidl::encoding::Context) -> usize {
5030            8
5031        }
5032
5033        #[inline(always)]
5034        fn inline_size(_context: fidl::encoding::Context) -> usize {
5035            16
5036        }
5037    }
5038
5039    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelListResponse, D>
5040        for &MinstrelListResponse
5041    {
5042        #[inline]
5043        unsafe fn encode(
5044            self,
5045            encoder: &mut fidl::encoding::Encoder<'_, D>,
5046            offset: usize,
5047            _depth: fidl::encoding::Depth,
5048        ) -> fidl::Result<()> {
5049            encoder.debug_check_bounds::<MinstrelListResponse>(offset);
5050            // Delegate to tuple encoding.
5051            fidl::encoding::Encode::<MinstrelListResponse, D>::encode(
5052                (
5053                    <fidl_fuchsia_wlan_minstrel_common::Peers as fidl::encoding::ValueTypeMarker>::borrow(&self.peers),
5054                ),
5055                encoder, offset, _depth
5056            )
5057        }
5058    }
5059    unsafe impl<
5060        D: fidl::encoding::ResourceDialect,
5061        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_minstrel_common::Peers, D>,
5062    > fidl::encoding::Encode<MinstrelListResponse, D> for (T0,)
5063    {
5064        #[inline]
5065        unsafe fn encode(
5066            self,
5067            encoder: &mut fidl::encoding::Encoder<'_, D>,
5068            offset: usize,
5069            depth: fidl::encoding::Depth,
5070        ) -> fidl::Result<()> {
5071            encoder.debug_check_bounds::<MinstrelListResponse>(offset);
5072            // Zero out padding regions. There's no need to apply masks
5073            // because the unmasked parts will be overwritten by fields.
5074            // Write the fields.
5075            self.0.encode(encoder, offset + 0, depth)?;
5076            Ok(())
5077        }
5078    }
5079
5080    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelListResponse {
5081        #[inline(always)]
5082        fn new_empty() -> Self {
5083            Self { peers: fidl::new_empty!(fidl_fuchsia_wlan_minstrel_common::Peers, D) }
5084        }
5085
5086        #[inline]
5087        unsafe fn decode(
5088            &mut self,
5089            decoder: &mut fidl::encoding::Decoder<'_, D>,
5090            offset: usize,
5091            _depth: fidl::encoding::Depth,
5092        ) -> fidl::Result<()> {
5093            decoder.debug_check_bounds::<Self>(offset);
5094            // Verify that padding bytes are zero.
5095            fidl::decode!(
5096                fidl_fuchsia_wlan_minstrel_common::Peers,
5097                D,
5098                &mut self.peers,
5099                decoder,
5100                offset + 0,
5101                _depth
5102            )?;
5103            Ok(())
5104        }
5105    }
5106
5107    impl fidl::encoding::ValueTypeMarker for MinstrelStatsRequest {
5108        type Borrowed<'a> = &'a Self;
5109        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5110            value
5111        }
5112    }
5113
5114    unsafe impl fidl::encoding::TypeMarker for MinstrelStatsRequest {
5115        type Owned = Self;
5116
5117        #[inline(always)]
5118        fn inline_align(_context: fidl::encoding::Context) -> usize {
5119            1
5120        }
5121
5122        #[inline(always)]
5123        fn inline_size(_context: fidl::encoding::Context) -> usize {
5124            6
5125        }
5126        #[inline(always)]
5127        fn encode_is_copy() -> bool {
5128            true
5129        }
5130
5131        #[inline(always)]
5132        fn decode_is_copy() -> bool {
5133            true
5134        }
5135    }
5136
5137    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelStatsRequest, D>
5138        for &MinstrelStatsRequest
5139    {
5140        #[inline]
5141        unsafe fn encode(
5142            self,
5143            encoder: &mut fidl::encoding::Encoder<'_, D>,
5144            offset: usize,
5145            _depth: fidl::encoding::Depth,
5146        ) -> fidl::Result<()> {
5147            encoder.debug_check_bounds::<MinstrelStatsRequest>(offset);
5148            unsafe {
5149                // Copy the object into the buffer.
5150                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5151                (buf_ptr as *mut MinstrelStatsRequest)
5152                    .write_unaligned((self as *const MinstrelStatsRequest).read());
5153                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
5154                // done second because the memcpy will write garbage to these bytes.
5155            }
5156            Ok(())
5157        }
5158    }
5159    unsafe impl<
5160        D: fidl::encoding::ResourceDialect,
5161        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
5162    > fidl::encoding::Encode<MinstrelStatsRequest, D> for (T0,)
5163    {
5164        #[inline]
5165        unsafe fn encode(
5166            self,
5167            encoder: &mut fidl::encoding::Encoder<'_, D>,
5168            offset: usize,
5169            depth: fidl::encoding::Depth,
5170        ) -> fidl::Result<()> {
5171            encoder.debug_check_bounds::<MinstrelStatsRequest>(offset);
5172            // Zero out padding regions. There's no need to apply masks
5173            // because the unmasked parts will be overwritten by fields.
5174            // Write the fields.
5175            self.0.encode(encoder, offset + 0, depth)?;
5176            Ok(())
5177        }
5178    }
5179
5180    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelStatsRequest {
5181        #[inline(always)]
5182        fn new_empty() -> Self {
5183            Self { peer_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
5184        }
5185
5186        #[inline]
5187        unsafe fn decode(
5188            &mut self,
5189            decoder: &mut fidl::encoding::Decoder<'_, D>,
5190            offset: usize,
5191            _depth: fidl::encoding::Depth,
5192        ) -> fidl::Result<()> {
5193            decoder.debug_check_bounds::<Self>(offset);
5194            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5195            // Verify that padding bytes are zero.
5196            // Copy from the buffer into the object.
5197            unsafe {
5198                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
5199            }
5200            Ok(())
5201        }
5202    }
5203
5204    impl fidl::encoding::ValueTypeMarker for MinstrelStatsResponse {
5205        type Borrowed<'a> = &'a Self;
5206        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5207            value
5208        }
5209    }
5210
5211    unsafe impl fidl::encoding::TypeMarker for MinstrelStatsResponse {
5212        type Owned = Self;
5213
5214        #[inline(always)]
5215        fn inline_align(_context: fidl::encoding::Context) -> usize {
5216            8
5217        }
5218
5219        #[inline(always)]
5220        fn inline_size(_context: fidl::encoding::Context) -> usize {
5221            8
5222        }
5223    }
5224
5225    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelStatsResponse, D>
5226        for &MinstrelStatsResponse
5227    {
5228        #[inline]
5229        unsafe fn encode(
5230            self,
5231            encoder: &mut fidl::encoding::Encoder<'_, D>,
5232            offset: usize,
5233            _depth: fidl::encoding::Depth,
5234        ) -> fidl::Result<()> {
5235            encoder.debug_check_bounds::<MinstrelStatsResponse>(offset);
5236            // Delegate to tuple encoding.
5237            fidl::encoding::Encode::<MinstrelStatsResponse, D>::encode(
5238                (
5239                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel_common::Peer> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer),
5240                ),
5241                encoder, offset, _depth
5242            )
5243        }
5244    }
5245    unsafe impl<
5246        D: fidl::encoding::ResourceDialect,
5247        T0: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel_common::Peer>, D>,
5248    > fidl::encoding::Encode<MinstrelStatsResponse, D> for (T0,)
5249    {
5250        #[inline]
5251        unsafe fn encode(
5252            self,
5253            encoder: &mut fidl::encoding::Encoder<'_, D>,
5254            offset: usize,
5255            depth: fidl::encoding::Depth,
5256        ) -> fidl::Result<()> {
5257            encoder.debug_check_bounds::<MinstrelStatsResponse>(offset);
5258            // Zero out padding regions. There's no need to apply masks
5259            // because the unmasked parts will be overwritten by fields.
5260            // Write the fields.
5261            self.0.encode(encoder, offset + 0, depth)?;
5262            Ok(())
5263        }
5264    }
5265
5266    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelStatsResponse {
5267        #[inline(always)]
5268        fn new_empty() -> Self {
5269            Self {
5270                peer: fidl::new_empty!(
5271                    fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel_common::Peer>,
5272                    D
5273                ),
5274            }
5275        }
5276
5277        #[inline]
5278        unsafe fn decode(
5279            &mut self,
5280            decoder: &mut fidl::encoding::Decoder<'_, D>,
5281            offset: usize,
5282            _depth: fidl::encoding::Depth,
5283        ) -> fidl::Result<()> {
5284            decoder.debug_check_bounds::<Self>(offset);
5285            // Verify that padding bytes are zero.
5286            fidl::decode!(
5287                fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel_common::Peer>,
5288                D,
5289                &mut self.peer,
5290                decoder,
5291                offset + 0,
5292                _depth
5293            )?;
5294            Ok(())
5295        }
5296    }
5297
5298    impl fidl::encoding::ValueTypeMarker for MlmeAssociateIndRequest {
5299        type Borrowed<'a> = &'a Self;
5300        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5301            value
5302        }
5303    }
5304
5305    unsafe impl fidl::encoding::TypeMarker for MlmeAssociateIndRequest {
5306        type Owned = Self;
5307
5308        #[inline(always)]
5309        fn inline_align(_context: fidl::encoding::Context) -> usize {
5310            8
5311        }
5312
5313        #[inline(always)]
5314        fn inline_size(_context: fidl::encoding::Context) -> usize {
5315            64
5316        }
5317    }
5318
5319    unsafe impl<D: fidl::encoding::ResourceDialect>
5320        fidl::encoding::Encode<MlmeAssociateIndRequest, D> for &MlmeAssociateIndRequest
5321    {
5322        #[inline]
5323        unsafe fn encode(
5324            self,
5325            encoder: &mut fidl::encoding::Encoder<'_, D>,
5326            offset: usize,
5327            _depth: fidl::encoding::Depth,
5328        ) -> fidl::Result<()> {
5329            encoder.debug_check_bounds::<MlmeAssociateIndRequest>(offset);
5330            // Delegate to tuple encoding.
5331            fidl::encoding::Encode::<MlmeAssociateIndRequest, D>::encode(
5332                (<AssociateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5333                encoder,
5334                offset,
5335                _depth,
5336            )
5337        }
5338    }
5339    unsafe impl<
5340        D: fidl::encoding::ResourceDialect,
5341        T0: fidl::encoding::Encode<AssociateIndication, D>,
5342    > fidl::encoding::Encode<MlmeAssociateIndRequest, D> for (T0,)
5343    {
5344        #[inline]
5345        unsafe fn encode(
5346            self,
5347            encoder: &mut fidl::encoding::Encoder<'_, D>,
5348            offset: usize,
5349            depth: fidl::encoding::Depth,
5350        ) -> fidl::Result<()> {
5351            encoder.debug_check_bounds::<MlmeAssociateIndRequest>(offset);
5352            // Zero out padding regions. There's no need to apply masks
5353            // because the unmasked parts will be overwritten by fields.
5354            // Write the fields.
5355            self.0.encode(encoder, offset + 0, depth)?;
5356            Ok(())
5357        }
5358    }
5359
5360    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5361        for MlmeAssociateIndRequest
5362    {
5363        #[inline(always)]
5364        fn new_empty() -> Self {
5365            Self { ind: fidl::new_empty!(AssociateIndication, D) }
5366        }
5367
5368        #[inline]
5369        unsafe fn decode(
5370            &mut self,
5371            decoder: &mut fidl::encoding::Decoder<'_, D>,
5372            offset: usize,
5373            _depth: fidl::encoding::Depth,
5374        ) -> fidl::Result<()> {
5375            decoder.debug_check_bounds::<Self>(offset);
5376            // Verify that padding bytes are zero.
5377            fidl::decode!(AssociateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5378            Ok(())
5379        }
5380    }
5381
5382    impl fidl::encoding::ValueTypeMarker for MlmeAssociateRespRequest {
5383        type Borrowed<'a> = &'a Self;
5384        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5385            value
5386        }
5387    }
5388
5389    unsafe impl fidl::encoding::TypeMarker for MlmeAssociateRespRequest {
5390        type Owned = Self;
5391
5392        #[inline(always)]
5393        fn inline_align(_context: fidl::encoding::Context) -> usize {
5394            8
5395        }
5396
5397        #[inline(always)]
5398        fn inline_size(_context: fidl::encoding::Context) -> usize {
5399            32
5400        }
5401    }
5402
5403    unsafe impl<D: fidl::encoding::ResourceDialect>
5404        fidl::encoding::Encode<MlmeAssociateRespRequest, D> for &MlmeAssociateRespRequest
5405    {
5406        #[inline]
5407        unsafe fn encode(
5408            self,
5409            encoder: &mut fidl::encoding::Encoder<'_, D>,
5410            offset: usize,
5411            _depth: fidl::encoding::Depth,
5412        ) -> fidl::Result<()> {
5413            encoder.debug_check_bounds::<MlmeAssociateRespRequest>(offset);
5414            // Delegate to tuple encoding.
5415            fidl::encoding::Encode::<MlmeAssociateRespRequest, D>::encode(
5416                (<AssociateResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5417                encoder,
5418                offset,
5419                _depth,
5420            )
5421        }
5422    }
5423    unsafe impl<
5424        D: fidl::encoding::ResourceDialect,
5425        T0: fidl::encoding::Encode<AssociateResponse, D>,
5426    > fidl::encoding::Encode<MlmeAssociateRespRequest, D> for (T0,)
5427    {
5428        #[inline]
5429        unsafe fn encode(
5430            self,
5431            encoder: &mut fidl::encoding::Encoder<'_, D>,
5432            offset: usize,
5433            depth: fidl::encoding::Depth,
5434        ) -> fidl::Result<()> {
5435            encoder.debug_check_bounds::<MlmeAssociateRespRequest>(offset);
5436            // Zero out padding regions. There's no need to apply masks
5437            // because the unmasked parts will be overwritten by fields.
5438            // Write the fields.
5439            self.0.encode(encoder, offset + 0, depth)?;
5440            Ok(())
5441        }
5442    }
5443
5444    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5445        for MlmeAssociateRespRequest
5446    {
5447        #[inline(always)]
5448        fn new_empty() -> Self {
5449            Self { resp: fidl::new_empty!(AssociateResponse, D) }
5450        }
5451
5452        #[inline]
5453        unsafe fn decode(
5454            &mut self,
5455            decoder: &mut fidl::encoding::Decoder<'_, D>,
5456            offset: usize,
5457            _depth: fidl::encoding::Depth,
5458        ) -> fidl::Result<()> {
5459            decoder.debug_check_bounds::<Self>(offset);
5460            // Verify that padding bytes are zero.
5461            fidl::decode!(AssociateResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
5462            Ok(())
5463        }
5464    }
5465
5466    impl fidl::encoding::ValueTypeMarker for MlmeAuthenticateIndRequest {
5467        type Borrowed<'a> = &'a Self;
5468        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5469            value
5470        }
5471    }
5472
5473    unsafe impl fidl::encoding::TypeMarker for MlmeAuthenticateIndRequest {
5474        type Owned = Self;
5475
5476        #[inline(always)]
5477        fn inline_align(_context: fidl::encoding::Context) -> usize {
5478            4
5479        }
5480
5481        #[inline(always)]
5482        fn inline_size(_context: fidl::encoding::Context) -> usize {
5483            12
5484        }
5485    }
5486
5487    unsafe impl<D: fidl::encoding::ResourceDialect>
5488        fidl::encoding::Encode<MlmeAuthenticateIndRequest, D> for &MlmeAuthenticateIndRequest
5489    {
5490        #[inline]
5491        unsafe fn encode(
5492            self,
5493            encoder: &mut fidl::encoding::Encoder<'_, D>,
5494            offset: usize,
5495            _depth: fidl::encoding::Depth,
5496        ) -> fidl::Result<()> {
5497            encoder.debug_check_bounds::<MlmeAuthenticateIndRequest>(offset);
5498            // Delegate to tuple encoding.
5499            fidl::encoding::Encode::<MlmeAuthenticateIndRequest, D>::encode(
5500                (<AuthenticateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5501                encoder,
5502                offset,
5503                _depth,
5504            )
5505        }
5506    }
5507    unsafe impl<
5508        D: fidl::encoding::ResourceDialect,
5509        T0: fidl::encoding::Encode<AuthenticateIndication, D>,
5510    > fidl::encoding::Encode<MlmeAuthenticateIndRequest, D> for (T0,)
5511    {
5512        #[inline]
5513        unsafe fn encode(
5514            self,
5515            encoder: &mut fidl::encoding::Encoder<'_, D>,
5516            offset: usize,
5517            depth: fidl::encoding::Depth,
5518        ) -> fidl::Result<()> {
5519            encoder.debug_check_bounds::<MlmeAuthenticateIndRequest>(offset);
5520            // Zero out padding regions. There's no need to apply masks
5521            // because the unmasked parts will be overwritten by fields.
5522            // Write the fields.
5523            self.0.encode(encoder, offset + 0, depth)?;
5524            Ok(())
5525        }
5526    }
5527
5528    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5529        for MlmeAuthenticateIndRequest
5530    {
5531        #[inline(always)]
5532        fn new_empty() -> Self {
5533            Self { ind: fidl::new_empty!(AuthenticateIndication, D) }
5534        }
5535
5536        #[inline]
5537        unsafe fn decode(
5538            &mut self,
5539            decoder: &mut fidl::encoding::Decoder<'_, D>,
5540            offset: usize,
5541            _depth: fidl::encoding::Depth,
5542        ) -> fidl::Result<()> {
5543            decoder.debug_check_bounds::<Self>(offset);
5544            // Verify that padding bytes are zero.
5545            fidl::decode!(AuthenticateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5546            Ok(())
5547        }
5548    }
5549
5550    impl fidl::encoding::ValueTypeMarker for MlmeAuthenticateRespRequest {
5551        type Borrowed<'a> = &'a Self;
5552        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5553            value
5554        }
5555    }
5556
5557    unsafe impl fidl::encoding::TypeMarker for MlmeAuthenticateRespRequest {
5558        type Owned = Self;
5559
5560        #[inline(always)]
5561        fn inline_align(_context: fidl::encoding::Context) -> usize {
5562            4
5563        }
5564
5565        #[inline(always)]
5566        fn inline_size(_context: fidl::encoding::Context) -> usize {
5567            12
5568        }
5569    }
5570
5571    unsafe impl<D: fidl::encoding::ResourceDialect>
5572        fidl::encoding::Encode<MlmeAuthenticateRespRequest, D> for &MlmeAuthenticateRespRequest
5573    {
5574        #[inline]
5575        unsafe fn encode(
5576            self,
5577            encoder: &mut fidl::encoding::Encoder<'_, D>,
5578            offset: usize,
5579            _depth: fidl::encoding::Depth,
5580        ) -> fidl::Result<()> {
5581            encoder.debug_check_bounds::<MlmeAuthenticateRespRequest>(offset);
5582            // Delegate to tuple encoding.
5583            fidl::encoding::Encode::<MlmeAuthenticateRespRequest, D>::encode(
5584                (<AuthenticateResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5585                encoder,
5586                offset,
5587                _depth,
5588            )
5589        }
5590    }
5591    unsafe impl<
5592        D: fidl::encoding::ResourceDialect,
5593        T0: fidl::encoding::Encode<AuthenticateResponse, D>,
5594    > fidl::encoding::Encode<MlmeAuthenticateRespRequest, D> for (T0,)
5595    {
5596        #[inline]
5597        unsafe fn encode(
5598            self,
5599            encoder: &mut fidl::encoding::Encoder<'_, D>,
5600            offset: usize,
5601            depth: fidl::encoding::Depth,
5602        ) -> fidl::Result<()> {
5603            encoder.debug_check_bounds::<MlmeAuthenticateRespRequest>(offset);
5604            // Zero out padding regions. There's no need to apply masks
5605            // because the unmasked parts will be overwritten by fields.
5606            // Write the fields.
5607            self.0.encode(encoder, offset + 0, depth)?;
5608            Ok(())
5609        }
5610    }
5611
5612    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5613        for MlmeAuthenticateRespRequest
5614    {
5615        #[inline(always)]
5616        fn new_empty() -> Self {
5617            Self { resp: fidl::new_empty!(AuthenticateResponse, D) }
5618        }
5619
5620        #[inline]
5621        unsafe fn decode(
5622            &mut self,
5623            decoder: &mut fidl::encoding::Decoder<'_, D>,
5624            offset: usize,
5625            _depth: fidl::encoding::Depth,
5626        ) -> fidl::Result<()> {
5627            decoder.debug_check_bounds::<Self>(offset);
5628            // Verify that padding bytes are zero.
5629            fidl::decode!(AuthenticateResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
5630            Ok(())
5631        }
5632    }
5633
5634    impl fidl::encoding::ValueTypeMarker for MlmeConnectConfRequest {
5635        type Borrowed<'a> = &'a Self;
5636        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5637            value
5638        }
5639    }
5640
5641    unsafe impl fidl::encoding::TypeMarker for MlmeConnectConfRequest {
5642        type Owned = Self;
5643
5644        #[inline(always)]
5645        fn inline_align(_context: fidl::encoding::Context) -> usize {
5646            8
5647        }
5648
5649        #[inline(always)]
5650        fn inline_size(_context: fidl::encoding::Context) -> usize {
5651            32
5652        }
5653    }
5654
5655    unsafe impl<D: fidl::encoding::ResourceDialect>
5656        fidl::encoding::Encode<MlmeConnectConfRequest, D> for &MlmeConnectConfRequest
5657    {
5658        #[inline]
5659        unsafe fn encode(
5660            self,
5661            encoder: &mut fidl::encoding::Encoder<'_, D>,
5662            offset: usize,
5663            _depth: fidl::encoding::Depth,
5664        ) -> fidl::Result<()> {
5665            encoder.debug_check_bounds::<MlmeConnectConfRequest>(offset);
5666            // Delegate to tuple encoding.
5667            fidl::encoding::Encode::<MlmeConnectConfRequest, D>::encode(
5668                (<ConnectConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5669                encoder,
5670                offset,
5671                _depth,
5672            )
5673        }
5674    }
5675    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ConnectConfirm, D>>
5676        fidl::encoding::Encode<MlmeConnectConfRequest, D> for (T0,)
5677    {
5678        #[inline]
5679        unsafe fn encode(
5680            self,
5681            encoder: &mut fidl::encoding::Encoder<'_, D>,
5682            offset: usize,
5683            depth: fidl::encoding::Depth,
5684        ) -> fidl::Result<()> {
5685            encoder.debug_check_bounds::<MlmeConnectConfRequest>(offset);
5686            // Zero out padding regions. There's no need to apply masks
5687            // because the unmasked parts will be overwritten by fields.
5688            // Write the fields.
5689            self.0.encode(encoder, offset + 0, depth)?;
5690            Ok(())
5691        }
5692    }
5693
5694    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5695        for MlmeConnectConfRequest
5696    {
5697        #[inline(always)]
5698        fn new_empty() -> Self {
5699            Self { resp: fidl::new_empty!(ConnectConfirm, D) }
5700        }
5701
5702        #[inline]
5703        unsafe fn decode(
5704            &mut self,
5705            decoder: &mut fidl::encoding::Decoder<'_, D>,
5706            offset: usize,
5707            _depth: fidl::encoding::Depth,
5708        ) -> fidl::Result<()> {
5709            decoder.debug_check_bounds::<Self>(offset);
5710            // Verify that padding bytes are zero.
5711            fidl::decode!(ConnectConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
5712            Ok(())
5713        }
5714    }
5715
5716    impl fidl::encoding::ValueTypeMarker for MlmeConnectReqRequest {
5717        type Borrowed<'a> = &'a Self;
5718        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5719            value
5720        }
5721    }
5722
5723    unsafe impl fidl::encoding::TypeMarker for MlmeConnectReqRequest {
5724        type Owned = Self;
5725
5726        #[inline(always)]
5727        fn inline_align(_context: fidl::encoding::Context) -> usize {
5728            8
5729        }
5730
5731        #[inline(always)]
5732        fn inline_size(_context: fidl::encoding::Context) -> usize {
5733            104
5734        }
5735    }
5736
5737    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeConnectReqRequest, D>
5738        for &MlmeConnectReqRequest
5739    {
5740        #[inline]
5741        unsafe fn encode(
5742            self,
5743            encoder: &mut fidl::encoding::Encoder<'_, D>,
5744            offset: usize,
5745            _depth: fidl::encoding::Depth,
5746        ) -> fidl::Result<()> {
5747            encoder.debug_check_bounds::<MlmeConnectReqRequest>(offset);
5748            // Delegate to tuple encoding.
5749            fidl::encoding::Encode::<MlmeConnectReqRequest, D>::encode(
5750                (<ConnectRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5751                encoder,
5752                offset,
5753                _depth,
5754            )
5755        }
5756    }
5757    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ConnectRequest, D>>
5758        fidl::encoding::Encode<MlmeConnectReqRequest, D> for (T0,)
5759    {
5760        #[inline]
5761        unsafe fn encode(
5762            self,
5763            encoder: &mut fidl::encoding::Encoder<'_, D>,
5764            offset: usize,
5765            depth: fidl::encoding::Depth,
5766        ) -> fidl::Result<()> {
5767            encoder.debug_check_bounds::<MlmeConnectReqRequest>(offset);
5768            // Zero out padding regions. There's no need to apply masks
5769            // because the unmasked parts will be overwritten by fields.
5770            // Write the fields.
5771            self.0.encode(encoder, offset + 0, depth)?;
5772            Ok(())
5773        }
5774    }
5775
5776    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeConnectReqRequest {
5777        #[inline(always)]
5778        fn new_empty() -> Self {
5779            Self { req: fidl::new_empty!(ConnectRequest, D) }
5780        }
5781
5782        #[inline]
5783        unsafe fn decode(
5784            &mut self,
5785            decoder: &mut fidl::encoding::Decoder<'_, D>,
5786            offset: usize,
5787            _depth: fidl::encoding::Depth,
5788        ) -> fidl::Result<()> {
5789            decoder.debug_check_bounds::<Self>(offset);
5790            // Verify that padding bytes are zero.
5791            fidl::decode!(ConnectRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5792            Ok(())
5793        }
5794    }
5795
5796    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateConfRequest {
5797        type Borrowed<'a> = &'a Self;
5798        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5799            value
5800        }
5801    }
5802
5803    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateConfRequest {
5804        type Owned = Self;
5805
5806        #[inline(always)]
5807        fn inline_align(_context: fidl::encoding::Context) -> usize {
5808            1
5809        }
5810
5811        #[inline(always)]
5812        fn inline_size(_context: fidl::encoding::Context) -> usize {
5813            6
5814        }
5815        #[inline(always)]
5816        fn encode_is_copy() -> bool {
5817            true
5818        }
5819
5820        #[inline(always)]
5821        fn decode_is_copy() -> bool {
5822            true
5823        }
5824    }
5825
5826    unsafe impl<D: fidl::encoding::ResourceDialect>
5827        fidl::encoding::Encode<MlmeDeauthenticateConfRequest, D>
5828        for &MlmeDeauthenticateConfRequest
5829    {
5830        #[inline]
5831        unsafe fn encode(
5832            self,
5833            encoder: &mut fidl::encoding::Encoder<'_, D>,
5834            offset: usize,
5835            _depth: fidl::encoding::Depth,
5836        ) -> fidl::Result<()> {
5837            encoder.debug_check_bounds::<MlmeDeauthenticateConfRequest>(offset);
5838            unsafe {
5839                // Copy the object into the buffer.
5840                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5841                (buf_ptr as *mut MlmeDeauthenticateConfRequest)
5842                    .write_unaligned((self as *const MlmeDeauthenticateConfRequest).read());
5843                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
5844                // done second because the memcpy will write garbage to these bytes.
5845            }
5846            Ok(())
5847        }
5848    }
5849    unsafe impl<
5850        D: fidl::encoding::ResourceDialect,
5851        T0: fidl::encoding::Encode<DeauthenticateConfirm, D>,
5852    > fidl::encoding::Encode<MlmeDeauthenticateConfRequest, D> for (T0,)
5853    {
5854        #[inline]
5855        unsafe fn encode(
5856            self,
5857            encoder: &mut fidl::encoding::Encoder<'_, D>,
5858            offset: usize,
5859            depth: fidl::encoding::Depth,
5860        ) -> fidl::Result<()> {
5861            encoder.debug_check_bounds::<MlmeDeauthenticateConfRequest>(offset);
5862            // Zero out padding regions. There's no need to apply masks
5863            // because the unmasked parts will be overwritten by fields.
5864            // Write the fields.
5865            self.0.encode(encoder, offset + 0, depth)?;
5866            Ok(())
5867        }
5868    }
5869
5870    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5871        for MlmeDeauthenticateConfRequest
5872    {
5873        #[inline(always)]
5874        fn new_empty() -> Self {
5875            Self { resp: fidl::new_empty!(DeauthenticateConfirm, D) }
5876        }
5877
5878        #[inline]
5879        unsafe fn decode(
5880            &mut self,
5881            decoder: &mut fidl::encoding::Decoder<'_, D>,
5882            offset: usize,
5883            _depth: fidl::encoding::Depth,
5884        ) -> fidl::Result<()> {
5885            decoder.debug_check_bounds::<Self>(offset);
5886            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5887            // Verify that padding bytes are zero.
5888            // Copy from the buffer into the object.
5889            unsafe {
5890                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
5891            }
5892            Ok(())
5893        }
5894    }
5895
5896    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateIndRequest {
5897        type Borrowed<'a> = &'a Self;
5898        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5899            value
5900        }
5901    }
5902
5903    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateIndRequest {
5904        type Owned = Self;
5905
5906        #[inline(always)]
5907        fn inline_align(_context: fidl::encoding::Context) -> usize {
5908            2
5909        }
5910
5911        #[inline(always)]
5912        fn inline_size(_context: fidl::encoding::Context) -> usize {
5913            10
5914        }
5915    }
5916
5917    unsafe impl<D: fidl::encoding::ResourceDialect>
5918        fidl::encoding::Encode<MlmeDeauthenticateIndRequest, D> for &MlmeDeauthenticateIndRequest
5919    {
5920        #[inline]
5921        unsafe fn encode(
5922            self,
5923            encoder: &mut fidl::encoding::Encoder<'_, D>,
5924            offset: usize,
5925            _depth: fidl::encoding::Depth,
5926        ) -> fidl::Result<()> {
5927            encoder.debug_check_bounds::<MlmeDeauthenticateIndRequest>(offset);
5928            // Delegate to tuple encoding.
5929            fidl::encoding::Encode::<MlmeDeauthenticateIndRequest, D>::encode(
5930                (<DeauthenticateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5931                encoder,
5932                offset,
5933                _depth,
5934            )
5935        }
5936    }
5937    unsafe impl<
5938        D: fidl::encoding::ResourceDialect,
5939        T0: fidl::encoding::Encode<DeauthenticateIndication, D>,
5940    > fidl::encoding::Encode<MlmeDeauthenticateIndRequest, D> for (T0,)
5941    {
5942        #[inline]
5943        unsafe fn encode(
5944            self,
5945            encoder: &mut fidl::encoding::Encoder<'_, D>,
5946            offset: usize,
5947            depth: fidl::encoding::Depth,
5948        ) -> fidl::Result<()> {
5949            encoder.debug_check_bounds::<MlmeDeauthenticateIndRequest>(offset);
5950            // Zero out padding regions. There's no need to apply masks
5951            // because the unmasked parts will be overwritten by fields.
5952            // Write the fields.
5953            self.0.encode(encoder, offset + 0, depth)?;
5954            Ok(())
5955        }
5956    }
5957
5958    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5959        for MlmeDeauthenticateIndRequest
5960    {
5961        #[inline(always)]
5962        fn new_empty() -> Self {
5963            Self { ind: fidl::new_empty!(DeauthenticateIndication, D) }
5964        }
5965
5966        #[inline]
5967        unsafe fn decode(
5968            &mut self,
5969            decoder: &mut fidl::encoding::Decoder<'_, D>,
5970            offset: usize,
5971            _depth: fidl::encoding::Depth,
5972        ) -> fidl::Result<()> {
5973            decoder.debug_check_bounds::<Self>(offset);
5974            // Verify that padding bytes are zero.
5975            fidl::decode!(DeauthenticateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5976            Ok(())
5977        }
5978    }
5979
5980    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateReqRequest {
5981        type Borrowed<'a> = &'a Self;
5982        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5983            value
5984        }
5985    }
5986
5987    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateReqRequest {
5988        type Owned = Self;
5989
5990        #[inline(always)]
5991        fn inline_align(_context: fidl::encoding::Context) -> usize {
5992            2
5993        }
5994
5995        #[inline(always)]
5996        fn inline_size(_context: fidl::encoding::Context) -> usize {
5997            8
5998        }
5999    }
6000
6001    unsafe impl<D: fidl::encoding::ResourceDialect>
6002        fidl::encoding::Encode<MlmeDeauthenticateReqRequest, D> for &MlmeDeauthenticateReqRequest
6003    {
6004        #[inline]
6005        unsafe fn encode(
6006            self,
6007            encoder: &mut fidl::encoding::Encoder<'_, D>,
6008            offset: usize,
6009            _depth: fidl::encoding::Depth,
6010        ) -> fidl::Result<()> {
6011            encoder.debug_check_bounds::<MlmeDeauthenticateReqRequest>(offset);
6012            // Delegate to tuple encoding.
6013            fidl::encoding::Encode::<MlmeDeauthenticateReqRequest, D>::encode(
6014                (<DeauthenticateRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6015                encoder,
6016                offset,
6017                _depth,
6018            )
6019        }
6020    }
6021    unsafe impl<
6022        D: fidl::encoding::ResourceDialect,
6023        T0: fidl::encoding::Encode<DeauthenticateRequest, D>,
6024    > fidl::encoding::Encode<MlmeDeauthenticateReqRequest, D> for (T0,)
6025    {
6026        #[inline]
6027        unsafe fn encode(
6028            self,
6029            encoder: &mut fidl::encoding::Encoder<'_, D>,
6030            offset: usize,
6031            depth: fidl::encoding::Depth,
6032        ) -> fidl::Result<()> {
6033            encoder.debug_check_bounds::<MlmeDeauthenticateReqRequest>(offset);
6034            // Zero out padding regions. There's no need to apply masks
6035            // because the unmasked parts will be overwritten by fields.
6036            // Write the fields.
6037            self.0.encode(encoder, offset + 0, depth)?;
6038            Ok(())
6039        }
6040    }
6041
6042    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6043        for MlmeDeauthenticateReqRequest
6044    {
6045        #[inline(always)]
6046        fn new_empty() -> Self {
6047            Self { req: fidl::new_empty!(DeauthenticateRequest, D) }
6048        }
6049
6050        #[inline]
6051        unsafe fn decode(
6052            &mut self,
6053            decoder: &mut fidl::encoding::Decoder<'_, D>,
6054            offset: usize,
6055            _depth: fidl::encoding::Depth,
6056        ) -> fidl::Result<()> {
6057            decoder.debug_check_bounds::<Self>(offset);
6058            // Verify that padding bytes are zero.
6059            fidl::decode!(DeauthenticateRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6060            Ok(())
6061        }
6062    }
6063
6064    impl fidl::encoding::ValueTypeMarker for MlmeDeleteKeysReqRequest {
6065        type Borrowed<'a> = &'a Self;
6066        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6067            value
6068        }
6069    }
6070
6071    unsafe impl fidl::encoding::TypeMarker for MlmeDeleteKeysReqRequest {
6072        type Owned = Self;
6073
6074        #[inline(always)]
6075        fn inline_align(_context: fidl::encoding::Context) -> usize {
6076            8
6077        }
6078
6079        #[inline(always)]
6080        fn inline_size(_context: fidl::encoding::Context) -> usize {
6081            16
6082        }
6083    }
6084
6085    unsafe impl<D: fidl::encoding::ResourceDialect>
6086        fidl::encoding::Encode<MlmeDeleteKeysReqRequest, D> for &MlmeDeleteKeysReqRequest
6087    {
6088        #[inline]
6089        unsafe fn encode(
6090            self,
6091            encoder: &mut fidl::encoding::Encoder<'_, D>,
6092            offset: usize,
6093            _depth: fidl::encoding::Depth,
6094        ) -> fidl::Result<()> {
6095            encoder.debug_check_bounds::<MlmeDeleteKeysReqRequest>(offset);
6096            // Delegate to tuple encoding.
6097            fidl::encoding::Encode::<MlmeDeleteKeysReqRequest, D>::encode(
6098                (<DeleteKeysRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6099                encoder,
6100                offset,
6101                _depth,
6102            )
6103        }
6104    }
6105    unsafe impl<
6106        D: fidl::encoding::ResourceDialect,
6107        T0: fidl::encoding::Encode<DeleteKeysRequest, D>,
6108    > fidl::encoding::Encode<MlmeDeleteKeysReqRequest, D> for (T0,)
6109    {
6110        #[inline]
6111        unsafe fn encode(
6112            self,
6113            encoder: &mut fidl::encoding::Encoder<'_, D>,
6114            offset: usize,
6115            depth: fidl::encoding::Depth,
6116        ) -> fidl::Result<()> {
6117            encoder.debug_check_bounds::<MlmeDeleteKeysReqRequest>(offset);
6118            // Zero out padding regions. There's no need to apply masks
6119            // because the unmasked parts will be overwritten by fields.
6120            // Write the fields.
6121            self.0.encode(encoder, offset + 0, depth)?;
6122            Ok(())
6123        }
6124    }
6125
6126    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6127        for MlmeDeleteKeysReqRequest
6128    {
6129        #[inline(always)]
6130        fn new_empty() -> Self {
6131            Self { req: fidl::new_empty!(DeleteKeysRequest, D) }
6132        }
6133
6134        #[inline]
6135        unsafe fn decode(
6136            &mut self,
6137            decoder: &mut fidl::encoding::Decoder<'_, D>,
6138            offset: usize,
6139            _depth: fidl::encoding::Depth,
6140        ) -> fidl::Result<()> {
6141            decoder.debug_check_bounds::<Self>(offset);
6142            // Verify that padding bytes are zero.
6143            fidl::decode!(DeleteKeysRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6144            Ok(())
6145        }
6146    }
6147
6148    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateConfRequest {
6149        type Borrowed<'a> = &'a Self;
6150        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6151            value
6152        }
6153    }
6154
6155    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateConfRequest {
6156        type Owned = Self;
6157
6158        #[inline(always)]
6159        fn inline_align(_context: fidl::encoding::Context) -> usize {
6160            4
6161        }
6162
6163        #[inline(always)]
6164        fn inline_size(_context: fidl::encoding::Context) -> usize {
6165            4
6166        }
6167        #[inline(always)]
6168        fn encode_is_copy() -> bool {
6169            true
6170        }
6171
6172        #[inline(always)]
6173        fn decode_is_copy() -> bool {
6174            true
6175        }
6176    }
6177
6178    unsafe impl<D: fidl::encoding::ResourceDialect>
6179        fidl::encoding::Encode<MlmeDisassociateConfRequest, D> for &MlmeDisassociateConfRequest
6180    {
6181        #[inline]
6182        unsafe fn encode(
6183            self,
6184            encoder: &mut fidl::encoding::Encoder<'_, D>,
6185            offset: usize,
6186            _depth: fidl::encoding::Depth,
6187        ) -> fidl::Result<()> {
6188            encoder.debug_check_bounds::<MlmeDisassociateConfRequest>(offset);
6189            unsafe {
6190                // Copy the object into the buffer.
6191                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
6192                (buf_ptr as *mut MlmeDisassociateConfRequest)
6193                    .write_unaligned((self as *const MlmeDisassociateConfRequest).read());
6194                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
6195                // done second because the memcpy will write garbage to these bytes.
6196            }
6197            Ok(())
6198        }
6199    }
6200    unsafe impl<
6201        D: fidl::encoding::ResourceDialect,
6202        T0: fidl::encoding::Encode<DisassociateConfirm, D>,
6203    > fidl::encoding::Encode<MlmeDisassociateConfRequest, D> for (T0,)
6204    {
6205        #[inline]
6206        unsafe fn encode(
6207            self,
6208            encoder: &mut fidl::encoding::Encoder<'_, D>,
6209            offset: usize,
6210            depth: fidl::encoding::Depth,
6211        ) -> fidl::Result<()> {
6212            encoder.debug_check_bounds::<MlmeDisassociateConfRequest>(offset);
6213            // Zero out padding regions. There's no need to apply masks
6214            // because the unmasked parts will be overwritten by fields.
6215            // Write the fields.
6216            self.0.encode(encoder, offset + 0, depth)?;
6217            Ok(())
6218        }
6219    }
6220
6221    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6222        for MlmeDisassociateConfRequest
6223    {
6224        #[inline(always)]
6225        fn new_empty() -> Self {
6226            Self { resp: fidl::new_empty!(DisassociateConfirm, D) }
6227        }
6228
6229        #[inline]
6230        unsafe fn decode(
6231            &mut self,
6232            decoder: &mut fidl::encoding::Decoder<'_, D>,
6233            offset: usize,
6234            _depth: fidl::encoding::Depth,
6235        ) -> fidl::Result<()> {
6236            decoder.debug_check_bounds::<Self>(offset);
6237            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
6238            // Verify that padding bytes are zero.
6239            // Copy from the buffer into the object.
6240            unsafe {
6241                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
6242            }
6243            Ok(())
6244        }
6245    }
6246
6247    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateIndRequest {
6248        type Borrowed<'a> = &'a Self;
6249        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6250            value
6251        }
6252    }
6253
6254    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateIndRequest {
6255        type Owned = Self;
6256
6257        #[inline(always)]
6258        fn inline_align(_context: fidl::encoding::Context) -> usize {
6259            2
6260        }
6261
6262        #[inline(always)]
6263        fn inline_size(_context: fidl::encoding::Context) -> usize {
6264            10
6265        }
6266    }
6267
6268    unsafe impl<D: fidl::encoding::ResourceDialect>
6269        fidl::encoding::Encode<MlmeDisassociateIndRequest, D> for &MlmeDisassociateIndRequest
6270    {
6271        #[inline]
6272        unsafe fn encode(
6273            self,
6274            encoder: &mut fidl::encoding::Encoder<'_, D>,
6275            offset: usize,
6276            _depth: fidl::encoding::Depth,
6277        ) -> fidl::Result<()> {
6278            encoder.debug_check_bounds::<MlmeDisassociateIndRequest>(offset);
6279            // Delegate to tuple encoding.
6280            fidl::encoding::Encode::<MlmeDisassociateIndRequest, D>::encode(
6281                (<DisassociateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
6282                encoder,
6283                offset,
6284                _depth,
6285            )
6286        }
6287    }
6288    unsafe impl<
6289        D: fidl::encoding::ResourceDialect,
6290        T0: fidl::encoding::Encode<DisassociateIndication, D>,
6291    > fidl::encoding::Encode<MlmeDisassociateIndRequest, D> for (T0,)
6292    {
6293        #[inline]
6294        unsafe fn encode(
6295            self,
6296            encoder: &mut fidl::encoding::Encoder<'_, D>,
6297            offset: usize,
6298            depth: fidl::encoding::Depth,
6299        ) -> fidl::Result<()> {
6300            encoder.debug_check_bounds::<MlmeDisassociateIndRequest>(offset);
6301            // Zero out padding regions. There's no need to apply masks
6302            // because the unmasked parts will be overwritten by fields.
6303            // Write the fields.
6304            self.0.encode(encoder, offset + 0, depth)?;
6305            Ok(())
6306        }
6307    }
6308
6309    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6310        for MlmeDisassociateIndRequest
6311    {
6312        #[inline(always)]
6313        fn new_empty() -> Self {
6314            Self { ind: fidl::new_empty!(DisassociateIndication, D) }
6315        }
6316
6317        #[inline]
6318        unsafe fn decode(
6319            &mut self,
6320            decoder: &mut fidl::encoding::Decoder<'_, D>,
6321            offset: usize,
6322            _depth: fidl::encoding::Depth,
6323        ) -> fidl::Result<()> {
6324            decoder.debug_check_bounds::<Self>(offset);
6325            // Verify that padding bytes are zero.
6326            fidl::decode!(DisassociateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
6327            Ok(())
6328        }
6329    }
6330
6331    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateReqRequest {
6332        type Borrowed<'a> = &'a Self;
6333        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6334            value
6335        }
6336    }
6337
6338    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateReqRequest {
6339        type Owned = Self;
6340
6341        #[inline(always)]
6342        fn inline_align(_context: fidl::encoding::Context) -> usize {
6343            2
6344        }
6345
6346        #[inline(always)]
6347        fn inline_size(_context: fidl::encoding::Context) -> usize {
6348            8
6349        }
6350    }
6351
6352    unsafe impl<D: fidl::encoding::ResourceDialect>
6353        fidl::encoding::Encode<MlmeDisassociateReqRequest, D> for &MlmeDisassociateReqRequest
6354    {
6355        #[inline]
6356        unsafe fn encode(
6357            self,
6358            encoder: &mut fidl::encoding::Encoder<'_, D>,
6359            offset: usize,
6360            _depth: fidl::encoding::Depth,
6361        ) -> fidl::Result<()> {
6362            encoder.debug_check_bounds::<MlmeDisassociateReqRequest>(offset);
6363            // Delegate to tuple encoding.
6364            fidl::encoding::Encode::<MlmeDisassociateReqRequest, D>::encode(
6365                (<DisassociateRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6366                encoder,
6367                offset,
6368                _depth,
6369            )
6370        }
6371    }
6372    unsafe impl<
6373        D: fidl::encoding::ResourceDialect,
6374        T0: fidl::encoding::Encode<DisassociateRequest, D>,
6375    > fidl::encoding::Encode<MlmeDisassociateReqRequest, D> for (T0,)
6376    {
6377        #[inline]
6378        unsafe fn encode(
6379            self,
6380            encoder: &mut fidl::encoding::Encoder<'_, D>,
6381            offset: usize,
6382            depth: fidl::encoding::Depth,
6383        ) -> fidl::Result<()> {
6384            encoder.debug_check_bounds::<MlmeDisassociateReqRequest>(offset);
6385            // Zero out padding regions. There's no need to apply masks
6386            // because the unmasked parts will be overwritten by fields.
6387            // Write the fields.
6388            self.0.encode(encoder, offset + 0, depth)?;
6389            Ok(())
6390        }
6391    }
6392
6393    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6394        for MlmeDisassociateReqRequest
6395    {
6396        #[inline(always)]
6397        fn new_empty() -> Self {
6398            Self { req: fidl::new_empty!(DisassociateRequest, D) }
6399        }
6400
6401        #[inline]
6402        unsafe fn decode(
6403            &mut self,
6404            decoder: &mut fidl::encoding::Decoder<'_, D>,
6405            offset: usize,
6406            _depth: fidl::encoding::Depth,
6407        ) -> fidl::Result<()> {
6408            decoder.debug_check_bounds::<Self>(offset);
6409            // Verify that padding bytes are zero.
6410            fidl::decode!(DisassociateRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6411            Ok(())
6412        }
6413    }
6414
6415    impl fidl::encoding::ValueTypeMarker for MlmeEapolConfRequest {
6416        type Borrowed<'a> = &'a Self;
6417        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6418            value
6419        }
6420    }
6421
6422    unsafe impl fidl::encoding::TypeMarker for MlmeEapolConfRequest {
6423        type Owned = Self;
6424
6425        #[inline(always)]
6426        fn inline_align(_context: fidl::encoding::Context) -> usize {
6427            4
6428        }
6429
6430        #[inline(always)]
6431        fn inline_size(_context: fidl::encoding::Context) -> usize {
6432            12
6433        }
6434    }
6435
6436    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolConfRequest, D>
6437        for &MlmeEapolConfRequest
6438    {
6439        #[inline]
6440        unsafe fn encode(
6441            self,
6442            encoder: &mut fidl::encoding::Encoder<'_, D>,
6443            offset: usize,
6444            _depth: fidl::encoding::Depth,
6445        ) -> fidl::Result<()> {
6446            encoder.debug_check_bounds::<MlmeEapolConfRequest>(offset);
6447            // Delegate to tuple encoding.
6448            fidl::encoding::Encode::<MlmeEapolConfRequest, D>::encode(
6449                (<EapolConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6450                encoder,
6451                offset,
6452                _depth,
6453            )
6454        }
6455    }
6456    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolConfirm, D>>
6457        fidl::encoding::Encode<MlmeEapolConfRequest, D> for (T0,)
6458    {
6459        #[inline]
6460        unsafe fn encode(
6461            self,
6462            encoder: &mut fidl::encoding::Encoder<'_, D>,
6463            offset: usize,
6464            depth: fidl::encoding::Depth,
6465        ) -> fidl::Result<()> {
6466            encoder.debug_check_bounds::<MlmeEapolConfRequest>(offset);
6467            // Zero out padding regions. There's no need to apply masks
6468            // because the unmasked parts will be overwritten by fields.
6469            // Write the fields.
6470            self.0.encode(encoder, offset + 0, depth)?;
6471            Ok(())
6472        }
6473    }
6474
6475    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolConfRequest {
6476        #[inline(always)]
6477        fn new_empty() -> Self {
6478            Self { resp: fidl::new_empty!(EapolConfirm, D) }
6479        }
6480
6481        #[inline]
6482        unsafe fn decode(
6483            &mut self,
6484            decoder: &mut fidl::encoding::Decoder<'_, D>,
6485            offset: usize,
6486            _depth: fidl::encoding::Depth,
6487        ) -> fidl::Result<()> {
6488            decoder.debug_check_bounds::<Self>(offset);
6489            // Verify that padding bytes are zero.
6490            fidl::decode!(EapolConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
6491            Ok(())
6492        }
6493    }
6494
6495    impl fidl::encoding::ValueTypeMarker for MlmeEapolIndRequest {
6496        type Borrowed<'a> = &'a Self;
6497        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6498            value
6499        }
6500    }
6501
6502    unsafe impl fidl::encoding::TypeMarker for MlmeEapolIndRequest {
6503        type Owned = Self;
6504
6505        #[inline(always)]
6506        fn inline_align(_context: fidl::encoding::Context) -> usize {
6507            8
6508        }
6509
6510        #[inline(always)]
6511        fn inline_size(_context: fidl::encoding::Context) -> usize {
6512            32
6513        }
6514    }
6515
6516    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolIndRequest, D>
6517        for &MlmeEapolIndRequest
6518    {
6519        #[inline]
6520        unsafe fn encode(
6521            self,
6522            encoder: &mut fidl::encoding::Encoder<'_, D>,
6523            offset: usize,
6524            _depth: fidl::encoding::Depth,
6525        ) -> fidl::Result<()> {
6526            encoder.debug_check_bounds::<MlmeEapolIndRequest>(offset);
6527            // Delegate to tuple encoding.
6528            fidl::encoding::Encode::<MlmeEapolIndRequest, D>::encode(
6529                (<EapolIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
6530                encoder,
6531                offset,
6532                _depth,
6533            )
6534        }
6535    }
6536    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolIndication, D>>
6537        fidl::encoding::Encode<MlmeEapolIndRequest, D> for (T0,)
6538    {
6539        #[inline]
6540        unsafe fn encode(
6541            self,
6542            encoder: &mut fidl::encoding::Encoder<'_, D>,
6543            offset: usize,
6544            depth: fidl::encoding::Depth,
6545        ) -> fidl::Result<()> {
6546            encoder.debug_check_bounds::<MlmeEapolIndRequest>(offset);
6547            // Zero out padding regions. There's no need to apply masks
6548            // because the unmasked parts will be overwritten by fields.
6549            // Write the fields.
6550            self.0.encode(encoder, offset + 0, depth)?;
6551            Ok(())
6552        }
6553    }
6554
6555    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolIndRequest {
6556        #[inline(always)]
6557        fn new_empty() -> Self {
6558            Self { ind: fidl::new_empty!(EapolIndication, D) }
6559        }
6560
6561        #[inline]
6562        unsafe fn decode(
6563            &mut self,
6564            decoder: &mut fidl::encoding::Decoder<'_, D>,
6565            offset: usize,
6566            _depth: fidl::encoding::Depth,
6567        ) -> fidl::Result<()> {
6568            decoder.debug_check_bounds::<Self>(offset);
6569            // Verify that padding bytes are zero.
6570            fidl::decode!(EapolIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
6571            Ok(())
6572        }
6573    }
6574
6575    impl fidl::encoding::ValueTypeMarker for MlmeEapolReqRequest {
6576        type Borrowed<'a> = &'a Self;
6577        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6578            value
6579        }
6580    }
6581
6582    unsafe impl fidl::encoding::TypeMarker for MlmeEapolReqRequest {
6583        type Owned = Self;
6584
6585        #[inline(always)]
6586        fn inline_align(_context: fidl::encoding::Context) -> usize {
6587            8
6588        }
6589
6590        #[inline(always)]
6591        fn inline_size(_context: fidl::encoding::Context) -> usize {
6592            32
6593        }
6594    }
6595
6596    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolReqRequest, D>
6597        for &MlmeEapolReqRequest
6598    {
6599        #[inline]
6600        unsafe fn encode(
6601            self,
6602            encoder: &mut fidl::encoding::Encoder<'_, D>,
6603            offset: usize,
6604            _depth: fidl::encoding::Depth,
6605        ) -> fidl::Result<()> {
6606            encoder.debug_check_bounds::<MlmeEapolReqRequest>(offset);
6607            // Delegate to tuple encoding.
6608            fidl::encoding::Encode::<MlmeEapolReqRequest, D>::encode(
6609                (<EapolRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6610                encoder,
6611                offset,
6612                _depth,
6613            )
6614        }
6615    }
6616    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolRequest, D>>
6617        fidl::encoding::Encode<MlmeEapolReqRequest, D> for (T0,)
6618    {
6619        #[inline]
6620        unsafe fn encode(
6621            self,
6622            encoder: &mut fidl::encoding::Encoder<'_, D>,
6623            offset: usize,
6624            depth: fidl::encoding::Depth,
6625        ) -> fidl::Result<()> {
6626            encoder.debug_check_bounds::<MlmeEapolReqRequest>(offset);
6627            // Zero out padding regions. There's no need to apply masks
6628            // because the unmasked parts will be overwritten by fields.
6629            // Write the fields.
6630            self.0.encode(encoder, offset + 0, depth)?;
6631            Ok(())
6632        }
6633    }
6634
6635    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolReqRequest {
6636        #[inline(always)]
6637        fn new_empty() -> Self {
6638            Self { req: fidl::new_empty!(EapolRequest, D) }
6639        }
6640
6641        #[inline]
6642        unsafe fn decode(
6643            &mut self,
6644            decoder: &mut fidl::encoding::Decoder<'_, D>,
6645            offset: usize,
6646            _depth: fidl::encoding::Depth,
6647        ) -> fidl::Result<()> {
6648            decoder.debug_check_bounds::<Self>(offset);
6649            // Verify that padding bytes are zero.
6650            fidl::decode!(EapolRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6651            Ok(())
6652        }
6653    }
6654
6655    impl fidl::encoding::ValueTypeMarker for MlmeFinalizeAssociationReqRequest {
6656        type Borrowed<'a> = &'a Self;
6657        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6658            value
6659        }
6660    }
6661
6662    unsafe impl fidl::encoding::TypeMarker for MlmeFinalizeAssociationReqRequest {
6663        type Owned = Self;
6664
6665        #[inline(always)]
6666        fn inline_align(_context: fidl::encoding::Context) -> usize {
6667            8
6668        }
6669
6670        #[inline(always)]
6671        fn inline_size(_context: fidl::encoding::Context) -> usize {
6672            56
6673        }
6674    }
6675
6676    unsafe impl<D: fidl::encoding::ResourceDialect>
6677        fidl::encoding::Encode<MlmeFinalizeAssociationReqRequest, D>
6678        for &MlmeFinalizeAssociationReqRequest
6679    {
6680        #[inline]
6681        unsafe fn encode(
6682            self,
6683            encoder: &mut fidl::encoding::Encoder<'_, D>,
6684            offset: usize,
6685            _depth: fidl::encoding::Depth,
6686        ) -> fidl::Result<()> {
6687            encoder.debug_check_bounds::<MlmeFinalizeAssociationReqRequest>(offset);
6688            // Delegate to tuple encoding.
6689            fidl::encoding::Encode::<MlmeFinalizeAssociationReqRequest, D>::encode(
6690                (<NegotiatedCapabilities as fidl::encoding::ValueTypeMarker>::borrow(
6691                    &self.negotiated_capabilities,
6692                ),),
6693                encoder,
6694                offset,
6695                _depth,
6696            )
6697        }
6698    }
6699    unsafe impl<
6700        D: fidl::encoding::ResourceDialect,
6701        T0: fidl::encoding::Encode<NegotiatedCapabilities, D>,
6702    > fidl::encoding::Encode<MlmeFinalizeAssociationReqRequest, D> for (T0,)
6703    {
6704        #[inline]
6705        unsafe fn encode(
6706            self,
6707            encoder: &mut fidl::encoding::Encoder<'_, D>,
6708            offset: usize,
6709            depth: fidl::encoding::Depth,
6710        ) -> fidl::Result<()> {
6711            encoder.debug_check_bounds::<MlmeFinalizeAssociationReqRequest>(offset);
6712            // Zero out padding regions. There's no need to apply masks
6713            // because the unmasked parts will be overwritten by fields.
6714            // Write the fields.
6715            self.0.encode(encoder, offset + 0, depth)?;
6716            Ok(())
6717        }
6718    }
6719
6720    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6721        for MlmeFinalizeAssociationReqRequest
6722    {
6723        #[inline(always)]
6724        fn new_empty() -> Self {
6725            Self { negotiated_capabilities: fidl::new_empty!(NegotiatedCapabilities, D) }
6726        }
6727
6728        #[inline]
6729        unsafe fn decode(
6730            &mut self,
6731            decoder: &mut fidl::encoding::Decoder<'_, D>,
6732            offset: usize,
6733            _depth: fidl::encoding::Depth,
6734        ) -> fidl::Result<()> {
6735            decoder.debug_check_bounds::<Self>(offset);
6736            // Verify that padding bytes are zero.
6737            fidl::decode!(
6738                NegotiatedCapabilities,
6739                D,
6740                &mut self.negotiated_capabilities,
6741                decoder,
6742                offset + 0,
6743                _depth
6744            )?;
6745            Ok(())
6746        }
6747    }
6748
6749    impl fidl::encoding::ValueTypeMarker for MlmeGetIfaceHistogramStatsResponse {
6750        type Borrowed<'a> = &'a Self;
6751        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6752            value
6753        }
6754    }
6755
6756    unsafe impl fidl::encoding::TypeMarker for MlmeGetIfaceHistogramStatsResponse {
6757        type Owned = Self;
6758
6759        #[inline(always)]
6760        fn inline_align(_context: fidl::encoding::Context) -> usize {
6761            8
6762        }
6763
6764        #[inline(always)]
6765        fn inline_size(_context: fidl::encoding::Context) -> usize {
6766            16
6767        }
6768    }
6769
6770    unsafe impl<D: fidl::encoding::ResourceDialect>
6771        fidl::encoding::Encode<MlmeGetIfaceHistogramStatsResponse, D>
6772        for &MlmeGetIfaceHistogramStatsResponse
6773    {
6774        #[inline]
6775        unsafe fn encode(
6776            self,
6777            encoder: &mut fidl::encoding::Encoder<'_, D>,
6778            offset: usize,
6779            _depth: fidl::encoding::Depth,
6780        ) -> fidl::Result<()> {
6781            encoder.debug_check_bounds::<MlmeGetIfaceHistogramStatsResponse>(offset);
6782            // Delegate to tuple encoding.
6783            fidl::encoding::Encode::<MlmeGetIfaceHistogramStatsResponse, D>::encode(
6784                (<GetIfaceHistogramStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(
6785                    &self.resp,
6786                ),),
6787                encoder,
6788                offset,
6789                _depth,
6790            )
6791        }
6792    }
6793    unsafe impl<
6794        D: fidl::encoding::ResourceDialect,
6795        T0: fidl::encoding::Encode<GetIfaceHistogramStatsResponse, D>,
6796    > fidl::encoding::Encode<MlmeGetIfaceHistogramStatsResponse, D> for (T0,)
6797    {
6798        #[inline]
6799        unsafe fn encode(
6800            self,
6801            encoder: &mut fidl::encoding::Encoder<'_, D>,
6802            offset: usize,
6803            depth: fidl::encoding::Depth,
6804        ) -> fidl::Result<()> {
6805            encoder.debug_check_bounds::<MlmeGetIfaceHistogramStatsResponse>(offset);
6806            // Zero out padding regions. There's no need to apply masks
6807            // because the unmasked parts will be overwritten by fields.
6808            // Write the fields.
6809            self.0.encode(encoder, offset + 0, depth)?;
6810            Ok(())
6811        }
6812    }
6813
6814    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6815        for MlmeGetIfaceHistogramStatsResponse
6816    {
6817        #[inline(always)]
6818        fn new_empty() -> Self {
6819            Self { resp: fidl::new_empty!(GetIfaceHistogramStatsResponse, D) }
6820        }
6821
6822        #[inline]
6823        unsafe fn decode(
6824            &mut self,
6825            decoder: &mut fidl::encoding::Decoder<'_, D>,
6826            offset: usize,
6827            _depth: fidl::encoding::Depth,
6828        ) -> fidl::Result<()> {
6829            decoder.debug_check_bounds::<Self>(offset);
6830            // Verify that padding bytes are zero.
6831            fidl::decode!(
6832                GetIfaceHistogramStatsResponse,
6833                D,
6834                &mut self.resp,
6835                decoder,
6836                offset + 0,
6837                _depth
6838            )?;
6839            Ok(())
6840        }
6841    }
6842
6843    impl fidl::encoding::ValueTypeMarker for MlmeGetIfaceStatsResponse {
6844        type Borrowed<'a> = &'a Self;
6845        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6846            value
6847        }
6848    }
6849
6850    unsafe impl fidl::encoding::TypeMarker for MlmeGetIfaceStatsResponse {
6851        type Owned = Self;
6852
6853        #[inline(always)]
6854        fn inline_align(_context: fidl::encoding::Context) -> usize {
6855            8
6856        }
6857
6858        #[inline(always)]
6859        fn inline_size(_context: fidl::encoding::Context) -> usize {
6860            16
6861        }
6862    }
6863
6864    unsafe impl<D: fidl::encoding::ResourceDialect>
6865        fidl::encoding::Encode<MlmeGetIfaceStatsResponse, D> for &MlmeGetIfaceStatsResponse
6866    {
6867        #[inline]
6868        unsafe fn encode(
6869            self,
6870            encoder: &mut fidl::encoding::Encoder<'_, D>,
6871            offset: usize,
6872            _depth: fidl::encoding::Depth,
6873        ) -> fidl::Result<()> {
6874            encoder.debug_check_bounds::<MlmeGetIfaceStatsResponse>(offset);
6875            // Delegate to tuple encoding.
6876            fidl::encoding::Encode::<MlmeGetIfaceStatsResponse, D>::encode(
6877                (<GetIfaceStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6878                encoder,
6879                offset,
6880                _depth,
6881            )
6882        }
6883    }
6884    unsafe impl<
6885        D: fidl::encoding::ResourceDialect,
6886        T0: fidl::encoding::Encode<GetIfaceStatsResponse, D>,
6887    > fidl::encoding::Encode<MlmeGetIfaceStatsResponse, D> for (T0,)
6888    {
6889        #[inline]
6890        unsafe fn encode(
6891            self,
6892            encoder: &mut fidl::encoding::Encoder<'_, D>,
6893            offset: usize,
6894            depth: fidl::encoding::Depth,
6895        ) -> fidl::Result<()> {
6896            encoder.debug_check_bounds::<MlmeGetIfaceStatsResponse>(offset);
6897            // Zero out padding regions. There's no need to apply masks
6898            // because the unmasked parts will be overwritten by fields.
6899            // Write the fields.
6900            self.0.encode(encoder, offset + 0, depth)?;
6901            Ok(())
6902        }
6903    }
6904
6905    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6906        for MlmeGetIfaceStatsResponse
6907    {
6908        #[inline(always)]
6909        fn new_empty() -> Self {
6910            Self { resp: fidl::new_empty!(GetIfaceStatsResponse, D) }
6911        }
6912
6913        #[inline]
6914        unsafe fn decode(
6915            &mut self,
6916            decoder: &mut fidl::encoding::Decoder<'_, D>,
6917            offset: usize,
6918            _depth: fidl::encoding::Depth,
6919        ) -> fidl::Result<()> {
6920            decoder.debug_check_bounds::<Self>(offset);
6921            // Verify that padding bytes are zero.
6922            fidl::decode!(GetIfaceStatsResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
6923            Ok(())
6924        }
6925    }
6926
6927    impl fidl::encoding::ValueTypeMarker for MlmeGetMinstrelStatsRequest {
6928        type Borrowed<'a> = &'a Self;
6929        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6930            value
6931        }
6932    }
6933
6934    unsafe impl fidl::encoding::TypeMarker for MlmeGetMinstrelStatsRequest {
6935        type Owned = Self;
6936
6937        #[inline(always)]
6938        fn inline_align(_context: fidl::encoding::Context) -> usize {
6939            1
6940        }
6941
6942        #[inline(always)]
6943        fn inline_size(_context: fidl::encoding::Context) -> usize {
6944            6
6945        }
6946        #[inline(always)]
6947        fn encode_is_copy() -> bool {
6948            true
6949        }
6950
6951        #[inline(always)]
6952        fn decode_is_copy() -> bool {
6953            true
6954        }
6955    }
6956
6957    unsafe impl<D: fidl::encoding::ResourceDialect>
6958        fidl::encoding::Encode<MlmeGetMinstrelStatsRequest, D> for &MlmeGetMinstrelStatsRequest
6959    {
6960        #[inline]
6961        unsafe fn encode(
6962            self,
6963            encoder: &mut fidl::encoding::Encoder<'_, D>,
6964            offset: usize,
6965            _depth: fidl::encoding::Depth,
6966        ) -> fidl::Result<()> {
6967            encoder.debug_check_bounds::<MlmeGetMinstrelStatsRequest>(offset);
6968            unsafe {
6969                // Copy the object into the buffer.
6970                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
6971                (buf_ptr as *mut MlmeGetMinstrelStatsRequest)
6972                    .write_unaligned((self as *const MlmeGetMinstrelStatsRequest).read());
6973                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
6974                // done second because the memcpy will write garbage to these bytes.
6975            }
6976            Ok(())
6977        }
6978    }
6979    unsafe impl<
6980        D: fidl::encoding::ResourceDialect,
6981        T0: fidl::encoding::Encode<MinstrelStatsRequest, D>,
6982    > fidl::encoding::Encode<MlmeGetMinstrelStatsRequest, D> for (T0,)
6983    {
6984        #[inline]
6985        unsafe fn encode(
6986            self,
6987            encoder: &mut fidl::encoding::Encoder<'_, D>,
6988            offset: usize,
6989            depth: fidl::encoding::Depth,
6990        ) -> fidl::Result<()> {
6991            encoder.debug_check_bounds::<MlmeGetMinstrelStatsRequest>(offset);
6992            // Zero out padding regions. There's no need to apply masks
6993            // because the unmasked parts will be overwritten by fields.
6994            // Write the fields.
6995            self.0.encode(encoder, offset + 0, depth)?;
6996            Ok(())
6997        }
6998    }
6999
7000    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7001        for MlmeGetMinstrelStatsRequest
7002    {
7003        #[inline(always)]
7004        fn new_empty() -> Self {
7005            Self { req: fidl::new_empty!(MinstrelStatsRequest, D) }
7006        }
7007
7008        #[inline]
7009        unsafe fn decode(
7010            &mut self,
7011            decoder: &mut fidl::encoding::Decoder<'_, D>,
7012            offset: usize,
7013            _depth: fidl::encoding::Depth,
7014        ) -> fidl::Result<()> {
7015            decoder.debug_check_bounds::<Self>(offset);
7016            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7017            // Verify that padding bytes are zero.
7018            // Copy from the buffer into the object.
7019            unsafe {
7020                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
7021            }
7022            Ok(())
7023        }
7024    }
7025
7026    impl fidl::encoding::ValueTypeMarker for MlmeGetMinstrelStatsResponse {
7027        type Borrowed<'a> = &'a Self;
7028        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7029            value
7030        }
7031    }
7032
7033    unsafe impl fidl::encoding::TypeMarker for MlmeGetMinstrelStatsResponse {
7034        type Owned = Self;
7035
7036        #[inline(always)]
7037        fn inline_align(_context: fidl::encoding::Context) -> usize {
7038            8
7039        }
7040
7041        #[inline(always)]
7042        fn inline_size(_context: fidl::encoding::Context) -> usize {
7043            8
7044        }
7045    }
7046
7047    unsafe impl<D: fidl::encoding::ResourceDialect>
7048        fidl::encoding::Encode<MlmeGetMinstrelStatsResponse, D> for &MlmeGetMinstrelStatsResponse
7049    {
7050        #[inline]
7051        unsafe fn encode(
7052            self,
7053            encoder: &mut fidl::encoding::Encoder<'_, D>,
7054            offset: usize,
7055            _depth: fidl::encoding::Depth,
7056        ) -> fidl::Result<()> {
7057            encoder.debug_check_bounds::<MlmeGetMinstrelStatsResponse>(offset);
7058            // Delegate to tuple encoding.
7059            fidl::encoding::Encode::<MlmeGetMinstrelStatsResponse, D>::encode(
7060                (<MinstrelStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
7061                encoder,
7062                offset,
7063                _depth,
7064            )
7065        }
7066    }
7067    unsafe impl<
7068        D: fidl::encoding::ResourceDialect,
7069        T0: fidl::encoding::Encode<MinstrelStatsResponse, D>,
7070    > fidl::encoding::Encode<MlmeGetMinstrelStatsResponse, D> for (T0,)
7071    {
7072        #[inline]
7073        unsafe fn encode(
7074            self,
7075            encoder: &mut fidl::encoding::Encoder<'_, D>,
7076            offset: usize,
7077            depth: fidl::encoding::Depth,
7078        ) -> fidl::Result<()> {
7079            encoder.debug_check_bounds::<MlmeGetMinstrelStatsResponse>(offset);
7080            // Zero out padding regions. There's no need to apply masks
7081            // because the unmasked parts will be overwritten by fields.
7082            // Write the fields.
7083            self.0.encode(encoder, offset + 0, depth)?;
7084            Ok(())
7085        }
7086    }
7087
7088    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7089        for MlmeGetMinstrelStatsResponse
7090    {
7091        #[inline(always)]
7092        fn new_empty() -> Self {
7093            Self { resp: fidl::new_empty!(MinstrelStatsResponse, D) }
7094        }
7095
7096        #[inline]
7097        unsafe fn decode(
7098            &mut self,
7099            decoder: &mut fidl::encoding::Decoder<'_, D>,
7100            offset: usize,
7101            _depth: fidl::encoding::Depth,
7102        ) -> fidl::Result<()> {
7103            decoder.debug_check_bounds::<Self>(offset);
7104            // Verify that padding bytes are zero.
7105            fidl::decode!(MinstrelStatsResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
7106            Ok(())
7107        }
7108    }
7109
7110    impl fidl::encoding::ValueTypeMarker for MlmeInstallApfPacketFilterRequest {
7111        type Borrowed<'a> = &'a Self;
7112        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7113            value
7114        }
7115    }
7116
7117    unsafe impl fidl::encoding::TypeMarker for MlmeInstallApfPacketFilterRequest {
7118        type Owned = Self;
7119
7120        #[inline(always)]
7121        fn inline_align(_context: fidl::encoding::Context) -> usize {
7122            8
7123        }
7124
7125        #[inline(always)]
7126        fn inline_size(_context: fidl::encoding::Context) -> usize {
7127            16
7128        }
7129    }
7130
7131    unsafe impl<D: fidl::encoding::ResourceDialect>
7132        fidl::encoding::Encode<MlmeInstallApfPacketFilterRequest, D>
7133        for &MlmeInstallApfPacketFilterRequest
7134    {
7135        #[inline]
7136        unsafe fn encode(
7137            self,
7138            encoder: &mut fidl::encoding::Encoder<'_, D>,
7139            offset: usize,
7140            _depth: fidl::encoding::Depth,
7141        ) -> fidl::Result<()> {
7142            encoder.debug_check_bounds::<MlmeInstallApfPacketFilterRequest>(offset);
7143            // Delegate to tuple encoding.
7144            fidl::encoding::Encode::<MlmeInstallApfPacketFilterRequest, D>::encode(
7145                (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
7146                    &self.program,
7147                ),),
7148                encoder,
7149                offset,
7150                _depth,
7151            )
7152        }
7153    }
7154    unsafe impl<
7155        D: fidl::encoding::ResourceDialect,
7156        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
7157    > fidl::encoding::Encode<MlmeInstallApfPacketFilterRequest, D> for (T0,)
7158    {
7159        #[inline]
7160        unsafe fn encode(
7161            self,
7162            encoder: &mut fidl::encoding::Encoder<'_, D>,
7163            offset: usize,
7164            depth: fidl::encoding::Depth,
7165        ) -> fidl::Result<()> {
7166            encoder.debug_check_bounds::<MlmeInstallApfPacketFilterRequest>(offset);
7167            // Zero out padding regions. There's no need to apply masks
7168            // because the unmasked parts will be overwritten by fields.
7169            // Write the fields.
7170            self.0.encode(encoder, offset + 0, depth)?;
7171            Ok(())
7172        }
7173    }
7174
7175    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7176        for MlmeInstallApfPacketFilterRequest
7177    {
7178        #[inline(always)]
7179        fn new_empty() -> Self {
7180            Self { program: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
7181        }
7182
7183        #[inline]
7184        unsafe fn decode(
7185            &mut self,
7186            decoder: &mut fidl::encoding::Decoder<'_, D>,
7187            offset: usize,
7188            _depth: fidl::encoding::Depth,
7189        ) -> fidl::Result<()> {
7190            decoder.debug_check_bounds::<Self>(offset);
7191            // Verify that padding bytes are zero.
7192            fidl::decode!(
7193                fidl::encoding::UnboundedVector<u8>,
7194                D,
7195                &mut self.program,
7196                decoder,
7197                offset + 0,
7198                _depth
7199            )?;
7200            Ok(())
7201        }
7202    }
7203
7204    impl fidl::encoding::ValueTypeMarker for MlmeListMinstrelPeersResponse {
7205        type Borrowed<'a> = &'a Self;
7206        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7207            value
7208        }
7209    }
7210
7211    unsafe impl fidl::encoding::TypeMarker for MlmeListMinstrelPeersResponse {
7212        type Owned = Self;
7213
7214        #[inline(always)]
7215        fn inline_align(_context: fidl::encoding::Context) -> usize {
7216            8
7217        }
7218
7219        #[inline(always)]
7220        fn inline_size(_context: fidl::encoding::Context) -> usize {
7221            16
7222        }
7223    }
7224
7225    unsafe impl<D: fidl::encoding::ResourceDialect>
7226        fidl::encoding::Encode<MlmeListMinstrelPeersResponse, D>
7227        for &MlmeListMinstrelPeersResponse
7228    {
7229        #[inline]
7230        unsafe fn encode(
7231            self,
7232            encoder: &mut fidl::encoding::Encoder<'_, D>,
7233            offset: usize,
7234            _depth: fidl::encoding::Depth,
7235        ) -> fidl::Result<()> {
7236            encoder.debug_check_bounds::<MlmeListMinstrelPeersResponse>(offset);
7237            // Delegate to tuple encoding.
7238            fidl::encoding::Encode::<MlmeListMinstrelPeersResponse, D>::encode(
7239                (<MinstrelListResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
7240                encoder,
7241                offset,
7242                _depth,
7243            )
7244        }
7245    }
7246    unsafe impl<
7247        D: fidl::encoding::ResourceDialect,
7248        T0: fidl::encoding::Encode<MinstrelListResponse, D>,
7249    > fidl::encoding::Encode<MlmeListMinstrelPeersResponse, D> for (T0,)
7250    {
7251        #[inline]
7252        unsafe fn encode(
7253            self,
7254            encoder: &mut fidl::encoding::Encoder<'_, D>,
7255            offset: usize,
7256            depth: fidl::encoding::Depth,
7257        ) -> fidl::Result<()> {
7258            encoder.debug_check_bounds::<MlmeListMinstrelPeersResponse>(offset);
7259            // Zero out padding regions. There's no need to apply masks
7260            // because the unmasked parts will be overwritten by fields.
7261            // Write the fields.
7262            self.0.encode(encoder, offset + 0, depth)?;
7263            Ok(())
7264        }
7265    }
7266
7267    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7268        for MlmeListMinstrelPeersResponse
7269    {
7270        #[inline(always)]
7271        fn new_empty() -> Self {
7272            Self { resp: fidl::new_empty!(MinstrelListResponse, D) }
7273        }
7274
7275        #[inline]
7276        unsafe fn decode(
7277            &mut self,
7278            decoder: &mut fidl::encoding::Decoder<'_, D>,
7279            offset: usize,
7280            _depth: fidl::encoding::Depth,
7281        ) -> fidl::Result<()> {
7282            decoder.debug_check_bounds::<Self>(offset);
7283            // Verify that padding bytes are zero.
7284            fidl::decode!(MinstrelListResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
7285            Ok(())
7286        }
7287    }
7288
7289    impl fidl::encoding::ValueTypeMarker for MlmeOnChannelSwitchedRequest {
7290        type Borrowed<'a> = &'a Self;
7291        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7292            value
7293        }
7294    }
7295
7296    unsafe impl fidl::encoding::TypeMarker for MlmeOnChannelSwitchedRequest {
7297        type Owned = Self;
7298
7299        #[inline(always)]
7300        fn inline_align(_context: fidl::encoding::Context) -> usize {
7301            1
7302        }
7303
7304        #[inline(always)]
7305        fn inline_size(_context: fidl::encoding::Context) -> usize {
7306            1
7307        }
7308    }
7309
7310    unsafe impl<D: fidl::encoding::ResourceDialect>
7311        fidl::encoding::Encode<MlmeOnChannelSwitchedRequest, D> for &MlmeOnChannelSwitchedRequest
7312    {
7313        #[inline]
7314        unsafe fn encode(
7315            self,
7316            encoder: &mut fidl::encoding::Encoder<'_, D>,
7317            offset: usize,
7318            _depth: fidl::encoding::Depth,
7319        ) -> fidl::Result<()> {
7320            encoder.debug_check_bounds::<MlmeOnChannelSwitchedRequest>(offset);
7321            // Delegate to tuple encoding.
7322            fidl::encoding::Encode::<MlmeOnChannelSwitchedRequest, D>::encode(
7323                (
7324                    <fidl_fuchsia_wlan_internal_common::ChannelSwitchInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),
7325                ),
7326                encoder, offset, _depth
7327            )
7328        }
7329    }
7330    unsafe impl<
7331        D: fidl::encoding::ResourceDialect,
7332        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal_common::ChannelSwitchInfo, D>,
7333    > fidl::encoding::Encode<MlmeOnChannelSwitchedRequest, D> for (T0,)
7334    {
7335        #[inline]
7336        unsafe fn encode(
7337            self,
7338            encoder: &mut fidl::encoding::Encoder<'_, D>,
7339            offset: usize,
7340            depth: fidl::encoding::Depth,
7341        ) -> fidl::Result<()> {
7342            encoder.debug_check_bounds::<MlmeOnChannelSwitchedRequest>(offset);
7343            // Zero out padding regions. There's no need to apply masks
7344            // because the unmasked parts will be overwritten by fields.
7345            // Write the fields.
7346            self.0.encode(encoder, offset + 0, depth)?;
7347            Ok(())
7348        }
7349    }
7350
7351    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7352        for MlmeOnChannelSwitchedRequest
7353    {
7354        #[inline(always)]
7355        fn new_empty() -> Self {
7356            Self { info: fidl::new_empty!(fidl_fuchsia_wlan_internal_common::ChannelSwitchInfo, D) }
7357        }
7358
7359        #[inline]
7360        unsafe fn decode(
7361            &mut self,
7362            decoder: &mut fidl::encoding::Decoder<'_, D>,
7363            offset: usize,
7364            _depth: fidl::encoding::Depth,
7365        ) -> fidl::Result<()> {
7366            decoder.debug_check_bounds::<Self>(offset);
7367            // Verify that padding bytes are zero.
7368            fidl::decode!(
7369                fidl_fuchsia_wlan_internal_common::ChannelSwitchInfo,
7370                D,
7371                &mut self.info,
7372                decoder,
7373                offset + 0,
7374                _depth
7375            )?;
7376            Ok(())
7377        }
7378    }
7379
7380    impl fidl::encoding::ValueTypeMarker for MlmeOnPmkAvailableRequest {
7381        type Borrowed<'a> = &'a Self;
7382        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7383            value
7384        }
7385    }
7386
7387    unsafe impl fidl::encoding::TypeMarker for MlmeOnPmkAvailableRequest {
7388        type Owned = Self;
7389
7390        #[inline(always)]
7391        fn inline_align(_context: fidl::encoding::Context) -> usize {
7392            8
7393        }
7394
7395        #[inline(always)]
7396        fn inline_size(_context: fidl::encoding::Context) -> usize {
7397            32
7398        }
7399    }
7400
7401    unsafe impl<D: fidl::encoding::ResourceDialect>
7402        fidl::encoding::Encode<MlmeOnPmkAvailableRequest, D> for &MlmeOnPmkAvailableRequest
7403    {
7404        #[inline]
7405        unsafe fn encode(
7406            self,
7407            encoder: &mut fidl::encoding::Encoder<'_, D>,
7408            offset: usize,
7409            _depth: fidl::encoding::Depth,
7410        ) -> fidl::Result<()> {
7411            encoder.debug_check_bounds::<MlmeOnPmkAvailableRequest>(offset);
7412            // Delegate to tuple encoding.
7413            fidl::encoding::Encode::<MlmeOnPmkAvailableRequest, D>::encode(
7414                (<PmkInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
7415                encoder,
7416                offset,
7417                _depth,
7418            )
7419        }
7420    }
7421    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<PmkInfo, D>>
7422        fidl::encoding::Encode<MlmeOnPmkAvailableRequest, D> for (T0,)
7423    {
7424        #[inline]
7425        unsafe fn encode(
7426            self,
7427            encoder: &mut fidl::encoding::Encoder<'_, D>,
7428            offset: usize,
7429            depth: fidl::encoding::Depth,
7430        ) -> fidl::Result<()> {
7431            encoder.debug_check_bounds::<MlmeOnPmkAvailableRequest>(offset);
7432            // Zero out padding regions. There's no need to apply masks
7433            // because the unmasked parts will be overwritten by fields.
7434            // Write the fields.
7435            self.0.encode(encoder, offset + 0, depth)?;
7436            Ok(())
7437        }
7438    }
7439
7440    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7441        for MlmeOnPmkAvailableRequest
7442    {
7443        #[inline(always)]
7444        fn new_empty() -> Self {
7445            Self { info: fidl::new_empty!(PmkInfo, D) }
7446        }
7447
7448        #[inline]
7449        unsafe fn decode(
7450            &mut self,
7451            decoder: &mut fidl::encoding::Decoder<'_, D>,
7452            offset: usize,
7453            _depth: fidl::encoding::Depth,
7454        ) -> fidl::Result<()> {
7455            decoder.debug_check_bounds::<Self>(offset);
7456            // Verify that padding bytes are zero.
7457            fidl::decode!(PmkInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
7458            Ok(())
7459        }
7460    }
7461
7462    impl fidl::encoding::ValueTypeMarker for MlmeOnSaeFrameRxRequest {
7463        type Borrowed<'a> = &'a Self;
7464        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7465            value
7466        }
7467    }
7468
7469    unsafe impl fidl::encoding::TypeMarker for MlmeOnSaeFrameRxRequest {
7470        type Owned = Self;
7471
7472        #[inline(always)]
7473        fn inline_align(_context: fidl::encoding::Context) -> usize {
7474            8
7475        }
7476
7477        #[inline(always)]
7478        fn inline_size(_context: fidl::encoding::Context) -> usize {
7479            32
7480        }
7481    }
7482
7483    unsafe impl<D: fidl::encoding::ResourceDialect>
7484        fidl::encoding::Encode<MlmeOnSaeFrameRxRequest, D> for &MlmeOnSaeFrameRxRequest
7485    {
7486        #[inline]
7487        unsafe fn encode(
7488            self,
7489            encoder: &mut fidl::encoding::Encoder<'_, D>,
7490            offset: usize,
7491            _depth: fidl::encoding::Depth,
7492        ) -> fidl::Result<()> {
7493            encoder.debug_check_bounds::<MlmeOnSaeFrameRxRequest>(offset);
7494            // Delegate to tuple encoding.
7495            fidl::encoding::Encode::<MlmeOnSaeFrameRxRequest, D>::encode(
7496                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
7497                encoder,
7498                offset,
7499                _depth,
7500            )
7501        }
7502    }
7503    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
7504        fidl::encoding::Encode<MlmeOnSaeFrameRxRequest, D> for (T0,)
7505    {
7506        #[inline]
7507        unsafe fn encode(
7508            self,
7509            encoder: &mut fidl::encoding::Encoder<'_, D>,
7510            offset: usize,
7511            depth: fidl::encoding::Depth,
7512        ) -> fidl::Result<()> {
7513            encoder.debug_check_bounds::<MlmeOnSaeFrameRxRequest>(offset);
7514            // Zero out padding regions. There's no need to apply masks
7515            // because the unmasked parts will be overwritten by fields.
7516            // Write the fields.
7517            self.0.encode(encoder, offset + 0, depth)?;
7518            Ok(())
7519        }
7520    }
7521
7522    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7523        for MlmeOnSaeFrameRxRequest
7524    {
7525        #[inline(always)]
7526        fn new_empty() -> Self {
7527            Self { frame: fidl::new_empty!(SaeFrame, D) }
7528        }
7529
7530        #[inline]
7531        unsafe fn decode(
7532            &mut self,
7533            decoder: &mut fidl::encoding::Decoder<'_, D>,
7534            offset: usize,
7535            _depth: fidl::encoding::Depth,
7536        ) -> fidl::Result<()> {
7537            decoder.debug_check_bounds::<Self>(offset);
7538            // Verify that padding bytes are zero.
7539            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
7540            Ok(())
7541        }
7542    }
7543
7544    impl fidl::encoding::ValueTypeMarker for MlmeOnSaeHandshakeIndRequest {
7545        type Borrowed<'a> = &'a Self;
7546        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7547            value
7548        }
7549    }
7550
7551    unsafe impl fidl::encoding::TypeMarker for MlmeOnSaeHandshakeIndRequest {
7552        type Owned = Self;
7553
7554        #[inline(always)]
7555        fn inline_align(_context: fidl::encoding::Context) -> usize {
7556            1
7557        }
7558
7559        #[inline(always)]
7560        fn inline_size(_context: fidl::encoding::Context) -> usize {
7561            6
7562        }
7563        #[inline(always)]
7564        fn encode_is_copy() -> bool {
7565            true
7566        }
7567
7568        #[inline(always)]
7569        fn decode_is_copy() -> bool {
7570            true
7571        }
7572    }
7573
7574    unsafe impl<D: fidl::encoding::ResourceDialect>
7575        fidl::encoding::Encode<MlmeOnSaeHandshakeIndRequest, D> for &MlmeOnSaeHandshakeIndRequest
7576    {
7577        #[inline]
7578        unsafe fn encode(
7579            self,
7580            encoder: &mut fidl::encoding::Encoder<'_, D>,
7581            offset: usize,
7582            _depth: fidl::encoding::Depth,
7583        ) -> fidl::Result<()> {
7584            encoder.debug_check_bounds::<MlmeOnSaeHandshakeIndRequest>(offset);
7585            unsafe {
7586                // Copy the object into the buffer.
7587                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7588                (buf_ptr as *mut MlmeOnSaeHandshakeIndRequest)
7589                    .write_unaligned((self as *const MlmeOnSaeHandshakeIndRequest).read());
7590                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7591                // done second because the memcpy will write garbage to these bytes.
7592            }
7593            Ok(())
7594        }
7595    }
7596    unsafe impl<
7597        D: fidl::encoding::ResourceDialect,
7598        T0: fidl::encoding::Encode<SaeHandshakeIndication, D>,
7599    > fidl::encoding::Encode<MlmeOnSaeHandshakeIndRequest, D> for (T0,)
7600    {
7601        #[inline]
7602        unsafe fn encode(
7603            self,
7604            encoder: &mut fidl::encoding::Encoder<'_, D>,
7605            offset: usize,
7606            depth: fidl::encoding::Depth,
7607        ) -> fidl::Result<()> {
7608            encoder.debug_check_bounds::<MlmeOnSaeHandshakeIndRequest>(offset);
7609            // Zero out padding regions. There's no need to apply masks
7610            // because the unmasked parts will be overwritten by fields.
7611            // Write the fields.
7612            self.0.encode(encoder, offset + 0, depth)?;
7613            Ok(())
7614        }
7615    }
7616
7617    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7618        for MlmeOnSaeHandshakeIndRequest
7619    {
7620        #[inline(always)]
7621        fn new_empty() -> Self {
7622            Self { ind: fidl::new_empty!(SaeHandshakeIndication, D) }
7623        }
7624
7625        #[inline]
7626        unsafe fn decode(
7627            &mut self,
7628            decoder: &mut fidl::encoding::Decoder<'_, D>,
7629            offset: usize,
7630            _depth: fidl::encoding::Depth,
7631        ) -> fidl::Result<()> {
7632            decoder.debug_check_bounds::<Self>(offset);
7633            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7634            // Verify that padding bytes are zero.
7635            // Copy from the buffer into the object.
7636            unsafe {
7637                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
7638            }
7639            Ok(())
7640        }
7641    }
7642
7643    impl fidl::encoding::ValueTypeMarker for MlmeOnScanEndRequest {
7644        type Borrowed<'a> = &'a Self;
7645        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7646            value
7647        }
7648    }
7649
7650    unsafe impl fidl::encoding::TypeMarker for MlmeOnScanEndRequest {
7651        type Owned = Self;
7652
7653        #[inline(always)]
7654        fn inline_align(_context: fidl::encoding::Context) -> usize {
7655            8
7656        }
7657
7658        #[inline(always)]
7659        fn inline_size(_context: fidl::encoding::Context) -> usize {
7660            16
7661        }
7662    }
7663
7664    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeOnScanEndRequest, D>
7665        for &MlmeOnScanEndRequest
7666    {
7667        #[inline]
7668        unsafe fn encode(
7669            self,
7670            encoder: &mut fidl::encoding::Encoder<'_, D>,
7671            offset: usize,
7672            _depth: fidl::encoding::Depth,
7673        ) -> fidl::Result<()> {
7674            encoder.debug_check_bounds::<MlmeOnScanEndRequest>(offset);
7675            // Delegate to tuple encoding.
7676            fidl::encoding::Encode::<MlmeOnScanEndRequest, D>::encode(
7677                (<ScanEnd as fidl::encoding::ValueTypeMarker>::borrow(&self.end),),
7678                encoder,
7679                offset,
7680                _depth,
7681            )
7682        }
7683    }
7684    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanEnd, D>>
7685        fidl::encoding::Encode<MlmeOnScanEndRequest, D> for (T0,)
7686    {
7687        #[inline]
7688        unsafe fn encode(
7689            self,
7690            encoder: &mut fidl::encoding::Encoder<'_, D>,
7691            offset: usize,
7692            depth: fidl::encoding::Depth,
7693        ) -> fidl::Result<()> {
7694            encoder.debug_check_bounds::<MlmeOnScanEndRequest>(offset);
7695            // Zero out padding regions. There's no need to apply masks
7696            // because the unmasked parts will be overwritten by fields.
7697            // Write the fields.
7698            self.0.encode(encoder, offset + 0, depth)?;
7699            Ok(())
7700        }
7701    }
7702
7703    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeOnScanEndRequest {
7704        #[inline(always)]
7705        fn new_empty() -> Self {
7706            Self { end: fidl::new_empty!(ScanEnd, D) }
7707        }
7708
7709        #[inline]
7710        unsafe fn decode(
7711            &mut self,
7712            decoder: &mut fidl::encoding::Decoder<'_, D>,
7713            offset: usize,
7714            _depth: fidl::encoding::Depth,
7715        ) -> fidl::Result<()> {
7716            decoder.debug_check_bounds::<Self>(offset);
7717            // Verify that padding bytes are zero.
7718            fidl::decode!(ScanEnd, D, &mut self.end, decoder, offset + 0, _depth)?;
7719            Ok(())
7720        }
7721    }
7722
7723    impl fidl::encoding::ValueTypeMarker for MlmeOnScanResultRequest {
7724        type Borrowed<'a> = &'a Self;
7725        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7726            value
7727        }
7728    }
7729
7730    unsafe impl fidl::encoding::TypeMarker for MlmeOnScanResultRequest {
7731        type Owned = Self;
7732
7733        #[inline(always)]
7734        fn inline_align(_context: fidl::encoding::Context) -> usize {
7735            8
7736        }
7737
7738        #[inline(always)]
7739        fn inline_size(_context: fidl::encoding::Context) -> usize {
7740            64
7741        }
7742    }
7743
7744    unsafe impl<D: fidl::encoding::ResourceDialect>
7745        fidl::encoding::Encode<MlmeOnScanResultRequest, D> for &MlmeOnScanResultRequest
7746    {
7747        #[inline]
7748        unsafe fn encode(
7749            self,
7750            encoder: &mut fidl::encoding::Encoder<'_, D>,
7751            offset: usize,
7752            _depth: fidl::encoding::Depth,
7753        ) -> fidl::Result<()> {
7754            encoder.debug_check_bounds::<MlmeOnScanResultRequest>(offset);
7755            // Delegate to tuple encoding.
7756            fidl::encoding::Encode::<MlmeOnScanResultRequest, D>::encode(
7757                (<ScanResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),),
7758                encoder,
7759                offset,
7760                _depth,
7761            )
7762        }
7763    }
7764    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanResult, D>>
7765        fidl::encoding::Encode<MlmeOnScanResultRequest, D> for (T0,)
7766    {
7767        #[inline]
7768        unsafe fn encode(
7769            self,
7770            encoder: &mut fidl::encoding::Encoder<'_, D>,
7771            offset: usize,
7772            depth: fidl::encoding::Depth,
7773        ) -> fidl::Result<()> {
7774            encoder.debug_check_bounds::<MlmeOnScanResultRequest>(offset);
7775            // Zero out padding regions. There's no need to apply masks
7776            // because the unmasked parts will be overwritten by fields.
7777            // Write the fields.
7778            self.0.encode(encoder, offset + 0, depth)?;
7779            Ok(())
7780        }
7781    }
7782
7783    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7784        for MlmeOnScanResultRequest
7785    {
7786        #[inline(always)]
7787        fn new_empty() -> Self {
7788            Self { result: fidl::new_empty!(ScanResult, D) }
7789        }
7790
7791        #[inline]
7792        unsafe fn decode(
7793            &mut self,
7794            decoder: &mut fidl::encoding::Decoder<'_, D>,
7795            offset: usize,
7796            _depth: fidl::encoding::Depth,
7797        ) -> fidl::Result<()> {
7798            decoder.debug_check_bounds::<Self>(offset);
7799            // Verify that padding bytes are zero.
7800            fidl::decode!(ScanResult, D, &mut self.result, decoder, offset + 0, _depth)?;
7801            Ok(())
7802        }
7803    }
7804
7805    impl fidl::encoding::ValueTypeMarker for MlmeOnScheduledScanMatchesAvailableRequest {
7806        type Borrowed<'a> = &'a Self;
7807        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7808            value
7809        }
7810    }
7811
7812    unsafe impl fidl::encoding::TypeMarker for MlmeOnScheduledScanMatchesAvailableRequest {
7813        type Owned = Self;
7814
7815        #[inline(always)]
7816        fn inline_align(_context: fidl::encoding::Context) -> usize {
7817            8
7818        }
7819
7820        #[inline(always)]
7821        fn inline_size(_context: fidl::encoding::Context) -> usize {
7822            8
7823        }
7824        #[inline(always)]
7825        fn encode_is_copy() -> bool {
7826            true
7827        }
7828
7829        #[inline(always)]
7830        fn decode_is_copy() -> bool {
7831            true
7832        }
7833    }
7834
7835    unsafe impl<D: fidl::encoding::ResourceDialect>
7836        fidl::encoding::Encode<MlmeOnScheduledScanMatchesAvailableRequest, D>
7837        for &MlmeOnScheduledScanMatchesAvailableRequest
7838    {
7839        #[inline]
7840        unsafe fn encode(
7841            self,
7842            encoder: &mut fidl::encoding::Encoder<'_, D>,
7843            offset: usize,
7844            _depth: fidl::encoding::Depth,
7845        ) -> fidl::Result<()> {
7846            encoder.debug_check_bounds::<MlmeOnScheduledScanMatchesAvailableRequest>(offset);
7847            unsafe {
7848                // Copy the object into the buffer.
7849                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7850                (buf_ptr as *mut MlmeOnScheduledScanMatchesAvailableRequest).write_unaligned(
7851                    (self as *const MlmeOnScheduledScanMatchesAvailableRequest).read(),
7852                );
7853                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7854                // done second because the memcpy will write garbage to these bytes.
7855            }
7856            Ok(())
7857        }
7858    }
7859    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
7860        fidl::encoding::Encode<MlmeOnScheduledScanMatchesAvailableRequest, D> for (T0,)
7861    {
7862        #[inline]
7863        unsafe fn encode(
7864            self,
7865            encoder: &mut fidl::encoding::Encoder<'_, D>,
7866            offset: usize,
7867            depth: fidl::encoding::Depth,
7868        ) -> fidl::Result<()> {
7869            encoder.debug_check_bounds::<MlmeOnScheduledScanMatchesAvailableRequest>(offset);
7870            // Zero out padding regions. There's no need to apply masks
7871            // because the unmasked parts will be overwritten by fields.
7872            // Write the fields.
7873            self.0.encode(encoder, offset + 0, depth)?;
7874            Ok(())
7875        }
7876    }
7877
7878    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7879        for MlmeOnScheduledScanMatchesAvailableRequest
7880    {
7881        #[inline(always)]
7882        fn new_empty() -> Self {
7883            Self { txn_id: fidl::new_empty!(u64, D) }
7884        }
7885
7886        #[inline]
7887        unsafe fn decode(
7888            &mut self,
7889            decoder: &mut fidl::encoding::Decoder<'_, D>,
7890            offset: usize,
7891            _depth: fidl::encoding::Depth,
7892        ) -> fidl::Result<()> {
7893            decoder.debug_check_bounds::<Self>(offset);
7894            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7895            // Verify that padding bytes are zero.
7896            // Copy from the buffer into the object.
7897            unsafe {
7898                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
7899            }
7900            Ok(())
7901        }
7902    }
7903
7904    impl fidl::encoding::ValueTypeMarker for MlmeOnScheduledScanStoppedByFirmwareRequest {
7905        type Borrowed<'a> = &'a Self;
7906        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7907            value
7908        }
7909    }
7910
7911    unsafe impl fidl::encoding::TypeMarker for MlmeOnScheduledScanStoppedByFirmwareRequest {
7912        type Owned = Self;
7913
7914        #[inline(always)]
7915        fn inline_align(_context: fidl::encoding::Context) -> usize {
7916            8
7917        }
7918
7919        #[inline(always)]
7920        fn inline_size(_context: fidl::encoding::Context) -> usize {
7921            8
7922        }
7923        #[inline(always)]
7924        fn encode_is_copy() -> bool {
7925            true
7926        }
7927
7928        #[inline(always)]
7929        fn decode_is_copy() -> bool {
7930            true
7931        }
7932    }
7933
7934    unsafe impl<D: fidl::encoding::ResourceDialect>
7935        fidl::encoding::Encode<MlmeOnScheduledScanStoppedByFirmwareRequest, D>
7936        for &MlmeOnScheduledScanStoppedByFirmwareRequest
7937    {
7938        #[inline]
7939        unsafe fn encode(
7940            self,
7941            encoder: &mut fidl::encoding::Encoder<'_, D>,
7942            offset: usize,
7943            _depth: fidl::encoding::Depth,
7944        ) -> fidl::Result<()> {
7945            encoder.debug_check_bounds::<MlmeOnScheduledScanStoppedByFirmwareRequest>(offset);
7946            unsafe {
7947                // Copy the object into the buffer.
7948                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7949                (buf_ptr as *mut MlmeOnScheduledScanStoppedByFirmwareRequest).write_unaligned(
7950                    (self as *const MlmeOnScheduledScanStoppedByFirmwareRequest).read(),
7951                );
7952                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7953                // done second because the memcpy will write garbage to these bytes.
7954            }
7955            Ok(())
7956        }
7957    }
7958    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
7959        fidl::encoding::Encode<MlmeOnScheduledScanStoppedByFirmwareRequest, D> for (T0,)
7960    {
7961        #[inline]
7962        unsafe fn encode(
7963            self,
7964            encoder: &mut fidl::encoding::Encoder<'_, D>,
7965            offset: usize,
7966            depth: fidl::encoding::Depth,
7967        ) -> fidl::Result<()> {
7968            encoder.debug_check_bounds::<MlmeOnScheduledScanStoppedByFirmwareRequest>(offset);
7969            // Zero out padding regions. There's no need to apply masks
7970            // because the unmasked parts will be overwritten by fields.
7971            // Write the fields.
7972            self.0.encode(encoder, offset + 0, depth)?;
7973            Ok(())
7974        }
7975    }
7976
7977    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7978        for MlmeOnScheduledScanStoppedByFirmwareRequest
7979    {
7980        #[inline(always)]
7981        fn new_empty() -> Self {
7982            Self { txn_id: fidl::new_empty!(u64, D) }
7983        }
7984
7985        #[inline]
7986        unsafe fn decode(
7987            &mut self,
7988            decoder: &mut fidl::encoding::Decoder<'_, D>,
7989            offset: usize,
7990            _depth: fidl::encoding::Depth,
7991        ) -> fidl::Result<()> {
7992            decoder.debug_check_bounds::<Self>(offset);
7993            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7994            // Verify that padding bytes are zero.
7995            // Copy from the buffer into the object.
7996            unsafe {
7997                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
7998            }
7999            Ok(())
8000        }
8001    }
8002
8003    impl fidl::encoding::ValueTypeMarker for MlmeOnWmmStatusRespRequest {
8004        type Borrowed<'a> = &'a Self;
8005        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8006            value
8007        }
8008    }
8009
8010    unsafe impl fidl::encoding::TypeMarker for MlmeOnWmmStatusRespRequest {
8011        type Owned = Self;
8012
8013        #[inline(always)]
8014        fn inline_align(_context: fidl::encoding::Context) -> usize {
8015            4
8016        }
8017
8018        #[inline(always)]
8019        fn inline_size(_context: fidl::encoding::Context) -> usize {
8020            40
8021        }
8022    }
8023
8024    unsafe impl<D: fidl::encoding::ResourceDialect>
8025        fidl::encoding::Encode<MlmeOnWmmStatusRespRequest, D> for &MlmeOnWmmStatusRespRequest
8026    {
8027        #[inline]
8028        unsafe fn encode(
8029            self,
8030            encoder: &mut fidl::encoding::Encoder<'_, D>,
8031            offset: usize,
8032            _depth: fidl::encoding::Depth,
8033        ) -> fidl::Result<()> {
8034            encoder.debug_check_bounds::<MlmeOnWmmStatusRespRequest>(offset);
8035            // Delegate to tuple encoding.
8036            fidl::encoding::Encode::<MlmeOnWmmStatusRespRequest, D>::encode(
8037                (
8038                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
8039                    <fidl_fuchsia_wlan_internal_common::WmmStatusResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
8040                ),
8041                encoder, offset, _depth
8042            )
8043        }
8044    }
8045    unsafe impl<
8046        D: fidl::encoding::ResourceDialect,
8047        T0: fidl::encoding::Encode<i32, D>,
8048        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_internal_common::WmmStatusResponse, D>,
8049    > fidl::encoding::Encode<MlmeOnWmmStatusRespRequest, D> for (T0, T1)
8050    {
8051        #[inline]
8052        unsafe fn encode(
8053            self,
8054            encoder: &mut fidl::encoding::Encoder<'_, D>,
8055            offset: usize,
8056            depth: fidl::encoding::Depth,
8057        ) -> fidl::Result<()> {
8058            encoder.debug_check_bounds::<MlmeOnWmmStatusRespRequest>(offset);
8059            // Zero out padding regions. There's no need to apply masks
8060            // because the unmasked parts will be overwritten by fields.
8061            unsafe {
8062                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(36);
8063                (ptr as *mut u32).write_unaligned(0);
8064            }
8065            // Write the fields.
8066            self.0.encode(encoder, offset + 0, depth)?;
8067            self.1.encode(encoder, offset + 4, depth)?;
8068            Ok(())
8069        }
8070    }
8071
8072    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8073        for MlmeOnWmmStatusRespRequest
8074    {
8075        #[inline(always)]
8076        fn new_empty() -> Self {
8077            Self {
8078                status: fidl::new_empty!(i32, D),
8079                resp: fidl::new_empty!(fidl_fuchsia_wlan_internal_common::WmmStatusResponse, D),
8080            }
8081        }
8082
8083        #[inline]
8084        unsafe fn decode(
8085            &mut self,
8086            decoder: &mut fidl::encoding::Decoder<'_, D>,
8087            offset: usize,
8088            _depth: fidl::encoding::Depth,
8089        ) -> fidl::Result<()> {
8090            decoder.debug_check_bounds::<Self>(offset);
8091            // Verify that padding bytes are zero.
8092            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(36) };
8093            let padval = unsafe { (ptr as *const u32).read_unaligned() };
8094            let mask = 0xffff0000u32;
8095            let maskedval = padval & mask;
8096            if maskedval != 0 {
8097                return Err(fidl::Error::NonZeroPadding {
8098                    padding_start: offset + 36 + ((mask as u64).trailing_zeros() / 8) as usize,
8099                });
8100            }
8101            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
8102            fidl::decode!(
8103                fidl_fuchsia_wlan_internal_common::WmmStatusResponse,
8104                D,
8105                &mut self.resp,
8106                decoder,
8107                offset + 4,
8108                _depth
8109            )?;
8110            Ok(())
8111        }
8112    }
8113
8114    impl fidl::encoding::ValueTypeMarker for MlmeQueryDeviceInfoResponse {
8115        type Borrowed<'a> = &'a Self;
8116        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8117            value
8118        }
8119    }
8120
8121    unsafe impl fidl::encoding::TypeMarker for MlmeQueryDeviceInfoResponse {
8122        type Owned = Self;
8123
8124        #[inline(always)]
8125        fn inline_align(_context: fidl::encoding::Context) -> usize {
8126            8
8127        }
8128
8129        #[inline(always)]
8130        fn inline_size(_context: fidl::encoding::Context) -> usize {
8131            40
8132        }
8133    }
8134
8135    unsafe impl<D: fidl::encoding::ResourceDialect>
8136        fidl::encoding::Encode<MlmeQueryDeviceInfoResponse, D> for &MlmeQueryDeviceInfoResponse
8137    {
8138        #[inline]
8139        unsafe fn encode(
8140            self,
8141            encoder: &mut fidl::encoding::Encoder<'_, D>,
8142            offset: usize,
8143            _depth: fidl::encoding::Depth,
8144        ) -> fidl::Result<()> {
8145            encoder.debug_check_bounds::<MlmeQueryDeviceInfoResponse>(offset);
8146            // Delegate to tuple encoding.
8147            fidl::encoding::Encode::<MlmeQueryDeviceInfoResponse, D>::encode(
8148                (<DeviceInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
8149                encoder,
8150                offset,
8151                _depth,
8152            )
8153        }
8154    }
8155    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<DeviceInfo, D>>
8156        fidl::encoding::Encode<MlmeQueryDeviceInfoResponse, D> for (T0,)
8157    {
8158        #[inline]
8159        unsafe fn encode(
8160            self,
8161            encoder: &mut fidl::encoding::Encoder<'_, D>,
8162            offset: usize,
8163            depth: fidl::encoding::Depth,
8164        ) -> fidl::Result<()> {
8165            encoder.debug_check_bounds::<MlmeQueryDeviceInfoResponse>(offset);
8166            // Zero out padding regions. There's no need to apply masks
8167            // because the unmasked parts will be overwritten by fields.
8168            // Write the fields.
8169            self.0.encode(encoder, offset + 0, depth)?;
8170            Ok(())
8171        }
8172    }
8173
8174    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8175        for MlmeQueryDeviceInfoResponse
8176    {
8177        #[inline(always)]
8178        fn new_empty() -> Self {
8179            Self { info: fidl::new_empty!(DeviceInfo, D) }
8180        }
8181
8182        #[inline]
8183        unsafe fn decode(
8184            &mut self,
8185            decoder: &mut fidl::encoding::Decoder<'_, D>,
8186            offset: usize,
8187            _depth: fidl::encoding::Depth,
8188        ) -> fidl::Result<()> {
8189            decoder.debug_check_bounds::<Self>(offset);
8190            // Verify that padding bytes are zero.
8191            fidl::decode!(DeviceInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
8192            Ok(())
8193        }
8194    }
8195
8196    impl fidl::encoding::ValueTypeMarker for MlmeReconnectReqRequest {
8197        type Borrowed<'a> = &'a Self;
8198        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8199            value
8200        }
8201    }
8202
8203    unsafe impl fidl::encoding::TypeMarker for MlmeReconnectReqRequest {
8204        type Owned = Self;
8205
8206        #[inline(always)]
8207        fn inline_align(_context: fidl::encoding::Context) -> usize {
8208            1
8209        }
8210
8211        #[inline(always)]
8212        fn inline_size(_context: fidl::encoding::Context) -> usize {
8213            6
8214        }
8215        #[inline(always)]
8216        fn encode_is_copy() -> bool {
8217            true
8218        }
8219
8220        #[inline(always)]
8221        fn decode_is_copy() -> bool {
8222            true
8223        }
8224    }
8225
8226    unsafe impl<D: fidl::encoding::ResourceDialect>
8227        fidl::encoding::Encode<MlmeReconnectReqRequest, D> for &MlmeReconnectReqRequest
8228    {
8229        #[inline]
8230        unsafe fn encode(
8231            self,
8232            encoder: &mut fidl::encoding::Encoder<'_, D>,
8233            offset: usize,
8234            _depth: fidl::encoding::Depth,
8235        ) -> fidl::Result<()> {
8236            encoder.debug_check_bounds::<MlmeReconnectReqRequest>(offset);
8237            unsafe {
8238                // Copy the object into the buffer.
8239                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
8240                (buf_ptr as *mut MlmeReconnectReqRequest)
8241                    .write_unaligned((self as *const MlmeReconnectReqRequest).read());
8242                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
8243                // done second because the memcpy will write garbage to these bytes.
8244            }
8245            Ok(())
8246        }
8247    }
8248    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ReconnectRequest, D>>
8249        fidl::encoding::Encode<MlmeReconnectReqRequest, D> for (T0,)
8250    {
8251        #[inline]
8252        unsafe fn encode(
8253            self,
8254            encoder: &mut fidl::encoding::Encoder<'_, D>,
8255            offset: usize,
8256            depth: fidl::encoding::Depth,
8257        ) -> fidl::Result<()> {
8258            encoder.debug_check_bounds::<MlmeReconnectReqRequest>(offset);
8259            // Zero out padding regions. There's no need to apply masks
8260            // because the unmasked parts will be overwritten by fields.
8261            // Write the fields.
8262            self.0.encode(encoder, offset + 0, depth)?;
8263            Ok(())
8264        }
8265    }
8266
8267    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8268        for MlmeReconnectReqRequest
8269    {
8270        #[inline(always)]
8271        fn new_empty() -> Self {
8272            Self { req: fidl::new_empty!(ReconnectRequest, D) }
8273        }
8274
8275        #[inline]
8276        unsafe fn decode(
8277            &mut self,
8278            decoder: &mut fidl::encoding::Decoder<'_, D>,
8279            offset: usize,
8280            _depth: fidl::encoding::Depth,
8281        ) -> fidl::Result<()> {
8282            decoder.debug_check_bounds::<Self>(offset);
8283            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
8284            // Verify that padding bytes are zero.
8285            // Copy from the buffer into the object.
8286            unsafe {
8287                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
8288            }
8289            Ok(())
8290        }
8291    }
8292
8293    impl fidl::encoding::ValueTypeMarker for MlmeRelayCapturedFrameRequest {
8294        type Borrowed<'a> = &'a Self;
8295        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8296            value
8297        }
8298    }
8299
8300    unsafe impl fidl::encoding::TypeMarker for MlmeRelayCapturedFrameRequest {
8301        type Owned = Self;
8302
8303        #[inline(always)]
8304        fn inline_align(_context: fidl::encoding::Context) -> usize {
8305            8
8306        }
8307
8308        #[inline(always)]
8309        fn inline_size(_context: fidl::encoding::Context) -> usize {
8310            16
8311        }
8312    }
8313
8314    unsafe impl<D: fidl::encoding::ResourceDialect>
8315        fidl::encoding::Encode<MlmeRelayCapturedFrameRequest, D>
8316        for &MlmeRelayCapturedFrameRequest
8317    {
8318        #[inline]
8319        unsafe fn encode(
8320            self,
8321            encoder: &mut fidl::encoding::Encoder<'_, D>,
8322            offset: usize,
8323            _depth: fidl::encoding::Depth,
8324        ) -> fidl::Result<()> {
8325            encoder.debug_check_bounds::<MlmeRelayCapturedFrameRequest>(offset);
8326            // Delegate to tuple encoding.
8327            fidl::encoding::Encode::<MlmeRelayCapturedFrameRequest, D>::encode(
8328                (<CapturedFrameResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),),
8329                encoder,
8330                offset,
8331                _depth,
8332            )
8333        }
8334    }
8335    unsafe impl<
8336        D: fidl::encoding::ResourceDialect,
8337        T0: fidl::encoding::Encode<CapturedFrameResult, D>,
8338    > fidl::encoding::Encode<MlmeRelayCapturedFrameRequest, D> for (T0,)
8339    {
8340        #[inline]
8341        unsafe fn encode(
8342            self,
8343            encoder: &mut fidl::encoding::Encoder<'_, D>,
8344            offset: usize,
8345            depth: fidl::encoding::Depth,
8346        ) -> fidl::Result<()> {
8347            encoder.debug_check_bounds::<MlmeRelayCapturedFrameRequest>(offset);
8348            // Zero out padding regions. There's no need to apply masks
8349            // because the unmasked parts will be overwritten by fields.
8350            // Write the fields.
8351            self.0.encode(encoder, offset + 0, depth)?;
8352            Ok(())
8353        }
8354    }
8355
8356    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8357        for MlmeRelayCapturedFrameRequest
8358    {
8359        #[inline(always)]
8360        fn new_empty() -> Self {
8361            Self { result: fidl::new_empty!(CapturedFrameResult, D) }
8362        }
8363
8364        #[inline]
8365        unsafe fn decode(
8366            &mut self,
8367            decoder: &mut fidl::encoding::Decoder<'_, D>,
8368            offset: usize,
8369            _depth: fidl::encoding::Depth,
8370        ) -> fidl::Result<()> {
8371            decoder.debug_check_bounds::<Self>(offset);
8372            // Verify that padding bytes are zero.
8373            fidl::decode!(CapturedFrameResult, D, &mut self.result, decoder, offset + 0, _depth)?;
8374            Ok(())
8375        }
8376    }
8377
8378    impl fidl::encoding::ValueTypeMarker for MlmeResetReqRequest {
8379        type Borrowed<'a> = &'a Self;
8380        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8381            value
8382        }
8383    }
8384
8385    unsafe impl fidl::encoding::TypeMarker for MlmeResetReqRequest {
8386        type Owned = Self;
8387
8388        #[inline(always)]
8389        fn inline_align(_context: fidl::encoding::Context) -> usize {
8390            1
8391        }
8392
8393        #[inline(always)]
8394        fn inline_size(_context: fidl::encoding::Context) -> usize {
8395            7
8396        }
8397    }
8398
8399    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeResetReqRequest, D>
8400        for &MlmeResetReqRequest
8401    {
8402        #[inline]
8403        unsafe fn encode(
8404            self,
8405            encoder: &mut fidl::encoding::Encoder<'_, D>,
8406            offset: usize,
8407            _depth: fidl::encoding::Depth,
8408        ) -> fidl::Result<()> {
8409            encoder.debug_check_bounds::<MlmeResetReqRequest>(offset);
8410            // Delegate to tuple encoding.
8411            fidl::encoding::Encode::<MlmeResetReqRequest, D>::encode(
8412                (<ResetRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8413                encoder,
8414                offset,
8415                _depth,
8416            )
8417        }
8418    }
8419    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ResetRequest, D>>
8420        fidl::encoding::Encode<MlmeResetReqRequest, D> for (T0,)
8421    {
8422        #[inline]
8423        unsafe fn encode(
8424            self,
8425            encoder: &mut fidl::encoding::Encoder<'_, D>,
8426            offset: usize,
8427            depth: fidl::encoding::Depth,
8428        ) -> fidl::Result<()> {
8429            encoder.debug_check_bounds::<MlmeResetReqRequest>(offset);
8430            // Zero out padding regions. There's no need to apply masks
8431            // because the unmasked parts will be overwritten by fields.
8432            // Write the fields.
8433            self.0.encode(encoder, offset + 0, depth)?;
8434            Ok(())
8435        }
8436    }
8437
8438    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeResetReqRequest {
8439        #[inline(always)]
8440        fn new_empty() -> Self {
8441            Self { req: fidl::new_empty!(ResetRequest, D) }
8442        }
8443
8444        #[inline]
8445        unsafe fn decode(
8446            &mut self,
8447            decoder: &mut fidl::encoding::Decoder<'_, D>,
8448            offset: usize,
8449            _depth: fidl::encoding::Depth,
8450        ) -> fidl::Result<()> {
8451            decoder.debug_check_bounds::<Self>(offset);
8452            // Verify that padding bytes are zero.
8453            fidl::decode!(ResetRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8454            Ok(())
8455        }
8456    }
8457
8458    impl fidl::encoding::ValueTypeMarker for MlmeRoamConfRequest {
8459        type Borrowed<'a> = &'a Self;
8460        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8461            value
8462        }
8463    }
8464
8465    unsafe impl fidl::encoding::TypeMarker for MlmeRoamConfRequest {
8466        type Owned = Self;
8467
8468        #[inline(always)]
8469        fn inline_align(_context: fidl::encoding::Context) -> usize {
8470            8
8471        }
8472
8473        #[inline(always)]
8474        fn inline_size(_context: fidl::encoding::Context) -> usize {
8475            32
8476        }
8477    }
8478
8479    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeRoamConfRequest, D>
8480        for &MlmeRoamConfRequest
8481    {
8482        #[inline]
8483        unsafe fn encode(
8484            self,
8485            encoder: &mut fidl::encoding::Encoder<'_, D>,
8486            offset: usize,
8487            _depth: fidl::encoding::Depth,
8488        ) -> fidl::Result<()> {
8489            encoder.debug_check_bounds::<MlmeRoamConfRequest>(offset);
8490            // Delegate to tuple encoding.
8491            fidl::encoding::Encode::<MlmeRoamConfRequest, D>::encode(
8492                (<RoamConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.conf),),
8493                encoder,
8494                offset,
8495                _depth,
8496            )
8497        }
8498    }
8499    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RoamConfirm, D>>
8500        fidl::encoding::Encode<MlmeRoamConfRequest, D> for (T0,)
8501    {
8502        #[inline]
8503        unsafe fn encode(
8504            self,
8505            encoder: &mut fidl::encoding::Encoder<'_, D>,
8506            offset: usize,
8507            depth: fidl::encoding::Depth,
8508        ) -> fidl::Result<()> {
8509            encoder.debug_check_bounds::<MlmeRoamConfRequest>(offset);
8510            // Zero out padding regions. There's no need to apply masks
8511            // because the unmasked parts will be overwritten by fields.
8512            // Write the fields.
8513            self.0.encode(encoder, offset + 0, depth)?;
8514            Ok(())
8515        }
8516    }
8517
8518    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeRoamConfRequest {
8519        #[inline(always)]
8520        fn new_empty() -> Self {
8521            Self { conf: fidl::new_empty!(RoamConfirm, D) }
8522        }
8523
8524        #[inline]
8525        unsafe fn decode(
8526            &mut self,
8527            decoder: &mut fidl::encoding::Decoder<'_, D>,
8528            offset: usize,
8529            _depth: fidl::encoding::Depth,
8530        ) -> fidl::Result<()> {
8531            decoder.debug_check_bounds::<Self>(offset);
8532            // Verify that padding bytes are zero.
8533            fidl::decode!(RoamConfirm, D, &mut self.conf, decoder, offset + 0, _depth)?;
8534            Ok(())
8535        }
8536    }
8537
8538    impl fidl::encoding::ValueTypeMarker for MlmeRoamReqRequest {
8539        type Borrowed<'a> = &'a Self;
8540        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8541            value
8542        }
8543    }
8544
8545    unsafe impl fidl::encoding::TypeMarker for MlmeRoamReqRequest {
8546        type Owned = Self;
8547
8548        #[inline(always)]
8549        fn inline_align(_context: fidl::encoding::Context) -> usize {
8550            8
8551        }
8552
8553        #[inline(always)]
8554        fn inline_size(_context: fidl::encoding::Context) -> usize {
8555            48
8556        }
8557    }
8558
8559    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeRoamReqRequest, D>
8560        for &MlmeRoamReqRequest
8561    {
8562        #[inline]
8563        unsafe fn encode(
8564            self,
8565            encoder: &mut fidl::encoding::Encoder<'_, D>,
8566            offset: usize,
8567            _depth: fidl::encoding::Depth,
8568        ) -> fidl::Result<()> {
8569            encoder.debug_check_bounds::<MlmeRoamReqRequest>(offset);
8570            // Delegate to tuple encoding.
8571            fidl::encoding::Encode::<MlmeRoamReqRequest, D>::encode(
8572                (<RoamRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8573                encoder,
8574                offset,
8575                _depth,
8576            )
8577        }
8578    }
8579    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RoamRequest, D>>
8580        fidl::encoding::Encode<MlmeRoamReqRequest, D> for (T0,)
8581    {
8582        #[inline]
8583        unsafe fn encode(
8584            self,
8585            encoder: &mut fidl::encoding::Encoder<'_, D>,
8586            offset: usize,
8587            depth: fidl::encoding::Depth,
8588        ) -> fidl::Result<()> {
8589            encoder.debug_check_bounds::<MlmeRoamReqRequest>(offset);
8590            // Zero out padding regions. There's no need to apply masks
8591            // because the unmasked parts will be overwritten by fields.
8592            // Write the fields.
8593            self.0.encode(encoder, offset + 0, depth)?;
8594            Ok(())
8595        }
8596    }
8597
8598    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeRoamReqRequest {
8599        #[inline(always)]
8600        fn new_empty() -> Self {
8601            Self { req: fidl::new_empty!(RoamRequest, D) }
8602        }
8603
8604        #[inline]
8605        unsafe fn decode(
8606            &mut self,
8607            decoder: &mut fidl::encoding::Decoder<'_, D>,
8608            offset: usize,
8609            _depth: fidl::encoding::Depth,
8610        ) -> fidl::Result<()> {
8611            decoder.debug_check_bounds::<Self>(offset);
8612            // Verify that padding bytes are zero.
8613            fidl::decode!(RoamRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8614            Ok(())
8615        }
8616    }
8617
8618    impl fidl::encoding::ValueTypeMarker for MlmeRoamResultIndRequest {
8619        type Borrowed<'a> = &'a Self;
8620        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8621            value
8622        }
8623    }
8624
8625    unsafe impl fidl::encoding::TypeMarker for MlmeRoamResultIndRequest {
8626        type Owned = Self;
8627
8628        #[inline(always)]
8629        fn inline_align(_context: fidl::encoding::Context) -> usize {
8630            8
8631        }
8632
8633        #[inline(always)]
8634        fn inline_size(_context: fidl::encoding::Context) -> usize {
8635            32
8636        }
8637    }
8638
8639    unsafe impl<D: fidl::encoding::ResourceDialect>
8640        fidl::encoding::Encode<MlmeRoamResultIndRequest, D> for &MlmeRoamResultIndRequest
8641    {
8642        #[inline]
8643        unsafe fn encode(
8644            self,
8645            encoder: &mut fidl::encoding::Encoder<'_, D>,
8646            offset: usize,
8647            _depth: fidl::encoding::Depth,
8648        ) -> fidl::Result<()> {
8649            encoder.debug_check_bounds::<MlmeRoamResultIndRequest>(offset);
8650            // Delegate to tuple encoding.
8651            fidl::encoding::Encode::<MlmeRoamResultIndRequest, D>::encode(
8652                (<RoamResultIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
8653                encoder,
8654                offset,
8655                _depth,
8656            )
8657        }
8658    }
8659    unsafe impl<
8660        D: fidl::encoding::ResourceDialect,
8661        T0: fidl::encoding::Encode<RoamResultIndication, D>,
8662    > fidl::encoding::Encode<MlmeRoamResultIndRequest, D> for (T0,)
8663    {
8664        #[inline]
8665        unsafe fn encode(
8666            self,
8667            encoder: &mut fidl::encoding::Encoder<'_, D>,
8668            offset: usize,
8669            depth: fidl::encoding::Depth,
8670        ) -> fidl::Result<()> {
8671            encoder.debug_check_bounds::<MlmeRoamResultIndRequest>(offset);
8672            // Zero out padding regions. There's no need to apply masks
8673            // because the unmasked parts will be overwritten by fields.
8674            // Write the fields.
8675            self.0.encode(encoder, offset + 0, depth)?;
8676            Ok(())
8677        }
8678    }
8679
8680    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8681        for MlmeRoamResultIndRequest
8682    {
8683        #[inline(always)]
8684        fn new_empty() -> Self {
8685            Self { ind: fidl::new_empty!(RoamResultIndication, D) }
8686        }
8687
8688        #[inline]
8689        unsafe fn decode(
8690            &mut self,
8691            decoder: &mut fidl::encoding::Decoder<'_, D>,
8692            offset: usize,
8693            _depth: fidl::encoding::Depth,
8694        ) -> fidl::Result<()> {
8695            decoder.debug_check_bounds::<Self>(offset);
8696            // Verify that padding bytes are zero.
8697            fidl::decode!(RoamResultIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
8698            Ok(())
8699        }
8700    }
8701
8702    impl fidl::encoding::ValueTypeMarker for MlmeRoamStartIndRequest {
8703        type Borrowed<'a> = &'a Self;
8704        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8705            value
8706        }
8707    }
8708
8709    unsafe impl fidl::encoding::TypeMarker for MlmeRoamStartIndRequest {
8710        type Owned = Self;
8711
8712        #[inline(always)]
8713        fn inline_align(_context: fidl::encoding::Context) -> usize {
8714            8
8715        }
8716
8717        #[inline(always)]
8718        fn inline_size(_context: fidl::encoding::Context) -> usize {
8719            64
8720        }
8721    }
8722
8723    unsafe impl<D: fidl::encoding::ResourceDialect>
8724        fidl::encoding::Encode<MlmeRoamStartIndRequest, D> for &MlmeRoamStartIndRequest
8725    {
8726        #[inline]
8727        unsafe fn encode(
8728            self,
8729            encoder: &mut fidl::encoding::Encoder<'_, D>,
8730            offset: usize,
8731            _depth: fidl::encoding::Depth,
8732        ) -> fidl::Result<()> {
8733            encoder.debug_check_bounds::<MlmeRoamStartIndRequest>(offset);
8734            // Delegate to tuple encoding.
8735            fidl::encoding::Encode::<MlmeRoamStartIndRequest, D>::encode(
8736                (<RoamStartIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
8737                encoder,
8738                offset,
8739                _depth,
8740            )
8741        }
8742    }
8743    unsafe impl<
8744        D: fidl::encoding::ResourceDialect,
8745        T0: fidl::encoding::Encode<RoamStartIndication, D>,
8746    > fidl::encoding::Encode<MlmeRoamStartIndRequest, D> for (T0,)
8747    {
8748        #[inline]
8749        unsafe fn encode(
8750            self,
8751            encoder: &mut fidl::encoding::Encoder<'_, D>,
8752            offset: usize,
8753            depth: fidl::encoding::Depth,
8754        ) -> fidl::Result<()> {
8755            encoder.debug_check_bounds::<MlmeRoamStartIndRequest>(offset);
8756            // Zero out padding regions. There's no need to apply masks
8757            // because the unmasked parts will be overwritten by fields.
8758            // Write the fields.
8759            self.0.encode(encoder, offset + 0, depth)?;
8760            Ok(())
8761        }
8762    }
8763
8764    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8765        for MlmeRoamStartIndRequest
8766    {
8767        #[inline(always)]
8768        fn new_empty() -> Self {
8769            Self { ind: fidl::new_empty!(RoamStartIndication, D) }
8770        }
8771
8772        #[inline]
8773        unsafe fn decode(
8774            &mut self,
8775            decoder: &mut fidl::encoding::Decoder<'_, D>,
8776            offset: usize,
8777            _depth: fidl::encoding::Depth,
8778        ) -> fidl::Result<()> {
8779            decoder.debug_check_bounds::<Self>(offset);
8780            // Verify that padding bytes are zero.
8781            fidl::decode!(RoamStartIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
8782            Ok(())
8783        }
8784    }
8785
8786    impl fidl::encoding::ValueTypeMarker for MlmeSaeFrameTxRequest {
8787        type Borrowed<'a> = &'a Self;
8788        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8789            value
8790        }
8791    }
8792
8793    unsafe impl fidl::encoding::TypeMarker for MlmeSaeFrameTxRequest {
8794        type Owned = Self;
8795
8796        #[inline(always)]
8797        fn inline_align(_context: fidl::encoding::Context) -> usize {
8798            8
8799        }
8800
8801        #[inline(always)]
8802        fn inline_size(_context: fidl::encoding::Context) -> usize {
8803            32
8804        }
8805    }
8806
8807    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeSaeFrameTxRequest, D>
8808        for &MlmeSaeFrameTxRequest
8809    {
8810        #[inline]
8811        unsafe fn encode(
8812            self,
8813            encoder: &mut fidl::encoding::Encoder<'_, D>,
8814            offset: usize,
8815            _depth: fidl::encoding::Depth,
8816        ) -> fidl::Result<()> {
8817            encoder.debug_check_bounds::<MlmeSaeFrameTxRequest>(offset);
8818            // Delegate to tuple encoding.
8819            fidl::encoding::Encode::<MlmeSaeFrameTxRequest, D>::encode(
8820                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
8821                encoder,
8822                offset,
8823                _depth,
8824            )
8825        }
8826    }
8827    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
8828        fidl::encoding::Encode<MlmeSaeFrameTxRequest, D> for (T0,)
8829    {
8830        #[inline]
8831        unsafe fn encode(
8832            self,
8833            encoder: &mut fidl::encoding::Encoder<'_, D>,
8834            offset: usize,
8835            depth: fidl::encoding::Depth,
8836        ) -> fidl::Result<()> {
8837            encoder.debug_check_bounds::<MlmeSaeFrameTxRequest>(offset);
8838            // Zero out padding regions. There's no need to apply masks
8839            // because the unmasked parts will be overwritten by fields.
8840            // Write the fields.
8841            self.0.encode(encoder, offset + 0, depth)?;
8842            Ok(())
8843        }
8844    }
8845
8846    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeSaeFrameTxRequest {
8847        #[inline(always)]
8848        fn new_empty() -> Self {
8849            Self { frame: fidl::new_empty!(SaeFrame, D) }
8850        }
8851
8852        #[inline]
8853        unsafe fn decode(
8854            &mut self,
8855            decoder: &mut fidl::encoding::Decoder<'_, D>,
8856            offset: usize,
8857            _depth: fidl::encoding::Depth,
8858        ) -> fidl::Result<()> {
8859            decoder.debug_check_bounds::<Self>(offset);
8860            // Verify that padding bytes are zero.
8861            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
8862            Ok(())
8863        }
8864    }
8865
8866    impl fidl::encoding::ValueTypeMarker for MlmeSaeHandshakeRespRequest {
8867        type Borrowed<'a> = &'a Self;
8868        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8869            value
8870        }
8871    }
8872
8873    unsafe impl fidl::encoding::TypeMarker for MlmeSaeHandshakeRespRequest {
8874        type Owned = Self;
8875
8876        #[inline(always)]
8877        fn inline_align(_context: fidl::encoding::Context) -> usize {
8878            2
8879        }
8880
8881        #[inline(always)]
8882        fn inline_size(_context: fidl::encoding::Context) -> usize {
8883            8
8884        }
8885    }
8886
8887    unsafe impl<D: fidl::encoding::ResourceDialect>
8888        fidl::encoding::Encode<MlmeSaeHandshakeRespRequest, D> for &MlmeSaeHandshakeRespRequest
8889    {
8890        #[inline]
8891        unsafe fn encode(
8892            self,
8893            encoder: &mut fidl::encoding::Encoder<'_, D>,
8894            offset: usize,
8895            _depth: fidl::encoding::Depth,
8896        ) -> fidl::Result<()> {
8897            encoder.debug_check_bounds::<MlmeSaeHandshakeRespRequest>(offset);
8898            // Delegate to tuple encoding.
8899            fidl::encoding::Encode::<MlmeSaeHandshakeRespRequest, D>::encode(
8900                (<SaeHandshakeResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
8901                encoder,
8902                offset,
8903                _depth,
8904            )
8905        }
8906    }
8907    unsafe impl<
8908        D: fidl::encoding::ResourceDialect,
8909        T0: fidl::encoding::Encode<SaeHandshakeResponse, D>,
8910    > fidl::encoding::Encode<MlmeSaeHandshakeRespRequest, D> for (T0,)
8911    {
8912        #[inline]
8913        unsafe fn encode(
8914            self,
8915            encoder: &mut fidl::encoding::Encoder<'_, D>,
8916            offset: usize,
8917            depth: fidl::encoding::Depth,
8918        ) -> fidl::Result<()> {
8919            encoder.debug_check_bounds::<MlmeSaeHandshakeRespRequest>(offset);
8920            // Zero out padding regions. There's no need to apply masks
8921            // because the unmasked parts will be overwritten by fields.
8922            // Write the fields.
8923            self.0.encode(encoder, offset + 0, depth)?;
8924            Ok(())
8925        }
8926    }
8927
8928    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8929        for MlmeSaeHandshakeRespRequest
8930    {
8931        #[inline(always)]
8932        fn new_empty() -> Self {
8933            Self { resp: fidl::new_empty!(SaeHandshakeResponse, D) }
8934        }
8935
8936        #[inline]
8937        unsafe fn decode(
8938            &mut self,
8939            decoder: &mut fidl::encoding::Decoder<'_, D>,
8940            offset: usize,
8941            _depth: fidl::encoding::Depth,
8942        ) -> fidl::Result<()> {
8943            decoder.debug_check_bounds::<Self>(offset);
8944            // Verify that padding bytes are zero.
8945            fidl::decode!(SaeHandshakeResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
8946            Ok(())
8947        }
8948    }
8949
8950    impl fidl::encoding::ValueTypeMarker for MlmeSetApfPacketFilterEnabledRequest {
8951        type Borrowed<'a> = &'a Self;
8952        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8953            value
8954        }
8955    }
8956
8957    unsafe impl fidl::encoding::TypeMarker for MlmeSetApfPacketFilterEnabledRequest {
8958        type Owned = Self;
8959
8960        #[inline(always)]
8961        fn inline_align(_context: fidl::encoding::Context) -> usize {
8962            1
8963        }
8964
8965        #[inline(always)]
8966        fn inline_size(_context: fidl::encoding::Context) -> usize {
8967            1
8968        }
8969    }
8970
8971    unsafe impl<D: fidl::encoding::ResourceDialect>
8972        fidl::encoding::Encode<MlmeSetApfPacketFilterEnabledRequest, D>
8973        for &MlmeSetApfPacketFilterEnabledRequest
8974    {
8975        #[inline]
8976        unsafe fn encode(
8977            self,
8978            encoder: &mut fidl::encoding::Encoder<'_, D>,
8979            offset: usize,
8980            _depth: fidl::encoding::Depth,
8981        ) -> fidl::Result<()> {
8982            encoder.debug_check_bounds::<MlmeSetApfPacketFilterEnabledRequest>(offset);
8983            // Delegate to tuple encoding.
8984            fidl::encoding::Encode::<MlmeSetApfPacketFilterEnabledRequest, D>::encode(
8985                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enabled),),
8986                encoder,
8987                offset,
8988                _depth,
8989            )
8990        }
8991    }
8992    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
8993        fidl::encoding::Encode<MlmeSetApfPacketFilterEnabledRequest, D> for (T0,)
8994    {
8995        #[inline]
8996        unsafe fn encode(
8997            self,
8998            encoder: &mut fidl::encoding::Encoder<'_, D>,
8999            offset: usize,
9000            depth: fidl::encoding::Depth,
9001        ) -> fidl::Result<()> {
9002            encoder.debug_check_bounds::<MlmeSetApfPacketFilterEnabledRequest>(offset);
9003            // Zero out padding regions. There's no need to apply masks
9004            // because the unmasked parts will be overwritten by fields.
9005            // Write the fields.
9006            self.0.encode(encoder, offset + 0, depth)?;
9007            Ok(())
9008        }
9009    }
9010
9011    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9012        for MlmeSetApfPacketFilterEnabledRequest
9013    {
9014        #[inline(always)]
9015        fn new_empty() -> Self {
9016            Self { enabled: fidl::new_empty!(bool, D) }
9017        }
9018
9019        #[inline]
9020        unsafe fn decode(
9021            &mut self,
9022            decoder: &mut fidl::encoding::Decoder<'_, D>,
9023            offset: usize,
9024            _depth: fidl::encoding::Depth,
9025        ) -> fidl::Result<()> {
9026            decoder.debug_check_bounds::<Self>(offset);
9027            // Verify that padding bytes are zero.
9028            fidl::decode!(bool, D, &mut self.enabled, decoder, offset + 0, _depth)?;
9029            Ok(())
9030        }
9031    }
9032
9033    impl fidl::encoding::ValueTypeMarker for MlmeSetControlledPortRequest {
9034        type Borrowed<'a> = &'a Self;
9035        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9036            value
9037        }
9038    }
9039
9040    unsafe impl fidl::encoding::TypeMarker for MlmeSetControlledPortRequest {
9041        type Owned = Self;
9042
9043        #[inline(always)]
9044        fn inline_align(_context: fidl::encoding::Context) -> usize {
9045            4
9046        }
9047
9048        #[inline(always)]
9049        fn inline_size(_context: fidl::encoding::Context) -> usize {
9050            12
9051        }
9052    }
9053
9054    unsafe impl<D: fidl::encoding::ResourceDialect>
9055        fidl::encoding::Encode<MlmeSetControlledPortRequest, D> for &MlmeSetControlledPortRequest
9056    {
9057        #[inline]
9058        unsafe fn encode(
9059            self,
9060            encoder: &mut fidl::encoding::Encoder<'_, D>,
9061            offset: usize,
9062            _depth: fidl::encoding::Depth,
9063        ) -> fidl::Result<()> {
9064            encoder.debug_check_bounds::<MlmeSetControlledPortRequest>(offset);
9065            // Delegate to tuple encoding.
9066            fidl::encoding::Encode::<MlmeSetControlledPortRequest, D>::encode(
9067                (<SetControlledPortRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9068                encoder,
9069                offset,
9070                _depth,
9071            )
9072        }
9073    }
9074    unsafe impl<
9075        D: fidl::encoding::ResourceDialect,
9076        T0: fidl::encoding::Encode<SetControlledPortRequest, D>,
9077    > fidl::encoding::Encode<MlmeSetControlledPortRequest, D> for (T0,)
9078    {
9079        #[inline]
9080        unsafe fn encode(
9081            self,
9082            encoder: &mut fidl::encoding::Encoder<'_, D>,
9083            offset: usize,
9084            depth: fidl::encoding::Depth,
9085        ) -> fidl::Result<()> {
9086            encoder.debug_check_bounds::<MlmeSetControlledPortRequest>(offset);
9087            // Zero out padding regions. There's no need to apply masks
9088            // because the unmasked parts will be overwritten by fields.
9089            // Write the fields.
9090            self.0.encode(encoder, offset + 0, depth)?;
9091            Ok(())
9092        }
9093    }
9094
9095    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9096        for MlmeSetControlledPortRequest
9097    {
9098        #[inline(always)]
9099        fn new_empty() -> Self {
9100            Self { req: fidl::new_empty!(SetControlledPortRequest, D) }
9101        }
9102
9103        #[inline]
9104        unsafe fn decode(
9105            &mut self,
9106            decoder: &mut fidl::encoding::Decoder<'_, D>,
9107            offset: usize,
9108            _depth: fidl::encoding::Depth,
9109        ) -> fidl::Result<()> {
9110            decoder.debug_check_bounds::<Self>(offset);
9111            // Verify that padding bytes are zero.
9112            fidl::decode!(SetControlledPortRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9113            Ok(())
9114        }
9115    }
9116
9117    impl fidl::encoding::ValueTypeMarker for MlmeSetKeysConfRequest {
9118        type Borrowed<'a> = &'a Self;
9119        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9120            value
9121        }
9122    }
9123
9124    unsafe impl fidl::encoding::TypeMarker for MlmeSetKeysConfRequest {
9125        type Owned = Self;
9126
9127        #[inline(always)]
9128        fn inline_align(_context: fidl::encoding::Context) -> usize {
9129            8
9130        }
9131
9132        #[inline(always)]
9133        fn inline_size(_context: fidl::encoding::Context) -> usize {
9134            16
9135        }
9136    }
9137
9138    unsafe impl<D: fidl::encoding::ResourceDialect>
9139        fidl::encoding::Encode<MlmeSetKeysConfRequest, D> for &MlmeSetKeysConfRequest
9140    {
9141        #[inline]
9142        unsafe fn encode(
9143            self,
9144            encoder: &mut fidl::encoding::Encoder<'_, D>,
9145            offset: usize,
9146            _depth: fidl::encoding::Depth,
9147        ) -> fidl::Result<()> {
9148            encoder.debug_check_bounds::<MlmeSetKeysConfRequest>(offset);
9149            // Delegate to tuple encoding.
9150            fidl::encoding::Encode::<MlmeSetKeysConfRequest, D>::encode(
9151                (<SetKeysConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.conf),),
9152                encoder,
9153                offset,
9154                _depth,
9155            )
9156        }
9157    }
9158    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SetKeysConfirm, D>>
9159        fidl::encoding::Encode<MlmeSetKeysConfRequest, D> for (T0,)
9160    {
9161        #[inline]
9162        unsafe fn encode(
9163            self,
9164            encoder: &mut fidl::encoding::Encoder<'_, D>,
9165            offset: usize,
9166            depth: fidl::encoding::Depth,
9167        ) -> fidl::Result<()> {
9168            encoder.debug_check_bounds::<MlmeSetKeysConfRequest>(offset);
9169            // Zero out padding regions. There's no need to apply masks
9170            // because the unmasked parts will be overwritten by fields.
9171            // Write the fields.
9172            self.0.encode(encoder, offset + 0, depth)?;
9173            Ok(())
9174        }
9175    }
9176
9177    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9178        for MlmeSetKeysConfRequest
9179    {
9180        #[inline(always)]
9181        fn new_empty() -> Self {
9182            Self { conf: fidl::new_empty!(SetKeysConfirm, D) }
9183        }
9184
9185        #[inline]
9186        unsafe fn decode(
9187            &mut self,
9188            decoder: &mut fidl::encoding::Decoder<'_, D>,
9189            offset: usize,
9190            _depth: fidl::encoding::Depth,
9191        ) -> fidl::Result<()> {
9192            decoder.debug_check_bounds::<Self>(offset);
9193            // Verify that padding bytes are zero.
9194            fidl::decode!(SetKeysConfirm, D, &mut self.conf, decoder, offset + 0, _depth)?;
9195            Ok(())
9196        }
9197    }
9198
9199    impl fidl::encoding::ValueTypeMarker for MlmeSetKeysReqRequest {
9200        type Borrowed<'a> = &'a Self;
9201        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9202            value
9203        }
9204    }
9205
9206    unsafe impl fidl::encoding::TypeMarker for MlmeSetKeysReqRequest {
9207        type Owned = Self;
9208
9209        #[inline(always)]
9210        fn inline_align(_context: fidl::encoding::Context) -> usize {
9211            8
9212        }
9213
9214        #[inline(always)]
9215        fn inline_size(_context: fidl::encoding::Context) -> usize {
9216            16
9217        }
9218    }
9219
9220    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeSetKeysReqRequest, D>
9221        for &MlmeSetKeysReqRequest
9222    {
9223        #[inline]
9224        unsafe fn encode(
9225            self,
9226            encoder: &mut fidl::encoding::Encoder<'_, D>,
9227            offset: usize,
9228            _depth: fidl::encoding::Depth,
9229        ) -> fidl::Result<()> {
9230            encoder.debug_check_bounds::<MlmeSetKeysReqRequest>(offset);
9231            // Delegate to tuple encoding.
9232            fidl::encoding::Encode::<MlmeSetKeysReqRequest, D>::encode(
9233                (<SetKeysRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9234                encoder,
9235                offset,
9236                _depth,
9237            )
9238        }
9239    }
9240    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SetKeysRequest, D>>
9241        fidl::encoding::Encode<MlmeSetKeysReqRequest, D> for (T0,)
9242    {
9243        #[inline]
9244        unsafe fn encode(
9245            self,
9246            encoder: &mut fidl::encoding::Encoder<'_, D>,
9247            offset: usize,
9248            depth: fidl::encoding::Depth,
9249        ) -> fidl::Result<()> {
9250            encoder.debug_check_bounds::<MlmeSetKeysReqRequest>(offset);
9251            // Zero out padding regions. There's no need to apply masks
9252            // because the unmasked parts will be overwritten by fields.
9253            // Write the fields.
9254            self.0.encode(encoder, offset + 0, depth)?;
9255            Ok(())
9256        }
9257    }
9258
9259    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeSetKeysReqRequest {
9260        #[inline(always)]
9261        fn new_empty() -> Self {
9262            Self { req: fidl::new_empty!(SetKeysRequest, D) }
9263        }
9264
9265        #[inline]
9266        unsafe fn decode(
9267            &mut self,
9268            decoder: &mut fidl::encoding::Decoder<'_, D>,
9269            offset: usize,
9270            _depth: fidl::encoding::Depth,
9271        ) -> fidl::Result<()> {
9272            decoder.debug_check_bounds::<Self>(offset);
9273            // Verify that padding bytes are zero.
9274            fidl::decode!(SetKeysRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9275            Ok(())
9276        }
9277    }
9278
9279    impl fidl::encoding::ValueTypeMarker for MlmeSetMacAddressRequest {
9280        type Borrowed<'a> = &'a Self;
9281        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9282            value
9283        }
9284    }
9285
9286    unsafe impl fidl::encoding::TypeMarker for MlmeSetMacAddressRequest {
9287        type Owned = Self;
9288
9289        #[inline(always)]
9290        fn inline_align(_context: fidl::encoding::Context) -> usize {
9291            1
9292        }
9293
9294        #[inline(always)]
9295        fn inline_size(_context: fidl::encoding::Context) -> usize {
9296            6
9297        }
9298        #[inline(always)]
9299        fn encode_is_copy() -> bool {
9300            true
9301        }
9302
9303        #[inline(always)]
9304        fn decode_is_copy() -> bool {
9305            true
9306        }
9307    }
9308
9309    unsafe impl<D: fidl::encoding::ResourceDialect>
9310        fidl::encoding::Encode<MlmeSetMacAddressRequest, D> for &MlmeSetMacAddressRequest
9311    {
9312        #[inline]
9313        unsafe fn encode(
9314            self,
9315            encoder: &mut fidl::encoding::Encoder<'_, D>,
9316            offset: usize,
9317            _depth: fidl::encoding::Depth,
9318        ) -> fidl::Result<()> {
9319            encoder.debug_check_bounds::<MlmeSetMacAddressRequest>(offset);
9320            unsafe {
9321                // Copy the object into the buffer.
9322                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
9323                (buf_ptr as *mut MlmeSetMacAddressRequest)
9324                    .write_unaligned((self as *const MlmeSetMacAddressRequest).read());
9325                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
9326                // done second because the memcpy will write garbage to these bytes.
9327            }
9328            Ok(())
9329        }
9330    }
9331    unsafe impl<
9332        D: fidl::encoding::ResourceDialect,
9333        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
9334    > fidl::encoding::Encode<MlmeSetMacAddressRequest, D> for (T0,)
9335    {
9336        #[inline]
9337        unsafe fn encode(
9338            self,
9339            encoder: &mut fidl::encoding::Encoder<'_, D>,
9340            offset: usize,
9341            depth: fidl::encoding::Depth,
9342        ) -> fidl::Result<()> {
9343            encoder.debug_check_bounds::<MlmeSetMacAddressRequest>(offset);
9344            // Zero out padding regions. There's no need to apply masks
9345            // because the unmasked parts will be overwritten by fields.
9346            // Write the fields.
9347            self.0.encode(encoder, offset + 0, depth)?;
9348            Ok(())
9349        }
9350    }
9351
9352    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9353        for MlmeSetMacAddressRequest
9354    {
9355        #[inline(always)]
9356        fn new_empty() -> Self {
9357            Self { mac_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
9358        }
9359
9360        #[inline]
9361        unsafe fn decode(
9362            &mut self,
9363            decoder: &mut fidl::encoding::Decoder<'_, D>,
9364            offset: usize,
9365            _depth: fidl::encoding::Depth,
9366        ) -> fidl::Result<()> {
9367            decoder.debug_check_bounds::<Self>(offset);
9368            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
9369            // Verify that padding bytes are zero.
9370            // Copy from the buffer into the object.
9371            unsafe {
9372                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
9373            }
9374            Ok(())
9375        }
9376    }
9377
9378    impl fidl::encoding::ValueTypeMarker for MlmeSignalReportRequest {
9379        type Borrowed<'a> = &'a Self;
9380        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9381            value
9382        }
9383    }
9384
9385    unsafe impl fidl::encoding::TypeMarker for MlmeSignalReportRequest {
9386        type Owned = Self;
9387
9388        #[inline(always)]
9389        fn inline_align(_context: fidl::encoding::Context) -> usize {
9390            1
9391        }
9392
9393        #[inline(always)]
9394        fn inline_size(_context: fidl::encoding::Context) -> usize {
9395            2
9396        }
9397    }
9398
9399    unsafe impl<D: fidl::encoding::ResourceDialect>
9400        fidl::encoding::Encode<MlmeSignalReportRequest, D> for &MlmeSignalReportRequest
9401    {
9402        #[inline]
9403        unsafe fn encode(
9404            self,
9405            encoder: &mut fidl::encoding::Encoder<'_, D>,
9406            offset: usize,
9407            _depth: fidl::encoding::Depth,
9408        ) -> fidl::Result<()> {
9409            encoder.debug_check_bounds::<MlmeSignalReportRequest>(offset);
9410            // Delegate to tuple encoding.
9411            fidl::encoding::Encode::<MlmeSignalReportRequest, D>::encode(
9412                (
9413                    <fidl_fuchsia_wlan_internal_common::SignalReportIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),
9414                ),
9415                encoder, offset, _depth
9416            )
9417        }
9418    }
9419    unsafe impl<
9420        D: fidl::encoding::ResourceDialect,
9421        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal_common::SignalReportIndication, D>,
9422    > fidl::encoding::Encode<MlmeSignalReportRequest, D> for (T0,)
9423    {
9424        #[inline]
9425        unsafe fn encode(
9426            self,
9427            encoder: &mut fidl::encoding::Encoder<'_, D>,
9428            offset: usize,
9429            depth: fidl::encoding::Depth,
9430        ) -> fidl::Result<()> {
9431            encoder.debug_check_bounds::<MlmeSignalReportRequest>(offset);
9432            // Zero out padding regions. There's no need to apply masks
9433            // because the unmasked parts will be overwritten by fields.
9434            // Write the fields.
9435            self.0.encode(encoder, offset + 0, depth)?;
9436            Ok(())
9437        }
9438    }
9439
9440    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9441        for MlmeSignalReportRequest
9442    {
9443        #[inline(always)]
9444        fn new_empty() -> Self {
9445            Self {
9446                ind: fidl::new_empty!(fidl_fuchsia_wlan_internal_common::SignalReportIndication, D),
9447            }
9448        }
9449
9450        #[inline]
9451        unsafe fn decode(
9452            &mut self,
9453            decoder: &mut fidl::encoding::Decoder<'_, D>,
9454            offset: usize,
9455            _depth: fidl::encoding::Depth,
9456        ) -> fidl::Result<()> {
9457            decoder.debug_check_bounds::<Self>(offset);
9458            // Verify that padding bytes are zero.
9459            fidl::decode!(
9460                fidl_fuchsia_wlan_internal_common::SignalReportIndication,
9461                D,
9462                &mut self.ind,
9463                decoder,
9464                offset + 0,
9465                _depth
9466            )?;
9467            Ok(())
9468        }
9469    }
9470
9471    impl fidl::encoding::ValueTypeMarker for MlmeStartCaptureFramesRequest {
9472        type Borrowed<'a> = &'a Self;
9473        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9474            value
9475        }
9476    }
9477
9478    unsafe impl fidl::encoding::TypeMarker for MlmeStartCaptureFramesRequest {
9479        type Owned = Self;
9480
9481        #[inline(always)]
9482        fn inline_align(_context: fidl::encoding::Context) -> usize {
9483            4
9484        }
9485
9486        #[inline(always)]
9487        fn inline_size(_context: fidl::encoding::Context) -> usize {
9488            4
9489        }
9490    }
9491
9492    unsafe impl<D: fidl::encoding::ResourceDialect>
9493        fidl::encoding::Encode<MlmeStartCaptureFramesRequest, D>
9494        for &MlmeStartCaptureFramesRequest
9495    {
9496        #[inline]
9497        unsafe fn encode(
9498            self,
9499            encoder: &mut fidl::encoding::Encoder<'_, D>,
9500            offset: usize,
9501            _depth: fidl::encoding::Depth,
9502        ) -> fidl::Result<()> {
9503            encoder.debug_check_bounds::<MlmeStartCaptureFramesRequest>(offset);
9504            // Delegate to tuple encoding.
9505            fidl::encoding::Encode::<MlmeStartCaptureFramesRequest, D>::encode(
9506                (<StartCaptureFramesRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9507                encoder,
9508                offset,
9509                _depth,
9510            )
9511        }
9512    }
9513    unsafe impl<
9514        D: fidl::encoding::ResourceDialect,
9515        T0: fidl::encoding::Encode<StartCaptureFramesRequest, D>,
9516    > fidl::encoding::Encode<MlmeStartCaptureFramesRequest, D> for (T0,)
9517    {
9518        #[inline]
9519        unsafe fn encode(
9520            self,
9521            encoder: &mut fidl::encoding::Encoder<'_, D>,
9522            offset: usize,
9523            depth: fidl::encoding::Depth,
9524        ) -> fidl::Result<()> {
9525            encoder.debug_check_bounds::<MlmeStartCaptureFramesRequest>(offset);
9526            // Zero out padding regions. There's no need to apply masks
9527            // because the unmasked parts will be overwritten by fields.
9528            // Write the fields.
9529            self.0.encode(encoder, offset + 0, depth)?;
9530            Ok(())
9531        }
9532    }
9533
9534    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9535        for MlmeStartCaptureFramesRequest
9536    {
9537        #[inline(always)]
9538        fn new_empty() -> Self {
9539            Self { req: fidl::new_empty!(StartCaptureFramesRequest, D) }
9540        }
9541
9542        #[inline]
9543        unsafe fn decode(
9544            &mut self,
9545            decoder: &mut fidl::encoding::Decoder<'_, D>,
9546            offset: usize,
9547            _depth: fidl::encoding::Depth,
9548        ) -> fidl::Result<()> {
9549            decoder.debug_check_bounds::<Self>(offset);
9550            // Verify that padding bytes are zero.
9551            fidl::decode!(
9552                StartCaptureFramesRequest,
9553                D,
9554                &mut self.req,
9555                decoder,
9556                offset + 0,
9557                _depth
9558            )?;
9559            Ok(())
9560        }
9561    }
9562
9563    impl fidl::encoding::ValueTypeMarker for MlmeStartCaptureFramesResponse {
9564        type Borrowed<'a> = &'a Self;
9565        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9566            value
9567        }
9568    }
9569
9570    unsafe impl fidl::encoding::TypeMarker for MlmeStartCaptureFramesResponse {
9571        type Owned = Self;
9572
9573        #[inline(always)]
9574        fn inline_align(_context: fidl::encoding::Context) -> usize {
9575            4
9576        }
9577
9578        #[inline(always)]
9579        fn inline_size(_context: fidl::encoding::Context) -> usize {
9580            8
9581        }
9582    }
9583
9584    unsafe impl<D: fidl::encoding::ResourceDialect>
9585        fidl::encoding::Encode<MlmeStartCaptureFramesResponse, D>
9586        for &MlmeStartCaptureFramesResponse
9587    {
9588        #[inline]
9589        unsafe fn encode(
9590            self,
9591            encoder: &mut fidl::encoding::Encoder<'_, D>,
9592            offset: usize,
9593            _depth: fidl::encoding::Depth,
9594        ) -> fidl::Result<()> {
9595            encoder.debug_check_bounds::<MlmeStartCaptureFramesResponse>(offset);
9596            // Delegate to tuple encoding.
9597            fidl::encoding::Encode::<MlmeStartCaptureFramesResponse, D>::encode(
9598                (<StartCaptureFramesResponse as fidl::encoding::ValueTypeMarker>::borrow(
9599                    &self.resp,
9600                ),),
9601                encoder,
9602                offset,
9603                _depth,
9604            )
9605        }
9606    }
9607    unsafe impl<
9608        D: fidl::encoding::ResourceDialect,
9609        T0: fidl::encoding::Encode<StartCaptureFramesResponse, D>,
9610    > fidl::encoding::Encode<MlmeStartCaptureFramesResponse, D> for (T0,)
9611    {
9612        #[inline]
9613        unsafe fn encode(
9614            self,
9615            encoder: &mut fidl::encoding::Encoder<'_, D>,
9616            offset: usize,
9617            depth: fidl::encoding::Depth,
9618        ) -> fidl::Result<()> {
9619            encoder.debug_check_bounds::<MlmeStartCaptureFramesResponse>(offset);
9620            // Zero out padding regions. There's no need to apply masks
9621            // because the unmasked parts will be overwritten by fields.
9622            // Write the fields.
9623            self.0.encode(encoder, offset + 0, depth)?;
9624            Ok(())
9625        }
9626    }
9627
9628    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9629        for MlmeStartCaptureFramesResponse
9630    {
9631        #[inline(always)]
9632        fn new_empty() -> Self {
9633            Self { resp: fidl::new_empty!(StartCaptureFramesResponse, D) }
9634        }
9635
9636        #[inline]
9637        unsafe fn decode(
9638            &mut self,
9639            decoder: &mut fidl::encoding::Decoder<'_, D>,
9640            offset: usize,
9641            _depth: fidl::encoding::Depth,
9642        ) -> fidl::Result<()> {
9643            decoder.debug_check_bounds::<Self>(offset);
9644            // Verify that padding bytes are zero.
9645            fidl::decode!(
9646                StartCaptureFramesResponse,
9647                D,
9648                &mut self.resp,
9649                decoder,
9650                offset + 0,
9651                _depth
9652            )?;
9653            Ok(())
9654        }
9655    }
9656
9657    impl fidl::encoding::ValueTypeMarker for MlmeStartConfRequest {
9658        type Borrowed<'a> = &'a Self;
9659        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9660            value
9661        }
9662    }
9663
9664    unsafe impl fidl::encoding::TypeMarker for MlmeStartConfRequest {
9665        type Owned = Self;
9666
9667        #[inline(always)]
9668        fn inline_align(_context: fidl::encoding::Context) -> usize {
9669            4
9670        }
9671
9672        #[inline(always)]
9673        fn inline_size(_context: fidl::encoding::Context) -> usize {
9674            4
9675        }
9676    }
9677
9678    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartConfRequest, D>
9679        for &MlmeStartConfRequest
9680    {
9681        #[inline]
9682        unsafe fn encode(
9683            self,
9684            encoder: &mut fidl::encoding::Encoder<'_, D>,
9685            offset: usize,
9686            _depth: fidl::encoding::Depth,
9687        ) -> fidl::Result<()> {
9688            encoder.debug_check_bounds::<MlmeStartConfRequest>(offset);
9689            // Delegate to tuple encoding.
9690            fidl::encoding::Encode::<MlmeStartConfRequest, D>::encode(
9691                (<StartConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
9692                encoder,
9693                offset,
9694                _depth,
9695            )
9696        }
9697    }
9698    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartConfirm, D>>
9699        fidl::encoding::Encode<MlmeStartConfRequest, D> for (T0,)
9700    {
9701        #[inline]
9702        unsafe fn encode(
9703            self,
9704            encoder: &mut fidl::encoding::Encoder<'_, D>,
9705            offset: usize,
9706            depth: fidl::encoding::Depth,
9707        ) -> fidl::Result<()> {
9708            encoder.debug_check_bounds::<MlmeStartConfRequest>(offset);
9709            // Zero out padding regions. There's no need to apply masks
9710            // because the unmasked parts will be overwritten by fields.
9711            // Write the fields.
9712            self.0.encode(encoder, offset + 0, depth)?;
9713            Ok(())
9714        }
9715    }
9716
9717    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartConfRequest {
9718        #[inline(always)]
9719        fn new_empty() -> Self {
9720            Self { resp: fidl::new_empty!(StartConfirm, D) }
9721        }
9722
9723        #[inline]
9724        unsafe fn decode(
9725            &mut self,
9726            decoder: &mut fidl::encoding::Decoder<'_, D>,
9727            offset: usize,
9728            _depth: fidl::encoding::Depth,
9729        ) -> fidl::Result<()> {
9730            decoder.debug_check_bounds::<Self>(offset);
9731            // Verify that padding bytes are zero.
9732            fidl::decode!(StartConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
9733            Ok(())
9734        }
9735    }
9736
9737    impl fidl::encoding::ValueTypeMarker for MlmeStartReqRequest {
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 for MlmeStartReqRequest {
9745        type Owned = Self;
9746
9747        #[inline(always)]
9748        fn inline_align(_context: fidl::encoding::Context) -> usize {
9749            8
9750        }
9751
9752        #[inline(always)]
9753        fn inline_size(_context: fidl::encoding::Context) -> usize {
9754            96
9755        }
9756    }
9757
9758    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartReqRequest, D>
9759        for &MlmeStartReqRequest
9760    {
9761        #[inline]
9762        unsafe fn encode(
9763            self,
9764            encoder: &mut fidl::encoding::Encoder<'_, D>,
9765            offset: usize,
9766            _depth: fidl::encoding::Depth,
9767        ) -> fidl::Result<()> {
9768            encoder.debug_check_bounds::<MlmeStartReqRequest>(offset);
9769            // Delegate to tuple encoding.
9770            fidl::encoding::Encode::<MlmeStartReqRequest, D>::encode(
9771                (<StartRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9772                encoder,
9773                offset,
9774                _depth,
9775            )
9776        }
9777    }
9778    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartRequest, D>>
9779        fidl::encoding::Encode<MlmeStartReqRequest, D> for (T0,)
9780    {
9781        #[inline]
9782        unsafe fn encode(
9783            self,
9784            encoder: &mut fidl::encoding::Encoder<'_, D>,
9785            offset: usize,
9786            depth: fidl::encoding::Depth,
9787        ) -> fidl::Result<()> {
9788            encoder.debug_check_bounds::<MlmeStartReqRequest>(offset);
9789            // Zero out padding regions. There's no need to apply masks
9790            // because the unmasked parts will be overwritten by fields.
9791            // Write the fields.
9792            self.0.encode(encoder, offset + 0, depth)?;
9793            Ok(())
9794        }
9795    }
9796
9797    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartReqRequest {
9798        #[inline(always)]
9799        fn new_empty() -> Self {
9800            Self { req: fidl::new_empty!(StartRequest, D) }
9801        }
9802
9803        #[inline]
9804        unsafe fn decode(
9805            &mut self,
9806            decoder: &mut fidl::encoding::Decoder<'_, D>,
9807            offset: usize,
9808            _depth: fidl::encoding::Depth,
9809        ) -> fidl::Result<()> {
9810            decoder.debug_check_bounds::<Self>(offset);
9811            // Verify that padding bytes are zero.
9812            fidl::decode!(StartRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9813            Ok(())
9814        }
9815    }
9816
9817    impl fidl::encoding::ValueTypeMarker for MlmeStartScanRequest {
9818        type Borrowed<'a> = &'a Self;
9819        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9820            value
9821        }
9822    }
9823
9824    unsafe impl fidl::encoding::TypeMarker for MlmeStartScanRequest {
9825        type Owned = Self;
9826
9827        #[inline(always)]
9828        fn inline_align(_context: fidl::encoding::Context) -> usize {
9829            8
9830        }
9831
9832        #[inline(always)]
9833        fn inline_size(_context: fidl::encoding::Context) -> usize {
9834            64
9835        }
9836    }
9837
9838    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartScanRequest, D>
9839        for &MlmeStartScanRequest
9840    {
9841        #[inline]
9842        unsafe fn encode(
9843            self,
9844            encoder: &mut fidl::encoding::Encoder<'_, D>,
9845            offset: usize,
9846            _depth: fidl::encoding::Depth,
9847        ) -> fidl::Result<()> {
9848            encoder.debug_check_bounds::<MlmeStartScanRequest>(offset);
9849            // Delegate to tuple encoding.
9850            fidl::encoding::Encode::<MlmeStartScanRequest, D>::encode(
9851                (<ScanRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9852                encoder,
9853                offset,
9854                _depth,
9855            )
9856        }
9857    }
9858    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanRequest, D>>
9859        fidl::encoding::Encode<MlmeStartScanRequest, D> for (T0,)
9860    {
9861        #[inline]
9862        unsafe fn encode(
9863            self,
9864            encoder: &mut fidl::encoding::Encoder<'_, D>,
9865            offset: usize,
9866            depth: fidl::encoding::Depth,
9867        ) -> fidl::Result<()> {
9868            encoder.debug_check_bounds::<MlmeStartScanRequest>(offset);
9869            // Zero out padding regions. There's no need to apply masks
9870            // because the unmasked parts will be overwritten by fields.
9871            // Write the fields.
9872            self.0.encode(encoder, offset + 0, depth)?;
9873            Ok(())
9874        }
9875    }
9876
9877    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartScanRequest {
9878        #[inline(always)]
9879        fn new_empty() -> Self {
9880            Self { req: fidl::new_empty!(ScanRequest, D) }
9881        }
9882
9883        #[inline]
9884        unsafe fn decode(
9885            &mut self,
9886            decoder: &mut fidl::encoding::Decoder<'_, D>,
9887            offset: usize,
9888            _depth: fidl::encoding::Depth,
9889        ) -> fidl::Result<()> {
9890            decoder.debug_check_bounds::<Self>(offset);
9891            // Verify that padding bytes are zero.
9892            fidl::decode!(ScanRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9893            Ok(())
9894        }
9895    }
9896
9897    impl fidl::encoding::ValueTypeMarker for MlmeStartScheduledScanRequest {
9898        type Borrowed<'a> = &'a Self;
9899        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9900            value
9901        }
9902    }
9903
9904    unsafe impl fidl::encoding::TypeMarker for MlmeStartScheduledScanRequest {
9905        type Owned = Self;
9906
9907        #[inline(always)]
9908        fn inline_align(_context: fidl::encoding::Context) -> usize {
9909            8
9910        }
9911
9912        #[inline(always)]
9913        fn inline_size(_context: fidl::encoding::Context) -> usize {
9914            24
9915        }
9916    }
9917
9918    unsafe impl<D: fidl::encoding::ResourceDialect>
9919        fidl::encoding::Encode<MlmeStartScheduledScanRequest, D>
9920        for &MlmeStartScheduledScanRequest
9921    {
9922        #[inline]
9923        unsafe fn encode(
9924            self,
9925            encoder: &mut fidl::encoding::Encoder<'_, D>,
9926            offset: usize,
9927            _depth: fidl::encoding::Depth,
9928        ) -> fidl::Result<()> {
9929            encoder.debug_check_bounds::<MlmeStartScheduledScanRequest>(offset);
9930            // Delegate to tuple encoding.
9931            fidl::encoding::Encode::<MlmeStartScheduledScanRequest, D>::encode(
9932                (
9933                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
9934                    <fidl_fuchsia_wlan_common_common::ScheduledScanRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),
9935                ),
9936                encoder, offset, _depth
9937            )
9938        }
9939    }
9940    unsafe impl<
9941        D: fidl::encoding::ResourceDialect,
9942        T0: fidl::encoding::Encode<u64, D>,
9943        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common_common::ScheduledScanRequest, D>,
9944    > fidl::encoding::Encode<MlmeStartScheduledScanRequest, D> for (T0, T1)
9945    {
9946        #[inline]
9947        unsafe fn encode(
9948            self,
9949            encoder: &mut fidl::encoding::Encoder<'_, D>,
9950            offset: usize,
9951            depth: fidl::encoding::Depth,
9952        ) -> fidl::Result<()> {
9953            encoder.debug_check_bounds::<MlmeStartScheduledScanRequest>(offset);
9954            // Zero out padding regions. There's no need to apply masks
9955            // because the unmasked parts will be overwritten by fields.
9956            // Write the fields.
9957            self.0.encode(encoder, offset + 0, depth)?;
9958            self.1.encode(encoder, offset + 8, depth)?;
9959            Ok(())
9960        }
9961    }
9962
9963    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9964        for MlmeStartScheduledScanRequest
9965    {
9966        #[inline(always)]
9967        fn new_empty() -> Self {
9968            Self {
9969                txn_id: fidl::new_empty!(u64, D),
9970                req: fidl::new_empty!(fidl_fuchsia_wlan_common_common::ScheduledScanRequest, D),
9971            }
9972        }
9973
9974        #[inline]
9975        unsafe fn decode(
9976            &mut self,
9977            decoder: &mut fidl::encoding::Decoder<'_, D>,
9978            offset: usize,
9979            _depth: fidl::encoding::Depth,
9980        ) -> fidl::Result<()> {
9981            decoder.debug_check_bounds::<Self>(offset);
9982            // Verify that padding bytes are zero.
9983            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
9984            fidl::decode!(
9985                fidl_fuchsia_wlan_common_common::ScheduledScanRequest,
9986                D,
9987                &mut self.req,
9988                decoder,
9989                offset + 8,
9990                _depth
9991            )?;
9992            Ok(())
9993        }
9994    }
9995
9996    impl fidl::encoding::ValueTypeMarker for MlmeStopConfRequest {
9997        type Borrowed<'a> = &'a Self;
9998        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9999            value
10000        }
10001    }
10002
10003    unsafe impl fidl::encoding::TypeMarker for MlmeStopConfRequest {
10004        type Owned = Self;
10005
10006        #[inline(always)]
10007        fn inline_align(_context: fidl::encoding::Context) -> usize {
10008            4
10009        }
10010
10011        #[inline(always)]
10012        fn inline_size(_context: fidl::encoding::Context) -> usize {
10013            4
10014        }
10015    }
10016
10017    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStopConfRequest, D>
10018        for &MlmeStopConfRequest
10019    {
10020        #[inline]
10021        unsafe fn encode(
10022            self,
10023            encoder: &mut fidl::encoding::Encoder<'_, D>,
10024            offset: usize,
10025            _depth: fidl::encoding::Depth,
10026        ) -> fidl::Result<()> {
10027            encoder.debug_check_bounds::<MlmeStopConfRequest>(offset);
10028            // Delegate to tuple encoding.
10029            fidl::encoding::Encode::<MlmeStopConfRequest, D>::encode(
10030                (<StopConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
10031                encoder,
10032                offset,
10033                _depth,
10034            )
10035        }
10036    }
10037    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopConfirm, D>>
10038        fidl::encoding::Encode<MlmeStopConfRequest, D> for (T0,)
10039    {
10040        #[inline]
10041        unsafe fn encode(
10042            self,
10043            encoder: &mut fidl::encoding::Encoder<'_, D>,
10044            offset: usize,
10045            depth: fidl::encoding::Depth,
10046        ) -> fidl::Result<()> {
10047            encoder.debug_check_bounds::<MlmeStopConfRequest>(offset);
10048            // Zero out padding regions. There's no need to apply masks
10049            // because the unmasked parts will be overwritten by fields.
10050            // Write the fields.
10051            self.0.encode(encoder, offset + 0, depth)?;
10052            Ok(())
10053        }
10054    }
10055
10056    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStopConfRequest {
10057        #[inline(always)]
10058        fn new_empty() -> Self {
10059            Self { resp: fidl::new_empty!(StopConfirm, D) }
10060        }
10061
10062        #[inline]
10063        unsafe fn decode(
10064            &mut self,
10065            decoder: &mut fidl::encoding::Decoder<'_, D>,
10066            offset: usize,
10067            _depth: fidl::encoding::Depth,
10068        ) -> fidl::Result<()> {
10069            decoder.debug_check_bounds::<Self>(offset);
10070            // Verify that padding bytes are zero.
10071            fidl::decode!(StopConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
10072            Ok(())
10073        }
10074    }
10075
10076    impl fidl::encoding::ValueTypeMarker for MlmeStopReqRequest {
10077        type Borrowed<'a> = &'a Self;
10078        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10079            value
10080        }
10081    }
10082
10083    unsafe impl fidl::encoding::TypeMarker for MlmeStopReqRequest {
10084        type Owned = Self;
10085
10086        #[inline(always)]
10087        fn inline_align(_context: fidl::encoding::Context) -> usize {
10088            8
10089        }
10090
10091        #[inline(always)]
10092        fn inline_size(_context: fidl::encoding::Context) -> usize {
10093            16
10094        }
10095    }
10096
10097    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStopReqRequest, D>
10098        for &MlmeStopReqRequest
10099    {
10100        #[inline]
10101        unsafe fn encode(
10102            self,
10103            encoder: &mut fidl::encoding::Encoder<'_, D>,
10104            offset: usize,
10105            _depth: fidl::encoding::Depth,
10106        ) -> fidl::Result<()> {
10107            encoder.debug_check_bounds::<MlmeStopReqRequest>(offset);
10108            // Delegate to tuple encoding.
10109            fidl::encoding::Encode::<MlmeStopReqRequest, D>::encode(
10110                (<StopRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
10111                encoder,
10112                offset,
10113                _depth,
10114            )
10115        }
10116    }
10117    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopRequest, D>>
10118        fidl::encoding::Encode<MlmeStopReqRequest, D> for (T0,)
10119    {
10120        #[inline]
10121        unsafe fn encode(
10122            self,
10123            encoder: &mut fidl::encoding::Encoder<'_, D>,
10124            offset: usize,
10125            depth: fidl::encoding::Depth,
10126        ) -> fidl::Result<()> {
10127            encoder.debug_check_bounds::<MlmeStopReqRequest>(offset);
10128            // Zero out padding regions. There's no need to apply masks
10129            // because the unmasked parts will be overwritten by fields.
10130            // Write the fields.
10131            self.0.encode(encoder, offset + 0, depth)?;
10132            Ok(())
10133        }
10134    }
10135
10136    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStopReqRequest {
10137        #[inline(always)]
10138        fn new_empty() -> Self {
10139            Self { req: fidl::new_empty!(StopRequest, D) }
10140        }
10141
10142        #[inline]
10143        unsafe fn decode(
10144            &mut self,
10145            decoder: &mut fidl::encoding::Decoder<'_, D>,
10146            offset: usize,
10147            _depth: fidl::encoding::Depth,
10148        ) -> fidl::Result<()> {
10149            decoder.debug_check_bounds::<Self>(offset);
10150            // Verify that padding bytes are zero.
10151            fidl::decode!(StopRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
10152            Ok(())
10153        }
10154    }
10155
10156    impl fidl::encoding::ValueTypeMarker for MlmeStopScheduledScanRequest {
10157        type Borrowed<'a> = &'a Self;
10158        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10159            value
10160        }
10161    }
10162
10163    unsafe impl fidl::encoding::TypeMarker for MlmeStopScheduledScanRequest {
10164        type Owned = Self;
10165
10166        #[inline(always)]
10167        fn inline_align(_context: fidl::encoding::Context) -> usize {
10168            8
10169        }
10170
10171        #[inline(always)]
10172        fn inline_size(_context: fidl::encoding::Context) -> usize {
10173            8
10174        }
10175        #[inline(always)]
10176        fn encode_is_copy() -> bool {
10177            true
10178        }
10179
10180        #[inline(always)]
10181        fn decode_is_copy() -> bool {
10182            true
10183        }
10184    }
10185
10186    unsafe impl<D: fidl::encoding::ResourceDialect>
10187        fidl::encoding::Encode<MlmeStopScheduledScanRequest, D> for &MlmeStopScheduledScanRequest
10188    {
10189        #[inline]
10190        unsafe fn encode(
10191            self,
10192            encoder: &mut fidl::encoding::Encoder<'_, D>,
10193            offset: usize,
10194            _depth: fidl::encoding::Depth,
10195        ) -> fidl::Result<()> {
10196            encoder.debug_check_bounds::<MlmeStopScheduledScanRequest>(offset);
10197            unsafe {
10198                // Copy the object into the buffer.
10199                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
10200                (buf_ptr as *mut MlmeStopScheduledScanRequest)
10201                    .write_unaligned((self as *const MlmeStopScheduledScanRequest).read());
10202                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
10203                // done second because the memcpy will write garbage to these bytes.
10204            }
10205            Ok(())
10206        }
10207    }
10208    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
10209        fidl::encoding::Encode<MlmeStopScheduledScanRequest, D> for (T0,)
10210    {
10211        #[inline]
10212        unsafe fn encode(
10213            self,
10214            encoder: &mut fidl::encoding::Encoder<'_, D>,
10215            offset: usize,
10216            depth: fidl::encoding::Depth,
10217        ) -> fidl::Result<()> {
10218            encoder.debug_check_bounds::<MlmeStopScheduledScanRequest>(offset);
10219            // Zero out padding regions. There's no need to apply masks
10220            // because the unmasked parts will be overwritten by fields.
10221            // Write the fields.
10222            self.0.encode(encoder, offset + 0, depth)?;
10223            Ok(())
10224        }
10225    }
10226
10227    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10228        for MlmeStopScheduledScanRequest
10229    {
10230        #[inline(always)]
10231        fn new_empty() -> Self {
10232            Self { txn_id: fidl::new_empty!(u64, D) }
10233        }
10234
10235        #[inline]
10236        unsafe fn decode(
10237            &mut self,
10238            decoder: &mut fidl::encoding::Decoder<'_, D>,
10239            offset: usize,
10240            _depth: fidl::encoding::Depth,
10241        ) -> fidl::Result<()> {
10242            decoder.debug_check_bounds::<Self>(offset);
10243            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
10244            // Verify that padding bytes are zero.
10245            // Copy from the buffer into the object.
10246            unsafe {
10247                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
10248            }
10249            Ok(())
10250        }
10251    }
10252
10253    impl fidl::encoding::ValueTypeMarker for NegotiatedCapabilities {
10254        type Borrowed<'a> = &'a Self;
10255        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10256            value
10257        }
10258    }
10259
10260    unsafe impl fidl::encoding::TypeMarker for NegotiatedCapabilities {
10261        type Owned = Self;
10262
10263        #[inline(always)]
10264        fn inline_align(_context: fidl::encoding::Context) -> usize {
10265            8
10266        }
10267
10268        #[inline(always)]
10269        fn inline_size(_context: fidl::encoding::Context) -> usize {
10270            56
10271        }
10272    }
10273
10274    unsafe impl<D: fidl::encoding::ResourceDialect>
10275        fidl::encoding::Encode<NegotiatedCapabilities, D> for &NegotiatedCapabilities
10276    {
10277        #[inline]
10278        unsafe fn encode(
10279            self,
10280            encoder: &mut fidl::encoding::Encoder<'_, D>,
10281            offset: usize,
10282            _depth: fidl::encoding::Depth,
10283        ) -> fidl::Result<()> {
10284            encoder.debug_check_bounds::<NegotiatedCapabilities>(offset);
10285            // Delegate to tuple encoding.
10286            fidl::encoding::Encode::<NegotiatedCapabilities, D>::encode(
10287                (
10288                    <fidl_fuchsia_wlan_ieee80211_common::WlanChannel as fidl::encoding::ValueTypeMarker>::borrow(&self.channel),
10289                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
10290                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
10291                    <fidl::encoding::Boxed<WmmParameter> as fidl::encoding::ValueTypeMarker>::borrow(&self.wmm_param),
10292                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.ht_cap),
10293                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_cap),
10294                ),
10295                encoder, offset, _depth
10296            )
10297        }
10298    }
10299    unsafe impl<
10300        D: fidl::encoding::ResourceDialect,
10301        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::WlanChannel, D>,
10302        T1: fidl::encoding::Encode<u16, D>,
10303        T2: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
10304        T3: fidl::encoding::Encode<fidl::encoding::Boxed<WmmParameter>, D>,
10305        T4: fidl::encoding::Encode<
10306                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
10307                D,
10308            >,
10309        T5: fidl::encoding::Encode<
10310                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
10311                D,
10312            >,
10313    > fidl::encoding::Encode<NegotiatedCapabilities, D> for (T0, T1, T2, T3, T4, T5)
10314    {
10315        #[inline]
10316        unsafe fn encode(
10317            self,
10318            encoder: &mut fidl::encoding::Encoder<'_, D>,
10319            offset: usize,
10320            depth: fidl::encoding::Depth,
10321        ) -> fidl::Result<()> {
10322            encoder.debug_check_bounds::<NegotiatedCapabilities>(offset);
10323            // Zero out padding regions. There's no need to apply masks
10324            // because the unmasked parts will be overwritten by fields.
10325            unsafe {
10326                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10327                (ptr as *mut u64).write_unaligned(0);
10328            }
10329            // Write the fields.
10330            self.0.encode(encoder, offset + 0, depth)?;
10331            self.1.encode(encoder, offset + 12, depth)?;
10332            self.2.encode(encoder, offset + 16, depth)?;
10333            self.3.encode(encoder, offset + 32, depth)?;
10334            self.4.encode(encoder, offset + 40, depth)?;
10335            self.5.encode(encoder, offset + 48, depth)?;
10336            Ok(())
10337        }
10338    }
10339
10340    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10341        for NegotiatedCapabilities
10342    {
10343        #[inline(always)]
10344        fn new_empty() -> Self {
10345            Self {
10346                channel: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::WlanChannel, D),
10347                capability_info: fidl::new_empty!(u16, D),
10348                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
10349                wmm_param: fidl::new_empty!(fidl::encoding::Boxed<WmmParameter>, D),
10350                ht_cap: fidl::new_empty!(
10351                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
10352                    D
10353                ),
10354                vht_cap: fidl::new_empty!(
10355                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
10356                    D
10357                ),
10358            }
10359        }
10360
10361        #[inline]
10362        unsafe fn decode(
10363            &mut self,
10364            decoder: &mut fidl::encoding::Decoder<'_, D>,
10365            offset: usize,
10366            _depth: fidl::encoding::Depth,
10367        ) -> fidl::Result<()> {
10368            decoder.debug_check_bounds::<Self>(offset);
10369            // Verify that padding bytes are zero.
10370            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10371            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10372            let mask = 0xffff000000000000u64;
10373            let maskedval = padval & mask;
10374            if maskedval != 0 {
10375                return Err(fidl::Error::NonZeroPadding {
10376                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10377                });
10378            }
10379            fidl::decode!(
10380                fidl_fuchsia_wlan_ieee80211_common::WlanChannel,
10381                D,
10382                &mut self.channel,
10383                decoder,
10384                offset + 0,
10385                _depth
10386            )?;
10387            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 12, _depth)?;
10388            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 16, _depth)?;
10389            fidl::decode!(
10390                fidl::encoding::Boxed<WmmParameter>,
10391                D,
10392                &mut self.wmm_param,
10393                decoder,
10394                offset + 32,
10395                _depth
10396            )?;
10397            fidl::decode!(
10398                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
10399                D,
10400                &mut self.ht_cap,
10401                decoder,
10402                offset + 40,
10403                _depth
10404            )?;
10405            fidl::decode!(
10406                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
10407                D,
10408                &mut self.vht_cap,
10409                decoder,
10410                offset + 48,
10411                _depth
10412            )?;
10413            Ok(())
10414        }
10415    }
10416
10417    impl fidl::encoding::ValueTypeMarker for PmkInfo {
10418        type Borrowed<'a> = &'a Self;
10419        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10420            value
10421        }
10422    }
10423
10424    unsafe impl fidl::encoding::TypeMarker for PmkInfo {
10425        type Owned = Self;
10426
10427        #[inline(always)]
10428        fn inline_align(_context: fidl::encoding::Context) -> usize {
10429            8
10430        }
10431
10432        #[inline(always)]
10433        fn inline_size(_context: fidl::encoding::Context) -> usize {
10434            32
10435        }
10436    }
10437
10438    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PmkInfo, D> for &PmkInfo {
10439        #[inline]
10440        unsafe fn encode(
10441            self,
10442            encoder: &mut fidl::encoding::Encoder<'_, D>,
10443            offset: usize,
10444            _depth: fidl::encoding::Depth,
10445        ) -> fidl::Result<()> {
10446            encoder.debug_check_bounds::<PmkInfo>(offset);
10447            // Delegate to tuple encoding.
10448            fidl::encoding::Encode::<PmkInfo, D>::encode(
10449                (
10450                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.pmk),
10451                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.pmkid),
10452                ),
10453                encoder, offset, _depth
10454            )
10455        }
10456    }
10457    unsafe impl<
10458        D: fidl::encoding::ResourceDialect,
10459        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10460        T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10461    > fidl::encoding::Encode<PmkInfo, D> for (T0, T1)
10462    {
10463        #[inline]
10464        unsafe fn encode(
10465            self,
10466            encoder: &mut fidl::encoding::Encoder<'_, D>,
10467            offset: usize,
10468            depth: fidl::encoding::Depth,
10469        ) -> fidl::Result<()> {
10470            encoder.debug_check_bounds::<PmkInfo>(offset);
10471            // Zero out padding regions. There's no need to apply masks
10472            // because the unmasked parts will be overwritten by fields.
10473            // Write the fields.
10474            self.0.encode(encoder, offset + 0, depth)?;
10475            self.1.encode(encoder, offset + 16, depth)?;
10476            Ok(())
10477        }
10478    }
10479
10480    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PmkInfo {
10481        #[inline(always)]
10482        fn new_empty() -> Self {
10483            Self {
10484                pmk: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10485                pmkid: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10486            }
10487        }
10488
10489        #[inline]
10490        unsafe fn decode(
10491            &mut self,
10492            decoder: &mut fidl::encoding::Decoder<'_, D>,
10493            offset: usize,
10494            _depth: fidl::encoding::Depth,
10495        ) -> fidl::Result<()> {
10496            decoder.debug_check_bounds::<Self>(offset);
10497            // Verify that padding bytes are zero.
10498            fidl::decode!(
10499                fidl::encoding::UnboundedVector<u8>,
10500                D,
10501                &mut self.pmk,
10502                decoder,
10503                offset + 0,
10504                _depth
10505            )?;
10506            fidl::decode!(
10507                fidl::encoding::UnboundedVector<u8>,
10508                D,
10509                &mut self.pmkid,
10510                decoder,
10511                offset + 16,
10512                _depth
10513            )?;
10514            Ok(())
10515        }
10516    }
10517
10518    impl fidl::encoding::ValueTypeMarker for ReconnectRequest {
10519        type Borrowed<'a> = &'a Self;
10520        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10521            value
10522        }
10523    }
10524
10525    unsafe impl fidl::encoding::TypeMarker for ReconnectRequest {
10526        type Owned = Self;
10527
10528        #[inline(always)]
10529        fn inline_align(_context: fidl::encoding::Context) -> usize {
10530            1
10531        }
10532
10533        #[inline(always)]
10534        fn inline_size(_context: fidl::encoding::Context) -> usize {
10535            6
10536        }
10537        #[inline(always)]
10538        fn encode_is_copy() -> bool {
10539            true
10540        }
10541
10542        #[inline(always)]
10543        fn decode_is_copy() -> bool {
10544            true
10545        }
10546    }
10547
10548    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ReconnectRequest, D>
10549        for &ReconnectRequest
10550    {
10551        #[inline]
10552        unsafe fn encode(
10553            self,
10554            encoder: &mut fidl::encoding::Encoder<'_, D>,
10555            offset: usize,
10556            _depth: fidl::encoding::Depth,
10557        ) -> fidl::Result<()> {
10558            encoder.debug_check_bounds::<ReconnectRequest>(offset);
10559            unsafe {
10560                // Copy the object into the buffer.
10561                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
10562                (buf_ptr as *mut ReconnectRequest)
10563                    .write_unaligned((self as *const ReconnectRequest).read());
10564                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
10565                // done second because the memcpy will write garbage to these bytes.
10566            }
10567            Ok(())
10568        }
10569    }
10570    unsafe impl<
10571        D: fidl::encoding::ResourceDialect,
10572        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10573    > fidl::encoding::Encode<ReconnectRequest, D> for (T0,)
10574    {
10575        #[inline]
10576        unsafe fn encode(
10577            self,
10578            encoder: &mut fidl::encoding::Encoder<'_, D>,
10579            offset: usize,
10580            depth: fidl::encoding::Depth,
10581        ) -> fidl::Result<()> {
10582            encoder.debug_check_bounds::<ReconnectRequest>(offset);
10583            // Zero out padding regions. There's no need to apply masks
10584            // because the unmasked parts will be overwritten by fields.
10585            // Write the fields.
10586            self.0.encode(encoder, offset + 0, depth)?;
10587            Ok(())
10588        }
10589    }
10590
10591    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ReconnectRequest {
10592        #[inline(always)]
10593        fn new_empty() -> Self {
10594            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
10595        }
10596
10597        #[inline]
10598        unsafe fn decode(
10599            &mut self,
10600            decoder: &mut fidl::encoding::Decoder<'_, D>,
10601            offset: usize,
10602            _depth: fidl::encoding::Depth,
10603        ) -> fidl::Result<()> {
10604            decoder.debug_check_bounds::<Self>(offset);
10605            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
10606            // Verify that padding bytes are zero.
10607            // Copy from the buffer into the object.
10608            unsafe {
10609                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
10610            }
10611            Ok(())
10612        }
10613    }
10614
10615    impl fidl::encoding::ValueTypeMarker for ResetRequest {
10616        type Borrowed<'a> = &'a Self;
10617        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10618            value
10619        }
10620    }
10621
10622    unsafe impl fidl::encoding::TypeMarker for ResetRequest {
10623        type Owned = Self;
10624
10625        #[inline(always)]
10626        fn inline_align(_context: fidl::encoding::Context) -> usize {
10627            1
10628        }
10629
10630        #[inline(always)]
10631        fn inline_size(_context: fidl::encoding::Context) -> usize {
10632            7
10633        }
10634    }
10635
10636    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResetRequest, D>
10637        for &ResetRequest
10638    {
10639        #[inline]
10640        unsafe fn encode(
10641            self,
10642            encoder: &mut fidl::encoding::Encoder<'_, D>,
10643            offset: usize,
10644            _depth: fidl::encoding::Depth,
10645        ) -> fidl::Result<()> {
10646            encoder.debug_check_bounds::<ResetRequest>(offset);
10647            // Delegate to tuple encoding.
10648            fidl::encoding::Encode::<ResetRequest, D>::encode(
10649                (
10650                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
10651                        &self.sta_address,
10652                    ),
10653                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.set_default_mib),
10654                ),
10655                encoder,
10656                offset,
10657                _depth,
10658            )
10659        }
10660    }
10661    unsafe impl<
10662        D: fidl::encoding::ResourceDialect,
10663        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10664        T1: fidl::encoding::Encode<bool, D>,
10665    > fidl::encoding::Encode<ResetRequest, D> for (T0, T1)
10666    {
10667        #[inline]
10668        unsafe fn encode(
10669            self,
10670            encoder: &mut fidl::encoding::Encoder<'_, D>,
10671            offset: usize,
10672            depth: fidl::encoding::Depth,
10673        ) -> fidl::Result<()> {
10674            encoder.debug_check_bounds::<ResetRequest>(offset);
10675            // Zero out padding regions. There's no need to apply masks
10676            // because the unmasked parts will be overwritten by fields.
10677            // Write the fields.
10678            self.0.encode(encoder, offset + 0, depth)?;
10679            self.1.encode(encoder, offset + 6, depth)?;
10680            Ok(())
10681        }
10682    }
10683
10684    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResetRequest {
10685        #[inline(always)]
10686        fn new_empty() -> Self {
10687            Self {
10688                sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10689                set_default_mib: fidl::new_empty!(bool, D),
10690            }
10691        }
10692
10693        #[inline]
10694        unsafe fn decode(
10695            &mut self,
10696            decoder: &mut fidl::encoding::Decoder<'_, D>,
10697            offset: usize,
10698            _depth: fidl::encoding::Depth,
10699        ) -> fidl::Result<()> {
10700            decoder.debug_check_bounds::<Self>(offset);
10701            // Verify that padding bytes are zero.
10702            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.sta_address, decoder, offset + 0, _depth)?;
10703            fidl::decode!(bool, D, &mut self.set_default_mib, decoder, offset + 6, _depth)?;
10704            Ok(())
10705        }
10706    }
10707
10708    impl fidl::encoding::ValueTypeMarker for RoamConfirm {
10709        type Borrowed<'a> = &'a Self;
10710        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10711            value
10712        }
10713    }
10714
10715    unsafe impl fidl::encoding::TypeMarker for RoamConfirm {
10716        type Owned = Self;
10717
10718        #[inline(always)]
10719        fn inline_align(_context: fidl::encoding::Context) -> usize {
10720            8
10721        }
10722
10723        #[inline(always)]
10724        fn inline_size(_context: fidl::encoding::Context) -> usize {
10725            32
10726        }
10727    }
10728
10729    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamConfirm, D>
10730        for &RoamConfirm
10731    {
10732        #[inline]
10733        unsafe fn encode(
10734            self,
10735            encoder: &mut fidl::encoding::Encoder<'_, D>,
10736            offset: usize,
10737            _depth: fidl::encoding::Depth,
10738        ) -> fidl::Result<()> {
10739            encoder.debug_check_bounds::<RoamConfirm>(offset);
10740            // Delegate to tuple encoding.
10741            fidl::encoding::Encode::<RoamConfirm, D>::encode(
10742                (
10743                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
10744                    <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10745                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
10746                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.target_bss_authenticated),
10747                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
10748                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
10749                ),
10750                encoder, offset, _depth
10751            )
10752        }
10753    }
10754    unsafe impl<
10755        D: fidl::encoding::ResourceDialect,
10756        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10757        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>,
10758        T2: fidl::encoding::Encode<bool, D>,
10759        T3: fidl::encoding::Encode<bool, D>,
10760        T4: fidl::encoding::Encode<u16, D>,
10761        T5: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10762    > fidl::encoding::Encode<RoamConfirm, D> for (T0, T1, T2, T3, T4, T5)
10763    {
10764        #[inline]
10765        unsafe fn encode(
10766            self,
10767            encoder: &mut fidl::encoding::Encoder<'_, D>,
10768            offset: usize,
10769            depth: fidl::encoding::Depth,
10770        ) -> fidl::Result<()> {
10771            encoder.debug_check_bounds::<RoamConfirm>(offset);
10772            // Zero out padding regions. There's no need to apply masks
10773            // because the unmasked parts will be overwritten by fields.
10774            unsafe {
10775                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10776                (ptr as *mut u64).write_unaligned(0);
10777            }
10778            // Write the fields.
10779            self.0.encode(encoder, offset + 0, depth)?;
10780            self.1.encode(encoder, offset + 6, depth)?;
10781            self.2.encode(encoder, offset + 8, depth)?;
10782            self.3.encode(encoder, offset + 9, depth)?;
10783            self.4.encode(encoder, offset + 10, depth)?;
10784            self.5.encode(encoder, offset + 16, depth)?;
10785            Ok(())
10786        }
10787    }
10788
10789    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamConfirm {
10790        #[inline(always)]
10791        fn new_empty() -> Self {
10792            Self {
10793                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10794                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D),
10795                original_association_maintained: fidl::new_empty!(bool, D),
10796                target_bss_authenticated: fidl::new_empty!(bool, D),
10797                association_id: fidl::new_empty!(u16, D),
10798                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10799            }
10800        }
10801
10802        #[inline]
10803        unsafe fn decode(
10804            &mut self,
10805            decoder: &mut fidl::encoding::Decoder<'_, D>,
10806            offset: usize,
10807            _depth: fidl::encoding::Depth,
10808        ) -> fidl::Result<()> {
10809            decoder.debug_check_bounds::<Self>(offset);
10810            // Verify that padding bytes are zero.
10811            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10812            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10813            let mask = 0xffffffff00000000u64;
10814            let maskedval = padval & mask;
10815            if maskedval != 0 {
10816                return Err(fidl::Error::NonZeroPadding {
10817                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10818                });
10819            }
10820            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
10821            fidl::decode!(
10822                fidl_fuchsia_wlan_ieee80211_common::StatusCode,
10823                D,
10824                &mut self.status_code,
10825                decoder,
10826                offset + 6,
10827                _depth
10828            )?;
10829            fidl::decode!(
10830                bool,
10831                D,
10832                &mut self.original_association_maintained,
10833                decoder,
10834                offset + 8,
10835                _depth
10836            )?;
10837            fidl::decode!(
10838                bool,
10839                D,
10840                &mut self.target_bss_authenticated,
10841                decoder,
10842                offset + 9,
10843                _depth
10844            )?;
10845            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 10, _depth)?;
10846            fidl::decode!(
10847                fidl::encoding::UnboundedVector<u8>,
10848                D,
10849                &mut self.association_ies,
10850                decoder,
10851                offset + 16,
10852                _depth
10853            )?;
10854            Ok(())
10855        }
10856    }
10857
10858    impl fidl::encoding::ValueTypeMarker for RoamRequest {
10859        type Borrowed<'a> = &'a Self;
10860        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10861            value
10862        }
10863    }
10864
10865    unsafe impl fidl::encoding::TypeMarker for RoamRequest {
10866        type Owned = Self;
10867
10868        #[inline(always)]
10869        fn inline_align(_context: fidl::encoding::Context) -> usize {
10870            8
10871        }
10872
10873        #[inline(always)]
10874        fn inline_size(_context: fidl::encoding::Context) -> usize {
10875            48
10876        }
10877    }
10878
10879    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamRequest, D>
10880        for &RoamRequest
10881    {
10882        #[inline]
10883        unsafe fn encode(
10884            self,
10885            encoder: &mut fidl::encoding::Encoder<'_, D>,
10886            offset: usize,
10887            _depth: fidl::encoding::Depth,
10888        ) -> fidl::Result<()> {
10889            encoder.debug_check_bounds::<RoamRequest>(offset);
10890            // Delegate to tuple encoding.
10891            fidl::encoding::Encode::<RoamRequest, D>::encode(
10892                (
10893                    <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
10894                ),
10895                encoder, offset, _depth
10896            )
10897        }
10898    }
10899    unsafe impl<
10900        D: fidl::encoding::ResourceDialect,
10901        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>,
10902    > fidl::encoding::Encode<RoamRequest, D> for (T0,)
10903    {
10904        #[inline]
10905        unsafe fn encode(
10906            self,
10907            encoder: &mut fidl::encoding::Encoder<'_, D>,
10908            offset: usize,
10909            depth: fidl::encoding::Depth,
10910        ) -> fidl::Result<()> {
10911            encoder.debug_check_bounds::<RoamRequest>(offset);
10912            // Zero out padding regions. There's no need to apply masks
10913            // because the unmasked parts will be overwritten by fields.
10914            // Write the fields.
10915            self.0.encode(encoder, offset + 0, depth)?;
10916            Ok(())
10917        }
10918    }
10919
10920    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamRequest {
10921        #[inline(always)]
10922        fn new_empty() -> Self {
10923            Self {
10924                selected_bss: fidl::new_empty!(
10925                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
10926                    D
10927                ),
10928            }
10929        }
10930
10931        #[inline]
10932        unsafe fn decode(
10933            &mut self,
10934            decoder: &mut fidl::encoding::Decoder<'_, D>,
10935            offset: usize,
10936            _depth: fidl::encoding::Depth,
10937        ) -> fidl::Result<()> {
10938            decoder.debug_check_bounds::<Self>(offset);
10939            // Verify that padding bytes are zero.
10940            fidl::decode!(
10941                fidl_fuchsia_wlan_ieee80211_common::BssDescription,
10942                D,
10943                &mut self.selected_bss,
10944                decoder,
10945                offset + 0,
10946                _depth
10947            )?;
10948            Ok(())
10949        }
10950    }
10951
10952    impl fidl::encoding::ValueTypeMarker for RoamResultIndication {
10953        type Borrowed<'a> = &'a Self;
10954        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10955            value
10956        }
10957    }
10958
10959    unsafe impl fidl::encoding::TypeMarker for RoamResultIndication {
10960        type Owned = Self;
10961
10962        #[inline(always)]
10963        fn inline_align(_context: fidl::encoding::Context) -> usize {
10964            8
10965        }
10966
10967        #[inline(always)]
10968        fn inline_size(_context: fidl::encoding::Context) -> usize {
10969            32
10970        }
10971    }
10972
10973    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamResultIndication, D>
10974        for &RoamResultIndication
10975    {
10976        #[inline]
10977        unsafe fn encode(
10978            self,
10979            encoder: &mut fidl::encoding::Encoder<'_, D>,
10980            offset: usize,
10981            _depth: fidl::encoding::Depth,
10982        ) -> fidl::Result<()> {
10983            encoder.debug_check_bounds::<RoamResultIndication>(offset);
10984            // Delegate to tuple encoding.
10985            fidl::encoding::Encode::<RoamResultIndication, D>::encode(
10986                (
10987                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
10988                    <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10989                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
10990                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.target_bss_authenticated),
10991                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
10992                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
10993                ),
10994                encoder, offset, _depth
10995            )
10996        }
10997    }
10998    unsafe impl<
10999        D: fidl::encoding::ResourceDialect,
11000        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11001        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>,
11002        T2: fidl::encoding::Encode<bool, D>,
11003        T3: fidl::encoding::Encode<bool, D>,
11004        T4: fidl::encoding::Encode<u16, D>,
11005        T5: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
11006    > fidl::encoding::Encode<RoamResultIndication, D> for (T0, T1, T2, T3, T4, T5)
11007    {
11008        #[inline]
11009        unsafe fn encode(
11010            self,
11011            encoder: &mut fidl::encoding::Encoder<'_, D>,
11012            offset: usize,
11013            depth: fidl::encoding::Depth,
11014        ) -> fidl::Result<()> {
11015            encoder.debug_check_bounds::<RoamResultIndication>(offset);
11016            // Zero out padding regions. There's no need to apply masks
11017            // because the unmasked parts will be overwritten by fields.
11018            unsafe {
11019                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
11020                (ptr as *mut u64).write_unaligned(0);
11021            }
11022            // Write the fields.
11023            self.0.encode(encoder, offset + 0, depth)?;
11024            self.1.encode(encoder, offset + 6, depth)?;
11025            self.2.encode(encoder, offset + 8, depth)?;
11026            self.3.encode(encoder, offset + 9, depth)?;
11027            self.4.encode(encoder, offset + 10, depth)?;
11028            self.5.encode(encoder, offset + 16, depth)?;
11029            Ok(())
11030        }
11031    }
11032
11033    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamResultIndication {
11034        #[inline(always)]
11035        fn new_empty() -> Self {
11036            Self {
11037                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11038                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D),
11039                original_association_maintained: fidl::new_empty!(bool, D),
11040                target_bss_authenticated: fidl::new_empty!(bool, D),
11041                association_id: fidl::new_empty!(u16, D),
11042                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
11043            }
11044        }
11045
11046        #[inline]
11047        unsafe fn decode(
11048            &mut self,
11049            decoder: &mut fidl::encoding::Decoder<'_, D>,
11050            offset: usize,
11051            _depth: fidl::encoding::Depth,
11052        ) -> fidl::Result<()> {
11053            decoder.debug_check_bounds::<Self>(offset);
11054            // Verify that padding bytes are zero.
11055            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
11056            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11057            let mask = 0xffffffff00000000u64;
11058            let maskedval = padval & mask;
11059            if maskedval != 0 {
11060                return Err(fidl::Error::NonZeroPadding {
11061                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
11062                });
11063            }
11064            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
11065            fidl::decode!(
11066                fidl_fuchsia_wlan_ieee80211_common::StatusCode,
11067                D,
11068                &mut self.status_code,
11069                decoder,
11070                offset + 6,
11071                _depth
11072            )?;
11073            fidl::decode!(
11074                bool,
11075                D,
11076                &mut self.original_association_maintained,
11077                decoder,
11078                offset + 8,
11079                _depth
11080            )?;
11081            fidl::decode!(
11082                bool,
11083                D,
11084                &mut self.target_bss_authenticated,
11085                decoder,
11086                offset + 9,
11087                _depth
11088            )?;
11089            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 10, _depth)?;
11090            fidl::decode!(
11091                fidl::encoding::UnboundedVector<u8>,
11092                D,
11093                &mut self.association_ies,
11094                decoder,
11095                offset + 16,
11096                _depth
11097            )?;
11098            Ok(())
11099        }
11100    }
11101
11102    impl fidl::encoding::ValueTypeMarker for RoamStartIndication {
11103        type Borrowed<'a> = &'a Self;
11104        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11105            value
11106        }
11107    }
11108
11109    unsafe impl fidl::encoding::TypeMarker for RoamStartIndication {
11110        type Owned = Self;
11111
11112        #[inline(always)]
11113        fn inline_align(_context: fidl::encoding::Context) -> usize {
11114            8
11115        }
11116
11117        #[inline(always)]
11118        fn inline_size(_context: fidl::encoding::Context) -> usize {
11119            64
11120        }
11121    }
11122
11123    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamStartIndication, D>
11124        for &RoamStartIndication
11125    {
11126        #[inline]
11127        unsafe fn encode(
11128            self,
11129            encoder: &mut fidl::encoding::Encoder<'_, D>,
11130            offset: usize,
11131            _depth: fidl::encoding::Depth,
11132        ) -> fidl::Result<()> {
11133            encoder.debug_check_bounds::<RoamStartIndication>(offset);
11134            // Delegate to tuple encoding.
11135            fidl::encoding::Encode::<RoamStartIndication, D>::encode(
11136                (
11137                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
11138                    <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
11139                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
11140                ),
11141                encoder, offset, _depth
11142            )
11143        }
11144    }
11145    unsafe impl<
11146        D: fidl::encoding::ResourceDialect,
11147        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11148        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>,
11149        T2: fidl::encoding::Encode<bool, D>,
11150    > fidl::encoding::Encode<RoamStartIndication, D> for (T0, T1, T2)
11151    {
11152        #[inline]
11153        unsafe fn encode(
11154            self,
11155            encoder: &mut fidl::encoding::Encoder<'_, D>,
11156            offset: usize,
11157            depth: fidl::encoding::Depth,
11158        ) -> fidl::Result<()> {
11159            encoder.debug_check_bounds::<RoamStartIndication>(offset);
11160            // Zero out padding regions. There's no need to apply masks
11161            // because the unmasked parts will be overwritten by fields.
11162            unsafe {
11163                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
11164                (ptr as *mut u64).write_unaligned(0);
11165            }
11166            unsafe {
11167                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
11168                (ptr as *mut u64).write_unaligned(0);
11169            }
11170            // Write the fields.
11171            self.0.encode(encoder, offset + 0, depth)?;
11172            self.1.encode(encoder, offset + 8, depth)?;
11173            self.2.encode(encoder, offset + 56, depth)?;
11174            Ok(())
11175        }
11176    }
11177
11178    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamStartIndication {
11179        #[inline(always)]
11180        fn new_empty() -> Self {
11181            Self {
11182                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11183                selected_bss: fidl::new_empty!(
11184                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
11185                    D
11186                ),
11187                original_association_maintained: fidl::new_empty!(bool, D),
11188            }
11189        }
11190
11191        #[inline]
11192        unsafe fn decode(
11193            &mut self,
11194            decoder: &mut fidl::encoding::Decoder<'_, D>,
11195            offset: usize,
11196            _depth: fidl::encoding::Depth,
11197        ) -> fidl::Result<()> {
11198            decoder.debug_check_bounds::<Self>(offset);
11199            // Verify that padding bytes are zero.
11200            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
11201            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11202            let mask = 0xffff000000000000u64;
11203            let maskedval = padval & mask;
11204            if maskedval != 0 {
11205                return Err(fidl::Error::NonZeroPadding {
11206                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
11207                });
11208            }
11209            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
11210            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11211            let mask = 0xffffffffffffff00u64;
11212            let maskedval = padval & mask;
11213            if maskedval != 0 {
11214                return Err(fidl::Error::NonZeroPadding {
11215                    padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
11216                });
11217            }
11218            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
11219            fidl::decode!(
11220                fidl_fuchsia_wlan_ieee80211_common::BssDescription,
11221                D,
11222                &mut self.selected_bss,
11223                decoder,
11224                offset + 8,
11225                _depth
11226            )?;
11227            fidl::decode!(
11228                bool,
11229                D,
11230                &mut self.original_association_maintained,
11231                decoder,
11232                offset + 56,
11233                _depth
11234            )?;
11235            Ok(())
11236        }
11237    }
11238
11239    impl fidl::encoding::ValueTypeMarker for SaeFrame {
11240        type Borrowed<'a> = &'a Self;
11241        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11242            value
11243        }
11244    }
11245
11246    unsafe impl fidl::encoding::TypeMarker for SaeFrame {
11247        type Owned = Self;
11248
11249        #[inline(always)]
11250        fn inline_align(_context: fidl::encoding::Context) -> usize {
11251            8
11252        }
11253
11254        #[inline(always)]
11255        fn inline_size(_context: fidl::encoding::Context) -> usize {
11256            32
11257        }
11258    }
11259
11260    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFrame, D> for &SaeFrame {
11261        #[inline]
11262        unsafe fn encode(
11263            self,
11264            encoder: &mut fidl::encoding::Encoder<'_, D>,
11265            offset: usize,
11266            _depth: fidl::encoding::Depth,
11267        ) -> fidl::Result<()> {
11268            encoder.debug_check_bounds::<SaeFrame>(offset);
11269            // Delegate to tuple encoding.
11270            fidl::encoding::Encode::<SaeFrame, D>::encode(
11271                (
11272                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
11273                    <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
11274                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.seq_num),
11275                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.sae_fields),
11276                ),
11277                encoder, offset, _depth
11278            )
11279        }
11280    }
11281    unsafe impl<
11282        D: fidl::encoding::ResourceDialect,
11283        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11284        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>,
11285        T2: fidl::encoding::Encode<u16, D>,
11286        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
11287    > fidl::encoding::Encode<SaeFrame, D> for (T0, T1, T2, T3)
11288    {
11289        #[inline]
11290        unsafe fn encode(
11291            self,
11292            encoder: &mut fidl::encoding::Encoder<'_, D>,
11293            offset: usize,
11294            depth: fidl::encoding::Depth,
11295        ) -> fidl::Result<()> {
11296            encoder.debug_check_bounds::<SaeFrame>(offset);
11297            // Zero out padding regions. There's no need to apply masks
11298            // because the unmasked parts will be overwritten by fields.
11299            unsafe {
11300                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
11301                (ptr as *mut u64).write_unaligned(0);
11302            }
11303            // Write the fields.
11304            self.0.encode(encoder, offset + 0, depth)?;
11305            self.1.encode(encoder, offset + 6, depth)?;
11306            self.2.encode(encoder, offset + 8, depth)?;
11307            self.3.encode(encoder, offset + 16, depth)?;
11308            Ok(())
11309        }
11310    }
11311
11312    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFrame {
11313        #[inline(always)]
11314        fn new_empty() -> Self {
11315            Self {
11316                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11317                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D),
11318                seq_num: fidl::new_empty!(u16, D),
11319                sae_fields: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
11320            }
11321        }
11322
11323        #[inline]
11324        unsafe fn decode(
11325            &mut self,
11326            decoder: &mut fidl::encoding::Decoder<'_, D>,
11327            offset: usize,
11328            _depth: fidl::encoding::Depth,
11329        ) -> fidl::Result<()> {
11330            decoder.debug_check_bounds::<Self>(offset);
11331            // Verify that padding bytes are zero.
11332            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
11333            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11334            let mask = 0xffffffffffff0000u64;
11335            let maskedval = padval & mask;
11336            if maskedval != 0 {
11337                return Err(fidl::Error::NonZeroPadding {
11338                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
11339                });
11340            }
11341            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
11342            fidl::decode!(
11343                fidl_fuchsia_wlan_ieee80211_common::StatusCode,
11344                D,
11345                &mut self.status_code,
11346                decoder,
11347                offset + 6,
11348                _depth
11349            )?;
11350            fidl::decode!(u16, D, &mut self.seq_num, decoder, offset + 8, _depth)?;
11351            fidl::decode!(
11352                fidl::encoding::UnboundedVector<u8>,
11353                D,
11354                &mut self.sae_fields,
11355                decoder,
11356                offset + 16,
11357                _depth
11358            )?;
11359            Ok(())
11360        }
11361    }
11362
11363    impl fidl::encoding::ValueTypeMarker for SaeHandshakeIndication {
11364        type Borrowed<'a> = &'a Self;
11365        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11366            value
11367        }
11368    }
11369
11370    unsafe impl fidl::encoding::TypeMarker for SaeHandshakeIndication {
11371        type Owned = Self;
11372
11373        #[inline(always)]
11374        fn inline_align(_context: fidl::encoding::Context) -> usize {
11375            1
11376        }
11377
11378        #[inline(always)]
11379        fn inline_size(_context: fidl::encoding::Context) -> usize {
11380            6
11381        }
11382        #[inline(always)]
11383        fn encode_is_copy() -> bool {
11384            true
11385        }
11386
11387        #[inline(always)]
11388        fn decode_is_copy() -> bool {
11389            true
11390        }
11391    }
11392
11393    unsafe impl<D: fidl::encoding::ResourceDialect>
11394        fidl::encoding::Encode<SaeHandshakeIndication, D> for &SaeHandshakeIndication
11395    {
11396        #[inline]
11397        unsafe fn encode(
11398            self,
11399            encoder: &mut fidl::encoding::Encoder<'_, D>,
11400            offset: usize,
11401            _depth: fidl::encoding::Depth,
11402        ) -> fidl::Result<()> {
11403            encoder.debug_check_bounds::<SaeHandshakeIndication>(offset);
11404            unsafe {
11405                // Copy the object into the buffer.
11406                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
11407                (buf_ptr as *mut SaeHandshakeIndication)
11408                    .write_unaligned((self as *const SaeHandshakeIndication).read());
11409                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
11410                // done second because the memcpy will write garbage to these bytes.
11411            }
11412            Ok(())
11413        }
11414    }
11415    unsafe impl<
11416        D: fidl::encoding::ResourceDialect,
11417        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11418    > fidl::encoding::Encode<SaeHandshakeIndication, D> for (T0,)
11419    {
11420        #[inline]
11421        unsafe fn encode(
11422            self,
11423            encoder: &mut fidl::encoding::Encoder<'_, D>,
11424            offset: usize,
11425            depth: fidl::encoding::Depth,
11426        ) -> fidl::Result<()> {
11427            encoder.debug_check_bounds::<SaeHandshakeIndication>(offset);
11428            // Zero out padding regions. There's no need to apply masks
11429            // because the unmasked parts will be overwritten by fields.
11430            // Write the fields.
11431            self.0.encode(encoder, offset + 0, depth)?;
11432            Ok(())
11433        }
11434    }
11435
11436    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11437        for SaeHandshakeIndication
11438    {
11439        #[inline(always)]
11440        fn new_empty() -> Self {
11441            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
11442        }
11443
11444        #[inline]
11445        unsafe fn decode(
11446            &mut self,
11447            decoder: &mut fidl::encoding::Decoder<'_, D>,
11448            offset: usize,
11449            _depth: fidl::encoding::Depth,
11450        ) -> fidl::Result<()> {
11451            decoder.debug_check_bounds::<Self>(offset);
11452            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
11453            // Verify that padding bytes are zero.
11454            // Copy from the buffer into the object.
11455            unsafe {
11456                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
11457            }
11458            Ok(())
11459        }
11460    }
11461
11462    impl fidl::encoding::ValueTypeMarker for SaeHandshakeResponse {
11463        type Borrowed<'a> = &'a Self;
11464        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11465            value
11466        }
11467    }
11468
11469    unsafe impl fidl::encoding::TypeMarker for SaeHandshakeResponse {
11470        type Owned = Self;
11471
11472        #[inline(always)]
11473        fn inline_align(_context: fidl::encoding::Context) -> usize {
11474            2
11475        }
11476
11477        #[inline(always)]
11478        fn inline_size(_context: fidl::encoding::Context) -> usize {
11479            8
11480        }
11481    }
11482
11483    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeHandshakeResponse, D>
11484        for &SaeHandshakeResponse
11485    {
11486        #[inline]
11487        unsafe fn encode(
11488            self,
11489            encoder: &mut fidl::encoding::Encoder<'_, D>,
11490            offset: usize,
11491            _depth: fidl::encoding::Depth,
11492        ) -> fidl::Result<()> {
11493            encoder.debug_check_bounds::<SaeHandshakeResponse>(offset);
11494            // Delegate to tuple encoding.
11495            fidl::encoding::Encode::<SaeHandshakeResponse, D>::encode(
11496                (
11497                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
11498                    <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
11499                ),
11500                encoder, offset, _depth
11501            )
11502        }
11503    }
11504    unsafe impl<
11505        D: fidl::encoding::ResourceDialect,
11506        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11507        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>,
11508    > fidl::encoding::Encode<SaeHandshakeResponse, D> for (T0, T1)
11509    {
11510        #[inline]
11511        unsafe fn encode(
11512            self,
11513            encoder: &mut fidl::encoding::Encoder<'_, D>,
11514            offset: usize,
11515            depth: fidl::encoding::Depth,
11516        ) -> fidl::Result<()> {
11517            encoder.debug_check_bounds::<SaeHandshakeResponse>(offset);
11518            // Zero out padding regions. There's no need to apply masks
11519            // because the unmasked parts will be overwritten by fields.
11520            // Write the fields.
11521            self.0.encode(encoder, offset + 0, depth)?;
11522            self.1.encode(encoder, offset + 6, depth)?;
11523            Ok(())
11524        }
11525    }
11526
11527    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeHandshakeResponse {
11528        #[inline(always)]
11529        fn new_empty() -> Self {
11530            Self {
11531                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11532                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D),
11533            }
11534        }
11535
11536        #[inline]
11537        unsafe fn decode(
11538            &mut self,
11539            decoder: &mut fidl::encoding::Decoder<'_, D>,
11540            offset: usize,
11541            _depth: fidl::encoding::Depth,
11542        ) -> fidl::Result<()> {
11543            decoder.debug_check_bounds::<Self>(offset);
11544            // Verify that padding bytes are zero.
11545            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
11546            fidl::decode!(
11547                fidl_fuchsia_wlan_ieee80211_common::StatusCode,
11548                D,
11549                &mut self.status_code,
11550                decoder,
11551                offset + 6,
11552                _depth
11553            )?;
11554            Ok(())
11555        }
11556    }
11557
11558    impl fidl::encoding::ValueTypeMarker for ScanEnd {
11559        type Borrowed<'a> = &'a Self;
11560        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11561            value
11562        }
11563    }
11564
11565    unsafe impl fidl::encoding::TypeMarker for ScanEnd {
11566        type Owned = Self;
11567
11568        #[inline(always)]
11569        fn inline_align(_context: fidl::encoding::Context) -> usize {
11570            8
11571        }
11572
11573        #[inline(always)]
11574        fn inline_size(_context: fidl::encoding::Context) -> usize {
11575            16
11576        }
11577    }
11578
11579    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanEnd, D> for &ScanEnd {
11580        #[inline]
11581        unsafe fn encode(
11582            self,
11583            encoder: &mut fidl::encoding::Encoder<'_, D>,
11584            offset: usize,
11585            _depth: fidl::encoding::Depth,
11586        ) -> fidl::Result<()> {
11587            encoder.debug_check_bounds::<ScanEnd>(offset);
11588            // Delegate to tuple encoding.
11589            fidl::encoding::Encode::<ScanEnd, D>::encode(
11590                (
11591                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
11592                    <ScanResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.code),
11593                ),
11594                encoder,
11595                offset,
11596                _depth,
11597            )
11598        }
11599    }
11600    unsafe impl<
11601        D: fidl::encoding::ResourceDialect,
11602        T0: fidl::encoding::Encode<u64, D>,
11603        T1: fidl::encoding::Encode<ScanResultCode, D>,
11604    > fidl::encoding::Encode<ScanEnd, D> for (T0, T1)
11605    {
11606        #[inline]
11607        unsafe fn encode(
11608            self,
11609            encoder: &mut fidl::encoding::Encoder<'_, D>,
11610            offset: usize,
11611            depth: fidl::encoding::Depth,
11612        ) -> fidl::Result<()> {
11613            encoder.debug_check_bounds::<ScanEnd>(offset);
11614            // Zero out padding regions. There's no need to apply masks
11615            // because the unmasked parts will be overwritten by fields.
11616            unsafe {
11617                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
11618                (ptr as *mut u64).write_unaligned(0);
11619            }
11620            // Write the fields.
11621            self.0.encode(encoder, offset + 0, depth)?;
11622            self.1.encode(encoder, offset + 8, depth)?;
11623            Ok(())
11624        }
11625    }
11626
11627    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanEnd {
11628        #[inline(always)]
11629        fn new_empty() -> Self {
11630            Self { txn_id: fidl::new_empty!(u64, D), code: fidl::new_empty!(ScanResultCode, D) }
11631        }
11632
11633        #[inline]
11634        unsafe fn decode(
11635            &mut self,
11636            decoder: &mut fidl::encoding::Decoder<'_, D>,
11637            offset: usize,
11638            _depth: fidl::encoding::Depth,
11639        ) -> fidl::Result<()> {
11640            decoder.debug_check_bounds::<Self>(offset);
11641            // Verify that padding bytes are zero.
11642            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
11643            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11644            let mask = 0xffffffff00000000u64;
11645            let maskedval = padval & mask;
11646            if maskedval != 0 {
11647                return Err(fidl::Error::NonZeroPadding {
11648                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
11649                });
11650            }
11651            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
11652            fidl::decode!(ScanResultCode, D, &mut self.code, decoder, offset + 8, _depth)?;
11653            Ok(())
11654        }
11655    }
11656
11657    impl fidl::encoding::ValueTypeMarker for ScanRequest {
11658        type Borrowed<'a> = &'a Self;
11659        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11660            value
11661        }
11662    }
11663
11664    unsafe impl fidl::encoding::TypeMarker for ScanRequest {
11665        type Owned = Self;
11666
11667        #[inline(always)]
11668        fn inline_align(_context: fidl::encoding::Context) -> usize {
11669            8
11670        }
11671
11672        #[inline(always)]
11673        fn inline_size(_context: fidl::encoding::Context) -> usize {
11674            64
11675        }
11676    }
11677
11678    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanRequest, D>
11679        for &ScanRequest
11680    {
11681        #[inline]
11682        unsafe fn encode(
11683            self,
11684            encoder: &mut fidl::encoding::Encoder<'_, D>,
11685            offset: usize,
11686            _depth: fidl::encoding::Depth,
11687        ) -> fidl::Result<()> {
11688            encoder.debug_check_bounds::<ScanRequest>(offset);
11689            // Delegate to tuple encoding.
11690            fidl::encoding::Encode::<ScanRequest, D>::encode(
11691                (
11692                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
11693                    <ScanTypes as fidl::encoding::ValueTypeMarker>::borrow(&self.scan_type),
11694                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.channel_list),
11695                    <fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid_list),
11696                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.probe_delay),
11697                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.min_channel_time),
11698                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.max_channel_time),
11699                ),
11700                encoder, offset, _depth
11701            )
11702        }
11703    }
11704    unsafe impl<
11705        D: fidl::encoding::ResourceDialect,
11706        T0: fidl::encoding::Encode<u64, D>,
11707        T1: fidl::encoding::Encode<ScanTypes, D>,
11708        T2: fidl::encoding::Encode<fidl::encoding::Vector<u8, 256>, D>,
11709        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>,
11710        T4: fidl::encoding::Encode<u32, D>,
11711        T5: fidl::encoding::Encode<u32, D>,
11712        T6: fidl::encoding::Encode<u32, D>,
11713    > fidl::encoding::Encode<ScanRequest, D> for (T0, T1, T2, T3, T4, T5, T6)
11714    {
11715        #[inline]
11716        unsafe fn encode(
11717            self,
11718            encoder: &mut fidl::encoding::Encoder<'_, D>,
11719            offset: usize,
11720            depth: fidl::encoding::Depth,
11721        ) -> fidl::Result<()> {
11722            encoder.debug_check_bounds::<ScanRequest>(offset);
11723            // Zero out padding regions. There's no need to apply masks
11724            // because the unmasked parts will be overwritten by fields.
11725            unsafe {
11726                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
11727                (ptr as *mut u64).write_unaligned(0);
11728            }
11729            unsafe {
11730                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
11731                (ptr as *mut u64).write_unaligned(0);
11732            }
11733            // Write the fields.
11734            self.0.encode(encoder, offset + 0, depth)?;
11735            self.1.encode(encoder, offset + 8, depth)?;
11736            self.2.encode(encoder, offset + 16, depth)?;
11737            self.3.encode(encoder, offset + 32, depth)?;
11738            self.4.encode(encoder, offset + 48, depth)?;
11739            self.5.encode(encoder, offset + 52, depth)?;
11740            self.6.encode(encoder, offset + 56, depth)?;
11741            Ok(())
11742        }
11743    }
11744
11745    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanRequest {
11746        #[inline(always)]
11747        fn new_empty() -> Self {
11748            Self {
11749                txn_id: fidl::new_empty!(u64, D),
11750                scan_type: fidl::new_empty!(ScanTypes, D),
11751                channel_list: fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D),
11752                ssid_list: fidl::new_empty!(
11753                    fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
11754                    D
11755                ),
11756                probe_delay: fidl::new_empty!(u32, D),
11757                min_channel_time: fidl::new_empty!(u32, D),
11758                max_channel_time: fidl::new_empty!(u32, D),
11759            }
11760        }
11761
11762        #[inline]
11763        unsafe fn decode(
11764            &mut self,
11765            decoder: &mut fidl::encoding::Decoder<'_, D>,
11766            offset: usize,
11767            _depth: fidl::encoding::Depth,
11768        ) -> fidl::Result<()> {
11769            decoder.debug_check_bounds::<Self>(offset);
11770            // Verify that padding bytes are zero.
11771            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
11772            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11773            let mask = 0xffffffff00000000u64;
11774            let maskedval = padval & mask;
11775            if maskedval != 0 {
11776                return Err(fidl::Error::NonZeroPadding {
11777                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
11778                });
11779            }
11780            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
11781            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11782            let mask = 0xffffffff00000000u64;
11783            let maskedval = padval & mask;
11784            if maskedval != 0 {
11785                return Err(fidl::Error::NonZeroPadding {
11786                    padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
11787                });
11788            }
11789            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
11790            fidl::decode!(ScanTypes, D, &mut self.scan_type, decoder, offset + 8, _depth)?;
11791            fidl::decode!(fidl::encoding::Vector<u8, 256>, D, &mut self.channel_list, decoder, offset + 16, _depth)?;
11792            fidl::decode!(
11793                fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
11794                D,
11795                &mut self.ssid_list,
11796                decoder,
11797                offset + 32,
11798                _depth
11799            )?;
11800            fidl::decode!(u32, D, &mut self.probe_delay, decoder, offset + 48, _depth)?;
11801            fidl::decode!(u32, D, &mut self.min_channel_time, decoder, offset + 52, _depth)?;
11802            fidl::decode!(u32, D, &mut self.max_channel_time, decoder, offset + 56, _depth)?;
11803            Ok(())
11804        }
11805    }
11806
11807    impl fidl::encoding::ValueTypeMarker for ScanResult {
11808        type Borrowed<'a> = &'a Self;
11809        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11810            value
11811        }
11812    }
11813
11814    unsafe impl fidl::encoding::TypeMarker for ScanResult {
11815        type Owned = Self;
11816
11817        #[inline(always)]
11818        fn inline_align(_context: fidl::encoding::Context) -> usize {
11819            8
11820        }
11821
11822        #[inline(always)]
11823        fn inline_size(_context: fidl::encoding::Context) -> usize {
11824            64
11825        }
11826    }
11827
11828    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanResult, D>
11829        for &ScanResult
11830    {
11831        #[inline]
11832        unsafe fn encode(
11833            self,
11834            encoder: &mut fidl::encoding::Encoder<'_, D>,
11835            offset: usize,
11836            _depth: fidl::encoding::Depth,
11837        ) -> fidl::Result<()> {
11838            encoder.debug_check_bounds::<ScanResult>(offset);
11839            // Delegate to tuple encoding.
11840            fidl::encoding::Encode::<ScanResult, D>::encode(
11841                (
11842                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
11843                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timestamp_nanos),
11844                    <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.bss),
11845                ),
11846                encoder, offset, _depth
11847            )
11848        }
11849    }
11850    unsafe impl<
11851        D: fidl::encoding::ResourceDialect,
11852        T0: fidl::encoding::Encode<u64, D>,
11853        T1: fidl::encoding::Encode<i64, D>,
11854        T2: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>,
11855    > fidl::encoding::Encode<ScanResult, D> for (T0, T1, T2)
11856    {
11857        #[inline]
11858        unsafe fn encode(
11859            self,
11860            encoder: &mut fidl::encoding::Encoder<'_, D>,
11861            offset: usize,
11862            depth: fidl::encoding::Depth,
11863        ) -> fidl::Result<()> {
11864            encoder.debug_check_bounds::<ScanResult>(offset);
11865            // Zero out padding regions. There's no need to apply masks
11866            // because the unmasked parts will be overwritten by fields.
11867            // Write the fields.
11868            self.0.encode(encoder, offset + 0, depth)?;
11869            self.1.encode(encoder, offset + 8, depth)?;
11870            self.2.encode(encoder, offset + 16, depth)?;
11871            Ok(())
11872        }
11873    }
11874
11875    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanResult {
11876        #[inline(always)]
11877        fn new_empty() -> Self {
11878            Self {
11879                txn_id: fidl::new_empty!(u64, D),
11880                timestamp_nanos: fidl::new_empty!(i64, D),
11881                bss: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D),
11882            }
11883        }
11884
11885        #[inline]
11886        unsafe fn decode(
11887            &mut self,
11888            decoder: &mut fidl::encoding::Decoder<'_, D>,
11889            offset: usize,
11890            _depth: fidl::encoding::Depth,
11891        ) -> fidl::Result<()> {
11892            decoder.debug_check_bounds::<Self>(offset);
11893            // Verify that padding bytes are zero.
11894            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
11895            fidl::decode!(i64, D, &mut self.timestamp_nanos, decoder, offset + 8, _depth)?;
11896            fidl::decode!(
11897                fidl_fuchsia_wlan_ieee80211_common::BssDescription,
11898                D,
11899                &mut self.bss,
11900                decoder,
11901                offset + 16,
11902                _depth
11903            )?;
11904            Ok(())
11905        }
11906    }
11907
11908    impl fidl::encoding::ValueTypeMarker for SetControlledPortRequest {
11909        type Borrowed<'a> = &'a Self;
11910        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11911            value
11912        }
11913    }
11914
11915    unsafe impl fidl::encoding::TypeMarker for SetControlledPortRequest {
11916        type Owned = Self;
11917
11918        #[inline(always)]
11919        fn inline_align(_context: fidl::encoding::Context) -> usize {
11920            4
11921        }
11922
11923        #[inline(always)]
11924        fn inline_size(_context: fidl::encoding::Context) -> usize {
11925            12
11926        }
11927    }
11928
11929    unsafe impl<D: fidl::encoding::ResourceDialect>
11930        fidl::encoding::Encode<SetControlledPortRequest, D> for &SetControlledPortRequest
11931    {
11932        #[inline]
11933        unsafe fn encode(
11934            self,
11935            encoder: &mut fidl::encoding::Encoder<'_, D>,
11936            offset: usize,
11937            _depth: fidl::encoding::Depth,
11938        ) -> fidl::Result<()> {
11939            encoder.debug_check_bounds::<SetControlledPortRequest>(offset);
11940            // Delegate to tuple encoding.
11941            fidl::encoding::Encode::<SetControlledPortRequest, D>::encode(
11942                (
11943                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
11944                        &self.peer_sta_address,
11945                    ),
11946                    <ControlledPortState as fidl::encoding::ValueTypeMarker>::borrow(&self.state),
11947                ),
11948                encoder,
11949                offset,
11950                _depth,
11951            )
11952        }
11953    }
11954    unsafe impl<
11955        D: fidl::encoding::ResourceDialect,
11956        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11957        T1: fidl::encoding::Encode<ControlledPortState, D>,
11958    > fidl::encoding::Encode<SetControlledPortRequest, D> for (T0, T1)
11959    {
11960        #[inline]
11961        unsafe fn encode(
11962            self,
11963            encoder: &mut fidl::encoding::Encoder<'_, D>,
11964            offset: usize,
11965            depth: fidl::encoding::Depth,
11966        ) -> fidl::Result<()> {
11967            encoder.debug_check_bounds::<SetControlledPortRequest>(offset);
11968            // Zero out padding regions. There's no need to apply masks
11969            // because the unmasked parts will be overwritten by fields.
11970            unsafe {
11971                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
11972                (ptr as *mut u32).write_unaligned(0);
11973            }
11974            // Write the fields.
11975            self.0.encode(encoder, offset + 0, depth)?;
11976            self.1.encode(encoder, offset + 8, depth)?;
11977            Ok(())
11978        }
11979    }
11980
11981    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11982        for SetControlledPortRequest
11983    {
11984        #[inline(always)]
11985        fn new_empty() -> Self {
11986            Self {
11987                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11988                state: fidl::new_empty!(ControlledPortState, D),
11989            }
11990        }
11991
11992        #[inline]
11993        unsafe fn decode(
11994            &mut self,
11995            decoder: &mut fidl::encoding::Decoder<'_, D>,
11996            offset: usize,
11997            _depth: fidl::encoding::Depth,
11998        ) -> fidl::Result<()> {
11999            decoder.debug_check_bounds::<Self>(offset);
12000            // Verify that padding bytes are zero.
12001            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
12002            let padval = unsafe { (ptr as *const u32).read_unaligned() };
12003            let mask = 0xffff0000u32;
12004            let maskedval = padval & mask;
12005            if maskedval != 0 {
12006                return Err(fidl::Error::NonZeroPadding {
12007                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
12008                });
12009            }
12010            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
12011            fidl::decode!(ControlledPortState, D, &mut self.state, decoder, offset + 8, _depth)?;
12012            Ok(())
12013        }
12014    }
12015
12016    impl fidl::encoding::ValueTypeMarker for SetKeyDescriptor {
12017        type Borrowed<'a> = &'a Self;
12018        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12019            value
12020        }
12021    }
12022
12023    unsafe impl fidl::encoding::TypeMarker for SetKeyDescriptor {
12024        type Owned = Self;
12025
12026        #[inline(always)]
12027        fn inline_align(_context: fidl::encoding::Context) -> usize {
12028            8
12029        }
12030
12031        #[inline(always)]
12032        fn inline_size(_context: fidl::encoding::Context) -> usize {
12033            48
12034        }
12035    }
12036
12037    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeyDescriptor, D>
12038        for &SetKeyDescriptor
12039    {
12040        #[inline]
12041        unsafe fn encode(
12042            self,
12043            encoder: &mut fidl::encoding::Encoder<'_, D>,
12044            offset: usize,
12045            _depth: fidl::encoding::Depth,
12046        ) -> fidl::Result<()> {
12047            encoder.debug_check_bounds::<SetKeyDescriptor>(offset);
12048            // Delegate to tuple encoding.
12049            fidl::encoding::Encode::<SetKeyDescriptor, D>::encode(
12050                (
12051                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
12052                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.key_id),
12053                    <KeyType as fidl::encoding::ValueTypeMarker>::borrow(&self.key_type),
12054                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.address),
12055                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.rsc),
12056                    <fidl::encoding::Array<u8, 3> as fidl::encoding::ValueTypeMarker>::borrow(&self.cipher_suite_oui),
12057                    <fidl_fuchsia_wlan_ieee80211_common::CipherSuiteType as fidl::encoding::ValueTypeMarker>::borrow(&self.cipher_suite_type),
12058                ),
12059                encoder, offset, _depth
12060            )
12061        }
12062    }
12063    unsafe impl<
12064        D: fidl::encoding::ResourceDialect,
12065        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
12066        T1: fidl::encoding::Encode<u16, D>,
12067        T2: fidl::encoding::Encode<KeyType, D>,
12068        T3: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
12069        T4: fidl::encoding::Encode<u64, D>,
12070        T5: fidl::encoding::Encode<fidl::encoding::Array<u8, 3>, D>,
12071        T6: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::CipherSuiteType, D>,
12072    > fidl::encoding::Encode<SetKeyDescriptor, D> for (T0, T1, T2, T3, T4, T5, T6)
12073    {
12074        #[inline]
12075        unsafe fn encode(
12076            self,
12077            encoder: &mut fidl::encoding::Encoder<'_, D>,
12078            offset: usize,
12079            depth: fidl::encoding::Depth,
12080        ) -> fidl::Result<()> {
12081            encoder.debug_check_bounds::<SetKeyDescriptor>(offset);
12082            // Zero out padding regions. There's no need to apply masks
12083            // because the unmasked parts will be overwritten by fields.
12084            unsafe {
12085                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
12086                (ptr as *mut u64).write_unaligned(0);
12087            }
12088            unsafe {
12089                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
12090                (ptr as *mut u64).write_unaligned(0);
12091            }
12092            unsafe {
12093                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(40);
12094                (ptr as *mut u64).write_unaligned(0);
12095            }
12096            // Write the fields.
12097            self.0.encode(encoder, offset + 0, depth)?;
12098            self.1.encode(encoder, offset + 16, depth)?;
12099            self.2.encode(encoder, offset + 20, depth)?;
12100            self.3.encode(encoder, offset + 24, depth)?;
12101            self.4.encode(encoder, offset + 32, depth)?;
12102            self.5.encode(encoder, offset + 40, depth)?;
12103            self.6.encode(encoder, offset + 44, depth)?;
12104            Ok(())
12105        }
12106    }
12107
12108    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeyDescriptor {
12109        #[inline(always)]
12110        fn new_empty() -> Self {
12111            Self {
12112                key: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
12113                key_id: fidl::new_empty!(u16, D),
12114                key_type: fidl::new_empty!(KeyType, D),
12115                address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
12116                rsc: fidl::new_empty!(u64, D),
12117                cipher_suite_oui: fidl::new_empty!(fidl::encoding::Array<u8, 3>, D),
12118                cipher_suite_type: fidl::new_empty!(
12119                    fidl_fuchsia_wlan_ieee80211_common::CipherSuiteType,
12120                    D
12121                ),
12122            }
12123        }
12124
12125        #[inline]
12126        unsafe fn decode(
12127            &mut self,
12128            decoder: &mut fidl::encoding::Decoder<'_, D>,
12129            offset: usize,
12130            _depth: fidl::encoding::Depth,
12131        ) -> fidl::Result<()> {
12132            decoder.debug_check_bounds::<Self>(offset);
12133            // Verify that padding bytes are zero.
12134            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
12135            let padval = unsafe { (ptr as *const u64).read_unaligned() };
12136            let mask = 0xffff0000u64;
12137            let maskedval = padval & mask;
12138            if maskedval != 0 {
12139                return Err(fidl::Error::NonZeroPadding {
12140                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
12141                });
12142            }
12143            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
12144            let padval = unsafe { (ptr as *const u64).read_unaligned() };
12145            let mask = 0xffff000000000000u64;
12146            let maskedval = padval & mask;
12147            if maskedval != 0 {
12148                return Err(fidl::Error::NonZeroPadding {
12149                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
12150                });
12151            }
12152            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(40) };
12153            let padval = unsafe { (ptr as *const u64).read_unaligned() };
12154            let mask = 0xff000000u64;
12155            let maskedval = padval & mask;
12156            if maskedval != 0 {
12157                return Err(fidl::Error::NonZeroPadding {
12158                    padding_start: offset + 40 + ((mask as u64).trailing_zeros() / 8) as usize,
12159                });
12160            }
12161            fidl::decode!(
12162                fidl::encoding::UnboundedVector<u8>,
12163                D,
12164                &mut self.key,
12165                decoder,
12166                offset + 0,
12167                _depth
12168            )?;
12169            fidl::decode!(u16, D, &mut self.key_id, decoder, offset + 16, _depth)?;
12170            fidl::decode!(KeyType, D, &mut self.key_type, decoder, offset + 20, _depth)?;
12171            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.address, decoder, offset + 24, _depth)?;
12172            fidl::decode!(u64, D, &mut self.rsc, decoder, offset + 32, _depth)?;
12173            fidl::decode!(fidl::encoding::Array<u8, 3>, D, &mut self.cipher_suite_oui, decoder, offset + 40, _depth)?;
12174            fidl::decode!(
12175                fidl_fuchsia_wlan_ieee80211_common::CipherSuiteType,
12176                D,
12177                &mut self.cipher_suite_type,
12178                decoder,
12179                offset + 44,
12180                _depth
12181            )?;
12182            Ok(())
12183        }
12184    }
12185
12186    impl fidl::encoding::ValueTypeMarker for SetKeyResult {
12187        type Borrowed<'a> = &'a Self;
12188        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12189            value
12190        }
12191    }
12192
12193    unsafe impl fidl::encoding::TypeMarker for SetKeyResult {
12194        type Owned = Self;
12195
12196        #[inline(always)]
12197        fn inline_align(_context: fidl::encoding::Context) -> usize {
12198            4
12199        }
12200
12201        #[inline(always)]
12202        fn inline_size(_context: fidl::encoding::Context) -> usize {
12203            8
12204        }
12205    }
12206
12207    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeyResult, D>
12208        for &SetKeyResult
12209    {
12210        #[inline]
12211        unsafe fn encode(
12212            self,
12213            encoder: &mut fidl::encoding::Encoder<'_, D>,
12214            offset: usize,
12215            _depth: fidl::encoding::Depth,
12216        ) -> fidl::Result<()> {
12217            encoder.debug_check_bounds::<SetKeyResult>(offset);
12218            unsafe {
12219                // Copy the object into the buffer.
12220                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
12221                (buf_ptr as *mut SetKeyResult)
12222                    .write_unaligned((self as *const SetKeyResult).read());
12223                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
12224                // done second because the memcpy will write garbage to these bytes.
12225                let padding_ptr = buf_ptr.offset(0) as *mut u32;
12226                let padding_mask = 0xffff0000u32;
12227                padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
12228            }
12229            Ok(())
12230        }
12231    }
12232    unsafe impl<
12233        D: fidl::encoding::ResourceDialect,
12234        T0: fidl::encoding::Encode<u16, D>,
12235        T1: fidl::encoding::Encode<i32, D>,
12236    > fidl::encoding::Encode<SetKeyResult, D> for (T0, T1)
12237    {
12238        #[inline]
12239        unsafe fn encode(
12240            self,
12241            encoder: &mut fidl::encoding::Encoder<'_, D>,
12242            offset: usize,
12243            depth: fidl::encoding::Depth,
12244        ) -> fidl::Result<()> {
12245            encoder.debug_check_bounds::<SetKeyResult>(offset);
12246            // Zero out padding regions. There's no need to apply masks
12247            // because the unmasked parts will be overwritten by fields.
12248            unsafe {
12249                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
12250                (ptr as *mut u32).write_unaligned(0);
12251            }
12252            // Write the fields.
12253            self.0.encode(encoder, offset + 0, depth)?;
12254            self.1.encode(encoder, offset + 4, depth)?;
12255            Ok(())
12256        }
12257    }
12258
12259    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeyResult {
12260        #[inline(always)]
12261        fn new_empty() -> Self {
12262            Self { key_id: fidl::new_empty!(u16, D), status: fidl::new_empty!(i32, D) }
12263        }
12264
12265        #[inline]
12266        unsafe fn decode(
12267            &mut self,
12268            decoder: &mut fidl::encoding::Decoder<'_, D>,
12269            offset: usize,
12270            _depth: fidl::encoding::Depth,
12271        ) -> fidl::Result<()> {
12272            decoder.debug_check_bounds::<Self>(offset);
12273            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
12274            // Verify that padding bytes are zero.
12275            let ptr = unsafe { buf_ptr.offset(0) };
12276            let padval = unsafe { (ptr as *const u32).read_unaligned() };
12277            let mask = 0xffff0000u32;
12278            let maskedval = padval & mask;
12279            if maskedval != 0 {
12280                return Err(fidl::Error::NonZeroPadding {
12281                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
12282                });
12283            }
12284            // Copy from the buffer into the object.
12285            unsafe {
12286                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
12287            }
12288            Ok(())
12289        }
12290    }
12291
12292    impl fidl::encoding::ValueTypeMarker for SetKeysConfirm {
12293        type Borrowed<'a> = &'a Self;
12294        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12295            value
12296        }
12297    }
12298
12299    unsafe impl fidl::encoding::TypeMarker for SetKeysConfirm {
12300        type Owned = Self;
12301
12302        #[inline(always)]
12303        fn inline_align(_context: fidl::encoding::Context) -> usize {
12304            8
12305        }
12306
12307        #[inline(always)]
12308        fn inline_size(_context: fidl::encoding::Context) -> usize {
12309            16
12310        }
12311    }
12312
12313    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeysConfirm, D>
12314        for &SetKeysConfirm
12315    {
12316        #[inline]
12317        unsafe fn encode(
12318            self,
12319            encoder: &mut fidl::encoding::Encoder<'_, D>,
12320            offset: usize,
12321            _depth: fidl::encoding::Depth,
12322        ) -> fidl::Result<()> {
12323            encoder.debug_check_bounds::<SetKeysConfirm>(offset);
12324            // Delegate to tuple encoding.
12325            fidl::encoding::Encode::<SetKeysConfirm, D>::encode(
12326                (
12327                    <fidl::encoding::UnboundedVector<SetKeyResult> as fidl::encoding::ValueTypeMarker>::borrow(&self.results),
12328                ),
12329                encoder, offset, _depth
12330            )
12331        }
12332    }
12333    unsafe impl<
12334        D: fidl::encoding::ResourceDialect,
12335        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<SetKeyResult>, D>,
12336    > fidl::encoding::Encode<SetKeysConfirm, D> for (T0,)
12337    {
12338        #[inline]
12339        unsafe fn encode(
12340            self,
12341            encoder: &mut fidl::encoding::Encoder<'_, D>,
12342            offset: usize,
12343            depth: fidl::encoding::Depth,
12344        ) -> fidl::Result<()> {
12345            encoder.debug_check_bounds::<SetKeysConfirm>(offset);
12346            // Zero out padding regions. There's no need to apply masks
12347            // because the unmasked parts will be overwritten by fields.
12348            // Write the fields.
12349            self.0.encode(encoder, offset + 0, depth)?;
12350            Ok(())
12351        }
12352    }
12353
12354    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeysConfirm {
12355        #[inline(always)]
12356        fn new_empty() -> Self {
12357            Self { results: fidl::new_empty!(fidl::encoding::UnboundedVector<SetKeyResult>, D) }
12358        }
12359
12360        #[inline]
12361        unsafe fn decode(
12362            &mut self,
12363            decoder: &mut fidl::encoding::Decoder<'_, D>,
12364            offset: usize,
12365            _depth: fidl::encoding::Depth,
12366        ) -> fidl::Result<()> {
12367            decoder.debug_check_bounds::<Self>(offset);
12368            // Verify that padding bytes are zero.
12369            fidl::decode!(
12370                fidl::encoding::UnboundedVector<SetKeyResult>,
12371                D,
12372                &mut self.results,
12373                decoder,
12374                offset + 0,
12375                _depth
12376            )?;
12377            Ok(())
12378        }
12379    }
12380
12381    impl fidl::encoding::ValueTypeMarker for SetKeysRequest {
12382        type Borrowed<'a> = &'a Self;
12383        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12384            value
12385        }
12386    }
12387
12388    unsafe impl fidl::encoding::TypeMarker for SetKeysRequest {
12389        type Owned = Self;
12390
12391        #[inline(always)]
12392        fn inline_align(_context: fidl::encoding::Context) -> usize {
12393            8
12394        }
12395
12396        #[inline(always)]
12397        fn inline_size(_context: fidl::encoding::Context) -> usize {
12398            16
12399        }
12400    }
12401
12402    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeysRequest, D>
12403        for &SetKeysRequest
12404    {
12405        #[inline]
12406        unsafe fn encode(
12407            self,
12408            encoder: &mut fidl::encoding::Encoder<'_, D>,
12409            offset: usize,
12410            _depth: fidl::encoding::Depth,
12411        ) -> fidl::Result<()> {
12412            encoder.debug_check_bounds::<SetKeysRequest>(offset);
12413            // Delegate to tuple encoding.
12414            fidl::encoding::Encode::<SetKeysRequest, D>::encode(
12415                (
12416                    <fidl::encoding::UnboundedVector<SetKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.keylist),
12417                ),
12418                encoder, offset, _depth
12419            )
12420        }
12421    }
12422    unsafe impl<
12423        D: fidl::encoding::ResourceDialect,
12424        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<SetKeyDescriptor>, D>,
12425    > fidl::encoding::Encode<SetKeysRequest, D> for (T0,)
12426    {
12427        #[inline]
12428        unsafe fn encode(
12429            self,
12430            encoder: &mut fidl::encoding::Encoder<'_, D>,
12431            offset: usize,
12432            depth: fidl::encoding::Depth,
12433        ) -> fidl::Result<()> {
12434            encoder.debug_check_bounds::<SetKeysRequest>(offset);
12435            // Zero out padding regions. There's no need to apply masks
12436            // because the unmasked parts will be overwritten by fields.
12437            // Write the fields.
12438            self.0.encode(encoder, offset + 0, depth)?;
12439            Ok(())
12440        }
12441    }
12442
12443    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeysRequest {
12444        #[inline(always)]
12445        fn new_empty() -> Self {
12446            Self { keylist: fidl::new_empty!(fidl::encoding::UnboundedVector<SetKeyDescriptor>, D) }
12447        }
12448
12449        #[inline]
12450        unsafe fn decode(
12451            &mut self,
12452            decoder: &mut fidl::encoding::Decoder<'_, D>,
12453            offset: usize,
12454            _depth: fidl::encoding::Depth,
12455        ) -> fidl::Result<()> {
12456            decoder.debug_check_bounds::<Self>(offset);
12457            // Verify that padding bytes are zero.
12458            fidl::decode!(
12459                fidl::encoding::UnboundedVector<SetKeyDescriptor>,
12460                D,
12461                &mut self.keylist,
12462                decoder,
12463                offset + 0,
12464                _depth
12465            )?;
12466            Ok(())
12467        }
12468    }
12469
12470    impl fidl::encoding::ValueTypeMarker for StartCaptureFramesRequest {
12471        type Borrowed<'a> = &'a Self;
12472        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12473            value
12474        }
12475    }
12476
12477    unsafe impl fidl::encoding::TypeMarker for StartCaptureFramesRequest {
12478        type Owned = Self;
12479
12480        #[inline(always)]
12481        fn inline_align(_context: fidl::encoding::Context) -> usize {
12482            4
12483        }
12484
12485        #[inline(always)]
12486        fn inline_size(_context: fidl::encoding::Context) -> usize {
12487            4
12488        }
12489    }
12490
12491    unsafe impl<D: fidl::encoding::ResourceDialect>
12492        fidl::encoding::Encode<StartCaptureFramesRequest, D> for &StartCaptureFramesRequest
12493    {
12494        #[inline]
12495        unsafe fn encode(
12496            self,
12497            encoder: &mut fidl::encoding::Encoder<'_, D>,
12498            offset: usize,
12499            _depth: fidl::encoding::Depth,
12500        ) -> fidl::Result<()> {
12501            encoder.debug_check_bounds::<StartCaptureFramesRequest>(offset);
12502            // Delegate to tuple encoding.
12503            fidl::encoding::Encode::<StartCaptureFramesRequest, D>::encode(
12504                (<MgmtFrameCaptureFlags as fidl::encoding::ValueTypeMarker>::borrow(
12505                    &self.mgmt_frame_flags,
12506                ),),
12507                encoder,
12508                offset,
12509                _depth,
12510            )
12511        }
12512    }
12513    unsafe impl<
12514        D: fidl::encoding::ResourceDialect,
12515        T0: fidl::encoding::Encode<MgmtFrameCaptureFlags, D>,
12516    > fidl::encoding::Encode<StartCaptureFramesRequest, D> for (T0,)
12517    {
12518        #[inline]
12519        unsafe fn encode(
12520            self,
12521            encoder: &mut fidl::encoding::Encoder<'_, D>,
12522            offset: usize,
12523            depth: fidl::encoding::Depth,
12524        ) -> fidl::Result<()> {
12525            encoder.debug_check_bounds::<StartCaptureFramesRequest>(offset);
12526            // Zero out padding regions. There's no need to apply masks
12527            // because the unmasked parts will be overwritten by fields.
12528            // Write the fields.
12529            self.0.encode(encoder, offset + 0, depth)?;
12530            Ok(())
12531        }
12532    }
12533
12534    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12535        for StartCaptureFramesRequest
12536    {
12537        #[inline(always)]
12538        fn new_empty() -> Self {
12539            Self { mgmt_frame_flags: fidl::new_empty!(MgmtFrameCaptureFlags, D) }
12540        }
12541
12542        #[inline]
12543        unsafe fn decode(
12544            &mut self,
12545            decoder: &mut fidl::encoding::Decoder<'_, D>,
12546            offset: usize,
12547            _depth: fidl::encoding::Depth,
12548        ) -> fidl::Result<()> {
12549            decoder.debug_check_bounds::<Self>(offset);
12550            // Verify that padding bytes are zero.
12551            fidl::decode!(
12552                MgmtFrameCaptureFlags,
12553                D,
12554                &mut self.mgmt_frame_flags,
12555                decoder,
12556                offset + 0,
12557                _depth
12558            )?;
12559            Ok(())
12560        }
12561    }
12562
12563    impl fidl::encoding::ValueTypeMarker for StartCaptureFramesResponse {
12564        type Borrowed<'a> = &'a Self;
12565        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12566            value
12567        }
12568    }
12569
12570    unsafe impl fidl::encoding::TypeMarker for StartCaptureFramesResponse {
12571        type Owned = Self;
12572
12573        #[inline(always)]
12574        fn inline_align(_context: fidl::encoding::Context) -> usize {
12575            4
12576        }
12577
12578        #[inline(always)]
12579        fn inline_size(_context: fidl::encoding::Context) -> usize {
12580            8
12581        }
12582    }
12583
12584    unsafe impl<D: fidl::encoding::ResourceDialect>
12585        fidl::encoding::Encode<StartCaptureFramesResponse, D> for &StartCaptureFramesResponse
12586    {
12587        #[inline]
12588        unsafe fn encode(
12589            self,
12590            encoder: &mut fidl::encoding::Encoder<'_, D>,
12591            offset: usize,
12592            _depth: fidl::encoding::Depth,
12593        ) -> fidl::Result<()> {
12594            encoder.debug_check_bounds::<StartCaptureFramesResponse>(offset);
12595            // Delegate to tuple encoding.
12596            fidl::encoding::Encode::<StartCaptureFramesResponse, D>::encode(
12597                (
12598                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
12599                    <MgmtFrameCaptureFlags as fidl::encoding::ValueTypeMarker>::borrow(
12600                        &self.supported_mgmt_frames,
12601                    ),
12602                ),
12603                encoder,
12604                offset,
12605                _depth,
12606            )
12607        }
12608    }
12609    unsafe impl<
12610        D: fidl::encoding::ResourceDialect,
12611        T0: fidl::encoding::Encode<i32, D>,
12612        T1: fidl::encoding::Encode<MgmtFrameCaptureFlags, D>,
12613    > fidl::encoding::Encode<StartCaptureFramesResponse, D> for (T0, T1)
12614    {
12615        #[inline]
12616        unsafe fn encode(
12617            self,
12618            encoder: &mut fidl::encoding::Encoder<'_, D>,
12619            offset: usize,
12620            depth: fidl::encoding::Depth,
12621        ) -> fidl::Result<()> {
12622            encoder.debug_check_bounds::<StartCaptureFramesResponse>(offset);
12623            // Zero out padding regions. There's no need to apply masks
12624            // because the unmasked parts will be overwritten by fields.
12625            // Write the fields.
12626            self.0.encode(encoder, offset + 0, depth)?;
12627            self.1.encode(encoder, offset + 4, depth)?;
12628            Ok(())
12629        }
12630    }
12631
12632    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12633        for StartCaptureFramesResponse
12634    {
12635        #[inline(always)]
12636        fn new_empty() -> Self {
12637            Self {
12638                status: fidl::new_empty!(i32, D),
12639                supported_mgmt_frames: fidl::new_empty!(MgmtFrameCaptureFlags, D),
12640            }
12641        }
12642
12643        #[inline]
12644        unsafe fn decode(
12645            &mut self,
12646            decoder: &mut fidl::encoding::Decoder<'_, D>,
12647            offset: usize,
12648            _depth: fidl::encoding::Depth,
12649        ) -> fidl::Result<()> {
12650            decoder.debug_check_bounds::<Self>(offset);
12651            // Verify that padding bytes are zero.
12652            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
12653            fidl::decode!(
12654                MgmtFrameCaptureFlags,
12655                D,
12656                &mut self.supported_mgmt_frames,
12657                decoder,
12658                offset + 4,
12659                _depth
12660            )?;
12661            Ok(())
12662        }
12663    }
12664
12665    impl fidl::encoding::ValueTypeMarker for StartConfirm {
12666        type Borrowed<'a> = &'a Self;
12667        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12668            value
12669        }
12670    }
12671
12672    unsafe impl fidl::encoding::TypeMarker for StartConfirm {
12673        type Owned = Self;
12674
12675        #[inline(always)]
12676        fn inline_align(_context: fidl::encoding::Context) -> usize {
12677            4
12678        }
12679
12680        #[inline(always)]
12681        fn inline_size(_context: fidl::encoding::Context) -> usize {
12682            4
12683        }
12684    }
12685
12686    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartConfirm, D>
12687        for &StartConfirm
12688    {
12689        #[inline]
12690        unsafe fn encode(
12691            self,
12692            encoder: &mut fidl::encoding::Encoder<'_, D>,
12693            offset: usize,
12694            _depth: fidl::encoding::Depth,
12695        ) -> fidl::Result<()> {
12696            encoder.debug_check_bounds::<StartConfirm>(offset);
12697            // Delegate to tuple encoding.
12698            fidl::encoding::Encode::<StartConfirm, D>::encode(
12699                (<StartResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),),
12700                encoder,
12701                offset,
12702                _depth,
12703            )
12704        }
12705    }
12706    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartResultCode, D>>
12707        fidl::encoding::Encode<StartConfirm, D> for (T0,)
12708    {
12709        #[inline]
12710        unsafe fn encode(
12711            self,
12712            encoder: &mut fidl::encoding::Encoder<'_, D>,
12713            offset: usize,
12714            depth: fidl::encoding::Depth,
12715        ) -> fidl::Result<()> {
12716            encoder.debug_check_bounds::<StartConfirm>(offset);
12717            // Zero out padding regions. There's no need to apply masks
12718            // because the unmasked parts will be overwritten by fields.
12719            // Write the fields.
12720            self.0.encode(encoder, offset + 0, depth)?;
12721            Ok(())
12722        }
12723    }
12724
12725    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartConfirm {
12726        #[inline(always)]
12727        fn new_empty() -> Self {
12728            Self { result_code: fidl::new_empty!(StartResultCode, D) }
12729        }
12730
12731        #[inline]
12732        unsafe fn decode(
12733            &mut self,
12734            decoder: &mut fidl::encoding::Decoder<'_, D>,
12735            offset: usize,
12736            _depth: fidl::encoding::Depth,
12737        ) -> fidl::Result<()> {
12738            decoder.debug_check_bounds::<Self>(offset);
12739            // Verify that padding bytes are zero.
12740            fidl::decode!(StartResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
12741            Ok(())
12742        }
12743    }
12744
12745    impl fidl::encoding::ValueTypeMarker for StartRequest {
12746        type Borrowed<'a> = &'a Self;
12747        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12748            value
12749        }
12750    }
12751
12752    unsafe impl fidl::encoding::TypeMarker for StartRequest {
12753        type Owned = Self;
12754
12755        #[inline(always)]
12756        fn inline_align(_context: fidl::encoding::Context) -> usize {
12757            8
12758        }
12759
12760        #[inline(always)]
12761        fn inline_size(_context: fidl::encoding::Context) -> usize {
12762            96
12763        }
12764    }
12765
12766    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartRequest, D>
12767        for &StartRequest
12768    {
12769        #[inline]
12770        unsafe fn encode(
12771            self,
12772            encoder: &mut fidl::encoding::Encoder<'_, D>,
12773            offset: usize,
12774            _depth: fidl::encoding::Depth,
12775        ) -> fidl::Result<()> {
12776            encoder.debug_check_bounds::<StartRequest>(offset);
12777            // Delegate to tuple encoding.
12778            fidl::encoding::Encode::<StartRequest, D>::encode(
12779                (
12780                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid),
12781                    <fidl_fuchsia_wlan_ieee80211_common::BssType as fidl::encoding::ValueTypeMarker>::borrow(&self.bss_type),
12782                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.beacon_period),
12783                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.dtim_period),
12784                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.channel),
12785                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
12786                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
12787                    <Country as fidl::encoding::ValueTypeMarker>::borrow(&self.country),
12788                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.mesh_id),
12789                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>> as fidl::encoding::ValueTypeMarker>::borrow(&self.rsne),
12790                    <fidl_fuchsia_wlan_ieee80211_common::WlanPhyType as fidl::encoding::ValueTypeMarker>::borrow(&self.phy),
12791                    <fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth as fidl::encoding::ValueTypeMarker>::borrow(&self.channel_bandwidth),
12792                ),
12793                encoder, offset, _depth
12794            )
12795        }
12796    }
12797    unsafe impl<
12798        D: fidl::encoding::ResourceDialect,
12799        T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
12800        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::BssType, D>,
12801        T2: fidl::encoding::Encode<u16, D>,
12802        T3: fidl::encoding::Encode<u8, D>,
12803        T4: fidl::encoding::Encode<u8, D>,
12804        T5: fidl::encoding::Encode<u16, D>,
12805        T6: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
12806        T7: fidl::encoding::Encode<Country, D>,
12807        T8: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
12808        T9: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>, D>,
12809        T10: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::WlanPhyType, D>,
12810        T11: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth, D>,
12811    > fidl::encoding::Encode<StartRequest, D>
12812        for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
12813    {
12814        #[inline]
12815        unsafe fn encode(
12816            self,
12817            encoder: &mut fidl::encoding::Encoder<'_, D>,
12818            offset: usize,
12819            depth: fidl::encoding::Depth,
12820        ) -> fidl::Result<()> {
12821            encoder.debug_check_bounds::<StartRequest>(offset);
12822            // Zero out padding regions. There's no need to apply masks
12823            // because the unmasked parts will be overwritten by fields.
12824            unsafe {
12825                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
12826                (ptr as *mut u64).write_unaligned(0);
12827            }
12828            unsafe {
12829                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(48);
12830                (ptr as *mut u64).write_unaligned(0);
12831            }
12832            // Write the fields.
12833            self.0.encode(encoder, offset + 0, depth)?;
12834            self.1.encode(encoder, offset + 16, depth)?;
12835            self.2.encode(encoder, offset + 20, depth)?;
12836            self.3.encode(encoder, offset + 22, depth)?;
12837            self.4.encode(encoder, offset + 23, depth)?;
12838            self.5.encode(encoder, offset + 24, depth)?;
12839            self.6.encode(encoder, offset + 32, depth)?;
12840            self.7.encode(encoder, offset + 48, depth)?;
12841            self.8.encode(encoder, offset + 56, depth)?;
12842            self.9.encode(encoder, offset + 72, depth)?;
12843            self.10.encode(encoder, offset + 88, depth)?;
12844            self.11.encode(encoder, offset + 92, depth)?;
12845            Ok(())
12846        }
12847    }
12848
12849    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartRequest {
12850        #[inline(always)]
12851        fn new_empty() -> Self {
12852            Self {
12853                ssid: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
12854                bss_type: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssType, D),
12855                beacon_period: fidl::new_empty!(u16, D),
12856                dtim_period: fidl::new_empty!(u8, D),
12857                channel: fidl::new_empty!(u8, D),
12858                capability_info: fidl::new_empty!(u16, D),
12859                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
12860                country: fidl::new_empty!(Country, D),
12861                mesh_id: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
12862                rsne: fidl::new_empty!(
12863                    fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
12864                    D
12865                ),
12866                phy: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::WlanPhyType, D),
12867                channel_bandwidth: fidl::new_empty!(
12868                    fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth,
12869                    D
12870                ),
12871            }
12872        }
12873
12874        #[inline]
12875        unsafe fn decode(
12876            &mut self,
12877            decoder: &mut fidl::encoding::Decoder<'_, D>,
12878            offset: usize,
12879            _depth: fidl::encoding::Depth,
12880        ) -> fidl::Result<()> {
12881            decoder.debug_check_bounds::<Self>(offset);
12882            // Verify that padding bytes are zero.
12883            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
12884            let padval = unsafe { (ptr as *const u64).read_unaligned() };
12885            let mask = 0xffffffffffff0000u64;
12886            let maskedval = padval & mask;
12887            if maskedval != 0 {
12888                return Err(fidl::Error::NonZeroPadding {
12889                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
12890                });
12891            }
12892            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(48) };
12893            let padval = unsafe { (ptr as *const u64).read_unaligned() };
12894            let mask = 0xffffffffff000000u64;
12895            let maskedval = padval & mask;
12896            if maskedval != 0 {
12897                return Err(fidl::Error::NonZeroPadding {
12898                    padding_start: offset + 48 + ((mask as u64).trailing_zeros() / 8) as usize,
12899                });
12900            }
12901            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.ssid, decoder, offset + 0, _depth)?;
12902            fidl::decode!(
12903                fidl_fuchsia_wlan_ieee80211_common::BssType,
12904                D,
12905                &mut self.bss_type,
12906                decoder,
12907                offset + 16,
12908                _depth
12909            )?;
12910            fidl::decode!(u16, D, &mut self.beacon_period, decoder, offset + 20, _depth)?;
12911            fidl::decode!(u8, D, &mut self.dtim_period, decoder, offset + 22, _depth)?;
12912            fidl::decode!(u8, D, &mut self.channel, decoder, offset + 23, _depth)?;
12913            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 24, _depth)?;
12914            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 32, _depth)?;
12915            fidl::decode!(Country, D, &mut self.country, decoder, offset + 48, _depth)?;
12916            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.mesh_id, decoder, offset + 56, _depth)?;
12917            fidl::decode!(
12918                fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
12919                D,
12920                &mut self.rsne,
12921                decoder,
12922                offset + 72,
12923                _depth
12924            )?;
12925            fidl::decode!(
12926                fidl_fuchsia_wlan_ieee80211_common::WlanPhyType,
12927                D,
12928                &mut self.phy,
12929                decoder,
12930                offset + 88,
12931                _depth
12932            )?;
12933            fidl::decode!(
12934                fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth,
12935                D,
12936                &mut self.channel_bandwidth,
12937                decoder,
12938                offset + 92,
12939                _depth
12940            )?;
12941            Ok(())
12942        }
12943    }
12944
12945    impl fidl::encoding::ValueTypeMarker for StopConfirm {
12946        type Borrowed<'a> = &'a Self;
12947        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12948            value
12949        }
12950    }
12951
12952    unsafe impl fidl::encoding::TypeMarker for StopConfirm {
12953        type Owned = Self;
12954
12955        #[inline(always)]
12956        fn inline_align(_context: fidl::encoding::Context) -> usize {
12957            4
12958        }
12959
12960        #[inline(always)]
12961        fn inline_size(_context: fidl::encoding::Context) -> usize {
12962            4
12963        }
12964    }
12965
12966    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopConfirm, D>
12967        for &StopConfirm
12968    {
12969        #[inline]
12970        unsafe fn encode(
12971            self,
12972            encoder: &mut fidl::encoding::Encoder<'_, D>,
12973            offset: usize,
12974            _depth: fidl::encoding::Depth,
12975        ) -> fidl::Result<()> {
12976            encoder.debug_check_bounds::<StopConfirm>(offset);
12977            // Delegate to tuple encoding.
12978            fidl::encoding::Encode::<StopConfirm, D>::encode(
12979                (<StopResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),),
12980                encoder,
12981                offset,
12982                _depth,
12983            )
12984        }
12985    }
12986    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopResultCode, D>>
12987        fidl::encoding::Encode<StopConfirm, D> for (T0,)
12988    {
12989        #[inline]
12990        unsafe fn encode(
12991            self,
12992            encoder: &mut fidl::encoding::Encoder<'_, D>,
12993            offset: usize,
12994            depth: fidl::encoding::Depth,
12995        ) -> fidl::Result<()> {
12996            encoder.debug_check_bounds::<StopConfirm>(offset);
12997            // Zero out padding regions. There's no need to apply masks
12998            // because the unmasked parts will be overwritten by fields.
12999            // Write the fields.
13000            self.0.encode(encoder, offset + 0, depth)?;
13001            Ok(())
13002        }
13003    }
13004
13005    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopConfirm {
13006        #[inline(always)]
13007        fn new_empty() -> Self {
13008            Self { result_code: fidl::new_empty!(StopResultCode, D) }
13009        }
13010
13011        #[inline]
13012        unsafe fn decode(
13013            &mut self,
13014            decoder: &mut fidl::encoding::Decoder<'_, D>,
13015            offset: usize,
13016            _depth: fidl::encoding::Depth,
13017        ) -> fidl::Result<()> {
13018            decoder.debug_check_bounds::<Self>(offset);
13019            // Verify that padding bytes are zero.
13020            fidl::decode!(StopResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
13021            Ok(())
13022        }
13023    }
13024
13025    impl fidl::encoding::ValueTypeMarker for StopRequest {
13026        type Borrowed<'a> = &'a Self;
13027        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13028            value
13029        }
13030    }
13031
13032    unsafe impl fidl::encoding::TypeMarker for StopRequest {
13033        type Owned = Self;
13034
13035        #[inline(always)]
13036        fn inline_align(_context: fidl::encoding::Context) -> usize {
13037            8
13038        }
13039
13040        #[inline(always)]
13041        fn inline_size(_context: fidl::encoding::Context) -> usize {
13042            16
13043        }
13044    }
13045
13046    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopRequest, D>
13047        for &StopRequest
13048    {
13049        #[inline]
13050        unsafe fn encode(
13051            self,
13052            encoder: &mut fidl::encoding::Encoder<'_, D>,
13053            offset: usize,
13054            _depth: fidl::encoding::Depth,
13055        ) -> fidl::Result<()> {
13056            encoder.debug_check_bounds::<StopRequest>(offset);
13057            // Delegate to tuple encoding.
13058            fidl::encoding::Encode::<StopRequest, D>::encode(
13059                (<fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(
13060                    &self.ssid,
13061                ),),
13062                encoder,
13063                offset,
13064                _depth,
13065            )
13066        }
13067    }
13068    unsafe impl<
13069        D: fidl::encoding::ResourceDialect,
13070        T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
13071    > fidl::encoding::Encode<StopRequest, D> for (T0,)
13072    {
13073        #[inline]
13074        unsafe fn encode(
13075            self,
13076            encoder: &mut fidl::encoding::Encoder<'_, D>,
13077            offset: usize,
13078            depth: fidl::encoding::Depth,
13079        ) -> fidl::Result<()> {
13080            encoder.debug_check_bounds::<StopRequest>(offset);
13081            // Zero out padding regions. There's no need to apply masks
13082            // because the unmasked parts will be overwritten by fields.
13083            // Write the fields.
13084            self.0.encode(encoder, offset + 0, depth)?;
13085            Ok(())
13086        }
13087    }
13088
13089    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopRequest {
13090        #[inline(always)]
13091        fn new_empty() -> Self {
13092            Self { ssid: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D) }
13093        }
13094
13095        #[inline]
13096        unsafe fn decode(
13097            &mut self,
13098            decoder: &mut fidl::encoding::Decoder<'_, D>,
13099            offset: usize,
13100            _depth: fidl::encoding::Depth,
13101        ) -> fidl::Result<()> {
13102            decoder.debug_check_bounds::<Self>(offset);
13103            // Verify that padding bytes are zero.
13104            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.ssid, decoder, offset + 0, _depth)?;
13105            Ok(())
13106        }
13107    }
13108
13109    impl fidl::encoding::ValueTypeMarker for WmmParameter {
13110        type Borrowed<'a> = &'a Self;
13111        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13112            value
13113        }
13114    }
13115
13116    unsafe impl fidl::encoding::TypeMarker for WmmParameter {
13117        type Owned = Self;
13118
13119        #[inline(always)]
13120        fn inline_align(_context: fidl::encoding::Context) -> usize {
13121            1
13122        }
13123
13124        #[inline(always)]
13125        fn inline_size(_context: fidl::encoding::Context) -> usize {
13126            18
13127        }
13128        #[inline(always)]
13129        fn encode_is_copy() -> bool {
13130            true
13131        }
13132
13133        #[inline(always)]
13134        fn decode_is_copy() -> bool {
13135            true
13136        }
13137    }
13138
13139    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WmmParameter, D>
13140        for &WmmParameter
13141    {
13142        #[inline]
13143        unsafe fn encode(
13144            self,
13145            encoder: &mut fidl::encoding::Encoder<'_, D>,
13146            offset: usize,
13147            _depth: fidl::encoding::Depth,
13148        ) -> fidl::Result<()> {
13149            encoder.debug_check_bounds::<WmmParameter>(offset);
13150            unsafe {
13151                // Copy the object into the buffer.
13152                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
13153                (buf_ptr as *mut WmmParameter)
13154                    .write_unaligned((self as *const WmmParameter).read());
13155                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
13156                // done second because the memcpy will write garbage to these bytes.
13157            }
13158            Ok(())
13159        }
13160    }
13161    unsafe impl<
13162        D: fidl::encoding::ResourceDialect,
13163        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 18>, D>,
13164    > fidl::encoding::Encode<WmmParameter, D> for (T0,)
13165    {
13166        #[inline]
13167        unsafe fn encode(
13168            self,
13169            encoder: &mut fidl::encoding::Encoder<'_, D>,
13170            offset: usize,
13171            depth: fidl::encoding::Depth,
13172        ) -> fidl::Result<()> {
13173            encoder.debug_check_bounds::<WmmParameter>(offset);
13174            // Zero out padding regions. There's no need to apply masks
13175            // because the unmasked parts will be overwritten by fields.
13176            // Write the fields.
13177            self.0.encode(encoder, offset + 0, depth)?;
13178            Ok(())
13179        }
13180    }
13181
13182    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WmmParameter {
13183        #[inline(always)]
13184        fn new_empty() -> Self {
13185            Self { bytes: fidl::new_empty!(fidl::encoding::Array<u8, 18>, D) }
13186        }
13187
13188        #[inline]
13189        unsafe fn decode(
13190            &mut self,
13191            decoder: &mut fidl::encoding::Decoder<'_, D>,
13192            offset: usize,
13193            _depth: fidl::encoding::Depth,
13194        ) -> fidl::Result<()> {
13195            decoder.debug_check_bounds::<Self>(offset);
13196            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
13197            // Verify that padding bytes are zero.
13198            // Copy from the buffer into the object.
13199            unsafe {
13200                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 18);
13201            }
13202            Ok(())
13203        }
13204    }
13205
13206    impl fidl::encoding::ValueTypeMarker for GetIfaceHistogramStatsResponse {
13207        type Borrowed<'a> = &'a Self;
13208        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13209            value
13210        }
13211    }
13212
13213    unsafe impl fidl::encoding::TypeMarker for GetIfaceHistogramStatsResponse {
13214        type Owned = Self;
13215
13216        #[inline(always)]
13217        fn inline_align(_context: fidl::encoding::Context) -> usize {
13218            8
13219        }
13220
13221        #[inline(always)]
13222        fn inline_size(_context: fidl::encoding::Context) -> usize {
13223            16
13224        }
13225    }
13226
13227    unsafe impl<D: fidl::encoding::ResourceDialect>
13228        fidl::encoding::Encode<GetIfaceHistogramStatsResponse, D>
13229        for &GetIfaceHistogramStatsResponse
13230    {
13231        #[inline]
13232        unsafe fn encode(
13233            self,
13234            encoder: &mut fidl::encoding::Encoder<'_, D>,
13235            offset: usize,
13236            _depth: fidl::encoding::Depth,
13237        ) -> fidl::Result<()> {
13238            encoder.debug_check_bounds::<GetIfaceHistogramStatsResponse>(offset);
13239            encoder.write_num::<u64>(self.ordinal(), offset);
13240            match self {
13241            GetIfaceHistogramStatsResponse::Stats(ref val) => {
13242                fidl::encoding::encode_in_envelope::<fidl_fuchsia_wlan_stats_common::IfaceHistogramStats, D>(
13243                    <fidl_fuchsia_wlan_stats_common::IfaceHistogramStats as fidl::encoding::ValueTypeMarker>::borrow(val),
13244                    encoder, offset + 8, _depth
13245                )
13246            }
13247            GetIfaceHistogramStatsResponse::ErrorStatus(ref val) => {
13248                fidl::encoding::encode_in_envelope::<i32, D>(
13249                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
13250                    encoder, offset + 8, _depth
13251                )
13252            }
13253        }
13254        }
13255    }
13256
13257    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13258        for GetIfaceHistogramStatsResponse
13259    {
13260        #[inline(always)]
13261        fn new_empty() -> Self {
13262            Self::Stats(fidl::new_empty!(fidl_fuchsia_wlan_stats_common::IfaceHistogramStats, D))
13263        }
13264
13265        #[inline]
13266        unsafe fn decode(
13267            &mut self,
13268            decoder: &mut fidl::encoding::Decoder<'_, D>,
13269            offset: usize,
13270            mut depth: fidl::encoding::Depth,
13271        ) -> fidl::Result<()> {
13272            decoder.debug_check_bounds::<Self>(offset);
13273            #[allow(unused_variables)]
13274            let next_out_of_line = decoder.next_out_of_line();
13275            let handles_before = decoder.remaining_handles();
13276            let (ordinal, inlined, num_bytes, num_handles) =
13277                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
13278
13279            let member_inline_size = match ordinal {
13280            1 => <fidl_fuchsia_wlan_stats_common::IfaceHistogramStats as fidl::encoding::TypeMarker>::inline_size(decoder.context),
13281            2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
13282            _ => return Err(fidl::Error::UnknownUnionTag),
13283        };
13284
13285            if inlined != (member_inline_size <= 4) {
13286                return Err(fidl::Error::InvalidInlineBitInEnvelope);
13287            }
13288            let _inner_offset;
13289            if inlined {
13290                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
13291                _inner_offset = offset + 8;
13292            } else {
13293                depth.increment()?;
13294                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13295            }
13296            match ordinal {
13297                1 => {
13298                    #[allow(irrefutable_let_patterns)]
13299                    if let GetIfaceHistogramStatsResponse::Stats(_) = self {
13300                        // Do nothing, read the value into the object
13301                    } else {
13302                        // Initialize `self` to the right variant
13303                        *self = GetIfaceHistogramStatsResponse::Stats(fidl::new_empty!(
13304                            fidl_fuchsia_wlan_stats_common::IfaceHistogramStats,
13305                            D
13306                        ));
13307                    }
13308                    #[allow(irrefutable_let_patterns)]
13309                    if let GetIfaceHistogramStatsResponse::Stats(ref mut val) = self {
13310                        fidl::decode!(
13311                            fidl_fuchsia_wlan_stats_common::IfaceHistogramStats,
13312                            D,
13313                            val,
13314                            decoder,
13315                            _inner_offset,
13316                            depth
13317                        )?;
13318                    } else {
13319                        unreachable!()
13320                    }
13321                }
13322                2 => {
13323                    #[allow(irrefutable_let_patterns)]
13324                    if let GetIfaceHistogramStatsResponse::ErrorStatus(_) = self {
13325                        // Do nothing, read the value into the object
13326                    } else {
13327                        // Initialize `self` to the right variant
13328                        *self =
13329                            GetIfaceHistogramStatsResponse::ErrorStatus(fidl::new_empty!(i32, D));
13330                    }
13331                    #[allow(irrefutable_let_patterns)]
13332                    if let GetIfaceHistogramStatsResponse::ErrorStatus(ref mut val) = self {
13333                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
13334                    } else {
13335                        unreachable!()
13336                    }
13337                }
13338                ordinal => panic!("unexpected ordinal {:?}", ordinal),
13339            }
13340            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
13341                return Err(fidl::Error::InvalidNumBytesInEnvelope);
13342            }
13343            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13344                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13345            }
13346            Ok(())
13347        }
13348    }
13349
13350    impl fidl::encoding::ValueTypeMarker for GetIfaceStatsResponse {
13351        type Borrowed<'a> = &'a Self;
13352        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13353            value
13354        }
13355    }
13356
13357    unsafe impl fidl::encoding::TypeMarker for GetIfaceStatsResponse {
13358        type Owned = Self;
13359
13360        #[inline(always)]
13361        fn inline_align(_context: fidl::encoding::Context) -> usize {
13362            8
13363        }
13364
13365        #[inline(always)]
13366        fn inline_size(_context: fidl::encoding::Context) -> usize {
13367            16
13368        }
13369    }
13370
13371    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<GetIfaceStatsResponse, D>
13372        for &GetIfaceStatsResponse
13373    {
13374        #[inline]
13375        unsafe fn encode(
13376            self,
13377            encoder: &mut fidl::encoding::Encoder<'_, D>,
13378            offset: usize,
13379            _depth: fidl::encoding::Depth,
13380        ) -> fidl::Result<()> {
13381            encoder.debug_check_bounds::<GetIfaceStatsResponse>(offset);
13382            encoder.write_num::<u64>(self.ordinal(), offset);
13383            match self {
13384            GetIfaceStatsResponse::Stats(ref val) => {
13385                fidl::encoding::encode_in_envelope::<fidl_fuchsia_wlan_stats_common::IfaceStats, D>(
13386                    <fidl_fuchsia_wlan_stats_common::IfaceStats as fidl::encoding::ValueTypeMarker>::borrow(val),
13387                    encoder, offset + 8, _depth
13388                )
13389            }
13390            GetIfaceStatsResponse::ErrorStatus(ref val) => {
13391                fidl::encoding::encode_in_envelope::<i32, D>(
13392                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
13393                    encoder, offset + 8, _depth
13394                )
13395            }
13396        }
13397        }
13398    }
13399
13400    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GetIfaceStatsResponse {
13401        #[inline(always)]
13402        fn new_empty() -> Self {
13403            Self::Stats(fidl::new_empty!(fidl_fuchsia_wlan_stats_common::IfaceStats, D))
13404        }
13405
13406        #[inline]
13407        unsafe fn decode(
13408            &mut self,
13409            decoder: &mut fidl::encoding::Decoder<'_, D>,
13410            offset: usize,
13411            mut depth: fidl::encoding::Depth,
13412        ) -> fidl::Result<()> {
13413            decoder.debug_check_bounds::<Self>(offset);
13414            #[allow(unused_variables)]
13415            let next_out_of_line = decoder.next_out_of_line();
13416            let handles_before = decoder.remaining_handles();
13417            let (ordinal, inlined, num_bytes, num_handles) =
13418                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
13419
13420            let member_inline_size = match ordinal {
13421            1 => <fidl_fuchsia_wlan_stats_common::IfaceStats as fidl::encoding::TypeMarker>::inline_size(decoder.context),
13422            2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
13423            _ => return Err(fidl::Error::UnknownUnionTag),
13424        };
13425
13426            if inlined != (member_inline_size <= 4) {
13427                return Err(fidl::Error::InvalidInlineBitInEnvelope);
13428            }
13429            let _inner_offset;
13430            if inlined {
13431                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
13432                _inner_offset = offset + 8;
13433            } else {
13434                depth.increment()?;
13435                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13436            }
13437            match ordinal {
13438                1 => {
13439                    #[allow(irrefutable_let_patterns)]
13440                    if let GetIfaceStatsResponse::Stats(_) = self {
13441                        // Do nothing, read the value into the object
13442                    } else {
13443                        // Initialize `self` to the right variant
13444                        *self = GetIfaceStatsResponse::Stats(fidl::new_empty!(
13445                            fidl_fuchsia_wlan_stats_common::IfaceStats,
13446                            D
13447                        ));
13448                    }
13449                    #[allow(irrefutable_let_patterns)]
13450                    if let GetIfaceStatsResponse::Stats(ref mut val) = self {
13451                        fidl::decode!(
13452                            fidl_fuchsia_wlan_stats_common::IfaceStats,
13453                            D,
13454                            val,
13455                            decoder,
13456                            _inner_offset,
13457                            depth
13458                        )?;
13459                    } else {
13460                        unreachable!()
13461                    }
13462                }
13463                2 => {
13464                    #[allow(irrefutable_let_patterns)]
13465                    if let GetIfaceStatsResponse::ErrorStatus(_) = self {
13466                        // Do nothing, read the value into the object
13467                    } else {
13468                        // Initialize `self` to the right variant
13469                        *self = GetIfaceStatsResponse::ErrorStatus(fidl::new_empty!(i32, D));
13470                    }
13471                    #[allow(irrefutable_let_patterns)]
13472                    if let GetIfaceStatsResponse::ErrorStatus(ref mut val) = self {
13473                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
13474                    } else {
13475                        unreachable!()
13476                    }
13477                }
13478                ordinal => panic!("unexpected ordinal {:?}", ordinal),
13479            }
13480            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
13481                return Err(fidl::Error::InvalidNumBytesInEnvelope);
13482            }
13483            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13484                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13485            }
13486            Ok(())
13487        }
13488    }
13489}