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 primary 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, a primary 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 primary
390    /// channel to use when starting an AP.
391    pub primary_channels: Vec<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber>,
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, PartialEq)]
975pub struct MlmeStartReqRequest {
976    pub req: StartRequest,
977}
978
979impl fidl::Persistable for MlmeStartReqRequest {}
980
981#[derive(Clone, Debug, PartialEq)]
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 primary: fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
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, PartialEq)]
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<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber>,
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, PartialEq)]
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 primary: fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
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 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<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.primary_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<
2699                fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>,
2700                D,
2701            >,
2702    > fidl::encoding::Encode<BandCapability, D> for (T0, T1, T2, T3, T4)
2703    {
2704        #[inline]
2705        unsafe fn encode(
2706            self,
2707            encoder: &mut fidl::encoding::Encoder<'_, D>,
2708            offset: usize,
2709            depth: fidl::encoding::Depth,
2710        ) -> fidl::Result<()> {
2711            encoder.debug_check_bounds::<BandCapability>(offset);
2712            // Zero out padding regions. There's no need to apply masks
2713            // because the unmasked parts will be overwritten by fields.
2714            unsafe {
2715                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2716                (ptr as *mut u64).write_unaligned(0);
2717            }
2718            // Write the fields.
2719            self.0.encode(encoder, offset + 0, depth)?;
2720            self.1.encode(encoder, offset + 8, depth)?;
2721            self.2.encode(encoder, offset + 24, depth)?;
2722            self.3.encode(encoder, offset + 32, depth)?;
2723            self.4.encode(encoder, offset + 40, depth)?;
2724            Ok(())
2725        }
2726    }
2727
2728    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandCapability {
2729        #[inline(always)]
2730        fn new_empty() -> Self {
2731            Self {
2732                band: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::WlanBand, D),
2733                basic_rates: fidl::new_empty!(fidl::encoding::Vector<u8, 12>, D),
2734                ht_cap: fidl::new_empty!(
2735                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
2736                    D
2737                ),
2738                vht_cap: fidl::new_empty!(
2739                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
2740                    D
2741                ),
2742                primary_channels: fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D),
2743            }
2744        }
2745
2746        #[inline]
2747        unsafe fn decode(
2748            &mut self,
2749            decoder: &mut fidl::encoding::Decoder<'_, D>,
2750            offset: usize,
2751            _depth: fidl::encoding::Depth,
2752        ) -> fidl::Result<()> {
2753            decoder.debug_check_bounds::<Self>(offset);
2754            // Verify that padding bytes are zero.
2755            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2756            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2757            let mask = 0xffffffffffffff00u64;
2758            let maskedval = padval & mask;
2759            if maskedval != 0 {
2760                return Err(fidl::Error::NonZeroPadding {
2761                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2762                });
2763            }
2764            fidl::decode!(
2765                fidl_fuchsia_wlan_ieee80211_common::WlanBand,
2766                D,
2767                &mut self.band,
2768                decoder,
2769                offset + 0,
2770                _depth
2771            )?;
2772            fidl::decode!(fidl::encoding::Vector<u8, 12>, D, &mut self.basic_rates, decoder, offset + 8, _depth)?;
2773            fidl::decode!(
2774                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
2775                D,
2776                &mut self.ht_cap,
2777                decoder,
2778                offset + 24,
2779                _depth
2780            )?;
2781            fidl::decode!(
2782                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
2783                D,
2784                &mut self.vht_cap,
2785                decoder,
2786                offset + 32,
2787                _depth
2788            )?;
2789            fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D, &mut self.primary_channels, decoder, offset + 40, _depth)?;
2790            Ok(())
2791        }
2792    }
2793
2794    impl fidl::encoding::ValueTypeMarker for CapturedFrameResult {
2795        type Borrowed<'a> = &'a Self;
2796        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2797            value
2798        }
2799    }
2800
2801    unsafe impl fidl::encoding::TypeMarker for CapturedFrameResult {
2802        type Owned = Self;
2803
2804        #[inline(always)]
2805        fn inline_align(_context: fidl::encoding::Context) -> usize {
2806            8
2807        }
2808
2809        #[inline(always)]
2810        fn inline_size(_context: fidl::encoding::Context) -> usize {
2811            16
2812        }
2813    }
2814
2815    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CapturedFrameResult, D>
2816        for &CapturedFrameResult
2817    {
2818        #[inline]
2819        unsafe fn encode(
2820            self,
2821            encoder: &mut fidl::encoding::Encoder<'_, D>,
2822            offset: usize,
2823            _depth: fidl::encoding::Depth,
2824        ) -> fidl::Result<()> {
2825            encoder.debug_check_bounds::<CapturedFrameResult>(offset);
2826            // Delegate to tuple encoding.
2827            fidl::encoding::Encode::<CapturedFrameResult, D>::encode(
2828                (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
2829                    &self.frame,
2830                ),),
2831                encoder,
2832                offset,
2833                _depth,
2834            )
2835        }
2836    }
2837    unsafe impl<
2838        D: fidl::encoding::ResourceDialect,
2839        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2840    > fidl::encoding::Encode<CapturedFrameResult, D> for (T0,)
2841    {
2842        #[inline]
2843        unsafe fn encode(
2844            self,
2845            encoder: &mut fidl::encoding::Encoder<'_, D>,
2846            offset: usize,
2847            depth: fidl::encoding::Depth,
2848        ) -> fidl::Result<()> {
2849            encoder.debug_check_bounds::<CapturedFrameResult>(offset);
2850            // Zero out padding regions. There's no need to apply masks
2851            // because the unmasked parts will be overwritten by fields.
2852            // Write the fields.
2853            self.0.encode(encoder, offset + 0, depth)?;
2854            Ok(())
2855        }
2856    }
2857
2858    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CapturedFrameResult {
2859        #[inline(always)]
2860        fn new_empty() -> Self {
2861            Self { frame: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
2862        }
2863
2864        #[inline]
2865        unsafe fn decode(
2866            &mut self,
2867            decoder: &mut fidl::encoding::Decoder<'_, D>,
2868            offset: usize,
2869            _depth: fidl::encoding::Depth,
2870        ) -> fidl::Result<()> {
2871            decoder.debug_check_bounds::<Self>(offset);
2872            // Verify that padding bytes are zero.
2873            fidl::decode!(
2874                fidl::encoding::UnboundedVector<u8>,
2875                D,
2876                &mut self.frame,
2877                decoder,
2878                offset + 0,
2879                _depth
2880            )?;
2881            Ok(())
2882        }
2883    }
2884
2885    impl fidl::encoding::ValueTypeMarker for ConnectConfirm {
2886        type Borrowed<'a> = &'a Self;
2887        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2888            value
2889        }
2890    }
2891
2892    unsafe impl fidl::encoding::TypeMarker for ConnectConfirm {
2893        type Owned = Self;
2894
2895        #[inline(always)]
2896        fn inline_align(_context: fidl::encoding::Context) -> usize {
2897            8
2898        }
2899
2900        #[inline(always)]
2901        fn inline_size(_context: fidl::encoding::Context) -> usize {
2902            32
2903        }
2904    }
2905
2906    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectConfirm, D>
2907        for &ConnectConfirm
2908    {
2909        #[inline]
2910        unsafe fn encode(
2911            self,
2912            encoder: &mut fidl::encoding::Encoder<'_, D>,
2913            offset: usize,
2914            _depth: fidl::encoding::Depth,
2915        ) -> fidl::Result<()> {
2916            encoder.debug_check_bounds::<ConnectConfirm>(offset);
2917            // Delegate to tuple encoding.
2918            fidl::encoding::Encode::<ConnectConfirm, D>::encode(
2919                (
2920                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
2921                    <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
2922                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
2923                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
2924                ),
2925                encoder, offset, _depth
2926            )
2927        }
2928    }
2929    unsafe impl<
2930        D: fidl::encoding::ResourceDialect,
2931        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2932        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>,
2933        T2: fidl::encoding::Encode<u16, D>,
2934        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2935    > fidl::encoding::Encode<ConnectConfirm, D> for (T0, T1, T2, T3)
2936    {
2937        #[inline]
2938        unsafe fn encode(
2939            self,
2940            encoder: &mut fidl::encoding::Encoder<'_, D>,
2941            offset: usize,
2942            depth: fidl::encoding::Depth,
2943        ) -> fidl::Result<()> {
2944            encoder.debug_check_bounds::<ConnectConfirm>(offset);
2945            // Zero out padding regions. There's no need to apply masks
2946            // because the unmasked parts will be overwritten by fields.
2947            unsafe {
2948                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2949                (ptr as *mut u64).write_unaligned(0);
2950            }
2951            // Write the fields.
2952            self.0.encode(encoder, offset + 0, depth)?;
2953            self.1.encode(encoder, offset + 6, depth)?;
2954            self.2.encode(encoder, offset + 8, depth)?;
2955            self.3.encode(encoder, offset + 16, depth)?;
2956            Ok(())
2957        }
2958    }
2959
2960    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectConfirm {
2961        #[inline(always)]
2962        fn new_empty() -> Self {
2963            Self {
2964                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2965                result_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D),
2966                association_id: fidl::new_empty!(u16, D),
2967                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
2968            }
2969        }
2970
2971        #[inline]
2972        unsafe fn decode(
2973            &mut self,
2974            decoder: &mut fidl::encoding::Decoder<'_, D>,
2975            offset: usize,
2976            _depth: fidl::encoding::Depth,
2977        ) -> fidl::Result<()> {
2978            decoder.debug_check_bounds::<Self>(offset);
2979            // Verify that padding bytes are zero.
2980            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2981            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2982            let mask = 0xffffffffffff0000u64;
2983            let maskedval = padval & mask;
2984            if maskedval != 0 {
2985                return Err(fidl::Error::NonZeroPadding {
2986                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2987                });
2988            }
2989            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2990            fidl::decode!(
2991                fidl_fuchsia_wlan_ieee80211_common::StatusCode,
2992                D,
2993                &mut self.result_code,
2994                decoder,
2995                offset + 6,
2996                _depth
2997            )?;
2998            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 8, _depth)?;
2999            fidl::decode!(
3000                fidl::encoding::UnboundedVector<u8>,
3001                D,
3002                &mut self.association_ies,
3003                decoder,
3004                offset + 16,
3005                _depth
3006            )?;
3007            Ok(())
3008        }
3009    }
3010
3011    impl fidl::encoding::ValueTypeMarker for ConnectRequest {
3012        type Borrowed<'a> = &'a Self;
3013        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3014            value
3015        }
3016    }
3017
3018    unsafe impl fidl::encoding::TypeMarker for ConnectRequest {
3019        type Owned = Self;
3020
3021        #[inline(always)]
3022        fn inline_align(_context: fidl::encoding::Context) -> usize {
3023            8
3024        }
3025
3026        #[inline(always)]
3027        fn inline_size(_context: fidl::encoding::Context) -> usize {
3028            104
3029        }
3030    }
3031
3032    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectRequest, D>
3033        for &ConnectRequest
3034    {
3035        #[inline]
3036        unsafe fn encode(
3037            self,
3038            encoder: &mut fidl::encoding::Encoder<'_, D>,
3039            offset: usize,
3040            _depth: fidl::encoding::Depth,
3041        ) -> fidl::Result<()> {
3042            encoder.debug_check_bounds::<ConnectRequest>(offset);
3043            // Delegate to tuple encoding.
3044            fidl::encoding::Encode::<ConnectRequest, D>::encode(
3045                (
3046                    <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
3047                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.connect_failure_timeout),
3048                    <AuthenticationTypes as fidl::encoding::ValueTypeMarker>::borrow(&self.auth_type),
3049                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.sae_password),
3050                    <fidl::encoding::Boxed<SetKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.wep_key),
3051                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow(&self.security_ie),
3052                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_internal_common::OwePublicKey> as fidl::encoding::ValueTypeMarker>::borrow(&self.owe_public_key),
3053                ),
3054                encoder, offset, _depth
3055            )
3056        }
3057    }
3058    unsafe impl<
3059        D: fidl::encoding::ResourceDialect,
3060        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>,
3061        T1: fidl::encoding::Encode<u32, D>,
3062        T2: fidl::encoding::Encode<AuthenticationTypes, D>,
3063        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
3064        T4: fidl::encoding::Encode<fidl::encoding::Boxed<SetKeyDescriptor>, D>,
3065        T5: fidl::encoding::Encode<fidl::encoding::Vector<u8, 257>, D>,
3066        T6: fidl::encoding::Encode<
3067                fidl::encoding::Boxed<fidl_fuchsia_wlan_internal_common::OwePublicKey>,
3068                D,
3069            >,
3070    > fidl::encoding::Encode<ConnectRequest, D> for (T0, T1, T2, T3, T4, T5, T6)
3071    {
3072        #[inline]
3073        unsafe fn encode(
3074            self,
3075            encoder: &mut fidl::encoding::Encoder<'_, D>,
3076            offset: usize,
3077            depth: fidl::encoding::Depth,
3078        ) -> fidl::Result<()> {
3079            encoder.debug_check_bounds::<ConnectRequest>(offset);
3080            // Zero out padding regions. There's no need to apply masks
3081            // because the unmasked parts will be overwritten by fields.
3082            // Write the fields.
3083            self.0.encode(encoder, offset + 0, depth)?;
3084            self.1.encode(encoder, offset + 48, depth)?;
3085            self.2.encode(encoder, offset + 52, depth)?;
3086            self.3.encode(encoder, offset + 56, depth)?;
3087            self.4.encode(encoder, offset + 72, depth)?;
3088            self.5.encode(encoder, offset + 80, depth)?;
3089            self.6.encode(encoder, offset + 96, depth)?;
3090            Ok(())
3091        }
3092    }
3093
3094    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectRequest {
3095        #[inline(always)]
3096        fn new_empty() -> Self {
3097            Self {
3098                selected_bss: fidl::new_empty!(
3099                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
3100                    D
3101                ),
3102                connect_failure_timeout: fidl::new_empty!(u32, D),
3103                auth_type: fidl::new_empty!(AuthenticationTypes, D),
3104                sae_password: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
3105                wep_key: fidl::new_empty!(fidl::encoding::Boxed<SetKeyDescriptor>, D),
3106                security_ie: fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D),
3107                owe_public_key: fidl::new_empty!(
3108                    fidl::encoding::Boxed<fidl_fuchsia_wlan_internal_common::OwePublicKey>,
3109                    D
3110                ),
3111            }
3112        }
3113
3114        #[inline]
3115        unsafe fn decode(
3116            &mut self,
3117            decoder: &mut fidl::encoding::Decoder<'_, D>,
3118            offset: usize,
3119            _depth: fidl::encoding::Depth,
3120        ) -> fidl::Result<()> {
3121            decoder.debug_check_bounds::<Self>(offset);
3122            // Verify that padding bytes are zero.
3123            fidl::decode!(
3124                fidl_fuchsia_wlan_ieee80211_common::BssDescription,
3125                D,
3126                &mut self.selected_bss,
3127                decoder,
3128                offset + 0,
3129                _depth
3130            )?;
3131            fidl::decode!(u32, D, &mut self.connect_failure_timeout, decoder, offset + 48, _depth)?;
3132            fidl::decode!(
3133                AuthenticationTypes,
3134                D,
3135                &mut self.auth_type,
3136                decoder,
3137                offset + 52,
3138                _depth
3139            )?;
3140            fidl::decode!(
3141                fidl::encoding::UnboundedVector<u8>,
3142                D,
3143                &mut self.sae_password,
3144                decoder,
3145                offset + 56,
3146                _depth
3147            )?;
3148            fidl::decode!(
3149                fidl::encoding::Boxed<SetKeyDescriptor>,
3150                D,
3151                &mut self.wep_key,
3152                decoder,
3153                offset + 72,
3154                _depth
3155            )?;
3156            fidl::decode!(fidl::encoding::Vector<u8, 257>, D, &mut self.security_ie, decoder, offset + 80, _depth)?;
3157            fidl::decode!(
3158                fidl::encoding::Boxed<fidl_fuchsia_wlan_internal_common::OwePublicKey>,
3159                D,
3160                &mut self.owe_public_key,
3161                decoder,
3162                offset + 96,
3163                _depth
3164            )?;
3165            Ok(())
3166        }
3167    }
3168
3169    impl fidl::encoding::ValueTypeMarker for Country {
3170        type Borrowed<'a> = &'a Self;
3171        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3172            value
3173        }
3174    }
3175
3176    unsafe impl fidl::encoding::TypeMarker for Country {
3177        type Owned = Self;
3178
3179        #[inline(always)]
3180        fn inline_align(_context: fidl::encoding::Context) -> usize {
3181            1
3182        }
3183
3184        #[inline(always)]
3185        fn inline_size(_context: fidl::encoding::Context) -> usize {
3186            3
3187        }
3188        #[inline(always)]
3189        fn encode_is_copy() -> bool {
3190            true
3191        }
3192
3193        #[inline(always)]
3194        fn decode_is_copy() -> bool {
3195            true
3196        }
3197    }
3198
3199    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Country, D> for &Country {
3200        #[inline]
3201        unsafe fn encode(
3202            self,
3203            encoder: &mut fidl::encoding::Encoder<'_, D>,
3204            offset: usize,
3205            _depth: fidl::encoding::Depth,
3206        ) -> fidl::Result<()> {
3207            encoder.debug_check_bounds::<Country>(offset);
3208            unsafe {
3209                // Copy the object into the buffer.
3210                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3211                (buf_ptr as *mut Country).write_unaligned((self as *const Country).read());
3212                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3213                // done second because the memcpy will write garbage to these bytes.
3214            }
3215            Ok(())
3216        }
3217    }
3218    unsafe impl<
3219        D: fidl::encoding::ResourceDialect,
3220        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 2>, D>,
3221        T1: fidl::encoding::Encode<u8, D>,
3222    > fidl::encoding::Encode<Country, D> for (T0, T1)
3223    {
3224        #[inline]
3225        unsafe fn encode(
3226            self,
3227            encoder: &mut fidl::encoding::Encoder<'_, D>,
3228            offset: usize,
3229            depth: fidl::encoding::Depth,
3230        ) -> fidl::Result<()> {
3231            encoder.debug_check_bounds::<Country>(offset);
3232            // Zero out padding regions. There's no need to apply masks
3233            // because the unmasked parts will be overwritten by fields.
3234            // Write the fields.
3235            self.0.encode(encoder, offset + 0, depth)?;
3236            self.1.encode(encoder, offset + 2, depth)?;
3237            Ok(())
3238        }
3239    }
3240
3241    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Country {
3242        #[inline(always)]
3243        fn new_empty() -> Self {
3244            Self {
3245                alpha2: fidl::new_empty!(fidl::encoding::Array<u8, 2>, D),
3246                suffix: fidl::new_empty!(u8, D),
3247            }
3248        }
3249
3250        #[inline]
3251        unsafe fn decode(
3252            &mut self,
3253            decoder: &mut fidl::encoding::Decoder<'_, D>,
3254            offset: usize,
3255            _depth: fidl::encoding::Depth,
3256        ) -> fidl::Result<()> {
3257            decoder.debug_check_bounds::<Self>(offset);
3258            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3259            // Verify that padding bytes are zero.
3260            // Copy from the buffer into the object.
3261            unsafe {
3262                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 3);
3263            }
3264            Ok(())
3265        }
3266    }
3267
3268    impl fidl::encoding::ValueTypeMarker for DeauthenticateConfirm {
3269        type Borrowed<'a> = &'a Self;
3270        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3271            value
3272        }
3273    }
3274
3275    unsafe impl fidl::encoding::TypeMarker for DeauthenticateConfirm {
3276        type Owned = Self;
3277
3278        #[inline(always)]
3279        fn inline_align(_context: fidl::encoding::Context) -> usize {
3280            1
3281        }
3282
3283        #[inline(always)]
3284        fn inline_size(_context: fidl::encoding::Context) -> usize {
3285            6
3286        }
3287        #[inline(always)]
3288        fn encode_is_copy() -> bool {
3289            true
3290        }
3291
3292        #[inline(always)]
3293        fn decode_is_copy() -> bool {
3294            true
3295        }
3296    }
3297
3298    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeauthenticateConfirm, D>
3299        for &DeauthenticateConfirm
3300    {
3301        #[inline]
3302        unsafe fn encode(
3303            self,
3304            encoder: &mut fidl::encoding::Encoder<'_, D>,
3305            offset: usize,
3306            _depth: fidl::encoding::Depth,
3307        ) -> fidl::Result<()> {
3308            encoder.debug_check_bounds::<DeauthenticateConfirm>(offset);
3309            unsafe {
3310                // Copy the object into the buffer.
3311                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3312                (buf_ptr as *mut DeauthenticateConfirm)
3313                    .write_unaligned((self as *const DeauthenticateConfirm).read());
3314                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3315                // done second because the memcpy will write garbage to these bytes.
3316            }
3317            Ok(())
3318        }
3319    }
3320    unsafe impl<
3321        D: fidl::encoding::ResourceDialect,
3322        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3323    > fidl::encoding::Encode<DeauthenticateConfirm, D> for (T0,)
3324    {
3325        #[inline]
3326        unsafe fn encode(
3327            self,
3328            encoder: &mut fidl::encoding::Encoder<'_, D>,
3329            offset: usize,
3330            depth: fidl::encoding::Depth,
3331        ) -> fidl::Result<()> {
3332            encoder.debug_check_bounds::<DeauthenticateConfirm>(offset);
3333            // Zero out padding regions. There's no need to apply masks
3334            // because the unmasked parts will be overwritten by fields.
3335            // Write the fields.
3336            self.0.encode(encoder, offset + 0, depth)?;
3337            Ok(())
3338        }
3339    }
3340
3341    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeauthenticateConfirm {
3342        #[inline(always)]
3343        fn new_empty() -> Self {
3344            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
3345        }
3346
3347        #[inline]
3348        unsafe fn decode(
3349            &mut self,
3350            decoder: &mut fidl::encoding::Decoder<'_, D>,
3351            offset: usize,
3352            _depth: fidl::encoding::Depth,
3353        ) -> fidl::Result<()> {
3354            decoder.debug_check_bounds::<Self>(offset);
3355            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3356            // Verify that padding bytes are zero.
3357            // Copy from the buffer into the object.
3358            unsafe {
3359                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
3360            }
3361            Ok(())
3362        }
3363    }
3364
3365    impl fidl::encoding::ValueTypeMarker for DeauthenticateIndication {
3366        type Borrowed<'a> = &'a Self;
3367        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3368            value
3369        }
3370    }
3371
3372    unsafe impl fidl::encoding::TypeMarker for DeauthenticateIndication {
3373        type Owned = Self;
3374
3375        #[inline(always)]
3376        fn inline_align(_context: fidl::encoding::Context) -> usize {
3377            2
3378        }
3379
3380        #[inline(always)]
3381        fn inline_size(_context: fidl::encoding::Context) -> usize {
3382            10
3383        }
3384    }
3385
3386    unsafe impl<D: fidl::encoding::ResourceDialect>
3387        fidl::encoding::Encode<DeauthenticateIndication, D> for &DeauthenticateIndication
3388    {
3389        #[inline]
3390        unsafe fn encode(
3391            self,
3392            encoder: &mut fidl::encoding::Encoder<'_, D>,
3393            offset: usize,
3394            _depth: fidl::encoding::Depth,
3395        ) -> fidl::Result<()> {
3396            encoder.debug_check_bounds::<DeauthenticateIndication>(offset);
3397            // Delegate to tuple encoding.
3398            fidl::encoding::Encode::<DeauthenticateIndication, D>::encode(
3399                (
3400                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3401                    <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3402                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.locally_initiated),
3403                ),
3404                encoder, offset, _depth
3405            )
3406        }
3407    }
3408    unsafe impl<
3409        D: fidl::encoding::ResourceDialect,
3410        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3411        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>,
3412        T2: fidl::encoding::Encode<bool, D>,
3413    > fidl::encoding::Encode<DeauthenticateIndication, D> for (T0, T1, T2)
3414    {
3415        #[inline]
3416        unsafe fn encode(
3417            self,
3418            encoder: &mut fidl::encoding::Encoder<'_, D>,
3419            offset: usize,
3420            depth: fidl::encoding::Depth,
3421        ) -> fidl::Result<()> {
3422            encoder.debug_check_bounds::<DeauthenticateIndication>(offset);
3423            // Zero out padding regions. There's no need to apply masks
3424            // because the unmasked parts will be overwritten by fields.
3425            unsafe {
3426                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3427                (ptr as *mut u16).write_unaligned(0);
3428            }
3429            // Write the fields.
3430            self.0.encode(encoder, offset + 0, depth)?;
3431            self.1.encode(encoder, offset + 6, depth)?;
3432            self.2.encode(encoder, offset + 8, depth)?;
3433            Ok(())
3434        }
3435    }
3436
3437    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3438        for DeauthenticateIndication
3439    {
3440        #[inline(always)]
3441        fn new_empty() -> Self {
3442            Self {
3443                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3444                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D),
3445                locally_initiated: fidl::new_empty!(bool, D),
3446            }
3447        }
3448
3449        #[inline]
3450        unsafe fn decode(
3451            &mut self,
3452            decoder: &mut fidl::encoding::Decoder<'_, D>,
3453            offset: usize,
3454            _depth: fidl::encoding::Depth,
3455        ) -> fidl::Result<()> {
3456            decoder.debug_check_bounds::<Self>(offset);
3457            // Verify that padding bytes are zero.
3458            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
3459            let padval = unsafe { (ptr as *const u16).read_unaligned() };
3460            let mask = 0xff00u16;
3461            let maskedval = padval & mask;
3462            if maskedval != 0 {
3463                return Err(fidl::Error::NonZeroPadding {
3464                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
3465                });
3466            }
3467            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
3468            fidl::decode!(
3469                fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
3470                D,
3471                &mut self.reason_code,
3472                decoder,
3473                offset + 6,
3474                _depth
3475            )?;
3476            fidl::decode!(bool, D, &mut self.locally_initiated, decoder, offset + 8, _depth)?;
3477            Ok(())
3478        }
3479    }
3480
3481    impl fidl::encoding::ValueTypeMarker for DeauthenticateRequest {
3482        type Borrowed<'a> = &'a Self;
3483        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3484            value
3485        }
3486    }
3487
3488    unsafe impl fidl::encoding::TypeMarker for DeauthenticateRequest {
3489        type Owned = Self;
3490
3491        #[inline(always)]
3492        fn inline_align(_context: fidl::encoding::Context) -> usize {
3493            2
3494        }
3495
3496        #[inline(always)]
3497        fn inline_size(_context: fidl::encoding::Context) -> usize {
3498            8
3499        }
3500    }
3501
3502    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeauthenticateRequest, D>
3503        for &DeauthenticateRequest
3504    {
3505        #[inline]
3506        unsafe fn encode(
3507            self,
3508            encoder: &mut fidl::encoding::Encoder<'_, D>,
3509            offset: usize,
3510            _depth: fidl::encoding::Depth,
3511        ) -> fidl::Result<()> {
3512            encoder.debug_check_bounds::<DeauthenticateRequest>(offset);
3513            // Delegate to tuple encoding.
3514            fidl::encoding::Encode::<DeauthenticateRequest, D>::encode(
3515                (
3516                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3517                    <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3518                ),
3519                encoder, offset, _depth
3520            )
3521        }
3522    }
3523    unsafe impl<
3524        D: fidl::encoding::ResourceDialect,
3525        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3526        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>,
3527    > fidl::encoding::Encode<DeauthenticateRequest, D> for (T0, T1)
3528    {
3529        #[inline]
3530        unsafe fn encode(
3531            self,
3532            encoder: &mut fidl::encoding::Encoder<'_, D>,
3533            offset: usize,
3534            depth: fidl::encoding::Depth,
3535        ) -> fidl::Result<()> {
3536            encoder.debug_check_bounds::<DeauthenticateRequest>(offset);
3537            // Zero out padding regions. There's no need to apply masks
3538            // because the unmasked parts will be overwritten by fields.
3539            // Write the fields.
3540            self.0.encode(encoder, offset + 0, depth)?;
3541            self.1.encode(encoder, offset + 6, depth)?;
3542            Ok(())
3543        }
3544    }
3545
3546    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeauthenticateRequest {
3547        #[inline(always)]
3548        fn new_empty() -> Self {
3549            Self {
3550                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3551                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D),
3552            }
3553        }
3554
3555        #[inline]
3556        unsafe fn decode(
3557            &mut self,
3558            decoder: &mut fidl::encoding::Decoder<'_, D>,
3559            offset: usize,
3560            _depth: fidl::encoding::Depth,
3561        ) -> fidl::Result<()> {
3562            decoder.debug_check_bounds::<Self>(offset);
3563            // Verify that padding bytes are zero.
3564            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
3565            fidl::decode!(
3566                fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
3567                D,
3568                &mut self.reason_code,
3569                decoder,
3570                offset + 6,
3571                _depth
3572            )?;
3573            Ok(())
3574        }
3575    }
3576
3577    impl fidl::encoding::ValueTypeMarker for DeleteKeyDescriptor {
3578        type Borrowed<'a> = &'a Self;
3579        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3580            value
3581        }
3582    }
3583
3584    unsafe impl fidl::encoding::TypeMarker for DeleteKeyDescriptor {
3585        type Owned = Self;
3586
3587        #[inline(always)]
3588        fn inline_align(_context: fidl::encoding::Context) -> usize {
3589            4
3590        }
3591
3592        #[inline(always)]
3593        fn inline_size(_context: fidl::encoding::Context) -> usize {
3594            16
3595        }
3596    }
3597
3598    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeleteKeyDescriptor, D>
3599        for &DeleteKeyDescriptor
3600    {
3601        #[inline]
3602        unsafe fn encode(
3603            self,
3604            encoder: &mut fidl::encoding::Encoder<'_, D>,
3605            offset: usize,
3606            _depth: fidl::encoding::Depth,
3607        ) -> fidl::Result<()> {
3608            encoder.debug_check_bounds::<DeleteKeyDescriptor>(offset);
3609            // Delegate to tuple encoding.
3610            fidl::encoding::Encode::<DeleteKeyDescriptor, D>::encode(
3611                (
3612                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.key_id),
3613                    <KeyType as fidl::encoding::ValueTypeMarker>::borrow(&self.key_type),
3614                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
3615                        &self.address,
3616                    ),
3617                ),
3618                encoder,
3619                offset,
3620                _depth,
3621            )
3622        }
3623    }
3624    unsafe impl<
3625        D: fidl::encoding::ResourceDialect,
3626        T0: fidl::encoding::Encode<u16, D>,
3627        T1: fidl::encoding::Encode<KeyType, D>,
3628        T2: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3629    > fidl::encoding::Encode<DeleteKeyDescriptor, D> for (T0, T1, T2)
3630    {
3631        #[inline]
3632        unsafe fn encode(
3633            self,
3634            encoder: &mut fidl::encoding::Encoder<'_, D>,
3635            offset: usize,
3636            depth: fidl::encoding::Depth,
3637        ) -> fidl::Result<()> {
3638            encoder.debug_check_bounds::<DeleteKeyDescriptor>(offset);
3639            // Zero out padding regions. There's no need to apply masks
3640            // because the unmasked parts will be overwritten by fields.
3641            unsafe {
3642                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3643                (ptr as *mut u32).write_unaligned(0);
3644            }
3645            unsafe {
3646                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(12);
3647                (ptr as *mut u32).write_unaligned(0);
3648            }
3649            // Write the fields.
3650            self.0.encode(encoder, offset + 0, depth)?;
3651            self.1.encode(encoder, offset + 4, depth)?;
3652            self.2.encode(encoder, offset + 8, depth)?;
3653            Ok(())
3654        }
3655    }
3656
3657    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeleteKeyDescriptor {
3658        #[inline(always)]
3659        fn new_empty() -> Self {
3660            Self {
3661                key_id: fidl::new_empty!(u16, D),
3662                key_type: fidl::new_empty!(KeyType, D),
3663                address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3664            }
3665        }
3666
3667        #[inline]
3668        unsafe fn decode(
3669            &mut self,
3670            decoder: &mut fidl::encoding::Decoder<'_, D>,
3671            offset: usize,
3672            _depth: fidl::encoding::Depth,
3673        ) -> fidl::Result<()> {
3674            decoder.debug_check_bounds::<Self>(offset);
3675            // Verify that padding bytes are zero.
3676            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3677            let padval = unsafe { (ptr as *const u32).read_unaligned() };
3678            let mask = 0xffff0000u32;
3679            let maskedval = padval & mask;
3680            if maskedval != 0 {
3681                return Err(fidl::Error::NonZeroPadding {
3682                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3683                });
3684            }
3685            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(12) };
3686            let padval = unsafe { (ptr as *const u32).read_unaligned() };
3687            let mask = 0xffff0000u32;
3688            let maskedval = padval & mask;
3689            if maskedval != 0 {
3690                return Err(fidl::Error::NonZeroPadding {
3691                    padding_start: offset + 12 + ((mask as u64).trailing_zeros() / 8) as usize,
3692                });
3693            }
3694            fidl::decode!(u16, D, &mut self.key_id, decoder, offset + 0, _depth)?;
3695            fidl::decode!(KeyType, D, &mut self.key_type, decoder, offset + 4, _depth)?;
3696            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.address, decoder, offset + 8, _depth)?;
3697            Ok(())
3698        }
3699    }
3700
3701    impl fidl::encoding::ValueTypeMarker for DeleteKeysRequest {
3702        type Borrowed<'a> = &'a Self;
3703        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3704            value
3705        }
3706    }
3707
3708    unsafe impl fidl::encoding::TypeMarker for DeleteKeysRequest {
3709        type Owned = Self;
3710
3711        #[inline(always)]
3712        fn inline_align(_context: fidl::encoding::Context) -> usize {
3713            8
3714        }
3715
3716        #[inline(always)]
3717        fn inline_size(_context: fidl::encoding::Context) -> usize {
3718            16
3719        }
3720    }
3721
3722    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeleteKeysRequest, D>
3723        for &DeleteKeysRequest
3724    {
3725        #[inline]
3726        unsafe fn encode(
3727            self,
3728            encoder: &mut fidl::encoding::Encoder<'_, D>,
3729            offset: usize,
3730            _depth: fidl::encoding::Depth,
3731        ) -> fidl::Result<()> {
3732            encoder.debug_check_bounds::<DeleteKeysRequest>(offset);
3733            // Delegate to tuple encoding.
3734            fidl::encoding::Encode::<DeleteKeysRequest, D>::encode(
3735                (
3736                    <fidl::encoding::UnboundedVector<DeleteKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.keylist),
3737                ),
3738                encoder, offset, _depth
3739            )
3740        }
3741    }
3742    unsafe impl<
3743        D: fidl::encoding::ResourceDialect,
3744        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<DeleteKeyDescriptor>, D>,
3745    > fidl::encoding::Encode<DeleteKeysRequest, D> for (T0,)
3746    {
3747        #[inline]
3748        unsafe fn encode(
3749            self,
3750            encoder: &mut fidl::encoding::Encoder<'_, D>,
3751            offset: usize,
3752            depth: fidl::encoding::Depth,
3753        ) -> fidl::Result<()> {
3754            encoder.debug_check_bounds::<DeleteKeysRequest>(offset);
3755            // Zero out padding regions. There's no need to apply masks
3756            // because the unmasked parts will be overwritten by fields.
3757            // Write the fields.
3758            self.0.encode(encoder, offset + 0, depth)?;
3759            Ok(())
3760        }
3761    }
3762
3763    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeleteKeysRequest {
3764        #[inline(always)]
3765        fn new_empty() -> Self {
3766            Self {
3767                keylist: fidl::new_empty!(fidl::encoding::UnboundedVector<DeleteKeyDescriptor>, D),
3768            }
3769        }
3770
3771        #[inline]
3772        unsafe fn decode(
3773            &mut self,
3774            decoder: &mut fidl::encoding::Decoder<'_, D>,
3775            offset: usize,
3776            _depth: fidl::encoding::Depth,
3777        ) -> fidl::Result<()> {
3778            decoder.debug_check_bounds::<Self>(offset);
3779            // Verify that padding bytes are zero.
3780            fidl::decode!(
3781                fidl::encoding::UnboundedVector<DeleteKeyDescriptor>,
3782                D,
3783                &mut self.keylist,
3784                decoder,
3785                offset + 0,
3786                _depth
3787            )?;
3788            Ok(())
3789        }
3790    }
3791
3792    impl fidl::encoding::ValueTypeMarker for DeviceInfo {
3793        type Borrowed<'a> = &'a Self;
3794        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3795            value
3796        }
3797    }
3798
3799    unsafe impl fidl::encoding::TypeMarker for DeviceInfo {
3800        type Owned = Self;
3801
3802        #[inline(always)]
3803        fn inline_align(_context: fidl::encoding::Context) -> usize {
3804            8
3805        }
3806
3807        #[inline(always)]
3808        fn inline_size(_context: fidl::encoding::Context) -> usize {
3809            40
3810        }
3811    }
3812
3813    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceInfo, D>
3814        for &DeviceInfo
3815    {
3816        #[inline]
3817        unsafe fn encode(
3818            self,
3819            encoder: &mut fidl::encoding::Encoder<'_, D>,
3820            offset: usize,
3821            _depth: fidl::encoding::Depth,
3822        ) -> fidl::Result<()> {
3823            encoder.debug_check_bounds::<DeviceInfo>(offset);
3824            // Delegate to tuple encoding.
3825            fidl::encoding::Encode::<DeviceInfo, D>::encode(
3826                (
3827                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.sta_addr),
3828                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.factory_addr),
3829                    <fidl_fuchsia_wlan_common_common::WlanMacRole as fidl::encoding::ValueTypeMarker>::borrow(&self.role),
3830                    <fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::ValueTypeMarker>::borrow(&self.bands),
3831                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.softmac_hardware_capability),
3832                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.qos_capable),
3833                ),
3834                encoder, offset, _depth
3835            )
3836        }
3837    }
3838    unsafe impl<
3839        D: fidl::encoding::ResourceDialect,
3840        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3841        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3842        T2: fidl::encoding::Encode<fidl_fuchsia_wlan_common_common::WlanMacRole, D>,
3843        T3: fidl::encoding::Encode<fidl::encoding::Vector<BandCapability, 16>, D>,
3844        T4: fidl::encoding::Encode<u32, D>,
3845        T5: fidl::encoding::Encode<bool, D>,
3846    > fidl::encoding::Encode<DeviceInfo, D> for (T0, T1, T2, T3, T4, T5)
3847    {
3848        #[inline]
3849        unsafe fn encode(
3850            self,
3851            encoder: &mut fidl::encoding::Encoder<'_, D>,
3852            offset: usize,
3853            depth: fidl::encoding::Depth,
3854        ) -> fidl::Result<()> {
3855            encoder.debug_check_bounds::<DeviceInfo>(offset);
3856            // Zero out padding regions. There's no need to apply masks
3857            // because the unmasked parts will be overwritten by fields.
3858            unsafe {
3859                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
3860                (ptr as *mut u64).write_unaligned(0);
3861            }
3862            // Write the fields.
3863            self.0.encode(encoder, offset + 0, depth)?;
3864            self.1.encode(encoder, offset + 6, depth)?;
3865            self.2.encode(encoder, offset + 12, depth)?;
3866            self.3.encode(encoder, offset + 16, depth)?;
3867            self.4.encode(encoder, offset + 32, depth)?;
3868            self.5.encode(encoder, offset + 36, depth)?;
3869            Ok(())
3870        }
3871    }
3872
3873    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceInfo {
3874        #[inline(always)]
3875        fn new_empty() -> Self {
3876            Self {
3877                sta_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3878                factory_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3879                role: fidl::new_empty!(fidl_fuchsia_wlan_common_common::WlanMacRole, D),
3880                bands: fidl::new_empty!(fidl::encoding::Vector<BandCapability, 16>, D),
3881                softmac_hardware_capability: fidl::new_empty!(u32, D),
3882                qos_capable: fidl::new_empty!(bool, D),
3883            }
3884        }
3885
3886        #[inline]
3887        unsafe fn decode(
3888            &mut self,
3889            decoder: &mut fidl::encoding::Decoder<'_, D>,
3890            offset: usize,
3891            _depth: fidl::encoding::Depth,
3892        ) -> fidl::Result<()> {
3893            decoder.debug_check_bounds::<Self>(offset);
3894            // Verify that padding bytes are zero.
3895            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
3896            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3897            let mask = 0xffffff0000000000u64;
3898            let maskedval = padval & mask;
3899            if maskedval != 0 {
3900                return Err(fidl::Error::NonZeroPadding {
3901                    padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
3902                });
3903            }
3904            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.sta_addr, decoder, offset + 0, _depth)?;
3905            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.factory_addr, decoder, offset + 6, _depth)?;
3906            fidl::decode!(
3907                fidl_fuchsia_wlan_common_common::WlanMacRole,
3908                D,
3909                &mut self.role,
3910                decoder,
3911                offset + 12,
3912                _depth
3913            )?;
3914            fidl::decode!(fidl::encoding::Vector<BandCapability, 16>, D, &mut self.bands, decoder, offset + 16, _depth)?;
3915            fidl::decode!(
3916                u32,
3917                D,
3918                &mut self.softmac_hardware_capability,
3919                decoder,
3920                offset + 32,
3921                _depth
3922            )?;
3923            fidl::decode!(bool, D, &mut self.qos_capable, decoder, offset + 36, _depth)?;
3924            Ok(())
3925        }
3926    }
3927
3928    impl fidl::encoding::ValueTypeMarker for DisassociateConfirm {
3929        type Borrowed<'a> = &'a Self;
3930        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3931            value
3932        }
3933    }
3934
3935    unsafe impl fidl::encoding::TypeMarker for DisassociateConfirm {
3936        type Owned = Self;
3937
3938        #[inline(always)]
3939        fn inline_align(_context: fidl::encoding::Context) -> usize {
3940            4
3941        }
3942
3943        #[inline(always)]
3944        fn inline_size(_context: fidl::encoding::Context) -> usize {
3945            4
3946        }
3947        #[inline(always)]
3948        fn encode_is_copy() -> bool {
3949            true
3950        }
3951
3952        #[inline(always)]
3953        fn decode_is_copy() -> bool {
3954            true
3955        }
3956    }
3957
3958    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisassociateConfirm, D>
3959        for &DisassociateConfirm
3960    {
3961        #[inline]
3962        unsafe fn encode(
3963            self,
3964            encoder: &mut fidl::encoding::Encoder<'_, D>,
3965            offset: usize,
3966            _depth: fidl::encoding::Depth,
3967        ) -> fidl::Result<()> {
3968            encoder.debug_check_bounds::<DisassociateConfirm>(offset);
3969            unsafe {
3970                // Copy the object into the buffer.
3971                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3972                (buf_ptr as *mut DisassociateConfirm)
3973                    .write_unaligned((self as *const DisassociateConfirm).read());
3974                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3975                // done second because the memcpy will write garbage to these bytes.
3976            }
3977            Ok(())
3978        }
3979    }
3980    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
3981        fidl::encoding::Encode<DisassociateConfirm, D> for (T0,)
3982    {
3983        #[inline]
3984        unsafe fn encode(
3985            self,
3986            encoder: &mut fidl::encoding::Encoder<'_, D>,
3987            offset: usize,
3988            depth: fidl::encoding::Depth,
3989        ) -> fidl::Result<()> {
3990            encoder.debug_check_bounds::<DisassociateConfirm>(offset);
3991            // Zero out padding regions. There's no need to apply masks
3992            // because the unmasked parts will be overwritten by fields.
3993            // Write the fields.
3994            self.0.encode(encoder, offset + 0, depth)?;
3995            Ok(())
3996        }
3997    }
3998
3999    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisassociateConfirm {
4000        #[inline(always)]
4001        fn new_empty() -> Self {
4002            Self { status: fidl::new_empty!(i32, D) }
4003        }
4004
4005        #[inline]
4006        unsafe fn decode(
4007            &mut self,
4008            decoder: &mut fidl::encoding::Decoder<'_, D>,
4009            offset: usize,
4010            _depth: fidl::encoding::Depth,
4011        ) -> fidl::Result<()> {
4012            decoder.debug_check_bounds::<Self>(offset);
4013            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
4014            // Verify that padding bytes are zero.
4015            // Copy from the buffer into the object.
4016            unsafe {
4017                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
4018            }
4019            Ok(())
4020        }
4021    }
4022
4023    impl fidl::encoding::ValueTypeMarker for DisassociateIndication {
4024        type Borrowed<'a> = &'a Self;
4025        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4026            value
4027        }
4028    }
4029
4030    unsafe impl fidl::encoding::TypeMarker for DisassociateIndication {
4031        type Owned = Self;
4032
4033        #[inline(always)]
4034        fn inline_align(_context: fidl::encoding::Context) -> usize {
4035            2
4036        }
4037
4038        #[inline(always)]
4039        fn inline_size(_context: fidl::encoding::Context) -> usize {
4040            10
4041        }
4042    }
4043
4044    unsafe impl<D: fidl::encoding::ResourceDialect>
4045        fidl::encoding::Encode<DisassociateIndication, D> for &DisassociateIndication
4046    {
4047        #[inline]
4048        unsafe fn encode(
4049            self,
4050            encoder: &mut fidl::encoding::Encoder<'_, D>,
4051            offset: usize,
4052            _depth: fidl::encoding::Depth,
4053        ) -> fidl::Result<()> {
4054            encoder.debug_check_bounds::<DisassociateIndication>(offset);
4055            // Delegate to tuple encoding.
4056            fidl::encoding::Encode::<DisassociateIndication, D>::encode(
4057                (
4058                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
4059                    <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
4060                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.locally_initiated),
4061                ),
4062                encoder, offset, _depth
4063            )
4064        }
4065    }
4066    unsafe impl<
4067        D: fidl::encoding::ResourceDialect,
4068        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4069        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>,
4070        T2: fidl::encoding::Encode<bool, D>,
4071    > fidl::encoding::Encode<DisassociateIndication, D> for (T0, T1, T2)
4072    {
4073        #[inline]
4074        unsafe fn encode(
4075            self,
4076            encoder: &mut fidl::encoding::Encoder<'_, D>,
4077            offset: usize,
4078            depth: fidl::encoding::Depth,
4079        ) -> fidl::Result<()> {
4080            encoder.debug_check_bounds::<DisassociateIndication>(offset);
4081            // Zero out padding regions. There's no need to apply masks
4082            // because the unmasked parts will be overwritten by fields.
4083            unsafe {
4084                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4085                (ptr as *mut u16).write_unaligned(0);
4086            }
4087            // Write the fields.
4088            self.0.encode(encoder, offset + 0, depth)?;
4089            self.1.encode(encoder, offset + 6, depth)?;
4090            self.2.encode(encoder, offset + 8, depth)?;
4091            Ok(())
4092        }
4093    }
4094
4095    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4096        for DisassociateIndication
4097    {
4098        #[inline(always)]
4099        fn new_empty() -> Self {
4100            Self {
4101                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4102                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D),
4103                locally_initiated: fidl::new_empty!(bool, D),
4104            }
4105        }
4106
4107        #[inline]
4108        unsafe fn decode(
4109            &mut self,
4110            decoder: &mut fidl::encoding::Decoder<'_, D>,
4111            offset: usize,
4112            _depth: fidl::encoding::Depth,
4113        ) -> fidl::Result<()> {
4114            decoder.debug_check_bounds::<Self>(offset);
4115            // Verify that padding bytes are zero.
4116            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4117            let padval = unsafe { (ptr as *const u16).read_unaligned() };
4118            let mask = 0xff00u16;
4119            let maskedval = padval & mask;
4120            if maskedval != 0 {
4121                return Err(fidl::Error::NonZeroPadding {
4122                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4123                });
4124            }
4125            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
4126            fidl::decode!(
4127                fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
4128                D,
4129                &mut self.reason_code,
4130                decoder,
4131                offset + 6,
4132                _depth
4133            )?;
4134            fidl::decode!(bool, D, &mut self.locally_initiated, decoder, offset + 8, _depth)?;
4135            Ok(())
4136        }
4137    }
4138
4139    impl fidl::encoding::ValueTypeMarker for DisassociateRequest {
4140        type Borrowed<'a> = &'a Self;
4141        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4142            value
4143        }
4144    }
4145
4146    unsafe impl fidl::encoding::TypeMarker for DisassociateRequest {
4147        type Owned = Self;
4148
4149        #[inline(always)]
4150        fn inline_align(_context: fidl::encoding::Context) -> usize {
4151            2
4152        }
4153
4154        #[inline(always)]
4155        fn inline_size(_context: fidl::encoding::Context) -> usize {
4156            8
4157        }
4158    }
4159
4160    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisassociateRequest, D>
4161        for &DisassociateRequest
4162    {
4163        #[inline]
4164        unsafe fn encode(
4165            self,
4166            encoder: &mut fidl::encoding::Encoder<'_, D>,
4167            offset: usize,
4168            _depth: fidl::encoding::Depth,
4169        ) -> fidl::Result<()> {
4170            encoder.debug_check_bounds::<DisassociateRequest>(offset);
4171            // Delegate to tuple encoding.
4172            fidl::encoding::Encode::<DisassociateRequest, D>::encode(
4173                (
4174                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
4175                    <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
4176                ),
4177                encoder, offset, _depth
4178            )
4179        }
4180    }
4181    unsafe impl<
4182        D: fidl::encoding::ResourceDialect,
4183        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4184        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>,
4185    > fidl::encoding::Encode<DisassociateRequest, D> for (T0, T1)
4186    {
4187        #[inline]
4188        unsafe fn encode(
4189            self,
4190            encoder: &mut fidl::encoding::Encoder<'_, D>,
4191            offset: usize,
4192            depth: fidl::encoding::Depth,
4193        ) -> fidl::Result<()> {
4194            encoder.debug_check_bounds::<DisassociateRequest>(offset);
4195            // Zero out padding regions. There's no need to apply masks
4196            // because the unmasked parts will be overwritten by fields.
4197            // Write the fields.
4198            self.0.encode(encoder, offset + 0, depth)?;
4199            self.1.encode(encoder, offset + 6, depth)?;
4200            Ok(())
4201        }
4202    }
4203
4204    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisassociateRequest {
4205        #[inline(always)]
4206        fn new_empty() -> Self {
4207            Self {
4208                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4209                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D),
4210            }
4211        }
4212
4213        #[inline]
4214        unsafe fn decode(
4215            &mut self,
4216            decoder: &mut fidl::encoding::Decoder<'_, D>,
4217            offset: usize,
4218            _depth: fidl::encoding::Depth,
4219        ) -> fidl::Result<()> {
4220            decoder.debug_check_bounds::<Self>(offset);
4221            // Verify that padding bytes are zero.
4222            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
4223            fidl::decode!(
4224                fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
4225                D,
4226                &mut self.reason_code,
4227                decoder,
4228                offset + 6,
4229                _depth
4230            )?;
4231            Ok(())
4232        }
4233    }
4234
4235    impl fidl::encoding::ValueTypeMarker for EapolConfirm {
4236        type Borrowed<'a> = &'a Self;
4237        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4238            value
4239        }
4240    }
4241
4242    unsafe impl fidl::encoding::TypeMarker for EapolConfirm {
4243        type Owned = Self;
4244
4245        #[inline(always)]
4246        fn inline_align(_context: fidl::encoding::Context) -> usize {
4247            4
4248        }
4249
4250        #[inline(always)]
4251        fn inline_size(_context: fidl::encoding::Context) -> usize {
4252            12
4253        }
4254    }
4255
4256    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolConfirm, D>
4257        for &EapolConfirm
4258    {
4259        #[inline]
4260        unsafe fn encode(
4261            self,
4262            encoder: &mut fidl::encoding::Encoder<'_, D>,
4263            offset: usize,
4264            _depth: fidl::encoding::Depth,
4265        ) -> fidl::Result<()> {
4266            encoder.debug_check_bounds::<EapolConfirm>(offset);
4267            // Delegate to tuple encoding.
4268            fidl::encoding::Encode::<EapolConfirm, D>::encode(
4269                (
4270                    <EapolResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
4271                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
4272                        &self.dst_addr,
4273                    ),
4274                ),
4275                encoder,
4276                offset,
4277                _depth,
4278            )
4279        }
4280    }
4281    unsafe impl<
4282        D: fidl::encoding::ResourceDialect,
4283        T0: fidl::encoding::Encode<EapolResultCode, D>,
4284        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4285    > fidl::encoding::Encode<EapolConfirm, D> for (T0, T1)
4286    {
4287        #[inline]
4288        unsafe fn encode(
4289            self,
4290            encoder: &mut fidl::encoding::Encoder<'_, D>,
4291            offset: usize,
4292            depth: fidl::encoding::Depth,
4293        ) -> fidl::Result<()> {
4294            encoder.debug_check_bounds::<EapolConfirm>(offset);
4295            // Zero out padding regions. There's no need to apply masks
4296            // because the unmasked parts will be overwritten by fields.
4297            unsafe {
4298                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4299                (ptr as *mut u32).write_unaligned(0);
4300            }
4301            // Write the fields.
4302            self.0.encode(encoder, offset + 0, depth)?;
4303            self.1.encode(encoder, offset + 4, depth)?;
4304            Ok(())
4305        }
4306    }
4307
4308    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolConfirm {
4309        #[inline(always)]
4310        fn new_empty() -> Self {
4311            Self {
4312                result_code: fidl::new_empty!(EapolResultCode, D),
4313                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4314            }
4315        }
4316
4317        #[inline]
4318        unsafe fn decode(
4319            &mut self,
4320            decoder: &mut fidl::encoding::Decoder<'_, D>,
4321            offset: usize,
4322            _depth: fidl::encoding::Depth,
4323        ) -> fidl::Result<()> {
4324            decoder.debug_check_bounds::<Self>(offset);
4325            // Verify that padding bytes are zero.
4326            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4327            let padval = unsafe { (ptr as *const u32).read_unaligned() };
4328            let mask = 0xffff0000u32;
4329            let maskedval = padval & mask;
4330            if maskedval != 0 {
4331                return Err(fidl::Error::NonZeroPadding {
4332                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4333                });
4334            }
4335            fidl::decode!(EapolResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
4336            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 4, _depth)?;
4337            Ok(())
4338        }
4339    }
4340
4341    impl fidl::encoding::ValueTypeMarker for EapolIndication {
4342        type Borrowed<'a> = &'a Self;
4343        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4344            value
4345        }
4346    }
4347
4348    unsafe impl fidl::encoding::TypeMarker for EapolIndication {
4349        type Owned = Self;
4350
4351        #[inline(always)]
4352        fn inline_align(_context: fidl::encoding::Context) -> usize {
4353            8
4354        }
4355
4356        #[inline(always)]
4357        fn inline_size(_context: fidl::encoding::Context) -> usize {
4358            32
4359        }
4360    }
4361
4362    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolIndication, D>
4363        for &EapolIndication
4364    {
4365        #[inline]
4366        unsafe fn encode(
4367            self,
4368            encoder: &mut fidl::encoding::Encoder<'_, D>,
4369            offset: usize,
4370            _depth: fidl::encoding::Depth,
4371        ) -> fidl::Result<()> {
4372            encoder.debug_check_bounds::<EapolIndication>(offset);
4373            // Delegate to tuple encoding.
4374            fidl::encoding::Encode::<EapolIndication, D>::encode(
4375                (
4376                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.src_addr),
4377                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.dst_addr),
4378                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4379                ),
4380                encoder, offset, _depth
4381            )
4382        }
4383    }
4384    unsafe impl<
4385        D: fidl::encoding::ResourceDialect,
4386        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4387        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4388        T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4389    > fidl::encoding::Encode<EapolIndication, D> for (T0, T1, T2)
4390    {
4391        #[inline]
4392        unsafe fn encode(
4393            self,
4394            encoder: &mut fidl::encoding::Encoder<'_, D>,
4395            offset: usize,
4396            depth: fidl::encoding::Depth,
4397        ) -> fidl::Result<()> {
4398            encoder.debug_check_bounds::<EapolIndication>(offset);
4399            // Zero out padding regions. There's no need to apply masks
4400            // because the unmasked parts will be overwritten by fields.
4401            unsafe {
4402                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4403                (ptr as *mut u64).write_unaligned(0);
4404            }
4405            // Write the fields.
4406            self.0.encode(encoder, offset + 0, depth)?;
4407            self.1.encode(encoder, offset + 6, depth)?;
4408            self.2.encode(encoder, offset + 16, depth)?;
4409            Ok(())
4410        }
4411    }
4412
4413    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolIndication {
4414        #[inline(always)]
4415        fn new_empty() -> Self {
4416            Self {
4417                src_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4418                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4419                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4420            }
4421        }
4422
4423        #[inline]
4424        unsafe fn decode(
4425            &mut self,
4426            decoder: &mut fidl::encoding::Decoder<'_, D>,
4427            offset: usize,
4428            _depth: fidl::encoding::Depth,
4429        ) -> fidl::Result<()> {
4430            decoder.debug_check_bounds::<Self>(offset);
4431            // Verify that padding bytes are zero.
4432            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4433            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4434            let mask = 0xffffffff00000000u64;
4435            let maskedval = padval & mask;
4436            if maskedval != 0 {
4437                return Err(fidl::Error::NonZeroPadding {
4438                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4439                });
4440            }
4441            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.src_addr, decoder, offset + 0, _depth)?;
4442            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 6, _depth)?;
4443            fidl::decode!(
4444                fidl::encoding::UnboundedVector<u8>,
4445                D,
4446                &mut self.data,
4447                decoder,
4448                offset + 16,
4449                _depth
4450            )?;
4451            Ok(())
4452        }
4453    }
4454
4455    impl fidl::encoding::ValueTypeMarker for EapolRequest {
4456        type Borrowed<'a> = &'a Self;
4457        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4458            value
4459        }
4460    }
4461
4462    unsafe impl fidl::encoding::TypeMarker for EapolRequest {
4463        type Owned = Self;
4464
4465        #[inline(always)]
4466        fn inline_align(_context: fidl::encoding::Context) -> usize {
4467            8
4468        }
4469
4470        #[inline(always)]
4471        fn inline_size(_context: fidl::encoding::Context) -> usize {
4472            32
4473        }
4474    }
4475
4476    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolRequest, D>
4477        for &EapolRequest
4478    {
4479        #[inline]
4480        unsafe fn encode(
4481            self,
4482            encoder: &mut fidl::encoding::Encoder<'_, D>,
4483            offset: usize,
4484            _depth: fidl::encoding::Depth,
4485        ) -> fidl::Result<()> {
4486            encoder.debug_check_bounds::<EapolRequest>(offset);
4487            // Delegate to tuple encoding.
4488            fidl::encoding::Encode::<EapolRequest, D>::encode(
4489                (
4490                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.src_addr),
4491                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.dst_addr),
4492                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4493                ),
4494                encoder, offset, _depth
4495            )
4496        }
4497    }
4498    unsafe impl<
4499        D: fidl::encoding::ResourceDialect,
4500        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4501        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4502        T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4503    > fidl::encoding::Encode<EapolRequest, D> for (T0, T1, T2)
4504    {
4505        #[inline]
4506        unsafe fn encode(
4507            self,
4508            encoder: &mut fidl::encoding::Encoder<'_, D>,
4509            offset: usize,
4510            depth: fidl::encoding::Depth,
4511        ) -> fidl::Result<()> {
4512            encoder.debug_check_bounds::<EapolRequest>(offset);
4513            // Zero out padding regions. There's no need to apply masks
4514            // because the unmasked parts will be overwritten by fields.
4515            unsafe {
4516                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4517                (ptr as *mut u64).write_unaligned(0);
4518            }
4519            // Write the fields.
4520            self.0.encode(encoder, offset + 0, depth)?;
4521            self.1.encode(encoder, offset + 6, depth)?;
4522            self.2.encode(encoder, offset + 16, depth)?;
4523            Ok(())
4524        }
4525    }
4526
4527    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolRequest {
4528        #[inline(always)]
4529        fn new_empty() -> Self {
4530            Self {
4531                src_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4532                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4533                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4534            }
4535        }
4536
4537        #[inline]
4538        unsafe fn decode(
4539            &mut self,
4540            decoder: &mut fidl::encoding::Decoder<'_, D>,
4541            offset: usize,
4542            _depth: fidl::encoding::Depth,
4543        ) -> fidl::Result<()> {
4544            decoder.debug_check_bounds::<Self>(offset);
4545            // Verify that padding bytes are zero.
4546            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4547            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4548            let mask = 0xffffffff00000000u64;
4549            let maskedval = padval & mask;
4550            if maskedval != 0 {
4551                return Err(fidl::Error::NonZeroPadding {
4552                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4553                });
4554            }
4555            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.src_addr, decoder, offset + 0, _depth)?;
4556            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 6, _depth)?;
4557            fidl::decode!(
4558                fidl::encoding::UnboundedVector<u8>,
4559                D,
4560                &mut self.data,
4561                decoder,
4562                offset + 16,
4563                _depth
4564            )?;
4565            Ok(())
4566        }
4567    }
4568
4569    impl fidl::encoding::ValueTypeMarker for MlmeGetApfPacketFilterEnabledResponse {
4570        type Borrowed<'a> = &'a Self;
4571        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4572            value
4573        }
4574    }
4575
4576    unsafe impl fidl::encoding::TypeMarker for MlmeGetApfPacketFilterEnabledResponse {
4577        type Owned = Self;
4578
4579        #[inline(always)]
4580        fn inline_align(_context: fidl::encoding::Context) -> usize {
4581            1
4582        }
4583
4584        #[inline(always)]
4585        fn inline_size(_context: fidl::encoding::Context) -> usize {
4586            1
4587        }
4588    }
4589
4590    unsafe impl<D: fidl::encoding::ResourceDialect>
4591        fidl::encoding::Encode<MlmeGetApfPacketFilterEnabledResponse, D>
4592        for &MlmeGetApfPacketFilterEnabledResponse
4593    {
4594        #[inline]
4595        unsafe fn encode(
4596            self,
4597            encoder: &mut fidl::encoding::Encoder<'_, D>,
4598            offset: usize,
4599            _depth: fidl::encoding::Depth,
4600        ) -> fidl::Result<()> {
4601            encoder.debug_check_bounds::<MlmeGetApfPacketFilterEnabledResponse>(offset);
4602            // Delegate to tuple encoding.
4603            fidl::encoding::Encode::<MlmeGetApfPacketFilterEnabledResponse, D>::encode(
4604                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enabled),),
4605                encoder,
4606                offset,
4607                _depth,
4608            )
4609        }
4610    }
4611    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
4612        fidl::encoding::Encode<MlmeGetApfPacketFilterEnabledResponse, D> for (T0,)
4613    {
4614        #[inline]
4615        unsafe fn encode(
4616            self,
4617            encoder: &mut fidl::encoding::Encoder<'_, D>,
4618            offset: usize,
4619            depth: fidl::encoding::Depth,
4620        ) -> fidl::Result<()> {
4621            encoder.debug_check_bounds::<MlmeGetApfPacketFilterEnabledResponse>(offset);
4622            // Zero out padding regions. There's no need to apply masks
4623            // because the unmasked parts will be overwritten by fields.
4624            // Write the fields.
4625            self.0.encode(encoder, offset + 0, depth)?;
4626            Ok(())
4627        }
4628    }
4629
4630    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4631        for MlmeGetApfPacketFilterEnabledResponse
4632    {
4633        #[inline(always)]
4634        fn new_empty() -> Self {
4635            Self { enabled: fidl::new_empty!(bool, D) }
4636        }
4637
4638        #[inline]
4639        unsafe fn decode(
4640            &mut self,
4641            decoder: &mut fidl::encoding::Decoder<'_, D>,
4642            offset: usize,
4643            _depth: fidl::encoding::Depth,
4644        ) -> fidl::Result<()> {
4645            decoder.debug_check_bounds::<Self>(offset);
4646            // Verify that padding bytes are zero.
4647            fidl::decode!(bool, D, &mut self.enabled, decoder, offset + 0, _depth)?;
4648            Ok(())
4649        }
4650    }
4651
4652    impl fidl::encoding::ValueTypeMarker for MlmeGetScheduledScanEnabledResponse {
4653        type Borrowed<'a> = &'a Self;
4654        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4655            value
4656        }
4657    }
4658
4659    unsafe impl fidl::encoding::TypeMarker for MlmeGetScheduledScanEnabledResponse {
4660        type Owned = Self;
4661
4662        #[inline(always)]
4663        fn inline_align(_context: fidl::encoding::Context) -> usize {
4664            8
4665        }
4666
4667        #[inline(always)]
4668        fn inline_size(_context: fidl::encoding::Context) -> usize {
4669            16
4670        }
4671    }
4672
4673    unsafe impl<D: fidl::encoding::ResourceDialect>
4674        fidl::encoding::Encode<MlmeGetScheduledScanEnabledResponse, D>
4675        for &MlmeGetScheduledScanEnabledResponse
4676    {
4677        #[inline]
4678        unsafe fn encode(
4679            self,
4680            encoder: &mut fidl::encoding::Encoder<'_, D>,
4681            offset: usize,
4682            _depth: fidl::encoding::Depth,
4683        ) -> fidl::Result<()> {
4684            encoder.debug_check_bounds::<MlmeGetScheduledScanEnabledResponse>(offset);
4685            // Delegate to tuple encoding.
4686            fidl::encoding::Encode::<MlmeGetScheduledScanEnabledResponse, D>::encode(
4687                (
4688                    <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.active_txn_ids),
4689                ),
4690                encoder, offset, _depth
4691            )
4692        }
4693    }
4694    unsafe impl<
4695        D: fidl::encoding::ResourceDialect,
4696        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
4697    > fidl::encoding::Encode<MlmeGetScheduledScanEnabledResponse, D> for (T0,)
4698    {
4699        #[inline]
4700        unsafe fn encode(
4701            self,
4702            encoder: &mut fidl::encoding::Encoder<'_, D>,
4703            offset: usize,
4704            depth: fidl::encoding::Depth,
4705        ) -> fidl::Result<()> {
4706            encoder.debug_check_bounds::<MlmeGetScheduledScanEnabledResponse>(offset);
4707            // Zero out padding regions. There's no need to apply masks
4708            // because the unmasked parts will be overwritten by fields.
4709            // Write the fields.
4710            self.0.encode(encoder, offset + 0, depth)?;
4711            Ok(())
4712        }
4713    }
4714
4715    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4716        for MlmeGetScheduledScanEnabledResponse
4717    {
4718        #[inline(always)]
4719        fn new_empty() -> Self {
4720            Self { active_txn_ids: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D) }
4721        }
4722
4723        #[inline]
4724        unsafe fn decode(
4725            &mut self,
4726            decoder: &mut fidl::encoding::Decoder<'_, D>,
4727            offset: usize,
4728            _depth: fidl::encoding::Depth,
4729        ) -> fidl::Result<()> {
4730            decoder.debug_check_bounds::<Self>(offset);
4731            // Verify that padding bytes are zero.
4732            fidl::decode!(
4733                fidl::encoding::UnboundedVector<u64>,
4734                D,
4735                &mut self.active_txn_ids,
4736                decoder,
4737                offset + 0,
4738                _depth
4739            )?;
4740            Ok(())
4741        }
4742    }
4743
4744    impl fidl::encoding::ValueTypeMarker for MlmeGetSignalReportResponse {
4745        type Borrowed<'a> = &'a Self;
4746        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4747            value
4748        }
4749    }
4750
4751    unsafe impl fidl::encoding::TypeMarker for MlmeGetSignalReportResponse {
4752        type Owned = Self;
4753
4754        #[inline(always)]
4755        fn inline_align(_context: fidl::encoding::Context) -> usize {
4756            8
4757        }
4758
4759        #[inline(always)]
4760        fn inline_size(_context: fidl::encoding::Context) -> usize {
4761            16
4762        }
4763    }
4764
4765    unsafe impl<D: fidl::encoding::ResourceDialect>
4766        fidl::encoding::Encode<MlmeGetSignalReportResponse, D> for &MlmeGetSignalReportResponse
4767    {
4768        #[inline]
4769        unsafe fn encode(
4770            self,
4771            encoder: &mut fidl::encoding::Encoder<'_, D>,
4772            offset: usize,
4773            _depth: fidl::encoding::Depth,
4774        ) -> fidl::Result<()> {
4775            encoder.debug_check_bounds::<MlmeGetSignalReportResponse>(offset);
4776            // Delegate to tuple encoding.
4777            fidl::encoding::Encode::<MlmeGetSignalReportResponse, D>::encode(
4778                (
4779                    <fidl_fuchsia_wlan_stats_common::SignalReport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
4780                ),
4781                encoder, offset, _depth
4782            )
4783        }
4784    }
4785    unsafe impl<
4786        D: fidl::encoding::ResourceDialect,
4787        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats_common::SignalReport, D>,
4788    > fidl::encoding::Encode<MlmeGetSignalReportResponse, D> for (T0,)
4789    {
4790        #[inline]
4791        unsafe fn encode(
4792            self,
4793            encoder: &mut fidl::encoding::Encoder<'_, D>,
4794            offset: usize,
4795            depth: fidl::encoding::Depth,
4796        ) -> fidl::Result<()> {
4797            encoder.debug_check_bounds::<MlmeGetSignalReportResponse>(offset);
4798            // Zero out padding regions. There's no need to apply masks
4799            // because the unmasked parts will be overwritten by fields.
4800            // Write the fields.
4801            self.0.encode(encoder, offset + 0, depth)?;
4802            Ok(())
4803        }
4804    }
4805
4806    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4807        for MlmeGetSignalReportResponse
4808    {
4809        #[inline(always)]
4810        fn new_empty() -> Self {
4811            Self { resp: fidl::new_empty!(fidl_fuchsia_wlan_stats_common::SignalReport, D) }
4812        }
4813
4814        #[inline]
4815        unsafe fn decode(
4816            &mut self,
4817            decoder: &mut fidl::encoding::Decoder<'_, D>,
4818            offset: usize,
4819            _depth: fidl::encoding::Depth,
4820        ) -> fidl::Result<()> {
4821            decoder.debug_check_bounds::<Self>(offset);
4822            // Verify that padding bytes are zero.
4823            fidl::decode!(
4824                fidl_fuchsia_wlan_stats_common::SignalReport,
4825                D,
4826                &mut self.resp,
4827                decoder,
4828                offset + 0,
4829                _depth
4830            )?;
4831            Ok(())
4832        }
4833    }
4834
4835    impl fidl::encoding::ValueTypeMarker for MlmeQueryTelemetrySupportResponse {
4836        type Borrowed<'a> = &'a Self;
4837        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4838            value
4839        }
4840    }
4841
4842    unsafe impl fidl::encoding::TypeMarker for MlmeQueryTelemetrySupportResponse {
4843        type Owned = Self;
4844
4845        #[inline(always)]
4846        fn inline_align(_context: fidl::encoding::Context) -> usize {
4847            8
4848        }
4849
4850        #[inline(always)]
4851        fn inline_size(_context: fidl::encoding::Context) -> usize {
4852            16
4853        }
4854    }
4855
4856    unsafe impl<D: fidl::encoding::ResourceDialect>
4857        fidl::encoding::Encode<MlmeQueryTelemetrySupportResponse, D>
4858        for &MlmeQueryTelemetrySupportResponse
4859    {
4860        #[inline]
4861        unsafe fn encode(
4862            self,
4863            encoder: &mut fidl::encoding::Encoder<'_, D>,
4864            offset: usize,
4865            _depth: fidl::encoding::Depth,
4866        ) -> fidl::Result<()> {
4867            encoder.debug_check_bounds::<MlmeQueryTelemetrySupportResponse>(offset);
4868            // Delegate to tuple encoding.
4869            fidl::encoding::Encode::<MlmeQueryTelemetrySupportResponse, D>::encode(
4870                (
4871                    <fidl_fuchsia_wlan_stats_common::TelemetrySupport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
4872                ),
4873                encoder, offset, _depth
4874            )
4875        }
4876    }
4877    unsafe impl<
4878        D: fidl::encoding::ResourceDialect,
4879        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats_common::TelemetrySupport, D>,
4880    > fidl::encoding::Encode<MlmeQueryTelemetrySupportResponse, D> for (T0,)
4881    {
4882        #[inline]
4883        unsafe fn encode(
4884            self,
4885            encoder: &mut fidl::encoding::Encoder<'_, D>,
4886            offset: usize,
4887            depth: fidl::encoding::Depth,
4888        ) -> fidl::Result<()> {
4889            encoder.debug_check_bounds::<MlmeQueryTelemetrySupportResponse>(offset);
4890            // Zero out padding regions. There's no need to apply masks
4891            // because the unmasked parts will be overwritten by fields.
4892            // Write the fields.
4893            self.0.encode(encoder, offset + 0, depth)?;
4894            Ok(())
4895        }
4896    }
4897
4898    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4899        for MlmeQueryTelemetrySupportResponse
4900    {
4901        #[inline(always)]
4902        fn new_empty() -> Self {
4903            Self { resp: fidl::new_empty!(fidl_fuchsia_wlan_stats_common::TelemetrySupport, D) }
4904        }
4905
4906        #[inline]
4907        unsafe fn decode(
4908            &mut self,
4909            decoder: &mut fidl::encoding::Decoder<'_, D>,
4910            offset: usize,
4911            _depth: fidl::encoding::Depth,
4912        ) -> fidl::Result<()> {
4913            decoder.debug_check_bounds::<Self>(offset);
4914            // Verify that padding bytes are zero.
4915            fidl::decode!(
4916                fidl_fuchsia_wlan_stats_common::TelemetrySupport,
4917                D,
4918                &mut self.resp,
4919                decoder,
4920                offset + 0,
4921                _depth
4922            )?;
4923            Ok(())
4924        }
4925    }
4926
4927    impl fidl::encoding::ValueTypeMarker for MlmeReadApfPacketFilterDataResponse {
4928        type Borrowed<'a> = &'a Self;
4929        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4930            value
4931        }
4932    }
4933
4934    unsafe impl fidl::encoding::TypeMarker for MlmeReadApfPacketFilterDataResponse {
4935        type Owned = Self;
4936
4937        #[inline(always)]
4938        fn inline_align(_context: fidl::encoding::Context) -> usize {
4939            8
4940        }
4941
4942        #[inline(always)]
4943        fn inline_size(_context: fidl::encoding::Context) -> usize {
4944            16
4945        }
4946    }
4947
4948    unsafe impl<D: fidl::encoding::ResourceDialect>
4949        fidl::encoding::Encode<MlmeReadApfPacketFilterDataResponse, D>
4950        for &MlmeReadApfPacketFilterDataResponse
4951    {
4952        #[inline]
4953        unsafe fn encode(
4954            self,
4955            encoder: &mut fidl::encoding::Encoder<'_, D>,
4956            offset: usize,
4957            _depth: fidl::encoding::Depth,
4958        ) -> fidl::Result<()> {
4959            encoder.debug_check_bounds::<MlmeReadApfPacketFilterDataResponse>(offset);
4960            // Delegate to tuple encoding.
4961            fidl::encoding::Encode::<MlmeReadApfPacketFilterDataResponse, D>::encode(
4962                (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
4963                    &self.memory,
4964                ),),
4965                encoder,
4966                offset,
4967                _depth,
4968            )
4969        }
4970    }
4971    unsafe impl<
4972        D: fidl::encoding::ResourceDialect,
4973        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4974    > fidl::encoding::Encode<MlmeReadApfPacketFilterDataResponse, D> for (T0,)
4975    {
4976        #[inline]
4977        unsafe fn encode(
4978            self,
4979            encoder: &mut fidl::encoding::Encoder<'_, D>,
4980            offset: usize,
4981            depth: fidl::encoding::Depth,
4982        ) -> fidl::Result<()> {
4983            encoder.debug_check_bounds::<MlmeReadApfPacketFilterDataResponse>(offset);
4984            // Zero out padding regions. There's no need to apply masks
4985            // because the unmasked parts will be overwritten by fields.
4986            // Write the fields.
4987            self.0.encode(encoder, offset + 0, depth)?;
4988            Ok(())
4989        }
4990    }
4991
4992    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4993        for MlmeReadApfPacketFilterDataResponse
4994    {
4995        #[inline(always)]
4996        fn new_empty() -> Self {
4997            Self { memory: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
4998        }
4999
5000        #[inline]
5001        unsafe fn decode(
5002            &mut self,
5003            decoder: &mut fidl::encoding::Decoder<'_, D>,
5004            offset: usize,
5005            _depth: fidl::encoding::Depth,
5006        ) -> fidl::Result<()> {
5007            decoder.debug_check_bounds::<Self>(offset);
5008            // Verify that padding bytes are zero.
5009            fidl::decode!(
5010                fidl::encoding::UnboundedVector<u8>,
5011                D,
5012                &mut self.memory,
5013                decoder,
5014                offset + 0,
5015                _depth
5016            )?;
5017            Ok(())
5018        }
5019    }
5020
5021    impl fidl::encoding::ValueTypeMarker for MinstrelListResponse {
5022        type Borrowed<'a> = &'a Self;
5023        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5024            value
5025        }
5026    }
5027
5028    unsafe impl fidl::encoding::TypeMarker for MinstrelListResponse {
5029        type Owned = Self;
5030
5031        #[inline(always)]
5032        fn inline_align(_context: fidl::encoding::Context) -> usize {
5033            8
5034        }
5035
5036        #[inline(always)]
5037        fn inline_size(_context: fidl::encoding::Context) -> usize {
5038            16
5039        }
5040    }
5041
5042    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelListResponse, D>
5043        for &MinstrelListResponse
5044    {
5045        #[inline]
5046        unsafe fn encode(
5047            self,
5048            encoder: &mut fidl::encoding::Encoder<'_, D>,
5049            offset: usize,
5050            _depth: fidl::encoding::Depth,
5051        ) -> fidl::Result<()> {
5052            encoder.debug_check_bounds::<MinstrelListResponse>(offset);
5053            // Delegate to tuple encoding.
5054            fidl::encoding::Encode::<MinstrelListResponse, D>::encode(
5055                (
5056                    <fidl_fuchsia_wlan_minstrel_common::Peers as fidl::encoding::ValueTypeMarker>::borrow(&self.peers),
5057                ),
5058                encoder, offset, _depth
5059            )
5060        }
5061    }
5062    unsafe impl<
5063        D: fidl::encoding::ResourceDialect,
5064        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_minstrel_common::Peers, D>,
5065    > fidl::encoding::Encode<MinstrelListResponse, D> for (T0,)
5066    {
5067        #[inline]
5068        unsafe fn encode(
5069            self,
5070            encoder: &mut fidl::encoding::Encoder<'_, D>,
5071            offset: usize,
5072            depth: fidl::encoding::Depth,
5073        ) -> fidl::Result<()> {
5074            encoder.debug_check_bounds::<MinstrelListResponse>(offset);
5075            // Zero out padding regions. There's no need to apply masks
5076            // because the unmasked parts will be overwritten by fields.
5077            // Write the fields.
5078            self.0.encode(encoder, offset + 0, depth)?;
5079            Ok(())
5080        }
5081    }
5082
5083    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelListResponse {
5084        #[inline(always)]
5085        fn new_empty() -> Self {
5086            Self { peers: fidl::new_empty!(fidl_fuchsia_wlan_minstrel_common::Peers, D) }
5087        }
5088
5089        #[inline]
5090        unsafe fn decode(
5091            &mut self,
5092            decoder: &mut fidl::encoding::Decoder<'_, D>,
5093            offset: usize,
5094            _depth: fidl::encoding::Depth,
5095        ) -> fidl::Result<()> {
5096            decoder.debug_check_bounds::<Self>(offset);
5097            // Verify that padding bytes are zero.
5098            fidl::decode!(
5099                fidl_fuchsia_wlan_minstrel_common::Peers,
5100                D,
5101                &mut self.peers,
5102                decoder,
5103                offset + 0,
5104                _depth
5105            )?;
5106            Ok(())
5107        }
5108    }
5109
5110    impl fidl::encoding::ValueTypeMarker for MinstrelStatsRequest {
5111        type Borrowed<'a> = &'a Self;
5112        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5113            value
5114        }
5115    }
5116
5117    unsafe impl fidl::encoding::TypeMarker for MinstrelStatsRequest {
5118        type Owned = Self;
5119
5120        #[inline(always)]
5121        fn inline_align(_context: fidl::encoding::Context) -> usize {
5122            1
5123        }
5124
5125        #[inline(always)]
5126        fn inline_size(_context: fidl::encoding::Context) -> usize {
5127            6
5128        }
5129        #[inline(always)]
5130        fn encode_is_copy() -> bool {
5131            true
5132        }
5133
5134        #[inline(always)]
5135        fn decode_is_copy() -> bool {
5136            true
5137        }
5138    }
5139
5140    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelStatsRequest, D>
5141        for &MinstrelStatsRequest
5142    {
5143        #[inline]
5144        unsafe fn encode(
5145            self,
5146            encoder: &mut fidl::encoding::Encoder<'_, D>,
5147            offset: usize,
5148            _depth: fidl::encoding::Depth,
5149        ) -> fidl::Result<()> {
5150            encoder.debug_check_bounds::<MinstrelStatsRequest>(offset);
5151            unsafe {
5152                // Copy the object into the buffer.
5153                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5154                (buf_ptr as *mut MinstrelStatsRequest)
5155                    .write_unaligned((self as *const MinstrelStatsRequest).read());
5156                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
5157                // done second because the memcpy will write garbage to these bytes.
5158            }
5159            Ok(())
5160        }
5161    }
5162    unsafe impl<
5163        D: fidl::encoding::ResourceDialect,
5164        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
5165    > fidl::encoding::Encode<MinstrelStatsRequest, D> for (T0,)
5166    {
5167        #[inline]
5168        unsafe fn encode(
5169            self,
5170            encoder: &mut fidl::encoding::Encoder<'_, D>,
5171            offset: usize,
5172            depth: fidl::encoding::Depth,
5173        ) -> fidl::Result<()> {
5174            encoder.debug_check_bounds::<MinstrelStatsRequest>(offset);
5175            // Zero out padding regions. There's no need to apply masks
5176            // because the unmasked parts will be overwritten by fields.
5177            // Write the fields.
5178            self.0.encode(encoder, offset + 0, depth)?;
5179            Ok(())
5180        }
5181    }
5182
5183    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelStatsRequest {
5184        #[inline(always)]
5185        fn new_empty() -> Self {
5186            Self { peer_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
5187        }
5188
5189        #[inline]
5190        unsafe fn decode(
5191            &mut self,
5192            decoder: &mut fidl::encoding::Decoder<'_, D>,
5193            offset: usize,
5194            _depth: fidl::encoding::Depth,
5195        ) -> fidl::Result<()> {
5196            decoder.debug_check_bounds::<Self>(offset);
5197            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5198            // Verify that padding bytes are zero.
5199            // Copy from the buffer into the object.
5200            unsafe {
5201                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
5202            }
5203            Ok(())
5204        }
5205    }
5206
5207    impl fidl::encoding::ValueTypeMarker for MinstrelStatsResponse {
5208        type Borrowed<'a> = &'a Self;
5209        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5210            value
5211        }
5212    }
5213
5214    unsafe impl fidl::encoding::TypeMarker for MinstrelStatsResponse {
5215        type Owned = Self;
5216
5217        #[inline(always)]
5218        fn inline_align(_context: fidl::encoding::Context) -> usize {
5219            8
5220        }
5221
5222        #[inline(always)]
5223        fn inline_size(_context: fidl::encoding::Context) -> usize {
5224            8
5225        }
5226    }
5227
5228    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelStatsResponse, D>
5229        for &MinstrelStatsResponse
5230    {
5231        #[inline]
5232        unsafe fn encode(
5233            self,
5234            encoder: &mut fidl::encoding::Encoder<'_, D>,
5235            offset: usize,
5236            _depth: fidl::encoding::Depth,
5237        ) -> fidl::Result<()> {
5238            encoder.debug_check_bounds::<MinstrelStatsResponse>(offset);
5239            // Delegate to tuple encoding.
5240            fidl::encoding::Encode::<MinstrelStatsResponse, D>::encode(
5241                (
5242                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel_common::Peer> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer),
5243                ),
5244                encoder, offset, _depth
5245            )
5246        }
5247    }
5248    unsafe impl<
5249        D: fidl::encoding::ResourceDialect,
5250        T0: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel_common::Peer>, D>,
5251    > fidl::encoding::Encode<MinstrelStatsResponse, D> for (T0,)
5252    {
5253        #[inline]
5254        unsafe fn encode(
5255            self,
5256            encoder: &mut fidl::encoding::Encoder<'_, D>,
5257            offset: usize,
5258            depth: fidl::encoding::Depth,
5259        ) -> fidl::Result<()> {
5260            encoder.debug_check_bounds::<MinstrelStatsResponse>(offset);
5261            // Zero out padding regions. There's no need to apply masks
5262            // because the unmasked parts will be overwritten by fields.
5263            // Write the fields.
5264            self.0.encode(encoder, offset + 0, depth)?;
5265            Ok(())
5266        }
5267    }
5268
5269    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelStatsResponse {
5270        #[inline(always)]
5271        fn new_empty() -> Self {
5272            Self {
5273                peer: fidl::new_empty!(
5274                    fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel_common::Peer>,
5275                    D
5276                ),
5277            }
5278        }
5279
5280        #[inline]
5281        unsafe fn decode(
5282            &mut self,
5283            decoder: &mut fidl::encoding::Decoder<'_, D>,
5284            offset: usize,
5285            _depth: fidl::encoding::Depth,
5286        ) -> fidl::Result<()> {
5287            decoder.debug_check_bounds::<Self>(offset);
5288            // Verify that padding bytes are zero.
5289            fidl::decode!(
5290                fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel_common::Peer>,
5291                D,
5292                &mut self.peer,
5293                decoder,
5294                offset + 0,
5295                _depth
5296            )?;
5297            Ok(())
5298        }
5299    }
5300
5301    impl fidl::encoding::ValueTypeMarker for MlmeAssociateIndRequest {
5302        type Borrowed<'a> = &'a Self;
5303        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5304            value
5305        }
5306    }
5307
5308    unsafe impl fidl::encoding::TypeMarker for MlmeAssociateIndRequest {
5309        type Owned = Self;
5310
5311        #[inline(always)]
5312        fn inline_align(_context: fidl::encoding::Context) -> usize {
5313            8
5314        }
5315
5316        #[inline(always)]
5317        fn inline_size(_context: fidl::encoding::Context) -> usize {
5318            64
5319        }
5320    }
5321
5322    unsafe impl<D: fidl::encoding::ResourceDialect>
5323        fidl::encoding::Encode<MlmeAssociateIndRequest, D> for &MlmeAssociateIndRequest
5324    {
5325        #[inline]
5326        unsafe fn encode(
5327            self,
5328            encoder: &mut fidl::encoding::Encoder<'_, D>,
5329            offset: usize,
5330            _depth: fidl::encoding::Depth,
5331        ) -> fidl::Result<()> {
5332            encoder.debug_check_bounds::<MlmeAssociateIndRequest>(offset);
5333            // Delegate to tuple encoding.
5334            fidl::encoding::Encode::<MlmeAssociateIndRequest, D>::encode(
5335                (<AssociateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5336                encoder,
5337                offset,
5338                _depth,
5339            )
5340        }
5341    }
5342    unsafe impl<
5343        D: fidl::encoding::ResourceDialect,
5344        T0: fidl::encoding::Encode<AssociateIndication, D>,
5345    > fidl::encoding::Encode<MlmeAssociateIndRequest, D> for (T0,)
5346    {
5347        #[inline]
5348        unsafe fn encode(
5349            self,
5350            encoder: &mut fidl::encoding::Encoder<'_, D>,
5351            offset: usize,
5352            depth: fidl::encoding::Depth,
5353        ) -> fidl::Result<()> {
5354            encoder.debug_check_bounds::<MlmeAssociateIndRequest>(offset);
5355            // Zero out padding regions. There's no need to apply masks
5356            // because the unmasked parts will be overwritten by fields.
5357            // Write the fields.
5358            self.0.encode(encoder, offset + 0, depth)?;
5359            Ok(())
5360        }
5361    }
5362
5363    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5364        for MlmeAssociateIndRequest
5365    {
5366        #[inline(always)]
5367        fn new_empty() -> Self {
5368            Self { ind: fidl::new_empty!(AssociateIndication, D) }
5369        }
5370
5371        #[inline]
5372        unsafe fn decode(
5373            &mut self,
5374            decoder: &mut fidl::encoding::Decoder<'_, D>,
5375            offset: usize,
5376            _depth: fidl::encoding::Depth,
5377        ) -> fidl::Result<()> {
5378            decoder.debug_check_bounds::<Self>(offset);
5379            // Verify that padding bytes are zero.
5380            fidl::decode!(AssociateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5381            Ok(())
5382        }
5383    }
5384
5385    impl fidl::encoding::ValueTypeMarker for MlmeAssociateRespRequest {
5386        type Borrowed<'a> = &'a Self;
5387        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5388            value
5389        }
5390    }
5391
5392    unsafe impl fidl::encoding::TypeMarker for MlmeAssociateRespRequest {
5393        type Owned = Self;
5394
5395        #[inline(always)]
5396        fn inline_align(_context: fidl::encoding::Context) -> usize {
5397            8
5398        }
5399
5400        #[inline(always)]
5401        fn inline_size(_context: fidl::encoding::Context) -> usize {
5402            32
5403        }
5404    }
5405
5406    unsafe impl<D: fidl::encoding::ResourceDialect>
5407        fidl::encoding::Encode<MlmeAssociateRespRequest, D> for &MlmeAssociateRespRequest
5408    {
5409        #[inline]
5410        unsafe fn encode(
5411            self,
5412            encoder: &mut fidl::encoding::Encoder<'_, D>,
5413            offset: usize,
5414            _depth: fidl::encoding::Depth,
5415        ) -> fidl::Result<()> {
5416            encoder.debug_check_bounds::<MlmeAssociateRespRequest>(offset);
5417            // Delegate to tuple encoding.
5418            fidl::encoding::Encode::<MlmeAssociateRespRequest, D>::encode(
5419                (<AssociateResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5420                encoder,
5421                offset,
5422                _depth,
5423            )
5424        }
5425    }
5426    unsafe impl<
5427        D: fidl::encoding::ResourceDialect,
5428        T0: fidl::encoding::Encode<AssociateResponse, D>,
5429    > fidl::encoding::Encode<MlmeAssociateRespRequest, D> for (T0,)
5430    {
5431        #[inline]
5432        unsafe fn encode(
5433            self,
5434            encoder: &mut fidl::encoding::Encoder<'_, D>,
5435            offset: usize,
5436            depth: fidl::encoding::Depth,
5437        ) -> fidl::Result<()> {
5438            encoder.debug_check_bounds::<MlmeAssociateRespRequest>(offset);
5439            // Zero out padding regions. There's no need to apply masks
5440            // because the unmasked parts will be overwritten by fields.
5441            // Write the fields.
5442            self.0.encode(encoder, offset + 0, depth)?;
5443            Ok(())
5444        }
5445    }
5446
5447    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5448        for MlmeAssociateRespRequest
5449    {
5450        #[inline(always)]
5451        fn new_empty() -> Self {
5452            Self { resp: fidl::new_empty!(AssociateResponse, D) }
5453        }
5454
5455        #[inline]
5456        unsafe fn decode(
5457            &mut self,
5458            decoder: &mut fidl::encoding::Decoder<'_, D>,
5459            offset: usize,
5460            _depth: fidl::encoding::Depth,
5461        ) -> fidl::Result<()> {
5462            decoder.debug_check_bounds::<Self>(offset);
5463            // Verify that padding bytes are zero.
5464            fidl::decode!(AssociateResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
5465            Ok(())
5466        }
5467    }
5468
5469    impl fidl::encoding::ValueTypeMarker for MlmeAuthenticateIndRequest {
5470        type Borrowed<'a> = &'a Self;
5471        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5472            value
5473        }
5474    }
5475
5476    unsafe impl fidl::encoding::TypeMarker for MlmeAuthenticateIndRequest {
5477        type Owned = Self;
5478
5479        #[inline(always)]
5480        fn inline_align(_context: fidl::encoding::Context) -> usize {
5481            4
5482        }
5483
5484        #[inline(always)]
5485        fn inline_size(_context: fidl::encoding::Context) -> usize {
5486            12
5487        }
5488    }
5489
5490    unsafe impl<D: fidl::encoding::ResourceDialect>
5491        fidl::encoding::Encode<MlmeAuthenticateIndRequest, D> for &MlmeAuthenticateIndRequest
5492    {
5493        #[inline]
5494        unsafe fn encode(
5495            self,
5496            encoder: &mut fidl::encoding::Encoder<'_, D>,
5497            offset: usize,
5498            _depth: fidl::encoding::Depth,
5499        ) -> fidl::Result<()> {
5500            encoder.debug_check_bounds::<MlmeAuthenticateIndRequest>(offset);
5501            // Delegate to tuple encoding.
5502            fidl::encoding::Encode::<MlmeAuthenticateIndRequest, D>::encode(
5503                (<AuthenticateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5504                encoder,
5505                offset,
5506                _depth,
5507            )
5508        }
5509    }
5510    unsafe impl<
5511        D: fidl::encoding::ResourceDialect,
5512        T0: fidl::encoding::Encode<AuthenticateIndication, D>,
5513    > fidl::encoding::Encode<MlmeAuthenticateIndRequest, D> for (T0,)
5514    {
5515        #[inline]
5516        unsafe fn encode(
5517            self,
5518            encoder: &mut fidl::encoding::Encoder<'_, D>,
5519            offset: usize,
5520            depth: fidl::encoding::Depth,
5521        ) -> fidl::Result<()> {
5522            encoder.debug_check_bounds::<MlmeAuthenticateIndRequest>(offset);
5523            // Zero out padding regions. There's no need to apply masks
5524            // because the unmasked parts will be overwritten by fields.
5525            // Write the fields.
5526            self.0.encode(encoder, offset + 0, depth)?;
5527            Ok(())
5528        }
5529    }
5530
5531    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5532        for MlmeAuthenticateIndRequest
5533    {
5534        #[inline(always)]
5535        fn new_empty() -> Self {
5536            Self { ind: fidl::new_empty!(AuthenticateIndication, D) }
5537        }
5538
5539        #[inline]
5540        unsafe fn decode(
5541            &mut self,
5542            decoder: &mut fidl::encoding::Decoder<'_, D>,
5543            offset: usize,
5544            _depth: fidl::encoding::Depth,
5545        ) -> fidl::Result<()> {
5546            decoder.debug_check_bounds::<Self>(offset);
5547            // Verify that padding bytes are zero.
5548            fidl::decode!(AuthenticateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5549            Ok(())
5550        }
5551    }
5552
5553    impl fidl::encoding::ValueTypeMarker for MlmeAuthenticateRespRequest {
5554        type Borrowed<'a> = &'a Self;
5555        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5556            value
5557        }
5558    }
5559
5560    unsafe impl fidl::encoding::TypeMarker for MlmeAuthenticateRespRequest {
5561        type Owned = Self;
5562
5563        #[inline(always)]
5564        fn inline_align(_context: fidl::encoding::Context) -> usize {
5565            4
5566        }
5567
5568        #[inline(always)]
5569        fn inline_size(_context: fidl::encoding::Context) -> usize {
5570            12
5571        }
5572    }
5573
5574    unsafe impl<D: fidl::encoding::ResourceDialect>
5575        fidl::encoding::Encode<MlmeAuthenticateRespRequest, D> for &MlmeAuthenticateRespRequest
5576    {
5577        #[inline]
5578        unsafe fn encode(
5579            self,
5580            encoder: &mut fidl::encoding::Encoder<'_, D>,
5581            offset: usize,
5582            _depth: fidl::encoding::Depth,
5583        ) -> fidl::Result<()> {
5584            encoder.debug_check_bounds::<MlmeAuthenticateRespRequest>(offset);
5585            // Delegate to tuple encoding.
5586            fidl::encoding::Encode::<MlmeAuthenticateRespRequest, D>::encode(
5587                (<AuthenticateResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5588                encoder,
5589                offset,
5590                _depth,
5591            )
5592        }
5593    }
5594    unsafe impl<
5595        D: fidl::encoding::ResourceDialect,
5596        T0: fidl::encoding::Encode<AuthenticateResponse, D>,
5597    > fidl::encoding::Encode<MlmeAuthenticateRespRequest, D> for (T0,)
5598    {
5599        #[inline]
5600        unsafe fn encode(
5601            self,
5602            encoder: &mut fidl::encoding::Encoder<'_, D>,
5603            offset: usize,
5604            depth: fidl::encoding::Depth,
5605        ) -> fidl::Result<()> {
5606            encoder.debug_check_bounds::<MlmeAuthenticateRespRequest>(offset);
5607            // Zero out padding regions. There's no need to apply masks
5608            // because the unmasked parts will be overwritten by fields.
5609            // Write the fields.
5610            self.0.encode(encoder, offset + 0, depth)?;
5611            Ok(())
5612        }
5613    }
5614
5615    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5616        for MlmeAuthenticateRespRequest
5617    {
5618        #[inline(always)]
5619        fn new_empty() -> Self {
5620            Self { resp: fidl::new_empty!(AuthenticateResponse, D) }
5621        }
5622
5623        #[inline]
5624        unsafe fn decode(
5625            &mut self,
5626            decoder: &mut fidl::encoding::Decoder<'_, D>,
5627            offset: usize,
5628            _depth: fidl::encoding::Depth,
5629        ) -> fidl::Result<()> {
5630            decoder.debug_check_bounds::<Self>(offset);
5631            // Verify that padding bytes are zero.
5632            fidl::decode!(AuthenticateResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
5633            Ok(())
5634        }
5635    }
5636
5637    impl fidl::encoding::ValueTypeMarker for MlmeConnectConfRequest {
5638        type Borrowed<'a> = &'a Self;
5639        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5640            value
5641        }
5642    }
5643
5644    unsafe impl fidl::encoding::TypeMarker for MlmeConnectConfRequest {
5645        type Owned = Self;
5646
5647        #[inline(always)]
5648        fn inline_align(_context: fidl::encoding::Context) -> usize {
5649            8
5650        }
5651
5652        #[inline(always)]
5653        fn inline_size(_context: fidl::encoding::Context) -> usize {
5654            32
5655        }
5656    }
5657
5658    unsafe impl<D: fidl::encoding::ResourceDialect>
5659        fidl::encoding::Encode<MlmeConnectConfRequest, D> for &MlmeConnectConfRequest
5660    {
5661        #[inline]
5662        unsafe fn encode(
5663            self,
5664            encoder: &mut fidl::encoding::Encoder<'_, D>,
5665            offset: usize,
5666            _depth: fidl::encoding::Depth,
5667        ) -> fidl::Result<()> {
5668            encoder.debug_check_bounds::<MlmeConnectConfRequest>(offset);
5669            // Delegate to tuple encoding.
5670            fidl::encoding::Encode::<MlmeConnectConfRequest, D>::encode(
5671                (<ConnectConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5672                encoder,
5673                offset,
5674                _depth,
5675            )
5676        }
5677    }
5678    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ConnectConfirm, D>>
5679        fidl::encoding::Encode<MlmeConnectConfRequest, D> for (T0,)
5680    {
5681        #[inline]
5682        unsafe fn encode(
5683            self,
5684            encoder: &mut fidl::encoding::Encoder<'_, D>,
5685            offset: usize,
5686            depth: fidl::encoding::Depth,
5687        ) -> fidl::Result<()> {
5688            encoder.debug_check_bounds::<MlmeConnectConfRequest>(offset);
5689            // Zero out padding regions. There's no need to apply masks
5690            // because the unmasked parts will be overwritten by fields.
5691            // Write the fields.
5692            self.0.encode(encoder, offset + 0, depth)?;
5693            Ok(())
5694        }
5695    }
5696
5697    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5698        for MlmeConnectConfRequest
5699    {
5700        #[inline(always)]
5701        fn new_empty() -> Self {
5702            Self { resp: fidl::new_empty!(ConnectConfirm, D) }
5703        }
5704
5705        #[inline]
5706        unsafe fn decode(
5707            &mut self,
5708            decoder: &mut fidl::encoding::Decoder<'_, D>,
5709            offset: usize,
5710            _depth: fidl::encoding::Depth,
5711        ) -> fidl::Result<()> {
5712            decoder.debug_check_bounds::<Self>(offset);
5713            // Verify that padding bytes are zero.
5714            fidl::decode!(ConnectConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
5715            Ok(())
5716        }
5717    }
5718
5719    impl fidl::encoding::ValueTypeMarker for MlmeConnectReqRequest {
5720        type Borrowed<'a> = &'a Self;
5721        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5722            value
5723        }
5724    }
5725
5726    unsafe impl fidl::encoding::TypeMarker for MlmeConnectReqRequest {
5727        type Owned = Self;
5728
5729        #[inline(always)]
5730        fn inline_align(_context: fidl::encoding::Context) -> usize {
5731            8
5732        }
5733
5734        #[inline(always)]
5735        fn inline_size(_context: fidl::encoding::Context) -> usize {
5736            104
5737        }
5738    }
5739
5740    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeConnectReqRequest, D>
5741        for &MlmeConnectReqRequest
5742    {
5743        #[inline]
5744        unsafe fn encode(
5745            self,
5746            encoder: &mut fidl::encoding::Encoder<'_, D>,
5747            offset: usize,
5748            _depth: fidl::encoding::Depth,
5749        ) -> fidl::Result<()> {
5750            encoder.debug_check_bounds::<MlmeConnectReqRequest>(offset);
5751            // Delegate to tuple encoding.
5752            fidl::encoding::Encode::<MlmeConnectReqRequest, D>::encode(
5753                (<ConnectRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5754                encoder,
5755                offset,
5756                _depth,
5757            )
5758        }
5759    }
5760    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ConnectRequest, D>>
5761        fidl::encoding::Encode<MlmeConnectReqRequest, D> for (T0,)
5762    {
5763        #[inline]
5764        unsafe fn encode(
5765            self,
5766            encoder: &mut fidl::encoding::Encoder<'_, D>,
5767            offset: usize,
5768            depth: fidl::encoding::Depth,
5769        ) -> fidl::Result<()> {
5770            encoder.debug_check_bounds::<MlmeConnectReqRequest>(offset);
5771            // Zero out padding regions. There's no need to apply masks
5772            // because the unmasked parts will be overwritten by fields.
5773            // Write the fields.
5774            self.0.encode(encoder, offset + 0, depth)?;
5775            Ok(())
5776        }
5777    }
5778
5779    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeConnectReqRequest {
5780        #[inline(always)]
5781        fn new_empty() -> Self {
5782            Self { req: fidl::new_empty!(ConnectRequest, D) }
5783        }
5784
5785        #[inline]
5786        unsafe fn decode(
5787            &mut self,
5788            decoder: &mut fidl::encoding::Decoder<'_, D>,
5789            offset: usize,
5790            _depth: fidl::encoding::Depth,
5791        ) -> fidl::Result<()> {
5792            decoder.debug_check_bounds::<Self>(offset);
5793            // Verify that padding bytes are zero.
5794            fidl::decode!(ConnectRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5795            Ok(())
5796        }
5797    }
5798
5799    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateConfRequest {
5800        type Borrowed<'a> = &'a Self;
5801        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5802            value
5803        }
5804    }
5805
5806    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateConfRequest {
5807        type Owned = Self;
5808
5809        #[inline(always)]
5810        fn inline_align(_context: fidl::encoding::Context) -> usize {
5811            1
5812        }
5813
5814        #[inline(always)]
5815        fn inline_size(_context: fidl::encoding::Context) -> usize {
5816            6
5817        }
5818        #[inline(always)]
5819        fn encode_is_copy() -> bool {
5820            true
5821        }
5822
5823        #[inline(always)]
5824        fn decode_is_copy() -> bool {
5825            true
5826        }
5827    }
5828
5829    unsafe impl<D: fidl::encoding::ResourceDialect>
5830        fidl::encoding::Encode<MlmeDeauthenticateConfRequest, D>
5831        for &MlmeDeauthenticateConfRequest
5832    {
5833        #[inline]
5834        unsafe fn encode(
5835            self,
5836            encoder: &mut fidl::encoding::Encoder<'_, D>,
5837            offset: usize,
5838            _depth: fidl::encoding::Depth,
5839        ) -> fidl::Result<()> {
5840            encoder.debug_check_bounds::<MlmeDeauthenticateConfRequest>(offset);
5841            unsafe {
5842                // Copy the object into the buffer.
5843                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5844                (buf_ptr as *mut MlmeDeauthenticateConfRequest)
5845                    .write_unaligned((self as *const MlmeDeauthenticateConfRequest).read());
5846                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
5847                // done second because the memcpy will write garbage to these bytes.
5848            }
5849            Ok(())
5850        }
5851    }
5852    unsafe impl<
5853        D: fidl::encoding::ResourceDialect,
5854        T0: fidl::encoding::Encode<DeauthenticateConfirm, D>,
5855    > fidl::encoding::Encode<MlmeDeauthenticateConfRequest, D> for (T0,)
5856    {
5857        #[inline]
5858        unsafe fn encode(
5859            self,
5860            encoder: &mut fidl::encoding::Encoder<'_, D>,
5861            offset: usize,
5862            depth: fidl::encoding::Depth,
5863        ) -> fidl::Result<()> {
5864            encoder.debug_check_bounds::<MlmeDeauthenticateConfRequest>(offset);
5865            // Zero out padding regions. There's no need to apply masks
5866            // because the unmasked parts will be overwritten by fields.
5867            // Write the fields.
5868            self.0.encode(encoder, offset + 0, depth)?;
5869            Ok(())
5870        }
5871    }
5872
5873    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5874        for MlmeDeauthenticateConfRequest
5875    {
5876        #[inline(always)]
5877        fn new_empty() -> Self {
5878            Self { resp: fidl::new_empty!(DeauthenticateConfirm, D) }
5879        }
5880
5881        #[inline]
5882        unsafe fn decode(
5883            &mut self,
5884            decoder: &mut fidl::encoding::Decoder<'_, D>,
5885            offset: usize,
5886            _depth: fidl::encoding::Depth,
5887        ) -> fidl::Result<()> {
5888            decoder.debug_check_bounds::<Self>(offset);
5889            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5890            // Verify that padding bytes are zero.
5891            // Copy from the buffer into the object.
5892            unsafe {
5893                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
5894            }
5895            Ok(())
5896        }
5897    }
5898
5899    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateIndRequest {
5900        type Borrowed<'a> = &'a Self;
5901        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5902            value
5903        }
5904    }
5905
5906    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateIndRequest {
5907        type Owned = Self;
5908
5909        #[inline(always)]
5910        fn inline_align(_context: fidl::encoding::Context) -> usize {
5911            2
5912        }
5913
5914        #[inline(always)]
5915        fn inline_size(_context: fidl::encoding::Context) -> usize {
5916            10
5917        }
5918    }
5919
5920    unsafe impl<D: fidl::encoding::ResourceDialect>
5921        fidl::encoding::Encode<MlmeDeauthenticateIndRequest, D> for &MlmeDeauthenticateIndRequest
5922    {
5923        #[inline]
5924        unsafe fn encode(
5925            self,
5926            encoder: &mut fidl::encoding::Encoder<'_, D>,
5927            offset: usize,
5928            _depth: fidl::encoding::Depth,
5929        ) -> fidl::Result<()> {
5930            encoder.debug_check_bounds::<MlmeDeauthenticateIndRequest>(offset);
5931            // Delegate to tuple encoding.
5932            fidl::encoding::Encode::<MlmeDeauthenticateIndRequest, D>::encode(
5933                (<DeauthenticateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5934                encoder,
5935                offset,
5936                _depth,
5937            )
5938        }
5939    }
5940    unsafe impl<
5941        D: fidl::encoding::ResourceDialect,
5942        T0: fidl::encoding::Encode<DeauthenticateIndication, D>,
5943    > fidl::encoding::Encode<MlmeDeauthenticateIndRequest, D> for (T0,)
5944    {
5945        #[inline]
5946        unsafe fn encode(
5947            self,
5948            encoder: &mut fidl::encoding::Encoder<'_, D>,
5949            offset: usize,
5950            depth: fidl::encoding::Depth,
5951        ) -> fidl::Result<()> {
5952            encoder.debug_check_bounds::<MlmeDeauthenticateIndRequest>(offset);
5953            // Zero out padding regions. There's no need to apply masks
5954            // because the unmasked parts will be overwritten by fields.
5955            // Write the fields.
5956            self.0.encode(encoder, offset + 0, depth)?;
5957            Ok(())
5958        }
5959    }
5960
5961    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5962        for MlmeDeauthenticateIndRequest
5963    {
5964        #[inline(always)]
5965        fn new_empty() -> Self {
5966            Self { ind: fidl::new_empty!(DeauthenticateIndication, D) }
5967        }
5968
5969        #[inline]
5970        unsafe fn decode(
5971            &mut self,
5972            decoder: &mut fidl::encoding::Decoder<'_, D>,
5973            offset: usize,
5974            _depth: fidl::encoding::Depth,
5975        ) -> fidl::Result<()> {
5976            decoder.debug_check_bounds::<Self>(offset);
5977            // Verify that padding bytes are zero.
5978            fidl::decode!(DeauthenticateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5979            Ok(())
5980        }
5981    }
5982
5983    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateReqRequest {
5984        type Borrowed<'a> = &'a Self;
5985        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5986            value
5987        }
5988    }
5989
5990    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateReqRequest {
5991        type Owned = Self;
5992
5993        #[inline(always)]
5994        fn inline_align(_context: fidl::encoding::Context) -> usize {
5995            2
5996        }
5997
5998        #[inline(always)]
5999        fn inline_size(_context: fidl::encoding::Context) -> usize {
6000            8
6001        }
6002    }
6003
6004    unsafe impl<D: fidl::encoding::ResourceDialect>
6005        fidl::encoding::Encode<MlmeDeauthenticateReqRequest, D> for &MlmeDeauthenticateReqRequest
6006    {
6007        #[inline]
6008        unsafe fn encode(
6009            self,
6010            encoder: &mut fidl::encoding::Encoder<'_, D>,
6011            offset: usize,
6012            _depth: fidl::encoding::Depth,
6013        ) -> fidl::Result<()> {
6014            encoder.debug_check_bounds::<MlmeDeauthenticateReqRequest>(offset);
6015            // Delegate to tuple encoding.
6016            fidl::encoding::Encode::<MlmeDeauthenticateReqRequest, D>::encode(
6017                (<DeauthenticateRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6018                encoder,
6019                offset,
6020                _depth,
6021            )
6022        }
6023    }
6024    unsafe impl<
6025        D: fidl::encoding::ResourceDialect,
6026        T0: fidl::encoding::Encode<DeauthenticateRequest, D>,
6027    > fidl::encoding::Encode<MlmeDeauthenticateReqRequest, D> for (T0,)
6028    {
6029        #[inline]
6030        unsafe fn encode(
6031            self,
6032            encoder: &mut fidl::encoding::Encoder<'_, D>,
6033            offset: usize,
6034            depth: fidl::encoding::Depth,
6035        ) -> fidl::Result<()> {
6036            encoder.debug_check_bounds::<MlmeDeauthenticateReqRequest>(offset);
6037            // Zero out padding regions. There's no need to apply masks
6038            // because the unmasked parts will be overwritten by fields.
6039            // Write the fields.
6040            self.0.encode(encoder, offset + 0, depth)?;
6041            Ok(())
6042        }
6043    }
6044
6045    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6046        for MlmeDeauthenticateReqRequest
6047    {
6048        #[inline(always)]
6049        fn new_empty() -> Self {
6050            Self { req: fidl::new_empty!(DeauthenticateRequest, D) }
6051        }
6052
6053        #[inline]
6054        unsafe fn decode(
6055            &mut self,
6056            decoder: &mut fidl::encoding::Decoder<'_, D>,
6057            offset: usize,
6058            _depth: fidl::encoding::Depth,
6059        ) -> fidl::Result<()> {
6060            decoder.debug_check_bounds::<Self>(offset);
6061            // Verify that padding bytes are zero.
6062            fidl::decode!(DeauthenticateRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6063            Ok(())
6064        }
6065    }
6066
6067    impl fidl::encoding::ValueTypeMarker for MlmeDeleteKeysReqRequest {
6068        type Borrowed<'a> = &'a Self;
6069        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6070            value
6071        }
6072    }
6073
6074    unsafe impl fidl::encoding::TypeMarker for MlmeDeleteKeysReqRequest {
6075        type Owned = Self;
6076
6077        #[inline(always)]
6078        fn inline_align(_context: fidl::encoding::Context) -> usize {
6079            8
6080        }
6081
6082        #[inline(always)]
6083        fn inline_size(_context: fidl::encoding::Context) -> usize {
6084            16
6085        }
6086    }
6087
6088    unsafe impl<D: fidl::encoding::ResourceDialect>
6089        fidl::encoding::Encode<MlmeDeleteKeysReqRequest, D> for &MlmeDeleteKeysReqRequest
6090    {
6091        #[inline]
6092        unsafe fn encode(
6093            self,
6094            encoder: &mut fidl::encoding::Encoder<'_, D>,
6095            offset: usize,
6096            _depth: fidl::encoding::Depth,
6097        ) -> fidl::Result<()> {
6098            encoder.debug_check_bounds::<MlmeDeleteKeysReqRequest>(offset);
6099            // Delegate to tuple encoding.
6100            fidl::encoding::Encode::<MlmeDeleteKeysReqRequest, D>::encode(
6101                (<DeleteKeysRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6102                encoder,
6103                offset,
6104                _depth,
6105            )
6106        }
6107    }
6108    unsafe impl<
6109        D: fidl::encoding::ResourceDialect,
6110        T0: fidl::encoding::Encode<DeleteKeysRequest, D>,
6111    > fidl::encoding::Encode<MlmeDeleteKeysReqRequest, D> for (T0,)
6112    {
6113        #[inline]
6114        unsafe fn encode(
6115            self,
6116            encoder: &mut fidl::encoding::Encoder<'_, D>,
6117            offset: usize,
6118            depth: fidl::encoding::Depth,
6119        ) -> fidl::Result<()> {
6120            encoder.debug_check_bounds::<MlmeDeleteKeysReqRequest>(offset);
6121            // Zero out padding regions. There's no need to apply masks
6122            // because the unmasked parts will be overwritten by fields.
6123            // Write the fields.
6124            self.0.encode(encoder, offset + 0, depth)?;
6125            Ok(())
6126        }
6127    }
6128
6129    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6130        for MlmeDeleteKeysReqRequest
6131    {
6132        #[inline(always)]
6133        fn new_empty() -> Self {
6134            Self { req: fidl::new_empty!(DeleteKeysRequest, D) }
6135        }
6136
6137        #[inline]
6138        unsafe fn decode(
6139            &mut self,
6140            decoder: &mut fidl::encoding::Decoder<'_, D>,
6141            offset: usize,
6142            _depth: fidl::encoding::Depth,
6143        ) -> fidl::Result<()> {
6144            decoder.debug_check_bounds::<Self>(offset);
6145            // Verify that padding bytes are zero.
6146            fidl::decode!(DeleteKeysRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6147            Ok(())
6148        }
6149    }
6150
6151    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateConfRequest {
6152        type Borrowed<'a> = &'a Self;
6153        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6154            value
6155        }
6156    }
6157
6158    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateConfRequest {
6159        type Owned = Self;
6160
6161        #[inline(always)]
6162        fn inline_align(_context: fidl::encoding::Context) -> usize {
6163            4
6164        }
6165
6166        #[inline(always)]
6167        fn inline_size(_context: fidl::encoding::Context) -> usize {
6168            4
6169        }
6170        #[inline(always)]
6171        fn encode_is_copy() -> bool {
6172            true
6173        }
6174
6175        #[inline(always)]
6176        fn decode_is_copy() -> bool {
6177            true
6178        }
6179    }
6180
6181    unsafe impl<D: fidl::encoding::ResourceDialect>
6182        fidl::encoding::Encode<MlmeDisassociateConfRequest, D> for &MlmeDisassociateConfRequest
6183    {
6184        #[inline]
6185        unsafe fn encode(
6186            self,
6187            encoder: &mut fidl::encoding::Encoder<'_, D>,
6188            offset: usize,
6189            _depth: fidl::encoding::Depth,
6190        ) -> fidl::Result<()> {
6191            encoder.debug_check_bounds::<MlmeDisassociateConfRequest>(offset);
6192            unsafe {
6193                // Copy the object into the buffer.
6194                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
6195                (buf_ptr as *mut MlmeDisassociateConfRequest)
6196                    .write_unaligned((self as *const MlmeDisassociateConfRequest).read());
6197                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
6198                // done second because the memcpy will write garbage to these bytes.
6199            }
6200            Ok(())
6201        }
6202    }
6203    unsafe impl<
6204        D: fidl::encoding::ResourceDialect,
6205        T0: fidl::encoding::Encode<DisassociateConfirm, D>,
6206    > fidl::encoding::Encode<MlmeDisassociateConfRequest, D> for (T0,)
6207    {
6208        #[inline]
6209        unsafe fn encode(
6210            self,
6211            encoder: &mut fidl::encoding::Encoder<'_, D>,
6212            offset: usize,
6213            depth: fidl::encoding::Depth,
6214        ) -> fidl::Result<()> {
6215            encoder.debug_check_bounds::<MlmeDisassociateConfRequest>(offset);
6216            // Zero out padding regions. There's no need to apply masks
6217            // because the unmasked parts will be overwritten by fields.
6218            // Write the fields.
6219            self.0.encode(encoder, offset + 0, depth)?;
6220            Ok(())
6221        }
6222    }
6223
6224    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6225        for MlmeDisassociateConfRequest
6226    {
6227        #[inline(always)]
6228        fn new_empty() -> Self {
6229            Self { resp: fidl::new_empty!(DisassociateConfirm, D) }
6230        }
6231
6232        #[inline]
6233        unsafe fn decode(
6234            &mut self,
6235            decoder: &mut fidl::encoding::Decoder<'_, D>,
6236            offset: usize,
6237            _depth: fidl::encoding::Depth,
6238        ) -> fidl::Result<()> {
6239            decoder.debug_check_bounds::<Self>(offset);
6240            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
6241            // Verify that padding bytes are zero.
6242            // Copy from the buffer into the object.
6243            unsafe {
6244                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
6245            }
6246            Ok(())
6247        }
6248    }
6249
6250    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateIndRequest {
6251        type Borrowed<'a> = &'a Self;
6252        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6253            value
6254        }
6255    }
6256
6257    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateIndRequest {
6258        type Owned = Self;
6259
6260        #[inline(always)]
6261        fn inline_align(_context: fidl::encoding::Context) -> usize {
6262            2
6263        }
6264
6265        #[inline(always)]
6266        fn inline_size(_context: fidl::encoding::Context) -> usize {
6267            10
6268        }
6269    }
6270
6271    unsafe impl<D: fidl::encoding::ResourceDialect>
6272        fidl::encoding::Encode<MlmeDisassociateIndRequest, D> for &MlmeDisassociateIndRequest
6273    {
6274        #[inline]
6275        unsafe fn encode(
6276            self,
6277            encoder: &mut fidl::encoding::Encoder<'_, D>,
6278            offset: usize,
6279            _depth: fidl::encoding::Depth,
6280        ) -> fidl::Result<()> {
6281            encoder.debug_check_bounds::<MlmeDisassociateIndRequest>(offset);
6282            // Delegate to tuple encoding.
6283            fidl::encoding::Encode::<MlmeDisassociateIndRequest, D>::encode(
6284                (<DisassociateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
6285                encoder,
6286                offset,
6287                _depth,
6288            )
6289        }
6290    }
6291    unsafe impl<
6292        D: fidl::encoding::ResourceDialect,
6293        T0: fidl::encoding::Encode<DisassociateIndication, D>,
6294    > fidl::encoding::Encode<MlmeDisassociateIndRequest, D> for (T0,)
6295    {
6296        #[inline]
6297        unsafe fn encode(
6298            self,
6299            encoder: &mut fidl::encoding::Encoder<'_, D>,
6300            offset: usize,
6301            depth: fidl::encoding::Depth,
6302        ) -> fidl::Result<()> {
6303            encoder.debug_check_bounds::<MlmeDisassociateIndRequest>(offset);
6304            // Zero out padding regions. There's no need to apply masks
6305            // because the unmasked parts will be overwritten by fields.
6306            // Write the fields.
6307            self.0.encode(encoder, offset + 0, depth)?;
6308            Ok(())
6309        }
6310    }
6311
6312    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6313        for MlmeDisassociateIndRequest
6314    {
6315        #[inline(always)]
6316        fn new_empty() -> Self {
6317            Self { ind: fidl::new_empty!(DisassociateIndication, D) }
6318        }
6319
6320        #[inline]
6321        unsafe fn decode(
6322            &mut self,
6323            decoder: &mut fidl::encoding::Decoder<'_, D>,
6324            offset: usize,
6325            _depth: fidl::encoding::Depth,
6326        ) -> fidl::Result<()> {
6327            decoder.debug_check_bounds::<Self>(offset);
6328            // Verify that padding bytes are zero.
6329            fidl::decode!(DisassociateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
6330            Ok(())
6331        }
6332    }
6333
6334    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateReqRequest {
6335        type Borrowed<'a> = &'a Self;
6336        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6337            value
6338        }
6339    }
6340
6341    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateReqRequest {
6342        type Owned = Self;
6343
6344        #[inline(always)]
6345        fn inline_align(_context: fidl::encoding::Context) -> usize {
6346            2
6347        }
6348
6349        #[inline(always)]
6350        fn inline_size(_context: fidl::encoding::Context) -> usize {
6351            8
6352        }
6353    }
6354
6355    unsafe impl<D: fidl::encoding::ResourceDialect>
6356        fidl::encoding::Encode<MlmeDisassociateReqRequest, D> for &MlmeDisassociateReqRequest
6357    {
6358        #[inline]
6359        unsafe fn encode(
6360            self,
6361            encoder: &mut fidl::encoding::Encoder<'_, D>,
6362            offset: usize,
6363            _depth: fidl::encoding::Depth,
6364        ) -> fidl::Result<()> {
6365            encoder.debug_check_bounds::<MlmeDisassociateReqRequest>(offset);
6366            // Delegate to tuple encoding.
6367            fidl::encoding::Encode::<MlmeDisassociateReqRequest, D>::encode(
6368                (<DisassociateRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6369                encoder,
6370                offset,
6371                _depth,
6372            )
6373        }
6374    }
6375    unsafe impl<
6376        D: fidl::encoding::ResourceDialect,
6377        T0: fidl::encoding::Encode<DisassociateRequest, D>,
6378    > fidl::encoding::Encode<MlmeDisassociateReqRequest, D> for (T0,)
6379    {
6380        #[inline]
6381        unsafe fn encode(
6382            self,
6383            encoder: &mut fidl::encoding::Encoder<'_, D>,
6384            offset: usize,
6385            depth: fidl::encoding::Depth,
6386        ) -> fidl::Result<()> {
6387            encoder.debug_check_bounds::<MlmeDisassociateReqRequest>(offset);
6388            // Zero out padding regions. There's no need to apply masks
6389            // because the unmasked parts will be overwritten by fields.
6390            // Write the fields.
6391            self.0.encode(encoder, offset + 0, depth)?;
6392            Ok(())
6393        }
6394    }
6395
6396    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6397        for MlmeDisassociateReqRequest
6398    {
6399        #[inline(always)]
6400        fn new_empty() -> Self {
6401            Self { req: fidl::new_empty!(DisassociateRequest, D) }
6402        }
6403
6404        #[inline]
6405        unsafe fn decode(
6406            &mut self,
6407            decoder: &mut fidl::encoding::Decoder<'_, D>,
6408            offset: usize,
6409            _depth: fidl::encoding::Depth,
6410        ) -> fidl::Result<()> {
6411            decoder.debug_check_bounds::<Self>(offset);
6412            // Verify that padding bytes are zero.
6413            fidl::decode!(DisassociateRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6414            Ok(())
6415        }
6416    }
6417
6418    impl fidl::encoding::ValueTypeMarker for MlmeEapolConfRequest {
6419        type Borrowed<'a> = &'a Self;
6420        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6421            value
6422        }
6423    }
6424
6425    unsafe impl fidl::encoding::TypeMarker for MlmeEapolConfRequest {
6426        type Owned = Self;
6427
6428        #[inline(always)]
6429        fn inline_align(_context: fidl::encoding::Context) -> usize {
6430            4
6431        }
6432
6433        #[inline(always)]
6434        fn inline_size(_context: fidl::encoding::Context) -> usize {
6435            12
6436        }
6437    }
6438
6439    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolConfRequest, D>
6440        for &MlmeEapolConfRequest
6441    {
6442        #[inline]
6443        unsafe fn encode(
6444            self,
6445            encoder: &mut fidl::encoding::Encoder<'_, D>,
6446            offset: usize,
6447            _depth: fidl::encoding::Depth,
6448        ) -> fidl::Result<()> {
6449            encoder.debug_check_bounds::<MlmeEapolConfRequest>(offset);
6450            // Delegate to tuple encoding.
6451            fidl::encoding::Encode::<MlmeEapolConfRequest, D>::encode(
6452                (<EapolConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6453                encoder,
6454                offset,
6455                _depth,
6456            )
6457        }
6458    }
6459    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolConfirm, D>>
6460        fidl::encoding::Encode<MlmeEapolConfRequest, D> for (T0,)
6461    {
6462        #[inline]
6463        unsafe fn encode(
6464            self,
6465            encoder: &mut fidl::encoding::Encoder<'_, D>,
6466            offset: usize,
6467            depth: fidl::encoding::Depth,
6468        ) -> fidl::Result<()> {
6469            encoder.debug_check_bounds::<MlmeEapolConfRequest>(offset);
6470            // Zero out padding regions. There's no need to apply masks
6471            // because the unmasked parts will be overwritten by fields.
6472            // Write the fields.
6473            self.0.encode(encoder, offset + 0, depth)?;
6474            Ok(())
6475        }
6476    }
6477
6478    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolConfRequest {
6479        #[inline(always)]
6480        fn new_empty() -> Self {
6481            Self { resp: fidl::new_empty!(EapolConfirm, D) }
6482        }
6483
6484        #[inline]
6485        unsafe fn decode(
6486            &mut self,
6487            decoder: &mut fidl::encoding::Decoder<'_, D>,
6488            offset: usize,
6489            _depth: fidl::encoding::Depth,
6490        ) -> fidl::Result<()> {
6491            decoder.debug_check_bounds::<Self>(offset);
6492            // Verify that padding bytes are zero.
6493            fidl::decode!(EapolConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
6494            Ok(())
6495        }
6496    }
6497
6498    impl fidl::encoding::ValueTypeMarker for MlmeEapolIndRequest {
6499        type Borrowed<'a> = &'a Self;
6500        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6501            value
6502        }
6503    }
6504
6505    unsafe impl fidl::encoding::TypeMarker for MlmeEapolIndRequest {
6506        type Owned = Self;
6507
6508        #[inline(always)]
6509        fn inline_align(_context: fidl::encoding::Context) -> usize {
6510            8
6511        }
6512
6513        #[inline(always)]
6514        fn inline_size(_context: fidl::encoding::Context) -> usize {
6515            32
6516        }
6517    }
6518
6519    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolIndRequest, D>
6520        for &MlmeEapolIndRequest
6521    {
6522        #[inline]
6523        unsafe fn encode(
6524            self,
6525            encoder: &mut fidl::encoding::Encoder<'_, D>,
6526            offset: usize,
6527            _depth: fidl::encoding::Depth,
6528        ) -> fidl::Result<()> {
6529            encoder.debug_check_bounds::<MlmeEapolIndRequest>(offset);
6530            // Delegate to tuple encoding.
6531            fidl::encoding::Encode::<MlmeEapolIndRequest, D>::encode(
6532                (<EapolIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
6533                encoder,
6534                offset,
6535                _depth,
6536            )
6537        }
6538    }
6539    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolIndication, D>>
6540        fidl::encoding::Encode<MlmeEapolIndRequest, D> for (T0,)
6541    {
6542        #[inline]
6543        unsafe fn encode(
6544            self,
6545            encoder: &mut fidl::encoding::Encoder<'_, D>,
6546            offset: usize,
6547            depth: fidl::encoding::Depth,
6548        ) -> fidl::Result<()> {
6549            encoder.debug_check_bounds::<MlmeEapolIndRequest>(offset);
6550            // Zero out padding regions. There's no need to apply masks
6551            // because the unmasked parts will be overwritten by fields.
6552            // Write the fields.
6553            self.0.encode(encoder, offset + 0, depth)?;
6554            Ok(())
6555        }
6556    }
6557
6558    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolIndRequest {
6559        #[inline(always)]
6560        fn new_empty() -> Self {
6561            Self { ind: fidl::new_empty!(EapolIndication, D) }
6562        }
6563
6564        #[inline]
6565        unsafe fn decode(
6566            &mut self,
6567            decoder: &mut fidl::encoding::Decoder<'_, D>,
6568            offset: usize,
6569            _depth: fidl::encoding::Depth,
6570        ) -> fidl::Result<()> {
6571            decoder.debug_check_bounds::<Self>(offset);
6572            // Verify that padding bytes are zero.
6573            fidl::decode!(EapolIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
6574            Ok(())
6575        }
6576    }
6577
6578    impl fidl::encoding::ValueTypeMarker for MlmeEapolReqRequest {
6579        type Borrowed<'a> = &'a Self;
6580        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6581            value
6582        }
6583    }
6584
6585    unsafe impl fidl::encoding::TypeMarker for MlmeEapolReqRequest {
6586        type Owned = Self;
6587
6588        #[inline(always)]
6589        fn inline_align(_context: fidl::encoding::Context) -> usize {
6590            8
6591        }
6592
6593        #[inline(always)]
6594        fn inline_size(_context: fidl::encoding::Context) -> usize {
6595            32
6596        }
6597    }
6598
6599    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolReqRequest, D>
6600        for &MlmeEapolReqRequest
6601    {
6602        #[inline]
6603        unsafe fn encode(
6604            self,
6605            encoder: &mut fidl::encoding::Encoder<'_, D>,
6606            offset: usize,
6607            _depth: fidl::encoding::Depth,
6608        ) -> fidl::Result<()> {
6609            encoder.debug_check_bounds::<MlmeEapolReqRequest>(offset);
6610            // Delegate to tuple encoding.
6611            fidl::encoding::Encode::<MlmeEapolReqRequest, D>::encode(
6612                (<EapolRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6613                encoder,
6614                offset,
6615                _depth,
6616            )
6617        }
6618    }
6619    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolRequest, D>>
6620        fidl::encoding::Encode<MlmeEapolReqRequest, D> for (T0,)
6621    {
6622        #[inline]
6623        unsafe fn encode(
6624            self,
6625            encoder: &mut fidl::encoding::Encoder<'_, D>,
6626            offset: usize,
6627            depth: fidl::encoding::Depth,
6628        ) -> fidl::Result<()> {
6629            encoder.debug_check_bounds::<MlmeEapolReqRequest>(offset);
6630            // Zero out padding regions. There's no need to apply masks
6631            // because the unmasked parts will be overwritten by fields.
6632            // Write the fields.
6633            self.0.encode(encoder, offset + 0, depth)?;
6634            Ok(())
6635        }
6636    }
6637
6638    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolReqRequest {
6639        #[inline(always)]
6640        fn new_empty() -> Self {
6641            Self { req: fidl::new_empty!(EapolRequest, D) }
6642        }
6643
6644        #[inline]
6645        unsafe fn decode(
6646            &mut self,
6647            decoder: &mut fidl::encoding::Decoder<'_, D>,
6648            offset: usize,
6649            _depth: fidl::encoding::Depth,
6650        ) -> fidl::Result<()> {
6651            decoder.debug_check_bounds::<Self>(offset);
6652            // Verify that padding bytes are zero.
6653            fidl::decode!(EapolRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6654            Ok(())
6655        }
6656    }
6657
6658    impl fidl::encoding::ValueTypeMarker for MlmeFinalizeAssociationReqRequest {
6659        type Borrowed<'a> = &'a Self;
6660        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6661            value
6662        }
6663    }
6664
6665    unsafe impl fidl::encoding::TypeMarker for MlmeFinalizeAssociationReqRequest {
6666        type Owned = Self;
6667
6668        #[inline(always)]
6669        fn inline_align(_context: fidl::encoding::Context) -> usize {
6670            8
6671        }
6672
6673        #[inline(always)]
6674        fn inline_size(_context: fidl::encoding::Context) -> usize {
6675            48
6676        }
6677    }
6678
6679    unsafe impl<D: fidl::encoding::ResourceDialect>
6680        fidl::encoding::Encode<MlmeFinalizeAssociationReqRequest, D>
6681        for &MlmeFinalizeAssociationReqRequest
6682    {
6683        #[inline]
6684        unsafe fn encode(
6685            self,
6686            encoder: &mut fidl::encoding::Encoder<'_, D>,
6687            offset: usize,
6688            _depth: fidl::encoding::Depth,
6689        ) -> fidl::Result<()> {
6690            encoder.debug_check_bounds::<MlmeFinalizeAssociationReqRequest>(offset);
6691            // Delegate to tuple encoding.
6692            fidl::encoding::Encode::<MlmeFinalizeAssociationReqRequest, D>::encode(
6693                (<NegotiatedCapabilities as fidl::encoding::ValueTypeMarker>::borrow(
6694                    &self.negotiated_capabilities,
6695                ),),
6696                encoder,
6697                offset,
6698                _depth,
6699            )
6700        }
6701    }
6702    unsafe impl<
6703        D: fidl::encoding::ResourceDialect,
6704        T0: fidl::encoding::Encode<NegotiatedCapabilities, D>,
6705    > fidl::encoding::Encode<MlmeFinalizeAssociationReqRequest, D> for (T0,)
6706    {
6707        #[inline]
6708        unsafe fn encode(
6709            self,
6710            encoder: &mut fidl::encoding::Encoder<'_, D>,
6711            offset: usize,
6712            depth: fidl::encoding::Depth,
6713        ) -> fidl::Result<()> {
6714            encoder.debug_check_bounds::<MlmeFinalizeAssociationReqRequest>(offset);
6715            // Zero out padding regions. There's no need to apply masks
6716            // because the unmasked parts will be overwritten by fields.
6717            // Write the fields.
6718            self.0.encode(encoder, offset + 0, depth)?;
6719            Ok(())
6720        }
6721    }
6722
6723    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6724        for MlmeFinalizeAssociationReqRequest
6725    {
6726        #[inline(always)]
6727        fn new_empty() -> Self {
6728            Self { negotiated_capabilities: fidl::new_empty!(NegotiatedCapabilities, D) }
6729        }
6730
6731        #[inline]
6732        unsafe fn decode(
6733            &mut self,
6734            decoder: &mut fidl::encoding::Decoder<'_, D>,
6735            offset: usize,
6736            _depth: fidl::encoding::Depth,
6737        ) -> fidl::Result<()> {
6738            decoder.debug_check_bounds::<Self>(offset);
6739            // Verify that padding bytes are zero.
6740            fidl::decode!(
6741                NegotiatedCapabilities,
6742                D,
6743                &mut self.negotiated_capabilities,
6744                decoder,
6745                offset + 0,
6746                _depth
6747            )?;
6748            Ok(())
6749        }
6750    }
6751
6752    impl fidl::encoding::ValueTypeMarker for MlmeGetIfaceHistogramStatsResponse {
6753        type Borrowed<'a> = &'a Self;
6754        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6755            value
6756        }
6757    }
6758
6759    unsafe impl fidl::encoding::TypeMarker for MlmeGetIfaceHistogramStatsResponse {
6760        type Owned = Self;
6761
6762        #[inline(always)]
6763        fn inline_align(_context: fidl::encoding::Context) -> usize {
6764            8
6765        }
6766
6767        #[inline(always)]
6768        fn inline_size(_context: fidl::encoding::Context) -> usize {
6769            16
6770        }
6771    }
6772
6773    unsafe impl<D: fidl::encoding::ResourceDialect>
6774        fidl::encoding::Encode<MlmeGetIfaceHistogramStatsResponse, D>
6775        for &MlmeGetIfaceHistogramStatsResponse
6776    {
6777        #[inline]
6778        unsafe fn encode(
6779            self,
6780            encoder: &mut fidl::encoding::Encoder<'_, D>,
6781            offset: usize,
6782            _depth: fidl::encoding::Depth,
6783        ) -> fidl::Result<()> {
6784            encoder.debug_check_bounds::<MlmeGetIfaceHistogramStatsResponse>(offset);
6785            // Delegate to tuple encoding.
6786            fidl::encoding::Encode::<MlmeGetIfaceHistogramStatsResponse, D>::encode(
6787                (<GetIfaceHistogramStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(
6788                    &self.resp,
6789                ),),
6790                encoder,
6791                offset,
6792                _depth,
6793            )
6794        }
6795    }
6796    unsafe impl<
6797        D: fidl::encoding::ResourceDialect,
6798        T0: fidl::encoding::Encode<GetIfaceHistogramStatsResponse, D>,
6799    > fidl::encoding::Encode<MlmeGetIfaceHistogramStatsResponse, D> for (T0,)
6800    {
6801        #[inline]
6802        unsafe fn encode(
6803            self,
6804            encoder: &mut fidl::encoding::Encoder<'_, D>,
6805            offset: usize,
6806            depth: fidl::encoding::Depth,
6807        ) -> fidl::Result<()> {
6808            encoder.debug_check_bounds::<MlmeGetIfaceHistogramStatsResponse>(offset);
6809            // Zero out padding regions. There's no need to apply masks
6810            // because the unmasked parts will be overwritten by fields.
6811            // Write the fields.
6812            self.0.encode(encoder, offset + 0, depth)?;
6813            Ok(())
6814        }
6815    }
6816
6817    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6818        for MlmeGetIfaceHistogramStatsResponse
6819    {
6820        #[inline(always)]
6821        fn new_empty() -> Self {
6822            Self { resp: fidl::new_empty!(GetIfaceHistogramStatsResponse, D) }
6823        }
6824
6825        #[inline]
6826        unsafe fn decode(
6827            &mut self,
6828            decoder: &mut fidl::encoding::Decoder<'_, D>,
6829            offset: usize,
6830            _depth: fidl::encoding::Depth,
6831        ) -> fidl::Result<()> {
6832            decoder.debug_check_bounds::<Self>(offset);
6833            // Verify that padding bytes are zero.
6834            fidl::decode!(
6835                GetIfaceHistogramStatsResponse,
6836                D,
6837                &mut self.resp,
6838                decoder,
6839                offset + 0,
6840                _depth
6841            )?;
6842            Ok(())
6843        }
6844    }
6845
6846    impl fidl::encoding::ValueTypeMarker for MlmeGetIfaceStatsResponse {
6847        type Borrowed<'a> = &'a Self;
6848        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6849            value
6850        }
6851    }
6852
6853    unsafe impl fidl::encoding::TypeMarker for MlmeGetIfaceStatsResponse {
6854        type Owned = Self;
6855
6856        #[inline(always)]
6857        fn inline_align(_context: fidl::encoding::Context) -> usize {
6858            8
6859        }
6860
6861        #[inline(always)]
6862        fn inline_size(_context: fidl::encoding::Context) -> usize {
6863            16
6864        }
6865    }
6866
6867    unsafe impl<D: fidl::encoding::ResourceDialect>
6868        fidl::encoding::Encode<MlmeGetIfaceStatsResponse, D> for &MlmeGetIfaceStatsResponse
6869    {
6870        #[inline]
6871        unsafe fn encode(
6872            self,
6873            encoder: &mut fidl::encoding::Encoder<'_, D>,
6874            offset: usize,
6875            _depth: fidl::encoding::Depth,
6876        ) -> fidl::Result<()> {
6877            encoder.debug_check_bounds::<MlmeGetIfaceStatsResponse>(offset);
6878            // Delegate to tuple encoding.
6879            fidl::encoding::Encode::<MlmeGetIfaceStatsResponse, D>::encode(
6880                (<GetIfaceStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6881                encoder,
6882                offset,
6883                _depth,
6884            )
6885        }
6886    }
6887    unsafe impl<
6888        D: fidl::encoding::ResourceDialect,
6889        T0: fidl::encoding::Encode<GetIfaceStatsResponse, D>,
6890    > fidl::encoding::Encode<MlmeGetIfaceStatsResponse, D> for (T0,)
6891    {
6892        #[inline]
6893        unsafe fn encode(
6894            self,
6895            encoder: &mut fidl::encoding::Encoder<'_, D>,
6896            offset: usize,
6897            depth: fidl::encoding::Depth,
6898        ) -> fidl::Result<()> {
6899            encoder.debug_check_bounds::<MlmeGetIfaceStatsResponse>(offset);
6900            // Zero out padding regions. There's no need to apply masks
6901            // because the unmasked parts will be overwritten by fields.
6902            // Write the fields.
6903            self.0.encode(encoder, offset + 0, depth)?;
6904            Ok(())
6905        }
6906    }
6907
6908    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6909        for MlmeGetIfaceStatsResponse
6910    {
6911        #[inline(always)]
6912        fn new_empty() -> Self {
6913            Self { resp: fidl::new_empty!(GetIfaceStatsResponse, D) }
6914        }
6915
6916        #[inline]
6917        unsafe fn decode(
6918            &mut self,
6919            decoder: &mut fidl::encoding::Decoder<'_, D>,
6920            offset: usize,
6921            _depth: fidl::encoding::Depth,
6922        ) -> fidl::Result<()> {
6923            decoder.debug_check_bounds::<Self>(offset);
6924            // Verify that padding bytes are zero.
6925            fidl::decode!(GetIfaceStatsResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
6926            Ok(())
6927        }
6928    }
6929
6930    impl fidl::encoding::ValueTypeMarker for MlmeGetMinstrelStatsRequest {
6931        type Borrowed<'a> = &'a Self;
6932        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6933            value
6934        }
6935    }
6936
6937    unsafe impl fidl::encoding::TypeMarker for MlmeGetMinstrelStatsRequest {
6938        type Owned = Self;
6939
6940        #[inline(always)]
6941        fn inline_align(_context: fidl::encoding::Context) -> usize {
6942            1
6943        }
6944
6945        #[inline(always)]
6946        fn inline_size(_context: fidl::encoding::Context) -> usize {
6947            6
6948        }
6949        #[inline(always)]
6950        fn encode_is_copy() -> bool {
6951            true
6952        }
6953
6954        #[inline(always)]
6955        fn decode_is_copy() -> bool {
6956            true
6957        }
6958    }
6959
6960    unsafe impl<D: fidl::encoding::ResourceDialect>
6961        fidl::encoding::Encode<MlmeGetMinstrelStatsRequest, D> for &MlmeGetMinstrelStatsRequest
6962    {
6963        #[inline]
6964        unsafe fn encode(
6965            self,
6966            encoder: &mut fidl::encoding::Encoder<'_, D>,
6967            offset: usize,
6968            _depth: fidl::encoding::Depth,
6969        ) -> fidl::Result<()> {
6970            encoder.debug_check_bounds::<MlmeGetMinstrelStatsRequest>(offset);
6971            unsafe {
6972                // Copy the object into the buffer.
6973                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
6974                (buf_ptr as *mut MlmeGetMinstrelStatsRequest)
6975                    .write_unaligned((self as *const MlmeGetMinstrelStatsRequest).read());
6976                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
6977                // done second because the memcpy will write garbage to these bytes.
6978            }
6979            Ok(())
6980        }
6981    }
6982    unsafe impl<
6983        D: fidl::encoding::ResourceDialect,
6984        T0: fidl::encoding::Encode<MinstrelStatsRequest, D>,
6985    > fidl::encoding::Encode<MlmeGetMinstrelStatsRequest, D> for (T0,)
6986    {
6987        #[inline]
6988        unsafe fn encode(
6989            self,
6990            encoder: &mut fidl::encoding::Encoder<'_, D>,
6991            offset: usize,
6992            depth: fidl::encoding::Depth,
6993        ) -> fidl::Result<()> {
6994            encoder.debug_check_bounds::<MlmeGetMinstrelStatsRequest>(offset);
6995            // Zero out padding regions. There's no need to apply masks
6996            // because the unmasked parts will be overwritten by fields.
6997            // Write the fields.
6998            self.0.encode(encoder, offset + 0, depth)?;
6999            Ok(())
7000        }
7001    }
7002
7003    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7004        for MlmeGetMinstrelStatsRequest
7005    {
7006        #[inline(always)]
7007        fn new_empty() -> Self {
7008            Self { req: fidl::new_empty!(MinstrelStatsRequest, D) }
7009        }
7010
7011        #[inline]
7012        unsafe fn decode(
7013            &mut self,
7014            decoder: &mut fidl::encoding::Decoder<'_, D>,
7015            offset: usize,
7016            _depth: fidl::encoding::Depth,
7017        ) -> fidl::Result<()> {
7018            decoder.debug_check_bounds::<Self>(offset);
7019            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7020            // Verify that padding bytes are zero.
7021            // Copy from the buffer into the object.
7022            unsafe {
7023                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
7024            }
7025            Ok(())
7026        }
7027    }
7028
7029    impl fidl::encoding::ValueTypeMarker for MlmeGetMinstrelStatsResponse {
7030        type Borrowed<'a> = &'a Self;
7031        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7032            value
7033        }
7034    }
7035
7036    unsafe impl fidl::encoding::TypeMarker for MlmeGetMinstrelStatsResponse {
7037        type Owned = Self;
7038
7039        #[inline(always)]
7040        fn inline_align(_context: fidl::encoding::Context) -> usize {
7041            8
7042        }
7043
7044        #[inline(always)]
7045        fn inline_size(_context: fidl::encoding::Context) -> usize {
7046            8
7047        }
7048    }
7049
7050    unsafe impl<D: fidl::encoding::ResourceDialect>
7051        fidl::encoding::Encode<MlmeGetMinstrelStatsResponse, D> for &MlmeGetMinstrelStatsResponse
7052    {
7053        #[inline]
7054        unsafe fn encode(
7055            self,
7056            encoder: &mut fidl::encoding::Encoder<'_, D>,
7057            offset: usize,
7058            _depth: fidl::encoding::Depth,
7059        ) -> fidl::Result<()> {
7060            encoder.debug_check_bounds::<MlmeGetMinstrelStatsResponse>(offset);
7061            // Delegate to tuple encoding.
7062            fidl::encoding::Encode::<MlmeGetMinstrelStatsResponse, D>::encode(
7063                (<MinstrelStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
7064                encoder,
7065                offset,
7066                _depth,
7067            )
7068        }
7069    }
7070    unsafe impl<
7071        D: fidl::encoding::ResourceDialect,
7072        T0: fidl::encoding::Encode<MinstrelStatsResponse, D>,
7073    > fidl::encoding::Encode<MlmeGetMinstrelStatsResponse, D> for (T0,)
7074    {
7075        #[inline]
7076        unsafe fn encode(
7077            self,
7078            encoder: &mut fidl::encoding::Encoder<'_, D>,
7079            offset: usize,
7080            depth: fidl::encoding::Depth,
7081        ) -> fidl::Result<()> {
7082            encoder.debug_check_bounds::<MlmeGetMinstrelStatsResponse>(offset);
7083            // Zero out padding regions. There's no need to apply masks
7084            // because the unmasked parts will be overwritten by fields.
7085            // Write the fields.
7086            self.0.encode(encoder, offset + 0, depth)?;
7087            Ok(())
7088        }
7089    }
7090
7091    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7092        for MlmeGetMinstrelStatsResponse
7093    {
7094        #[inline(always)]
7095        fn new_empty() -> Self {
7096            Self { resp: fidl::new_empty!(MinstrelStatsResponse, D) }
7097        }
7098
7099        #[inline]
7100        unsafe fn decode(
7101            &mut self,
7102            decoder: &mut fidl::encoding::Decoder<'_, D>,
7103            offset: usize,
7104            _depth: fidl::encoding::Depth,
7105        ) -> fidl::Result<()> {
7106            decoder.debug_check_bounds::<Self>(offset);
7107            // Verify that padding bytes are zero.
7108            fidl::decode!(MinstrelStatsResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
7109            Ok(())
7110        }
7111    }
7112
7113    impl fidl::encoding::ValueTypeMarker for MlmeInstallApfPacketFilterRequest {
7114        type Borrowed<'a> = &'a Self;
7115        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7116            value
7117        }
7118    }
7119
7120    unsafe impl fidl::encoding::TypeMarker for MlmeInstallApfPacketFilterRequest {
7121        type Owned = Self;
7122
7123        #[inline(always)]
7124        fn inline_align(_context: fidl::encoding::Context) -> usize {
7125            8
7126        }
7127
7128        #[inline(always)]
7129        fn inline_size(_context: fidl::encoding::Context) -> usize {
7130            16
7131        }
7132    }
7133
7134    unsafe impl<D: fidl::encoding::ResourceDialect>
7135        fidl::encoding::Encode<MlmeInstallApfPacketFilterRequest, D>
7136        for &MlmeInstallApfPacketFilterRequest
7137    {
7138        #[inline]
7139        unsafe fn encode(
7140            self,
7141            encoder: &mut fidl::encoding::Encoder<'_, D>,
7142            offset: usize,
7143            _depth: fidl::encoding::Depth,
7144        ) -> fidl::Result<()> {
7145            encoder.debug_check_bounds::<MlmeInstallApfPacketFilterRequest>(offset);
7146            // Delegate to tuple encoding.
7147            fidl::encoding::Encode::<MlmeInstallApfPacketFilterRequest, D>::encode(
7148                (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
7149                    &self.program,
7150                ),),
7151                encoder,
7152                offset,
7153                _depth,
7154            )
7155        }
7156    }
7157    unsafe impl<
7158        D: fidl::encoding::ResourceDialect,
7159        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
7160    > fidl::encoding::Encode<MlmeInstallApfPacketFilterRequest, D> for (T0,)
7161    {
7162        #[inline]
7163        unsafe fn encode(
7164            self,
7165            encoder: &mut fidl::encoding::Encoder<'_, D>,
7166            offset: usize,
7167            depth: fidl::encoding::Depth,
7168        ) -> fidl::Result<()> {
7169            encoder.debug_check_bounds::<MlmeInstallApfPacketFilterRequest>(offset);
7170            // Zero out padding regions. There's no need to apply masks
7171            // because the unmasked parts will be overwritten by fields.
7172            // Write the fields.
7173            self.0.encode(encoder, offset + 0, depth)?;
7174            Ok(())
7175        }
7176    }
7177
7178    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7179        for MlmeInstallApfPacketFilterRequest
7180    {
7181        #[inline(always)]
7182        fn new_empty() -> Self {
7183            Self { program: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
7184        }
7185
7186        #[inline]
7187        unsafe fn decode(
7188            &mut self,
7189            decoder: &mut fidl::encoding::Decoder<'_, D>,
7190            offset: usize,
7191            _depth: fidl::encoding::Depth,
7192        ) -> fidl::Result<()> {
7193            decoder.debug_check_bounds::<Self>(offset);
7194            // Verify that padding bytes are zero.
7195            fidl::decode!(
7196                fidl::encoding::UnboundedVector<u8>,
7197                D,
7198                &mut self.program,
7199                decoder,
7200                offset + 0,
7201                _depth
7202            )?;
7203            Ok(())
7204        }
7205    }
7206
7207    impl fidl::encoding::ValueTypeMarker for MlmeListMinstrelPeersResponse {
7208        type Borrowed<'a> = &'a Self;
7209        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7210            value
7211        }
7212    }
7213
7214    unsafe impl fidl::encoding::TypeMarker for MlmeListMinstrelPeersResponse {
7215        type Owned = Self;
7216
7217        #[inline(always)]
7218        fn inline_align(_context: fidl::encoding::Context) -> usize {
7219            8
7220        }
7221
7222        #[inline(always)]
7223        fn inline_size(_context: fidl::encoding::Context) -> usize {
7224            16
7225        }
7226    }
7227
7228    unsafe impl<D: fidl::encoding::ResourceDialect>
7229        fidl::encoding::Encode<MlmeListMinstrelPeersResponse, D>
7230        for &MlmeListMinstrelPeersResponse
7231    {
7232        #[inline]
7233        unsafe fn encode(
7234            self,
7235            encoder: &mut fidl::encoding::Encoder<'_, D>,
7236            offset: usize,
7237            _depth: fidl::encoding::Depth,
7238        ) -> fidl::Result<()> {
7239            encoder.debug_check_bounds::<MlmeListMinstrelPeersResponse>(offset);
7240            // Delegate to tuple encoding.
7241            fidl::encoding::Encode::<MlmeListMinstrelPeersResponse, D>::encode(
7242                (<MinstrelListResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
7243                encoder,
7244                offset,
7245                _depth,
7246            )
7247        }
7248    }
7249    unsafe impl<
7250        D: fidl::encoding::ResourceDialect,
7251        T0: fidl::encoding::Encode<MinstrelListResponse, D>,
7252    > fidl::encoding::Encode<MlmeListMinstrelPeersResponse, D> for (T0,)
7253    {
7254        #[inline]
7255        unsafe fn encode(
7256            self,
7257            encoder: &mut fidl::encoding::Encoder<'_, D>,
7258            offset: usize,
7259            depth: fidl::encoding::Depth,
7260        ) -> fidl::Result<()> {
7261            encoder.debug_check_bounds::<MlmeListMinstrelPeersResponse>(offset);
7262            // Zero out padding regions. There's no need to apply masks
7263            // because the unmasked parts will be overwritten by fields.
7264            // Write the fields.
7265            self.0.encode(encoder, offset + 0, depth)?;
7266            Ok(())
7267        }
7268    }
7269
7270    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7271        for MlmeListMinstrelPeersResponse
7272    {
7273        #[inline(always)]
7274        fn new_empty() -> Self {
7275            Self { resp: fidl::new_empty!(MinstrelListResponse, D) }
7276        }
7277
7278        #[inline]
7279        unsafe fn decode(
7280            &mut self,
7281            decoder: &mut fidl::encoding::Decoder<'_, D>,
7282            offset: usize,
7283            _depth: fidl::encoding::Depth,
7284        ) -> fidl::Result<()> {
7285            decoder.debug_check_bounds::<Self>(offset);
7286            // Verify that padding bytes are zero.
7287            fidl::decode!(MinstrelListResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
7288            Ok(())
7289        }
7290    }
7291
7292    impl fidl::encoding::ValueTypeMarker for MlmeOnChannelSwitchedRequest {
7293        type Borrowed<'a> = &'a Self;
7294        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7295            value
7296        }
7297    }
7298
7299    unsafe impl fidl::encoding::TypeMarker for MlmeOnChannelSwitchedRequest {
7300        type Owned = Self;
7301
7302        #[inline(always)]
7303        fn inline_align(_context: fidl::encoding::Context) -> usize {
7304            4
7305        }
7306
7307        #[inline(always)]
7308        fn inline_size(_context: fidl::encoding::Context) -> usize {
7309            12
7310        }
7311    }
7312
7313    unsafe impl<D: fidl::encoding::ResourceDialect>
7314        fidl::encoding::Encode<MlmeOnChannelSwitchedRequest, D> for &MlmeOnChannelSwitchedRequest
7315    {
7316        #[inline]
7317        unsafe fn encode(
7318            self,
7319            encoder: &mut fidl::encoding::Encoder<'_, D>,
7320            offset: usize,
7321            _depth: fidl::encoding::Depth,
7322        ) -> fidl::Result<()> {
7323            encoder.debug_check_bounds::<MlmeOnChannelSwitchedRequest>(offset);
7324            // Delegate to tuple encoding.
7325            fidl::encoding::Encode::<MlmeOnChannelSwitchedRequest, D>::encode(
7326                (
7327                    <fidl_fuchsia_wlan_internal_common::ChannelSwitchInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),
7328                ),
7329                encoder, offset, _depth
7330            )
7331        }
7332    }
7333    unsafe impl<
7334        D: fidl::encoding::ResourceDialect,
7335        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal_common::ChannelSwitchInfo, D>,
7336    > fidl::encoding::Encode<MlmeOnChannelSwitchedRequest, D> for (T0,)
7337    {
7338        #[inline]
7339        unsafe fn encode(
7340            self,
7341            encoder: &mut fidl::encoding::Encoder<'_, D>,
7342            offset: usize,
7343            depth: fidl::encoding::Depth,
7344        ) -> fidl::Result<()> {
7345            encoder.debug_check_bounds::<MlmeOnChannelSwitchedRequest>(offset);
7346            // Zero out padding regions. There's no need to apply masks
7347            // because the unmasked parts will be overwritten by fields.
7348            // Write the fields.
7349            self.0.encode(encoder, offset + 0, depth)?;
7350            Ok(())
7351        }
7352    }
7353
7354    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7355        for MlmeOnChannelSwitchedRequest
7356    {
7357        #[inline(always)]
7358        fn new_empty() -> Self {
7359            Self { info: fidl::new_empty!(fidl_fuchsia_wlan_internal_common::ChannelSwitchInfo, D) }
7360        }
7361
7362        #[inline]
7363        unsafe fn decode(
7364            &mut self,
7365            decoder: &mut fidl::encoding::Decoder<'_, D>,
7366            offset: usize,
7367            _depth: fidl::encoding::Depth,
7368        ) -> fidl::Result<()> {
7369            decoder.debug_check_bounds::<Self>(offset);
7370            // Verify that padding bytes are zero.
7371            fidl::decode!(
7372                fidl_fuchsia_wlan_internal_common::ChannelSwitchInfo,
7373                D,
7374                &mut self.info,
7375                decoder,
7376                offset + 0,
7377                _depth
7378            )?;
7379            Ok(())
7380        }
7381    }
7382
7383    impl fidl::encoding::ValueTypeMarker for MlmeOnPmkAvailableRequest {
7384        type Borrowed<'a> = &'a Self;
7385        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7386            value
7387        }
7388    }
7389
7390    unsafe impl fidl::encoding::TypeMarker for MlmeOnPmkAvailableRequest {
7391        type Owned = Self;
7392
7393        #[inline(always)]
7394        fn inline_align(_context: fidl::encoding::Context) -> usize {
7395            8
7396        }
7397
7398        #[inline(always)]
7399        fn inline_size(_context: fidl::encoding::Context) -> usize {
7400            32
7401        }
7402    }
7403
7404    unsafe impl<D: fidl::encoding::ResourceDialect>
7405        fidl::encoding::Encode<MlmeOnPmkAvailableRequest, D> for &MlmeOnPmkAvailableRequest
7406    {
7407        #[inline]
7408        unsafe fn encode(
7409            self,
7410            encoder: &mut fidl::encoding::Encoder<'_, D>,
7411            offset: usize,
7412            _depth: fidl::encoding::Depth,
7413        ) -> fidl::Result<()> {
7414            encoder.debug_check_bounds::<MlmeOnPmkAvailableRequest>(offset);
7415            // Delegate to tuple encoding.
7416            fidl::encoding::Encode::<MlmeOnPmkAvailableRequest, D>::encode(
7417                (<PmkInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
7418                encoder,
7419                offset,
7420                _depth,
7421            )
7422        }
7423    }
7424    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<PmkInfo, D>>
7425        fidl::encoding::Encode<MlmeOnPmkAvailableRequest, D> for (T0,)
7426    {
7427        #[inline]
7428        unsafe fn encode(
7429            self,
7430            encoder: &mut fidl::encoding::Encoder<'_, D>,
7431            offset: usize,
7432            depth: fidl::encoding::Depth,
7433        ) -> fidl::Result<()> {
7434            encoder.debug_check_bounds::<MlmeOnPmkAvailableRequest>(offset);
7435            // Zero out padding regions. There's no need to apply masks
7436            // because the unmasked parts will be overwritten by fields.
7437            // Write the fields.
7438            self.0.encode(encoder, offset + 0, depth)?;
7439            Ok(())
7440        }
7441    }
7442
7443    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7444        for MlmeOnPmkAvailableRequest
7445    {
7446        #[inline(always)]
7447        fn new_empty() -> Self {
7448            Self { info: fidl::new_empty!(PmkInfo, D) }
7449        }
7450
7451        #[inline]
7452        unsafe fn decode(
7453            &mut self,
7454            decoder: &mut fidl::encoding::Decoder<'_, D>,
7455            offset: usize,
7456            _depth: fidl::encoding::Depth,
7457        ) -> fidl::Result<()> {
7458            decoder.debug_check_bounds::<Self>(offset);
7459            // Verify that padding bytes are zero.
7460            fidl::decode!(PmkInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
7461            Ok(())
7462        }
7463    }
7464
7465    impl fidl::encoding::ValueTypeMarker for MlmeOnSaeFrameRxRequest {
7466        type Borrowed<'a> = &'a Self;
7467        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7468            value
7469        }
7470    }
7471
7472    unsafe impl fidl::encoding::TypeMarker for MlmeOnSaeFrameRxRequest {
7473        type Owned = Self;
7474
7475        #[inline(always)]
7476        fn inline_align(_context: fidl::encoding::Context) -> usize {
7477            8
7478        }
7479
7480        #[inline(always)]
7481        fn inline_size(_context: fidl::encoding::Context) -> usize {
7482            32
7483        }
7484    }
7485
7486    unsafe impl<D: fidl::encoding::ResourceDialect>
7487        fidl::encoding::Encode<MlmeOnSaeFrameRxRequest, D> for &MlmeOnSaeFrameRxRequest
7488    {
7489        #[inline]
7490        unsafe fn encode(
7491            self,
7492            encoder: &mut fidl::encoding::Encoder<'_, D>,
7493            offset: usize,
7494            _depth: fidl::encoding::Depth,
7495        ) -> fidl::Result<()> {
7496            encoder.debug_check_bounds::<MlmeOnSaeFrameRxRequest>(offset);
7497            // Delegate to tuple encoding.
7498            fidl::encoding::Encode::<MlmeOnSaeFrameRxRequest, D>::encode(
7499                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
7500                encoder,
7501                offset,
7502                _depth,
7503            )
7504        }
7505    }
7506    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
7507        fidl::encoding::Encode<MlmeOnSaeFrameRxRequest, D> for (T0,)
7508    {
7509        #[inline]
7510        unsafe fn encode(
7511            self,
7512            encoder: &mut fidl::encoding::Encoder<'_, D>,
7513            offset: usize,
7514            depth: fidl::encoding::Depth,
7515        ) -> fidl::Result<()> {
7516            encoder.debug_check_bounds::<MlmeOnSaeFrameRxRequest>(offset);
7517            // Zero out padding regions. There's no need to apply masks
7518            // because the unmasked parts will be overwritten by fields.
7519            // Write the fields.
7520            self.0.encode(encoder, offset + 0, depth)?;
7521            Ok(())
7522        }
7523    }
7524
7525    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7526        for MlmeOnSaeFrameRxRequest
7527    {
7528        #[inline(always)]
7529        fn new_empty() -> Self {
7530            Self { frame: fidl::new_empty!(SaeFrame, D) }
7531        }
7532
7533        #[inline]
7534        unsafe fn decode(
7535            &mut self,
7536            decoder: &mut fidl::encoding::Decoder<'_, D>,
7537            offset: usize,
7538            _depth: fidl::encoding::Depth,
7539        ) -> fidl::Result<()> {
7540            decoder.debug_check_bounds::<Self>(offset);
7541            // Verify that padding bytes are zero.
7542            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
7543            Ok(())
7544        }
7545    }
7546
7547    impl fidl::encoding::ValueTypeMarker for MlmeOnSaeHandshakeIndRequest {
7548        type Borrowed<'a> = &'a Self;
7549        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7550            value
7551        }
7552    }
7553
7554    unsafe impl fidl::encoding::TypeMarker for MlmeOnSaeHandshakeIndRequest {
7555        type Owned = Self;
7556
7557        #[inline(always)]
7558        fn inline_align(_context: fidl::encoding::Context) -> usize {
7559            1
7560        }
7561
7562        #[inline(always)]
7563        fn inline_size(_context: fidl::encoding::Context) -> usize {
7564            6
7565        }
7566        #[inline(always)]
7567        fn encode_is_copy() -> bool {
7568            true
7569        }
7570
7571        #[inline(always)]
7572        fn decode_is_copy() -> bool {
7573            true
7574        }
7575    }
7576
7577    unsafe impl<D: fidl::encoding::ResourceDialect>
7578        fidl::encoding::Encode<MlmeOnSaeHandshakeIndRequest, D> for &MlmeOnSaeHandshakeIndRequest
7579    {
7580        #[inline]
7581        unsafe fn encode(
7582            self,
7583            encoder: &mut fidl::encoding::Encoder<'_, D>,
7584            offset: usize,
7585            _depth: fidl::encoding::Depth,
7586        ) -> fidl::Result<()> {
7587            encoder.debug_check_bounds::<MlmeOnSaeHandshakeIndRequest>(offset);
7588            unsafe {
7589                // Copy the object into the buffer.
7590                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7591                (buf_ptr as *mut MlmeOnSaeHandshakeIndRequest)
7592                    .write_unaligned((self as *const MlmeOnSaeHandshakeIndRequest).read());
7593                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7594                // done second because the memcpy will write garbage to these bytes.
7595            }
7596            Ok(())
7597        }
7598    }
7599    unsafe impl<
7600        D: fidl::encoding::ResourceDialect,
7601        T0: fidl::encoding::Encode<SaeHandshakeIndication, D>,
7602    > fidl::encoding::Encode<MlmeOnSaeHandshakeIndRequest, D> for (T0,)
7603    {
7604        #[inline]
7605        unsafe fn encode(
7606            self,
7607            encoder: &mut fidl::encoding::Encoder<'_, D>,
7608            offset: usize,
7609            depth: fidl::encoding::Depth,
7610        ) -> fidl::Result<()> {
7611            encoder.debug_check_bounds::<MlmeOnSaeHandshakeIndRequest>(offset);
7612            // Zero out padding regions. There's no need to apply masks
7613            // because the unmasked parts will be overwritten by fields.
7614            // Write the fields.
7615            self.0.encode(encoder, offset + 0, depth)?;
7616            Ok(())
7617        }
7618    }
7619
7620    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7621        for MlmeOnSaeHandshakeIndRequest
7622    {
7623        #[inline(always)]
7624        fn new_empty() -> Self {
7625            Self { ind: fidl::new_empty!(SaeHandshakeIndication, D) }
7626        }
7627
7628        #[inline]
7629        unsafe fn decode(
7630            &mut self,
7631            decoder: &mut fidl::encoding::Decoder<'_, D>,
7632            offset: usize,
7633            _depth: fidl::encoding::Depth,
7634        ) -> fidl::Result<()> {
7635            decoder.debug_check_bounds::<Self>(offset);
7636            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7637            // Verify that padding bytes are zero.
7638            // Copy from the buffer into the object.
7639            unsafe {
7640                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
7641            }
7642            Ok(())
7643        }
7644    }
7645
7646    impl fidl::encoding::ValueTypeMarker for MlmeOnScanEndRequest {
7647        type Borrowed<'a> = &'a Self;
7648        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7649            value
7650        }
7651    }
7652
7653    unsafe impl fidl::encoding::TypeMarker for MlmeOnScanEndRequest {
7654        type Owned = Self;
7655
7656        #[inline(always)]
7657        fn inline_align(_context: fidl::encoding::Context) -> usize {
7658            8
7659        }
7660
7661        #[inline(always)]
7662        fn inline_size(_context: fidl::encoding::Context) -> usize {
7663            16
7664        }
7665    }
7666
7667    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeOnScanEndRequest, D>
7668        for &MlmeOnScanEndRequest
7669    {
7670        #[inline]
7671        unsafe fn encode(
7672            self,
7673            encoder: &mut fidl::encoding::Encoder<'_, D>,
7674            offset: usize,
7675            _depth: fidl::encoding::Depth,
7676        ) -> fidl::Result<()> {
7677            encoder.debug_check_bounds::<MlmeOnScanEndRequest>(offset);
7678            // Delegate to tuple encoding.
7679            fidl::encoding::Encode::<MlmeOnScanEndRequest, D>::encode(
7680                (<ScanEnd as fidl::encoding::ValueTypeMarker>::borrow(&self.end),),
7681                encoder,
7682                offset,
7683                _depth,
7684            )
7685        }
7686    }
7687    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanEnd, D>>
7688        fidl::encoding::Encode<MlmeOnScanEndRequest, D> for (T0,)
7689    {
7690        #[inline]
7691        unsafe fn encode(
7692            self,
7693            encoder: &mut fidl::encoding::Encoder<'_, D>,
7694            offset: usize,
7695            depth: fidl::encoding::Depth,
7696        ) -> fidl::Result<()> {
7697            encoder.debug_check_bounds::<MlmeOnScanEndRequest>(offset);
7698            // Zero out padding regions. There's no need to apply masks
7699            // because the unmasked parts will be overwritten by fields.
7700            // Write the fields.
7701            self.0.encode(encoder, offset + 0, depth)?;
7702            Ok(())
7703        }
7704    }
7705
7706    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeOnScanEndRequest {
7707        #[inline(always)]
7708        fn new_empty() -> Self {
7709            Self { end: fidl::new_empty!(ScanEnd, D) }
7710        }
7711
7712        #[inline]
7713        unsafe fn decode(
7714            &mut self,
7715            decoder: &mut fidl::encoding::Decoder<'_, D>,
7716            offset: usize,
7717            _depth: fidl::encoding::Depth,
7718        ) -> fidl::Result<()> {
7719            decoder.debug_check_bounds::<Self>(offset);
7720            // Verify that padding bytes are zero.
7721            fidl::decode!(ScanEnd, D, &mut self.end, decoder, offset + 0, _depth)?;
7722            Ok(())
7723        }
7724    }
7725
7726    impl fidl::encoding::ValueTypeMarker for MlmeOnScanResultRequest {
7727        type Borrowed<'a> = &'a Self;
7728        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7729            value
7730        }
7731    }
7732
7733    unsafe impl fidl::encoding::TypeMarker for MlmeOnScanResultRequest {
7734        type Owned = Self;
7735
7736        #[inline(always)]
7737        fn inline_align(_context: fidl::encoding::Context) -> usize {
7738            8
7739        }
7740
7741        #[inline(always)]
7742        fn inline_size(_context: fidl::encoding::Context) -> usize {
7743            64
7744        }
7745    }
7746
7747    unsafe impl<D: fidl::encoding::ResourceDialect>
7748        fidl::encoding::Encode<MlmeOnScanResultRequest, D> for &MlmeOnScanResultRequest
7749    {
7750        #[inline]
7751        unsafe fn encode(
7752            self,
7753            encoder: &mut fidl::encoding::Encoder<'_, D>,
7754            offset: usize,
7755            _depth: fidl::encoding::Depth,
7756        ) -> fidl::Result<()> {
7757            encoder.debug_check_bounds::<MlmeOnScanResultRequest>(offset);
7758            // Delegate to tuple encoding.
7759            fidl::encoding::Encode::<MlmeOnScanResultRequest, D>::encode(
7760                (<ScanResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),),
7761                encoder,
7762                offset,
7763                _depth,
7764            )
7765        }
7766    }
7767    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanResult, D>>
7768        fidl::encoding::Encode<MlmeOnScanResultRequest, D> for (T0,)
7769    {
7770        #[inline]
7771        unsafe fn encode(
7772            self,
7773            encoder: &mut fidl::encoding::Encoder<'_, D>,
7774            offset: usize,
7775            depth: fidl::encoding::Depth,
7776        ) -> fidl::Result<()> {
7777            encoder.debug_check_bounds::<MlmeOnScanResultRequest>(offset);
7778            // Zero out padding regions. There's no need to apply masks
7779            // because the unmasked parts will be overwritten by fields.
7780            // Write the fields.
7781            self.0.encode(encoder, offset + 0, depth)?;
7782            Ok(())
7783        }
7784    }
7785
7786    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7787        for MlmeOnScanResultRequest
7788    {
7789        #[inline(always)]
7790        fn new_empty() -> Self {
7791            Self { result: fidl::new_empty!(ScanResult, D) }
7792        }
7793
7794        #[inline]
7795        unsafe fn decode(
7796            &mut self,
7797            decoder: &mut fidl::encoding::Decoder<'_, D>,
7798            offset: usize,
7799            _depth: fidl::encoding::Depth,
7800        ) -> fidl::Result<()> {
7801            decoder.debug_check_bounds::<Self>(offset);
7802            // Verify that padding bytes are zero.
7803            fidl::decode!(ScanResult, D, &mut self.result, decoder, offset + 0, _depth)?;
7804            Ok(())
7805        }
7806    }
7807
7808    impl fidl::encoding::ValueTypeMarker for MlmeOnScheduledScanMatchesAvailableRequest {
7809        type Borrowed<'a> = &'a Self;
7810        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7811            value
7812        }
7813    }
7814
7815    unsafe impl fidl::encoding::TypeMarker for MlmeOnScheduledScanMatchesAvailableRequest {
7816        type Owned = Self;
7817
7818        #[inline(always)]
7819        fn inline_align(_context: fidl::encoding::Context) -> usize {
7820            8
7821        }
7822
7823        #[inline(always)]
7824        fn inline_size(_context: fidl::encoding::Context) -> usize {
7825            8
7826        }
7827        #[inline(always)]
7828        fn encode_is_copy() -> bool {
7829            true
7830        }
7831
7832        #[inline(always)]
7833        fn decode_is_copy() -> bool {
7834            true
7835        }
7836    }
7837
7838    unsafe impl<D: fidl::encoding::ResourceDialect>
7839        fidl::encoding::Encode<MlmeOnScheduledScanMatchesAvailableRequest, D>
7840        for &MlmeOnScheduledScanMatchesAvailableRequest
7841    {
7842        #[inline]
7843        unsafe fn encode(
7844            self,
7845            encoder: &mut fidl::encoding::Encoder<'_, D>,
7846            offset: usize,
7847            _depth: fidl::encoding::Depth,
7848        ) -> fidl::Result<()> {
7849            encoder.debug_check_bounds::<MlmeOnScheduledScanMatchesAvailableRequest>(offset);
7850            unsafe {
7851                // Copy the object into the buffer.
7852                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7853                (buf_ptr as *mut MlmeOnScheduledScanMatchesAvailableRequest).write_unaligned(
7854                    (self as *const MlmeOnScheduledScanMatchesAvailableRequest).read(),
7855                );
7856                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7857                // done second because the memcpy will write garbage to these bytes.
7858            }
7859            Ok(())
7860        }
7861    }
7862    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
7863        fidl::encoding::Encode<MlmeOnScheduledScanMatchesAvailableRequest, D> for (T0,)
7864    {
7865        #[inline]
7866        unsafe fn encode(
7867            self,
7868            encoder: &mut fidl::encoding::Encoder<'_, D>,
7869            offset: usize,
7870            depth: fidl::encoding::Depth,
7871        ) -> fidl::Result<()> {
7872            encoder.debug_check_bounds::<MlmeOnScheduledScanMatchesAvailableRequest>(offset);
7873            // Zero out padding regions. There's no need to apply masks
7874            // because the unmasked parts will be overwritten by fields.
7875            // Write the fields.
7876            self.0.encode(encoder, offset + 0, depth)?;
7877            Ok(())
7878        }
7879    }
7880
7881    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7882        for MlmeOnScheduledScanMatchesAvailableRequest
7883    {
7884        #[inline(always)]
7885        fn new_empty() -> Self {
7886            Self { txn_id: fidl::new_empty!(u64, D) }
7887        }
7888
7889        #[inline]
7890        unsafe fn decode(
7891            &mut self,
7892            decoder: &mut fidl::encoding::Decoder<'_, D>,
7893            offset: usize,
7894            _depth: fidl::encoding::Depth,
7895        ) -> fidl::Result<()> {
7896            decoder.debug_check_bounds::<Self>(offset);
7897            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7898            // Verify that padding bytes are zero.
7899            // Copy from the buffer into the object.
7900            unsafe {
7901                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
7902            }
7903            Ok(())
7904        }
7905    }
7906
7907    impl fidl::encoding::ValueTypeMarker for MlmeOnScheduledScanStoppedByFirmwareRequest {
7908        type Borrowed<'a> = &'a Self;
7909        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7910            value
7911        }
7912    }
7913
7914    unsafe impl fidl::encoding::TypeMarker for MlmeOnScheduledScanStoppedByFirmwareRequest {
7915        type Owned = Self;
7916
7917        #[inline(always)]
7918        fn inline_align(_context: fidl::encoding::Context) -> usize {
7919            8
7920        }
7921
7922        #[inline(always)]
7923        fn inline_size(_context: fidl::encoding::Context) -> usize {
7924            8
7925        }
7926        #[inline(always)]
7927        fn encode_is_copy() -> bool {
7928            true
7929        }
7930
7931        #[inline(always)]
7932        fn decode_is_copy() -> bool {
7933            true
7934        }
7935    }
7936
7937    unsafe impl<D: fidl::encoding::ResourceDialect>
7938        fidl::encoding::Encode<MlmeOnScheduledScanStoppedByFirmwareRequest, D>
7939        for &MlmeOnScheduledScanStoppedByFirmwareRequest
7940    {
7941        #[inline]
7942        unsafe fn encode(
7943            self,
7944            encoder: &mut fidl::encoding::Encoder<'_, D>,
7945            offset: usize,
7946            _depth: fidl::encoding::Depth,
7947        ) -> fidl::Result<()> {
7948            encoder.debug_check_bounds::<MlmeOnScheduledScanStoppedByFirmwareRequest>(offset);
7949            unsafe {
7950                // Copy the object into the buffer.
7951                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7952                (buf_ptr as *mut MlmeOnScheduledScanStoppedByFirmwareRequest).write_unaligned(
7953                    (self as *const MlmeOnScheduledScanStoppedByFirmwareRequest).read(),
7954                );
7955                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7956                // done second because the memcpy will write garbage to these bytes.
7957            }
7958            Ok(())
7959        }
7960    }
7961    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
7962        fidl::encoding::Encode<MlmeOnScheduledScanStoppedByFirmwareRequest, D> for (T0,)
7963    {
7964        #[inline]
7965        unsafe fn encode(
7966            self,
7967            encoder: &mut fidl::encoding::Encoder<'_, D>,
7968            offset: usize,
7969            depth: fidl::encoding::Depth,
7970        ) -> fidl::Result<()> {
7971            encoder.debug_check_bounds::<MlmeOnScheduledScanStoppedByFirmwareRequest>(offset);
7972            // Zero out padding regions. There's no need to apply masks
7973            // because the unmasked parts will be overwritten by fields.
7974            // Write the fields.
7975            self.0.encode(encoder, offset + 0, depth)?;
7976            Ok(())
7977        }
7978    }
7979
7980    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7981        for MlmeOnScheduledScanStoppedByFirmwareRequest
7982    {
7983        #[inline(always)]
7984        fn new_empty() -> Self {
7985            Self { txn_id: fidl::new_empty!(u64, D) }
7986        }
7987
7988        #[inline]
7989        unsafe fn decode(
7990            &mut self,
7991            decoder: &mut fidl::encoding::Decoder<'_, D>,
7992            offset: usize,
7993            _depth: fidl::encoding::Depth,
7994        ) -> fidl::Result<()> {
7995            decoder.debug_check_bounds::<Self>(offset);
7996            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7997            // Verify that padding bytes are zero.
7998            // Copy from the buffer into the object.
7999            unsafe {
8000                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
8001            }
8002            Ok(())
8003        }
8004    }
8005
8006    impl fidl::encoding::ValueTypeMarker for MlmeOnWmmStatusRespRequest {
8007        type Borrowed<'a> = &'a Self;
8008        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8009            value
8010        }
8011    }
8012
8013    unsafe impl fidl::encoding::TypeMarker for MlmeOnWmmStatusRespRequest {
8014        type Owned = Self;
8015
8016        #[inline(always)]
8017        fn inline_align(_context: fidl::encoding::Context) -> usize {
8018            4
8019        }
8020
8021        #[inline(always)]
8022        fn inline_size(_context: fidl::encoding::Context) -> usize {
8023            40
8024        }
8025    }
8026
8027    unsafe impl<D: fidl::encoding::ResourceDialect>
8028        fidl::encoding::Encode<MlmeOnWmmStatusRespRequest, D> for &MlmeOnWmmStatusRespRequest
8029    {
8030        #[inline]
8031        unsafe fn encode(
8032            self,
8033            encoder: &mut fidl::encoding::Encoder<'_, D>,
8034            offset: usize,
8035            _depth: fidl::encoding::Depth,
8036        ) -> fidl::Result<()> {
8037            encoder.debug_check_bounds::<MlmeOnWmmStatusRespRequest>(offset);
8038            // Delegate to tuple encoding.
8039            fidl::encoding::Encode::<MlmeOnWmmStatusRespRequest, D>::encode(
8040                (
8041                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
8042                    <fidl_fuchsia_wlan_internal_common::WmmStatusResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
8043                ),
8044                encoder, offset, _depth
8045            )
8046        }
8047    }
8048    unsafe impl<
8049        D: fidl::encoding::ResourceDialect,
8050        T0: fidl::encoding::Encode<i32, D>,
8051        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_internal_common::WmmStatusResponse, D>,
8052    > fidl::encoding::Encode<MlmeOnWmmStatusRespRequest, D> for (T0, T1)
8053    {
8054        #[inline]
8055        unsafe fn encode(
8056            self,
8057            encoder: &mut fidl::encoding::Encoder<'_, D>,
8058            offset: usize,
8059            depth: fidl::encoding::Depth,
8060        ) -> fidl::Result<()> {
8061            encoder.debug_check_bounds::<MlmeOnWmmStatusRespRequest>(offset);
8062            // Zero out padding regions. There's no need to apply masks
8063            // because the unmasked parts will be overwritten by fields.
8064            unsafe {
8065                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(36);
8066                (ptr as *mut u32).write_unaligned(0);
8067            }
8068            // Write the fields.
8069            self.0.encode(encoder, offset + 0, depth)?;
8070            self.1.encode(encoder, offset + 4, depth)?;
8071            Ok(())
8072        }
8073    }
8074
8075    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8076        for MlmeOnWmmStatusRespRequest
8077    {
8078        #[inline(always)]
8079        fn new_empty() -> Self {
8080            Self {
8081                status: fidl::new_empty!(i32, D),
8082                resp: fidl::new_empty!(fidl_fuchsia_wlan_internal_common::WmmStatusResponse, D),
8083            }
8084        }
8085
8086        #[inline]
8087        unsafe fn decode(
8088            &mut self,
8089            decoder: &mut fidl::encoding::Decoder<'_, D>,
8090            offset: usize,
8091            _depth: fidl::encoding::Depth,
8092        ) -> fidl::Result<()> {
8093            decoder.debug_check_bounds::<Self>(offset);
8094            // Verify that padding bytes are zero.
8095            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(36) };
8096            let padval = unsafe { (ptr as *const u32).read_unaligned() };
8097            let mask = 0xffff0000u32;
8098            let maskedval = padval & mask;
8099            if maskedval != 0 {
8100                return Err(fidl::Error::NonZeroPadding {
8101                    padding_start: offset + 36 + ((mask as u64).trailing_zeros() / 8) as usize,
8102                });
8103            }
8104            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
8105            fidl::decode!(
8106                fidl_fuchsia_wlan_internal_common::WmmStatusResponse,
8107                D,
8108                &mut self.resp,
8109                decoder,
8110                offset + 4,
8111                _depth
8112            )?;
8113            Ok(())
8114        }
8115    }
8116
8117    impl fidl::encoding::ValueTypeMarker for MlmeQueryDeviceInfoResponse {
8118        type Borrowed<'a> = &'a Self;
8119        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8120            value
8121        }
8122    }
8123
8124    unsafe impl fidl::encoding::TypeMarker for MlmeQueryDeviceInfoResponse {
8125        type Owned = Self;
8126
8127        #[inline(always)]
8128        fn inline_align(_context: fidl::encoding::Context) -> usize {
8129            8
8130        }
8131
8132        #[inline(always)]
8133        fn inline_size(_context: fidl::encoding::Context) -> usize {
8134            40
8135        }
8136    }
8137
8138    unsafe impl<D: fidl::encoding::ResourceDialect>
8139        fidl::encoding::Encode<MlmeQueryDeviceInfoResponse, D> for &MlmeQueryDeviceInfoResponse
8140    {
8141        #[inline]
8142        unsafe fn encode(
8143            self,
8144            encoder: &mut fidl::encoding::Encoder<'_, D>,
8145            offset: usize,
8146            _depth: fidl::encoding::Depth,
8147        ) -> fidl::Result<()> {
8148            encoder.debug_check_bounds::<MlmeQueryDeviceInfoResponse>(offset);
8149            // Delegate to tuple encoding.
8150            fidl::encoding::Encode::<MlmeQueryDeviceInfoResponse, D>::encode(
8151                (<DeviceInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
8152                encoder,
8153                offset,
8154                _depth,
8155            )
8156        }
8157    }
8158    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<DeviceInfo, D>>
8159        fidl::encoding::Encode<MlmeQueryDeviceInfoResponse, D> for (T0,)
8160    {
8161        #[inline]
8162        unsafe fn encode(
8163            self,
8164            encoder: &mut fidl::encoding::Encoder<'_, D>,
8165            offset: usize,
8166            depth: fidl::encoding::Depth,
8167        ) -> fidl::Result<()> {
8168            encoder.debug_check_bounds::<MlmeQueryDeviceInfoResponse>(offset);
8169            // Zero out padding regions. There's no need to apply masks
8170            // because the unmasked parts will be overwritten by fields.
8171            // Write the fields.
8172            self.0.encode(encoder, offset + 0, depth)?;
8173            Ok(())
8174        }
8175    }
8176
8177    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8178        for MlmeQueryDeviceInfoResponse
8179    {
8180        #[inline(always)]
8181        fn new_empty() -> Self {
8182            Self { info: fidl::new_empty!(DeviceInfo, D) }
8183        }
8184
8185        #[inline]
8186        unsafe fn decode(
8187            &mut self,
8188            decoder: &mut fidl::encoding::Decoder<'_, D>,
8189            offset: usize,
8190            _depth: fidl::encoding::Depth,
8191        ) -> fidl::Result<()> {
8192            decoder.debug_check_bounds::<Self>(offset);
8193            // Verify that padding bytes are zero.
8194            fidl::decode!(DeviceInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
8195            Ok(())
8196        }
8197    }
8198
8199    impl fidl::encoding::ValueTypeMarker for MlmeReconnectReqRequest {
8200        type Borrowed<'a> = &'a Self;
8201        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8202            value
8203        }
8204    }
8205
8206    unsafe impl fidl::encoding::TypeMarker for MlmeReconnectReqRequest {
8207        type Owned = Self;
8208
8209        #[inline(always)]
8210        fn inline_align(_context: fidl::encoding::Context) -> usize {
8211            1
8212        }
8213
8214        #[inline(always)]
8215        fn inline_size(_context: fidl::encoding::Context) -> usize {
8216            6
8217        }
8218        #[inline(always)]
8219        fn encode_is_copy() -> bool {
8220            true
8221        }
8222
8223        #[inline(always)]
8224        fn decode_is_copy() -> bool {
8225            true
8226        }
8227    }
8228
8229    unsafe impl<D: fidl::encoding::ResourceDialect>
8230        fidl::encoding::Encode<MlmeReconnectReqRequest, D> for &MlmeReconnectReqRequest
8231    {
8232        #[inline]
8233        unsafe fn encode(
8234            self,
8235            encoder: &mut fidl::encoding::Encoder<'_, D>,
8236            offset: usize,
8237            _depth: fidl::encoding::Depth,
8238        ) -> fidl::Result<()> {
8239            encoder.debug_check_bounds::<MlmeReconnectReqRequest>(offset);
8240            unsafe {
8241                // Copy the object into the buffer.
8242                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
8243                (buf_ptr as *mut MlmeReconnectReqRequest)
8244                    .write_unaligned((self as *const MlmeReconnectReqRequest).read());
8245                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
8246                // done second because the memcpy will write garbage to these bytes.
8247            }
8248            Ok(())
8249        }
8250    }
8251    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ReconnectRequest, D>>
8252        fidl::encoding::Encode<MlmeReconnectReqRequest, D> for (T0,)
8253    {
8254        #[inline]
8255        unsafe fn encode(
8256            self,
8257            encoder: &mut fidl::encoding::Encoder<'_, D>,
8258            offset: usize,
8259            depth: fidl::encoding::Depth,
8260        ) -> fidl::Result<()> {
8261            encoder.debug_check_bounds::<MlmeReconnectReqRequest>(offset);
8262            // Zero out padding regions. There's no need to apply masks
8263            // because the unmasked parts will be overwritten by fields.
8264            // Write the fields.
8265            self.0.encode(encoder, offset + 0, depth)?;
8266            Ok(())
8267        }
8268    }
8269
8270    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8271        for MlmeReconnectReqRequest
8272    {
8273        #[inline(always)]
8274        fn new_empty() -> Self {
8275            Self { req: fidl::new_empty!(ReconnectRequest, D) }
8276        }
8277
8278        #[inline]
8279        unsafe fn decode(
8280            &mut self,
8281            decoder: &mut fidl::encoding::Decoder<'_, D>,
8282            offset: usize,
8283            _depth: fidl::encoding::Depth,
8284        ) -> fidl::Result<()> {
8285            decoder.debug_check_bounds::<Self>(offset);
8286            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
8287            // Verify that padding bytes are zero.
8288            // Copy from the buffer into the object.
8289            unsafe {
8290                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
8291            }
8292            Ok(())
8293        }
8294    }
8295
8296    impl fidl::encoding::ValueTypeMarker for MlmeRelayCapturedFrameRequest {
8297        type Borrowed<'a> = &'a Self;
8298        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8299            value
8300        }
8301    }
8302
8303    unsafe impl fidl::encoding::TypeMarker for MlmeRelayCapturedFrameRequest {
8304        type Owned = Self;
8305
8306        #[inline(always)]
8307        fn inline_align(_context: fidl::encoding::Context) -> usize {
8308            8
8309        }
8310
8311        #[inline(always)]
8312        fn inline_size(_context: fidl::encoding::Context) -> usize {
8313            16
8314        }
8315    }
8316
8317    unsafe impl<D: fidl::encoding::ResourceDialect>
8318        fidl::encoding::Encode<MlmeRelayCapturedFrameRequest, D>
8319        for &MlmeRelayCapturedFrameRequest
8320    {
8321        #[inline]
8322        unsafe fn encode(
8323            self,
8324            encoder: &mut fidl::encoding::Encoder<'_, D>,
8325            offset: usize,
8326            _depth: fidl::encoding::Depth,
8327        ) -> fidl::Result<()> {
8328            encoder.debug_check_bounds::<MlmeRelayCapturedFrameRequest>(offset);
8329            // Delegate to tuple encoding.
8330            fidl::encoding::Encode::<MlmeRelayCapturedFrameRequest, D>::encode(
8331                (<CapturedFrameResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),),
8332                encoder,
8333                offset,
8334                _depth,
8335            )
8336        }
8337    }
8338    unsafe impl<
8339        D: fidl::encoding::ResourceDialect,
8340        T0: fidl::encoding::Encode<CapturedFrameResult, D>,
8341    > fidl::encoding::Encode<MlmeRelayCapturedFrameRequest, D> for (T0,)
8342    {
8343        #[inline]
8344        unsafe fn encode(
8345            self,
8346            encoder: &mut fidl::encoding::Encoder<'_, D>,
8347            offset: usize,
8348            depth: fidl::encoding::Depth,
8349        ) -> fidl::Result<()> {
8350            encoder.debug_check_bounds::<MlmeRelayCapturedFrameRequest>(offset);
8351            // Zero out padding regions. There's no need to apply masks
8352            // because the unmasked parts will be overwritten by fields.
8353            // Write the fields.
8354            self.0.encode(encoder, offset + 0, depth)?;
8355            Ok(())
8356        }
8357    }
8358
8359    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8360        for MlmeRelayCapturedFrameRequest
8361    {
8362        #[inline(always)]
8363        fn new_empty() -> Self {
8364            Self { result: fidl::new_empty!(CapturedFrameResult, D) }
8365        }
8366
8367        #[inline]
8368        unsafe fn decode(
8369            &mut self,
8370            decoder: &mut fidl::encoding::Decoder<'_, D>,
8371            offset: usize,
8372            _depth: fidl::encoding::Depth,
8373        ) -> fidl::Result<()> {
8374            decoder.debug_check_bounds::<Self>(offset);
8375            // Verify that padding bytes are zero.
8376            fidl::decode!(CapturedFrameResult, D, &mut self.result, decoder, offset + 0, _depth)?;
8377            Ok(())
8378        }
8379    }
8380
8381    impl fidl::encoding::ValueTypeMarker for MlmeResetReqRequest {
8382        type Borrowed<'a> = &'a Self;
8383        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8384            value
8385        }
8386    }
8387
8388    unsafe impl fidl::encoding::TypeMarker for MlmeResetReqRequest {
8389        type Owned = Self;
8390
8391        #[inline(always)]
8392        fn inline_align(_context: fidl::encoding::Context) -> usize {
8393            1
8394        }
8395
8396        #[inline(always)]
8397        fn inline_size(_context: fidl::encoding::Context) -> usize {
8398            7
8399        }
8400    }
8401
8402    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeResetReqRequest, D>
8403        for &MlmeResetReqRequest
8404    {
8405        #[inline]
8406        unsafe fn encode(
8407            self,
8408            encoder: &mut fidl::encoding::Encoder<'_, D>,
8409            offset: usize,
8410            _depth: fidl::encoding::Depth,
8411        ) -> fidl::Result<()> {
8412            encoder.debug_check_bounds::<MlmeResetReqRequest>(offset);
8413            // Delegate to tuple encoding.
8414            fidl::encoding::Encode::<MlmeResetReqRequest, D>::encode(
8415                (<ResetRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8416                encoder,
8417                offset,
8418                _depth,
8419            )
8420        }
8421    }
8422    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ResetRequest, D>>
8423        fidl::encoding::Encode<MlmeResetReqRequest, D> for (T0,)
8424    {
8425        #[inline]
8426        unsafe fn encode(
8427            self,
8428            encoder: &mut fidl::encoding::Encoder<'_, D>,
8429            offset: usize,
8430            depth: fidl::encoding::Depth,
8431        ) -> fidl::Result<()> {
8432            encoder.debug_check_bounds::<MlmeResetReqRequest>(offset);
8433            // Zero out padding regions. There's no need to apply masks
8434            // because the unmasked parts will be overwritten by fields.
8435            // Write the fields.
8436            self.0.encode(encoder, offset + 0, depth)?;
8437            Ok(())
8438        }
8439    }
8440
8441    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeResetReqRequest {
8442        #[inline(always)]
8443        fn new_empty() -> Self {
8444            Self { req: fidl::new_empty!(ResetRequest, D) }
8445        }
8446
8447        #[inline]
8448        unsafe fn decode(
8449            &mut self,
8450            decoder: &mut fidl::encoding::Decoder<'_, D>,
8451            offset: usize,
8452            _depth: fidl::encoding::Depth,
8453        ) -> fidl::Result<()> {
8454            decoder.debug_check_bounds::<Self>(offset);
8455            // Verify that padding bytes are zero.
8456            fidl::decode!(ResetRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8457            Ok(())
8458        }
8459    }
8460
8461    impl fidl::encoding::ValueTypeMarker for MlmeRoamConfRequest {
8462        type Borrowed<'a> = &'a Self;
8463        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8464            value
8465        }
8466    }
8467
8468    unsafe impl fidl::encoding::TypeMarker for MlmeRoamConfRequest {
8469        type Owned = Self;
8470
8471        #[inline(always)]
8472        fn inline_align(_context: fidl::encoding::Context) -> usize {
8473            8
8474        }
8475
8476        #[inline(always)]
8477        fn inline_size(_context: fidl::encoding::Context) -> usize {
8478            32
8479        }
8480    }
8481
8482    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeRoamConfRequest, D>
8483        for &MlmeRoamConfRequest
8484    {
8485        #[inline]
8486        unsafe fn encode(
8487            self,
8488            encoder: &mut fidl::encoding::Encoder<'_, D>,
8489            offset: usize,
8490            _depth: fidl::encoding::Depth,
8491        ) -> fidl::Result<()> {
8492            encoder.debug_check_bounds::<MlmeRoamConfRequest>(offset);
8493            // Delegate to tuple encoding.
8494            fidl::encoding::Encode::<MlmeRoamConfRequest, D>::encode(
8495                (<RoamConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.conf),),
8496                encoder,
8497                offset,
8498                _depth,
8499            )
8500        }
8501    }
8502    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RoamConfirm, D>>
8503        fidl::encoding::Encode<MlmeRoamConfRequest, D> for (T0,)
8504    {
8505        #[inline]
8506        unsafe fn encode(
8507            self,
8508            encoder: &mut fidl::encoding::Encoder<'_, D>,
8509            offset: usize,
8510            depth: fidl::encoding::Depth,
8511        ) -> fidl::Result<()> {
8512            encoder.debug_check_bounds::<MlmeRoamConfRequest>(offset);
8513            // Zero out padding regions. There's no need to apply masks
8514            // because the unmasked parts will be overwritten by fields.
8515            // Write the fields.
8516            self.0.encode(encoder, offset + 0, depth)?;
8517            Ok(())
8518        }
8519    }
8520
8521    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeRoamConfRequest {
8522        #[inline(always)]
8523        fn new_empty() -> Self {
8524            Self { conf: fidl::new_empty!(RoamConfirm, D) }
8525        }
8526
8527        #[inline]
8528        unsafe fn decode(
8529            &mut self,
8530            decoder: &mut fidl::encoding::Decoder<'_, D>,
8531            offset: usize,
8532            _depth: fidl::encoding::Depth,
8533        ) -> fidl::Result<()> {
8534            decoder.debug_check_bounds::<Self>(offset);
8535            // Verify that padding bytes are zero.
8536            fidl::decode!(RoamConfirm, D, &mut self.conf, decoder, offset + 0, _depth)?;
8537            Ok(())
8538        }
8539    }
8540
8541    impl fidl::encoding::ValueTypeMarker for MlmeRoamReqRequest {
8542        type Borrowed<'a> = &'a Self;
8543        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8544            value
8545        }
8546    }
8547
8548    unsafe impl fidl::encoding::TypeMarker for MlmeRoamReqRequest {
8549        type Owned = Self;
8550
8551        #[inline(always)]
8552        fn inline_align(_context: fidl::encoding::Context) -> usize {
8553            8
8554        }
8555
8556        #[inline(always)]
8557        fn inline_size(_context: fidl::encoding::Context) -> usize {
8558            48
8559        }
8560    }
8561
8562    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeRoamReqRequest, D>
8563        for &MlmeRoamReqRequest
8564    {
8565        #[inline]
8566        unsafe fn encode(
8567            self,
8568            encoder: &mut fidl::encoding::Encoder<'_, D>,
8569            offset: usize,
8570            _depth: fidl::encoding::Depth,
8571        ) -> fidl::Result<()> {
8572            encoder.debug_check_bounds::<MlmeRoamReqRequest>(offset);
8573            // Delegate to tuple encoding.
8574            fidl::encoding::Encode::<MlmeRoamReqRequest, D>::encode(
8575                (<RoamRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8576                encoder,
8577                offset,
8578                _depth,
8579            )
8580        }
8581    }
8582    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RoamRequest, D>>
8583        fidl::encoding::Encode<MlmeRoamReqRequest, D> for (T0,)
8584    {
8585        #[inline]
8586        unsafe fn encode(
8587            self,
8588            encoder: &mut fidl::encoding::Encoder<'_, D>,
8589            offset: usize,
8590            depth: fidl::encoding::Depth,
8591        ) -> fidl::Result<()> {
8592            encoder.debug_check_bounds::<MlmeRoamReqRequest>(offset);
8593            // Zero out padding regions. There's no need to apply masks
8594            // because the unmasked parts will be overwritten by fields.
8595            // Write the fields.
8596            self.0.encode(encoder, offset + 0, depth)?;
8597            Ok(())
8598        }
8599    }
8600
8601    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeRoamReqRequest {
8602        #[inline(always)]
8603        fn new_empty() -> Self {
8604            Self { req: fidl::new_empty!(RoamRequest, D) }
8605        }
8606
8607        #[inline]
8608        unsafe fn decode(
8609            &mut self,
8610            decoder: &mut fidl::encoding::Decoder<'_, D>,
8611            offset: usize,
8612            _depth: fidl::encoding::Depth,
8613        ) -> fidl::Result<()> {
8614            decoder.debug_check_bounds::<Self>(offset);
8615            // Verify that padding bytes are zero.
8616            fidl::decode!(RoamRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8617            Ok(())
8618        }
8619    }
8620
8621    impl fidl::encoding::ValueTypeMarker for MlmeRoamResultIndRequest {
8622        type Borrowed<'a> = &'a Self;
8623        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8624            value
8625        }
8626    }
8627
8628    unsafe impl fidl::encoding::TypeMarker for MlmeRoamResultIndRequest {
8629        type Owned = Self;
8630
8631        #[inline(always)]
8632        fn inline_align(_context: fidl::encoding::Context) -> usize {
8633            8
8634        }
8635
8636        #[inline(always)]
8637        fn inline_size(_context: fidl::encoding::Context) -> usize {
8638            32
8639        }
8640    }
8641
8642    unsafe impl<D: fidl::encoding::ResourceDialect>
8643        fidl::encoding::Encode<MlmeRoamResultIndRequest, D> for &MlmeRoamResultIndRequest
8644    {
8645        #[inline]
8646        unsafe fn encode(
8647            self,
8648            encoder: &mut fidl::encoding::Encoder<'_, D>,
8649            offset: usize,
8650            _depth: fidl::encoding::Depth,
8651        ) -> fidl::Result<()> {
8652            encoder.debug_check_bounds::<MlmeRoamResultIndRequest>(offset);
8653            // Delegate to tuple encoding.
8654            fidl::encoding::Encode::<MlmeRoamResultIndRequest, D>::encode(
8655                (<RoamResultIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
8656                encoder,
8657                offset,
8658                _depth,
8659            )
8660        }
8661    }
8662    unsafe impl<
8663        D: fidl::encoding::ResourceDialect,
8664        T0: fidl::encoding::Encode<RoamResultIndication, D>,
8665    > fidl::encoding::Encode<MlmeRoamResultIndRequest, D> for (T0,)
8666    {
8667        #[inline]
8668        unsafe fn encode(
8669            self,
8670            encoder: &mut fidl::encoding::Encoder<'_, D>,
8671            offset: usize,
8672            depth: fidl::encoding::Depth,
8673        ) -> fidl::Result<()> {
8674            encoder.debug_check_bounds::<MlmeRoamResultIndRequest>(offset);
8675            // Zero out padding regions. There's no need to apply masks
8676            // because the unmasked parts will be overwritten by fields.
8677            // Write the fields.
8678            self.0.encode(encoder, offset + 0, depth)?;
8679            Ok(())
8680        }
8681    }
8682
8683    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8684        for MlmeRoamResultIndRequest
8685    {
8686        #[inline(always)]
8687        fn new_empty() -> Self {
8688            Self { ind: fidl::new_empty!(RoamResultIndication, D) }
8689        }
8690
8691        #[inline]
8692        unsafe fn decode(
8693            &mut self,
8694            decoder: &mut fidl::encoding::Decoder<'_, D>,
8695            offset: usize,
8696            _depth: fidl::encoding::Depth,
8697        ) -> fidl::Result<()> {
8698            decoder.debug_check_bounds::<Self>(offset);
8699            // Verify that padding bytes are zero.
8700            fidl::decode!(RoamResultIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
8701            Ok(())
8702        }
8703    }
8704
8705    impl fidl::encoding::ValueTypeMarker for MlmeRoamStartIndRequest {
8706        type Borrowed<'a> = &'a Self;
8707        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8708            value
8709        }
8710    }
8711
8712    unsafe impl fidl::encoding::TypeMarker for MlmeRoamStartIndRequest {
8713        type Owned = Self;
8714
8715        #[inline(always)]
8716        fn inline_align(_context: fidl::encoding::Context) -> usize {
8717            8
8718        }
8719
8720        #[inline(always)]
8721        fn inline_size(_context: fidl::encoding::Context) -> usize {
8722            64
8723        }
8724    }
8725
8726    unsafe impl<D: fidl::encoding::ResourceDialect>
8727        fidl::encoding::Encode<MlmeRoamStartIndRequest, D> for &MlmeRoamStartIndRequest
8728    {
8729        #[inline]
8730        unsafe fn encode(
8731            self,
8732            encoder: &mut fidl::encoding::Encoder<'_, D>,
8733            offset: usize,
8734            _depth: fidl::encoding::Depth,
8735        ) -> fidl::Result<()> {
8736            encoder.debug_check_bounds::<MlmeRoamStartIndRequest>(offset);
8737            // Delegate to tuple encoding.
8738            fidl::encoding::Encode::<MlmeRoamStartIndRequest, D>::encode(
8739                (<RoamStartIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
8740                encoder,
8741                offset,
8742                _depth,
8743            )
8744        }
8745    }
8746    unsafe impl<
8747        D: fidl::encoding::ResourceDialect,
8748        T0: fidl::encoding::Encode<RoamStartIndication, D>,
8749    > fidl::encoding::Encode<MlmeRoamStartIndRequest, D> for (T0,)
8750    {
8751        #[inline]
8752        unsafe fn encode(
8753            self,
8754            encoder: &mut fidl::encoding::Encoder<'_, D>,
8755            offset: usize,
8756            depth: fidl::encoding::Depth,
8757        ) -> fidl::Result<()> {
8758            encoder.debug_check_bounds::<MlmeRoamStartIndRequest>(offset);
8759            // Zero out padding regions. There's no need to apply masks
8760            // because the unmasked parts will be overwritten by fields.
8761            // Write the fields.
8762            self.0.encode(encoder, offset + 0, depth)?;
8763            Ok(())
8764        }
8765    }
8766
8767    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8768        for MlmeRoamStartIndRequest
8769    {
8770        #[inline(always)]
8771        fn new_empty() -> Self {
8772            Self { ind: fidl::new_empty!(RoamStartIndication, D) }
8773        }
8774
8775        #[inline]
8776        unsafe fn decode(
8777            &mut self,
8778            decoder: &mut fidl::encoding::Decoder<'_, D>,
8779            offset: usize,
8780            _depth: fidl::encoding::Depth,
8781        ) -> fidl::Result<()> {
8782            decoder.debug_check_bounds::<Self>(offset);
8783            // Verify that padding bytes are zero.
8784            fidl::decode!(RoamStartIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
8785            Ok(())
8786        }
8787    }
8788
8789    impl fidl::encoding::ValueTypeMarker for MlmeSaeFrameTxRequest {
8790        type Borrowed<'a> = &'a Self;
8791        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8792            value
8793        }
8794    }
8795
8796    unsafe impl fidl::encoding::TypeMarker for MlmeSaeFrameTxRequest {
8797        type Owned = Self;
8798
8799        #[inline(always)]
8800        fn inline_align(_context: fidl::encoding::Context) -> usize {
8801            8
8802        }
8803
8804        #[inline(always)]
8805        fn inline_size(_context: fidl::encoding::Context) -> usize {
8806            32
8807        }
8808    }
8809
8810    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeSaeFrameTxRequest, D>
8811        for &MlmeSaeFrameTxRequest
8812    {
8813        #[inline]
8814        unsafe fn encode(
8815            self,
8816            encoder: &mut fidl::encoding::Encoder<'_, D>,
8817            offset: usize,
8818            _depth: fidl::encoding::Depth,
8819        ) -> fidl::Result<()> {
8820            encoder.debug_check_bounds::<MlmeSaeFrameTxRequest>(offset);
8821            // Delegate to tuple encoding.
8822            fidl::encoding::Encode::<MlmeSaeFrameTxRequest, D>::encode(
8823                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
8824                encoder,
8825                offset,
8826                _depth,
8827            )
8828        }
8829    }
8830    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
8831        fidl::encoding::Encode<MlmeSaeFrameTxRequest, D> for (T0,)
8832    {
8833        #[inline]
8834        unsafe fn encode(
8835            self,
8836            encoder: &mut fidl::encoding::Encoder<'_, D>,
8837            offset: usize,
8838            depth: fidl::encoding::Depth,
8839        ) -> fidl::Result<()> {
8840            encoder.debug_check_bounds::<MlmeSaeFrameTxRequest>(offset);
8841            // Zero out padding regions. There's no need to apply masks
8842            // because the unmasked parts will be overwritten by fields.
8843            // Write the fields.
8844            self.0.encode(encoder, offset + 0, depth)?;
8845            Ok(())
8846        }
8847    }
8848
8849    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeSaeFrameTxRequest {
8850        #[inline(always)]
8851        fn new_empty() -> Self {
8852            Self { frame: fidl::new_empty!(SaeFrame, D) }
8853        }
8854
8855        #[inline]
8856        unsafe fn decode(
8857            &mut self,
8858            decoder: &mut fidl::encoding::Decoder<'_, D>,
8859            offset: usize,
8860            _depth: fidl::encoding::Depth,
8861        ) -> fidl::Result<()> {
8862            decoder.debug_check_bounds::<Self>(offset);
8863            // Verify that padding bytes are zero.
8864            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
8865            Ok(())
8866        }
8867    }
8868
8869    impl fidl::encoding::ValueTypeMarker for MlmeSaeHandshakeRespRequest {
8870        type Borrowed<'a> = &'a Self;
8871        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8872            value
8873        }
8874    }
8875
8876    unsafe impl fidl::encoding::TypeMarker for MlmeSaeHandshakeRespRequest {
8877        type Owned = Self;
8878
8879        #[inline(always)]
8880        fn inline_align(_context: fidl::encoding::Context) -> usize {
8881            2
8882        }
8883
8884        #[inline(always)]
8885        fn inline_size(_context: fidl::encoding::Context) -> usize {
8886            8
8887        }
8888    }
8889
8890    unsafe impl<D: fidl::encoding::ResourceDialect>
8891        fidl::encoding::Encode<MlmeSaeHandshakeRespRequest, D> for &MlmeSaeHandshakeRespRequest
8892    {
8893        #[inline]
8894        unsafe fn encode(
8895            self,
8896            encoder: &mut fidl::encoding::Encoder<'_, D>,
8897            offset: usize,
8898            _depth: fidl::encoding::Depth,
8899        ) -> fidl::Result<()> {
8900            encoder.debug_check_bounds::<MlmeSaeHandshakeRespRequest>(offset);
8901            // Delegate to tuple encoding.
8902            fidl::encoding::Encode::<MlmeSaeHandshakeRespRequest, D>::encode(
8903                (<SaeHandshakeResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
8904                encoder,
8905                offset,
8906                _depth,
8907            )
8908        }
8909    }
8910    unsafe impl<
8911        D: fidl::encoding::ResourceDialect,
8912        T0: fidl::encoding::Encode<SaeHandshakeResponse, D>,
8913    > fidl::encoding::Encode<MlmeSaeHandshakeRespRequest, D> for (T0,)
8914    {
8915        #[inline]
8916        unsafe fn encode(
8917            self,
8918            encoder: &mut fidl::encoding::Encoder<'_, D>,
8919            offset: usize,
8920            depth: fidl::encoding::Depth,
8921        ) -> fidl::Result<()> {
8922            encoder.debug_check_bounds::<MlmeSaeHandshakeRespRequest>(offset);
8923            // Zero out padding regions. There's no need to apply masks
8924            // because the unmasked parts will be overwritten by fields.
8925            // Write the fields.
8926            self.0.encode(encoder, offset + 0, depth)?;
8927            Ok(())
8928        }
8929    }
8930
8931    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8932        for MlmeSaeHandshakeRespRequest
8933    {
8934        #[inline(always)]
8935        fn new_empty() -> Self {
8936            Self { resp: fidl::new_empty!(SaeHandshakeResponse, D) }
8937        }
8938
8939        #[inline]
8940        unsafe fn decode(
8941            &mut self,
8942            decoder: &mut fidl::encoding::Decoder<'_, D>,
8943            offset: usize,
8944            _depth: fidl::encoding::Depth,
8945        ) -> fidl::Result<()> {
8946            decoder.debug_check_bounds::<Self>(offset);
8947            // Verify that padding bytes are zero.
8948            fidl::decode!(SaeHandshakeResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
8949            Ok(())
8950        }
8951    }
8952
8953    impl fidl::encoding::ValueTypeMarker for MlmeSetApfPacketFilterEnabledRequest {
8954        type Borrowed<'a> = &'a Self;
8955        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8956            value
8957        }
8958    }
8959
8960    unsafe impl fidl::encoding::TypeMarker for MlmeSetApfPacketFilterEnabledRequest {
8961        type Owned = Self;
8962
8963        #[inline(always)]
8964        fn inline_align(_context: fidl::encoding::Context) -> usize {
8965            1
8966        }
8967
8968        #[inline(always)]
8969        fn inline_size(_context: fidl::encoding::Context) -> usize {
8970            1
8971        }
8972    }
8973
8974    unsafe impl<D: fidl::encoding::ResourceDialect>
8975        fidl::encoding::Encode<MlmeSetApfPacketFilterEnabledRequest, D>
8976        for &MlmeSetApfPacketFilterEnabledRequest
8977    {
8978        #[inline]
8979        unsafe fn encode(
8980            self,
8981            encoder: &mut fidl::encoding::Encoder<'_, D>,
8982            offset: usize,
8983            _depth: fidl::encoding::Depth,
8984        ) -> fidl::Result<()> {
8985            encoder.debug_check_bounds::<MlmeSetApfPacketFilterEnabledRequest>(offset);
8986            // Delegate to tuple encoding.
8987            fidl::encoding::Encode::<MlmeSetApfPacketFilterEnabledRequest, D>::encode(
8988                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enabled),),
8989                encoder,
8990                offset,
8991                _depth,
8992            )
8993        }
8994    }
8995    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
8996        fidl::encoding::Encode<MlmeSetApfPacketFilterEnabledRequest, D> for (T0,)
8997    {
8998        #[inline]
8999        unsafe fn encode(
9000            self,
9001            encoder: &mut fidl::encoding::Encoder<'_, D>,
9002            offset: usize,
9003            depth: fidl::encoding::Depth,
9004        ) -> fidl::Result<()> {
9005            encoder.debug_check_bounds::<MlmeSetApfPacketFilterEnabledRequest>(offset);
9006            // Zero out padding regions. There's no need to apply masks
9007            // because the unmasked parts will be overwritten by fields.
9008            // Write the fields.
9009            self.0.encode(encoder, offset + 0, depth)?;
9010            Ok(())
9011        }
9012    }
9013
9014    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9015        for MlmeSetApfPacketFilterEnabledRequest
9016    {
9017        #[inline(always)]
9018        fn new_empty() -> Self {
9019            Self { enabled: fidl::new_empty!(bool, D) }
9020        }
9021
9022        #[inline]
9023        unsafe fn decode(
9024            &mut self,
9025            decoder: &mut fidl::encoding::Decoder<'_, D>,
9026            offset: usize,
9027            _depth: fidl::encoding::Depth,
9028        ) -> fidl::Result<()> {
9029            decoder.debug_check_bounds::<Self>(offset);
9030            // Verify that padding bytes are zero.
9031            fidl::decode!(bool, D, &mut self.enabled, decoder, offset + 0, _depth)?;
9032            Ok(())
9033        }
9034    }
9035
9036    impl fidl::encoding::ValueTypeMarker for MlmeSetControlledPortRequest {
9037        type Borrowed<'a> = &'a Self;
9038        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9039            value
9040        }
9041    }
9042
9043    unsafe impl fidl::encoding::TypeMarker for MlmeSetControlledPortRequest {
9044        type Owned = Self;
9045
9046        #[inline(always)]
9047        fn inline_align(_context: fidl::encoding::Context) -> usize {
9048            4
9049        }
9050
9051        #[inline(always)]
9052        fn inline_size(_context: fidl::encoding::Context) -> usize {
9053            12
9054        }
9055    }
9056
9057    unsafe impl<D: fidl::encoding::ResourceDialect>
9058        fidl::encoding::Encode<MlmeSetControlledPortRequest, D> for &MlmeSetControlledPortRequest
9059    {
9060        #[inline]
9061        unsafe fn encode(
9062            self,
9063            encoder: &mut fidl::encoding::Encoder<'_, D>,
9064            offset: usize,
9065            _depth: fidl::encoding::Depth,
9066        ) -> fidl::Result<()> {
9067            encoder.debug_check_bounds::<MlmeSetControlledPortRequest>(offset);
9068            // Delegate to tuple encoding.
9069            fidl::encoding::Encode::<MlmeSetControlledPortRequest, D>::encode(
9070                (<SetControlledPortRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9071                encoder,
9072                offset,
9073                _depth,
9074            )
9075        }
9076    }
9077    unsafe impl<
9078        D: fidl::encoding::ResourceDialect,
9079        T0: fidl::encoding::Encode<SetControlledPortRequest, D>,
9080    > fidl::encoding::Encode<MlmeSetControlledPortRequest, D> for (T0,)
9081    {
9082        #[inline]
9083        unsafe fn encode(
9084            self,
9085            encoder: &mut fidl::encoding::Encoder<'_, D>,
9086            offset: usize,
9087            depth: fidl::encoding::Depth,
9088        ) -> fidl::Result<()> {
9089            encoder.debug_check_bounds::<MlmeSetControlledPortRequest>(offset);
9090            // Zero out padding regions. There's no need to apply masks
9091            // because the unmasked parts will be overwritten by fields.
9092            // Write the fields.
9093            self.0.encode(encoder, offset + 0, depth)?;
9094            Ok(())
9095        }
9096    }
9097
9098    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9099        for MlmeSetControlledPortRequest
9100    {
9101        #[inline(always)]
9102        fn new_empty() -> Self {
9103            Self { req: fidl::new_empty!(SetControlledPortRequest, D) }
9104        }
9105
9106        #[inline]
9107        unsafe fn decode(
9108            &mut self,
9109            decoder: &mut fidl::encoding::Decoder<'_, D>,
9110            offset: usize,
9111            _depth: fidl::encoding::Depth,
9112        ) -> fidl::Result<()> {
9113            decoder.debug_check_bounds::<Self>(offset);
9114            // Verify that padding bytes are zero.
9115            fidl::decode!(SetControlledPortRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9116            Ok(())
9117        }
9118    }
9119
9120    impl fidl::encoding::ValueTypeMarker for MlmeSetKeysConfRequest {
9121        type Borrowed<'a> = &'a Self;
9122        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9123            value
9124        }
9125    }
9126
9127    unsafe impl fidl::encoding::TypeMarker for MlmeSetKeysConfRequest {
9128        type Owned = Self;
9129
9130        #[inline(always)]
9131        fn inline_align(_context: fidl::encoding::Context) -> usize {
9132            8
9133        }
9134
9135        #[inline(always)]
9136        fn inline_size(_context: fidl::encoding::Context) -> usize {
9137            16
9138        }
9139    }
9140
9141    unsafe impl<D: fidl::encoding::ResourceDialect>
9142        fidl::encoding::Encode<MlmeSetKeysConfRequest, D> for &MlmeSetKeysConfRequest
9143    {
9144        #[inline]
9145        unsafe fn encode(
9146            self,
9147            encoder: &mut fidl::encoding::Encoder<'_, D>,
9148            offset: usize,
9149            _depth: fidl::encoding::Depth,
9150        ) -> fidl::Result<()> {
9151            encoder.debug_check_bounds::<MlmeSetKeysConfRequest>(offset);
9152            // Delegate to tuple encoding.
9153            fidl::encoding::Encode::<MlmeSetKeysConfRequest, D>::encode(
9154                (<SetKeysConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.conf),),
9155                encoder,
9156                offset,
9157                _depth,
9158            )
9159        }
9160    }
9161    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SetKeysConfirm, D>>
9162        fidl::encoding::Encode<MlmeSetKeysConfRequest, D> for (T0,)
9163    {
9164        #[inline]
9165        unsafe fn encode(
9166            self,
9167            encoder: &mut fidl::encoding::Encoder<'_, D>,
9168            offset: usize,
9169            depth: fidl::encoding::Depth,
9170        ) -> fidl::Result<()> {
9171            encoder.debug_check_bounds::<MlmeSetKeysConfRequest>(offset);
9172            // Zero out padding regions. There's no need to apply masks
9173            // because the unmasked parts will be overwritten by fields.
9174            // Write the fields.
9175            self.0.encode(encoder, offset + 0, depth)?;
9176            Ok(())
9177        }
9178    }
9179
9180    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9181        for MlmeSetKeysConfRequest
9182    {
9183        #[inline(always)]
9184        fn new_empty() -> Self {
9185            Self { conf: fidl::new_empty!(SetKeysConfirm, D) }
9186        }
9187
9188        #[inline]
9189        unsafe fn decode(
9190            &mut self,
9191            decoder: &mut fidl::encoding::Decoder<'_, D>,
9192            offset: usize,
9193            _depth: fidl::encoding::Depth,
9194        ) -> fidl::Result<()> {
9195            decoder.debug_check_bounds::<Self>(offset);
9196            // Verify that padding bytes are zero.
9197            fidl::decode!(SetKeysConfirm, D, &mut self.conf, decoder, offset + 0, _depth)?;
9198            Ok(())
9199        }
9200    }
9201
9202    impl fidl::encoding::ValueTypeMarker for MlmeSetKeysReqRequest {
9203        type Borrowed<'a> = &'a Self;
9204        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9205            value
9206        }
9207    }
9208
9209    unsafe impl fidl::encoding::TypeMarker for MlmeSetKeysReqRequest {
9210        type Owned = Self;
9211
9212        #[inline(always)]
9213        fn inline_align(_context: fidl::encoding::Context) -> usize {
9214            8
9215        }
9216
9217        #[inline(always)]
9218        fn inline_size(_context: fidl::encoding::Context) -> usize {
9219            16
9220        }
9221    }
9222
9223    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeSetKeysReqRequest, D>
9224        for &MlmeSetKeysReqRequest
9225    {
9226        #[inline]
9227        unsafe fn encode(
9228            self,
9229            encoder: &mut fidl::encoding::Encoder<'_, D>,
9230            offset: usize,
9231            _depth: fidl::encoding::Depth,
9232        ) -> fidl::Result<()> {
9233            encoder.debug_check_bounds::<MlmeSetKeysReqRequest>(offset);
9234            // Delegate to tuple encoding.
9235            fidl::encoding::Encode::<MlmeSetKeysReqRequest, D>::encode(
9236                (<SetKeysRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9237                encoder,
9238                offset,
9239                _depth,
9240            )
9241        }
9242    }
9243    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SetKeysRequest, D>>
9244        fidl::encoding::Encode<MlmeSetKeysReqRequest, D> for (T0,)
9245    {
9246        #[inline]
9247        unsafe fn encode(
9248            self,
9249            encoder: &mut fidl::encoding::Encoder<'_, D>,
9250            offset: usize,
9251            depth: fidl::encoding::Depth,
9252        ) -> fidl::Result<()> {
9253            encoder.debug_check_bounds::<MlmeSetKeysReqRequest>(offset);
9254            // Zero out padding regions. There's no need to apply masks
9255            // because the unmasked parts will be overwritten by fields.
9256            // Write the fields.
9257            self.0.encode(encoder, offset + 0, depth)?;
9258            Ok(())
9259        }
9260    }
9261
9262    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeSetKeysReqRequest {
9263        #[inline(always)]
9264        fn new_empty() -> Self {
9265            Self { req: fidl::new_empty!(SetKeysRequest, D) }
9266        }
9267
9268        #[inline]
9269        unsafe fn decode(
9270            &mut self,
9271            decoder: &mut fidl::encoding::Decoder<'_, D>,
9272            offset: usize,
9273            _depth: fidl::encoding::Depth,
9274        ) -> fidl::Result<()> {
9275            decoder.debug_check_bounds::<Self>(offset);
9276            // Verify that padding bytes are zero.
9277            fidl::decode!(SetKeysRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9278            Ok(())
9279        }
9280    }
9281
9282    impl fidl::encoding::ValueTypeMarker for MlmeSetMacAddressRequest {
9283        type Borrowed<'a> = &'a Self;
9284        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9285            value
9286        }
9287    }
9288
9289    unsafe impl fidl::encoding::TypeMarker for MlmeSetMacAddressRequest {
9290        type Owned = Self;
9291
9292        #[inline(always)]
9293        fn inline_align(_context: fidl::encoding::Context) -> usize {
9294            1
9295        }
9296
9297        #[inline(always)]
9298        fn inline_size(_context: fidl::encoding::Context) -> usize {
9299            6
9300        }
9301        #[inline(always)]
9302        fn encode_is_copy() -> bool {
9303            true
9304        }
9305
9306        #[inline(always)]
9307        fn decode_is_copy() -> bool {
9308            true
9309        }
9310    }
9311
9312    unsafe impl<D: fidl::encoding::ResourceDialect>
9313        fidl::encoding::Encode<MlmeSetMacAddressRequest, D> for &MlmeSetMacAddressRequest
9314    {
9315        #[inline]
9316        unsafe fn encode(
9317            self,
9318            encoder: &mut fidl::encoding::Encoder<'_, D>,
9319            offset: usize,
9320            _depth: fidl::encoding::Depth,
9321        ) -> fidl::Result<()> {
9322            encoder.debug_check_bounds::<MlmeSetMacAddressRequest>(offset);
9323            unsafe {
9324                // Copy the object into the buffer.
9325                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
9326                (buf_ptr as *mut MlmeSetMacAddressRequest)
9327                    .write_unaligned((self as *const MlmeSetMacAddressRequest).read());
9328                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
9329                // done second because the memcpy will write garbage to these bytes.
9330            }
9331            Ok(())
9332        }
9333    }
9334    unsafe impl<
9335        D: fidl::encoding::ResourceDialect,
9336        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
9337    > fidl::encoding::Encode<MlmeSetMacAddressRequest, D> for (T0,)
9338    {
9339        #[inline]
9340        unsafe fn encode(
9341            self,
9342            encoder: &mut fidl::encoding::Encoder<'_, D>,
9343            offset: usize,
9344            depth: fidl::encoding::Depth,
9345        ) -> fidl::Result<()> {
9346            encoder.debug_check_bounds::<MlmeSetMacAddressRequest>(offset);
9347            // Zero out padding regions. There's no need to apply masks
9348            // because the unmasked parts will be overwritten by fields.
9349            // Write the fields.
9350            self.0.encode(encoder, offset + 0, depth)?;
9351            Ok(())
9352        }
9353    }
9354
9355    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9356        for MlmeSetMacAddressRequest
9357    {
9358        #[inline(always)]
9359        fn new_empty() -> Self {
9360            Self { mac_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
9361        }
9362
9363        #[inline]
9364        unsafe fn decode(
9365            &mut self,
9366            decoder: &mut fidl::encoding::Decoder<'_, D>,
9367            offset: usize,
9368            _depth: fidl::encoding::Depth,
9369        ) -> fidl::Result<()> {
9370            decoder.debug_check_bounds::<Self>(offset);
9371            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
9372            // Verify that padding bytes are zero.
9373            // Copy from the buffer into the object.
9374            unsafe {
9375                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
9376            }
9377            Ok(())
9378        }
9379    }
9380
9381    impl fidl::encoding::ValueTypeMarker for MlmeSignalReportRequest {
9382        type Borrowed<'a> = &'a Self;
9383        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9384            value
9385        }
9386    }
9387
9388    unsafe impl fidl::encoding::TypeMarker for MlmeSignalReportRequest {
9389        type Owned = Self;
9390
9391        #[inline(always)]
9392        fn inline_align(_context: fidl::encoding::Context) -> usize {
9393            1
9394        }
9395
9396        #[inline(always)]
9397        fn inline_size(_context: fidl::encoding::Context) -> usize {
9398            2
9399        }
9400    }
9401
9402    unsafe impl<D: fidl::encoding::ResourceDialect>
9403        fidl::encoding::Encode<MlmeSignalReportRequest, D> for &MlmeSignalReportRequest
9404    {
9405        #[inline]
9406        unsafe fn encode(
9407            self,
9408            encoder: &mut fidl::encoding::Encoder<'_, D>,
9409            offset: usize,
9410            _depth: fidl::encoding::Depth,
9411        ) -> fidl::Result<()> {
9412            encoder.debug_check_bounds::<MlmeSignalReportRequest>(offset);
9413            // Delegate to tuple encoding.
9414            fidl::encoding::Encode::<MlmeSignalReportRequest, D>::encode(
9415                (
9416                    <fidl_fuchsia_wlan_internal_common::SignalReportIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),
9417                ),
9418                encoder, offset, _depth
9419            )
9420        }
9421    }
9422    unsafe impl<
9423        D: fidl::encoding::ResourceDialect,
9424        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal_common::SignalReportIndication, D>,
9425    > fidl::encoding::Encode<MlmeSignalReportRequest, D> for (T0,)
9426    {
9427        #[inline]
9428        unsafe fn encode(
9429            self,
9430            encoder: &mut fidl::encoding::Encoder<'_, D>,
9431            offset: usize,
9432            depth: fidl::encoding::Depth,
9433        ) -> fidl::Result<()> {
9434            encoder.debug_check_bounds::<MlmeSignalReportRequest>(offset);
9435            // Zero out padding regions. There's no need to apply masks
9436            // because the unmasked parts will be overwritten by fields.
9437            // Write the fields.
9438            self.0.encode(encoder, offset + 0, depth)?;
9439            Ok(())
9440        }
9441    }
9442
9443    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9444        for MlmeSignalReportRequest
9445    {
9446        #[inline(always)]
9447        fn new_empty() -> Self {
9448            Self {
9449                ind: fidl::new_empty!(fidl_fuchsia_wlan_internal_common::SignalReportIndication, D),
9450            }
9451        }
9452
9453        #[inline]
9454        unsafe fn decode(
9455            &mut self,
9456            decoder: &mut fidl::encoding::Decoder<'_, D>,
9457            offset: usize,
9458            _depth: fidl::encoding::Depth,
9459        ) -> fidl::Result<()> {
9460            decoder.debug_check_bounds::<Self>(offset);
9461            // Verify that padding bytes are zero.
9462            fidl::decode!(
9463                fidl_fuchsia_wlan_internal_common::SignalReportIndication,
9464                D,
9465                &mut self.ind,
9466                decoder,
9467                offset + 0,
9468                _depth
9469            )?;
9470            Ok(())
9471        }
9472    }
9473
9474    impl fidl::encoding::ValueTypeMarker for MlmeStartCaptureFramesRequest {
9475        type Borrowed<'a> = &'a Self;
9476        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9477            value
9478        }
9479    }
9480
9481    unsafe impl fidl::encoding::TypeMarker for MlmeStartCaptureFramesRequest {
9482        type Owned = Self;
9483
9484        #[inline(always)]
9485        fn inline_align(_context: fidl::encoding::Context) -> usize {
9486            4
9487        }
9488
9489        #[inline(always)]
9490        fn inline_size(_context: fidl::encoding::Context) -> usize {
9491            4
9492        }
9493    }
9494
9495    unsafe impl<D: fidl::encoding::ResourceDialect>
9496        fidl::encoding::Encode<MlmeStartCaptureFramesRequest, D>
9497        for &MlmeStartCaptureFramesRequest
9498    {
9499        #[inline]
9500        unsafe fn encode(
9501            self,
9502            encoder: &mut fidl::encoding::Encoder<'_, D>,
9503            offset: usize,
9504            _depth: fidl::encoding::Depth,
9505        ) -> fidl::Result<()> {
9506            encoder.debug_check_bounds::<MlmeStartCaptureFramesRequest>(offset);
9507            // Delegate to tuple encoding.
9508            fidl::encoding::Encode::<MlmeStartCaptureFramesRequest, D>::encode(
9509                (<StartCaptureFramesRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9510                encoder,
9511                offset,
9512                _depth,
9513            )
9514        }
9515    }
9516    unsafe impl<
9517        D: fidl::encoding::ResourceDialect,
9518        T0: fidl::encoding::Encode<StartCaptureFramesRequest, D>,
9519    > fidl::encoding::Encode<MlmeStartCaptureFramesRequest, D> for (T0,)
9520    {
9521        #[inline]
9522        unsafe fn encode(
9523            self,
9524            encoder: &mut fidl::encoding::Encoder<'_, D>,
9525            offset: usize,
9526            depth: fidl::encoding::Depth,
9527        ) -> fidl::Result<()> {
9528            encoder.debug_check_bounds::<MlmeStartCaptureFramesRequest>(offset);
9529            // Zero out padding regions. There's no need to apply masks
9530            // because the unmasked parts will be overwritten by fields.
9531            // Write the fields.
9532            self.0.encode(encoder, offset + 0, depth)?;
9533            Ok(())
9534        }
9535    }
9536
9537    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9538        for MlmeStartCaptureFramesRequest
9539    {
9540        #[inline(always)]
9541        fn new_empty() -> Self {
9542            Self { req: fidl::new_empty!(StartCaptureFramesRequest, D) }
9543        }
9544
9545        #[inline]
9546        unsafe fn decode(
9547            &mut self,
9548            decoder: &mut fidl::encoding::Decoder<'_, D>,
9549            offset: usize,
9550            _depth: fidl::encoding::Depth,
9551        ) -> fidl::Result<()> {
9552            decoder.debug_check_bounds::<Self>(offset);
9553            // Verify that padding bytes are zero.
9554            fidl::decode!(
9555                StartCaptureFramesRequest,
9556                D,
9557                &mut self.req,
9558                decoder,
9559                offset + 0,
9560                _depth
9561            )?;
9562            Ok(())
9563        }
9564    }
9565
9566    impl fidl::encoding::ValueTypeMarker for MlmeStartCaptureFramesResponse {
9567        type Borrowed<'a> = &'a Self;
9568        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9569            value
9570        }
9571    }
9572
9573    unsafe impl fidl::encoding::TypeMarker for MlmeStartCaptureFramesResponse {
9574        type Owned = Self;
9575
9576        #[inline(always)]
9577        fn inline_align(_context: fidl::encoding::Context) -> usize {
9578            4
9579        }
9580
9581        #[inline(always)]
9582        fn inline_size(_context: fidl::encoding::Context) -> usize {
9583            8
9584        }
9585    }
9586
9587    unsafe impl<D: fidl::encoding::ResourceDialect>
9588        fidl::encoding::Encode<MlmeStartCaptureFramesResponse, D>
9589        for &MlmeStartCaptureFramesResponse
9590    {
9591        #[inline]
9592        unsafe fn encode(
9593            self,
9594            encoder: &mut fidl::encoding::Encoder<'_, D>,
9595            offset: usize,
9596            _depth: fidl::encoding::Depth,
9597        ) -> fidl::Result<()> {
9598            encoder.debug_check_bounds::<MlmeStartCaptureFramesResponse>(offset);
9599            // Delegate to tuple encoding.
9600            fidl::encoding::Encode::<MlmeStartCaptureFramesResponse, D>::encode(
9601                (<StartCaptureFramesResponse as fidl::encoding::ValueTypeMarker>::borrow(
9602                    &self.resp,
9603                ),),
9604                encoder,
9605                offset,
9606                _depth,
9607            )
9608        }
9609    }
9610    unsafe impl<
9611        D: fidl::encoding::ResourceDialect,
9612        T0: fidl::encoding::Encode<StartCaptureFramesResponse, D>,
9613    > fidl::encoding::Encode<MlmeStartCaptureFramesResponse, D> for (T0,)
9614    {
9615        #[inline]
9616        unsafe fn encode(
9617            self,
9618            encoder: &mut fidl::encoding::Encoder<'_, D>,
9619            offset: usize,
9620            depth: fidl::encoding::Depth,
9621        ) -> fidl::Result<()> {
9622            encoder.debug_check_bounds::<MlmeStartCaptureFramesResponse>(offset);
9623            // Zero out padding regions. There's no need to apply masks
9624            // because the unmasked parts will be overwritten by fields.
9625            // Write the fields.
9626            self.0.encode(encoder, offset + 0, depth)?;
9627            Ok(())
9628        }
9629    }
9630
9631    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9632        for MlmeStartCaptureFramesResponse
9633    {
9634        #[inline(always)]
9635        fn new_empty() -> Self {
9636            Self { resp: fidl::new_empty!(StartCaptureFramesResponse, D) }
9637        }
9638
9639        #[inline]
9640        unsafe fn decode(
9641            &mut self,
9642            decoder: &mut fidl::encoding::Decoder<'_, D>,
9643            offset: usize,
9644            _depth: fidl::encoding::Depth,
9645        ) -> fidl::Result<()> {
9646            decoder.debug_check_bounds::<Self>(offset);
9647            // Verify that padding bytes are zero.
9648            fidl::decode!(
9649                StartCaptureFramesResponse,
9650                D,
9651                &mut self.resp,
9652                decoder,
9653                offset + 0,
9654                _depth
9655            )?;
9656            Ok(())
9657        }
9658    }
9659
9660    impl fidl::encoding::ValueTypeMarker for MlmeStartConfRequest {
9661        type Borrowed<'a> = &'a Self;
9662        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9663            value
9664        }
9665    }
9666
9667    unsafe impl fidl::encoding::TypeMarker for MlmeStartConfRequest {
9668        type Owned = Self;
9669
9670        #[inline(always)]
9671        fn inline_align(_context: fidl::encoding::Context) -> usize {
9672            4
9673        }
9674
9675        #[inline(always)]
9676        fn inline_size(_context: fidl::encoding::Context) -> usize {
9677            4
9678        }
9679    }
9680
9681    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartConfRequest, D>
9682        for &MlmeStartConfRequest
9683    {
9684        #[inline]
9685        unsafe fn encode(
9686            self,
9687            encoder: &mut fidl::encoding::Encoder<'_, D>,
9688            offset: usize,
9689            _depth: fidl::encoding::Depth,
9690        ) -> fidl::Result<()> {
9691            encoder.debug_check_bounds::<MlmeStartConfRequest>(offset);
9692            // Delegate to tuple encoding.
9693            fidl::encoding::Encode::<MlmeStartConfRequest, D>::encode(
9694                (<StartConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
9695                encoder,
9696                offset,
9697                _depth,
9698            )
9699        }
9700    }
9701    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartConfirm, D>>
9702        fidl::encoding::Encode<MlmeStartConfRequest, D> for (T0,)
9703    {
9704        #[inline]
9705        unsafe fn encode(
9706            self,
9707            encoder: &mut fidl::encoding::Encoder<'_, D>,
9708            offset: usize,
9709            depth: fidl::encoding::Depth,
9710        ) -> fidl::Result<()> {
9711            encoder.debug_check_bounds::<MlmeStartConfRequest>(offset);
9712            // Zero out padding regions. There's no need to apply masks
9713            // because the unmasked parts will be overwritten by fields.
9714            // Write the fields.
9715            self.0.encode(encoder, offset + 0, depth)?;
9716            Ok(())
9717        }
9718    }
9719
9720    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartConfRequest {
9721        #[inline(always)]
9722        fn new_empty() -> Self {
9723            Self { resp: fidl::new_empty!(StartConfirm, D) }
9724        }
9725
9726        #[inline]
9727        unsafe fn decode(
9728            &mut self,
9729            decoder: &mut fidl::encoding::Decoder<'_, D>,
9730            offset: usize,
9731            _depth: fidl::encoding::Depth,
9732        ) -> fidl::Result<()> {
9733            decoder.debug_check_bounds::<Self>(offset);
9734            // Verify that padding bytes are zero.
9735            fidl::decode!(StartConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
9736            Ok(())
9737        }
9738    }
9739
9740    impl fidl::encoding::ValueTypeMarker for MlmeStartReqRequest {
9741        type Borrowed<'a> = &'a Self;
9742        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9743            value
9744        }
9745    }
9746
9747    unsafe impl fidl::encoding::TypeMarker for MlmeStartReqRequest {
9748        type Owned = Self;
9749
9750        #[inline(always)]
9751        fn inline_align(_context: fidl::encoding::Context) -> usize {
9752            8
9753        }
9754
9755        #[inline(always)]
9756        fn inline_size(_context: fidl::encoding::Context) -> usize {
9757            96
9758        }
9759    }
9760
9761    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartReqRequest, D>
9762        for &MlmeStartReqRequest
9763    {
9764        #[inline]
9765        unsafe fn encode(
9766            self,
9767            encoder: &mut fidl::encoding::Encoder<'_, D>,
9768            offset: usize,
9769            _depth: fidl::encoding::Depth,
9770        ) -> fidl::Result<()> {
9771            encoder.debug_check_bounds::<MlmeStartReqRequest>(offset);
9772            // Delegate to tuple encoding.
9773            fidl::encoding::Encode::<MlmeStartReqRequest, D>::encode(
9774                (<StartRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9775                encoder,
9776                offset,
9777                _depth,
9778            )
9779        }
9780    }
9781    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartRequest, D>>
9782        fidl::encoding::Encode<MlmeStartReqRequest, D> for (T0,)
9783    {
9784        #[inline]
9785        unsafe fn encode(
9786            self,
9787            encoder: &mut fidl::encoding::Encoder<'_, D>,
9788            offset: usize,
9789            depth: fidl::encoding::Depth,
9790        ) -> fidl::Result<()> {
9791            encoder.debug_check_bounds::<MlmeStartReqRequest>(offset);
9792            // Zero out padding regions. There's no need to apply masks
9793            // because the unmasked parts will be overwritten by fields.
9794            // Write the fields.
9795            self.0.encode(encoder, offset + 0, depth)?;
9796            Ok(())
9797        }
9798    }
9799
9800    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartReqRequest {
9801        #[inline(always)]
9802        fn new_empty() -> Self {
9803            Self { req: fidl::new_empty!(StartRequest, D) }
9804        }
9805
9806        #[inline]
9807        unsafe fn decode(
9808            &mut self,
9809            decoder: &mut fidl::encoding::Decoder<'_, D>,
9810            offset: usize,
9811            _depth: fidl::encoding::Depth,
9812        ) -> fidl::Result<()> {
9813            decoder.debug_check_bounds::<Self>(offset);
9814            // Verify that padding bytes are zero.
9815            fidl::decode!(StartRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9816            Ok(())
9817        }
9818    }
9819
9820    impl fidl::encoding::ValueTypeMarker for MlmeStartScanRequest {
9821        type Borrowed<'a> = &'a Self;
9822        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9823            value
9824        }
9825    }
9826
9827    unsafe impl fidl::encoding::TypeMarker for MlmeStartScanRequest {
9828        type Owned = Self;
9829
9830        #[inline(always)]
9831        fn inline_align(_context: fidl::encoding::Context) -> usize {
9832            8
9833        }
9834
9835        #[inline(always)]
9836        fn inline_size(_context: fidl::encoding::Context) -> usize {
9837            64
9838        }
9839    }
9840
9841    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartScanRequest, D>
9842        for &MlmeStartScanRequest
9843    {
9844        #[inline]
9845        unsafe fn encode(
9846            self,
9847            encoder: &mut fidl::encoding::Encoder<'_, D>,
9848            offset: usize,
9849            _depth: fidl::encoding::Depth,
9850        ) -> fidl::Result<()> {
9851            encoder.debug_check_bounds::<MlmeStartScanRequest>(offset);
9852            // Delegate to tuple encoding.
9853            fidl::encoding::Encode::<MlmeStartScanRequest, D>::encode(
9854                (<ScanRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9855                encoder,
9856                offset,
9857                _depth,
9858            )
9859        }
9860    }
9861    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanRequest, D>>
9862        fidl::encoding::Encode<MlmeStartScanRequest, D> for (T0,)
9863    {
9864        #[inline]
9865        unsafe fn encode(
9866            self,
9867            encoder: &mut fidl::encoding::Encoder<'_, D>,
9868            offset: usize,
9869            depth: fidl::encoding::Depth,
9870        ) -> fidl::Result<()> {
9871            encoder.debug_check_bounds::<MlmeStartScanRequest>(offset);
9872            // Zero out padding regions. There's no need to apply masks
9873            // because the unmasked parts will be overwritten by fields.
9874            // Write the fields.
9875            self.0.encode(encoder, offset + 0, depth)?;
9876            Ok(())
9877        }
9878    }
9879
9880    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartScanRequest {
9881        #[inline(always)]
9882        fn new_empty() -> Self {
9883            Self { req: fidl::new_empty!(ScanRequest, D) }
9884        }
9885
9886        #[inline]
9887        unsafe fn decode(
9888            &mut self,
9889            decoder: &mut fidl::encoding::Decoder<'_, D>,
9890            offset: usize,
9891            _depth: fidl::encoding::Depth,
9892        ) -> fidl::Result<()> {
9893            decoder.debug_check_bounds::<Self>(offset);
9894            // Verify that padding bytes are zero.
9895            fidl::decode!(ScanRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9896            Ok(())
9897        }
9898    }
9899
9900    impl fidl::encoding::ValueTypeMarker for MlmeStartScheduledScanRequest {
9901        type Borrowed<'a> = &'a Self;
9902        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9903            value
9904        }
9905    }
9906
9907    unsafe impl fidl::encoding::TypeMarker for MlmeStartScheduledScanRequest {
9908        type Owned = Self;
9909
9910        #[inline(always)]
9911        fn inline_align(_context: fidl::encoding::Context) -> usize {
9912            8
9913        }
9914
9915        #[inline(always)]
9916        fn inline_size(_context: fidl::encoding::Context) -> usize {
9917            24
9918        }
9919    }
9920
9921    unsafe impl<D: fidl::encoding::ResourceDialect>
9922        fidl::encoding::Encode<MlmeStartScheduledScanRequest, D>
9923        for &MlmeStartScheduledScanRequest
9924    {
9925        #[inline]
9926        unsafe fn encode(
9927            self,
9928            encoder: &mut fidl::encoding::Encoder<'_, D>,
9929            offset: usize,
9930            _depth: fidl::encoding::Depth,
9931        ) -> fidl::Result<()> {
9932            encoder.debug_check_bounds::<MlmeStartScheduledScanRequest>(offset);
9933            // Delegate to tuple encoding.
9934            fidl::encoding::Encode::<MlmeStartScheduledScanRequest, D>::encode(
9935                (
9936                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
9937                    <fidl_fuchsia_wlan_common_common::ScheduledScanRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),
9938                ),
9939                encoder, offset, _depth
9940            )
9941        }
9942    }
9943    unsafe impl<
9944        D: fidl::encoding::ResourceDialect,
9945        T0: fidl::encoding::Encode<u64, D>,
9946        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common_common::ScheduledScanRequest, D>,
9947    > fidl::encoding::Encode<MlmeStartScheduledScanRequest, D> for (T0, T1)
9948    {
9949        #[inline]
9950        unsafe fn encode(
9951            self,
9952            encoder: &mut fidl::encoding::Encoder<'_, D>,
9953            offset: usize,
9954            depth: fidl::encoding::Depth,
9955        ) -> fidl::Result<()> {
9956            encoder.debug_check_bounds::<MlmeStartScheduledScanRequest>(offset);
9957            // Zero out padding regions. There's no need to apply masks
9958            // because the unmasked parts will be overwritten by fields.
9959            // Write the fields.
9960            self.0.encode(encoder, offset + 0, depth)?;
9961            self.1.encode(encoder, offset + 8, depth)?;
9962            Ok(())
9963        }
9964    }
9965
9966    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9967        for MlmeStartScheduledScanRequest
9968    {
9969        #[inline(always)]
9970        fn new_empty() -> Self {
9971            Self {
9972                txn_id: fidl::new_empty!(u64, D),
9973                req: fidl::new_empty!(fidl_fuchsia_wlan_common_common::ScheduledScanRequest, D),
9974            }
9975        }
9976
9977        #[inline]
9978        unsafe fn decode(
9979            &mut self,
9980            decoder: &mut fidl::encoding::Decoder<'_, D>,
9981            offset: usize,
9982            _depth: fidl::encoding::Depth,
9983        ) -> fidl::Result<()> {
9984            decoder.debug_check_bounds::<Self>(offset);
9985            // Verify that padding bytes are zero.
9986            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
9987            fidl::decode!(
9988                fidl_fuchsia_wlan_common_common::ScheduledScanRequest,
9989                D,
9990                &mut self.req,
9991                decoder,
9992                offset + 8,
9993                _depth
9994            )?;
9995            Ok(())
9996        }
9997    }
9998
9999    impl fidl::encoding::ValueTypeMarker for MlmeStopConfRequest {
10000        type Borrowed<'a> = &'a Self;
10001        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10002            value
10003        }
10004    }
10005
10006    unsafe impl fidl::encoding::TypeMarker for MlmeStopConfRequest {
10007        type Owned = Self;
10008
10009        #[inline(always)]
10010        fn inline_align(_context: fidl::encoding::Context) -> usize {
10011            4
10012        }
10013
10014        #[inline(always)]
10015        fn inline_size(_context: fidl::encoding::Context) -> usize {
10016            4
10017        }
10018    }
10019
10020    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStopConfRequest, D>
10021        for &MlmeStopConfRequest
10022    {
10023        #[inline]
10024        unsafe fn encode(
10025            self,
10026            encoder: &mut fidl::encoding::Encoder<'_, D>,
10027            offset: usize,
10028            _depth: fidl::encoding::Depth,
10029        ) -> fidl::Result<()> {
10030            encoder.debug_check_bounds::<MlmeStopConfRequest>(offset);
10031            // Delegate to tuple encoding.
10032            fidl::encoding::Encode::<MlmeStopConfRequest, D>::encode(
10033                (<StopConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
10034                encoder,
10035                offset,
10036                _depth,
10037            )
10038        }
10039    }
10040    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopConfirm, D>>
10041        fidl::encoding::Encode<MlmeStopConfRequest, D> for (T0,)
10042    {
10043        #[inline]
10044        unsafe fn encode(
10045            self,
10046            encoder: &mut fidl::encoding::Encoder<'_, D>,
10047            offset: usize,
10048            depth: fidl::encoding::Depth,
10049        ) -> fidl::Result<()> {
10050            encoder.debug_check_bounds::<MlmeStopConfRequest>(offset);
10051            // Zero out padding regions. There's no need to apply masks
10052            // because the unmasked parts will be overwritten by fields.
10053            // Write the fields.
10054            self.0.encode(encoder, offset + 0, depth)?;
10055            Ok(())
10056        }
10057    }
10058
10059    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStopConfRequest {
10060        #[inline(always)]
10061        fn new_empty() -> Self {
10062            Self { resp: fidl::new_empty!(StopConfirm, D) }
10063        }
10064
10065        #[inline]
10066        unsafe fn decode(
10067            &mut self,
10068            decoder: &mut fidl::encoding::Decoder<'_, D>,
10069            offset: usize,
10070            _depth: fidl::encoding::Depth,
10071        ) -> fidl::Result<()> {
10072            decoder.debug_check_bounds::<Self>(offset);
10073            // Verify that padding bytes are zero.
10074            fidl::decode!(StopConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
10075            Ok(())
10076        }
10077    }
10078
10079    impl fidl::encoding::ValueTypeMarker for MlmeStopReqRequest {
10080        type Borrowed<'a> = &'a Self;
10081        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10082            value
10083        }
10084    }
10085
10086    unsafe impl fidl::encoding::TypeMarker for MlmeStopReqRequest {
10087        type Owned = Self;
10088
10089        #[inline(always)]
10090        fn inline_align(_context: fidl::encoding::Context) -> usize {
10091            8
10092        }
10093
10094        #[inline(always)]
10095        fn inline_size(_context: fidl::encoding::Context) -> usize {
10096            16
10097        }
10098    }
10099
10100    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStopReqRequest, D>
10101        for &MlmeStopReqRequest
10102    {
10103        #[inline]
10104        unsafe fn encode(
10105            self,
10106            encoder: &mut fidl::encoding::Encoder<'_, D>,
10107            offset: usize,
10108            _depth: fidl::encoding::Depth,
10109        ) -> fidl::Result<()> {
10110            encoder.debug_check_bounds::<MlmeStopReqRequest>(offset);
10111            // Delegate to tuple encoding.
10112            fidl::encoding::Encode::<MlmeStopReqRequest, D>::encode(
10113                (<StopRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
10114                encoder,
10115                offset,
10116                _depth,
10117            )
10118        }
10119    }
10120    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopRequest, D>>
10121        fidl::encoding::Encode<MlmeStopReqRequest, D> for (T0,)
10122    {
10123        #[inline]
10124        unsafe fn encode(
10125            self,
10126            encoder: &mut fidl::encoding::Encoder<'_, D>,
10127            offset: usize,
10128            depth: fidl::encoding::Depth,
10129        ) -> fidl::Result<()> {
10130            encoder.debug_check_bounds::<MlmeStopReqRequest>(offset);
10131            // Zero out padding regions. There's no need to apply masks
10132            // because the unmasked parts will be overwritten by fields.
10133            // Write the fields.
10134            self.0.encode(encoder, offset + 0, depth)?;
10135            Ok(())
10136        }
10137    }
10138
10139    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStopReqRequest {
10140        #[inline(always)]
10141        fn new_empty() -> Self {
10142            Self { req: fidl::new_empty!(StopRequest, D) }
10143        }
10144
10145        #[inline]
10146        unsafe fn decode(
10147            &mut self,
10148            decoder: &mut fidl::encoding::Decoder<'_, D>,
10149            offset: usize,
10150            _depth: fidl::encoding::Depth,
10151        ) -> fidl::Result<()> {
10152            decoder.debug_check_bounds::<Self>(offset);
10153            // Verify that padding bytes are zero.
10154            fidl::decode!(StopRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
10155            Ok(())
10156        }
10157    }
10158
10159    impl fidl::encoding::ValueTypeMarker for MlmeStopScheduledScanRequest {
10160        type Borrowed<'a> = &'a Self;
10161        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10162            value
10163        }
10164    }
10165
10166    unsafe impl fidl::encoding::TypeMarker for MlmeStopScheduledScanRequest {
10167        type Owned = Self;
10168
10169        #[inline(always)]
10170        fn inline_align(_context: fidl::encoding::Context) -> usize {
10171            8
10172        }
10173
10174        #[inline(always)]
10175        fn inline_size(_context: fidl::encoding::Context) -> usize {
10176            8
10177        }
10178        #[inline(always)]
10179        fn encode_is_copy() -> bool {
10180            true
10181        }
10182
10183        #[inline(always)]
10184        fn decode_is_copy() -> bool {
10185            true
10186        }
10187    }
10188
10189    unsafe impl<D: fidl::encoding::ResourceDialect>
10190        fidl::encoding::Encode<MlmeStopScheduledScanRequest, D> for &MlmeStopScheduledScanRequest
10191    {
10192        #[inline]
10193        unsafe fn encode(
10194            self,
10195            encoder: &mut fidl::encoding::Encoder<'_, D>,
10196            offset: usize,
10197            _depth: fidl::encoding::Depth,
10198        ) -> fidl::Result<()> {
10199            encoder.debug_check_bounds::<MlmeStopScheduledScanRequest>(offset);
10200            unsafe {
10201                // Copy the object into the buffer.
10202                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
10203                (buf_ptr as *mut MlmeStopScheduledScanRequest)
10204                    .write_unaligned((self as *const MlmeStopScheduledScanRequest).read());
10205                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
10206                // done second because the memcpy will write garbage to these bytes.
10207            }
10208            Ok(())
10209        }
10210    }
10211    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
10212        fidl::encoding::Encode<MlmeStopScheduledScanRequest, D> for (T0,)
10213    {
10214        #[inline]
10215        unsafe fn encode(
10216            self,
10217            encoder: &mut fidl::encoding::Encoder<'_, D>,
10218            offset: usize,
10219            depth: fidl::encoding::Depth,
10220        ) -> fidl::Result<()> {
10221            encoder.debug_check_bounds::<MlmeStopScheduledScanRequest>(offset);
10222            // Zero out padding regions. There's no need to apply masks
10223            // because the unmasked parts will be overwritten by fields.
10224            // Write the fields.
10225            self.0.encode(encoder, offset + 0, depth)?;
10226            Ok(())
10227        }
10228    }
10229
10230    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10231        for MlmeStopScheduledScanRequest
10232    {
10233        #[inline(always)]
10234        fn new_empty() -> Self {
10235            Self { txn_id: fidl::new_empty!(u64, D) }
10236        }
10237
10238        #[inline]
10239        unsafe fn decode(
10240            &mut self,
10241            decoder: &mut fidl::encoding::Decoder<'_, D>,
10242            offset: usize,
10243            _depth: fidl::encoding::Depth,
10244        ) -> fidl::Result<()> {
10245            decoder.debug_check_bounds::<Self>(offset);
10246            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
10247            // Verify that padding bytes are zero.
10248            // Copy from the buffer into the object.
10249            unsafe {
10250                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
10251            }
10252            Ok(())
10253        }
10254    }
10255
10256    impl fidl::encoding::ValueTypeMarker for NegotiatedCapabilities {
10257        type Borrowed<'a> = &'a Self;
10258        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10259            value
10260        }
10261    }
10262
10263    unsafe impl fidl::encoding::TypeMarker for NegotiatedCapabilities {
10264        type Owned = Self;
10265
10266        #[inline(always)]
10267        fn inline_align(_context: fidl::encoding::Context) -> usize {
10268            8
10269        }
10270
10271        #[inline(always)]
10272        fn inline_size(_context: fidl::encoding::Context) -> usize {
10273            48
10274        }
10275    }
10276
10277    unsafe impl<D: fidl::encoding::ResourceDialect>
10278        fidl::encoding::Encode<NegotiatedCapabilities, D> for &NegotiatedCapabilities
10279    {
10280        #[inline]
10281        unsafe fn encode(
10282            self,
10283            encoder: &mut fidl::encoding::Encoder<'_, D>,
10284            offset: usize,
10285            _depth: fidl::encoding::Depth,
10286        ) -> fidl::Result<()> {
10287            encoder.debug_check_bounds::<NegotiatedCapabilities>(offset);
10288            // Delegate to tuple encoding.
10289            fidl::encoding::Encode::<NegotiatedCapabilities, D>::encode(
10290                (
10291                    <fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::ValueTypeMarker>::borrow(&self.primary),
10292                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
10293                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
10294                    <fidl::encoding::Boxed<WmmParameter> as fidl::encoding::ValueTypeMarker>::borrow(&self.wmm_param),
10295                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.ht_cap),
10296                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_cap),
10297                ),
10298                encoder, offset, _depth
10299            )
10300        }
10301    }
10302    unsafe impl<
10303        D: fidl::encoding::ResourceDialect,
10304        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D>,
10305        T1: fidl::encoding::Encode<u16, D>,
10306        T2: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
10307        T3: fidl::encoding::Encode<fidl::encoding::Boxed<WmmParameter>, D>,
10308        T4: fidl::encoding::Encode<
10309                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
10310                D,
10311            >,
10312        T5: fidl::encoding::Encode<
10313                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
10314                D,
10315            >,
10316    > fidl::encoding::Encode<NegotiatedCapabilities, D> for (T0, T1, T2, T3, T4, T5)
10317    {
10318        #[inline]
10319        unsafe fn encode(
10320            self,
10321            encoder: &mut fidl::encoding::Encoder<'_, D>,
10322            offset: usize,
10323            depth: fidl::encoding::Depth,
10324        ) -> fidl::Result<()> {
10325            encoder.debug_check_bounds::<NegotiatedCapabilities>(offset);
10326            // Zero out padding regions. There's no need to apply masks
10327            // because the unmasked parts will be overwritten by fields.
10328            unsafe {
10329                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
10330                (ptr as *mut u64).write_unaligned(0);
10331            }
10332            // Write the fields.
10333            self.0.encode(encoder, offset + 0, depth)?;
10334            self.1.encode(encoder, offset + 2, depth)?;
10335            self.2.encode(encoder, offset + 8, depth)?;
10336            self.3.encode(encoder, offset + 24, depth)?;
10337            self.4.encode(encoder, offset + 32, depth)?;
10338            self.5.encode(encoder, offset + 40, depth)?;
10339            Ok(())
10340        }
10341    }
10342
10343    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10344        for NegotiatedCapabilities
10345    {
10346        #[inline(always)]
10347        fn new_empty() -> Self {
10348            Self {
10349                primary: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D),
10350                capability_info: fidl::new_empty!(u16, D),
10351                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
10352                wmm_param: fidl::new_empty!(fidl::encoding::Boxed<WmmParameter>, D),
10353                ht_cap: fidl::new_empty!(
10354                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
10355                    D
10356                ),
10357                vht_cap: fidl::new_empty!(
10358                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
10359                    D
10360                ),
10361            }
10362        }
10363
10364        #[inline]
10365        unsafe fn decode(
10366            &mut self,
10367            decoder: &mut fidl::encoding::Decoder<'_, D>,
10368            offset: usize,
10369            _depth: fidl::encoding::Depth,
10370        ) -> fidl::Result<()> {
10371            decoder.debug_check_bounds::<Self>(offset);
10372            // Verify that padding bytes are zero.
10373            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
10374            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10375            let mask = 0xffffffff00000000u64;
10376            let maskedval = padval & mask;
10377            if maskedval != 0 {
10378                return Err(fidl::Error::NonZeroPadding {
10379                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
10380                });
10381            }
10382            fidl::decode!(
10383                fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
10384                D,
10385                &mut self.primary,
10386                decoder,
10387                offset + 0,
10388                _depth
10389            )?;
10390            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 2, _depth)?;
10391            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 8, _depth)?;
10392            fidl::decode!(
10393                fidl::encoding::Boxed<WmmParameter>,
10394                D,
10395                &mut self.wmm_param,
10396                decoder,
10397                offset + 24,
10398                _depth
10399            )?;
10400            fidl::decode!(
10401                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
10402                D,
10403                &mut self.ht_cap,
10404                decoder,
10405                offset + 32,
10406                _depth
10407            )?;
10408            fidl::decode!(
10409                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
10410                D,
10411                &mut self.vht_cap,
10412                decoder,
10413                offset + 40,
10414                _depth
10415            )?;
10416            Ok(())
10417        }
10418    }
10419
10420    impl fidl::encoding::ValueTypeMarker for PmkInfo {
10421        type Borrowed<'a> = &'a Self;
10422        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10423            value
10424        }
10425    }
10426
10427    unsafe impl fidl::encoding::TypeMarker for PmkInfo {
10428        type Owned = Self;
10429
10430        #[inline(always)]
10431        fn inline_align(_context: fidl::encoding::Context) -> usize {
10432            8
10433        }
10434
10435        #[inline(always)]
10436        fn inline_size(_context: fidl::encoding::Context) -> usize {
10437            32
10438        }
10439    }
10440
10441    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PmkInfo, D> for &PmkInfo {
10442        #[inline]
10443        unsafe fn encode(
10444            self,
10445            encoder: &mut fidl::encoding::Encoder<'_, D>,
10446            offset: usize,
10447            _depth: fidl::encoding::Depth,
10448        ) -> fidl::Result<()> {
10449            encoder.debug_check_bounds::<PmkInfo>(offset);
10450            // Delegate to tuple encoding.
10451            fidl::encoding::Encode::<PmkInfo, D>::encode(
10452                (
10453                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.pmk),
10454                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.pmkid),
10455                ),
10456                encoder, offset, _depth
10457            )
10458        }
10459    }
10460    unsafe impl<
10461        D: fidl::encoding::ResourceDialect,
10462        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10463        T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10464    > fidl::encoding::Encode<PmkInfo, D> for (T0, T1)
10465    {
10466        #[inline]
10467        unsafe fn encode(
10468            self,
10469            encoder: &mut fidl::encoding::Encoder<'_, D>,
10470            offset: usize,
10471            depth: fidl::encoding::Depth,
10472        ) -> fidl::Result<()> {
10473            encoder.debug_check_bounds::<PmkInfo>(offset);
10474            // Zero out padding regions. There's no need to apply masks
10475            // because the unmasked parts will be overwritten by fields.
10476            // Write the fields.
10477            self.0.encode(encoder, offset + 0, depth)?;
10478            self.1.encode(encoder, offset + 16, depth)?;
10479            Ok(())
10480        }
10481    }
10482
10483    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PmkInfo {
10484        #[inline(always)]
10485        fn new_empty() -> Self {
10486            Self {
10487                pmk: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10488                pmkid: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10489            }
10490        }
10491
10492        #[inline]
10493        unsafe fn decode(
10494            &mut self,
10495            decoder: &mut fidl::encoding::Decoder<'_, D>,
10496            offset: usize,
10497            _depth: fidl::encoding::Depth,
10498        ) -> fidl::Result<()> {
10499            decoder.debug_check_bounds::<Self>(offset);
10500            // Verify that padding bytes are zero.
10501            fidl::decode!(
10502                fidl::encoding::UnboundedVector<u8>,
10503                D,
10504                &mut self.pmk,
10505                decoder,
10506                offset + 0,
10507                _depth
10508            )?;
10509            fidl::decode!(
10510                fidl::encoding::UnboundedVector<u8>,
10511                D,
10512                &mut self.pmkid,
10513                decoder,
10514                offset + 16,
10515                _depth
10516            )?;
10517            Ok(())
10518        }
10519    }
10520
10521    impl fidl::encoding::ValueTypeMarker for ReconnectRequest {
10522        type Borrowed<'a> = &'a Self;
10523        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10524            value
10525        }
10526    }
10527
10528    unsafe impl fidl::encoding::TypeMarker for ReconnectRequest {
10529        type Owned = Self;
10530
10531        #[inline(always)]
10532        fn inline_align(_context: fidl::encoding::Context) -> usize {
10533            1
10534        }
10535
10536        #[inline(always)]
10537        fn inline_size(_context: fidl::encoding::Context) -> usize {
10538            6
10539        }
10540        #[inline(always)]
10541        fn encode_is_copy() -> bool {
10542            true
10543        }
10544
10545        #[inline(always)]
10546        fn decode_is_copy() -> bool {
10547            true
10548        }
10549    }
10550
10551    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ReconnectRequest, D>
10552        for &ReconnectRequest
10553    {
10554        #[inline]
10555        unsafe fn encode(
10556            self,
10557            encoder: &mut fidl::encoding::Encoder<'_, D>,
10558            offset: usize,
10559            _depth: fidl::encoding::Depth,
10560        ) -> fidl::Result<()> {
10561            encoder.debug_check_bounds::<ReconnectRequest>(offset);
10562            unsafe {
10563                // Copy the object into the buffer.
10564                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
10565                (buf_ptr as *mut ReconnectRequest)
10566                    .write_unaligned((self as *const ReconnectRequest).read());
10567                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
10568                // done second because the memcpy will write garbage to these bytes.
10569            }
10570            Ok(())
10571        }
10572    }
10573    unsafe impl<
10574        D: fidl::encoding::ResourceDialect,
10575        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10576    > fidl::encoding::Encode<ReconnectRequest, D> for (T0,)
10577    {
10578        #[inline]
10579        unsafe fn encode(
10580            self,
10581            encoder: &mut fidl::encoding::Encoder<'_, D>,
10582            offset: usize,
10583            depth: fidl::encoding::Depth,
10584        ) -> fidl::Result<()> {
10585            encoder.debug_check_bounds::<ReconnectRequest>(offset);
10586            // Zero out padding regions. There's no need to apply masks
10587            // because the unmasked parts will be overwritten by fields.
10588            // Write the fields.
10589            self.0.encode(encoder, offset + 0, depth)?;
10590            Ok(())
10591        }
10592    }
10593
10594    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ReconnectRequest {
10595        #[inline(always)]
10596        fn new_empty() -> Self {
10597            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
10598        }
10599
10600        #[inline]
10601        unsafe fn decode(
10602            &mut self,
10603            decoder: &mut fidl::encoding::Decoder<'_, D>,
10604            offset: usize,
10605            _depth: fidl::encoding::Depth,
10606        ) -> fidl::Result<()> {
10607            decoder.debug_check_bounds::<Self>(offset);
10608            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
10609            // Verify that padding bytes are zero.
10610            // Copy from the buffer into the object.
10611            unsafe {
10612                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
10613            }
10614            Ok(())
10615        }
10616    }
10617
10618    impl fidl::encoding::ValueTypeMarker for ResetRequest {
10619        type Borrowed<'a> = &'a Self;
10620        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10621            value
10622        }
10623    }
10624
10625    unsafe impl fidl::encoding::TypeMarker for ResetRequest {
10626        type Owned = Self;
10627
10628        #[inline(always)]
10629        fn inline_align(_context: fidl::encoding::Context) -> usize {
10630            1
10631        }
10632
10633        #[inline(always)]
10634        fn inline_size(_context: fidl::encoding::Context) -> usize {
10635            7
10636        }
10637    }
10638
10639    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResetRequest, D>
10640        for &ResetRequest
10641    {
10642        #[inline]
10643        unsafe fn encode(
10644            self,
10645            encoder: &mut fidl::encoding::Encoder<'_, D>,
10646            offset: usize,
10647            _depth: fidl::encoding::Depth,
10648        ) -> fidl::Result<()> {
10649            encoder.debug_check_bounds::<ResetRequest>(offset);
10650            // Delegate to tuple encoding.
10651            fidl::encoding::Encode::<ResetRequest, D>::encode(
10652                (
10653                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
10654                        &self.sta_address,
10655                    ),
10656                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.set_default_mib),
10657                ),
10658                encoder,
10659                offset,
10660                _depth,
10661            )
10662        }
10663    }
10664    unsafe impl<
10665        D: fidl::encoding::ResourceDialect,
10666        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10667        T1: fidl::encoding::Encode<bool, D>,
10668    > fidl::encoding::Encode<ResetRequest, D> for (T0, T1)
10669    {
10670        #[inline]
10671        unsafe fn encode(
10672            self,
10673            encoder: &mut fidl::encoding::Encoder<'_, D>,
10674            offset: usize,
10675            depth: fidl::encoding::Depth,
10676        ) -> fidl::Result<()> {
10677            encoder.debug_check_bounds::<ResetRequest>(offset);
10678            // Zero out padding regions. There's no need to apply masks
10679            // because the unmasked parts will be overwritten by fields.
10680            // Write the fields.
10681            self.0.encode(encoder, offset + 0, depth)?;
10682            self.1.encode(encoder, offset + 6, depth)?;
10683            Ok(())
10684        }
10685    }
10686
10687    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResetRequest {
10688        #[inline(always)]
10689        fn new_empty() -> Self {
10690            Self {
10691                sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10692                set_default_mib: fidl::new_empty!(bool, D),
10693            }
10694        }
10695
10696        #[inline]
10697        unsafe fn decode(
10698            &mut self,
10699            decoder: &mut fidl::encoding::Decoder<'_, D>,
10700            offset: usize,
10701            _depth: fidl::encoding::Depth,
10702        ) -> fidl::Result<()> {
10703            decoder.debug_check_bounds::<Self>(offset);
10704            // Verify that padding bytes are zero.
10705            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.sta_address, decoder, offset + 0, _depth)?;
10706            fidl::decode!(bool, D, &mut self.set_default_mib, decoder, offset + 6, _depth)?;
10707            Ok(())
10708        }
10709    }
10710
10711    impl fidl::encoding::ValueTypeMarker for RoamConfirm {
10712        type Borrowed<'a> = &'a Self;
10713        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10714            value
10715        }
10716    }
10717
10718    unsafe impl fidl::encoding::TypeMarker for RoamConfirm {
10719        type Owned = Self;
10720
10721        #[inline(always)]
10722        fn inline_align(_context: fidl::encoding::Context) -> usize {
10723            8
10724        }
10725
10726        #[inline(always)]
10727        fn inline_size(_context: fidl::encoding::Context) -> usize {
10728            32
10729        }
10730    }
10731
10732    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamConfirm, D>
10733        for &RoamConfirm
10734    {
10735        #[inline]
10736        unsafe fn encode(
10737            self,
10738            encoder: &mut fidl::encoding::Encoder<'_, D>,
10739            offset: usize,
10740            _depth: fidl::encoding::Depth,
10741        ) -> fidl::Result<()> {
10742            encoder.debug_check_bounds::<RoamConfirm>(offset);
10743            // Delegate to tuple encoding.
10744            fidl::encoding::Encode::<RoamConfirm, D>::encode(
10745                (
10746                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
10747                    <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10748                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
10749                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.target_bss_authenticated),
10750                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
10751                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
10752                ),
10753                encoder, offset, _depth
10754            )
10755        }
10756    }
10757    unsafe impl<
10758        D: fidl::encoding::ResourceDialect,
10759        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10760        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>,
10761        T2: fidl::encoding::Encode<bool, D>,
10762        T3: fidl::encoding::Encode<bool, D>,
10763        T4: fidl::encoding::Encode<u16, D>,
10764        T5: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10765    > fidl::encoding::Encode<RoamConfirm, D> for (T0, T1, T2, T3, T4, T5)
10766    {
10767        #[inline]
10768        unsafe fn encode(
10769            self,
10770            encoder: &mut fidl::encoding::Encoder<'_, D>,
10771            offset: usize,
10772            depth: fidl::encoding::Depth,
10773        ) -> fidl::Result<()> {
10774            encoder.debug_check_bounds::<RoamConfirm>(offset);
10775            // Zero out padding regions. There's no need to apply masks
10776            // because the unmasked parts will be overwritten by fields.
10777            unsafe {
10778                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10779                (ptr as *mut u64).write_unaligned(0);
10780            }
10781            // Write the fields.
10782            self.0.encode(encoder, offset + 0, depth)?;
10783            self.1.encode(encoder, offset + 6, depth)?;
10784            self.2.encode(encoder, offset + 8, depth)?;
10785            self.3.encode(encoder, offset + 9, depth)?;
10786            self.4.encode(encoder, offset + 10, depth)?;
10787            self.5.encode(encoder, offset + 16, depth)?;
10788            Ok(())
10789        }
10790    }
10791
10792    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamConfirm {
10793        #[inline(always)]
10794        fn new_empty() -> Self {
10795            Self {
10796                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10797                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D),
10798                original_association_maintained: fidl::new_empty!(bool, D),
10799                target_bss_authenticated: fidl::new_empty!(bool, D),
10800                association_id: fidl::new_empty!(u16, D),
10801                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10802            }
10803        }
10804
10805        #[inline]
10806        unsafe fn decode(
10807            &mut self,
10808            decoder: &mut fidl::encoding::Decoder<'_, D>,
10809            offset: usize,
10810            _depth: fidl::encoding::Depth,
10811        ) -> fidl::Result<()> {
10812            decoder.debug_check_bounds::<Self>(offset);
10813            // Verify that padding bytes are zero.
10814            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10815            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10816            let mask = 0xffffffff00000000u64;
10817            let maskedval = padval & mask;
10818            if maskedval != 0 {
10819                return Err(fidl::Error::NonZeroPadding {
10820                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10821                });
10822            }
10823            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
10824            fidl::decode!(
10825                fidl_fuchsia_wlan_ieee80211_common::StatusCode,
10826                D,
10827                &mut self.status_code,
10828                decoder,
10829                offset + 6,
10830                _depth
10831            )?;
10832            fidl::decode!(
10833                bool,
10834                D,
10835                &mut self.original_association_maintained,
10836                decoder,
10837                offset + 8,
10838                _depth
10839            )?;
10840            fidl::decode!(
10841                bool,
10842                D,
10843                &mut self.target_bss_authenticated,
10844                decoder,
10845                offset + 9,
10846                _depth
10847            )?;
10848            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 10, _depth)?;
10849            fidl::decode!(
10850                fidl::encoding::UnboundedVector<u8>,
10851                D,
10852                &mut self.association_ies,
10853                decoder,
10854                offset + 16,
10855                _depth
10856            )?;
10857            Ok(())
10858        }
10859    }
10860
10861    impl fidl::encoding::ValueTypeMarker for RoamRequest {
10862        type Borrowed<'a> = &'a Self;
10863        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10864            value
10865        }
10866    }
10867
10868    unsafe impl fidl::encoding::TypeMarker for RoamRequest {
10869        type Owned = Self;
10870
10871        #[inline(always)]
10872        fn inline_align(_context: fidl::encoding::Context) -> usize {
10873            8
10874        }
10875
10876        #[inline(always)]
10877        fn inline_size(_context: fidl::encoding::Context) -> usize {
10878            48
10879        }
10880    }
10881
10882    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamRequest, D>
10883        for &RoamRequest
10884    {
10885        #[inline]
10886        unsafe fn encode(
10887            self,
10888            encoder: &mut fidl::encoding::Encoder<'_, D>,
10889            offset: usize,
10890            _depth: fidl::encoding::Depth,
10891        ) -> fidl::Result<()> {
10892            encoder.debug_check_bounds::<RoamRequest>(offset);
10893            // Delegate to tuple encoding.
10894            fidl::encoding::Encode::<RoamRequest, D>::encode(
10895                (
10896                    <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
10897                ),
10898                encoder, offset, _depth
10899            )
10900        }
10901    }
10902    unsafe impl<
10903        D: fidl::encoding::ResourceDialect,
10904        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>,
10905    > fidl::encoding::Encode<RoamRequest, D> for (T0,)
10906    {
10907        #[inline]
10908        unsafe fn encode(
10909            self,
10910            encoder: &mut fidl::encoding::Encoder<'_, D>,
10911            offset: usize,
10912            depth: fidl::encoding::Depth,
10913        ) -> fidl::Result<()> {
10914            encoder.debug_check_bounds::<RoamRequest>(offset);
10915            // Zero out padding regions. There's no need to apply masks
10916            // because the unmasked parts will be overwritten by fields.
10917            // Write the fields.
10918            self.0.encode(encoder, offset + 0, depth)?;
10919            Ok(())
10920        }
10921    }
10922
10923    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamRequest {
10924        #[inline(always)]
10925        fn new_empty() -> Self {
10926            Self {
10927                selected_bss: fidl::new_empty!(
10928                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
10929                    D
10930                ),
10931            }
10932        }
10933
10934        #[inline]
10935        unsafe fn decode(
10936            &mut self,
10937            decoder: &mut fidl::encoding::Decoder<'_, D>,
10938            offset: usize,
10939            _depth: fidl::encoding::Depth,
10940        ) -> fidl::Result<()> {
10941            decoder.debug_check_bounds::<Self>(offset);
10942            // Verify that padding bytes are zero.
10943            fidl::decode!(
10944                fidl_fuchsia_wlan_ieee80211_common::BssDescription,
10945                D,
10946                &mut self.selected_bss,
10947                decoder,
10948                offset + 0,
10949                _depth
10950            )?;
10951            Ok(())
10952        }
10953    }
10954
10955    impl fidl::encoding::ValueTypeMarker for RoamResultIndication {
10956        type Borrowed<'a> = &'a Self;
10957        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10958            value
10959        }
10960    }
10961
10962    unsafe impl fidl::encoding::TypeMarker for RoamResultIndication {
10963        type Owned = Self;
10964
10965        #[inline(always)]
10966        fn inline_align(_context: fidl::encoding::Context) -> usize {
10967            8
10968        }
10969
10970        #[inline(always)]
10971        fn inline_size(_context: fidl::encoding::Context) -> usize {
10972            32
10973        }
10974    }
10975
10976    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamResultIndication, D>
10977        for &RoamResultIndication
10978    {
10979        #[inline]
10980        unsafe fn encode(
10981            self,
10982            encoder: &mut fidl::encoding::Encoder<'_, D>,
10983            offset: usize,
10984            _depth: fidl::encoding::Depth,
10985        ) -> fidl::Result<()> {
10986            encoder.debug_check_bounds::<RoamResultIndication>(offset);
10987            // Delegate to tuple encoding.
10988            fidl::encoding::Encode::<RoamResultIndication, D>::encode(
10989                (
10990                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
10991                    <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10992                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
10993                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.target_bss_authenticated),
10994                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
10995                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
10996                ),
10997                encoder, offset, _depth
10998            )
10999        }
11000    }
11001    unsafe impl<
11002        D: fidl::encoding::ResourceDialect,
11003        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11004        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>,
11005        T2: fidl::encoding::Encode<bool, D>,
11006        T3: fidl::encoding::Encode<bool, D>,
11007        T4: fidl::encoding::Encode<u16, D>,
11008        T5: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
11009    > fidl::encoding::Encode<RoamResultIndication, D> for (T0, T1, T2, T3, T4, T5)
11010    {
11011        #[inline]
11012        unsafe fn encode(
11013            self,
11014            encoder: &mut fidl::encoding::Encoder<'_, D>,
11015            offset: usize,
11016            depth: fidl::encoding::Depth,
11017        ) -> fidl::Result<()> {
11018            encoder.debug_check_bounds::<RoamResultIndication>(offset);
11019            // Zero out padding regions. There's no need to apply masks
11020            // because the unmasked parts will be overwritten by fields.
11021            unsafe {
11022                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
11023                (ptr as *mut u64).write_unaligned(0);
11024            }
11025            // Write the fields.
11026            self.0.encode(encoder, offset + 0, depth)?;
11027            self.1.encode(encoder, offset + 6, depth)?;
11028            self.2.encode(encoder, offset + 8, depth)?;
11029            self.3.encode(encoder, offset + 9, depth)?;
11030            self.4.encode(encoder, offset + 10, depth)?;
11031            self.5.encode(encoder, offset + 16, depth)?;
11032            Ok(())
11033        }
11034    }
11035
11036    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamResultIndication {
11037        #[inline(always)]
11038        fn new_empty() -> Self {
11039            Self {
11040                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11041                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D),
11042                original_association_maintained: fidl::new_empty!(bool, D),
11043                target_bss_authenticated: fidl::new_empty!(bool, D),
11044                association_id: fidl::new_empty!(u16, D),
11045                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
11046            }
11047        }
11048
11049        #[inline]
11050        unsafe fn decode(
11051            &mut self,
11052            decoder: &mut fidl::encoding::Decoder<'_, D>,
11053            offset: usize,
11054            _depth: fidl::encoding::Depth,
11055        ) -> fidl::Result<()> {
11056            decoder.debug_check_bounds::<Self>(offset);
11057            // Verify that padding bytes are zero.
11058            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
11059            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11060            let mask = 0xffffffff00000000u64;
11061            let maskedval = padval & mask;
11062            if maskedval != 0 {
11063                return Err(fidl::Error::NonZeroPadding {
11064                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
11065                });
11066            }
11067            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
11068            fidl::decode!(
11069                fidl_fuchsia_wlan_ieee80211_common::StatusCode,
11070                D,
11071                &mut self.status_code,
11072                decoder,
11073                offset + 6,
11074                _depth
11075            )?;
11076            fidl::decode!(
11077                bool,
11078                D,
11079                &mut self.original_association_maintained,
11080                decoder,
11081                offset + 8,
11082                _depth
11083            )?;
11084            fidl::decode!(
11085                bool,
11086                D,
11087                &mut self.target_bss_authenticated,
11088                decoder,
11089                offset + 9,
11090                _depth
11091            )?;
11092            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 10, _depth)?;
11093            fidl::decode!(
11094                fidl::encoding::UnboundedVector<u8>,
11095                D,
11096                &mut self.association_ies,
11097                decoder,
11098                offset + 16,
11099                _depth
11100            )?;
11101            Ok(())
11102        }
11103    }
11104
11105    impl fidl::encoding::ValueTypeMarker for RoamStartIndication {
11106        type Borrowed<'a> = &'a Self;
11107        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11108            value
11109        }
11110    }
11111
11112    unsafe impl fidl::encoding::TypeMarker for RoamStartIndication {
11113        type Owned = Self;
11114
11115        #[inline(always)]
11116        fn inline_align(_context: fidl::encoding::Context) -> usize {
11117            8
11118        }
11119
11120        #[inline(always)]
11121        fn inline_size(_context: fidl::encoding::Context) -> usize {
11122            64
11123        }
11124    }
11125
11126    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamStartIndication, D>
11127        for &RoamStartIndication
11128    {
11129        #[inline]
11130        unsafe fn encode(
11131            self,
11132            encoder: &mut fidl::encoding::Encoder<'_, D>,
11133            offset: usize,
11134            _depth: fidl::encoding::Depth,
11135        ) -> fidl::Result<()> {
11136            encoder.debug_check_bounds::<RoamStartIndication>(offset);
11137            // Delegate to tuple encoding.
11138            fidl::encoding::Encode::<RoamStartIndication, D>::encode(
11139                (
11140                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
11141                    <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
11142                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
11143                ),
11144                encoder, offset, _depth
11145            )
11146        }
11147    }
11148    unsafe impl<
11149        D: fidl::encoding::ResourceDialect,
11150        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11151        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>,
11152        T2: fidl::encoding::Encode<bool, D>,
11153    > fidl::encoding::Encode<RoamStartIndication, D> for (T0, T1, T2)
11154    {
11155        #[inline]
11156        unsafe fn encode(
11157            self,
11158            encoder: &mut fidl::encoding::Encoder<'_, D>,
11159            offset: usize,
11160            depth: fidl::encoding::Depth,
11161        ) -> fidl::Result<()> {
11162            encoder.debug_check_bounds::<RoamStartIndication>(offset);
11163            // Zero out padding regions. There's no need to apply masks
11164            // because the unmasked parts will be overwritten by fields.
11165            unsafe {
11166                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
11167                (ptr as *mut u64).write_unaligned(0);
11168            }
11169            unsafe {
11170                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
11171                (ptr as *mut u64).write_unaligned(0);
11172            }
11173            // Write the fields.
11174            self.0.encode(encoder, offset + 0, depth)?;
11175            self.1.encode(encoder, offset + 8, depth)?;
11176            self.2.encode(encoder, offset + 56, depth)?;
11177            Ok(())
11178        }
11179    }
11180
11181    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamStartIndication {
11182        #[inline(always)]
11183        fn new_empty() -> Self {
11184            Self {
11185                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11186                selected_bss: fidl::new_empty!(
11187                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
11188                    D
11189                ),
11190                original_association_maintained: fidl::new_empty!(bool, D),
11191            }
11192        }
11193
11194        #[inline]
11195        unsafe fn decode(
11196            &mut self,
11197            decoder: &mut fidl::encoding::Decoder<'_, D>,
11198            offset: usize,
11199            _depth: fidl::encoding::Depth,
11200        ) -> fidl::Result<()> {
11201            decoder.debug_check_bounds::<Self>(offset);
11202            // Verify that padding bytes are zero.
11203            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
11204            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11205            let mask = 0xffff000000000000u64;
11206            let maskedval = padval & mask;
11207            if maskedval != 0 {
11208                return Err(fidl::Error::NonZeroPadding {
11209                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
11210                });
11211            }
11212            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
11213            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11214            let mask = 0xffffffffffffff00u64;
11215            let maskedval = padval & mask;
11216            if maskedval != 0 {
11217                return Err(fidl::Error::NonZeroPadding {
11218                    padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
11219                });
11220            }
11221            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
11222            fidl::decode!(
11223                fidl_fuchsia_wlan_ieee80211_common::BssDescription,
11224                D,
11225                &mut self.selected_bss,
11226                decoder,
11227                offset + 8,
11228                _depth
11229            )?;
11230            fidl::decode!(
11231                bool,
11232                D,
11233                &mut self.original_association_maintained,
11234                decoder,
11235                offset + 56,
11236                _depth
11237            )?;
11238            Ok(())
11239        }
11240    }
11241
11242    impl fidl::encoding::ValueTypeMarker for SaeFrame {
11243        type Borrowed<'a> = &'a Self;
11244        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11245            value
11246        }
11247    }
11248
11249    unsafe impl fidl::encoding::TypeMarker for SaeFrame {
11250        type Owned = Self;
11251
11252        #[inline(always)]
11253        fn inline_align(_context: fidl::encoding::Context) -> usize {
11254            8
11255        }
11256
11257        #[inline(always)]
11258        fn inline_size(_context: fidl::encoding::Context) -> usize {
11259            32
11260        }
11261    }
11262
11263    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFrame, D> for &SaeFrame {
11264        #[inline]
11265        unsafe fn encode(
11266            self,
11267            encoder: &mut fidl::encoding::Encoder<'_, D>,
11268            offset: usize,
11269            _depth: fidl::encoding::Depth,
11270        ) -> fidl::Result<()> {
11271            encoder.debug_check_bounds::<SaeFrame>(offset);
11272            // Delegate to tuple encoding.
11273            fidl::encoding::Encode::<SaeFrame, D>::encode(
11274                (
11275                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
11276                    <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
11277                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.seq_num),
11278                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.sae_fields),
11279                ),
11280                encoder, offset, _depth
11281            )
11282        }
11283    }
11284    unsafe impl<
11285        D: fidl::encoding::ResourceDialect,
11286        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11287        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>,
11288        T2: fidl::encoding::Encode<u16, D>,
11289        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
11290    > fidl::encoding::Encode<SaeFrame, D> for (T0, T1, T2, T3)
11291    {
11292        #[inline]
11293        unsafe fn encode(
11294            self,
11295            encoder: &mut fidl::encoding::Encoder<'_, D>,
11296            offset: usize,
11297            depth: fidl::encoding::Depth,
11298        ) -> fidl::Result<()> {
11299            encoder.debug_check_bounds::<SaeFrame>(offset);
11300            // Zero out padding regions. There's no need to apply masks
11301            // because the unmasked parts will be overwritten by fields.
11302            unsafe {
11303                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
11304                (ptr as *mut u64).write_unaligned(0);
11305            }
11306            // Write the fields.
11307            self.0.encode(encoder, offset + 0, depth)?;
11308            self.1.encode(encoder, offset + 6, depth)?;
11309            self.2.encode(encoder, offset + 8, depth)?;
11310            self.3.encode(encoder, offset + 16, depth)?;
11311            Ok(())
11312        }
11313    }
11314
11315    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFrame {
11316        #[inline(always)]
11317        fn new_empty() -> Self {
11318            Self {
11319                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11320                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D),
11321                seq_num: fidl::new_empty!(u16, D),
11322                sae_fields: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
11323            }
11324        }
11325
11326        #[inline]
11327        unsafe fn decode(
11328            &mut self,
11329            decoder: &mut fidl::encoding::Decoder<'_, D>,
11330            offset: usize,
11331            _depth: fidl::encoding::Depth,
11332        ) -> fidl::Result<()> {
11333            decoder.debug_check_bounds::<Self>(offset);
11334            // Verify that padding bytes are zero.
11335            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
11336            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11337            let mask = 0xffffffffffff0000u64;
11338            let maskedval = padval & mask;
11339            if maskedval != 0 {
11340                return Err(fidl::Error::NonZeroPadding {
11341                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
11342                });
11343            }
11344            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
11345            fidl::decode!(
11346                fidl_fuchsia_wlan_ieee80211_common::StatusCode,
11347                D,
11348                &mut self.status_code,
11349                decoder,
11350                offset + 6,
11351                _depth
11352            )?;
11353            fidl::decode!(u16, D, &mut self.seq_num, decoder, offset + 8, _depth)?;
11354            fidl::decode!(
11355                fidl::encoding::UnboundedVector<u8>,
11356                D,
11357                &mut self.sae_fields,
11358                decoder,
11359                offset + 16,
11360                _depth
11361            )?;
11362            Ok(())
11363        }
11364    }
11365
11366    impl fidl::encoding::ValueTypeMarker for SaeHandshakeIndication {
11367        type Borrowed<'a> = &'a Self;
11368        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11369            value
11370        }
11371    }
11372
11373    unsafe impl fidl::encoding::TypeMarker for SaeHandshakeIndication {
11374        type Owned = Self;
11375
11376        #[inline(always)]
11377        fn inline_align(_context: fidl::encoding::Context) -> usize {
11378            1
11379        }
11380
11381        #[inline(always)]
11382        fn inline_size(_context: fidl::encoding::Context) -> usize {
11383            6
11384        }
11385        #[inline(always)]
11386        fn encode_is_copy() -> bool {
11387            true
11388        }
11389
11390        #[inline(always)]
11391        fn decode_is_copy() -> bool {
11392            true
11393        }
11394    }
11395
11396    unsafe impl<D: fidl::encoding::ResourceDialect>
11397        fidl::encoding::Encode<SaeHandshakeIndication, D> for &SaeHandshakeIndication
11398    {
11399        #[inline]
11400        unsafe fn encode(
11401            self,
11402            encoder: &mut fidl::encoding::Encoder<'_, D>,
11403            offset: usize,
11404            _depth: fidl::encoding::Depth,
11405        ) -> fidl::Result<()> {
11406            encoder.debug_check_bounds::<SaeHandshakeIndication>(offset);
11407            unsafe {
11408                // Copy the object into the buffer.
11409                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
11410                (buf_ptr as *mut SaeHandshakeIndication)
11411                    .write_unaligned((self as *const SaeHandshakeIndication).read());
11412                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
11413                // done second because the memcpy will write garbage to these bytes.
11414            }
11415            Ok(())
11416        }
11417    }
11418    unsafe impl<
11419        D: fidl::encoding::ResourceDialect,
11420        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11421    > fidl::encoding::Encode<SaeHandshakeIndication, D> for (T0,)
11422    {
11423        #[inline]
11424        unsafe fn encode(
11425            self,
11426            encoder: &mut fidl::encoding::Encoder<'_, D>,
11427            offset: usize,
11428            depth: fidl::encoding::Depth,
11429        ) -> fidl::Result<()> {
11430            encoder.debug_check_bounds::<SaeHandshakeIndication>(offset);
11431            // Zero out padding regions. There's no need to apply masks
11432            // because the unmasked parts will be overwritten by fields.
11433            // Write the fields.
11434            self.0.encode(encoder, offset + 0, depth)?;
11435            Ok(())
11436        }
11437    }
11438
11439    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11440        for SaeHandshakeIndication
11441    {
11442        #[inline(always)]
11443        fn new_empty() -> Self {
11444            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
11445        }
11446
11447        #[inline]
11448        unsafe fn decode(
11449            &mut self,
11450            decoder: &mut fidl::encoding::Decoder<'_, D>,
11451            offset: usize,
11452            _depth: fidl::encoding::Depth,
11453        ) -> fidl::Result<()> {
11454            decoder.debug_check_bounds::<Self>(offset);
11455            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
11456            // Verify that padding bytes are zero.
11457            // Copy from the buffer into the object.
11458            unsafe {
11459                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
11460            }
11461            Ok(())
11462        }
11463    }
11464
11465    impl fidl::encoding::ValueTypeMarker for SaeHandshakeResponse {
11466        type Borrowed<'a> = &'a Self;
11467        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11468            value
11469        }
11470    }
11471
11472    unsafe impl fidl::encoding::TypeMarker for SaeHandshakeResponse {
11473        type Owned = Self;
11474
11475        #[inline(always)]
11476        fn inline_align(_context: fidl::encoding::Context) -> usize {
11477            2
11478        }
11479
11480        #[inline(always)]
11481        fn inline_size(_context: fidl::encoding::Context) -> usize {
11482            8
11483        }
11484    }
11485
11486    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeHandshakeResponse, D>
11487        for &SaeHandshakeResponse
11488    {
11489        #[inline]
11490        unsafe fn encode(
11491            self,
11492            encoder: &mut fidl::encoding::Encoder<'_, D>,
11493            offset: usize,
11494            _depth: fidl::encoding::Depth,
11495        ) -> fidl::Result<()> {
11496            encoder.debug_check_bounds::<SaeHandshakeResponse>(offset);
11497            // Delegate to tuple encoding.
11498            fidl::encoding::Encode::<SaeHandshakeResponse, D>::encode(
11499                (
11500                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
11501                    <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
11502                ),
11503                encoder, offset, _depth
11504            )
11505        }
11506    }
11507    unsafe impl<
11508        D: fidl::encoding::ResourceDialect,
11509        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11510        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>,
11511    > fidl::encoding::Encode<SaeHandshakeResponse, D> for (T0, T1)
11512    {
11513        #[inline]
11514        unsafe fn encode(
11515            self,
11516            encoder: &mut fidl::encoding::Encoder<'_, D>,
11517            offset: usize,
11518            depth: fidl::encoding::Depth,
11519        ) -> fidl::Result<()> {
11520            encoder.debug_check_bounds::<SaeHandshakeResponse>(offset);
11521            // Zero out padding regions. There's no need to apply masks
11522            // because the unmasked parts will be overwritten by fields.
11523            // Write the fields.
11524            self.0.encode(encoder, offset + 0, depth)?;
11525            self.1.encode(encoder, offset + 6, depth)?;
11526            Ok(())
11527        }
11528    }
11529
11530    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeHandshakeResponse {
11531        #[inline(always)]
11532        fn new_empty() -> Self {
11533            Self {
11534                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11535                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D),
11536            }
11537        }
11538
11539        #[inline]
11540        unsafe fn decode(
11541            &mut self,
11542            decoder: &mut fidl::encoding::Decoder<'_, D>,
11543            offset: usize,
11544            _depth: fidl::encoding::Depth,
11545        ) -> fidl::Result<()> {
11546            decoder.debug_check_bounds::<Self>(offset);
11547            // Verify that padding bytes are zero.
11548            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
11549            fidl::decode!(
11550                fidl_fuchsia_wlan_ieee80211_common::StatusCode,
11551                D,
11552                &mut self.status_code,
11553                decoder,
11554                offset + 6,
11555                _depth
11556            )?;
11557            Ok(())
11558        }
11559    }
11560
11561    impl fidl::encoding::ValueTypeMarker for ScanEnd {
11562        type Borrowed<'a> = &'a Self;
11563        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11564            value
11565        }
11566    }
11567
11568    unsafe impl fidl::encoding::TypeMarker for ScanEnd {
11569        type Owned = Self;
11570
11571        #[inline(always)]
11572        fn inline_align(_context: fidl::encoding::Context) -> usize {
11573            8
11574        }
11575
11576        #[inline(always)]
11577        fn inline_size(_context: fidl::encoding::Context) -> usize {
11578            16
11579        }
11580    }
11581
11582    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanEnd, D> for &ScanEnd {
11583        #[inline]
11584        unsafe fn encode(
11585            self,
11586            encoder: &mut fidl::encoding::Encoder<'_, D>,
11587            offset: usize,
11588            _depth: fidl::encoding::Depth,
11589        ) -> fidl::Result<()> {
11590            encoder.debug_check_bounds::<ScanEnd>(offset);
11591            // Delegate to tuple encoding.
11592            fidl::encoding::Encode::<ScanEnd, D>::encode(
11593                (
11594                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
11595                    <ScanResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.code),
11596                ),
11597                encoder,
11598                offset,
11599                _depth,
11600            )
11601        }
11602    }
11603    unsafe impl<
11604        D: fidl::encoding::ResourceDialect,
11605        T0: fidl::encoding::Encode<u64, D>,
11606        T1: fidl::encoding::Encode<ScanResultCode, D>,
11607    > fidl::encoding::Encode<ScanEnd, D> for (T0, T1)
11608    {
11609        #[inline]
11610        unsafe fn encode(
11611            self,
11612            encoder: &mut fidl::encoding::Encoder<'_, D>,
11613            offset: usize,
11614            depth: fidl::encoding::Depth,
11615        ) -> fidl::Result<()> {
11616            encoder.debug_check_bounds::<ScanEnd>(offset);
11617            // Zero out padding regions. There's no need to apply masks
11618            // because the unmasked parts will be overwritten by fields.
11619            unsafe {
11620                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
11621                (ptr as *mut u64).write_unaligned(0);
11622            }
11623            // Write the fields.
11624            self.0.encode(encoder, offset + 0, depth)?;
11625            self.1.encode(encoder, offset + 8, depth)?;
11626            Ok(())
11627        }
11628    }
11629
11630    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanEnd {
11631        #[inline(always)]
11632        fn new_empty() -> Self {
11633            Self { txn_id: fidl::new_empty!(u64, D), code: fidl::new_empty!(ScanResultCode, D) }
11634        }
11635
11636        #[inline]
11637        unsafe fn decode(
11638            &mut self,
11639            decoder: &mut fidl::encoding::Decoder<'_, D>,
11640            offset: usize,
11641            _depth: fidl::encoding::Depth,
11642        ) -> fidl::Result<()> {
11643            decoder.debug_check_bounds::<Self>(offset);
11644            // Verify that padding bytes are zero.
11645            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
11646            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11647            let mask = 0xffffffff00000000u64;
11648            let maskedval = padval & mask;
11649            if maskedval != 0 {
11650                return Err(fidl::Error::NonZeroPadding {
11651                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
11652                });
11653            }
11654            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
11655            fidl::decode!(ScanResultCode, D, &mut self.code, decoder, offset + 8, _depth)?;
11656            Ok(())
11657        }
11658    }
11659
11660    impl fidl::encoding::ValueTypeMarker for ScanRequest {
11661        type Borrowed<'a> = &'a Self;
11662        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11663            value
11664        }
11665    }
11666
11667    unsafe impl fidl::encoding::TypeMarker for ScanRequest {
11668        type Owned = Self;
11669
11670        #[inline(always)]
11671        fn inline_align(_context: fidl::encoding::Context) -> usize {
11672            8
11673        }
11674
11675        #[inline(always)]
11676        fn inline_size(_context: fidl::encoding::Context) -> usize {
11677            64
11678        }
11679    }
11680
11681    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanRequest, D>
11682        for &ScanRequest
11683    {
11684        #[inline]
11685        unsafe fn encode(
11686            self,
11687            encoder: &mut fidl::encoding::Encoder<'_, D>,
11688            offset: usize,
11689            _depth: fidl::encoding::Depth,
11690        ) -> fidl::Result<()> {
11691            encoder.debug_check_bounds::<ScanRequest>(offset);
11692            // Delegate to tuple encoding.
11693            fidl::encoding::Encode::<ScanRequest, D>::encode(
11694                (
11695                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
11696                    <ScanTypes as fidl::encoding::ValueTypeMarker>::borrow(&self.scan_type),
11697                    <fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.channel_list),
11698                    <fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid_list),
11699                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.probe_delay),
11700                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.min_channel_time),
11701                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.max_channel_time),
11702                ),
11703                encoder, offset, _depth
11704            )
11705        }
11706    }
11707    unsafe impl<
11708        D: fidl::encoding::ResourceDialect,
11709        T0: fidl::encoding::Encode<u64, D>,
11710        T1: fidl::encoding::Encode<ScanTypes, D>,
11711        T2: fidl::encoding::Encode<
11712                fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>,
11713                D,
11714            >,
11715        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>,
11716        T4: fidl::encoding::Encode<u32, D>,
11717        T5: fidl::encoding::Encode<u32, D>,
11718        T6: fidl::encoding::Encode<u32, D>,
11719    > fidl::encoding::Encode<ScanRequest, D> for (T0, T1, T2, T3, T4, T5, T6)
11720    {
11721        #[inline]
11722        unsafe fn encode(
11723            self,
11724            encoder: &mut fidl::encoding::Encoder<'_, D>,
11725            offset: usize,
11726            depth: fidl::encoding::Depth,
11727        ) -> fidl::Result<()> {
11728            encoder.debug_check_bounds::<ScanRequest>(offset);
11729            // Zero out padding regions. There's no need to apply masks
11730            // because the unmasked parts will be overwritten by fields.
11731            unsafe {
11732                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
11733                (ptr as *mut u64).write_unaligned(0);
11734            }
11735            unsafe {
11736                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
11737                (ptr as *mut u64).write_unaligned(0);
11738            }
11739            // Write the fields.
11740            self.0.encode(encoder, offset + 0, depth)?;
11741            self.1.encode(encoder, offset + 8, depth)?;
11742            self.2.encode(encoder, offset + 16, depth)?;
11743            self.3.encode(encoder, offset + 32, depth)?;
11744            self.4.encode(encoder, offset + 48, depth)?;
11745            self.5.encode(encoder, offset + 52, depth)?;
11746            self.6.encode(encoder, offset + 56, depth)?;
11747            Ok(())
11748        }
11749    }
11750
11751    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanRequest {
11752        #[inline(always)]
11753        fn new_empty() -> Self {
11754            Self {
11755                txn_id: fidl::new_empty!(u64, D),
11756                scan_type: fidl::new_empty!(ScanTypes, D),
11757                channel_list: fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D),
11758                ssid_list: fidl::new_empty!(
11759                    fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
11760                    D
11761                ),
11762                probe_delay: fidl::new_empty!(u32, D),
11763                min_channel_time: fidl::new_empty!(u32, D),
11764                max_channel_time: fidl::new_empty!(u32, D),
11765            }
11766        }
11767
11768        #[inline]
11769        unsafe fn decode(
11770            &mut self,
11771            decoder: &mut fidl::encoding::Decoder<'_, D>,
11772            offset: usize,
11773            _depth: fidl::encoding::Depth,
11774        ) -> fidl::Result<()> {
11775            decoder.debug_check_bounds::<Self>(offset);
11776            // Verify that padding bytes are zero.
11777            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
11778            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11779            let mask = 0xffffffff00000000u64;
11780            let maskedval = padval & mask;
11781            if maskedval != 0 {
11782                return Err(fidl::Error::NonZeroPadding {
11783                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
11784                });
11785            }
11786            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
11787            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11788            let mask = 0xffffffff00000000u64;
11789            let maskedval = padval & mask;
11790            if maskedval != 0 {
11791                return Err(fidl::Error::NonZeroPadding {
11792                    padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
11793                });
11794            }
11795            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
11796            fidl::decode!(ScanTypes, D, &mut self.scan_type, decoder, offset + 8, _depth)?;
11797            fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D, &mut self.channel_list, decoder, offset + 16, _depth)?;
11798            fidl::decode!(
11799                fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
11800                D,
11801                &mut self.ssid_list,
11802                decoder,
11803                offset + 32,
11804                _depth
11805            )?;
11806            fidl::decode!(u32, D, &mut self.probe_delay, decoder, offset + 48, _depth)?;
11807            fidl::decode!(u32, D, &mut self.min_channel_time, decoder, offset + 52, _depth)?;
11808            fidl::decode!(u32, D, &mut self.max_channel_time, decoder, offset + 56, _depth)?;
11809            Ok(())
11810        }
11811    }
11812
11813    impl fidl::encoding::ValueTypeMarker for ScanResult {
11814        type Borrowed<'a> = &'a Self;
11815        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11816            value
11817        }
11818    }
11819
11820    unsafe impl fidl::encoding::TypeMarker for ScanResult {
11821        type Owned = Self;
11822
11823        #[inline(always)]
11824        fn inline_align(_context: fidl::encoding::Context) -> usize {
11825            8
11826        }
11827
11828        #[inline(always)]
11829        fn inline_size(_context: fidl::encoding::Context) -> usize {
11830            64
11831        }
11832    }
11833
11834    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanResult, D>
11835        for &ScanResult
11836    {
11837        #[inline]
11838        unsafe fn encode(
11839            self,
11840            encoder: &mut fidl::encoding::Encoder<'_, D>,
11841            offset: usize,
11842            _depth: fidl::encoding::Depth,
11843        ) -> fidl::Result<()> {
11844            encoder.debug_check_bounds::<ScanResult>(offset);
11845            // Delegate to tuple encoding.
11846            fidl::encoding::Encode::<ScanResult, D>::encode(
11847                (
11848                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
11849                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timestamp_nanos),
11850                    <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.bss),
11851                ),
11852                encoder, offset, _depth
11853            )
11854        }
11855    }
11856    unsafe impl<
11857        D: fidl::encoding::ResourceDialect,
11858        T0: fidl::encoding::Encode<u64, D>,
11859        T1: fidl::encoding::Encode<i64, D>,
11860        T2: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>,
11861    > fidl::encoding::Encode<ScanResult, D> for (T0, T1, T2)
11862    {
11863        #[inline]
11864        unsafe fn encode(
11865            self,
11866            encoder: &mut fidl::encoding::Encoder<'_, D>,
11867            offset: usize,
11868            depth: fidl::encoding::Depth,
11869        ) -> fidl::Result<()> {
11870            encoder.debug_check_bounds::<ScanResult>(offset);
11871            // Zero out padding regions. There's no need to apply masks
11872            // because the unmasked parts will be overwritten by fields.
11873            // Write the fields.
11874            self.0.encode(encoder, offset + 0, depth)?;
11875            self.1.encode(encoder, offset + 8, depth)?;
11876            self.2.encode(encoder, offset + 16, depth)?;
11877            Ok(())
11878        }
11879    }
11880
11881    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanResult {
11882        #[inline(always)]
11883        fn new_empty() -> Self {
11884            Self {
11885                txn_id: fidl::new_empty!(u64, D),
11886                timestamp_nanos: fidl::new_empty!(i64, D),
11887                bss: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D),
11888            }
11889        }
11890
11891        #[inline]
11892        unsafe fn decode(
11893            &mut self,
11894            decoder: &mut fidl::encoding::Decoder<'_, D>,
11895            offset: usize,
11896            _depth: fidl::encoding::Depth,
11897        ) -> fidl::Result<()> {
11898            decoder.debug_check_bounds::<Self>(offset);
11899            // Verify that padding bytes are zero.
11900            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
11901            fidl::decode!(i64, D, &mut self.timestamp_nanos, decoder, offset + 8, _depth)?;
11902            fidl::decode!(
11903                fidl_fuchsia_wlan_ieee80211_common::BssDescription,
11904                D,
11905                &mut self.bss,
11906                decoder,
11907                offset + 16,
11908                _depth
11909            )?;
11910            Ok(())
11911        }
11912    }
11913
11914    impl fidl::encoding::ValueTypeMarker for SetControlledPortRequest {
11915        type Borrowed<'a> = &'a Self;
11916        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11917            value
11918        }
11919    }
11920
11921    unsafe impl fidl::encoding::TypeMarker for SetControlledPortRequest {
11922        type Owned = Self;
11923
11924        #[inline(always)]
11925        fn inline_align(_context: fidl::encoding::Context) -> usize {
11926            4
11927        }
11928
11929        #[inline(always)]
11930        fn inline_size(_context: fidl::encoding::Context) -> usize {
11931            12
11932        }
11933    }
11934
11935    unsafe impl<D: fidl::encoding::ResourceDialect>
11936        fidl::encoding::Encode<SetControlledPortRequest, D> for &SetControlledPortRequest
11937    {
11938        #[inline]
11939        unsafe fn encode(
11940            self,
11941            encoder: &mut fidl::encoding::Encoder<'_, D>,
11942            offset: usize,
11943            _depth: fidl::encoding::Depth,
11944        ) -> fidl::Result<()> {
11945            encoder.debug_check_bounds::<SetControlledPortRequest>(offset);
11946            // Delegate to tuple encoding.
11947            fidl::encoding::Encode::<SetControlledPortRequest, D>::encode(
11948                (
11949                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
11950                        &self.peer_sta_address,
11951                    ),
11952                    <ControlledPortState as fidl::encoding::ValueTypeMarker>::borrow(&self.state),
11953                ),
11954                encoder,
11955                offset,
11956                _depth,
11957            )
11958        }
11959    }
11960    unsafe impl<
11961        D: fidl::encoding::ResourceDialect,
11962        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11963        T1: fidl::encoding::Encode<ControlledPortState, D>,
11964    > fidl::encoding::Encode<SetControlledPortRequest, D> for (T0, T1)
11965    {
11966        #[inline]
11967        unsafe fn encode(
11968            self,
11969            encoder: &mut fidl::encoding::Encoder<'_, D>,
11970            offset: usize,
11971            depth: fidl::encoding::Depth,
11972        ) -> fidl::Result<()> {
11973            encoder.debug_check_bounds::<SetControlledPortRequest>(offset);
11974            // Zero out padding regions. There's no need to apply masks
11975            // because the unmasked parts will be overwritten by fields.
11976            unsafe {
11977                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
11978                (ptr as *mut u32).write_unaligned(0);
11979            }
11980            // Write the fields.
11981            self.0.encode(encoder, offset + 0, depth)?;
11982            self.1.encode(encoder, offset + 8, depth)?;
11983            Ok(())
11984        }
11985    }
11986
11987    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11988        for SetControlledPortRequest
11989    {
11990        #[inline(always)]
11991        fn new_empty() -> Self {
11992            Self {
11993                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11994                state: fidl::new_empty!(ControlledPortState, D),
11995            }
11996        }
11997
11998        #[inline]
11999        unsafe fn decode(
12000            &mut self,
12001            decoder: &mut fidl::encoding::Decoder<'_, D>,
12002            offset: usize,
12003            _depth: fidl::encoding::Depth,
12004        ) -> fidl::Result<()> {
12005            decoder.debug_check_bounds::<Self>(offset);
12006            // Verify that padding bytes are zero.
12007            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
12008            let padval = unsafe { (ptr as *const u32).read_unaligned() };
12009            let mask = 0xffff0000u32;
12010            let maskedval = padval & mask;
12011            if maskedval != 0 {
12012                return Err(fidl::Error::NonZeroPadding {
12013                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
12014                });
12015            }
12016            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
12017            fidl::decode!(ControlledPortState, D, &mut self.state, decoder, offset + 8, _depth)?;
12018            Ok(())
12019        }
12020    }
12021
12022    impl fidl::encoding::ValueTypeMarker for SetKeyDescriptor {
12023        type Borrowed<'a> = &'a Self;
12024        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12025            value
12026        }
12027    }
12028
12029    unsafe impl fidl::encoding::TypeMarker for SetKeyDescriptor {
12030        type Owned = Self;
12031
12032        #[inline(always)]
12033        fn inline_align(_context: fidl::encoding::Context) -> usize {
12034            8
12035        }
12036
12037        #[inline(always)]
12038        fn inline_size(_context: fidl::encoding::Context) -> usize {
12039            48
12040        }
12041    }
12042
12043    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeyDescriptor, D>
12044        for &SetKeyDescriptor
12045    {
12046        #[inline]
12047        unsafe fn encode(
12048            self,
12049            encoder: &mut fidl::encoding::Encoder<'_, D>,
12050            offset: usize,
12051            _depth: fidl::encoding::Depth,
12052        ) -> fidl::Result<()> {
12053            encoder.debug_check_bounds::<SetKeyDescriptor>(offset);
12054            // Delegate to tuple encoding.
12055            fidl::encoding::Encode::<SetKeyDescriptor, D>::encode(
12056                (
12057                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
12058                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.key_id),
12059                    <KeyType as fidl::encoding::ValueTypeMarker>::borrow(&self.key_type),
12060                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.address),
12061                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.rsc),
12062                    <fidl::encoding::Array<u8, 3> as fidl::encoding::ValueTypeMarker>::borrow(&self.cipher_suite_oui),
12063                    <fidl_fuchsia_wlan_ieee80211_common::CipherSuiteType as fidl::encoding::ValueTypeMarker>::borrow(&self.cipher_suite_type),
12064                ),
12065                encoder, offset, _depth
12066            )
12067        }
12068    }
12069    unsafe impl<
12070        D: fidl::encoding::ResourceDialect,
12071        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
12072        T1: fidl::encoding::Encode<u16, D>,
12073        T2: fidl::encoding::Encode<KeyType, D>,
12074        T3: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
12075        T4: fidl::encoding::Encode<u64, D>,
12076        T5: fidl::encoding::Encode<fidl::encoding::Array<u8, 3>, D>,
12077        T6: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::CipherSuiteType, D>,
12078    > fidl::encoding::Encode<SetKeyDescriptor, D> for (T0, T1, T2, T3, T4, T5, T6)
12079    {
12080        #[inline]
12081        unsafe fn encode(
12082            self,
12083            encoder: &mut fidl::encoding::Encoder<'_, D>,
12084            offset: usize,
12085            depth: fidl::encoding::Depth,
12086        ) -> fidl::Result<()> {
12087            encoder.debug_check_bounds::<SetKeyDescriptor>(offset);
12088            // Zero out padding regions. There's no need to apply masks
12089            // because the unmasked parts will be overwritten by fields.
12090            unsafe {
12091                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
12092                (ptr as *mut u64).write_unaligned(0);
12093            }
12094            unsafe {
12095                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
12096                (ptr as *mut u64).write_unaligned(0);
12097            }
12098            unsafe {
12099                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(40);
12100                (ptr as *mut u64).write_unaligned(0);
12101            }
12102            // Write the fields.
12103            self.0.encode(encoder, offset + 0, depth)?;
12104            self.1.encode(encoder, offset + 16, depth)?;
12105            self.2.encode(encoder, offset + 20, depth)?;
12106            self.3.encode(encoder, offset + 24, depth)?;
12107            self.4.encode(encoder, offset + 32, depth)?;
12108            self.5.encode(encoder, offset + 40, depth)?;
12109            self.6.encode(encoder, offset + 44, depth)?;
12110            Ok(())
12111        }
12112    }
12113
12114    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeyDescriptor {
12115        #[inline(always)]
12116        fn new_empty() -> Self {
12117            Self {
12118                key: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
12119                key_id: fidl::new_empty!(u16, D),
12120                key_type: fidl::new_empty!(KeyType, D),
12121                address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
12122                rsc: fidl::new_empty!(u64, D),
12123                cipher_suite_oui: fidl::new_empty!(fidl::encoding::Array<u8, 3>, D),
12124                cipher_suite_type: fidl::new_empty!(
12125                    fidl_fuchsia_wlan_ieee80211_common::CipherSuiteType,
12126                    D
12127                ),
12128            }
12129        }
12130
12131        #[inline]
12132        unsafe fn decode(
12133            &mut self,
12134            decoder: &mut fidl::encoding::Decoder<'_, D>,
12135            offset: usize,
12136            _depth: fidl::encoding::Depth,
12137        ) -> fidl::Result<()> {
12138            decoder.debug_check_bounds::<Self>(offset);
12139            // Verify that padding bytes are zero.
12140            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
12141            let padval = unsafe { (ptr as *const u64).read_unaligned() };
12142            let mask = 0xffff0000u64;
12143            let maskedval = padval & mask;
12144            if maskedval != 0 {
12145                return Err(fidl::Error::NonZeroPadding {
12146                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
12147                });
12148            }
12149            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
12150            let padval = unsafe { (ptr as *const u64).read_unaligned() };
12151            let mask = 0xffff000000000000u64;
12152            let maskedval = padval & mask;
12153            if maskedval != 0 {
12154                return Err(fidl::Error::NonZeroPadding {
12155                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
12156                });
12157            }
12158            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(40) };
12159            let padval = unsafe { (ptr as *const u64).read_unaligned() };
12160            let mask = 0xff000000u64;
12161            let maskedval = padval & mask;
12162            if maskedval != 0 {
12163                return Err(fidl::Error::NonZeroPadding {
12164                    padding_start: offset + 40 + ((mask as u64).trailing_zeros() / 8) as usize,
12165                });
12166            }
12167            fidl::decode!(
12168                fidl::encoding::UnboundedVector<u8>,
12169                D,
12170                &mut self.key,
12171                decoder,
12172                offset + 0,
12173                _depth
12174            )?;
12175            fidl::decode!(u16, D, &mut self.key_id, decoder, offset + 16, _depth)?;
12176            fidl::decode!(KeyType, D, &mut self.key_type, decoder, offset + 20, _depth)?;
12177            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.address, decoder, offset + 24, _depth)?;
12178            fidl::decode!(u64, D, &mut self.rsc, decoder, offset + 32, _depth)?;
12179            fidl::decode!(fidl::encoding::Array<u8, 3>, D, &mut self.cipher_suite_oui, decoder, offset + 40, _depth)?;
12180            fidl::decode!(
12181                fidl_fuchsia_wlan_ieee80211_common::CipherSuiteType,
12182                D,
12183                &mut self.cipher_suite_type,
12184                decoder,
12185                offset + 44,
12186                _depth
12187            )?;
12188            Ok(())
12189        }
12190    }
12191
12192    impl fidl::encoding::ValueTypeMarker for SetKeyResult {
12193        type Borrowed<'a> = &'a Self;
12194        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12195            value
12196        }
12197    }
12198
12199    unsafe impl fidl::encoding::TypeMarker for SetKeyResult {
12200        type Owned = Self;
12201
12202        #[inline(always)]
12203        fn inline_align(_context: fidl::encoding::Context) -> usize {
12204            4
12205        }
12206
12207        #[inline(always)]
12208        fn inline_size(_context: fidl::encoding::Context) -> usize {
12209            8
12210        }
12211    }
12212
12213    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeyResult, D>
12214        for &SetKeyResult
12215    {
12216        #[inline]
12217        unsafe fn encode(
12218            self,
12219            encoder: &mut fidl::encoding::Encoder<'_, D>,
12220            offset: usize,
12221            _depth: fidl::encoding::Depth,
12222        ) -> fidl::Result<()> {
12223            encoder.debug_check_bounds::<SetKeyResult>(offset);
12224            unsafe {
12225                // Copy the object into the buffer.
12226                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
12227                (buf_ptr as *mut SetKeyResult)
12228                    .write_unaligned((self as *const SetKeyResult).read());
12229                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
12230                // done second because the memcpy will write garbage to these bytes.
12231                let padding_ptr = buf_ptr.offset(0) as *mut u32;
12232                let padding_mask = 0xffff0000u32;
12233                padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
12234            }
12235            Ok(())
12236        }
12237    }
12238    unsafe impl<
12239        D: fidl::encoding::ResourceDialect,
12240        T0: fidl::encoding::Encode<u16, D>,
12241        T1: fidl::encoding::Encode<i32, D>,
12242    > fidl::encoding::Encode<SetKeyResult, D> for (T0, T1)
12243    {
12244        #[inline]
12245        unsafe fn encode(
12246            self,
12247            encoder: &mut fidl::encoding::Encoder<'_, D>,
12248            offset: usize,
12249            depth: fidl::encoding::Depth,
12250        ) -> fidl::Result<()> {
12251            encoder.debug_check_bounds::<SetKeyResult>(offset);
12252            // Zero out padding regions. There's no need to apply masks
12253            // because the unmasked parts will be overwritten by fields.
12254            unsafe {
12255                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
12256                (ptr as *mut u32).write_unaligned(0);
12257            }
12258            // Write the fields.
12259            self.0.encode(encoder, offset + 0, depth)?;
12260            self.1.encode(encoder, offset + 4, depth)?;
12261            Ok(())
12262        }
12263    }
12264
12265    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeyResult {
12266        #[inline(always)]
12267        fn new_empty() -> Self {
12268            Self { key_id: fidl::new_empty!(u16, D), status: fidl::new_empty!(i32, D) }
12269        }
12270
12271        #[inline]
12272        unsafe fn decode(
12273            &mut self,
12274            decoder: &mut fidl::encoding::Decoder<'_, D>,
12275            offset: usize,
12276            _depth: fidl::encoding::Depth,
12277        ) -> fidl::Result<()> {
12278            decoder.debug_check_bounds::<Self>(offset);
12279            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
12280            // Verify that padding bytes are zero.
12281            let ptr = unsafe { buf_ptr.offset(0) };
12282            let padval = unsafe { (ptr as *const u32).read_unaligned() };
12283            let mask = 0xffff0000u32;
12284            let maskedval = padval & mask;
12285            if maskedval != 0 {
12286                return Err(fidl::Error::NonZeroPadding {
12287                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
12288                });
12289            }
12290            // Copy from the buffer into the object.
12291            unsafe {
12292                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
12293            }
12294            Ok(())
12295        }
12296    }
12297
12298    impl fidl::encoding::ValueTypeMarker for SetKeysConfirm {
12299        type Borrowed<'a> = &'a Self;
12300        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12301            value
12302        }
12303    }
12304
12305    unsafe impl fidl::encoding::TypeMarker for SetKeysConfirm {
12306        type Owned = Self;
12307
12308        #[inline(always)]
12309        fn inline_align(_context: fidl::encoding::Context) -> usize {
12310            8
12311        }
12312
12313        #[inline(always)]
12314        fn inline_size(_context: fidl::encoding::Context) -> usize {
12315            16
12316        }
12317    }
12318
12319    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeysConfirm, D>
12320        for &SetKeysConfirm
12321    {
12322        #[inline]
12323        unsafe fn encode(
12324            self,
12325            encoder: &mut fidl::encoding::Encoder<'_, D>,
12326            offset: usize,
12327            _depth: fidl::encoding::Depth,
12328        ) -> fidl::Result<()> {
12329            encoder.debug_check_bounds::<SetKeysConfirm>(offset);
12330            // Delegate to tuple encoding.
12331            fidl::encoding::Encode::<SetKeysConfirm, D>::encode(
12332                (
12333                    <fidl::encoding::UnboundedVector<SetKeyResult> as fidl::encoding::ValueTypeMarker>::borrow(&self.results),
12334                ),
12335                encoder, offset, _depth
12336            )
12337        }
12338    }
12339    unsafe impl<
12340        D: fidl::encoding::ResourceDialect,
12341        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<SetKeyResult>, D>,
12342    > fidl::encoding::Encode<SetKeysConfirm, D> for (T0,)
12343    {
12344        #[inline]
12345        unsafe fn encode(
12346            self,
12347            encoder: &mut fidl::encoding::Encoder<'_, D>,
12348            offset: usize,
12349            depth: fidl::encoding::Depth,
12350        ) -> fidl::Result<()> {
12351            encoder.debug_check_bounds::<SetKeysConfirm>(offset);
12352            // Zero out padding regions. There's no need to apply masks
12353            // because the unmasked parts will be overwritten by fields.
12354            // Write the fields.
12355            self.0.encode(encoder, offset + 0, depth)?;
12356            Ok(())
12357        }
12358    }
12359
12360    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeysConfirm {
12361        #[inline(always)]
12362        fn new_empty() -> Self {
12363            Self { results: fidl::new_empty!(fidl::encoding::UnboundedVector<SetKeyResult>, D) }
12364        }
12365
12366        #[inline]
12367        unsafe fn decode(
12368            &mut self,
12369            decoder: &mut fidl::encoding::Decoder<'_, D>,
12370            offset: usize,
12371            _depth: fidl::encoding::Depth,
12372        ) -> fidl::Result<()> {
12373            decoder.debug_check_bounds::<Self>(offset);
12374            // Verify that padding bytes are zero.
12375            fidl::decode!(
12376                fidl::encoding::UnboundedVector<SetKeyResult>,
12377                D,
12378                &mut self.results,
12379                decoder,
12380                offset + 0,
12381                _depth
12382            )?;
12383            Ok(())
12384        }
12385    }
12386
12387    impl fidl::encoding::ValueTypeMarker for SetKeysRequest {
12388        type Borrowed<'a> = &'a Self;
12389        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12390            value
12391        }
12392    }
12393
12394    unsafe impl fidl::encoding::TypeMarker for SetKeysRequest {
12395        type Owned = Self;
12396
12397        #[inline(always)]
12398        fn inline_align(_context: fidl::encoding::Context) -> usize {
12399            8
12400        }
12401
12402        #[inline(always)]
12403        fn inline_size(_context: fidl::encoding::Context) -> usize {
12404            16
12405        }
12406    }
12407
12408    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeysRequest, D>
12409        for &SetKeysRequest
12410    {
12411        #[inline]
12412        unsafe fn encode(
12413            self,
12414            encoder: &mut fidl::encoding::Encoder<'_, D>,
12415            offset: usize,
12416            _depth: fidl::encoding::Depth,
12417        ) -> fidl::Result<()> {
12418            encoder.debug_check_bounds::<SetKeysRequest>(offset);
12419            // Delegate to tuple encoding.
12420            fidl::encoding::Encode::<SetKeysRequest, D>::encode(
12421                (
12422                    <fidl::encoding::UnboundedVector<SetKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.keylist),
12423                ),
12424                encoder, offset, _depth
12425            )
12426        }
12427    }
12428    unsafe impl<
12429        D: fidl::encoding::ResourceDialect,
12430        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<SetKeyDescriptor>, D>,
12431    > fidl::encoding::Encode<SetKeysRequest, D> for (T0,)
12432    {
12433        #[inline]
12434        unsafe fn encode(
12435            self,
12436            encoder: &mut fidl::encoding::Encoder<'_, D>,
12437            offset: usize,
12438            depth: fidl::encoding::Depth,
12439        ) -> fidl::Result<()> {
12440            encoder.debug_check_bounds::<SetKeysRequest>(offset);
12441            // Zero out padding regions. There's no need to apply masks
12442            // because the unmasked parts will be overwritten by fields.
12443            // Write the fields.
12444            self.0.encode(encoder, offset + 0, depth)?;
12445            Ok(())
12446        }
12447    }
12448
12449    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeysRequest {
12450        #[inline(always)]
12451        fn new_empty() -> Self {
12452            Self { keylist: fidl::new_empty!(fidl::encoding::UnboundedVector<SetKeyDescriptor>, D) }
12453        }
12454
12455        #[inline]
12456        unsafe fn decode(
12457            &mut self,
12458            decoder: &mut fidl::encoding::Decoder<'_, D>,
12459            offset: usize,
12460            _depth: fidl::encoding::Depth,
12461        ) -> fidl::Result<()> {
12462            decoder.debug_check_bounds::<Self>(offset);
12463            // Verify that padding bytes are zero.
12464            fidl::decode!(
12465                fidl::encoding::UnboundedVector<SetKeyDescriptor>,
12466                D,
12467                &mut self.keylist,
12468                decoder,
12469                offset + 0,
12470                _depth
12471            )?;
12472            Ok(())
12473        }
12474    }
12475
12476    impl fidl::encoding::ValueTypeMarker for StartCaptureFramesRequest {
12477        type Borrowed<'a> = &'a Self;
12478        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12479            value
12480        }
12481    }
12482
12483    unsafe impl fidl::encoding::TypeMarker for StartCaptureFramesRequest {
12484        type Owned = Self;
12485
12486        #[inline(always)]
12487        fn inline_align(_context: fidl::encoding::Context) -> usize {
12488            4
12489        }
12490
12491        #[inline(always)]
12492        fn inline_size(_context: fidl::encoding::Context) -> usize {
12493            4
12494        }
12495    }
12496
12497    unsafe impl<D: fidl::encoding::ResourceDialect>
12498        fidl::encoding::Encode<StartCaptureFramesRequest, D> for &StartCaptureFramesRequest
12499    {
12500        #[inline]
12501        unsafe fn encode(
12502            self,
12503            encoder: &mut fidl::encoding::Encoder<'_, D>,
12504            offset: usize,
12505            _depth: fidl::encoding::Depth,
12506        ) -> fidl::Result<()> {
12507            encoder.debug_check_bounds::<StartCaptureFramesRequest>(offset);
12508            // Delegate to tuple encoding.
12509            fidl::encoding::Encode::<StartCaptureFramesRequest, D>::encode(
12510                (<MgmtFrameCaptureFlags as fidl::encoding::ValueTypeMarker>::borrow(
12511                    &self.mgmt_frame_flags,
12512                ),),
12513                encoder,
12514                offset,
12515                _depth,
12516            )
12517        }
12518    }
12519    unsafe impl<
12520        D: fidl::encoding::ResourceDialect,
12521        T0: fidl::encoding::Encode<MgmtFrameCaptureFlags, D>,
12522    > fidl::encoding::Encode<StartCaptureFramesRequest, D> for (T0,)
12523    {
12524        #[inline]
12525        unsafe fn encode(
12526            self,
12527            encoder: &mut fidl::encoding::Encoder<'_, D>,
12528            offset: usize,
12529            depth: fidl::encoding::Depth,
12530        ) -> fidl::Result<()> {
12531            encoder.debug_check_bounds::<StartCaptureFramesRequest>(offset);
12532            // Zero out padding regions. There's no need to apply masks
12533            // because the unmasked parts will be overwritten by fields.
12534            // Write the fields.
12535            self.0.encode(encoder, offset + 0, depth)?;
12536            Ok(())
12537        }
12538    }
12539
12540    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12541        for StartCaptureFramesRequest
12542    {
12543        #[inline(always)]
12544        fn new_empty() -> Self {
12545            Self { mgmt_frame_flags: fidl::new_empty!(MgmtFrameCaptureFlags, D) }
12546        }
12547
12548        #[inline]
12549        unsafe fn decode(
12550            &mut self,
12551            decoder: &mut fidl::encoding::Decoder<'_, D>,
12552            offset: usize,
12553            _depth: fidl::encoding::Depth,
12554        ) -> fidl::Result<()> {
12555            decoder.debug_check_bounds::<Self>(offset);
12556            // Verify that padding bytes are zero.
12557            fidl::decode!(
12558                MgmtFrameCaptureFlags,
12559                D,
12560                &mut self.mgmt_frame_flags,
12561                decoder,
12562                offset + 0,
12563                _depth
12564            )?;
12565            Ok(())
12566        }
12567    }
12568
12569    impl fidl::encoding::ValueTypeMarker for StartCaptureFramesResponse {
12570        type Borrowed<'a> = &'a Self;
12571        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12572            value
12573        }
12574    }
12575
12576    unsafe impl fidl::encoding::TypeMarker for StartCaptureFramesResponse {
12577        type Owned = Self;
12578
12579        #[inline(always)]
12580        fn inline_align(_context: fidl::encoding::Context) -> usize {
12581            4
12582        }
12583
12584        #[inline(always)]
12585        fn inline_size(_context: fidl::encoding::Context) -> usize {
12586            8
12587        }
12588    }
12589
12590    unsafe impl<D: fidl::encoding::ResourceDialect>
12591        fidl::encoding::Encode<StartCaptureFramesResponse, D> for &StartCaptureFramesResponse
12592    {
12593        #[inline]
12594        unsafe fn encode(
12595            self,
12596            encoder: &mut fidl::encoding::Encoder<'_, D>,
12597            offset: usize,
12598            _depth: fidl::encoding::Depth,
12599        ) -> fidl::Result<()> {
12600            encoder.debug_check_bounds::<StartCaptureFramesResponse>(offset);
12601            // Delegate to tuple encoding.
12602            fidl::encoding::Encode::<StartCaptureFramesResponse, D>::encode(
12603                (
12604                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
12605                    <MgmtFrameCaptureFlags as fidl::encoding::ValueTypeMarker>::borrow(
12606                        &self.supported_mgmt_frames,
12607                    ),
12608                ),
12609                encoder,
12610                offset,
12611                _depth,
12612            )
12613        }
12614    }
12615    unsafe impl<
12616        D: fidl::encoding::ResourceDialect,
12617        T0: fidl::encoding::Encode<i32, D>,
12618        T1: fidl::encoding::Encode<MgmtFrameCaptureFlags, D>,
12619    > fidl::encoding::Encode<StartCaptureFramesResponse, D> for (T0, T1)
12620    {
12621        #[inline]
12622        unsafe fn encode(
12623            self,
12624            encoder: &mut fidl::encoding::Encoder<'_, D>,
12625            offset: usize,
12626            depth: fidl::encoding::Depth,
12627        ) -> fidl::Result<()> {
12628            encoder.debug_check_bounds::<StartCaptureFramesResponse>(offset);
12629            // Zero out padding regions. There's no need to apply masks
12630            // because the unmasked parts will be overwritten by fields.
12631            // Write the fields.
12632            self.0.encode(encoder, offset + 0, depth)?;
12633            self.1.encode(encoder, offset + 4, depth)?;
12634            Ok(())
12635        }
12636    }
12637
12638    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12639        for StartCaptureFramesResponse
12640    {
12641        #[inline(always)]
12642        fn new_empty() -> Self {
12643            Self {
12644                status: fidl::new_empty!(i32, D),
12645                supported_mgmt_frames: fidl::new_empty!(MgmtFrameCaptureFlags, D),
12646            }
12647        }
12648
12649        #[inline]
12650        unsafe fn decode(
12651            &mut self,
12652            decoder: &mut fidl::encoding::Decoder<'_, D>,
12653            offset: usize,
12654            _depth: fidl::encoding::Depth,
12655        ) -> fidl::Result<()> {
12656            decoder.debug_check_bounds::<Self>(offset);
12657            // Verify that padding bytes are zero.
12658            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
12659            fidl::decode!(
12660                MgmtFrameCaptureFlags,
12661                D,
12662                &mut self.supported_mgmt_frames,
12663                decoder,
12664                offset + 4,
12665                _depth
12666            )?;
12667            Ok(())
12668        }
12669    }
12670
12671    impl fidl::encoding::ValueTypeMarker for StartConfirm {
12672        type Borrowed<'a> = &'a Self;
12673        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12674            value
12675        }
12676    }
12677
12678    unsafe impl fidl::encoding::TypeMarker for StartConfirm {
12679        type Owned = Self;
12680
12681        #[inline(always)]
12682        fn inline_align(_context: fidl::encoding::Context) -> usize {
12683            4
12684        }
12685
12686        #[inline(always)]
12687        fn inline_size(_context: fidl::encoding::Context) -> usize {
12688            4
12689        }
12690    }
12691
12692    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartConfirm, D>
12693        for &StartConfirm
12694    {
12695        #[inline]
12696        unsafe fn encode(
12697            self,
12698            encoder: &mut fidl::encoding::Encoder<'_, D>,
12699            offset: usize,
12700            _depth: fidl::encoding::Depth,
12701        ) -> fidl::Result<()> {
12702            encoder.debug_check_bounds::<StartConfirm>(offset);
12703            // Delegate to tuple encoding.
12704            fidl::encoding::Encode::<StartConfirm, D>::encode(
12705                (<StartResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),),
12706                encoder,
12707                offset,
12708                _depth,
12709            )
12710        }
12711    }
12712    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartResultCode, D>>
12713        fidl::encoding::Encode<StartConfirm, D> for (T0,)
12714    {
12715        #[inline]
12716        unsafe fn encode(
12717            self,
12718            encoder: &mut fidl::encoding::Encoder<'_, D>,
12719            offset: usize,
12720            depth: fidl::encoding::Depth,
12721        ) -> fidl::Result<()> {
12722            encoder.debug_check_bounds::<StartConfirm>(offset);
12723            // Zero out padding regions. There's no need to apply masks
12724            // because the unmasked parts will be overwritten by fields.
12725            // Write the fields.
12726            self.0.encode(encoder, offset + 0, depth)?;
12727            Ok(())
12728        }
12729    }
12730
12731    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartConfirm {
12732        #[inline(always)]
12733        fn new_empty() -> Self {
12734            Self { result_code: fidl::new_empty!(StartResultCode, D) }
12735        }
12736
12737        #[inline]
12738        unsafe fn decode(
12739            &mut self,
12740            decoder: &mut fidl::encoding::Decoder<'_, D>,
12741            offset: usize,
12742            _depth: fidl::encoding::Depth,
12743        ) -> fidl::Result<()> {
12744            decoder.debug_check_bounds::<Self>(offset);
12745            // Verify that padding bytes are zero.
12746            fidl::decode!(StartResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
12747            Ok(())
12748        }
12749    }
12750
12751    impl fidl::encoding::ValueTypeMarker for StartRequest {
12752        type Borrowed<'a> = &'a Self;
12753        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12754            value
12755        }
12756    }
12757
12758    unsafe impl fidl::encoding::TypeMarker for StartRequest {
12759        type Owned = Self;
12760
12761        #[inline(always)]
12762        fn inline_align(_context: fidl::encoding::Context) -> usize {
12763            8
12764        }
12765
12766        #[inline(always)]
12767        fn inline_size(_context: fidl::encoding::Context) -> usize {
12768            96
12769        }
12770    }
12771
12772    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartRequest, D>
12773        for &StartRequest
12774    {
12775        #[inline]
12776        unsafe fn encode(
12777            self,
12778            encoder: &mut fidl::encoding::Encoder<'_, D>,
12779            offset: usize,
12780            _depth: fidl::encoding::Depth,
12781        ) -> fidl::Result<()> {
12782            encoder.debug_check_bounds::<StartRequest>(offset);
12783            // Delegate to tuple encoding.
12784            fidl::encoding::Encode::<StartRequest, D>::encode(
12785                (
12786                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid),
12787                    <fidl_fuchsia_wlan_ieee80211_common::BssType as fidl::encoding::ValueTypeMarker>::borrow(&self.bss_type),
12788                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.beacon_period),
12789                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.dtim_period),
12790                    <fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::ValueTypeMarker>::borrow(&self.primary),
12791                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
12792                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
12793                    <Country as fidl::encoding::ValueTypeMarker>::borrow(&self.country),
12794                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.mesh_id),
12795                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>> as fidl::encoding::ValueTypeMarker>::borrow(&self.rsne),
12796                    <fidl_fuchsia_wlan_ieee80211_common::WlanPhyType as fidl::encoding::ValueTypeMarker>::borrow(&self.phy),
12797                    <fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth as fidl::encoding::ValueTypeMarker>::borrow(&self.bandwidth),
12798                ),
12799                encoder, offset, _depth
12800            )
12801        }
12802    }
12803    unsafe impl<
12804        D: fidl::encoding::ResourceDialect,
12805        T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
12806        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::BssType, D>,
12807        T2: fidl::encoding::Encode<u16, D>,
12808        T3: fidl::encoding::Encode<u8, D>,
12809        T4: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D>,
12810        T5: fidl::encoding::Encode<u16, D>,
12811        T6: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
12812        T7: fidl::encoding::Encode<Country, D>,
12813        T8: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
12814        T9: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>, D>,
12815        T10: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::WlanPhyType, D>,
12816        T11: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth, D>,
12817    > fidl::encoding::Encode<StartRequest, D>
12818        for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
12819    {
12820        #[inline]
12821        unsafe fn encode(
12822            self,
12823            encoder: &mut fidl::encoding::Encoder<'_, D>,
12824            offset: usize,
12825            depth: fidl::encoding::Depth,
12826        ) -> fidl::Result<()> {
12827            encoder.debug_check_bounds::<StartRequest>(offset);
12828            // Zero out padding regions. There's no need to apply masks
12829            // because the unmasked parts will be overwritten by fields.
12830            unsafe {
12831                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
12832                (ptr as *mut u64).write_unaligned(0);
12833            }
12834            unsafe {
12835                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(48);
12836                (ptr as *mut u64).write_unaligned(0);
12837            }
12838            // Write the fields.
12839            self.0.encode(encoder, offset + 0, depth)?;
12840            self.1.encode(encoder, offset + 16, depth)?;
12841            self.2.encode(encoder, offset + 20, depth)?;
12842            self.3.encode(encoder, offset + 22, depth)?;
12843            self.4.encode(encoder, offset + 23, depth)?;
12844            self.5.encode(encoder, offset + 26, depth)?;
12845            self.6.encode(encoder, offset + 32, depth)?;
12846            self.7.encode(encoder, offset + 48, depth)?;
12847            self.8.encode(encoder, offset + 56, depth)?;
12848            self.9.encode(encoder, offset + 72, depth)?;
12849            self.10.encode(encoder, offset + 88, depth)?;
12850            self.11.encode(encoder, offset + 92, depth)?;
12851            Ok(())
12852        }
12853    }
12854
12855    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartRequest {
12856        #[inline(always)]
12857        fn new_empty() -> Self {
12858            Self {
12859                ssid: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
12860                bss_type: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssType, D),
12861                beacon_period: fidl::new_empty!(u16, D),
12862                dtim_period: fidl::new_empty!(u8, D),
12863                primary: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D),
12864                capability_info: fidl::new_empty!(u16, D),
12865                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
12866                country: fidl::new_empty!(Country, D),
12867                mesh_id: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
12868                rsne: fidl::new_empty!(
12869                    fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
12870                    D
12871                ),
12872                phy: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::WlanPhyType, D),
12873                bandwidth: fidl::new_empty!(
12874                    fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth,
12875                    D
12876                ),
12877            }
12878        }
12879
12880        #[inline]
12881        unsafe fn decode(
12882            &mut self,
12883            decoder: &mut fidl::encoding::Decoder<'_, D>,
12884            offset: usize,
12885            _depth: fidl::encoding::Depth,
12886        ) -> fidl::Result<()> {
12887            decoder.debug_check_bounds::<Self>(offset);
12888            // Verify that padding bytes are zero.
12889            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
12890            let padval = unsafe { (ptr as *const u64).read_unaligned() };
12891            let mask = 0xffffffff0000ff00u64;
12892            let maskedval = padval & mask;
12893            if maskedval != 0 {
12894                return Err(fidl::Error::NonZeroPadding {
12895                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
12896                });
12897            }
12898            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(48) };
12899            let padval = unsafe { (ptr as *const u64).read_unaligned() };
12900            let mask = 0xffffffffff000000u64;
12901            let maskedval = padval & mask;
12902            if maskedval != 0 {
12903                return Err(fidl::Error::NonZeroPadding {
12904                    padding_start: offset + 48 + ((mask as u64).trailing_zeros() / 8) as usize,
12905                });
12906            }
12907            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.ssid, decoder, offset + 0, _depth)?;
12908            fidl::decode!(
12909                fidl_fuchsia_wlan_ieee80211_common::BssType,
12910                D,
12911                &mut self.bss_type,
12912                decoder,
12913                offset + 16,
12914                _depth
12915            )?;
12916            fidl::decode!(u16, D, &mut self.beacon_period, decoder, offset + 20, _depth)?;
12917            fidl::decode!(u8, D, &mut self.dtim_period, decoder, offset + 22, _depth)?;
12918            fidl::decode!(
12919                fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
12920                D,
12921                &mut self.primary,
12922                decoder,
12923                offset + 23,
12924                _depth
12925            )?;
12926            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 26, _depth)?;
12927            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 32, _depth)?;
12928            fidl::decode!(Country, D, &mut self.country, decoder, offset + 48, _depth)?;
12929            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.mesh_id, decoder, offset + 56, _depth)?;
12930            fidl::decode!(
12931                fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
12932                D,
12933                &mut self.rsne,
12934                decoder,
12935                offset + 72,
12936                _depth
12937            )?;
12938            fidl::decode!(
12939                fidl_fuchsia_wlan_ieee80211_common::WlanPhyType,
12940                D,
12941                &mut self.phy,
12942                decoder,
12943                offset + 88,
12944                _depth
12945            )?;
12946            fidl::decode!(
12947                fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth,
12948                D,
12949                &mut self.bandwidth,
12950                decoder,
12951                offset + 92,
12952                _depth
12953            )?;
12954            Ok(())
12955        }
12956    }
12957
12958    impl fidl::encoding::ValueTypeMarker for StopConfirm {
12959        type Borrowed<'a> = &'a Self;
12960        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12961            value
12962        }
12963    }
12964
12965    unsafe impl fidl::encoding::TypeMarker for StopConfirm {
12966        type Owned = Self;
12967
12968        #[inline(always)]
12969        fn inline_align(_context: fidl::encoding::Context) -> usize {
12970            4
12971        }
12972
12973        #[inline(always)]
12974        fn inline_size(_context: fidl::encoding::Context) -> usize {
12975            4
12976        }
12977    }
12978
12979    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopConfirm, D>
12980        for &StopConfirm
12981    {
12982        #[inline]
12983        unsafe fn encode(
12984            self,
12985            encoder: &mut fidl::encoding::Encoder<'_, D>,
12986            offset: usize,
12987            _depth: fidl::encoding::Depth,
12988        ) -> fidl::Result<()> {
12989            encoder.debug_check_bounds::<StopConfirm>(offset);
12990            // Delegate to tuple encoding.
12991            fidl::encoding::Encode::<StopConfirm, D>::encode(
12992                (<StopResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),),
12993                encoder,
12994                offset,
12995                _depth,
12996            )
12997        }
12998    }
12999    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopResultCode, D>>
13000        fidl::encoding::Encode<StopConfirm, D> for (T0,)
13001    {
13002        #[inline]
13003        unsafe fn encode(
13004            self,
13005            encoder: &mut fidl::encoding::Encoder<'_, D>,
13006            offset: usize,
13007            depth: fidl::encoding::Depth,
13008        ) -> fidl::Result<()> {
13009            encoder.debug_check_bounds::<StopConfirm>(offset);
13010            // Zero out padding regions. There's no need to apply masks
13011            // because the unmasked parts will be overwritten by fields.
13012            // Write the fields.
13013            self.0.encode(encoder, offset + 0, depth)?;
13014            Ok(())
13015        }
13016    }
13017
13018    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopConfirm {
13019        #[inline(always)]
13020        fn new_empty() -> Self {
13021            Self { result_code: fidl::new_empty!(StopResultCode, D) }
13022        }
13023
13024        #[inline]
13025        unsafe fn decode(
13026            &mut self,
13027            decoder: &mut fidl::encoding::Decoder<'_, D>,
13028            offset: usize,
13029            _depth: fidl::encoding::Depth,
13030        ) -> fidl::Result<()> {
13031            decoder.debug_check_bounds::<Self>(offset);
13032            // Verify that padding bytes are zero.
13033            fidl::decode!(StopResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
13034            Ok(())
13035        }
13036    }
13037
13038    impl fidl::encoding::ValueTypeMarker for StopRequest {
13039        type Borrowed<'a> = &'a Self;
13040        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13041            value
13042        }
13043    }
13044
13045    unsafe impl fidl::encoding::TypeMarker for StopRequest {
13046        type Owned = Self;
13047
13048        #[inline(always)]
13049        fn inline_align(_context: fidl::encoding::Context) -> usize {
13050            8
13051        }
13052
13053        #[inline(always)]
13054        fn inline_size(_context: fidl::encoding::Context) -> usize {
13055            16
13056        }
13057    }
13058
13059    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopRequest, D>
13060        for &StopRequest
13061    {
13062        #[inline]
13063        unsafe fn encode(
13064            self,
13065            encoder: &mut fidl::encoding::Encoder<'_, D>,
13066            offset: usize,
13067            _depth: fidl::encoding::Depth,
13068        ) -> fidl::Result<()> {
13069            encoder.debug_check_bounds::<StopRequest>(offset);
13070            // Delegate to tuple encoding.
13071            fidl::encoding::Encode::<StopRequest, D>::encode(
13072                (<fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(
13073                    &self.ssid,
13074                ),),
13075                encoder,
13076                offset,
13077                _depth,
13078            )
13079        }
13080    }
13081    unsafe impl<
13082        D: fidl::encoding::ResourceDialect,
13083        T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
13084    > fidl::encoding::Encode<StopRequest, D> for (T0,)
13085    {
13086        #[inline]
13087        unsafe fn encode(
13088            self,
13089            encoder: &mut fidl::encoding::Encoder<'_, D>,
13090            offset: usize,
13091            depth: fidl::encoding::Depth,
13092        ) -> fidl::Result<()> {
13093            encoder.debug_check_bounds::<StopRequest>(offset);
13094            // Zero out padding regions. There's no need to apply masks
13095            // because the unmasked parts will be overwritten by fields.
13096            // Write the fields.
13097            self.0.encode(encoder, offset + 0, depth)?;
13098            Ok(())
13099        }
13100    }
13101
13102    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopRequest {
13103        #[inline(always)]
13104        fn new_empty() -> Self {
13105            Self { ssid: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D) }
13106        }
13107
13108        #[inline]
13109        unsafe fn decode(
13110            &mut self,
13111            decoder: &mut fidl::encoding::Decoder<'_, D>,
13112            offset: usize,
13113            _depth: fidl::encoding::Depth,
13114        ) -> fidl::Result<()> {
13115            decoder.debug_check_bounds::<Self>(offset);
13116            // Verify that padding bytes are zero.
13117            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.ssid, decoder, offset + 0, _depth)?;
13118            Ok(())
13119        }
13120    }
13121
13122    impl fidl::encoding::ValueTypeMarker for WmmParameter {
13123        type Borrowed<'a> = &'a Self;
13124        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13125            value
13126        }
13127    }
13128
13129    unsafe impl fidl::encoding::TypeMarker for WmmParameter {
13130        type Owned = Self;
13131
13132        #[inline(always)]
13133        fn inline_align(_context: fidl::encoding::Context) -> usize {
13134            1
13135        }
13136
13137        #[inline(always)]
13138        fn inline_size(_context: fidl::encoding::Context) -> usize {
13139            18
13140        }
13141        #[inline(always)]
13142        fn encode_is_copy() -> bool {
13143            true
13144        }
13145
13146        #[inline(always)]
13147        fn decode_is_copy() -> bool {
13148            true
13149        }
13150    }
13151
13152    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WmmParameter, D>
13153        for &WmmParameter
13154    {
13155        #[inline]
13156        unsafe fn encode(
13157            self,
13158            encoder: &mut fidl::encoding::Encoder<'_, D>,
13159            offset: usize,
13160            _depth: fidl::encoding::Depth,
13161        ) -> fidl::Result<()> {
13162            encoder.debug_check_bounds::<WmmParameter>(offset);
13163            unsafe {
13164                // Copy the object into the buffer.
13165                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
13166                (buf_ptr as *mut WmmParameter)
13167                    .write_unaligned((self as *const WmmParameter).read());
13168                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
13169                // done second because the memcpy will write garbage to these bytes.
13170            }
13171            Ok(())
13172        }
13173    }
13174    unsafe impl<
13175        D: fidl::encoding::ResourceDialect,
13176        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 18>, D>,
13177    > fidl::encoding::Encode<WmmParameter, D> for (T0,)
13178    {
13179        #[inline]
13180        unsafe fn encode(
13181            self,
13182            encoder: &mut fidl::encoding::Encoder<'_, D>,
13183            offset: usize,
13184            depth: fidl::encoding::Depth,
13185        ) -> fidl::Result<()> {
13186            encoder.debug_check_bounds::<WmmParameter>(offset);
13187            // Zero out padding regions. There's no need to apply masks
13188            // because the unmasked parts will be overwritten by fields.
13189            // Write the fields.
13190            self.0.encode(encoder, offset + 0, depth)?;
13191            Ok(())
13192        }
13193    }
13194
13195    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WmmParameter {
13196        #[inline(always)]
13197        fn new_empty() -> Self {
13198            Self { bytes: fidl::new_empty!(fidl::encoding::Array<u8, 18>, D) }
13199        }
13200
13201        #[inline]
13202        unsafe fn decode(
13203            &mut self,
13204            decoder: &mut fidl::encoding::Decoder<'_, D>,
13205            offset: usize,
13206            _depth: fidl::encoding::Depth,
13207        ) -> fidl::Result<()> {
13208            decoder.debug_check_bounds::<Self>(offset);
13209            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
13210            // Verify that padding bytes are zero.
13211            // Copy from the buffer into the object.
13212            unsafe {
13213                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 18);
13214            }
13215            Ok(())
13216        }
13217    }
13218
13219    impl fidl::encoding::ValueTypeMarker for GetIfaceHistogramStatsResponse {
13220        type Borrowed<'a> = &'a Self;
13221        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13222            value
13223        }
13224    }
13225
13226    unsafe impl fidl::encoding::TypeMarker for GetIfaceHistogramStatsResponse {
13227        type Owned = Self;
13228
13229        #[inline(always)]
13230        fn inline_align(_context: fidl::encoding::Context) -> usize {
13231            8
13232        }
13233
13234        #[inline(always)]
13235        fn inline_size(_context: fidl::encoding::Context) -> usize {
13236            16
13237        }
13238    }
13239
13240    unsafe impl<D: fidl::encoding::ResourceDialect>
13241        fidl::encoding::Encode<GetIfaceHistogramStatsResponse, D>
13242        for &GetIfaceHistogramStatsResponse
13243    {
13244        #[inline]
13245        unsafe fn encode(
13246            self,
13247            encoder: &mut fidl::encoding::Encoder<'_, D>,
13248            offset: usize,
13249            _depth: fidl::encoding::Depth,
13250        ) -> fidl::Result<()> {
13251            encoder.debug_check_bounds::<GetIfaceHistogramStatsResponse>(offset);
13252            encoder.write_num::<u64>(self.ordinal(), offset);
13253            match self {
13254            GetIfaceHistogramStatsResponse::Stats(ref val) => {
13255                fidl::encoding::encode_in_envelope::<fidl_fuchsia_wlan_stats_common::IfaceHistogramStats, D>(
13256                    <fidl_fuchsia_wlan_stats_common::IfaceHistogramStats as fidl::encoding::ValueTypeMarker>::borrow(val),
13257                    encoder, offset + 8, _depth
13258                )
13259            }
13260            GetIfaceHistogramStatsResponse::ErrorStatus(ref val) => {
13261                fidl::encoding::encode_in_envelope::<i32, D>(
13262                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
13263                    encoder, offset + 8, _depth
13264                )
13265            }
13266        }
13267        }
13268    }
13269
13270    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13271        for GetIfaceHistogramStatsResponse
13272    {
13273        #[inline(always)]
13274        fn new_empty() -> Self {
13275            Self::Stats(fidl::new_empty!(fidl_fuchsia_wlan_stats_common::IfaceHistogramStats, D))
13276        }
13277
13278        #[inline]
13279        unsafe fn decode(
13280            &mut self,
13281            decoder: &mut fidl::encoding::Decoder<'_, D>,
13282            offset: usize,
13283            mut depth: fidl::encoding::Depth,
13284        ) -> fidl::Result<()> {
13285            decoder.debug_check_bounds::<Self>(offset);
13286            #[allow(unused_variables)]
13287            let next_out_of_line = decoder.next_out_of_line();
13288            let handles_before = decoder.remaining_handles();
13289            let (ordinal, inlined, num_bytes, num_handles) =
13290                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
13291
13292            let member_inline_size = match ordinal {
13293            1 => <fidl_fuchsia_wlan_stats_common::IfaceHistogramStats as fidl::encoding::TypeMarker>::inline_size(decoder.context),
13294            2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
13295            _ => return Err(fidl::Error::UnknownUnionTag),
13296        };
13297
13298            if inlined != (member_inline_size <= 4) {
13299                return Err(fidl::Error::InvalidInlineBitInEnvelope);
13300            }
13301            let _inner_offset;
13302            if inlined {
13303                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
13304                _inner_offset = offset + 8;
13305            } else {
13306                depth.increment()?;
13307                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13308            }
13309            match ordinal {
13310                1 => {
13311                    #[allow(irrefutable_let_patterns)]
13312                    if let GetIfaceHistogramStatsResponse::Stats(_) = self {
13313                        // Do nothing, read the value into the object
13314                    } else {
13315                        // Initialize `self` to the right variant
13316                        *self = GetIfaceHistogramStatsResponse::Stats(fidl::new_empty!(
13317                            fidl_fuchsia_wlan_stats_common::IfaceHistogramStats,
13318                            D
13319                        ));
13320                    }
13321                    #[allow(irrefutable_let_patterns)]
13322                    if let GetIfaceHistogramStatsResponse::Stats(ref mut val) = self {
13323                        fidl::decode!(
13324                            fidl_fuchsia_wlan_stats_common::IfaceHistogramStats,
13325                            D,
13326                            val,
13327                            decoder,
13328                            _inner_offset,
13329                            depth
13330                        )?;
13331                    } else {
13332                        unreachable!()
13333                    }
13334                }
13335                2 => {
13336                    #[allow(irrefutable_let_patterns)]
13337                    if let GetIfaceHistogramStatsResponse::ErrorStatus(_) = self {
13338                        // Do nothing, read the value into the object
13339                    } else {
13340                        // Initialize `self` to the right variant
13341                        *self =
13342                            GetIfaceHistogramStatsResponse::ErrorStatus(fidl::new_empty!(i32, D));
13343                    }
13344                    #[allow(irrefutable_let_patterns)]
13345                    if let GetIfaceHistogramStatsResponse::ErrorStatus(ref mut val) = self {
13346                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
13347                    } else {
13348                        unreachable!()
13349                    }
13350                }
13351                ordinal => panic!("unexpected ordinal {:?}", ordinal),
13352            }
13353            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
13354                return Err(fidl::Error::InvalidNumBytesInEnvelope);
13355            }
13356            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13357                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13358            }
13359            Ok(())
13360        }
13361    }
13362
13363    impl fidl::encoding::ValueTypeMarker for GetIfaceStatsResponse {
13364        type Borrowed<'a> = &'a Self;
13365        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13366            value
13367        }
13368    }
13369
13370    unsafe impl fidl::encoding::TypeMarker for GetIfaceStatsResponse {
13371        type Owned = Self;
13372
13373        #[inline(always)]
13374        fn inline_align(_context: fidl::encoding::Context) -> usize {
13375            8
13376        }
13377
13378        #[inline(always)]
13379        fn inline_size(_context: fidl::encoding::Context) -> usize {
13380            16
13381        }
13382    }
13383
13384    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<GetIfaceStatsResponse, D>
13385        for &GetIfaceStatsResponse
13386    {
13387        #[inline]
13388        unsafe fn encode(
13389            self,
13390            encoder: &mut fidl::encoding::Encoder<'_, D>,
13391            offset: usize,
13392            _depth: fidl::encoding::Depth,
13393        ) -> fidl::Result<()> {
13394            encoder.debug_check_bounds::<GetIfaceStatsResponse>(offset);
13395            encoder.write_num::<u64>(self.ordinal(), offset);
13396            match self {
13397            GetIfaceStatsResponse::Stats(ref val) => {
13398                fidl::encoding::encode_in_envelope::<fidl_fuchsia_wlan_stats_common::IfaceStats, D>(
13399                    <fidl_fuchsia_wlan_stats_common::IfaceStats as fidl::encoding::ValueTypeMarker>::borrow(val),
13400                    encoder, offset + 8, _depth
13401                )
13402            }
13403            GetIfaceStatsResponse::ErrorStatus(ref val) => {
13404                fidl::encoding::encode_in_envelope::<i32, D>(
13405                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
13406                    encoder, offset + 8, _depth
13407                )
13408            }
13409        }
13410        }
13411    }
13412
13413    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GetIfaceStatsResponse {
13414        #[inline(always)]
13415        fn new_empty() -> Self {
13416            Self::Stats(fidl::new_empty!(fidl_fuchsia_wlan_stats_common::IfaceStats, D))
13417        }
13418
13419        #[inline]
13420        unsafe fn decode(
13421            &mut self,
13422            decoder: &mut fidl::encoding::Decoder<'_, D>,
13423            offset: usize,
13424            mut depth: fidl::encoding::Depth,
13425        ) -> fidl::Result<()> {
13426            decoder.debug_check_bounds::<Self>(offset);
13427            #[allow(unused_variables)]
13428            let next_out_of_line = decoder.next_out_of_line();
13429            let handles_before = decoder.remaining_handles();
13430            let (ordinal, inlined, num_bytes, num_handles) =
13431                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
13432
13433            let member_inline_size = match ordinal {
13434            1 => <fidl_fuchsia_wlan_stats_common::IfaceStats as fidl::encoding::TypeMarker>::inline_size(decoder.context),
13435            2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
13436            _ => return Err(fidl::Error::UnknownUnionTag),
13437        };
13438
13439            if inlined != (member_inline_size <= 4) {
13440                return Err(fidl::Error::InvalidInlineBitInEnvelope);
13441            }
13442            let _inner_offset;
13443            if inlined {
13444                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
13445                _inner_offset = offset + 8;
13446            } else {
13447                depth.increment()?;
13448                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13449            }
13450            match ordinal {
13451                1 => {
13452                    #[allow(irrefutable_let_patterns)]
13453                    if let GetIfaceStatsResponse::Stats(_) = self {
13454                        // Do nothing, read the value into the object
13455                    } else {
13456                        // Initialize `self` to the right variant
13457                        *self = GetIfaceStatsResponse::Stats(fidl::new_empty!(
13458                            fidl_fuchsia_wlan_stats_common::IfaceStats,
13459                            D
13460                        ));
13461                    }
13462                    #[allow(irrefutable_let_patterns)]
13463                    if let GetIfaceStatsResponse::Stats(ref mut val) = self {
13464                        fidl::decode!(
13465                            fidl_fuchsia_wlan_stats_common::IfaceStats,
13466                            D,
13467                            val,
13468                            decoder,
13469                            _inner_offset,
13470                            depth
13471                        )?;
13472                    } else {
13473                        unreachable!()
13474                    }
13475                }
13476                2 => {
13477                    #[allow(irrefutable_let_patterns)]
13478                    if let GetIfaceStatsResponse::ErrorStatus(_) = self {
13479                        // Do nothing, read the value into the object
13480                    } else {
13481                        // Initialize `self` to the right variant
13482                        *self = GetIfaceStatsResponse::ErrorStatus(fidl::new_empty!(i32, D));
13483                    }
13484                    #[allow(irrefutable_let_patterns)]
13485                    if let GetIfaceStatsResponse::ErrorStatus(ref mut val) = self {
13486                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
13487                    } else {
13488                        unreachable!()
13489                    }
13490                }
13491                ordinal => panic!("unexpected ordinal {:?}", ordinal),
13492            }
13493            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
13494                return Err(fidl::Error::InvalidNumBytesInEnvelope);
13495            }
13496            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13497                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13498            }
13499            Ok(())
13500        }
13501    }
13502}