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, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
787#[repr(C)]
788pub struct MlmeOnRssiThresholdBreachedRequest {
789    pub cur_rssi_dbm: i8,
790}
791
792impl fidl::Persistable for MlmeOnRssiThresholdBreachedRequest {}
793
794#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
795pub struct MlmeOnSaeFrameRxRequest {
796    pub frame: SaeFrame,
797}
798
799impl fidl::Persistable for MlmeOnSaeFrameRxRequest {}
800
801#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
802#[repr(C)]
803pub struct MlmeOnSaeHandshakeIndRequest {
804    pub ind: SaeHandshakeIndication,
805}
806
807impl fidl::Persistable for MlmeOnSaeHandshakeIndRequest {}
808
809#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
810pub struct MlmeOnScanEndRequest {
811    pub end: ScanEnd,
812}
813
814impl fidl::Persistable for MlmeOnScanEndRequest {}
815
816#[derive(Clone, Debug, PartialEq)]
817pub struct MlmeOnScanResultRequest {
818    pub result: ScanResult,
819}
820
821impl fidl::Persistable for MlmeOnScanResultRequest {}
822
823#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
824#[repr(C)]
825pub struct MlmeOnScheduledScanMatchesAvailableRequest {
826    pub txn_id: u64,
827}
828
829impl fidl::Persistable for MlmeOnScheduledScanMatchesAvailableRequest {}
830
831#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
832#[repr(C)]
833pub struct MlmeOnScheduledScanStoppedByFirmwareRequest {
834    pub txn_id: u64,
835}
836
837impl fidl::Persistable for MlmeOnScheduledScanStoppedByFirmwareRequest {}
838
839#[derive(Clone, Debug, PartialEq)]
840pub struct MlmeOnWmmStatusRespRequest {
841    pub status: i32,
842    pub resp: fidl_fuchsia_wlan_internal_common::WmmStatusResponse,
843}
844
845impl fidl::Persistable for MlmeOnWmmStatusRespRequest {}
846
847#[derive(Clone, Debug, PartialEq)]
848pub struct MlmeQueryDeviceInfoResponse {
849    pub info: DeviceInfo,
850}
851
852impl fidl::Persistable for MlmeQueryDeviceInfoResponse {}
853
854#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
855#[repr(C)]
856pub struct MlmeReconnectReqRequest {
857    pub req: ReconnectRequest,
858}
859
860impl fidl::Persistable for MlmeReconnectReqRequest {}
861
862#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
863pub struct MlmeRelayCapturedFrameRequest {
864    pub result: CapturedFrameResult,
865}
866
867impl fidl::Persistable for MlmeRelayCapturedFrameRequest {}
868
869#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
870pub struct MlmeResetReqRequest {
871    pub req: ResetRequest,
872}
873
874impl fidl::Persistable for MlmeResetReqRequest {}
875
876#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
877pub struct MlmeRoamConfRequest {
878    pub conf: RoamConfirm,
879}
880
881impl fidl::Persistable for MlmeRoamConfRequest {}
882
883#[derive(Clone, Debug, PartialEq)]
884pub struct MlmeRoamReqRequest {
885    pub req: RoamRequest,
886}
887
888impl fidl::Persistable for MlmeRoamReqRequest {}
889
890#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
891pub struct MlmeRoamResultIndRequest {
892    pub ind: RoamResultIndication,
893}
894
895impl fidl::Persistable for MlmeRoamResultIndRequest {}
896
897#[derive(Clone, Debug, PartialEq)]
898pub struct MlmeRoamStartIndRequest {
899    pub ind: RoamStartIndication,
900}
901
902impl fidl::Persistable for MlmeRoamStartIndRequest {}
903
904#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
905pub struct MlmeSaeFrameTxRequest {
906    pub frame: SaeFrame,
907}
908
909impl fidl::Persistable for MlmeSaeFrameTxRequest {}
910
911#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
912pub struct MlmeSaeHandshakeRespRequest {
913    pub resp: SaeHandshakeResponse,
914}
915
916impl fidl::Persistable for MlmeSaeHandshakeRespRequest {}
917
918#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
919pub struct MlmeSetApfPacketFilterEnabledRequest {
920    pub enabled: bool,
921}
922
923impl fidl::Persistable for MlmeSetApfPacketFilterEnabledRequest {}
924
925#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
926pub struct MlmeSetControlledPortRequest {
927    pub req: SetControlledPortRequest,
928}
929
930impl fidl::Persistable for MlmeSetControlledPortRequest {}
931
932#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
933pub struct MlmeSetKeysConfRequest {
934    pub conf: SetKeysConfirm,
935}
936
937impl fidl::Persistable for MlmeSetKeysConfRequest {}
938
939#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
940pub struct MlmeSetKeysReqRequest {
941    pub req: SetKeysRequest,
942}
943
944impl fidl::Persistable for MlmeSetKeysReqRequest {}
945
946#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
947#[repr(C)]
948pub struct MlmeSetMacAddressRequest {
949    pub mac_addr: [u8; 6],
950}
951
952impl fidl::Persistable for MlmeSetMacAddressRequest {}
953
954#[derive(Clone, Debug, PartialEq)]
955pub struct MlmeSignalReportRequest {
956    pub ind: fidl_fuchsia_wlan_internal_common::SignalReportIndication,
957}
958
959impl fidl::Persistable for MlmeSignalReportRequest {}
960
961#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
962pub struct MlmeStartCaptureFramesRequest {
963    pub req: StartCaptureFramesRequest,
964}
965
966impl fidl::Persistable for MlmeStartCaptureFramesRequest {}
967
968#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
969pub struct MlmeStartCaptureFramesResponse {
970    pub resp: StartCaptureFramesResponse,
971}
972
973impl fidl::Persistable for MlmeStartCaptureFramesResponse {}
974
975#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
976pub struct MlmeStartConfRequest {
977    pub resp: StartConfirm,
978}
979
980impl fidl::Persistable for MlmeStartConfRequest {}
981
982#[derive(Clone, Debug, PartialEq)]
983pub struct MlmeStartReqRequest {
984    pub req: StartRequest,
985}
986
987impl fidl::Persistable for MlmeStartReqRequest {}
988
989#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
990#[repr(C)]
991pub struct MlmeStartRssiMonitorRequest {
992    pub min_rssi_dbm: i8,
993    pub max_rssi_dbm: i8,
994}
995
996impl fidl::Persistable for MlmeStartRssiMonitorRequest {}
997
998#[derive(Clone, Debug, PartialEq)]
999pub struct MlmeStartScanRequest {
1000    pub req: ScanRequest,
1001}
1002
1003impl fidl::Persistable for MlmeStartScanRequest {}
1004
1005#[derive(Clone, Debug, PartialEq)]
1006pub struct MlmeStartScheduledScanRequest {
1007    pub txn_id: u64,
1008    pub req: fidl_fuchsia_wlan_common_common::ScheduledScanRequest,
1009}
1010
1011impl fidl::Persistable for MlmeStartScheduledScanRequest {}
1012
1013#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1014pub struct MlmeStopConfRequest {
1015    pub resp: StopConfirm,
1016}
1017
1018impl fidl::Persistable for MlmeStopConfRequest {}
1019
1020#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1021pub struct MlmeStopReqRequest {
1022    pub req: StopRequest,
1023}
1024
1025impl fidl::Persistable for MlmeStopReqRequest {}
1026
1027#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1028#[repr(C)]
1029pub struct MlmeStopScheduledScanRequest {
1030    pub txn_id: u64,
1031}
1032
1033impl fidl::Persistable for MlmeStopScheduledScanRequest {}
1034
1035/// Non-IEEE custom structure to inform a SoftMAC device about the association negotiation outcome.
1036#[derive(Clone, Debug, PartialEq)]
1037pub struct NegotiatedCapabilities {
1038    pub primary: fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
1039    pub capability_info: u16,
1040    pub rates: Vec<u8>,
1041    pub wmm_param: Option<Box<WmmParameter>>,
1042    pub ht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>>,
1043    pub vht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>>,
1044}
1045
1046impl fidl::Persistable for NegotiatedCapabilities {}
1047
1048#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1049pub struct PmkInfo {
1050    pub pmk: Vec<u8>,
1051    pub pmkid: Vec<u8>,
1052}
1053
1054impl fidl::Persistable for PmkInfo {}
1055
1056#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1057#[repr(C)]
1058pub struct ReconnectRequest {
1059    pub peer_sta_address: [u8; 6],
1060}
1061
1062impl fidl::Persistable for ReconnectRequest {}
1063
1064#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1065pub struct ResetRequest {
1066    pub sta_address: [u8; 6],
1067    pub set_default_mib: bool,
1068}
1069
1070impl fidl::Persistable for ResetRequest {}
1071
1072/// Result of an SME-initiated roam attempt.
1073#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1074pub struct RoamConfirm {
1075    pub selected_bssid: [u8; 6],
1076    pub status_code: fidl_fuchsia_wlan_ieee80211_common::StatusCode,
1077    /// Whether the original BSS association has been maintained through the roam attempt.
1078    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1079    /// success then this field must be set to false; a roam failure typically incurs disassociation
1080    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1081    pub original_association_maintained: bool,
1082    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1083    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1084    /// This allows higher layers to decide how to clean up connection state after a failed roam
1085    /// attempt.
1086    pub target_bss_authenticated: bool,
1087    pub association_id: u16,
1088    pub association_ies: Vec<u8>,
1089}
1090
1091impl fidl::Persistable for RoamConfirm {}
1092
1093#[derive(Clone, Debug, PartialEq)]
1094pub struct RoamRequest {
1095    pub selected_bss: fidl_fuchsia_wlan_ieee80211_common::BssDescription,
1096}
1097
1098impl fidl::Persistable for RoamRequest {}
1099
1100/// Result of a fullmac-initiated roam attempt.
1101#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1102pub struct RoamResultIndication {
1103    pub selected_bssid: [u8; 6],
1104    pub status_code: fidl_fuchsia_wlan_ieee80211_common::StatusCode,
1105    /// Whether the original BSS association has been maintained through the roam attempt.
1106    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1107    /// success then this field must be set to false; a roam failure typically incurs disassociation
1108    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1109    pub original_association_maintained: bool,
1110    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1111    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1112    /// This allows higher layers to decide how to clean up connection state after a failed roam
1113    /// attempt.
1114    pub target_bss_authenticated: bool,
1115    pub association_id: u16,
1116    pub association_ies: Vec<u8>,
1117}
1118
1119impl fidl::Persistable for RoamResultIndication {}
1120
1121/// In-progress fullmac-initiated roam attempt details.
1122#[derive(Clone, Debug, PartialEq)]
1123pub struct RoamStartIndication {
1124    pub selected_bssid: [u8; 6],
1125    pub selected_bss: fidl_fuchsia_wlan_ieee80211_common::BssDescription,
1126    /// Whether the original BSS association has been maintained at the start of a roam attempt.
1127    /// 802.11 dictates that a STA can only be associated with a single BSS, so a roam attempt
1128    /// typically incurs disassociation at the start of the roam attempt. However, 802.11 also
1129    /// provides a mechanism (i.e. Fast BSS Transition) that allows a device to maintain
1130    /// association with the original BSS while establishing authentication with the target BSS, in
1131    /// order to avoid losing the original association if authentication with the target BSS fails.
1132    pub original_association_maintained: bool,
1133}
1134
1135impl fidl::Persistable for RoamStartIndication {}
1136
1137#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1138pub struct SaeFrame {
1139    pub peer_sta_address: [u8; 6],
1140    pub status_code: fidl_fuchsia_wlan_ieee80211_common::StatusCode,
1141    pub seq_num: u16,
1142    pub sae_fields: Vec<u8>,
1143}
1144
1145impl fidl::Persistable for SaeFrame {}
1146
1147#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1148#[repr(C)]
1149pub struct SaeHandshakeIndication {
1150    pub peer_sta_address: [u8; 6],
1151}
1152
1153impl fidl::Persistable for SaeHandshakeIndication {}
1154
1155#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1156pub struct SaeHandshakeResponse {
1157    pub peer_sta_address: [u8; 6],
1158    pub status_code: fidl_fuchsia_wlan_ieee80211_common::StatusCode,
1159}
1160
1161impl fidl::Persistable for SaeHandshakeResponse {}
1162
1163#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1164pub struct ScanEnd {
1165    pub txn_id: u64,
1166    pub code: ScanResultCode,
1167}
1168
1169impl fidl::Persistable for ScanEnd {}
1170
1171#[derive(Clone, Debug, PartialEq)]
1172pub struct ScanRequest {
1173    pub txn_id: u64,
1174    pub scan_type: ScanTypes,
1175    /// List of channels to scan on. An empty list of channels will cause a
1176    /// scan request to immediately return a ScanEnd with code INVALID_ARGS.
1177    ///
1178    /// Invalid channel numbers will be silently ignored. The validity of a channel
1179    /// number depends on the current regulatory region, and MLME does not control
1180    /// or know this setting.
1181    pub channel_list: Vec<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber>,
1182    /// List of SSIDs to scan for. An empty list of ssids is the same as specifying
1183    /// a list containing only the wildcard SSID.
1184    ///
1185    /// There is no limit on the number of SSIDs specified. A large number of
1186    /// SSIDs may result in extended scan times because of hardware limitations on
1187    /// the number of SSIDs permitted per scan request and the technical limitation
1188    /// in IEEE 802.11-2016 that limits the number of SSIDs in a single Probe Request
1189    /// frame to ieee80211.SSID_LIST_MAX SSIDs.
1190    pub ssid_list: Vec<Vec<u8>>,
1191    pub probe_delay: u32,
1192    pub min_channel_time: u32,
1193    pub max_channel_time: u32,
1194}
1195
1196impl fidl::Persistable for ScanRequest {}
1197
1198#[derive(Clone, Debug, PartialEq)]
1199pub struct ScanResult {
1200    pub txn_id: u64,
1201    pub timestamp_nanos: i64,
1202    pub bss: fidl_fuchsia_wlan_ieee80211_common::BssDescription,
1203}
1204
1205impl fidl::Persistable for ScanResult {}
1206
1207#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1208pub struct SetControlledPortRequest {
1209    pub peer_sta_address: [u8; 6],
1210    pub state: ControlledPortState,
1211}
1212
1213impl fidl::Persistable for SetControlledPortRequest {}
1214
1215#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1216pub struct SetKeyDescriptor {
1217    pub key: Vec<u8>,
1218    pub key_id: u16,
1219    pub key_type: KeyType,
1220    pub address: [u8; 6],
1221    pub rsc: u64,
1222    pub cipher_suite_oui: [u8; 3],
1223    pub cipher_suite_type: fidl_fuchsia_wlan_ieee80211_common::CipherSuiteType,
1224}
1225
1226impl fidl::Persistable for SetKeyDescriptor {}
1227
1228#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1229#[repr(C)]
1230pub struct SetKeyResult {
1231    pub key_id: u16,
1232    pub status: i32,
1233}
1234
1235impl fidl::Persistable for SetKeyResult {}
1236
1237#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1238pub struct SetKeysConfirm {
1239    pub results: Vec<SetKeyResult>,
1240}
1241
1242impl fidl::Persistable for SetKeysConfirm {}
1243
1244#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1245pub struct SetKeysRequest {
1246    pub keylist: Vec<SetKeyDescriptor>,
1247}
1248
1249impl fidl::Persistable for SetKeysRequest {}
1250
1251#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1252pub struct StartCaptureFramesRequest {
1253    pub mgmt_frame_flags: MgmtFrameCaptureFlags,
1254}
1255
1256impl fidl::Persistable for StartCaptureFramesRequest {}
1257
1258#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1259pub struct StartCaptureFramesResponse {
1260    pub status: i32,
1261    pub supported_mgmt_frames: MgmtFrameCaptureFlags,
1262}
1263
1264impl fidl::Persistable for StartCaptureFramesResponse {}
1265
1266#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1267pub struct StartConfirm {
1268    pub result_code: StartResultCode,
1269}
1270
1271impl fidl::Persistable for StartConfirm {}
1272
1273#[derive(Clone, Debug, PartialEq)]
1274pub struct StartRequest {
1275    pub ssid: Vec<u8>,
1276    pub bss_type: fidl_fuchsia_wlan_ieee80211_common::BssType,
1277    pub beacon_period: u16,
1278    pub dtim_period: u8,
1279    pub primary: fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
1280    pub capability_info: u16,
1281    pub rates: Vec<u8>,
1282    pub country: Country,
1283    pub mesh_id: Vec<u8>,
1284    pub rsne: Option<Vec<u8>>,
1285    pub phy: fidl_fuchsia_wlan_ieee80211_common::WlanPhyType,
1286    pub bandwidth: fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth,
1287}
1288
1289impl fidl::Persistable for StartRequest {}
1290
1291#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1292pub struct StopConfirm {
1293    pub result_code: StopResultCode,
1294}
1295
1296impl fidl::Persistable for StopConfirm {}
1297
1298#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1299pub struct StopRequest {
1300    pub ssid: Vec<u8>,
1301}
1302
1303impl fidl::Persistable for StopRequest {}
1304
1305#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1306#[repr(C)]
1307pub struct WmmParameter {
1308    pub bytes: [u8; 18],
1309}
1310
1311impl fidl::Persistable for WmmParameter {}
1312
1313#[derive(Clone, Debug, PartialEq)]
1314pub enum GetIfaceHistogramStatsResponse {
1315    Stats(fidl_fuchsia_wlan_stats_common::IfaceHistogramStats),
1316    ErrorStatus(i32),
1317}
1318
1319impl GetIfaceHistogramStatsResponse {
1320    #[inline]
1321    pub fn ordinal(&self) -> u64 {
1322        match *self {
1323            Self::Stats(_) => 1,
1324            Self::ErrorStatus(_) => 2,
1325        }
1326    }
1327}
1328
1329impl fidl::Persistable for GetIfaceHistogramStatsResponse {}
1330
1331#[derive(Clone, Debug, PartialEq)]
1332pub enum GetIfaceStatsResponse {
1333    Stats(fidl_fuchsia_wlan_stats_common::IfaceStats),
1334    ErrorStatus(i32),
1335}
1336
1337impl GetIfaceStatsResponse {
1338    #[inline]
1339    pub fn ordinal(&self) -> u64 {
1340        match *self {
1341            Self::Stats(_) => 1,
1342            Self::ErrorStatus(_) => 2,
1343        }
1344    }
1345}
1346
1347impl fidl::Persistable for GetIfaceStatsResponse {}
1348
1349pub mod connector_ordinals {
1350    pub const CONNECT: u64 = 0x42131859717af962;
1351}
1352
1353pub mod mlme_ordinals {
1354    pub const START_SCAN: u64 = 0x342cc5ec6a957479;
1355    pub const ON_SCAN_RESULT: u64 = 0x681af7466a75074d;
1356    pub const ON_SCAN_END: u64 = 0x7f2702d253e7ca59;
1357    pub const START_SCHEDULED_SCAN: u64 = 0x7fff163af4620212;
1358    pub const STOP_SCHEDULED_SCAN: u64 = 0x5fbc466f3daa4dd9;
1359    pub const GET_SCHEDULED_SCAN_ENABLED: u64 = 0x1ecc6a7fe7f9fcff;
1360    pub const ON_SCHEDULED_SCAN_MATCHES_AVAILABLE: u64 = 0x3d915df5108ec4e1;
1361    pub const ON_SCHEDULED_SCAN_STOPPED_BY_FIRMWARE: u64 = 0x4c2cb4b145163fd0;
1362    pub const CONNECT_REQ: u64 = 0x31153dc85f8f64c;
1363    pub const CONNECT_CONF: u64 = 0x77b27623279b981e;
1364    pub const RECONNECT_REQ: u64 = 0x74e0f1bd758b6b78;
1365    pub const ROAM_REQ: u64 = 0x3ba163eadf7dba45;
1366    pub const ROAM_CONF: u64 = 0x3f608034faa054bc;
1367    pub const ROAM_START_IND: u64 = 0x270a1ec78672d094;
1368    pub const ROAM_RESULT_IND: u64 = 0x26d074364fc84865;
1369    pub const AUTHENTICATE_IND: u64 = 0x460f49ae891adbe9;
1370    pub const AUTHENTICATE_RESP: u64 = 0x26108aade2fdd2f4;
1371    pub const DEAUTHENTICATE_REQ: u64 = 0x228983b200de5d12;
1372    pub const DEAUTHENTICATE_CONF: u64 = 0x3b44debc21b88c8c;
1373    pub const DEAUTHENTICATE_IND: u64 = 0x7ee0889b326da1d7;
1374    pub const ASSOCIATE_IND: u64 = 0x6a86f20e3063dd63;
1375    pub const ASSOCIATE_RESP: u64 = 0x70244dbd652ed6d9;
1376    pub const DISASSOCIATE_REQ: u64 = 0x5765807f1387d764;
1377    pub const DISASSOCIATE_CONF: u64 = 0x61345fbce732a28d;
1378    pub const DISASSOCIATE_IND: u64 = 0x77ac0ebf387c1f35;
1379    pub const RESET_REQ: u64 = 0x780b98c58a286b9f;
1380    pub const START_REQ: u64 = 0x5d95885f8053654;
1381    pub const START_CONF: u64 = 0x15ea6cdf3b8382b3;
1382    pub const STOP_REQ: u64 = 0x27b9a2ab04a2c79f;
1383    pub const STOP_CONF: u64 = 0x50b426ef4a84a2df;
1384    pub const SET_KEYS_REQ: u64 = 0x6b30a07fd3a11a79;
1385    pub const SET_KEYS_CONF: u64 = 0x5bafb3a8d4039380;
1386    pub const DELETE_KEYS_REQ: u64 = 0x1e3524d20d190c8f;
1387    pub const EAPOL_REQ: u64 = 0xc3c096924704d4;
1388    pub const EAPOL_CONF: u64 = 0x6ffa21f4ee73ce64;
1389    pub const SIGNAL_REPORT: u64 = 0x48f32a876aa53d8f;
1390    pub const ON_RSSI_THRESHOLD_BREACHED: u64 = 0x5803e9572d8c8f;
1391    pub const EAPOL_IND: u64 = 0x7038dca46a3142fc;
1392    pub const SET_CONTROLLED_PORT: u64 = 0x4e47065668890c8d;
1393    pub const QUERY_DEVICE_INFO: u64 = 0x6ee3e7f63f2b7bc0;
1394    pub const QUERY_TELEMETRY_SUPPORT: u64 = 0x1598879b70332c99;
1395    pub const GET_IFACE_STATS: u64 = 0xede1a8342d1b211;
1396    pub const GET_IFACE_HISTOGRAM_STATS: u64 = 0x1979c9d3449f8675;
1397    pub const GET_SIGNAL_REPORT: u64 = 0x7e47e7ebe92acec9;
1398    pub const LIST_MINSTREL_PEERS: u64 = 0x4ac5d1e66fe1ffd5;
1399    pub const GET_MINSTREL_STATS: u64 = 0x2f688b1245323f4b;
1400    pub const START_CAPTURE_FRAMES: u64 = 0x23b369ed5749ee69;
1401    pub const STOP_CAPTURE_FRAMES: u64 = 0x2f1aebbc68bf7c54;
1402    pub const RELAY_CAPTURED_FRAME: u64 = 0x6f00a6f3cff9b1f5;
1403    pub const ON_CHANNEL_SWITCHED: u64 = 0x581750594e4c0c1;
1404    pub const ON_PMK_AVAILABLE: u64 = 0x1314fc2c79643f90;
1405    pub const ON_SAE_HANDSHAKE_IND: u64 = 0x6308b10e18986d7e;
1406    pub const SAE_HANDSHAKE_RESP: u64 = 0x28477bd2f7a5ab0c;
1407    pub const SAE_FRAME_TX: u64 = 0x7700c0d536733d8c;
1408    pub const ON_SAE_FRAME_RX: u64 = 0x4ebf51c86ef5f3cd;
1409    pub const WMM_STATUS_REQ: u64 = 0xef4851f6088fede;
1410    pub const ON_WMM_STATUS_RESP: u64 = 0x53f056b432e7b5cb;
1411    pub const FINALIZE_ASSOCIATION_REQ: u64 = 0x7aea59787cfd385a;
1412    pub const SET_MAC_ADDRESS: u64 = 0x476999f9bb27afe1;
1413    pub const INSTALL_APF_PACKET_FILTER: u64 = 0x267565b4916c825b;
1414    pub const READ_APF_PACKET_FILTER_DATA: u64 = 0x6040d744f1b2cb61;
1415    pub const SET_APF_PACKET_FILTER_ENABLED: u64 = 0x6d99bdca77076aea;
1416    pub const GET_APF_PACKET_FILTER_ENABLED: u64 = 0x1df408bc154be1e4;
1417    pub const START_RSSI_MONITOR: u64 = 0x542a970415b1d912;
1418}
1419
1420mod internal {
1421    use super::*;
1422    unsafe impl fidl::encoding::TypeMarker for MgmtFrameCaptureFlags {
1423        type Owned = Self;
1424
1425        #[inline(always)]
1426        fn inline_align(_context: fidl::encoding::Context) -> usize {
1427            4
1428        }
1429
1430        #[inline(always)]
1431        fn inline_size(_context: fidl::encoding::Context) -> usize {
1432            4
1433        }
1434    }
1435
1436    impl fidl::encoding::ValueTypeMarker for MgmtFrameCaptureFlags {
1437        type Borrowed<'a> = Self;
1438        #[inline(always)]
1439        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1440            *value
1441        }
1442    }
1443
1444    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1445        for MgmtFrameCaptureFlags
1446    {
1447        #[inline]
1448        unsafe fn encode(
1449            self,
1450            encoder: &mut fidl::encoding::Encoder<'_, D>,
1451            offset: usize,
1452            _depth: fidl::encoding::Depth,
1453        ) -> fidl::Result<()> {
1454            encoder.debug_check_bounds::<Self>(offset);
1455            if self.bits() & Self::all().bits() != self.bits() {
1456                return Err(fidl::Error::InvalidBitsValue);
1457            }
1458            encoder.write_num(self.bits(), offset);
1459            Ok(())
1460        }
1461    }
1462
1463    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MgmtFrameCaptureFlags {
1464        #[inline(always)]
1465        fn new_empty() -> Self {
1466            Self::empty()
1467        }
1468
1469        #[inline]
1470        unsafe fn decode(
1471            &mut self,
1472            decoder: &mut fidl::encoding::Decoder<'_, D>,
1473            offset: usize,
1474            _depth: fidl::encoding::Depth,
1475        ) -> fidl::Result<()> {
1476            decoder.debug_check_bounds::<Self>(offset);
1477            let prim = decoder.read_num::<u32>(offset);
1478            *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
1479            Ok(())
1480        }
1481    }
1482    unsafe impl fidl::encoding::TypeMarker for AssociateResultCode {
1483        type Owned = Self;
1484
1485        #[inline(always)]
1486        fn inline_align(_context: fidl::encoding::Context) -> usize {
1487            std::mem::align_of::<u32>()
1488        }
1489
1490        #[inline(always)]
1491        fn inline_size(_context: fidl::encoding::Context) -> usize {
1492            std::mem::size_of::<u32>()
1493        }
1494
1495        #[inline(always)]
1496        fn encode_is_copy() -> bool {
1497            true
1498        }
1499
1500        #[inline(always)]
1501        fn decode_is_copy() -> bool {
1502            false
1503        }
1504    }
1505
1506    impl fidl::encoding::ValueTypeMarker for AssociateResultCode {
1507        type Borrowed<'a> = Self;
1508        #[inline(always)]
1509        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1510            *value
1511        }
1512    }
1513
1514    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1515        for AssociateResultCode
1516    {
1517        #[inline]
1518        unsafe fn encode(
1519            self,
1520            encoder: &mut fidl::encoding::Encoder<'_, D>,
1521            offset: usize,
1522            _depth: fidl::encoding::Depth,
1523        ) -> fidl::Result<()> {
1524            encoder.debug_check_bounds::<Self>(offset);
1525            encoder.write_num(self.into_primitive(), offset);
1526            Ok(())
1527        }
1528    }
1529
1530    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateResultCode {
1531        #[inline(always)]
1532        fn new_empty() -> Self {
1533            Self::Success
1534        }
1535
1536        #[inline]
1537        unsafe fn decode(
1538            &mut self,
1539            decoder: &mut fidl::encoding::Decoder<'_, D>,
1540            offset: usize,
1541            _depth: fidl::encoding::Depth,
1542        ) -> fidl::Result<()> {
1543            decoder.debug_check_bounds::<Self>(offset);
1544            let prim = decoder.read_num::<u32>(offset);
1545
1546            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1547            Ok(())
1548        }
1549    }
1550    unsafe impl fidl::encoding::TypeMarker for AuthenticateResultCode {
1551        type Owned = Self;
1552
1553        #[inline(always)]
1554        fn inline_align(_context: fidl::encoding::Context) -> usize {
1555            std::mem::align_of::<u32>()
1556        }
1557
1558        #[inline(always)]
1559        fn inline_size(_context: fidl::encoding::Context) -> usize {
1560            std::mem::size_of::<u32>()
1561        }
1562
1563        #[inline(always)]
1564        fn encode_is_copy() -> bool {
1565            true
1566        }
1567
1568        #[inline(always)]
1569        fn decode_is_copy() -> bool {
1570            false
1571        }
1572    }
1573
1574    impl fidl::encoding::ValueTypeMarker for AuthenticateResultCode {
1575        type Borrowed<'a> = Self;
1576        #[inline(always)]
1577        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1578            *value
1579        }
1580    }
1581
1582    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1583        for AuthenticateResultCode
1584    {
1585        #[inline]
1586        unsafe fn encode(
1587            self,
1588            encoder: &mut fidl::encoding::Encoder<'_, D>,
1589            offset: usize,
1590            _depth: fidl::encoding::Depth,
1591        ) -> fidl::Result<()> {
1592            encoder.debug_check_bounds::<Self>(offset);
1593            encoder.write_num(self.into_primitive(), offset);
1594            Ok(())
1595        }
1596    }
1597
1598    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1599        for AuthenticateResultCode
1600    {
1601        #[inline(always)]
1602        fn new_empty() -> Self {
1603            Self::Success
1604        }
1605
1606        #[inline]
1607        unsafe fn decode(
1608            &mut self,
1609            decoder: &mut fidl::encoding::Decoder<'_, D>,
1610            offset: usize,
1611            _depth: fidl::encoding::Depth,
1612        ) -> fidl::Result<()> {
1613            decoder.debug_check_bounds::<Self>(offset);
1614            let prim = decoder.read_num::<u32>(offset);
1615
1616            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1617            Ok(())
1618        }
1619    }
1620    unsafe impl fidl::encoding::TypeMarker for AuthenticationTypes {
1621        type Owned = Self;
1622
1623        #[inline(always)]
1624        fn inline_align(_context: fidl::encoding::Context) -> usize {
1625            std::mem::align_of::<u32>()
1626        }
1627
1628        #[inline(always)]
1629        fn inline_size(_context: fidl::encoding::Context) -> usize {
1630            std::mem::size_of::<u32>()
1631        }
1632
1633        #[inline(always)]
1634        fn encode_is_copy() -> bool {
1635            true
1636        }
1637
1638        #[inline(always)]
1639        fn decode_is_copy() -> bool {
1640            false
1641        }
1642    }
1643
1644    impl fidl::encoding::ValueTypeMarker for AuthenticationTypes {
1645        type Borrowed<'a> = Self;
1646        #[inline(always)]
1647        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1648            *value
1649        }
1650    }
1651
1652    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1653        for AuthenticationTypes
1654    {
1655        #[inline]
1656        unsafe fn encode(
1657            self,
1658            encoder: &mut fidl::encoding::Encoder<'_, D>,
1659            offset: usize,
1660            _depth: fidl::encoding::Depth,
1661        ) -> fidl::Result<()> {
1662            encoder.debug_check_bounds::<Self>(offset);
1663            encoder.write_num(self.into_primitive(), offset);
1664            Ok(())
1665        }
1666    }
1667
1668    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AuthenticationTypes {
1669        #[inline(always)]
1670        fn new_empty() -> Self {
1671            Self::OpenSystem
1672        }
1673
1674        #[inline]
1675        unsafe fn decode(
1676            &mut self,
1677            decoder: &mut fidl::encoding::Decoder<'_, D>,
1678            offset: usize,
1679            _depth: fidl::encoding::Depth,
1680        ) -> fidl::Result<()> {
1681            decoder.debug_check_bounds::<Self>(offset);
1682            let prim = decoder.read_num::<u32>(offset);
1683
1684            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1685            Ok(())
1686        }
1687    }
1688    unsafe impl fidl::encoding::TypeMarker for ControlledPortState {
1689        type Owned = Self;
1690
1691        #[inline(always)]
1692        fn inline_align(_context: fidl::encoding::Context) -> usize {
1693            std::mem::align_of::<u32>()
1694        }
1695
1696        #[inline(always)]
1697        fn inline_size(_context: fidl::encoding::Context) -> usize {
1698            std::mem::size_of::<u32>()
1699        }
1700
1701        #[inline(always)]
1702        fn encode_is_copy() -> bool {
1703            true
1704        }
1705
1706        #[inline(always)]
1707        fn decode_is_copy() -> bool {
1708            false
1709        }
1710    }
1711
1712    impl fidl::encoding::ValueTypeMarker for ControlledPortState {
1713        type Borrowed<'a> = Self;
1714        #[inline(always)]
1715        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1716            *value
1717        }
1718    }
1719
1720    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1721        for ControlledPortState
1722    {
1723        #[inline]
1724        unsafe fn encode(
1725            self,
1726            encoder: &mut fidl::encoding::Encoder<'_, D>,
1727            offset: usize,
1728            _depth: fidl::encoding::Depth,
1729        ) -> fidl::Result<()> {
1730            encoder.debug_check_bounds::<Self>(offset);
1731            encoder.write_num(self.into_primitive(), offset);
1732            Ok(())
1733        }
1734    }
1735
1736    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlledPortState {
1737        #[inline(always)]
1738        fn new_empty() -> Self {
1739            Self::Closed
1740        }
1741
1742        #[inline]
1743        unsafe fn decode(
1744            &mut self,
1745            decoder: &mut fidl::encoding::Decoder<'_, D>,
1746            offset: usize,
1747            _depth: fidl::encoding::Depth,
1748        ) -> fidl::Result<()> {
1749            decoder.debug_check_bounds::<Self>(offset);
1750            let prim = decoder.read_num::<u32>(offset);
1751
1752            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1753            Ok(())
1754        }
1755    }
1756    unsafe impl fidl::encoding::TypeMarker for EapolResultCode {
1757        type Owned = Self;
1758
1759        #[inline(always)]
1760        fn inline_align(_context: fidl::encoding::Context) -> usize {
1761            std::mem::align_of::<u32>()
1762        }
1763
1764        #[inline(always)]
1765        fn inline_size(_context: fidl::encoding::Context) -> usize {
1766            std::mem::size_of::<u32>()
1767        }
1768
1769        #[inline(always)]
1770        fn encode_is_copy() -> bool {
1771            true
1772        }
1773
1774        #[inline(always)]
1775        fn decode_is_copy() -> bool {
1776            false
1777        }
1778    }
1779
1780    impl fidl::encoding::ValueTypeMarker for EapolResultCode {
1781        type Borrowed<'a> = Self;
1782        #[inline(always)]
1783        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1784            *value
1785        }
1786    }
1787
1788    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1789        for EapolResultCode
1790    {
1791        #[inline]
1792        unsafe fn encode(
1793            self,
1794            encoder: &mut fidl::encoding::Encoder<'_, D>,
1795            offset: usize,
1796            _depth: fidl::encoding::Depth,
1797        ) -> fidl::Result<()> {
1798            encoder.debug_check_bounds::<Self>(offset);
1799            encoder.write_num(self.into_primitive(), offset);
1800            Ok(())
1801        }
1802    }
1803
1804    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolResultCode {
1805        #[inline(always)]
1806        fn new_empty() -> Self {
1807            Self::Success
1808        }
1809
1810        #[inline]
1811        unsafe fn decode(
1812            &mut self,
1813            decoder: &mut fidl::encoding::Decoder<'_, D>,
1814            offset: usize,
1815            _depth: fidl::encoding::Depth,
1816        ) -> fidl::Result<()> {
1817            decoder.debug_check_bounds::<Self>(offset);
1818            let prim = decoder.read_num::<u32>(offset);
1819
1820            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1821            Ok(())
1822        }
1823    }
1824    unsafe impl fidl::encoding::TypeMarker for KeyType {
1825        type Owned = Self;
1826
1827        #[inline(always)]
1828        fn inline_align(_context: fidl::encoding::Context) -> usize {
1829            std::mem::align_of::<u32>()
1830        }
1831
1832        #[inline(always)]
1833        fn inline_size(_context: fidl::encoding::Context) -> usize {
1834            std::mem::size_of::<u32>()
1835        }
1836
1837        #[inline(always)]
1838        fn encode_is_copy() -> bool {
1839            true
1840        }
1841
1842        #[inline(always)]
1843        fn decode_is_copy() -> bool {
1844            false
1845        }
1846    }
1847
1848    impl fidl::encoding::ValueTypeMarker for KeyType {
1849        type Borrowed<'a> = Self;
1850        #[inline(always)]
1851        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1852            *value
1853        }
1854    }
1855
1856    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for KeyType {
1857        #[inline]
1858        unsafe fn encode(
1859            self,
1860            encoder: &mut fidl::encoding::Encoder<'_, D>,
1861            offset: usize,
1862            _depth: fidl::encoding::Depth,
1863        ) -> fidl::Result<()> {
1864            encoder.debug_check_bounds::<Self>(offset);
1865            encoder.write_num(self.into_primitive(), offset);
1866            Ok(())
1867        }
1868    }
1869
1870    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for KeyType {
1871        #[inline(always)]
1872        fn new_empty() -> Self {
1873            Self::Group
1874        }
1875
1876        #[inline]
1877        unsafe fn decode(
1878            &mut self,
1879            decoder: &mut fidl::encoding::Decoder<'_, D>,
1880            offset: usize,
1881            _depth: fidl::encoding::Depth,
1882        ) -> fidl::Result<()> {
1883            decoder.debug_check_bounds::<Self>(offset);
1884            let prim = decoder.read_num::<u32>(offset);
1885
1886            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1887            Ok(())
1888        }
1889    }
1890    unsafe impl fidl::encoding::TypeMarker for ScanResultCode {
1891        type Owned = Self;
1892
1893        #[inline(always)]
1894        fn inline_align(_context: fidl::encoding::Context) -> usize {
1895            std::mem::align_of::<u32>()
1896        }
1897
1898        #[inline(always)]
1899        fn inline_size(_context: fidl::encoding::Context) -> usize {
1900            std::mem::size_of::<u32>()
1901        }
1902
1903        #[inline(always)]
1904        fn encode_is_copy() -> bool {
1905            true
1906        }
1907
1908        #[inline(always)]
1909        fn decode_is_copy() -> bool {
1910            false
1911        }
1912    }
1913
1914    impl fidl::encoding::ValueTypeMarker for ScanResultCode {
1915        type Borrowed<'a> = Self;
1916        #[inline(always)]
1917        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1918            *value
1919        }
1920    }
1921
1922    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanResultCode {
1923        #[inline]
1924        unsafe fn encode(
1925            self,
1926            encoder: &mut fidl::encoding::Encoder<'_, D>,
1927            offset: usize,
1928            _depth: fidl::encoding::Depth,
1929        ) -> fidl::Result<()> {
1930            encoder.debug_check_bounds::<Self>(offset);
1931            encoder.write_num(self.into_primitive(), offset);
1932            Ok(())
1933        }
1934    }
1935
1936    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanResultCode {
1937        #[inline(always)]
1938        fn new_empty() -> Self {
1939            Self::Success
1940        }
1941
1942        #[inline]
1943        unsafe fn decode(
1944            &mut self,
1945            decoder: &mut fidl::encoding::Decoder<'_, D>,
1946            offset: usize,
1947            _depth: fidl::encoding::Depth,
1948        ) -> fidl::Result<()> {
1949            decoder.debug_check_bounds::<Self>(offset);
1950            let prim = decoder.read_num::<u32>(offset);
1951
1952            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1953            Ok(())
1954        }
1955    }
1956    unsafe impl fidl::encoding::TypeMarker for ScanTypes {
1957        type Owned = Self;
1958
1959        #[inline(always)]
1960        fn inline_align(_context: fidl::encoding::Context) -> usize {
1961            std::mem::align_of::<u32>()
1962        }
1963
1964        #[inline(always)]
1965        fn inline_size(_context: fidl::encoding::Context) -> usize {
1966            std::mem::size_of::<u32>()
1967        }
1968
1969        #[inline(always)]
1970        fn encode_is_copy() -> bool {
1971            true
1972        }
1973
1974        #[inline(always)]
1975        fn decode_is_copy() -> bool {
1976            false
1977        }
1978    }
1979
1980    impl fidl::encoding::ValueTypeMarker for ScanTypes {
1981        type Borrowed<'a> = Self;
1982        #[inline(always)]
1983        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1984            *value
1985        }
1986    }
1987
1988    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanTypes {
1989        #[inline]
1990        unsafe fn encode(
1991            self,
1992            encoder: &mut fidl::encoding::Encoder<'_, D>,
1993            offset: usize,
1994            _depth: fidl::encoding::Depth,
1995        ) -> fidl::Result<()> {
1996            encoder.debug_check_bounds::<Self>(offset);
1997            encoder.write_num(self.into_primitive(), offset);
1998            Ok(())
1999        }
2000    }
2001
2002    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanTypes {
2003        #[inline(always)]
2004        fn new_empty() -> Self {
2005            Self::Active
2006        }
2007
2008        #[inline]
2009        unsafe fn decode(
2010            &mut self,
2011            decoder: &mut fidl::encoding::Decoder<'_, D>,
2012            offset: usize,
2013            _depth: fidl::encoding::Depth,
2014        ) -> fidl::Result<()> {
2015            decoder.debug_check_bounds::<Self>(offset);
2016            let prim = decoder.read_num::<u32>(offset);
2017
2018            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2019            Ok(())
2020        }
2021    }
2022    unsafe impl fidl::encoding::TypeMarker for StartResultCode {
2023        type Owned = Self;
2024
2025        #[inline(always)]
2026        fn inline_align(_context: fidl::encoding::Context) -> usize {
2027            std::mem::align_of::<u32>()
2028        }
2029
2030        #[inline(always)]
2031        fn inline_size(_context: fidl::encoding::Context) -> usize {
2032            std::mem::size_of::<u32>()
2033        }
2034
2035        #[inline(always)]
2036        fn encode_is_copy() -> bool {
2037            true
2038        }
2039
2040        #[inline(always)]
2041        fn decode_is_copy() -> bool {
2042            false
2043        }
2044    }
2045
2046    impl fidl::encoding::ValueTypeMarker for StartResultCode {
2047        type Borrowed<'a> = Self;
2048        #[inline(always)]
2049        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2050            *value
2051        }
2052    }
2053
2054    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2055        for StartResultCode
2056    {
2057        #[inline]
2058        unsafe fn encode(
2059            self,
2060            encoder: &mut fidl::encoding::Encoder<'_, D>,
2061            offset: usize,
2062            _depth: fidl::encoding::Depth,
2063        ) -> fidl::Result<()> {
2064            encoder.debug_check_bounds::<Self>(offset);
2065            encoder.write_num(self.into_primitive(), offset);
2066            Ok(())
2067        }
2068    }
2069
2070    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartResultCode {
2071        #[inline(always)]
2072        fn new_empty() -> Self {
2073            Self::Success
2074        }
2075
2076        #[inline]
2077        unsafe fn decode(
2078            &mut self,
2079            decoder: &mut fidl::encoding::Decoder<'_, D>,
2080            offset: usize,
2081            _depth: fidl::encoding::Depth,
2082        ) -> fidl::Result<()> {
2083            decoder.debug_check_bounds::<Self>(offset);
2084            let prim = decoder.read_num::<u32>(offset);
2085
2086            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2087            Ok(())
2088        }
2089    }
2090    unsafe impl fidl::encoding::TypeMarker for StopResultCode {
2091        type Owned = Self;
2092
2093        #[inline(always)]
2094        fn inline_align(_context: fidl::encoding::Context) -> usize {
2095            std::mem::align_of::<u32>()
2096        }
2097
2098        #[inline(always)]
2099        fn inline_size(_context: fidl::encoding::Context) -> usize {
2100            std::mem::size_of::<u32>()
2101        }
2102
2103        #[inline(always)]
2104        fn encode_is_copy() -> bool {
2105            true
2106        }
2107
2108        #[inline(always)]
2109        fn decode_is_copy() -> bool {
2110            false
2111        }
2112    }
2113
2114    impl fidl::encoding::ValueTypeMarker for StopResultCode {
2115        type Borrowed<'a> = Self;
2116        #[inline(always)]
2117        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2118            *value
2119        }
2120    }
2121
2122    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StopResultCode {
2123        #[inline]
2124        unsafe fn encode(
2125            self,
2126            encoder: &mut fidl::encoding::Encoder<'_, D>,
2127            offset: usize,
2128            _depth: fidl::encoding::Depth,
2129        ) -> fidl::Result<()> {
2130            encoder.debug_check_bounds::<Self>(offset);
2131            encoder.write_num(self.into_primitive(), offset);
2132            Ok(())
2133        }
2134    }
2135
2136    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopResultCode {
2137        #[inline(always)]
2138        fn new_empty() -> Self {
2139            Self::Success
2140        }
2141
2142        #[inline]
2143        unsafe fn decode(
2144            &mut self,
2145            decoder: &mut fidl::encoding::Decoder<'_, D>,
2146            offset: usize,
2147            _depth: fidl::encoding::Depth,
2148        ) -> fidl::Result<()> {
2149            decoder.debug_check_bounds::<Self>(offset);
2150            let prim = decoder.read_num::<u32>(offset);
2151
2152            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2153            Ok(())
2154        }
2155    }
2156
2157    impl fidl::encoding::ValueTypeMarker for AssociateIndication {
2158        type Borrowed<'a> = &'a Self;
2159        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2160            value
2161        }
2162    }
2163
2164    unsafe impl fidl::encoding::TypeMarker for AssociateIndication {
2165        type Owned = Self;
2166
2167        #[inline(always)]
2168        fn inline_align(_context: fidl::encoding::Context) -> usize {
2169            8
2170        }
2171
2172        #[inline(always)]
2173        fn inline_size(_context: fidl::encoding::Context) -> usize {
2174            64
2175        }
2176    }
2177
2178    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AssociateIndication, D>
2179        for &AssociateIndication
2180    {
2181        #[inline]
2182        unsafe fn encode(
2183            self,
2184            encoder: &mut fidl::encoding::Encoder<'_, D>,
2185            offset: usize,
2186            _depth: fidl::encoding::Depth,
2187        ) -> fidl::Result<()> {
2188            encoder.debug_check_bounds::<AssociateIndication>(offset);
2189            // Delegate to tuple encoding.
2190            fidl::encoding::Encode::<AssociateIndication, D>::encode(
2191                (
2192                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
2193                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
2194                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.listen_interval),
2195                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid),
2196                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
2197                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>> as fidl::encoding::ValueTypeMarker>::borrow(&self.rsne),
2198                ),
2199                encoder, offset, _depth
2200            )
2201        }
2202    }
2203    unsafe impl<
2204        D: fidl::encoding::ResourceDialect,
2205        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2206        T1: fidl::encoding::Encode<u16, D>,
2207        T2: fidl::encoding::Encode<u16, D>,
2208        T3: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>, D>,
2209        T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
2210        T5: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>, D>,
2211    > fidl::encoding::Encode<AssociateIndication, D> for (T0, T1, T2, T3, T4, T5)
2212    {
2213        #[inline]
2214        unsafe fn encode(
2215            self,
2216            encoder: &mut fidl::encoding::Encoder<'_, D>,
2217            offset: usize,
2218            depth: fidl::encoding::Depth,
2219        ) -> fidl::Result<()> {
2220            encoder.debug_check_bounds::<AssociateIndication>(offset);
2221            // Zero out padding regions. There's no need to apply masks
2222            // because the unmasked parts will be overwritten by fields.
2223            unsafe {
2224                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2225                (ptr as *mut u64).write_unaligned(0);
2226            }
2227            // Write the fields.
2228            self.0.encode(encoder, offset + 0, depth)?;
2229            self.1.encode(encoder, offset + 6, depth)?;
2230            self.2.encode(encoder, offset + 8, depth)?;
2231            self.3.encode(encoder, offset + 16, depth)?;
2232            self.4.encode(encoder, offset + 32, depth)?;
2233            self.5.encode(encoder, offset + 48, depth)?;
2234            Ok(())
2235        }
2236    }
2237
2238    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateIndication {
2239        #[inline(always)]
2240        fn new_empty() -> Self {
2241            Self {
2242                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2243                capability_info: fidl::new_empty!(u16, D),
2244                listen_interval: fidl::new_empty!(u16, D),
2245                ssid: fidl::new_empty!(fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>, D),
2246                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
2247                rsne: fidl::new_empty!(
2248                    fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
2249                    D
2250                ),
2251            }
2252        }
2253
2254        #[inline]
2255        unsafe fn decode(
2256            &mut self,
2257            decoder: &mut fidl::encoding::Decoder<'_, D>,
2258            offset: usize,
2259            _depth: fidl::encoding::Depth,
2260        ) -> fidl::Result<()> {
2261            decoder.debug_check_bounds::<Self>(offset);
2262            // Verify that padding bytes are zero.
2263            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2264            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2265            let mask = 0xffffffffffff0000u64;
2266            let maskedval = padval & mask;
2267            if maskedval != 0 {
2268                return Err(fidl::Error::NonZeroPadding {
2269                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2270                });
2271            }
2272            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2273            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 6, _depth)?;
2274            fidl::decode!(u16, D, &mut self.listen_interval, decoder, offset + 8, _depth)?;
2275            fidl::decode!(
2276                fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>,
2277                D,
2278                &mut self.ssid,
2279                decoder,
2280                offset + 16,
2281                _depth
2282            )?;
2283            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 32, _depth)?;
2284            fidl::decode!(
2285                fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
2286                D,
2287                &mut self.rsne,
2288                decoder,
2289                offset + 48,
2290                _depth
2291            )?;
2292            Ok(())
2293        }
2294    }
2295
2296    impl fidl::encoding::ValueTypeMarker for AssociateResponse {
2297        type Borrowed<'a> = &'a Self;
2298        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2299            value
2300        }
2301    }
2302
2303    unsafe impl fidl::encoding::TypeMarker for AssociateResponse {
2304        type Owned = Self;
2305
2306        #[inline(always)]
2307        fn inline_align(_context: fidl::encoding::Context) -> usize {
2308            8
2309        }
2310
2311        #[inline(always)]
2312        fn inline_size(_context: fidl::encoding::Context) -> usize {
2313            32
2314        }
2315    }
2316
2317    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AssociateResponse, D>
2318        for &AssociateResponse
2319    {
2320        #[inline]
2321        unsafe fn encode(
2322            self,
2323            encoder: &mut fidl::encoding::Encoder<'_, D>,
2324            offset: usize,
2325            _depth: fidl::encoding::Depth,
2326        ) -> fidl::Result<()> {
2327            encoder.debug_check_bounds::<AssociateResponse>(offset);
2328            // Delegate to tuple encoding.
2329            fidl::encoding::Encode::<AssociateResponse, D>::encode(
2330                (
2331                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2332                        &self.peer_sta_address,
2333                    ),
2334                    <AssociateResultCode as fidl::encoding::ValueTypeMarker>::borrow(
2335                        &self.result_code,
2336                    ),
2337                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
2338                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
2339                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(
2340                        &self.rates,
2341                    ),
2342                ),
2343                encoder,
2344                offset,
2345                _depth,
2346            )
2347        }
2348    }
2349    unsafe impl<
2350        D: fidl::encoding::ResourceDialect,
2351        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2352        T1: fidl::encoding::Encode<AssociateResultCode, D>,
2353        T2: fidl::encoding::Encode<u16, D>,
2354        T3: fidl::encoding::Encode<u16, D>,
2355        T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
2356    > fidl::encoding::Encode<AssociateResponse, D> for (T0, T1, T2, T3, T4)
2357    {
2358        #[inline]
2359        unsafe fn encode(
2360            self,
2361            encoder: &mut fidl::encoding::Encoder<'_, D>,
2362            offset: usize,
2363            depth: fidl::encoding::Depth,
2364        ) -> fidl::Result<()> {
2365            encoder.debug_check_bounds::<AssociateResponse>(offset);
2366            // Zero out padding regions. There's no need to apply masks
2367            // because the unmasked parts will be overwritten by fields.
2368            unsafe {
2369                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2370                (ptr as *mut u64).write_unaligned(0);
2371            }
2372            // Write the fields.
2373            self.0.encode(encoder, offset + 0, depth)?;
2374            self.1.encode(encoder, offset + 8, depth)?;
2375            self.2.encode(encoder, offset + 12, depth)?;
2376            self.3.encode(encoder, offset + 14, depth)?;
2377            self.4.encode(encoder, offset + 16, depth)?;
2378            Ok(())
2379        }
2380    }
2381
2382    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateResponse {
2383        #[inline(always)]
2384        fn new_empty() -> Self {
2385            Self {
2386                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2387                result_code: fidl::new_empty!(AssociateResultCode, D),
2388                association_id: fidl::new_empty!(u16, D),
2389                capability_info: fidl::new_empty!(u16, D),
2390                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
2391            }
2392        }
2393
2394        #[inline]
2395        unsafe fn decode(
2396            &mut self,
2397            decoder: &mut fidl::encoding::Decoder<'_, D>,
2398            offset: usize,
2399            _depth: fidl::encoding::Depth,
2400        ) -> fidl::Result<()> {
2401            decoder.debug_check_bounds::<Self>(offset);
2402            // Verify that padding bytes are zero.
2403            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2404            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2405            let mask = 0xffff000000000000u64;
2406            let maskedval = padval & mask;
2407            if maskedval != 0 {
2408                return Err(fidl::Error::NonZeroPadding {
2409                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2410                });
2411            }
2412            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2413            fidl::decode!(
2414                AssociateResultCode,
2415                D,
2416                &mut self.result_code,
2417                decoder,
2418                offset + 8,
2419                _depth
2420            )?;
2421            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 12, _depth)?;
2422            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 14, _depth)?;
2423            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 16, _depth)?;
2424            Ok(())
2425        }
2426    }
2427
2428    impl fidl::encoding::ValueTypeMarker for AuthenticateIndication {
2429        type Borrowed<'a> = &'a Self;
2430        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2431            value
2432        }
2433    }
2434
2435    unsafe impl fidl::encoding::TypeMarker for AuthenticateIndication {
2436        type Owned = Self;
2437
2438        #[inline(always)]
2439        fn inline_align(_context: fidl::encoding::Context) -> usize {
2440            4
2441        }
2442
2443        #[inline(always)]
2444        fn inline_size(_context: fidl::encoding::Context) -> usize {
2445            12
2446        }
2447    }
2448
2449    unsafe impl<D: fidl::encoding::ResourceDialect>
2450        fidl::encoding::Encode<AuthenticateIndication, D> for &AuthenticateIndication
2451    {
2452        #[inline]
2453        unsafe fn encode(
2454            self,
2455            encoder: &mut fidl::encoding::Encoder<'_, D>,
2456            offset: usize,
2457            _depth: fidl::encoding::Depth,
2458        ) -> fidl::Result<()> {
2459            encoder.debug_check_bounds::<AuthenticateIndication>(offset);
2460            // Delegate to tuple encoding.
2461            fidl::encoding::Encode::<AuthenticateIndication, D>::encode(
2462                (
2463                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2464                        &self.peer_sta_address,
2465                    ),
2466                    <AuthenticationTypes as fidl::encoding::ValueTypeMarker>::borrow(
2467                        &self.auth_type,
2468                    ),
2469                ),
2470                encoder,
2471                offset,
2472                _depth,
2473            )
2474        }
2475    }
2476    unsafe impl<
2477        D: fidl::encoding::ResourceDialect,
2478        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2479        T1: fidl::encoding::Encode<AuthenticationTypes, D>,
2480    > fidl::encoding::Encode<AuthenticateIndication, D> for (T0, T1)
2481    {
2482        #[inline]
2483        unsafe fn encode(
2484            self,
2485            encoder: &mut fidl::encoding::Encoder<'_, D>,
2486            offset: usize,
2487            depth: fidl::encoding::Depth,
2488        ) -> fidl::Result<()> {
2489            encoder.debug_check_bounds::<AuthenticateIndication>(offset);
2490            // Zero out padding regions. There's no need to apply masks
2491            // because the unmasked parts will be overwritten by fields.
2492            unsafe {
2493                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
2494                (ptr as *mut u32).write_unaligned(0);
2495            }
2496            // Write the fields.
2497            self.0.encode(encoder, offset + 0, depth)?;
2498            self.1.encode(encoder, offset + 8, depth)?;
2499            Ok(())
2500        }
2501    }
2502
2503    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2504        for AuthenticateIndication
2505    {
2506        #[inline(always)]
2507        fn new_empty() -> Self {
2508            Self {
2509                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2510                auth_type: fidl::new_empty!(AuthenticationTypes, D),
2511            }
2512        }
2513
2514        #[inline]
2515        unsafe fn decode(
2516            &mut self,
2517            decoder: &mut fidl::encoding::Decoder<'_, D>,
2518            offset: usize,
2519            _depth: fidl::encoding::Depth,
2520        ) -> fidl::Result<()> {
2521            decoder.debug_check_bounds::<Self>(offset);
2522            // Verify that padding bytes are zero.
2523            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
2524            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2525            let mask = 0xffff0000u32;
2526            let maskedval = padval & mask;
2527            if maskedval != 0 {
2528                return Err(fidl::Error::NonZeroPadding {
2529                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
2530                });
2531            }
2532            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2533            fidl::decode!(
2534                AuthenticationTypes,
2535                D,
2536                &mut self.auth_type,
2537                decoder,
2538                offset + 8,
2539                _depth
2540            )?;
2541            Ok(())
2542        }
2543    }
2544
2545    impl fidl::encoding::ValueTypeMarker for AuthenticateResponse {
2546        type Borrowed<'a> = &'a Self;
2547        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2548            value
2549        }
2550    }
2551
2552    unsafe impl fidl::encoding::TypeMarker for AuthenticateResponse {
2553        type Owned = Self;
2554
2555        #[inline(always)]
2556        fn inline_align(_context: fidl::encoding::Context) -> usize {
2557            4
2558        }
2559
2560        #[inline(always)]
2561        fn inline_size(_context: fidl::encoding::Context) -> usize {
2562            12
2563        }
2564    }
2565
2566    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AuthenticateResponse, D>
2567        for &AuthenticateResponse
2568    {
2569        #[inline]
2570        unsafe fn encode(
2571            self,
2572            encoder: &mut fidl::encoding::Encoder<'_, D>,
2573            offset: usize,
2574            _depth: fidl::encoding::Depth,
2575        ) -> fidl::Result<()> {
2576            encoder.debug_check_bounds::<AuthenticateResponse>(offset);
2577            // Delegate to tuple encoding.
2578            fidl::encoding::Encode::<AuthenticateResponse, D>::encode(
2579                (
2580                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2581                        &self.peer_sta_address,
2582                    ),
2583                    <AuthenticateResultCode as fidl::encoding::ValueTypeMarker>::borrow(
2584                        &self.result_code,
2585                    ),
2586                ),
2587                encoder,
2588                offset,
2589                _depth,
2590            )
2591        }
2592    }
2593    unsafe impl<
2594        D: fidl::encoding::ResourceDialect,
2595        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2596        T1: fidl::encoding::Encode<AuthenticateResultCode, D>,
2597    > fidl::encoding::Encode<AuthenticateResponse, D> for (T0, T1)
2598    {
2599        #[inline]
2600        unsafe fn encode(
2601            self,
2602            encoder: &mut fidl::encoding::Encoder<'_, D>,
2603            offset: usize,
2604            depth: fidl::encoding::Depth,
2605        ) -> fidl::Result<()> {
2606            encoder.debug_check_bounds::<AuthenticateResponse>(offset);
2607            // Zero out padding regions. There's no need to apply masks
2608            // because the unmasked parts will be overwritten by fields.
2609            unsafe {
2610                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
2611                (ptr as *mut u32).write_unaligned(0);
2612            }
2613            // Write the fields.
2614            self.0.encode(encoder, offset + 0, depth)?;
2615            self.1.encode(encoder, offset + 8, depth)?;
2616            Ok(())
2617        }
2618    }
2619
2620    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AuthenticateResponse {
2621        #[inline(always)]
2622        fn new_empty() -> Self {
2623            Self {
2624                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2625                result_code: fidl::new_empty!(AuthenticateResultCode, D),
2626            }
2627        }
2628
2629        #[inline]
2630        unsafe fn decode(
2631            &mut self,
2632            decoder: &mut fidl::encoding::Decoder<'_, D>,
2633            offset: usize,
2634            _depth: fidl::encoding::Depth,
2635        ) -> fidl::Result<()> {
2636            decoder.debug_check_bounds::<Self>(offset);
2637            // Verify that padding bytes are zero.
2638            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
2639            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2640            let mask = 0xffff0000u32;
2641            let maskedval = padval & mask;
2642            if maskedval != 0 {
2643                return Err(fidl::Error::NonZeroPadding {
2644                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
2645                });
2646            }
2647            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2648            fidl::decode!(
2649                AuthenticateResultCode,
2650                D,
2651                &mut self.result_code,
2652                decoder,
2653                offset + 8,
2654                _depth
2655            )?;
2656            Ok(())
2657        }
2658    }
2659
2660    impl fidl::encoding::ValueTypeMarker for BandCapability {
2661        type Borrowed<'a> = &'a Self;
2662        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2663            value
2664        }
2665    }
2666
2667    unsafe impl fidl::encoding::TypeMarker for BandCapability {
2668        type Owned = Self;
2669
2670        #[inline(always)]
2671        fn inline_align(_context: fidl::encoding::Context) -> usize {
2672            8
2673        }
2674
2675        #[inline(always)]
2676        fn inline_size(_context: fidl::encoding::Context) -> usize {
2677            56
2678        }
2679    }
2680
2681    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandCapability, D>
2682        for &BandCapability
2683    {
2684        #[inline]
2685        unsafe fn encode(
2686            self,
2687            encoder: &mut fidl::encoding::Encoder<'_, D>,
2688            offset: usize,
2689            _depth: fidl::encoding::Depth,
2690        ) -> fidl::Result<()> {
2691            encoder.debug_check_bounds::<BandCapability>(offset);
2692            // Delegate to tuple encoding.
2693            fidl::encoding::Encode::<BandCapability, D>::encode(
2694                (
2695                    <fidl_fuchsia_wlan_ieee80211_common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow(&self.band),
2696                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::ValueTypeMarker>::borrow(&self.basic_rates),
2697                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.ht_cap),
2698                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_cap),
2699                    <fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.primary_channels),
2700                ),
2701                encoder, offset, _depth
2702            )
2703        }
2704    }
2705    unsafe impl<
2706        D: fidl::encoding::ResourceDialect,
2707        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::WlanBand, D>,
2708        T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 12>, D>,
2709        T2: fidl::encoding::Encode<
2710                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
2711                D,
2712            >,
2713        T3: fidl::encoding::Encode<
2714                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
2715                D,
2716            >,
2717        T4: fidl::encoding::Encode<
2718                fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>,
2719                D,
2720            >,
2721    > fidl::encoding::Encode<BandCapability, D> for (T0, T1, T2, T3, T4)
2722    {
2723        #[inline]
2724        unsafe fn encode(
2725            self,
2726            encoder: &mut fidl::encoding::Encoder<'_, D>,
2727            offset: usize,
2728            depth: fidl::encoding::Depth,
2729        ) -> fidl::Result<()> {
2730            encoder.debug_check_bounds::<BandCapability>(offset);
2731            // Zero out padding regions. There's no need to apply masks
2732            // because the unmasked parts will be overwritten by fields.
2733            unsafe {
2734                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2735                (ptr as *mut u64).write_unaligned(0);
2736            }
2737            // Write the fields.
2738            self.0.encode(encoder, offset + 0, depth)?;
2739            self.1.encode(encoder, offset + 8, depth)?;
2740            self.2.encode(encoder, offset + 24, depth)?;
2741            self.3.encode(encoder, offset + 32, depth)?;
2742            self.4.encode(encoder, offset + 40, depth)?;
2743            Ok(())
2744        }
2745    }
2746
2747    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandCapability {
2748        #[inline(always)]
2749        fn new_empty() -> Self {
2750            Self {
2751                band: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::WlanBand, D),
2752                basic_rates: fidl::new_empty!(fidl::encoding::Vector<u8, 12>, D),
2753                ht_cap: fidl::new_empty!(
2754                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
2755                    D
2756                ),
2757                vht_cap: fidl::new_empty!(
2758                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
2759                    D
2760                ),
2761                primary_channels: fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D),
2762            }
2763        }
2764
2765        #[inline]
2766        unsafe fn decode(
2767            &mut self,
2768            decoder: &mut fidl::encoding::Decoder<'_, D>,
2769            offset: usize,
2770            _depth: fidl::encoding::Depth,
2771        ) -> fidl::Result<()> {
2772            decoder.debug_check_bounds::<Self>(offset);
2773            // Verify that padding bytes are zero.
2774            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2775            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2776            let mask = 0xffffffffffffff00u64;
2777            let maskedval = padval & mask;
2778            if maskedval != 0 {
2779                return Err(fidl::Error::NonZeroPadding {
2780                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2781                });
2782            }
2783            fidl::decode!(
2784                fidl_fuchsia_wlan_ieee80211_common::WlanBand,
2785                D,
2786                &mut self.band,
2787                decoder,
2788                offset + 0,
2789                _depth
2790            )?;
2791            fidl::decode!(fidl::encoding::Vector<u8, 12>, D, &mut self.basic_rates, decoder, offset + 8, _depth)?;
2792            fidl::decode!(
2793                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
2794                D,
2795                &mut self.ht_cap,
2796                decoder,
2797                offset + 24,
2798                _depth
2799            )?;
2800            fidl::decode!(
2801                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
2802                D,
2803                &mut self.vht_cap,
2804                decoder,
2805                offset + 32,
2806                _depth
2807            )?;
2808            fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D, &mut self.primary_channels, decoder, offset + 40, _depth)?;
2809            Ok(())
2810        }
2811    }
2812
2813    impl fidl::encoding::ValueTypeMarker for CapturedFrameResult {
2814        type Borrowed<'a> = &'a Self;
2815        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2816            value
2817        }
2818    }
2819
2820    unsafe impl fidl::encoding::TypeMarker for CapturedFrameResult {
2821        type Owned = Self;
2822
2823        #[inline(always)]
2824        fn inline_align(_context: fidl::encoding::Context) -> usize {
2825            8
2826        }
2827
2828        #[inline(always)]
2829        fn inline_size(_context: fidl::encoding::Context) -> usize {
2830            16
2831        }
2832    }
2833
2834    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CapturedFrameResult, D>
2835        for &CapturedFrameResult
2836    {
2837        #[inline]
2838        unsafe fn encode(
2839            self,
2840            encoder: &mut fidl::encoding::Encoder<'_, D>,
2841            offset: usize,
2842            _depth: fidl::encoding::Depth,
2843        ) -> fidl::Result<()> {
2844            encoder.debug_check_bounds::<CapturedFrameResult>(offset);
2845            // Delegate to tuple encoding.
2846            fidl::encoding::Encode::<CapturedFrameResult, D>::encode(
2847                (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
2848                    &self.frame,
2849                ),),
2850                encoder,
2851                offset,
2852                _depth,
2853            )
2854        }
2855    }
2856    unsafe impl<
2857        D: fidl::encoding::ResourceDialect,
2858        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2859    > fidl::encoding::Encode<CapturedFrameResult, D> for (T0,)
2860    {
2861        #[inline]
2862        unsafe fn encode(
2863            self,
2864            encoder: &mut fidl::encoding::Encoder<'_, D>,
2865            offset: usize,
2866            depth: fidl::encoding::Depth,
2867        ) -> fidl::Result<()> {
2868            encoder.debug_check_bounds::<CapturedFrameResult>(offset);
2869            // Zero out padding regions. There's no need to apply masks
2870            // because the unmasked parts will be overwritten by fields.
2871            // Write the fields.
2872            self.0.encode(encoder, offset + 0, depth)?;
2873            Ok(())
2874        }
2875    }
2876
2877    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CapturedFrameResult {
2878        #[inline(always)]
2879        fn new_empty() -> Self {
2880            Self { frame: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
2881        }
2882
2883        #[inline]
2884        unsafe fn decode(
2885            &mut self,
2886            decoder: &mut fidl::encoding::Decoder<'_, D>,
2887            offset: usize,
2888            _depth: fidl::encoding::Depth,
2889        ) -> fidl::Result<()> {
2890            decoder.debug_check_bounds::<Self>(offset);
2891            // Verify that padding bytes are zero.
2892            fidl::decode!(
2893                fidl::encoding::UnboundedVector<u8>,
2894                D,
2895                &mut self.frame,
2896                decoder,
2897                offset + 0,
2898                _depth
2899            )?;
2900            Ok(())
2901        }
2902    }
2903
2904    impl fidl::encoding::ValueTypeMarker for ConnectConfirm {
2905        type Borrowed<'a> = &'a Self;
2906        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2907            value
2908        }
2909    }
2910
2911    unsafe impl fidl::encoding::TypeMarker for ConnectConfirm {
2912        type Owned = Self;
2913
2914        #[inline(always)]
2915        fn inline_align(_context: fidl::encoding::Context) -> usize {
2916            8
2917        }
2918
2919        #[inline(always)]
2920        fn inline_size(_context: fidl::encoding::Context) -> usize {
2921            32
2922        }
2923    }
2924
2925    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectConfirm, D>
2926        for &ConnectConfirm
2927    {
2928        #[inline]
2929        unsafe fn encode(
2930            self,
2931            encoder: &mut fidl::encoding::Encoder<'_, D>,
2932            offset: usize,
2933            _depth: fidl::encoding::Depth,
2934        ) -> fidl::Result<()> {
2935            encoder.debug_check_bounds::<ConnectConfirm>(offset);
2936            // Delegate to tuple encoding.
2937            fidl::encoding::Encode::<ConnectConfirm, D>::encode(
2938                (
2939                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
2940                    <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
2941                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
2942                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
2943                ),
2944                encoder, offset, _depth
2945            )
2946        }
2947    }
2948    unsafe impl<
2949        D: fidl::encoding::ResourceDialect,
2950        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2951        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>,
2952        T2: fidl::encoding::Encode<u16, D>,
2953        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2954    > fidl::encoding::Encode<ConnectConfirm, D> for (T0, T1, T2, T3)
2955    {
2956        #[inline]
2957        unsafe fn encode(
2958            self,
2959            encoder: &mut fidl::encoding::Encoder<'_, D>,
2960            offset: usize,
2961            depth: fidl::encoding::Depth,
2962        ) -> fidl::Result<()> {
2963            encoder.debug_check_bounds::<ConnectConfirm>(offset);
2964            // Zero out padding regions. There's no need to apply masks
2965            // because the unmasked parts will be overwritten by fields.
2966            unsafe {
2967                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2968                (ptr as *mut u64).write_unaligned(0);
2969            }
2970            // Write the fields.
2971            self.0.encode(encoder, offset + 0, depth)?;
2972            self.1.encode(encoder, offset + 6, depth)?;
2973            self.2.encode(encoder, offset + 8, depth)?;
2974            self.3.encode(encoder, offset + 16, depth)?;
2975            Ok(())
2976        }
2977    }
2978
2979    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectConfirm {
2980        #[inline(always)]
2981        fn new_empty() -> Self {
2982            Self {
2983                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2984                result_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D),
2985                association_id: fidl::new_empty!(u16, D),
2986                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
2987            }
2988        }
2989
2990        #[inline]
2991        unsafe fn decode(
2992            &mut self,
2993            decoder: &mut fidl::encoding::Decoder<'_, D>,
2994            offset: usize,
2995            _depth: fidl::encoding::Depth,
2996        ) -> fidl::Result<()> {
2997            decoder.debug_check_bounds::<Self>(offset);
2998            // Verify that padding bytes are zero.
2999            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
3000            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3001            let mask = 0xffffffffffff0000u64;
3002            let maskedval = padval & mask;
3003            if maskedval != 0 {
3004                return Err(fidl::Error::NonZeroPadding {
3005                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
3006                });
3007            }
3008            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
3009            fidl::decode!(
3010                fidl_fuchsia_wlan_ieee80211_common::StatusCode,
3011                D,
3012                &mut self.result_code,
3013                decoder,
3014                offset + 6,
3015                _depth
3016            )?;
3017            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 8, _depth)?;
3018            fidl::decode!(
3019                fidl::encoding::UnboundedVector<u8>,
3020                D,
3021                &mut self.association_ies,
3022                decoder,
3023                offset + 16,
3024                _depth
3025            )?;
3026            Ok(())
3027        }
3028    }
3029
3030    impl fidl::encoding::ValueTypeMarker for ConnectRequest {
3031        type Borrowed<'a> = &'a Self;
3032        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3033            value
3034        }
3035    }
3036
3037    unsafe impl fidl::encoding::TypeMarker for ConnectRequest {
3038        type Owned = Self;
3039
3040        #[inline(always)]
3041        fn inline_align(_context: fidl::encoding::Context) -> usize {
3042            8
3043        }
3044
3045        #[inline(always)]
3046        fn inline_size(_context: fidl::encoding::Context) -> usize {
3047            104
3048        }
3049    }
3050
3051    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectRequest, D>
3052        for &ConnectRequest
3053    {
3054        #[inline]
3055        unsafe fn encode(
3056            self,
3057            encoder: &mut fidl::encoding::Encoder<'_, D>,
3058            offset: usize,
3059            _depth: fidl::encoding::Depth,
3060        ) -> fidl::Result<()> {
3061            encoder.debug_check_bounds::<ConnectRequest>(offset);
3062            // Delegate to tuple encoding.
3063            fidl::encoding::Encode::<ConnectRequest, D>::encode(
3064                (
3065                    <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
3066                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.connect_failure_timeout),
3067                    <AuthenticationTypes as fidl::encoding::ValueTypeMarker>::borrow(&self.auth_type),
3068                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.sae_password),
3069                    <fidl::encoding::Boxed<SetKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.wep_key),
3070                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow(&self.security_ie),
3071                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_internal_common::OwePublicKey> as fidl::encoding::ValueTypeMarker>::borrow(&self.owe_public_key),
3072                ),
3073                encoder, offset, _depth
3074            )
3075        }
3076    }
3077    unsafe impl<
3078        D: fidl::encoding::ResourceDialect,
3079        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>,
3080        T1: fidl::encoding::Encode<u32, D>,
3081        T2: fidl::encoding::Encode<AuthenticationTypes, D>,
3082        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
3083        T4: fidl::encoding::Encode<fidl::encoding::Boxed<SetKeyDescriptor>, D>,
3084        T5: fidl::encoding::Encode<fidl::encoding::Vector<u8, 257>, D>,
3085        T6: fidl::encoding::Encode<
3086                fidl::encoding::Boxed<fidl_fuchsia_wlan_internal_common::OwePublicKey>,
3087                D,
3088            >,
3089    > fidl::encoding::Encode<ConnectRequest, D> for (T0, T1, T2, T3, T4, T5, T6)
3090    {
3091        #[inline]
3092        unsafe fn encode(
3093            self,
3094            encoder: &mut fidl::encoding::Encoder<'_, D>,
3095            offset: usize,
3096            depth: fidl::encoding::Depth,
3097        ) -> fidl::Result<()> {
3098            encoder.debug_check_bounds::<ConnectRequest>(offset);
3099            // Zero out padding regions. There's no need to apply masks
3100            // because the unmasked parts will be overwritten by fields.
3101            // Write the fields.
3102            self.0.encode(encoder, offset + 0, depth)?;
3103            self.1.encode(encoder, offset + 48, depth)?;
3104            self.2.encode(encoder, offset + 52, depth)?;
3105            self.3.encode(encoder, offset + 56, depth)?;
3106            self.4.encode(encoder, offset + 72, depth)?;
3107            self.5.encode(encoder, offset + 80, depth)?;
3108            self.6.encode(encoder, offset + 96, depth)?;
3109            Ok(())
3110        }
3111    }
3112
3113    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectRequest {
3114        #[inline(always)]
3115        fn new_empty() -> Self {
3116            Self {
3117                selected_bss: fidl::new_empty!(
3118                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
3119                    D
3120                ),
3121                connect_failure_timeout: fidl::new_empty!(u32, D),
3122                auth_type: fidl::new_empty!(AuthenticationTypes, D),
3123                sae_password: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
3124                wep_key: fidl::new_empty!(fidl::encoding::Boxed<SetKeyDescriptor>, D),
3125                security_ie: fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D),
3126                owe_public_key: fidl::new_empty!(
3127                    fidl::encoding::Boxed<fidl_fuchsia_wlan_internal_common::OwePublicKey>,
3128                    D
3129                ),
3130            }
3131        }
3132
3133        #[inline]
3134        unsafe fn decode(
3135            &mut self,
3136            decoder: &mut fidl::encoding::Decoder<'_, D>,
3137            offset: usize,
3138            _depth: fidl::encoding::Depth,
3139        ) -> fidl::Result<()> {
3140            decoder.debug_check_bounds::<Self>(offset);
3141            // Verify that padding bytes are zero.
3142            fidl::decode!(
3143                fidl_fuchsia_wlan_ieee80211_common::BssDescription,
3144                D,
3145                &mut self.selected_bss,
3146                decoder,
3147                offset + 0,
3148                _depth
3149            )?;
3150            fidl::decode!(u32, D, &mut self.connect_failure_timeout, decoder, offset + 48, _depth)?;
3151            fidl::decode!(
3152                AuthenticationTypes,
3153                D,
3154                &mut self.auth_type,
3155                decoder,
3156                offset + 52,
3157                _depth
3158            )?;
3159            fidl::decode!(
3160                fidl::encoding::UnboundedVector<u8>,
3161                D,
3162                &mut self.sae_password,
3163                decoder,
3164                offset + 56,
3165                _depth
3166            )?;
3167            fidl::decode!(
3168                fidl::encoding::Boxed<SetKeyDescriptor>,
3169                D,
3170                &mut self.wep_key,
3171                decoder,
3172                offset + 72,
3173                _depth
3174            )?;
3175            fidl::decode!(fidl::encoding::Vector<u8, 257>, D, &mut self.security_ie, decoder, offset + 80, _depth)?;
3176            fidl::decode!(
3177                fidl::encoding::Boxed<fidl_fuchsia_wlan_internal_common::OwePublicKey>,
3178                D,
3179                &mut self.owe_public_key,
3180                decoder,
3181                offset + 96,
3182                _depth
3183            )?;
3184            Ok(())
3185        }
3186    }
3187
3188    impl fidl::encoding::ValueTypeMarker for Country {
3189        type Borrowed<'a> = &'a Self;
3190        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3191            value
3192        }
3193    }
3194
3195    unsafe impl fidl::encoding::TypeMarker for Country {
3196        type Owned = Self;
3197
3198        #[inline(always)]
3199        fn inline_align(_context: fidl::encoding::Context) -> usize {
3200            1
3201        }
3202
3203        #[inline(always)]
3204        fn inline_size(_context: fidl::encoding::Context) -> usize {
3205            3
3206        }
3207        #[inline(always)]
3208        fn encode_is_copy() -> bool {
3209            true
3210        }
3211
3212        #[inline(always)]
3213        fn decode_is_copy() -> bool {
3214            true
3215        }
3216    }
3217
3218    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Country, D> for &Country {
3219        #[inline]
3220        unsafe fn encode(
3221            self,
3222            encoder: &mut fidl::encoding::Encoder<'_, D>,
3223            offset: usize,
3224            _depth: fidl::encoding::Depth,
3225        ) -> fidl::Result<()> {
3226            encoder.debug_check_bounds::<Country>(offset);
3227            unsafe {
3228                // Copy the object into the buffer.
3229                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3230                (buf_ptr as *mut Country).write_unaligned((self as *const Country).read());
3231                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3232                // done second because the memcpy will write garbage to these bytes.
3233            }
3234            Ok(())
3235        }
3236    }
3237    unsafe impl<
3238        D: fidl::encoding::ResourceDialect,
3239        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 2>, D>,
3240        T1: fidl::encoding::Encode<u8, D>,
3241    > fidl::encoding::Encode<Country, D> for (T0, T1)
3242    {
3243        #[inline]
3244        unsafe fn encode(
3245            self,
3246            encoder: &mut fidl::encoding::Encoder<'_, D>,
3247            offset: usize,
3248            depth: fidl::encoding::Depth,
3249        ) -> fidl::Result<()> {
3250            encoder.debug_check_bounds::<Country>(offset);
3251            // Zero out padding regions. There's no need to apply masks
3252            // because the unmasked parts will be overwritten by fields.
3253            // Write the fields.
3254            self.0.encode(encoder, offset + 0, depth)?;
3255            self.1.encode(encoder, offset + 2, depth)?;
3256            Ok(())
3257        }
3258    }
3259
3260    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Country {
3261        #[inline(always)]
3262        fn new_empty() -> Self {
3263            Self {
3264                alpha2: fidl::new_empty!(fidl::encoding::Array<u8, 2>, D),
3265                suffix: fidl::new_empty!(u8, D),
3266            }
3267        }
3268
3269        #[inline]
3270        unsafe fn decode(
3271            &mut self,
3272            decoder: &mut fidl::encoding::Decoder<'_, D>,
3273            offset: usize,
3274            _depth: fidl::encoding::Depth,
3275        ) -> fidl::Result<()> {
3276            decoder.debug_check_bounds::<Self>(offset);
3277            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3278            // Verify that padding bytes are zero.
3279            // Copy from the buffer into the object.
3280            unsafe {
3281                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 3);
3282            }
3283            Ok(())
3284        }
3285    }
3286
3287    impl fidl::encoding::ValueTypeMarker for DeauthenticateConfirm {
3288        type Borrowed<'a> = &'a Self;
3289        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3290            value
3291        }
3292    }
3293
3294    unsafe impl fidl::encoding::TypeMarker for DeauthenticateConfirm {
3295        type Owned = Self;
3296
3297        #[inline(always)]
3298        fn inline_align(_context: fidl::encoding::Context) -> usize {
3299            1
3300        }
3301
3302        #[inline(always)]
3303        fn inline_size(_context: fidl::encoding::Context) -> usize {
3304            6
3305        }
3306        #[inline(always)]
3307        fn encode_is_copy() -> bool {
3308            true
3309        }
3310
3311        #[inline(always)]
3312        fn decode_is_copy() -> bool {
3313            true
3314        }
3315    }
3316
3317    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeauthenticateConfirm, D>
3318        for &DeauthenticateConfirm
3319    {
3320        #[inline]
3321        unsafe fn encode(
3322            self,
3323            encoder: &mut fidl::encoding::Encoder<'_, D>,
3324            offset: usize,
3325            _depth: fidl::encoding::Depth,
3326        ) -> fidl::Result<()> {
3327            encoder.debug_check_bounds::<DeauthenticateConfirm>(offset);
3328            unsafe {
3329                // Copy the object into the buffer.
3330                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3331                (buf_ptr as *mut DeauthenticateConfirm)
3332                    .write_unaligned((self as *const DeauthenticateConfirm).read());
3333                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3334                // done second because the memcpy will write garbage to these bytes.
3335            }
3336            Ok(())
3337        }
3338    }
3339    unsafe impl<
3340        D: fidl::encoding::ResourceDialect,
3341        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3342    > fidl::encoding::Encode<DeauthenticateConfirm, D> for (T0,)
3343    {
3344        #[inline]
3345        unsafe fn encode(
3346            self,
3347            encoder: &mut fidl::encoding::Encoder<'_, D>,
3348            offset: usize,
3349            depth: fidl::encoding::Depth,
3350        ) -> fidl::Result<()> {
3351            encoder.debug_check_bounds::<DeauthenticateConfirm>(offset);
3352            // Zero out padding regions. There's no need to apply masks
3353            // because the unmasked parts will be overwritten by fields.
3354            // Write the fields.
3355            self.0.encode(encoder, offset + 0, depth)?;
3356            Ok(())
3357        }
3358    }
3359
3360    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeauthenticateConfirm {
3361        #[inline(always)]
3362        fn new_empty() -> Self {
3363            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
3364        }
3365
3366        #[inline]
3367        unsafe fn decode(
3368            &mut self,
3369            decoder: &mut fidl::encoding::Decoder<'_, D>,
3370            offset: usize,
3371            _depth: fidl::encoding::Depth,
3372        ) -> fidl::Result<()> {
3373            decoder.debug_check_bounds::<Self>(offset);
3374            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3375            // Verify that padding bytes are zero.
3376            // Copy from the buffer into the object.
3377            unsafe {
3378                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
3379            }
3380            Ok(())
3381        }
3382    }
3383
3384    impl fidl::encoding::ValueTypeMarker for DeauthenticateIndication {
3385        type Borrowed<'a> = &'a Self;
3386        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3387            value
3388        }
3389    }
3390
3391    unsafe impl fidl::encoding::TypeMarker for DeauthenticateIndication {
3392        type Owned = Self;
3393
3394        #[inline(always)]
3395        fn inline_align(_context: fidl::encoding::Context) -> usize {
3396            2
3397        }
3398
3399        #[inline(always)]
3400        fn inline_size(_context: fidl::encoding::Context) -> usize {
3401            10
3402        }
3403    }
3404
3405    unsafe impl<D: fidl::encoding::ResourceDialect>
3406        fidl::encoding::Encode<DeauthenticateIndication, D> for &DeauthenticateIndication
3407    {
3408        #[inline]
3409        unsafe fn encode(
3410            self,
3411            encoder: &mut fidl::encoding::Encoder<'_, D>,
3412            offset: usize,
3413            _depth: fidl::encoding::Depth,
3414        ) -> fidl::Result<()> {
3415            encoder.debug_check_bounds::<DeauthenticateIndication>(offset);
3416            // Delegate to tuple encoding.
3417            fidl::encoding::Encode::<DeauthenticateIndication, D>::encode(
3418                (
3419                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3420                    <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3421                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.locally_initiated),
3422                ),
3423                encoder, offset, _depth
3424            )
3425        }
3426    }
3427    unsafe impl<
3428        D: fidl::encoding::ResourceDialect,
3429        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3430        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>,
3431        T2: fidl::encoding::Encode<bool, D>,
3432    > fidl::encoding::Encode<DeauthenticateIndication, D> for (T0, T1, T2)
3433    {
3434        #[inline]
3435        unsafe fn encode(
3436            self,
3437            encoder: &mut fidl::encoding::Encoder<'_, D>,
3438            offset: usize,
3439            depth: fidl::encoding::Depth,
3440        ) -> fidl::Result<()> {
3441            encoder.debug_check_bounds::<DeauthenticateIndication>(offset);
3442            // Zero out padding regions. There's no need to apply masks
3443            // because the unmasked parts will be overwritten by fields.
3444            unsafe {
3445                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3446                (ptr as *mut u16).write_unaligned(0);
3447            }
3448            // Write the fields.
3449            self.0.encode(encoder, offset + 0, depth)?;
3450            self.1.encode(encoder, offset + 6, depth)?;
3451            self.2.encode(encoder, offset + 8, depth)?;
3452            Ok(())
3453        }
3454    }
3455
3456    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3457        for DeauthenticateIndication
3458    {
3459        #[inline(always)]
3460        fn new_empty() -> Self {
3461            Self {
3462                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3463                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D),
3464                locally_initiated: fidl::new_empty!(bool, D),
3465            }
3466        }
3467
3468        #[inline]
3469        unsafe fn decode(
3470            &mut self,
3471            decoder: &mut fidl::encoding::Decoder<'_, D>,
3472            offset: usize,
3473            _depth: fidl::encoding::Depth,
3474        ) -> fidl::Result<()> {
3475            decoder.debug_check_bounds::<Self>(offset);
3476            // Verify that padding bytes are zero.
3477            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
3478            let padval = unsafe { (ptr as *const u16).read_unaligned() };
3479            let mask = 0xff00u16;
3480            let maskedval = padval & mask;
3481            if maskedval != 0 {
3482                return Err(fidl::Error::NonZeroPadding {
3483                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
3484                });
3485            }
3486            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
3487            fidl::decode!(
3488                fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
3489                D,
3490                &mut self.reason_code,
3491                decoder,
3492                offset + 6,
3493                _depth
3494            )?;
3495            fidl::decode!(bool, D, &mut self.locally_initiated, decoder, offset + 8, _depth)?;
3496            Ok(())
3497        }
3498    }
3499
3500    impl fidl::encoding::ValueTypeMarker for DeauthenticateRequest {
3501        type Borrowed<'a> = &'a Self;
3502        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3503            value
3504        }
3505    }
3506
3507    unsafe impl fidl::encoding::TypeMarker for DeauthenticateRequest {
3508        type Owned = Self;
3509
3510        #[inline(always)]
3511        fn inline_align(_context: fidl::encoding::Context) -> usize {
3512            2
3513        }
3514
3515        #[inline(always)]
3516        fn inline_size(_context: fidl::encoding::Context) -> usize {
3517            8
3518        }
3519    }
3520
3521    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeauthenticateRequest, D>
3522        for &DeauthenticateRequest
3523    {
3524        #[inline]
3525        unsafe fn encode(
3526            self,
3527            encoder: &mut fidl::encoding::Encoder<'_, D>,
3528            offset: usize,
3529            _depth: fidl::encoding::Depth,
3530        ) -> fidl::Result<()> {
3531            encoder.debug_check_bounds::<DeauthenticateRequest>(offset);
3532            // Delegate to tuple encoding.
3533            fidl::encoding::Encode::<DeauthenticateRequest, D>::encode(
3534                (
3535                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3536                    <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3537                ),
3538                encoder, offset, _depth
3539            )
3540        }
3541    }
3542    unsafe impl<
3543        D: fidl::encoding::ResourceDialect,
3544        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3545        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>,
3546    > fidl::encoding::Encode<DeauthenticateRequest, D> for (T0, T1)
3547    {
3548        #[inline]
3549        unsafe fn encode(
3550            self,
3551            encoder: &mut fidl::encoding::Encoder<'_, D>,
3552            offset: usize,
3553            depth: fidl::encoding::Depth,
3554        ) -> fidl::Result<()> {
3555            encoder.debug_check_bounds::<DeauthenticateRequest>(offset);
3556            // Zero out padding regions. There's no need to apply masks
3557            // because the unmasked parts will be overwritten by fields.
3558            // Write the fields.
3559            self.0.encode(encoder, offset + 0, depth)?;
3560            self.1.encode(encoder, offset + 6, depth)?;
3561            Ok(())
3562        }
3563    }
3564
3565    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeauthenticateRequest {
3566        #[inline(always)]
3567        fn new_empty() -> Self {
3568            Self {
3569                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3570                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D),
3571            }
3572        }
3573
3574        #[inline]
3575        unsafe fn decode(
3576            &mut self,
3577            decoder: &mut fidl::encoding::Decoder<'_, D>,
3578            offset: usize,
3579            _depth: fidl::encoding::Depth,
3580        ) -> fidl::Result<()> {
3581            decoder.debug_check_bounds::<Self>(offset);
3582            // Verify that padding bytes are zero.
3583            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
3584            fidl::decode!(
3585                fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
3586                D,
3587                &mut self.reason_code,
3588                decoder,
3589                offset + 6,
3590                _depth
3591            )?;
3592            Ok(())
3593        }
3594    }
3595
3596    impl fidl::encoding::ValueTypeMarker for DeleteKeyDescriptor {
3597        type Borrowed<'a> = &'a Self;
3598        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3599            value
3600        }
3601    }
3602
3603    unsafe impl fidl::encoding::TypeMarker for DeleteKeyDescriptor {
3604        type Owned = Self;
3605
3606        #[inline(always)]
3607        fn inline_align(_context: fidl::encoding::Context) -> usize {
3608            4
3609        }
3610
3611        #[inline(always)]
3612        fn inline_size(_context: fidl::encoding::Context) -> usize {
3613            16
3614        }
3615    }
3616
3617    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeleteKeyDescriptor, D>
3618        for &DeleteKeyDescriptor
3619    {
3620        #[inline]
3621        unsafe fn encode(
3622            self,
3623            encoder: &mut fidl::encoding::Encoder<'_, D>,
3624            offset: usize,
3625            _depth: fidl::encoding::Depth,
3626        ) -> fidl::Result<()> {
3627            encoder.debug_check_bounds::<DeleteKeyDescriptor>(offset);
3628            // Delegate to tuple encoding.
3629            fidl::encoding::Encode::<DeleteKeyDescriptor, D>::encode(
3630                (
3631                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.key_id),
3632                    <KeyType as fidl::encoding::ValueTypeMarker>::borrow(&self.key_type),
3633                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
3634                        &self.address,
3635                    ),
3636                ),
3637                encoder,
3638                offset,
3639                _depth,
3640            )
3641        }
3642    }
3643    unsafe impl<
3644        D: fidl::encoding::ResourceDialect,
3645        T0: fidl::encoding::Encode<u16, D>,
3646        T1: fidl::encoding::Encode<KeyType, D>,
3647        T2: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3648    > fidl::encoding::Encode<DeleteKeyDescriptor, D> for (T0, T1, T2)
3649    {
3650        #[inline]
3651        unsafe fn encode(
3652            self,
3653            encoder: &mut fidl::encoding::Encoder<'_, D>,
3654            offset: usize,
3655            depth: fidl::encoding::Depth,
3656        ) -> fidl::Result<()> {
3657            encoder.debug_check_bounds::<DeleteKeyDescriptor>(offset);
3658            // Zero out padding regions. There's no need to apply masks
3659            // because the unmasked parts will be overwritten by fields.
3660            unsafe {
3661                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3662                (ptr as *mut u32).write_unaligned(0);
3663            }
3664            unsafe {
3665                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(12);
3666                (ptr as *mut u32).write_unaligned(0);
3667            }
3668            // Write the fields.
3669            self.0.encode(encoder, offset + 0, depth)?;
3670            self.1.encode(encoder, offset + 4, depth)?;
3671            self.2.encode(encoder, offset + 8, depth)?;
3672            Ok(())
3673        }
3674    }
3675
3676    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeleteKeyDescriptor {
3677        #[inline(always)]
3678        fn new_empty() -> Self {
3679            Self {
3680                key_id: fidl::new_empty!(u16, D),
3681                key_type: fidl::new_empty!(KeyType, D),
3682                address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3683            }
3684        }
3685
3686        #[inline]
3687        unsafe fn decode(
3688            &mut self,
3689            decoder: &mut fidl::encoding::Decoder<'_, D>,
3690            offset: usize,
3691            _depth: fidl::encoding::Depth,
3692        ) -> fidl::Result<()> {
3693            decoder.debug_check_bounds::<Self>(offset);
3694            // Verify that padding bytes are zero.
3695            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3696            let padval = unsafe { (ptr as *const u32).read_unaligned() };
3697            let mask = 0xffff0000u32;
3698            let maskedval = padval & mask;
3699            if maskedval != 0 {
3700                return Err(fidl::Error::NonZeroPadding {
3701                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3702                });
3703            }
3704            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(12) };
3705            let padval = unsafe { (ptr as *const u32).read_unaligned() };
3706            let mask = 0xffff0000u32;
3707            let maskedval = padval & mask;
3708            if maskedval != 0 {
3709                return Err(fidl::Error::NonZeroPadding {
3710                    padding_start: offset + 12 + ((mask as u64).trailing_zeros() / 8) as usize,
3711                });
3712            }
3713            fidl::decode!(u16, D, &mut self.key_id, decoder, offset + 0, _depth)?;
3714            fidl::decode!(KeyType, D, &mut self.key_type, decoder, offset + 4, _depth)?;
3715            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.address, decoder, offset + 8, _depth)?;
3716            Ok(())
3717        }
3718    }
3719
3720    impl fidl::encoding::ValueTypeMarker for DeleteKeysRequest {
3721        type Borrowed<'a> = &'a Self;
3722        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3723            value
3724        }
3725    }
3726
3727    unsafe impl fidl::encoding::TypeMarker for DeleteKeysRequest {
3728        type Owned = Self;
3729
3730        #[inline(always)]
3731        fn inline_align(_context: fidl::encoding::Context) -> usize {
3732            8
3733        }
3734
3735        #[inline(always)]
3736        fn inline_size(_context: fidl::encoding::Context) -> usize {
3737            16
3738        }
3739    }
3740
3741    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeleteKeysRequest, D>
3742        for &DeleteKeysRequest
3743    {
3744        #[inline]
3745        unsafe fn encode(
3746            self,
3747            encoder: &mut fidl::encoding::Encoder<'_, D>,
3748            offset: usize,
3749            _depth: fidl::encoding::Depth,
3750        ) -> fidl::Result<()> {
3751            encoder.debug_check_bounds::<DeleteKeysRequest>(offset);
3752            // Delegate to tuple encoding.
3753            fidl::encoding::Encode::<DeleteKeysRequest, D>::encode(
3754                (
3755                    <fidl::encoding::UnboundedVector<DeleteKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.keylist),
3756                ),
3757                encoder, offset, _depth
3758            )
3759        }
3760    }
3761    unsafe impl<
3762        D: fidl::encoding::ResourceDialect,
3763        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<DeleteKeyDescriptor>, D>,
3764    > fidl::encoding::Encode<DeleteKeysRequest, D> for (T0,)
3765    {
3766        #[inline]
3767        unsafe fn encode(
3768            self,
3769            encoder: &mut fidl::encoding::Encoder<'_, D>,
3770            offset: usize,
3771            depth: fidl::encoding::Depth,
3772        ) -> fidl::Result<()> {
3773            encoder.debug_check_bounds::<DeleteKeysRequest>(offset);
3774            // Zero out padding regions. There's no need to apply masks
3775            // because the unmasked parts will be overwritten by fields.
3776            // Write the fields.
3777            self.0.encode(encoder, offset + 0, depth)?;
3778            Ok(())
3779        }
3780    }
3781
3782    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeleteKeysRequest {
3783        #[inline(always)]
3784        fn new_empty() -> Self {
3785            Self {
3786                keylist: fidl::new_empty!(fidl::encoding::UnboundedVector<DeleteKeyDescriptor>, D),
3787            }
3788        }
3789
3790        #[inline]
3791        unsafe fn decode(
3792            &mut self,
3793            decoder: &mut fidl::encoding::Decoder<'_, D>,
3794            offset: usize,
3795            _depth: fidl::encoding::Depth,
3796        ) -> fidl::Result<()> {
3797            decoder.debug_check_bounds::<Self>(offset);
3798            // Verify that padding bytes are zero.
3799            fidl::decode!(
3800                fidl::encoding::UnboundedVector<DeleteKeyDescriptor>,
3801                D,
3802                &mut self.keylist,
3803                decoder,
3804                offset + 0,
3805                _depth
3806            )?;
3807            Ok(())
3808        }
3809    }
3810
3811    impl fidl::encoding::ValueTypeMarker for DeviceInfo {
3812        type Borrowed<'a> = &'a Self;
3813        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3814            value
3815        }
3816    }
3817
3818    unsafe impl fidl::encoding::TypeMarker for DeviceInfo {
3819        type Owned = Self;
3820
3821        #[inline(always)]
3822        fn inline_align(_context: fidl::encoding::Context) -> usize {
3823            8
3824        }
3825
3826        #[inline(always)]
3827        fn inline_size(_context: fidl::encoding::Context) -> usize {
3828            40
3829        }
3830    }
3831
3832    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceInfo, D>
3833        for &DeviceInfo
3834    {
3835        #[inline]
3836        unsafe fn encode(
3837            self,
3838            encoder: &mut fidl::encoding::Encoder<'_, D>,
3839            offset: usize,
3840            _depth: fidl::encoding::Depth,
3841        ) -> fidl::Result<()> {
3842            encoder.debug_check_bounds::<DeviceInfo>(offset);
3843            // Delegate to tuple encoding.
3844            fidl::encoding::Encode::<DeviceInfo, D>::encode(
3845                (
3846                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.sta_addr),
3847                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.factory_addr),
3848                    <fidl_fuchsia_wlan_common_common::WlanMacRole as fidl::encoding::ValueTypeMarker>::borrow(&self.role),
3849                    <fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::ValueTypeMarker>::borrow(&self.bands),
3850                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.softmac_hardware_capability),
3851                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.qos_capable),
3852                ),
3853                encoder, offset, _depth
3854            )
3855        }
3856    }
3857    unsafe impl<
3858        D: fidl::encoding::ResourceDialect,
3859        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3860        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3861        T2: fidl::encoding::Encode<fidl_fuchsia_wlan_common_common::WlanMacRole, D>,
3862        T3: fidl::encoding::Encode<fidl::encoding::Vector<BandCapability, 16>, D>,
3863        T4: fidl::encoding::Encode<u32, D>,
3864        T5: fidl::encoding::Encode<bool, D>,
3865    > fidl::encoding::Encode<DeviceInfo, D> for (T0, T1, T2, T3, T4, T5)
3866    {
3867        #[inline]
3868        unsafe fn encode(
3869            self,
3870            encoder: &mut fidl::encoding::Encoder<'_, D>,
3871            offset: usize,
3872            depth: fidl::encoding::Depth,
3873        ) -> fidl::Result<()> {
3874            encoder.debug_check_bounds::<DeviceInfo>(offset);
3875            // Zero out padding regions. There's no need to apply masks
3876            // because the unmasked parts will be overwritten by fields.
3877            unsafe {
3878                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
3879                (ptr as *mut u64).write_unaligned(0);
3880            }
3881            // Write the fields.
3882            self.0.encode(encoder, offset + 0, depth)?;
3883            self.1.encode(encoder, offset + 6, depth)?;
3884            self.2.encode(encoder, offset + 12, depth)?;
3885            self.3.encode(encoder, offset + 16, depth)?;
3886            self.4.encode(encoder, offset + 32, depth)?;
3887            self.5.encode(encoder, offset + 36, depth)?;
3888            Ok(())
3889        }
3890    }
3891
3892    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceInfo {
3893        #[inline(always)]
3894        fn new_empty() -> Self {
3895            Self {
3896                sta_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3897                factory_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3898                role: fidl::new_empty!(fidl_fuchsia_wlan_common_common::WlanMacRole, D),
3899                bands: fidl::new_empty!(fidl::encoding::Vector<BandCapability, 16>, D),
3900                softmac_hardware_capability: fidl::new_empty!(u32, D),
3901                qos_capable: fidl::new_empty!(bool, D),
3902            }
3903        }
3904
3905        #[inline]
3906        unsafe fn decode(
3907            &mut self,
3908            decoder: &mut fidl::encoding::Decoder<'_, D>,
3909            offset: usize,
3910            _depth: fidl::encoding::Depth,
3911        ) -> fidl::Result<()> {
3912            decoder.debug_check_bounds::<Self>(offset);
3913            // Verify that padding bytes are zero.
3914            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
3915            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3916            let mask = 0xffffff0000000000u64;
3917            let maskedval = padval & mask;
3918            if maskedval != 0 {
3919                return Err(fidl::Error::NonZeroPadding {
3920                    padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
3921                });
3922            }
3923            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.sta_addr, decoder, offset + 0, _depth)?;
3924            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.factory_addr, decoder, offset + 6, _depth)?;
3925            fidl::decode!(
3926                fidl_fuchsia_wlan_common_common::WlanMacRole,
3927                D,
3928                &mut self.role,
3929                decoder,
3930                offset + 12,
3931                _depth
3932            )?;
3933            fidl::decode!(fidl::encoding::Vector<BandCapability, 16>, D, &mut self.bands, decoder, offset + 16, _depth)?;
3934            fidl::decode!(
3935                u32,
3936                D,
3937                &mut self.softmac_hardware_capability,
3938                decoder,
3939                offset + 32,
3940                _depth
3941            )?;
3942            fidl::decode!(bool, D, &mut self.qos_capable, decoder, offset + 36, _depth)?;
3943            Ok(())
3944        }
3945    }
3946
3947    impl fidl::encoding::ValueTypeMarker for DisassociateConfirm {
3948        type Borrowed<'a> = &'a Self;
3949        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3950            value
3951        }
3952    }
3953
3954    unsafe impl fidl::encoding::TypeMarker for DisassociateConfirm {
3955        type Owned = Self;
3956
3957        #[inline(always)]
3958        fn inline_align(_context: fidl::encoding::Context) -> usize {
3959            4
3960        }
3961
3962        #[inline(always)]
3963        fn inline_size(_context: fidl::encoding::Context) -> usize {
3964            4
3965        }
3966        #[inline(always)]
3967        fn encode_is_copy() -> bool {
3968            true
3969        }
3970
3971        #[inline(always)]
3972        fn decode_is_copy() -> bool {
3973            true
3974        }
3975    }
3976
3977    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisassociateConfirm, D>
3978        for &DisassociateConfirm
3979    {
3980        #[inline]
3981        unsafe fn encode(
3982            self,
3983            encoder: &mut fidl::encoding::Encoder<'_, D>,
3984            offset: usize,
3985            _depth: fidl::encoding::Depth,
3986        ) -> fidl::Result<()> {
3987            encoder.debug_check_bounds::<DisassociateConfirm>(offset);
3988            unsafe {
3989                // Copy the object into the buffer.
3990                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3991                (buf_ptr as *mut DisassociateConfirm)
3992                    .write_unaligned((self as *const DisassociateConfirm).read());
3993                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3994                // done second because the memcpy will write garbage to these bytes.
3995            }
3996            Ok(())
3997        }
3998    }
3999    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
4000        fidl::encoding::Encode<DisassociateConfirm, D> for (T0,)
4001    {
4002        #[inline]
4003        unsafe fn encode(
4004            self,
4005            encoder: &mut fidl::encoding::Encoder<'_, D>,
4006            offset: usize,
4007            depth: fidl::encoding::Depth,
4008        ) -> fidl::Result<()> {
4009            encoder.debug_check_bounds::<DisassociateConfirm>(offset);
4010            // Zero out padding regions. There's no need to apply masks
4011            // because the unmasked parts will be overwritten by fields.
4012            // Write the fields.
4013            self.0.encode(encoder, offset + 0, depth)?;
4014            Ok(())
4015        }
4016    }
4017
4018    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisassociateConfirm {
4019        #[inline(always)]
4020        fn new_empty() -> Self {
4021            Self { status: fidl::new_empty!(i32, D) }
4022        }
4023
4024        #[inline]
4025        unsafe fn decode(
4026            &mut self,
4027            decoder: &mut fidl::encoding::Decoder<'_, D>,
4028            offset: usize,
4029            _depth: fidl::encoding::Depth,
4030        ) -> fidl::Result<()> {
4031            decoder.debug_check_bounds::<Self>(offset);
4032            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
4033            // Verify that padding bytes are zero.
4034            // Copy from the buffer into the object.
4035            unsafe {
4036                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
4037            }
4038            Ok(())
4039        }
4040    }
4041
4042    impl fidl::encoding::ValueTypeMarker for DisassociateIndication {
4043        type Borrowed<'a> = &'a Self;
4044        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4045            value
4046        }
4047    }
4048
4049    unsafe impl fidl::encoding::TypeMarker for DisassociateIndication {
4050        type Owned = Self;
4051
4052        #[inline(always)]
4053        fn inline_align(_context: fidl::encoding::Context) -> usize {
4054            2
4055        }
4056
4057        #[inline(always)]
4058        fn inline_size(_context: fidl::encoding::Context) -> usize {
4059            10
4060        }
4061    }
4062
4063    unsafe impl<D: fidl::encoding::ResourceDialect>
4064        fidl::encoding::Encode<DisassociateIndication, D> for &DisassociateIndication
4065    {
4066        #[inline]
4067        unsafe fn encode(
4068            self,
4069            encoder: &mut fidl::encoding::Encoder<'_, D>,
4070            offset: usize,
4071            _depth: fidl::encoding::Depth,
4072        ) -> fidl::Result<()> {
4073            encoder.debug_check_bounds::<DisassociateIndication>(offset);
4074            // Delegate to tuple encoding.
4075            fidl::encoding::Encode::<DisassociateIndication, D>::encode(
4076                (
4077                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
4078                    <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
4079                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.locally_initiated),
4080                ),
4081                encoder, offset, _depth
4082            )
4083        }
4084    }
4085    unsafe impl<
4086        D: fidl::encoding::ResourceDialect,
4087        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4088        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>,
4089        T2: fidl::encoding::Encode<bool, D>,
4090    > fidl::encoding::Encode<DisassociateIndication, D> for (T0, T1, T2)
4091    {
4092        #[inline]
4093        unsafe fn encode(
4094            self,
4095            encoder: &mut fidl::encoding::Encoder<'_, D>,
4096            offset: usize,
4097            depth: fidl::encoding::Depth,
4098        ) -> fidl::Result<()> {
4099            encoder.debug_check_bounds::<DisassociateIndication>(offset);
4100            // Zero out padding regions. There's no need to apply masks
4101            // because the unmasked parts will be overwritten by fields.
4102            unsafe {
4103                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4104                (ptr as *mut u16).write_unaligned(0);
4105            }
4106            // Write the fields.
4107            self.0.encode(encoder, offset + 0, depth)?;
4108            self.1.encode(encoder, offset + 6, depth)?;
4109            self.2.encode(encoder, offset + 8, depth)?;
4110            Ok(())
4111        }
4112    }
4113
4114    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4115        for DisassociateIndication
4116    {
4117        #[inline(always)]
4118        fn new_empty() -> Self {
4119            Self {
4120                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4121                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D),
4122                locally_initiated: fidl::new_empty!(bool, D),
4123            }
4124        }
4125
4126        #[inline]
4127        unsafe fn decode(
4128            &mut self,
4129            decoder: &mut fidl::encoding::Decoder<'_, D>,
4130            offset: usize,
4131            _depth: fidl::encoding::Depth,
4132        ) -> fidl::Result<()> {
4133            decoder.debug_check_bounds::<Self>(offset);
4134            // Verify that padding bytes are zero.
4135            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4136            let padval = unsafe { (ptr as *const u16).read_unaligned() };
4137            let mask = 0xff00u16;
4138            let maskedval = padval & mask;
4139            if maskedval != 0 {
4140                return Err(fidl::Error::NonZeroPadding {
4141                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4142                });
4143            }
4144            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
4145            fidl::decode!(
4146                fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
4147                D,
4148                &mut self.reason_code,
4149                decoder,
4150                offset + 6,
4151                _depth
4152            )?;
4153            fidl::decode!(bool, D, &mut self.locally_initiated, decoder, offset + 8, _depth)?;
4154            Ok(())
4155        }
4156    }
4157
4158    impl fidl::encoding::ValueTypeMarker for DisassociateRequest {
4159        type Borrowed<'a> = &'a Self;
4160        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4161            value
4162        }
4163    }
4164
4165    unsafe impl fidl::encoding::TypeMarker for DisassociateRequest {
4166        type Owned = Self;
4167
4168        #[inline(always)]
4169        fn inline_align(_context: fidl::encoding::Context) -> usize {
4170            2
4171        }
4172
4173        #[inline(always)]
4174        fn inline_size(_context: fidl::encoding::Context) -> usize {
4175            8
4176        }
4177    }
4178
4179    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisassociateRequest, D>
4180        for &DisassociateRequest
4181    {
4182        #[inline]
4183        unsafe fn encode(
4184            self,
4185            encoder: &mut fidl::encoding::Encoder<'_, D>,
4186            offset: usize,
4187            _depth: fidl::encoding::Depth,
4188        ) -> fidl::Result<()> {
4189            encoder.debug_check_bounds::<DisassociateRequest>(offset);
4190            // Delegate to tuple encoding.
4191            fidl::encoding::Encode::<DisassociateRequest, D>::encode(
4192                (
4193                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
4194                    <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
4195                ),
4196                encoder, offset, _depth
4197            )
4198        }
4199    }
4200    unsafe impl<
4201        D: fidl::encoding::ResourceDialect,
4202        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4203        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>,
4204    > fidl::encoding::Encode<DisassociateRequest, D> for (T0, T1)
4205    {
4206        #[inline]
4207        unsafe fn encode(
4208            self,
4209            encoder: &mut fidl::encoding::Encoder<'_, D>,
4210            offset: usize,
4211            depth: fidl::encoding::Depth,
4212        ) -> fidl::Result<()> {
4213            encoder.debug_check_bounds::<DisassociateRequest>(offset);
4214            // Zero out padding regions. There's no need to apply masks
4215            // because the unmasked parts will be overwritten by fields.
4216            // Write the fields.
4217            self.0.encode(encoder, offset + 0, depth)?;
4218            self.1.encode(encoder, offset + 6, depth)?;
4219            Ok(())
4220        }
4221    }
4222
4223    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisassociateRequest {
4224        #[inline(always)]
4225        fn new_empty() -> Self {
4226            Self {
4227                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4228                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D),
4229            }
4230        }
4231
4232        #[inline]
4233        unsafe fn decode(
4234            &mut self,
4235            decoder: &mut fidl::encoding::Decoder<'_, D>,
4236            offset: usize,
4237            _depth: fidl::encoding::Depth,
4238        ) -> fidl::Result<()> {
4239            decoder.debug_check_bounds::<Self>(offset);
4240            // Verify that padding bytes are zero.
4241            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
4242            fidl::decode!(
4243                fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
4244                D,
4245                &mut self.reason_code,
4246                decoder,
4247                offset + 6,
4248                _depth
4249            )?;
4250            Ok(())
4251        }
4252    }
4253
4254    impl fidl::encoding::ValueTypeMarker for EapolConfirm {
4255        type Borrowed<'a> = &'a Self;
4256        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4257            value
4258        }
4259    }
4260
4261    unsafe impl fidl::encoding::TypeMarker for EapolConfirm {
4262        type Owned = Self;
4263
4264        #[inline(always)]
4265        fn inline_align(_context: fidl::encoding::Context) -> usize {
4266            4
4267        }
4268
4269        #[inline(always)]
4270        fn inline_size(_context: fidl::encoding::Context) -> usize {
4271            12
4272        }
4273    }
4274
4275    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolConfirm, D>
4276        for &EapolConfirm
4277    {
4278        #[inline]
4279        unsafe fn encode(
4280            self,
4281            encoder: &mut fidl::encoding::Encoder<'_, D>,
4282            offset: usize,
4283            _depth: fidl::encoding::Depth,
4284        ) -> fidl::Result<()> {
4285            encoder.debug_check_bounds::<EapolConfirm>(offset);
4286            // Delegate to tuple encoding.
4287            fidl::encoding::Encode::<EapolConfirm, D>::encode(
4288                (
4289                    <EapolResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
4290                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
4291                        &self.dst_addr,
4292                    ),
4293                ),
4294                encoder,
4295                offset,
4296                _depth,
4297            )
4298        }
4299    }
4300    unsafe impl<
4301        D: fidl::encoding::ResourceDialect,
4302        T0: fidl::encoding::Encode<EapolResultCode, D>,
4303        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4304    > fidl::encoding::Encode<EapolConfirm, D> for (T0, T1)
4305    {
4306        #[inline]
4307        unsafe fn encode(
4308            self,
4309            encoder: &mut fidl::encoding::Encoder<'_, D>,
4310            offset: usize,
4311            depth: fidl::encoding::Depth,
4312        ) -> fidl::Result<()> {
4313            encoder.debug_check_bounds::<EapolConfirm>(offset);
4314            // Zero out padding regions. There's no need to apply masks
4315            // because the unmasked parts will be overwritten by fields.
4316            unsafe {
4317                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4318                (ptr as *mut u32).write_unaligned(0);
4319            }
4320            // Write the fields.
4321            self.0.encode(encoder, offset + 0, depth)?;
4322            self.1.encode(encoder, offset + 4, depth)?;
4323            Ok(())
4324        }
4325    }
4326
4327    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolConfirm {
4328        #[inline(always)]
4329        fn new_empty() -> Self {
4330            Self {
4331                result_code: fidl::new_empty!(EapolResultCode, D),
4332                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4333            }
4334        }
4335
4336        #[inline]
4337        unsafe fn decode(
4338            &mut self,
4339            decoder: &mut fidl::encoding::Decoder<'_, D>,
4340            offset: usize,
4341            _depth: fidl::encoding::Depth,
4342        ) -> fidl::Result<()> {
4343            decoder.debug_check_bounds::<Self>(offset);
4344            // Verify that padding bytes are zero.
4345            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4346            let padval = unsafe { (ptr as *const u32).read_unaligned() };
4347            let mask = 0xffff0000u32;
4348            let maskedval = padval & mask;
4349            if maskedval != 0 {
4350                return Err(fidl::Error::NonZeroPadding {
4351                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4352                });
4353            }
4354            fidl::decode!(EapolResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
4355            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 4, _depth)?;
4356            Ok(())
4357        }
4358    }
4359
4360    impl fidl::encoding::ValueTypeMarker for EapolIndication {
4361        type Borrowed<'a> = &'a Self;
4362        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4363            value
4364        }
4365    }
4366
4367    unsafe impl fidl::encoding::TypeMarker for EapolIndication {
4368        type Owned = Self;
4369
4370        #[inline(always)]
4371        fn inline_align(_context: fidl::encoding::Context) -> usize {
4372            8
4373        }
4374
4375        #[inline(always)]
4376        fn inline_size(_context: fidl::encoding::Context) -> usize {
4377            32
4378        }
4379    }
4380
4381    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolIndication, D>
4382        for &EapolIndication
4383    {
4384        #[inline]
4385        unsafe fn encode(
4386            self,
4387            encoder: &mut fidl::encoding::Encoder<'_, D>,
4388            offset: usize,
4389            _depth: fidl::encoding::Depth,
4390        ) -> fidl::Result<()> {
4391            encoder.debug_check_bounds::<EapolIndication>(offset);
4392            // Delegate to tuple encoding.
4393            fidl::encoding::Encode::<EapolIndication, D>::encode(
4394                (
4395                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.src_addr),
4396                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.dst_addr),
4397                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4398                ),
4399                encoder, offset, _depth
4400            )
4401        }
4402    }
4403    unsafe impl<
4404        D: fidl::encoding::ResourceDialect,
4405        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4406        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4407        T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4408    > fidl::encoding::Encode<EapolIndication, D> for (T0, T1, T2)
4409    {
4410        #[inline]
4411        unsafe fn encode(
4412            self,
4413            encoder: &mut fidl::encoding::Encoder<'_, D>,
4414            offset: usize,
4415            depth: fidl::encoding::Depth,
4416        ) -> fidl::Result<()> {
4417            encoder.debug_check_bounds::<EapolIndication>(offset);
4418            // Zero out padding regions. There's no need to apply masks
4419            // because the unmasked parts will be overwritten by fields.
4420            unsafe {
4421                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4422                (ptr as *mut u64).write_unaligned(0);
4423            }
4424            // Write the fields.
4425            self.0.encode(encoder, offset + 0, depth)?;
4426            self.1.encode(encoder, offset + 6, depth)?;
4427            self.2.encode(encoder, offset + 16, depth)?;
4428            Ok(())
4429        }
4430    }
4431
4432    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolIndication {
4433        #[inline(always)]
4434        fn new_empty() -> Self {
4435            Self {
4436                src_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4437                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4438                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4439            }
4440        }
4441
4442        #[inline]
4443        unsafe fn decode(
4444            &mut self,
4445            decoder: &mut fidl::encoding::Decoder<'_, D>,
4446            offset: usize,
4447            _depth: fidl::encoding::Depth,
4448        ) -> fidl::Result<()> {
4449            decoder.debug_check_bounds::<Self>(offset);
4450            // Verify that padding bytes are zero.
4451            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4452            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4453            let mask = 0xffffffff00000000u64;
4454            let maskedval = padval & mask;
4455            if maskedval != 0 {
4456                return Err(fidl::Error::NonZeroPadding {
4457                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4458                });
4459            }
4460            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.src_addr, decoder, offset + 0, _depth)?;
4461            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 6, _depth)?;
4462            fidl::decode!(
4463                fidl::encoding::UnboundedVector<u8>,
4464                D,
4465                &mut self.data,
4466                decoder,
4467                offset + 16,
4468                _depth
4469            )?;
4470            Ok(())
4471        }
4472    }
4473
4474    impl fidl::encoding::ValueTypeMarker for EapolRequest {
4475        type Borrowed<'a> = &'a Self;
4476        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4477            value
4478        }
4479    }
4480
4481    unsafe impl fidl::encoding::TypeMarker for EapolRequest {
4482        type Owned = Self;
4483
4484        #[inline(always)]
4485        fn inline_align(_context: fidl::encoding::Context) -> usize {
4486            8
4487        }
4488
4489        #[inline(always)]
4490        fn inline_size(_context: fidl::encoding::Context) -> usize {
4491            32
4492        }
4493    }
4494
4495    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolRequest, D>
4496        for &EapolRequest
4497    {
4498        #[inline]
4499        unsafe fn encode(
4500            self,
4501            encoder: &mut fidl::encoding::Encoder<'_, D>,
4502            offset: usize,
4503            _depth: fidl::encoding::Depth,
4504        ) -> fidl::Result<()> {
4505            encoder.debug_check_bounds::<EapolRequest>(offset);
4506            // Delegate to tuple encoding.
4507            fidl::encoding::Encode::<EapolRequest, D>::encode(
4508                (
4509                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.src_addr),
4510                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.dst_addr),
4511                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4512                ),
4513                encoder, offset, _depth
4514            )
4515        }
4516    }
4517    unsafe impl<
4518        D: fidl::encoding::ResourceDialect,
4519        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4520        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4521        T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4522    > fidl::encoding::Encode<EapolRequest, D> for (T0, T1, T2)
4523    {
4524        #[inline]
4525        unsafe fn encode(
4526            self,
4527            encoder: &mut fidl::encoding::Encoder<'_, D>,
4528            offset: usize,
4529            depth: fidl::encoding::Depth,
4530        ) -> fidl::Result<()> {
4531            encoder.debug_check_bounds::<EapolRequest>(offset);
4532            // Zero out padding regions. There's no need to apply masks
4533            // because the unmasked parts will be overwritten by fields.
4534            unsafe {
4535                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4536                (ptr as *mut u64).write_unaligned(0);
4537            }
4538            // Write the fields.
4539            self.0.encode(encoder, offset + 0, depth)?;
4540            self.1.encode(encoder, offset + 6, depth)?;
4541            self.2.encode(encoder, offset + 16, depth)?;
4542            Ok(())
4543        }
4544    }
4545
4546    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolRequest {
4547        #[inline(always)]
4548        fn new_empty() -> Self {
4549            Self {
4550                src_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4551                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4552                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4553            }
4554        }
4555
4556        #[inline]
4557        unsafe fn decode(
4558            &mut self,
4559            decoder: &mut fidl::encoding::Decoder<'_, D>,
4560            offset: usize,
4561            _depth: fidl::encoding::Depth,
4562        ) -> fidl::Result<()> {
4563            decoder.debug_check_bounds::<Self>(offset);
4564            // Verify that padding bytes are zero.
4565            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4566            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4567            let mask = 0xffffffff00000000u64;
4568            let maskedval = padval & mask;
4569            if maskedval != 0 {
4570                return Err(fidl::Error::NonZeroPadding {
4571                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4572                });
4573            }
4574            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.src_addr, decoder, offset + 0, _depth)?;
4575            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 6, _depth)?;
4576            fidl::decode!(
4577                fidl::encoding::UnboundedVector<u8>,
4578                D,
4579                &mut self.data,
4580                decoder,
4581                offset + 16,
4582                _depth
4583            )?;
4584            Ok(())
4585        }
4586    }
4587
4588    impl fidl::encoding::ValueTypeMarker for MlmeGetApfPacketFilterEnabledResponse {
4589        type Borrowed<'a> = &'a Self;
4590        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4591            value
4592        }
4593    }
4594
4595    unsafe impl fidl::encoding::TypeMarker for MlmeGetApfPacketFilterEnabledResponse {
4596        type Owned = Self;
4597
4598        #[inline(always)]
4599        fn inline_align(_context: fidl::encoding::Context) -> usize {
4600            1
4601        }
4602
4603        #[inline(always)]
4604        fn inline_size(_context: fidl::encoding::Context) -> usize {
4605            1
4606        }
4607    }
4608
4609    unsafe impl<D: fidl::encoding::ResourceDialect>
4610        fidl::encoding::Encode<MlmeGetApfPacketFilterEnabledResponse, D>
4611        for &MlmeGetApfPacketFilterEnabledResponse
4612    {
4613        #[inline]
4614        unsafe fn encode(
4615            self,
4616            encoder: &mut fidl::encoding::Encoder<'_, D>,
4617            offset: usize,
4618            _depth: fidl::encoding::Depth,
4619        ) -> fidl::Result<()> {
4620            encoder.debug_check_bounds::<MlmeGetApfPacketFilterEnabledResponse>(offset);
4621            // Delegate to tuple encoding.
4622            fidl::encoding::Encode::<MlmeGetApfPacketFilterEnabledResponse, D>::encode(
4623                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enabled),),
4624                encoder,
4625                offset,
4626                _depth,
4627            )
4628        }
4629    }
4630    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
4631        fidl::encoding::Encode<MlmeGetApfPacketFilterEnabledResponse, D> for (T0,)
4632    {
4633        #[inline]
4634        unsafe fn encode(
4635            self,
4636            encoder: &mut fidl::encoding::Encoder<'_, D>,
4637            offset: usize,
4638            depth: fidl::encoding::Depth,
4639        ) -> fidl::Result<()> {
4640            encoder.debug_check_bounds::<MlmeGetApfPacketFilterEnabledResponse>(offset);
4641            // Zero out padding regions. There's no need to apply masks
4642            // because the unmasked parts will be overwritten by fields.
4643            // Write the fields.
4644            self.0.encode(encoder, offset + 0, depth)?;
4645            Ok(())
4646        }
4647    }
4648
4649    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4650        for MlmeGetApfPacketFilterEnabledResponse
4651    {
4652        #[inline(always)]
4653        fn new_empty() -> Self {
4654            Self { enabled: fidl::new_empty!(bool, D) }
4655        }
4656
4657        #[inline]
4658        unsafe fn decode(
4659            &mut self,
4660            decoder: &mut fidl::encoding::Decoder<'_, D>,
4661            offset: usize,
4662            _depth: fidl::encoding::Depth,
4663        ) -> fidl::Result<()> {
4664            decoder.debug_check_bounds::<Self>(offset);
4665            // Verify that padding bytes are zero.
4666            fidl::decode!(bool, D, &mut self.enabled, decoder, offset + 0, _depth)?;
4667            Ok(())
4668        }
4669    }
4670
4671    impl fidl::encoding::ValueTypeMarker for MlmeGetScheduledScanEnabledResponse {
4672        type Borrowed<'a> = &'a Self;
4673        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4674            value
4675        }
4676    }
4677
4678    unsafe impl fidl::encoding::TypeMarker for MlmeGetScheduledScanEnabledResponse {
4679        type Owned = Self;
4680
4681        #[inline(always)]
4682        fn inline_align(_context: fidl::encoding::Context) -> usize {
4683            8
4684        }
4685
4686        #[inline(always)]
4687        fn inline_size(_context: fidl::encoding::Context) -> usize {
4688            16
4689        }
4690    }
4691
4692    unsafe impl<D: fidl::encoding::ResourceDialect>
4693        fidl::encoding::Encode<MlmeGetScheduledScanEnabledResponse, D>
4694        for &MlmeGetScheduledScanEnabledResponse
4695    {
4696        #[inline]
4697        unsafe fn encode(
4698            self,
4699            encoder: &mut fidl::encoding::Encoder<'_, D>,
4700            offset: usize,
4701            _depth: fidl::encoding::Depth,
4702        ) -> fidl::Result<()> {
4703            encoder.debug_check_bounds::<MlmeGetScheduledScanEnabledResponse>(offset);
4704            // Delegate to tuple encoding.
4705            fidl::encoding::Encode::<MlmeGetScheduledScanEnabledResponse, D>::encode(
4706                (
4707                    <fidl::encoding::UnboundedVector<u64> as fidl::encoding::ValueTypeMarker>::borrow(&self.active_txn_ids),
4708                ),
4709                encoder, offset, _depth
4710            )
4711        }
4712    }
4713    unsafe impl<
4714        D: fidl::encoding::ResourceDialect,
4715        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u64>, D>,
4716    > fidl::encoding::Encode<MlmeGetScheduledScanEnabledResponse, D> for (T0,)
4717    {
4718        #[inline]
4719        unsafe fn encode(
4720            self,
4721            encoder: &mut fidl::encoding::Encoder<'_, D>,
4722            offset: usize,
4723            depth: fidl::encoding::Depth,
4724        ) -> fidl::Result<()> {
4725            encoder.debug_check_bounds::<MlmeGetScheduledScanEnabledResponse>(offset);
4726            // Zero out padding regions. There's no need to apply masks
4727            // because the unmasked parts will be overwritten by fields.
4728            // Write the fields.
4729            self.0.encode(encoder, offset + 0, depth)?;
4730            Ok(())
4731        }
4732    }
4733
4734    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4735        for MlmeGetScheduledScanEnabledResponse
4736    {
4737        #[inline(always)]
4738        fn new_empty() -> Self {
4739            Self { active_txn_ids: fidl::new_empty!(fidl::encoding::UnboundedVector<u64>, D) }
4740        }
4741
4742        #[inline]
4743        unsafe fn decode(
4744            &mut self,
4745            decoder: &mut fidl::encoding::Decoder<'_, D>,
4746            offset: usize,
4747            _depth: fidl::encoding::Depth,
4748        ) -> fidl::Result<()> {
4749            decoder.debug_check_bounds::<Self>(offset);
4750            // Verify that padding bytes are zero.
4751            fidl::decode!(
4752                fidl::encoding::UnboundedVector<u64>,
4753                D,
4754                &mut self.active_txn_ids,
4755                decoder,
4756                offset + 0,
4757                _depth
4758            )?;
4759            Ok(())
4760        }
4761    }
4762
4763    impl fidl::encoding::ValueTypeMarker for MlmeGetSignalReportResponse {
4764        type Borrowed<'a> = &'a Self;
4765        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4766            value
4767        }
4768    }
4769
4770    unsafe impl fidl::encoding::TypeMarker for MlmeGetSignalReportResponse {
4771        type Owned = Self;
4772
4773        #[inline(always)]
4774        fn inline_align(_context: fidl::encoding::Context) -> usize {
4775            8
4776        }
4777
4778        #[inline(always)]
4779        fn inline_size(_context: fidl::encoding::Context) -> usize {
4780            16
4781        }
4782    }
4783
4784    unsafe impl<D: fidl::encoding::ResourceDialect>
4785        fidl::encoding::Encode<MlmeGetSignalReportResponse, D> for &MlmeGetSignalReportResponse
4786    {
4787        #[inline]
4788        unsafe fn encode(
4789            self,
4790            encoder: &mut fidl::encoding::Encoder<'_, D>,
4791            offset: usize,
4792            _depth: fidl::encoding::Depth,
4793        ) -> fidl::Result<()> {
4794            encoder.debug_check_bounds::<MlmeGetSignalReportResponse>(offset);
4795            // Delegate to tuple encoding.
4796            fidl::encoding::Encode::<MlmeGetSignalReportResponse, D>::encode(
4797                (
4798                    <fidl_fuchsia_wlan_stats_common::SignalReport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
4799                ),
4800                encoder, offset, _depth
4801            )
4802        }
4803    }
4804    unsafe impl<
4805        D: fidl::encoding::ResourceDialect,
4806        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats_common::SignalReport, D>,
4807    > fidl::encoding::Encode<MlmeGetSignalReportResponse, D> for (T0,)
4808    {
4809        #[inline]
4810        unsafe fn encode(
4811            self,
4812            encoder: &mut fidl::encoding::Encoder<'_, D>,
4813            offset: usize,
4814            depth: fidl::encoding::Depth,
4815        ) -> fidl::Result<()> {
4816            encoder.debug_check_bounds::<MlmeGetSignalReportResponse>(offset);
4817            // Zero out padding regions. There's no need to apply masks
4818            // because the unmasked parts will be overwritten by fields.
4819            // Write the fields.
4820            self.0.encode(encoder, offset + 0, depth)?;
4821            Ok(())
4822        }
4823    }
4824
4825    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4826        for MlmeGetSignalReportResponse
4827    {
4828        #[inline(always)]
4829        fn new_empty() -> Self {
4830            Self { resp: fidl::new_empty!(fidl_fuchsia_wlan_stats_common::SignalReport, D) }
4831        }
4832
4833        #[inline]
4834        unsafe fn decode(
4835            &mut self,
4836            decoder: &mut fidl::encoding::Decoder<'_, D>,
4837            offset: usize,
4838            _depth: fidl::encoding::Depth,
4839        ) -> fidl::Result<()> {
4840            decoder.debug_check_bounds::<Self>(offset);
4841            // Verify that padding bytes are zero.
4842            fidl::decode!(
4843                fidl_fuchsia_wlan_stats_common::SignalReport,
4844                D,
4845                &mut self.resp,
4846                decoder,
4847                offset + 0,
4848                _depth
4849            )?;
4850            Ok(())
4851        }
4852    }
4853
4854    impl fidl::encoding::ValueTypeMarker for MlmeQueryTelemetrySupportResponse {
4855        type Borrowed<'a> = &'a Self;
4856        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4857            value
4858        }
4859    }
4860
4861    unsafe impl fidl::encoding::TypeMarker for MlmeQueryTelemetrySupportResponse {
4862        type Owned = Self;
4863
4864        #[inline(always)]
4865        fn inline_align(_context: fidl::encoding::Context) -> usize {
4866            8
4867        }
4868
4869        #[inline(always)]
4870        fn inline_size(_context: fidl::encoding::Context) -> usize {
4871            16
4872        }
4873    }
4874
4875    unsafe impl<D: fidl::encoding::ResourceDialect>
4876        fidl::encoding::Encode<MlmeQueryTelemetrySupportResponse, D>
4877        for &MlmeQueryTelemetrySupportResponse
4878    {
4879        #[inline]
4880        unsafe fn encode(
4881            self,
4882            encoder: &mut fidl::encoding::Encoder<'_, D>,
4883            offset: usize,
4884            _depth: fidl::encoding::Depth,
4885        ) -> fidl::Result<()> {
4886            encoder.debug_check_bounds::<MlmeQueryTelemetrySupportResponse>(offset);
4887            // Delegate to tuple encoding.
4888            fidl::encoding::Encode::<MlmeQueryTelemetrySupportResponse, D>::encode(
4889                (
4890                    <fidl_fuchsia_wlan_stats_common::TelemetrySupport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
4891                ),
4892                encoder, offset, _depth
4893            )
4894        }
4895    }
4896    unsafe impl<
4897        D: fidl::encoding::ResourceDialect,
4898        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats_common::TelemetrySupport, D>,
4899    > fidl::encoding::Encode<MlmeQueryTelemetrySupportResponse, D> for (T0,)
4900    {
4901        #[inline]
4902        unsafe fn encode(
4903            self,
4904            encoder: &mut fidl::encoding::Encoder<'_, D>,
4905            offset: usize,
4906            depth: fidl::encoding::Depth,
4907        ) -> fidl::Result<()> {
4908            encoder.debug_check_bounds::<MlmeQueryTelemetrySupportResponse>(offset);
4909            // Zero out padding regions. There's no need to apply masks
4910            // because the unmasked parts will be overwritten by fields.
4911            // Write the fields.
4912            self.0.encode(encoder, offset + 0, depth)?;
4913            Ok(())
4914        }
4915    }
4916
4917    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4918        for MlmeQueryTelemetrySupportResponse
4919    {
4920        #[inline(always)]
4921        fn new_empty() -> Self {
4922            Self { resp: fidl::new_empty!(fidl_fuchsia_wlan_stats_common::TelemetrySupport, D) }
4923        }
4924
4925        #[inline]
4926        unsafe fn decode(
4927            &mut self,
4928            decoder: &mut fidl::encoding::Decoder<'_, D>,
4929            offset: usize,
4930            _depth: fidl::encoding::Depth,
4931        ) -> fidl::Result<()> {
4932            decoder.debug_check_bounds::<Self>(offset);
4933            // Verify that padding bytes are zero.
4934            fidl::decode!(
4935                fidl_fuchsia_wlan_stats_common::TelemetrySupport,
4936                D,
4937                &mut self.resp,
4938                decoder,
4939                offset + 0,
4940                _depth
4941            )?;
4942            Ok(())
4943        }
4944    }
4945
4946    impl fidl::encoding::ValueTypeMarker for MlmeReadApfPacketFilterDataResponse {
4947        type Borrowed<'a> = &'a Self;
4948        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4949            value
4950        }
4951    }
4952
4953    unsafe impl fidl::encoding::TypeMarker for MlmeReadApfPacketFilterDataResponse {
4954        type Owned = Self;
4955
4956        #[inline(always)]
4957        fn inline_align(_context: fidl::encoding::Context) -> usize {
4958            8
4959        }
4960
4961        #[inline(always)]
4962        fn inline_size(_context: fidl::encoding::Context) -> usize {
4963            16
4964        }
4965    }
4966
4967    unsafe impl<D: fidl::encoding::ResourceDialect>
4968        fidl::encoding::Encode<MlmeReadApfPacketFilterDataResponse, D>
4969        for &MlmeReadApfPacketFilterDataResponse
4970    {
4971        #[inline]
4972        unsafe fn encode(
4973            self,
4974            encoder: &mut fidl::encoding::Encoder<'_, D>,
4975            offset: usize,
4976            _depth: fidl::encoding::Depth,
4977        ) -> fidl::Result<()> {
4978            encoder.debug_check_bounds::<MlmeReadApfPacketFilterDataResponse>(offset);
4979            // Delegate to tuple encoding.
4980            fidl::encoding::Encode::<MlmeReadApfPacketFilterDataResponse, D>::encode(
4981                (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
4982                    &self.memory,
4983                ),),
4984                encoder,
4985                offset,
4986                _depth,
4987            )
4988        }
4989    }
4990    unsafe impl<
4991        D: fidl::encoding::ResourceDialect,
4992        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4993    > fidl::encoding::Encode<MlmeReadApfPacketFilterDataResponse, D> for (T0,)
4994    {
4995        #[inline]
4996        unsafe fn encode(
4997            self,
4998            encoder: &mut fidl::encoding::Encoder<'_, D>,
4999            offset: usize,
5000            depth: fidl::encoding::Depth,
5001        ) -> fidl::Result<()> {
5002            encoder.debug_check_bounds::<MlmeReadApfPacketFilterDataResponse>(offset);
5003            // Zero out padding regions. There's no need to apply masks
5004            // because the unmasked parts will be overwritten by fields.
5005            // Write the fields.
5006            self.0.encode(encoder, offset + 0, depth)?;
5007            Ok(())
5008        }
5009    }
5010
5011    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5012        for MlmeReadApfPacketFilterDataResponse
5013    {
5014        #[inline(always)]
5015        fn new_empty() -> Self {
5016            Self { memory: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
5017        }
5018
5019        #[inline]
5020        unsafe fn decode(
5021            &mut self,
5022            decoder: &mut fidl::encoding::Decoder<'_, D>,
5023            offset: usize,
5024            _depth: fidl::encoding::Depth,
5025        ) -> fidl::Result<()> {
5026            decoder.debug_check_bounds::<Self>(offset);
5027            // Verify that padding bytes are zero.
5028            fidl::decode!(
5029                fidl::encoding::UnboundedVector<u8>,
5030                D,
5031                &mut self.memory,
5032                decoder,
5033                offset + 0,
5034                _depth
5035            )?;
5036            Ok(())
5037        }
5038    }
5039
5040    impl fidl::encoding::ValueTypeMarker for MinstrelListResponse {
5041        type Borrowed<'a> = &'a Self;
5042        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5043            value
5044        }
5045    }
5046
5047    unsafe impl fidl::encoding::TypeMarker for MinstrelListResponse {
5048        type Owned = Self;
5049
5050        #[inline(always)]
5051        fn inline_align(_context: fidl::encoding::Context) -> usize {
5052            8
5053        }
5054
5055        #[inline(always)]
5056        fn inline_size(_context: fidl::encoding::Context) -> usize {
5057            16
5058        }
5059    }
5060
5061    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelListResponse, D>
5062        for &MinstrelListResponse
5063    {
5064        #[inline]
5065        unsafe fn encode(
5066            self,
5067            encoder: &mut fidl::encoding::Encoder<'_, D>,
5068            offset: usize,
5069            _depth: fidl::encoding::Depth,
5070        ) -> fidl::Result<()> {
5071            encoder.debug_check_bounds::<MinstrelListResponse>(offset);
5072            // Delegate to tuple encoding.
5073            fidl::encoding::Encode::<MinstrelListResponse, D>::encode(
5074                (
5075                    <fidl_fuchsia_wlan_minstrel_common::Peers as fidl::encoding::ValueTypeMarker>::borrow(&self.peers),
5076                ),
5077                encoder, offset, _depth
5078            )
5079        }
5080    }
5081    unsafe impl<
5082        D: fidl::encoding::ResourceDialect,
5083        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_minstrel_common::Peers, D>,
5084    > fidl::encoding::Encode<MinstrelListResponse, D> for (T0,)
5085    {
5086        #[inline]
5087        unsafe fn encode(
5088            self,
5089            encoder: &mut fidl::encoding::Encoder<'_, D>,
5090            offset: usize,
5091            depth: fidl::encoding::Depth,
5092        ) -> fidl::Result<()> {
5093            encoder.debug_check_bounds::<MinstrelListResponse>(offset);
5094            // Zero out padding regions. There's no need to apply masks
5095            // because the unmasked parts will be overwritten by fields.
5096            // Write the fields.
5097            self.0.encode(encoder, offset + 0, depth)?;
5098            Ok(())
5099        }
5100    }
5101
5102    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelListResponse {
5103        #[inline(always)]
5104        fn new_empty() -> Self {
5105            Self { peers: fidl::new_empty!(fidl_fuchsia_wlan_minstrel_common::Peers, D) }
5106        }
5107
5108        #[inline]
5109        unsafe fn decode(
5110            &mut self,
5111            decoder: &mut fidl::encoding::Decoder<'_, D>,
5112            offset: usize,
5113            _depth: fidl::encoding::Depth,
5114        ) -> fidl::Result<()> {
5115            decoder.debug_check_bounds::<Self>(offset);
5116            // Verify that padding bytes are zero.
5117            fidl::decode!(
5118                fidl_fuchsia_wlan_minstrel_common::Peers,
5119                D,
5120                &mut self.peers,
5121                decoder,
5122                offset + 0,
5123                _depth
5124            )?;
5125            Ok(())
5126        }
5127    }
5128
5129    impl fidl::encoding::ValueTypeMarker for MinstrelStatsRequest {
5130        type Borrowed<'a> = &'a Self;
5131        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5132            value
5133        }
5134    }
5135
5136    unsafe impl fidl::encoding::TypeMarker for MinstrelStatsRequest {
5137        type Owned = Self;
5138
5139        #[inline(always)]
5140        fn inline_align(_context: fidl::encoding::Context) -> usize {
5141            1
5142        }
5143
5144        #[inline(always)]
5145        fn inline_size(_context: fidl::encoding::Context) -> usize {
5146            6
5147        }
5148        #[inline(always)]
5149        fn encode_is_copy() -> bool {
5150            true
5151        }
5152
5153        #[inline(always)]
5154        fn decode_is_copy() -> bool {
5155            true
5156        }
5157    }
5158
5159    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelStatsRequest, D>
5160        for &MinstrelStatsRequest
5161    {
5162        #[inline]
5163        unsafe fn encode(
5164            self,
5165            encoder: &mut fidl::encoding::Encoder<'_, D>,
5166            offset: usize,
5167            _depth: fidl::encoding::Depth,
5168        ) -> fidl::Result<()> {
5169            encoder.debug_check_bounds::<MinstrelStatsRequest>(offset);
5170            unsafe {
5171                // Copy the object into the buffer.
5172                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5173                (buf_ptr as *mut MinstrelStatsRequest)
5174                    .write_unaligned((self as *const MinstrelStatsRequest).read());
5175                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
5176                // done second because the memcpy will write garbage to these bytes.
5177            }
5178            Ok(())
5179        }
5180    }
5181    unsafe impl<
5182        D: fidl::encoding::ResourceDialect,
5183        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
5184    > fidl::encoding::Encode<MinstrelStatsRequest, D> for (T0,)
5185    {
5186        #[inline]
5187        unsafe fn encode(
5188            self,
5189            encoder: &mut fidl::encoding::Encoder<'_, D>,
5190            offset: usize,
5191            depth: fidl::encoding::Depth,
5192        ) -> fidl::Result<()> {
5193            encoder.debug_check_bounds::<MinstrelStatsRequest>(offset);
5194            // Zero out padding regions. There's no need to apply masks
5195            // because the unmasked parts will be overwritten by fields.
5196            // Write the fields.
5197            self.0.encode(encoder, offset + 0, depth)?;
5198            Ok(())
5199        }
5200    }
5201
5202    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelStatsRequest {
5203        #[inline(always)]
5204        fn new_empty() -> Self {
5205            Self { peer_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
5206        }
5207
5208        #[inline]
5209        unsafe fn decode(
5210            &mut self,
5211            decoder: &mut fidl::encoding::Decoder<'_, D>,
5212            offset: usize,
5213            _depth: fidl::encoding::Depth,
5214        ) -> fidl::Result<()> {
5215            decoder.debug_check_bounds::<Self>(offset);
5216            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5217            // Verify that padding bytes are zero.
5218            // Copy from the buffer into the object.
5219            unsafe {
5220                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
5221            }
5222            Ok(())
5223        }
5224    }
5225
5226    impl fidl::encoding::ValueTypeMarker for MinstrelStatsResponse {
5227        type Borrowed<'a> = &'a Self;
5228        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5229            value
5230        }
5231    }
5232
5233    unsafe impl fidl::encoding::TypeMarker for MinstrelStatsResponse {
5234        type Owned = Self;
5235
5236        #[inline(always)]
5237        fn inline_align(_context: fidl::encoding::Context) -> usize {
5238            8
5239        }
5240
5241        #[inline(always)]
5242        fn inline_size(_context: fidl::encoding::Context) -> usize {
5243            8
5244        }
5245    }
5246
5247    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelStatsResponse, D>
5248        for &MinstrelStatsResponse
5249    {
5250        #[inline]
5251        unsafe fn encode(
5252            self,
5253            encoder: &mut fidl::encoding::Encoder<'_, D>,
5254            offset: usize,
5255            _depth: fidl::encoding::Depth,
5256        ) -> fidl::Result<()> {
5257            encoder.debug_check_bounds::<MinstrelStatsResponse>(offset);
5258            // Delegate to tuple encoding.
5259            fidl::encoding::Encode::<MinstrelStatsResponse, D>::encode(
5260                (
5261                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel_common::Peer> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer),
5262                ),
5263                encoder, offset, _depth
5264            )
5265        }
5266    }
5267    unsafe impl<
5268        D: fidl::encoding::ResourceDialect,
5269        T0: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel_common::Peer>, D>,
5270    > fidl::encoding::Encode<MinstrelStatsResponse, D> for (T0,)
5271    {
5272        #[inline]
5273        unsafe fn encode(
5274            self,
5275            encoder: &mut fidl::encoding::Encoder<'_, D>,
5276            offset: usize,
5277            depth: fidl::encoding::Depth,
5278        ) -> fidl::Result<()> {
5279            encoder.debug_check_bounds::<MinstrelStatsResponse>(offset);
5280            // Zero out padding regions. There's no need to apply masks
5281            // because the unmasked parts will be overwritten by fields.
5282            // Write the fields.
5283            self.0.encode(encoder, offset + 0, depth)?;
5284            Ok(())
5285        }
5286    }
5287
5288    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelStatsResponse {
5289        #[inline(always)]
5290        fn new_empty() -> Self {
5291            Self {
5292                peer: fidl::new_empty!(
5293                    fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel_common::Peer>,
5294                    D
5295                ),
5296            }
5297        }
5298
5299        #[inline]
5300        unsafe fn decode(
5301            &mut self,
5302            decoder: &mut fidl::encoding::Decoder<'_, D>,
5303            offset: usize,
5304            _depth: fidl::encoding::Depth,
5305        ) -> fidl::Result<()> {
5306            decoder.debug_check_bounds::<Self>(offset);
5307            // Verify that padding bytes are zero.
5308            fidl::decode!(
5309                fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel_common::Peer>,
5310                D,
5311                &mut self.peer,
5312                decoder,
5313                offset + 0,
5314                _depth
5315            )?;
5316            Ok(())
5317        }
5318    }
5319
5320    impl fidl::encoding::ValueTypeMarker for MlmeAssociateIndRequest {
5321        type Borrowed<'a> = &'a Self;
5322        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5323            value
5324        }
5325    }
5326
5327    unsafe impl fidl::encoding::TypeMarker for MlmeAssociateIndRequest {
5328        type Owned = Self;
5329
5330        #[inline(always)]
5331        fn inline_align(_context: fidl::encoding::Context) -> usize {
5332            8
5333        }
5334
5335        #[inline(always)]
5336        fn inline_size(_context: fidl::encoding::Context) -> usize {
5337            64
5338        }
5339    }
5340
5341    unsafe impl<D: fidl::encoding::ResourceDialect>
5342        fidl::encoding::Encode<MlmeAssociateIndRequest, D> for &MlmeAssociateIndRequest
5343    {
5344        #[inline]
5345        unsafe fn encode(
5346            self,
5347            encoder: &mut fidl::encoding::Encoder<'_, D>,
5348            offset: usize,
5349            _depth: fidl::encoding::Depth,
5350        ) -> fidl::Result<()> {
5351            encoder.debug_check_bounds::<MlmeAssociateIndRequest>(offset);
5352            // Delegate to tuple encoding.
5353            fidl::encoding::Encode::<MlmeAssociateIndRequest, D>::encode(
5354                (<AssociateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5355                encoder,
5356                offset,
5357                _depth,
5358            )
5359        }
5360    }
5361    unsafe impl<
5362        D: fidl::encoding::ResourceDialect,
5363        T0: fidl::encoding::Encode<AssociateIndication, D>,
5364    > fidl::encoding::Encode<MlmeAssociateIndRequest, D> for (T0,)
5365    {
5366        #[inline]
5367        unsafe fn encode(
5368            self,
5369            encoder: &mut fidl::encoding::Encoder<'_, D>,
5370            offset: usize,
5371            depth: fidl::encoding::Depth,
5372        ) -> fidl::Result<()> {
5373            encoder.debug_check_bounds::<MlmeAssociateIndRequest>(offset);
5374            // Zero out padding regions. There's no need to apply masks
5375            // because the unmasked parts will be overwritten by fields.
5376            // Write the fields.
5377            self.0.encode(encoder, offset + 0, depth)?;
5378            Ok(())
5379        }
5380    }
5381
5382    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5383        for MlmeAssociateIndRequest
5384    {
5385        #[inline(always)]
5386        fn new_empty() -> Self {
5387            Self { ind: fidl::new_empty!(AssociateIndication, D) }
5388        }
5389
5390        #[inline]
5391        unsafe fn decode(
5392            &mut self,
5393            decoder: &mut fidl::encoding::Decoder<'_, D>,
5394            offset: usize,
5395            _depth: fidl::encoding::Depth,
5396        ) -> fidl::Result<()> {
5397            decoder.debug_check_bounds::<Self>(offset);
5398            // Verify that padding bytes are zero.
5399            fidl::decode!(AssociateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5400            Ok(())
5401        }
5402    }
5403
5404    impl fidl::encoding::ValueTypeMarker for MlmeAssociateRespRequest {
5405        type Borrowed<'a> = &'a Self;
5406        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5407            value
5408        }
5409    }
5410
5411    unsafe impl fidl::encoding::TypeMarker for MlmeAssociateRespRequest {
5412        type Owned = Self;
5413
5414        #[inline(always)]
5415        fn inline_align(_context: fidl::encoding::Context) -> usize {
5416            8
5417        }
5418
5419        #[inline(always)]
5420        fn inline_size(_context: fidl::encoding::Context) -> usize {
5421            32
5422        }
5423    }
5424
5425    unsafe impl<D: fidl::encoding::ResourceDialect>
5426        fidl::encoding::Encode<MlmeAssociateRespRequest, D> for &MlmeAssociateRespRequest
5427    {
5428        #[inline]
5429        unsafe fn encode(
5430            self,
5431            encoder: &mut fidl::encoding::Encoder<'_, D>,
5432            offset: usize,
5433            _depth: fidl::encoding::Depth,
5434        ) -> fidl::Result<()> {
5435            encoder.debug_check_bounds::<MlmeAssociateRespRequest>(offset);
5436            // Delegate to tuple encoding.
5437            fidl::encoding::Encode::<MlmeAssociateRespRequest, D>::encode(
5438                (<AssociateResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5439                encoder,
5440                offset,
5441                _depth,
5442            )
5443        }
5444    }
5445    unsafe impl<
5446        D: fidl::encoding::ResourceDialect,
5447        T0: fidl::encoding::Encode<AssociateResponse, D>,
5448    > fidl::encoding::Encode<MlmeAssociateRespRequest, D> for (T0,)
5449    {
5450        #[inline]
5451        unsafe fn encode(
5452            self,
5453            encoder: &mut fidl::encoding::Encoder<'_, D>,
5454            offset: usize,
5455            depth: fidl::encoding::Depth,
5456        ) -> fidl::Result<()> {
5457            encoder.debug_check_bounds::<MlmeAssociateRespRequest>(offset);
5458            // Zero out padding regions. There's no need to apply masks
5459            // because the unmasked parts will be overwritten by fields.
5460            // Write the fields.
5461            self.0.encode(encoder, offset + 0, depth)?;
5462            Ok(())
5463        }
5464    }
5465
5466    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5467        for MlmeAssociateRespRequest
5468    {
5469        #[inline(always)]
5470        fn new_empty() -> Self {
5471            Self { resp: fidl::new_empty!(AssociateResponse, D) }
5472        }
5473
5474        #[inline]
5475        unsafe fn decode(
5476            &mut self,
5477            decoder: &mut fidl::encoding::Decoder<'_, D>,
5478            offset: usize,
5479            _depth: fidl::encoding::Depth,
5480        ) -> fidl::Result<()> {
5481            decoder.debug_check_bounds::<Self>(offset);
5482            // Verify that padding bytes are zero.
5483            fidl::decode!(AssociateResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
5484            Ok(())
5485        }
5486    }
5487
5488    impl fidl::encoding::ValueTypeMarker for MlmeAuthenticateIndRequest {
5489        type Borrowed<'a> = &'a Self;
5490        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5491            value
5492        }
5493    }
5494
5495    unsafe impl fidl::encoding::TypeMarker for MlmeAuthenticateIndRequest {
5496        type Owned = Self;
5497
5498        #[inline(always)]
5499        fn inline_align(_context: fidl::encoding::Context) -> usize {
5500            4
5501        }
5502
5503        #[inline(always)]
5504        fn inline_size(_context: fidl::encoding::Context) -> usize {
5505            12
5506        }
5507    }
5508
5509    unsafe impl<D: fidl::encoding::ResourceDialect>
5510        fidl::encoding::Encode<MlmeAuthenticateIndRequest, D> for &MlmeAuthenticateIndRequest
5511    {
5512        #[inline]
5513        unsafe fn encode(
5514            self,
5515            encoder: &mut fidl::encoding::Encoder<'_, D>,
5516            offset: usize,
5517            _depth: fidl::encoding::Depth,
5518        ) -> fidl::Result<()> {
5519            encoder.debug_check_bounds::<MlmeAuthenticateIndRequest>(offset);
5520            // Delegate to tuple encoding.
5521            fidl::encoding::Encode::<MlmeAuthenticateIndRequest, D>::encode(
5522                (<AuthenticateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5523                encoder,
5524                offset,
5525                _depth,
5526            )
5527        }
5528    }
5529    unsafe impl<
5530        D: fidl::encoding::ResourceDialect,
5531        T0: fidl::encoding::Encode<AuthenticateIndication, D>,
5532    > fidl::encoding::Encode<MlmeAuthenticateIndRequest, D> for (T0,)
5533    {
5534        #[inline]
5535        unsafe fn encode(
5536            self,
5537            encoder: &mut fidl::encoding::Encoder<'_, D>,
5538            offset: usize,
5539            depth: fidl::encoding::Depth,
5540        ) -> fidl::Result<()> {
5541            encoder.debug_check_bounds::<MlmeAuthenticateIndRequest>(offset);
5542            // Zero out padding regions. There's no need to apply masks
5543            // because the unmasked parts will be overwritten by fields.
5544            // Write the fields.
5545            self.0.encode(encoder, offset + 0, depth)?;
5546            Ok(())
5547        }
5548    }
5549
5550    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5551        for MlmeAuthenticateIndRequest
5552    {
5553        #[inline(always)]
5554        fn new_empty() -> Self {
5555            Self { ind: fidl::new_empty!(AuthenticateIndication, D) }
5556        }
5557
5558        #[inline]
5559        unsafe fn decode(
5560            &mut self,
5561            decoder: &mut fidl::encoding::Decoder<'_, D>,
5562            offset: usize,
5563            _depth: fidl::encoding::Depth,
5564        ) -> fidl::Result<()> {
5565            decoder.debug_check_bounds::<Self>(offset);
5566            // Verify that padding bytes are zero.
5567            fidl::decode!(AuthenticateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5568            Ok(())
5569        }
5570    }
5571
5572    impl fidl::encoding::ValueTypeMarker for MlmeAuthenticateRespRequest {
5573        type Borrowed<'a> = &'a Self;
5574        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5575            value
5576        }
5577    }
5578
5579    unsafe impl fidl::encoding::TypeMarker for MlmeAuthenticateRespRequest {
5580        type Owned = Self;
5581
5582        #[inline(always)]
5583        fn inline_align(_context: fidl::encoding::Context) -> usize {
5584            4
5585        }
5586
5587        #[inline(always)]
5588        fn inline_size(_context: fidl::encoding::Context) -> usize {
5589            12
5590        }
5591    }
5592
5593    unsafe impl<D: fidl::encoding::ResourceDialect>
5594        fidl::encoding::Encode<MlmeAuthenticateRespRequest, D> for &MlmeAuthenticateRespRequest
5595    {
5596        #[inline]
5597        unsafe fn encode(
5598            self,
5599            encoder: &mut fidl::encoding::Encoder<'_, D>,
5600            offset: usize,
5601            _depth: fidl::encoding::Depth,
5602        ) -> fidl::Result<()> {
5603            encoder.debug_check_bounds::<MlmeAuthenticateRespRequest>(offset);
5604            // Delegate to tuple encoding.
5605            fidl::encoding::Encode::<MlmeAuthenticateRespRequest, D>::encode(
5606                (<AuthenticateResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5607                encoder,
5608                offset,
5609                _depth,
5610            )
5611        }
5612    }
5613    unsafe impl<
5614        D: fidl::encoding::ResourceDialect,
5615        T0: fidl::encoding::Encode<AuthenticateResponse, D>,
5616    > fidl::encoding::Encode<MlmeAuthenticateRespRequest, D> for (T0,)
5617    {
5618        #[inline]
5619        unsafe fn encode(
5620            self,
5621            encoder: &mut fidl::encoding::Encoder<'_, D>,
5622            offset: usize,
5623            depth: fidl::encoding::Depth,
5624        ) -> fidl::Result<()> {
5625            encoder.debug_check_bounds::<MlmeAuthenticateRespRequest>(offset);
5626            // Zero out padding regions. There's no need to apply masks
5627            // because the unmasked parts will be overwritten by fields.
5628            // Write the fields.
5629            self.0.encode(encoder, offset + 0, depth)?;
5630            Ok(())
5631        }
5632    }
5633
5634    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5635        for MlmeAuthenticateRespRequest
5636    {
5637        #[inline(always)]
5638        fn new_empty() -> Self {
5639            Self { resp: fidl::new_empty!(AuthenticateResponse, D) }
5640        }
5641
5642        #[inline]
5643        unsafe fn decode(
5644            &mut self,
5645            decoder: &mut fidl::encoding::Decoder<'_, D>,
5646            offset: usize,
5647            _depth: fidl::encoding::Depth,
5648        ) -> fidl::Result<()> {
5649            decoder.debug_check_bounds::<Self>(offset);
5650            // Verify that padding bytes are zero.
5651            fidl::decode!(AuthenticateResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
5652            Ok(())
5653        }
5654    }
5655
5656    impl fidl::encoding::ValueTypeMarker for MlmeConnectConfRequest {
5657        type Borrowed<'a> = &'a Self;
5658        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5659            value
5660        }
5661    }
5662
5663    unsafe impl fidl::encoding::TypeMarker for MlmeConnectConfRequest {
5664        type Owned = Self;
5665
5666        #[inline(always)]
5667        fn inline_align(_context: fidl::encoding::Context) -> usize {
5668            8
5669        }
5670
5671        #[inline(always)]
5672        fn inline_size(_context: fidl::encoding::Context) -> usize {
5673            32
5674        }
5675    }
5676
5677    unsafe impl<D: fidl::encoding::ResourceDialect>
5678        fidl::encoding::Encode<MlmeConnectConfRequest, D> for &MlmeConnectConfRequest
5679    {
5680        #[inline]
5681        unsafe fn encode(
5682            self,
5683            encoder: &mut fidl::encoding::Encoder<'_, D>,
5684            offset: usize,
5685            _depth: fidl::encoding::Depth,
5686        ) -> fidl::Result<()> {
5687            encoder.debug_check_bounds::<MlmeConnectConfRequest>(offset);
5688            // Delegate to tuple encoding.
5689            fidl::encoding::Encode::<MlmeConnectConfRequest, D>::encode(
5690                (<ConnectConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5691                encoder,
5692                offset,
5693                _depth,
5694            )
5695        }
5696    }
5697    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ConnectConfirm, D>>
5698        fidl::encoding::Encode<MlmeConnectConfRequest, D> for (T0,)
5699    {
5700        #[inline]
5701        unsafe fn encode(
5702            self,
5703            encoder: &mut fidl::encoding::Encoder<'_, D>,
5704            offset: usize,
5705            depth: fidl::encoding::Depth,
5706        ) -> fidl::Result<()> {
5707            encoder.debug_check_bounds::<MlmeConnectConfRequest>(offset);
5708            // Zero out padding regions. There's no need to apply masks
5709            // because the unmasked parts will be overwritten by fields.
5710            // Write the fields.
5711            self.0.encode(encoder, offset + 0, depth)?;
5712            Ok(())
5713        }
5714    }
5715
5716    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5717        for MlmeConnectConfRequest
5718    {
5719        #[inline(always)]
5720        fn new_empty() -> Self {
5721            Self { resp: fidl::new_empty!(ConnectConfirm, D) }
5722        }
5723
5724        #[inline]
5725        unsafe fn decode(
5726            &mut self,
5727            decoder: &mut fidl::encoding::Decoder<'_, D>,
5728            offset: usize,
5729            _depth: fidl::encoding::Depth,
5730        ) -> fidl::Result<()> {
5731            decoder.debug_check_bounds::<Self>(offset);
5732            // Verify that padding bytes are zero.
5733            fidl::decode!(ConnectConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
5734            Ok(())
5735        }
5736    }
5737
5738    impl fidl::encoding::ValueTypeMarker for MlmeConnectReqRequest {
5739        type Borrowed<'a> = &'a Self;
5740        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5741            value
5742        }
5743    }
5744
5745    unsafe impl fidl::encoding::TypeMarker for MlmeConnectReqRequest {
5746        type Owned = Self;
5747
5748        #[inline(always)]
5749        fn inline_align(_context: fidl::encoding::Context) -> usize {
5750            8
5751        }
5752
5753        #[inline(always)]
5754        fn inline_size(_context: fidl::encoding::Context) -> usize {
5755            104
5756        }
5757    }
5758
5759    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeConnectReqRequest, D>
5760        for &MlmeConnectReqRequest
5761    {
5762        #[inline]
5763        unsafe fn encode(
5764            self,
5765            encoder: &mut fidl::encoding::Encoder<'_, D>,
5766            offset: usize,
5767            _depth: fidl::encoding::Depth,
5768        ) -> fidl::Result<()> {
5769            encoder.debug_check_bounds::<MlmeConnectReqRequest>(offset);
5770            // Delegate to tuple encoding.
5771            fidl::encoding::Encode::<MlmeConnectReqRequest, D>::encode(
5772                (<ConnectRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5773                encoder,
5774                offset,
5775                _depth,
5776            )
5777        }
5778    }
5779    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ConnectRequest, D>>
5780        fidl::encoding::Encode<MlmeConnectReqRequest, D> for (T0,)
5781    {
5782        #[inline]
5783        unsafe fn encode(
5784            self,
5785            encoder: &mut fidl::encoding::Encoder<'_, D>,
5786            offset: usize,
5787            depth: fidl::encoding::Depth,
5788        ) -> fidl::Result<()> {
5789            encoder.debug_check_bounds::<MlmeConnectReqRequest>(offset);
5790            // Zero out padding regions. There's no need to apply masks
5791            // because the unmasked parts will be overwritten by fields.
5792            // Write the fields.
5793            self.0.encode(encoder, offset + 0, depth)?;
5794            Ok(())
5795        }
5796    }
5797
5798    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeConnectReqRequest {
5799        #[inline(always)]
5800        fn new_empty() -> Self {
5801            Self { req: fidl::new_empty!(ConnectRequest, D) }
5802        }
5803
5804        #[inline]
5805        unsafe fn decode(
5806            &mut self,
5807            decoder: &mut fidl::encoding::Decoder<'_, D>,
5808            offset: usize,
5809            _depth: fidl::encoding::Depth,
5810        ) -> fidl::Result<()> {
5811            decoder.debug_check_bounds::<Self>(offset);
5812            // Verify that padding bytes are zero.
5813            fidl::decode!(ConnectRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5814            Ok(())
5815        }
5816    }
5817
5818    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateConfRequest {
5819        type Borrowed<'a> = &'a Self;
5820        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5821            value
5822        }
5823    }
5824
5825    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateConfRequest {
5826        type Owned = Self;
5827
5828        #[inline(always)]
5829        fn inline_align(_context: fidl::encoding::Context) -> usize {
5830            1
5831        }
5832
5833        #[inline(always)]
5834        fn inline_size(_context: fidl::encoding::Context) -> usize {
5835            6
5836        }
5837        #[inline(always)]
5838        fn encode_is_copy() -> bool {
5839            true
5840        }
5841
5842        #[inline(always)]
5843        fn decode_is_copy() -> bool {
5844            true
5845        }
5846    }
5847
5848    unsafe impl<D: fidl::encoding::ResourceDialect>
5849        fidl::encoding::Encode<MlmeDeauthenticateConfRequest, D>
5850        for &MlmeDeauthenticateConfRequest
5851    {
5852        #[inline]
5853        unsafe fn encode(
5854            self,
5855            encoder: &mut fidl::encoding::Encoder<'_, D>,
5856            offset: usize,
5857            _depth: fidl::encoding::Depth,
5858        ) -> fidl::Result<()> {
5859            encoder.debug_check_bounds::<MlmeDeauthenticateConfRequest>(offset);
5860            unsafe {
5861                // Copy the object into the buffer.
5862                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5863                (buf_ptr as *mut MlmeDeauthenticateConfRequest)
5864                    .write_unaligned((self as *const MlmeDeauthenticateConfRequest).read());
5865                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
5866                // done second because the memcpy will write garbage to these bytes.
5867            }
5868            Ok(())
5869        }
5870    }
5871    unsafe impl<
5872        D: fidl::encoding::ResourceDialect,
5873        T0: fidl::encoding::Encode<DeauthenticateConfirm, D>,
5874    > fidl::encoding::Encode<MlmeDeauthenticateConfRequest, D> for (T0,)
5875    {
5876        #[inline]
5877        unsafe fn encode(
5878            self,
5879            encoder: &mut fidl::encoding::Encoder<'_, D>,
5880            offset: usize,
5881            depth: fidl::encoding::Depth,
5882        ) -> fidl::Result<()> {
5883            encoder.debug_check_bounds::<MlmeDeauthenticateConfRequest>(offset);
5884            // Zero out padding regions. There's no need to apply masks
5885            // because the unmasked parts will be overwritten by fields.
5886            // Write the fields.
5887            self.0.encode(encoder, offset + 0, depth)?;
5888            Ok(())
5889        }
5890    }
5891
5892    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5893        for MlmeDeauthenticateConfRequest
5894    {
5895        #[inline(always)]
5896        fn new_empty() -> Self {
5897            Self { resp: fidl::new_empty!(DeauthenticateConfirm, D) }
5898        }
5899
5900        #[inline]
5901        unsafe fn decode(
5902            &mut self,
5903            decoder: &mut fidl::encoding::Decoder<'_, D>,
5904            offset: usize,
5905            _depth: fidl::encoding::Depth,
5906        ) -> fidl::Result<()> {
5907            decoder.debug_check_bounds::<Self>(offset);
5908            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5909            // Verify that padding bytes are zero.
5910            // Copy from the buffer into the object.
5911            unsafe {
5912                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
5913            }
5914            Ok(())
5915        }
5916    }
5917
5918    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateIndRequest {
5919        type Borrowed<'a> = &'a Self;
5920        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5921            value
5922        }
5923    }
5924
5925    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateIndRequest {
5926        type Owned = Self;
5927
5928        #[inline(always)]
5929        fn inline_align(_context: fidl::encoding::Context) -> usize {
5930            2
5931        }
5932
5933        #[inline(always)]
5934        fn inline_size(_context: fidl::encoding::Context) -> usize {
5935            10
5936        }
5937    }
5938
5939    unsafe impl<D: fidl::encoding::ResourceDialect>
5940        fidl::encoding::Encode<MlmeDeauthenticateIndRequest, D> for &MlmeDeauthenticateIndRequest
5941    {
5942        #[inline]
5943        unsafe fn encode(
5944            self,
5945            encoder: &mut fidl::encoding::Encoder<'_, D>,
5946            offset: usize,
5947            _depth: fidl::encoding::Depth,
5948        ) -> fidl::Result<()> {
5949            encoder.debug_check_bounds::<MlmeDeauthenticateIndRequest>(offset);
5950            // Delegate to tuple encoding.
5951            fidl::encoding::Encode::<MlmeDeauthenticateIndRequest, D>::encode(
5952                (<DeauthenticateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5953                encoder,
5954                offset,
5955                _depth,
5956            )
5957        }
5958    }
5959    unsafe impl<
5960        D: fidl::encoding::ResourceDialect,
5961        T0: fidl::encoding::Encode<DeauthenticateIndication, D>,
5962    > fidl::encoding::Encode<MlmeDeauthenticateIndRequest, D> for (T0,)
5963    {
5964        #[inline]
5965        unsafe fn encode(
5966            self,
5967            encoder: &mut fidl::encoding::Encoder<'_, D>,
5968            offset: usize,
5969            depth: fidl::encoding::Depth,
5970        ) -> fidl::Result<()> {
5971            encoder.debug_check_bounds::<MlmeDeauthenticateIndRequest>(offset);
5972            // Zero out padding regions. There's no need to apply masks
5973            // because the unmasked parts will be overwritten by fields.
5974            // Write the fields.
5975            self.0.encode(encoder, offset + 0, depth)?;
5976            Ok(())
5977        }
5978    }
5979
5980    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5981        for MlmeDeauthenticateIndRequest
5982    {
5983        #[inline(always)]
5984        fn new_empty() -> Self {
5985            Self { ind: fidl::new_empty!(DeauthenticateIndication, D) }
5986        }
5987
5988        #[inline]
5989        unsafe fn decode(
5990            &mut self,
5991            decoder: &mut fidl::encoding::Decoder<'_, D>,
5992            offset: usize,
5993            _depth: fidl::encoding::Depth,
5994        ) -> fidl::Result<()> {
5995            decoder.debug_check_bounds::<Self>(offset);
5996            // Verify that padding bytes are zero.
5997            fidl::decode!(DeauthenticateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5998            Ok(())
5999        }
6000    }
6001
6002    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateReqRequest {
6003        type Borrowed<'a> = &'a Self;
6004        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6005            value
6006        }
6007    }
6008
6009    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateReqRequest {
6010        type Owned = Self;
6011
6012        #[inline(always)]
6013        fn inline_align(_context: fidl::encoding::Context) -> usize {
6014            2
6015        }
6016
6017        #[inline(always)]
6018        fn inline_size(_context: fidl::encoding::Context) -> usize {
6019            8
6020        }
6021    }
6022
6023    unsafe impl<D: fidl::encoding::ResourceDialect>
6024        fidl::encoding::Encode<MlmeDeauthenticateReqRequest, D> for &MlmeDeauthenticateReqRequest
6025    {
6026        #[inline]
6027        unsafe fn encode(
6028            self,
6029            encoder: &mut fidl::encoding::Encoder<'_, D>,
6030            offset: usize,
6031            _depth: fidl::encoding::Depth,
6032        ) -> fidl::Result<()> {
6033            encoder.debug_check_bounds::<MlmeDeauthenticateReqRequest>(offset);
6034            // Delegate to tuple encoding.
6035            fidl::encoding::Encode::<MlmeDeauthenticateReqRequest, D>::encode(
6036                (<DeauthenticateRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6037                encoder,
6038                offset,
6039                _depth,
6040            )
6041        }
6042    }
6043    unsafe impl<
6044        D: fidl::encoding::ResourceDialect,
6045        T0: fidl::encoding::Encode<DeauthenticateRequest, D>,
6046    > fidl::encoding::Encode<MlmeDeauthenticateReqRequest, D> for (T0,)
6047    {
6048        #[inline]
6049        unsafe fn encode(
6050            self,
6051            encoder: &mut fidl::encoding::Encoder<'_, D>,
6052            offset: usize,
6053            depth: fidl::encoding::Depth,
6054        ) -> fidl::Result<()> {
6055            encoder.debug_check_bounds::<MlmeDeauthenticateReqRequest>(offset);
6056            // Zero out padding regions. There's no need to apply masks
6057            // because the unmasked parts will be overwritten by fields.
6058            // Write the fields.
6059            self.0.encode(encoder, offset + 0, depth)?;
6060            Ok(())
6061        }
6062    }
6063
6064    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6065        for MlmeDeauthenticateReqRequest
6066    {
6067        #[inline(always)]
6068        fn new_empty() -> Self {
6069            Self { req: fidl::new_empty!(DeauthenticateRequest, D) }
6070        }
6071
6072        #[inline]
6073        unsafe fn decode(
6074            &mut self,
6075            decoder: &mut fidl::encoding::Decoder<'_, D>,
6076            offset: usize,
6077            _depth: fidl::encoding::Depth,
6078        ) -> fidl::Result<()> {
6079            decoder.debug_check_bounds::<Self>(offset);
6080            // Verify that padding bytes are zero.
6081            fidl::decode!(DeauthenticateRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6082            Ok(())
6083        }
6084    }
6085
6086    impl fidl::encoding::ValueTypeMarker for MlmeDeleteKeysReqRequest {
6087        type Borrowed<'a> = &'a Self;
6088        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6089            value
6090        }
6091    }
6092
6093    unsafe impl fidl::encoding::TypeMarker for MlmeDeleteKeysReqRequest {
6094        type Owned = Self;
6095
6096        #[inline(always)]
6097        fn inline_align(_context: fidl::encoding::Context) -> usize {
6098            8
6099        }
6100
6101        #[inline(always)]
6102        fn inline_size(_context: fidl::encoding::Context) -> usize {
6103            16
6104        }
6105    }
6106
6107    unsafe impl<D: fidl::encoding::ResourceDialect>
6108        fidl::encoding::Encode<MlmeDeleteKeysReqRequest, D> for &MlmeDeleteKeysReqRequest
6109    {
6110        #[inline]
6111        unsafe fn encode(
6112            self,
6113            encoder: &mut fidl::encoding::Encoder<'_, D>,
6114            offset: usize,
6115            _depth: fidl::encoding::Depth,
6116        ) -> fidl::Result<()> {
6117            encoder.debug_check_bounds::<MlmeDeleteKeysReqRequest>(offset);
6118            // Delegate to tuple encoding.
6119            fidl::encoding::Encode::<MlmeDeleteKeysReqRequest, D>::encode(
6120                (<DeleteKeysRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6121                encoder,
6122                offset,
6123                _depth,
6124            )
6125        }
6126    }
6127    unsafe impl<
6128        D: fidl::encoding::ResourceDialect,
6129        T0: fidl::encoding::Encode<DeleteKeysRequest, D>,
6130    > fidl::encoding::Encode<MlmeDeleteKeysReqRequest, D> for (T0,)
6131    {
6132        #[inline]
6133        unsafe fn encode(
6134            self,
6135            encoder: &mut fidl::encoding::Encoder<'_, D>,
6136            offset: usize,
6137            depth: fidl::encoding::Depth,
6138        ) -> fidl::Result<()> {
6139            encoder.debug_check_bounds::<MlmeDeleteKeysReqRequest>(offset);
6140            // Zero out padding regions. There's no need to apply masks
6141            // because the unmasked parts will be overwritten by fields.
6142            // Write the fields.
6143            self.0.encode(encoder, offset + 0, depth)?;
6144            Ok(())
6145        }
6146    }
6147
6148    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6149        for MlmeDeleteKeysReqRequest
6150    {
6151        #[inline(always)]
6152        fn new_empty() -> Self {
6153            Self { req: fidl::new_empty!(DeleteKeysRequest, D) }
6154        }
6155
6156        #[inline]
6157        unsafe fn decode(
6158            &mut self,
6159            decoder: &mut fidl::encoding::Decoder<'_, D>,
6160            offset: usize,
6161            _depth: fidl::encoding::Depth,
6162        ) -> fidl::Result<()> {
6163            decoder.debug_check_bounds::<Self>(offset);
6164            // Verify that padding bytes are zero.
6165            fidl::decode!(DeleteKeysRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6166            Ok(())
6167        }
6168    }
6169
6170    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateConfRequest {
6171        type Borrowed<'a> = &'a Self;
6172        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6173            value
6174        }
6175    }
6176
6177    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateConfRequest {
6178        type Owned = Self;
6179
6180        #[inline(always)]
6181        fn inline_align(_context: fidl::encoding::Context) -> usize {
6182            4
6183        }
6184
6185        #[inline(always)]
6186        fn inline_size(_context: fidl::encoding::Context) -> usize {
6187            4
6188        }
6189        #[inline(always)]
6190        fn encode_is_copy() -> bool {
6191            true
6192        }
6193
6194        #[inline(always)]
6195        fn decode_is_copy() -> bool {
6196            true
6197        }
6198    }
6199
6200    unsafe impl<D: fidl::encoding::ResourceDialect>
6201        fidl::encoding::Encode<MlmeDisassociateConfRequest, D> for &MlmeDisassociateConfRequest
6202    {
6203        #[inline]
6204        unsafe fn encode(
6205            self,
6206            encoder: &mut fidl::encoding::Encoder<'_, D>,
6207            offset: usize,
6208            _depth: fidl::encoding::Depth,
6209        ) -> fidl::Result<()> {
6210            encoder.debug_check_bounds::<MlmeDisassociateConfRequest>(offset);
6211            unsafe {
6212                // Copy the object into the buffer.
6213                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
6214                (buf_ptr as *mut MlmeDisassociateConfRequest)
6215                    .write_unaligned((self as *const MlmeDisassociateConfRequest).read());
6216                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
6217                // done second because the memcpy will write garbage to these bytes.
6218            }
6219            Ok(())
6220        }
6221    }
6222    unsafe impl<
6223        D: fidl::encoding::ResourceDialect,
6224        T0: fidl::encoding::Encode<DisassociateConfirm, D>,
6225    > fidl::encoding::Encode<MlmeDisassociateConfRequest, D> for (T0,)
6226    {
6227        #[inline]
6228        unsafe fn encode(
6229            self,
6230            encoder: &mut fidl::encoding::Encoder<'_, D>,
6231            offset: usize,
6232            depth: fidl::encoding::Depth,
6233        ) -> fidl::Result<()> {
6234            encoder.debug_check_bounds::<MlmeDisassociateConfRequest>(offset);
6235            // Zero out padding regions. There's no need to apply masks
6236            // because the unmasked parts will be overwritten by fields.
6237            // Write the fields.
6238            self.0.encode(encoder, offset + 0, depth)?;
6239            Ok(())
6240        }
6241    }
6242
6243    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6244        for MlmeDisassociateConfRequest
6245    {
6246        #[inline(always)]
6247        fn new_empty() -> Self {
6248            Self { resp: fidl::new_empty!(DisassociateConfirm, D) }
6249        }
6250
6251        #[inline]
6252        unsafe fn decode(
6253            &mut self,
6254            decoder: &mut fidl::encoding::Decoder<'_, D>,
6255            offset: usize,
6256            _depth: fidl::encoding::Depth,
6257        ) -> fidl::Result<()> {
6258            decoder.debug_check_bounds::<Self>(offset);
6259            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
6260            // Verify that padding bytes are zero.
6261            // Copy from the buffer into the object.
6262            unsafe {
6263                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
6264            }
6265            Ok(())
6266        }
6267    }
6268
6269    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateIndRequest {
6270        type Borrowed<'a> = &'a Self;
6271        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6272            value
6273        }
6274    }
6275
6276    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateIndRequest {
6277        type Owned = Self;
6278
6279        #[inline(always)]
6280        fn inline_align(_context: fidl::encoding::Context) -> usize {
6281            2
6282        }
6283
6284        #[inline(always)]
6285        fn inline_size(_context: fidl::encoding::Context) -> usize {
6286            10
6287        }
6288    }
6289
6290    unsafe impl<D: fidl::encoding::ResourceDialect>
6291        fidl::encoding::Encode<MlmeDisassociateIndRequest, D> for &MlmeDisassociateIndRequest
6292    {
6293        #[inline]
6294        unsafe fn encode(
6295            self,
6296            encoder: &mut fidl::encoding::Encoder<'_, D>,
6297            offset: usize,
6298            _depth: fidl::encoding::Depth,
6299        ) -> fidl::Result<()> {
6300            encoder.debug_check_bounds::<MlmeDisassociateIndRequest>(offset);
6301            // Delegate to tuple encoding.
6302            fidl::encoding::Encode::<MlmeDisassociateIndRequest, D>::encode(
6303                (<DisassociateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
6304                encoder,
6305                offset,
6306                _depth,
6307            )
6308        }
6309    }
6310    unsafe impl<
6311        D: fidl::encoding::ResourceDialect,
6312        T0: fidl::encoding::Encode<DisassociateIndication, D>,
6313    > fidl::encoding::Encode<MlmeDisassociateIndRequest, D> for (T0,)
6314    {
6315        #[inline]
6316        unsafe fn encode(
6317            self,
6318            encoder: &mut fidl::encoding::Encoder<'_, D>,
6319            offset: usize,
6320            depth: fidl::encoding::Depth,
6321        ) -> fidl::Result<()> {
6322            encoder.debug_check_bounds::<MlmeDisassociateIndRequest>(offset);
6323            // Zero out padding regions. There's no need to apply masks
6324            // because the unmasked parts will be overwritten by fields.
6325            // Write the fields.
6326            self.0.encode(encoder, offset + 0, depth)?;
6327            Ok(())
6328        }
6329    }
6330
6331    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6332        for MlmeDisassociateIndRequest
6333    {
6334        #[inline(always)]
6335        fn new_empty() -> Self {
6336            Self { ind: fidl::new_empty!(DisassociateIndication, D) }
6337        }
6338
6339        #[inline]
6340        unsafe fn decode(
6341            &mut self,
6342            decoder: &mut fidl::encoding::Decoder<'_, D>,
6343            offset: usize,
6344            _depth: fidl::encoding::Depth,
6345        ) -> fidl::Result<()> {
6346            decoder.debug_check_bounds::<Self>(offset);
6347            // Verify that padding bytes are zero.
6348            fidl::decode!(DisassociateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
6349            Ok(())
6350        }
6351    }
6352
6353    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateReqRequest {
6354        type Borrowed<'a> = &'a Self;
6355        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6356            value
6357        }
6358    }
6359
6360    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateReqRequest {
6361        type Owned = Self;
6362
6363        #[inline(always)]
6364        fn inline_align(_context: fidl::encoding::Context) -> usize {
6365            2
6366        }
6367
6368        #[inline(always)]
6369        fn inline_size(_context: fidl::encoding::Context) -> usize {
6370            8
6371        }
6372    }
6373
6374    unsafe impl<D: fidl::encoding::ResourceDialect>
6375        fidl::encoding::Encode<MlmeDisassociateReqRequest, D> for &MlmeDisassociateReqRequest
6376    {
6377        #[inline]
6378        unsafe fn encode(
6379            self,
6380            encoder: &mut fidl::encoding::Encoder<'_, D>,
6381            offset: usize,
6382            _depth: fidl::encoding::Depth,
6383        ) -> fidl::Result<()> {
6384            encoder.debug_check_bounds::<MlmeDisassociateReqRequest>(offset);
6385            // Delegate to tuple encoding.
6386            fidl::encoding::Encode::<MlmeDisassociateReqRequest, D>::encode(
6387                (<DisassociateRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6388                encoder,
6389                offset,
6390                _depth,
6391            )
6392        }
6393    }
6394    unsafe impl<
6395        D: fidl::encoding::ResourceDialect,
6396        T0: fidl::encoding::Encode<DisassociateRequest, D>,
6397    > fidl::encoding::Encode<MlmeDisassociateReqRequest, D> for (T0,)
6398    {
6399        #[inline]
6400        unsafe fn encode(
6401            self,
6402            encoder: &mut fidl::encoding::Encoder<'_, D>,
6403            offset: usize,
6404            depth: fidl::encoding::Depth,
6405        ) -> fidl::Result<()> {
6406            encoder.debug_check_bounds::<MlmeDisassociateReqRequest>(offset);
6407            // Zero out padding regions. There's no need to apply masks
6408            // because the unmasked parts will be overwritten by fields.
6409            // Write the fields.
6410            self.0.encode(encoder, offset + 0, depth)?;
6411            Ok(())
6412        }
6413    }
6414
6415    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6416        for MlmeDisassociateReqRequest
6417    {
6418        #[inline(always)]
6419        fn new_empty() -> Self {
6420            Self { req: fidl::new_empty!(DisassociateRequest, D) }
6421        }
6422
6423        #[inline]
6424        unsafe fn decode(
6425            &mut self,
6426            decoder: &mut fidl::encoding::Decoder<'_, D>,
6427            offset: usize,
6428            _depth: fidl::encoding::Depth,
6429        ) -> fidl::Result<()> {
6430            decoder.debug_check_bounds::<Self>(offset);
6431            // Verify that padding bytes are zero.
6432            fidl::decode!(DisassociateRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6433            Ok(())
6434        }
6435    }
6436
6437    impl fidl::encoding::ValueTypeMarker for MlmeEapolConfRequest {
6438        type Borrowed<'a> = &'a Self;
6439        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6440            value
6441        }
6442    }
6443
6444    unsafe impl fidl::encoding::TypeMarker for MlmeEapolConfRequest {
6445        type Owned = Self;
6446
6447        #[inline(always)]
6448        fn inline_align(_context: fidl::encoding::Context) -> usize {
6449            4
6450        }
6451
6452        #[inline(always)]
6453        fn inline_size(_context: fidl::encoding::Context) -> usize {
6454            12
6455        }
6456    }
6457
6458    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolConfRequest, D>
6459        for &MlmeEapolConfRequest
6460    {
6461        #[inline]
6462        unsafe fn encode(
6463            self,
6464            encoder: &mut fidl::encoding::Encoder<'_, D>,
6465            offset: usize,
6466            _depth: fidl::encoding::Depth,
6467        ) -> fidl::Result<()> {
6468            encoder.debug_check_bounds::<MlmeEapolConfRequest>(offset);
6469            // Delegate to tuple encoding.
6470            fidl::encoding::Encode::<MlmeEapolConfRequest, D>::encode(
6471                (<EapolConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6472                encoder,
6473                offset,
6474                _depth,
6475            )
6476        }
6477    }
6478    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolConfirm, D>>
6479        fidl::encoding::Encode<MlmeEapolConfRequest, D> for (T0,)
6480    {
6481        #[inline]
6482        unsafe fn encode(
6483            self,
6484            encoder: &mut fidl::encoding::Encoder<'_, D>,
6485            offset: usize,
6486            depth: fidl::encoding::Depth,
6487        ) -> fidl::Result<()> {
6488            encoder.debug_check_bounds::<MlmeEapolConfRequest>(offset);
6489            // Zero out padding regions. There's no need to apply masks
6490            // because the unmasked parts will be overwritten by fields.
6491            // Write the fields.
6492            self.0.encode(encoder, offset + 0, depth)?;
6493            Ok(())
6494        }
6495    }
6496
6497    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolConfRequest {
6498        #[inline(always)]
6499        fn new_empty() -> Self {
6500            Self { resp: fidl::new_empty!(EapolConfirm, D) }
6501        }
6502
6503        #[inline]
6504        unsafe fn decode(
6505            &mut self,
6506            decoder: &mut fidl::encoding::Decoder<'_, D>,
6507            offset: usize,
6508            _depth: fidl::encoding::Depth,
6509        ) -> fidl::Result<()> {
6510            decoder.debug_check_bounds::<Self>(offset);
6511            // Verify that padding bytes are zero.
6512            fidl::decode!(EapolConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
6513            Ok(())
6514        }
6515    }
6516
6517    impl fidl::encoding::ValueTypeMarker for MlmeEapolIndRequest {
6518        type Borrowed<'a> = &'a Self;
6519        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6520            value
6521        }
6522    }
6523
6524    unsafe impl fidl::encoding::TypeMarker for MlmeEapolIndRequest {
6525        type Owned = Self;
6526
6527        #[inline(always)]
6528        fn inline_align(_context: fidl::encoding::Context) -> usize {
6529            8
6530        }
6531
6532        #[inline(always)]
6533        fn inline_size(_context: fidl::encoding::Context) -> usize {
6534            32
6535        }
6536    }
6537
6538    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolIndRequest, D>
6539        for &MlmeEapolIndRequest
6540    {
6541        #[inline]
6542        unsafe fn encode(
6543            self,
6544            encoder: &mut fidl::encoding::Encoder<'_, D>,
6545            offset: usize,
6546            _depth: fidl::encoding::Depth,
6547        ) -> fidl::Result<()> {
6548            encoder.debug_check_bounds::<MlmeEapolIndRequest>(offset);
6549            // Delegate to tuple encoding.
6550            fidl::encoding::Encode::<MlmeEapolIndRequest, D>::encode(
6551                (<EapolIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
6552                encoder,
6553                offset,
6554                _depth,
6555            )
6556        }
6557    }
6558    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolIndication, D>>
6559        fidl::encoding::Encode<MlmeEapolIndRequest, D> for (T0,)
6560    {
6561        #[inline]
6562        unsafe fn encode(
6563            self,
6564            encoder: &mut fidl::encoding::Encoder<'_, D>,
6565            offset: usize,
6566            depth: fidl::encoding::Depth,
6567        ) -> fidl::Result<()> {
6568            encoder.debug_check_bounds::<MlmeEapolIndRequest>(offset);
6569            // Zero out padding regions. There's no need to apply masks
6570            // because the unmasked parts will be overwritten by fields.
6571            // Write the fields.
6572            self.0.encode(encoder, offset + 0, depth)?;
6573            Ok(())
6574        }
6575    }
6576
6577    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolIndRequest {
6578        #[inline(always)]
6579        fn new_empty() -> Self {
6580            Self { ind: fidl::new_empty!(EapolIndication, D) }
6581        }
6582
6583        #[inline]
6584        unsafe fn decode(
6585            &mut self,
6586            decoder: &mut fidl::encoding::Decoder<'_, D>,
6587            offset: usize,
6588            _depth: fidl::encoding::Depth,
6589        ) -> fidl::Result<()> {
6590            decoder.debug_check_bounds::<Self>(offset);
6591            // Verify that padding bytes are zero.
6592            fidl::decode!(EapolIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
6593            Ok(())
6594        }
6595    }
6596
6597    impl fidl::encoding::ValueTypeMarker for MlmeEapolReqRequest {
6598        type Borrowed<'a> = &'a Self;
6599        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6600            value
6601        }
6602    }
6603
6604    unsafe impl fidl::encoding::TypeMarker for MlmeEapolReqRequest {
6605        type Owned = Self;
6606
6607        #[inline(always)]
6608        fn inline_align(_context: fidl::encoding::Context) -> usize {
6609            8
6610        }
6611
6612        #[inline(always)]
6613        fn inline_size(_context: fidl::encoding::Context) -> usize {
6614            32
6615        }
6616    }
6617
6618    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolReqRequest, D>
6619        for &MlmeEapolReqRequest
6620    {
6621        #[inline]
6622        unsafe fn encode(
6623            self,
6624            encoder: &mut fidl::encoding::Encoder<'_, D>,
6625            offset: usize,
6626            _depth: fidl::encoding::Depth,
6627        ) -> fidl::Result<()> {
6628            encoder.debug_check_bounds::<MlmeEapolReqRequest>(offset);
6629            // Delegate to tuple encoding.
6630            fidl::encoding::Encode::<MlmeEapolReqRequest, D>::encode(
6631                (<EapolRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6632                encoder,
6633                offset,
6634                _depth,
6635            )
6636        }
6637    }
6638    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolRequest, D>>
6639        fidl::encoding::Encode<MlmeEapolReqRequest, D> for (T0,)
6640    {
6641        #[inline]
6642        unsafe fn encode(
6643            self,
6644            encoder: &mut fidl::encoding::Encoder<'_, D>,
6645            offset: usize,
6646            depth: fidl::encoding::Depth,
6647        ) -> fidl::Result<()> {
6648            encoder.debug_check_bounds::<MlmeEapolReqRequest>(offset);
6649            // Zero out padding regions. There's no need to apply masks
6650            // because the unmasked parts will be overwritten by fields.
6651            // Write the fields.
6652            self.0.encode(encoder, offset + 0, depth)?;
6653            Ok(())
6654        }
6655    }
6656
6657    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolReqRequest {
6658        #[inline(always)]
6659        fn new_empty() -> Self {
6660            Self { req: fidl::new_empty!(EapolRequest, D) }
6661        }
6662
6663        #[inline]
6664        unsafe fn decode(
6665            &mut self,
6666            decoder: &mut fidl::encoding::Decoder<'_, D>,
6667            offset: usize,
6668            _depth: fidl::encoding::Depth,
6669        ) -> fidl::Result<()> {
6670            decoder.debug_check_bounds::<Self>(offset);
6671            // Verify that padding bytes are zero.
6672            fidl::decode!(EapolRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6673            Ok(())
6674        }
6675    }
6676
6677    impl fidl::encoding::ValueTypeMarker for MlmeFinalizeAssociationReqRequest {
6678        type Borrowed<'a> = &'a Self;
6679        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6680            value
6681        }
6682    }
6683
6684    unsafe impl fidl::encoding::TypeMarker for MlmeFinalizeAssociationReqRequest {
6685        type Owned = Self;
6686
6687        #[inline(always)]
6688        fn inline_align(_context: fidl::encoding::Context) -> usize {
6689            8
6690        }
6691
6692        #[inline(always)]
6693        fn inline_size(_context: fidl::encoding::Context) -> usize {
6694            48
6695        }
6696    }
6697
6698    unsafe impl<D: fidl::encoding::ResourceDialect>
6699        fidl::encoding::Encode<MlmeFinalizeAssociationReqRequest, D>
6700        for &MlmeFinalizeAssociationReqRequest
6701    {
6702        #[inline]
6703        unsafe fn encode(
6704            self,
6705            encoder: &mut fidl::encoding::Encoder<'_, D>,
6706            offset: usize,
6707            _depth: fidl::encoding::Depth,
6708        ) -> fidl::Result<()> {
6709            encoder.debug_check_bounds::<MlmeFinalizeAssociationReqRequest>(offset);
6710            // Delegate to tuple encoding.
6711            fidl::encoding::Encode::<MlmeFinalizeAssociationReqRequest, D>::encode(
6712                (<NegotiatedCapabilities as fidl::encoding::ValueTypeMarker>::borrow(
6713                    &self.negotiated_capabilities,
6714                ),),
6715                encoder,
6716                offset,
6717                _depth,
6718            )
6719        }
6720    }
6721    unsafe impl<
6722        D: fidl::encoding::ResourceDialect,
6723        T0: fidl::encoding::Encode<NegotiatedCapabilities, D>,
6724    > fidl::encoding::Encode<MlmeFinalizeAssociationReqRequest, D> for (T0,)
6725    {
6726        #[inline]
6727        unsafe fn encode(
6728            self,
6729            encoder: &mut fidl::encoding::Encoder<'_, D>,
6730            offset: usize,
6731            depth: fidl::encoding::Depth,
6732        ) -> fidl::Result<()> {
6733            encoder.debug_check_bounds::<MlmeFinalizeAssociationReqRequest>(offset);
6734            // Zero out padding regions. There's no need to apply masks
6735            // because the unmasked parts will be overwritten by fields.
6736            // Write the fields.
6737            self.0.encode(encoder, offset + 0, depth)?;
6738            Ok(())
6739        }
6740    }
6741
6742    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6743        for MlmeFinalizeAssociationReqRequest
6744    {
6745        #[inline(always)]
6746        fn new_empty() -> Self {
6747            Self { negotiated_capabilities: fidl::new_empty!(NegotiatedCapabilities, D) }
6748        }
6749
6750        #[inline]
6751        unsafe fn decode(
6752            &mut self,
6753            decoder: &mut fidl::encoding::Decoder<'_, D>,
6754            offset: usize,
6755            _depth: fidl::encoding::Depth,
6756        ) -> fidl::Result<()> {
6757            decoder.debug_check_bounds::<Self>(offset);
6758            // Verify that padding bytes are zero.
6759            fidl::decode!(
6760                NegotiatedCapabilities,
6761                D,
6762                &mut self.negotiated_capabilities,
6763                decoder,
6764                offset + 0,
6765                _depth
6766            )?;
6767            Ok(())
6768        }
6769    }
6770
6771    impl fidl::encoding::ValueTypeMarker for MlmeGetIfaceHistogramStatsResponse {
6772        type Borrowed<'a> = &'a Self;
6773        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6774            value
6775        }
6776    }
6777
6778    unsafe impl fidl::encoding::TypeMarker for MlmeGetIfaceHistogramStatsResponse {
6779        type Owned = Self;
6780
6781        #[inline(always)]
6782        fn inline_align(_context: fidl::encoding::Context) -> usize {
6783            8
6784        }
6785
6786        #[inline(always)]
6787        fn inline_size(_context: fidl::encoding::Context) -> usize {
6788            16
6789        }
6790    }
6791
6792    unsafe impl<D: fidl::encoding::ResourceDialect>
6793        fidl::encoding::Encode<MlmeGetIfaceHistogramStatsResponse, D>
6794        for &MlmeGetIfaceHistogramStatsResponse
6795    {
6796        #[inline]
6797        unsafe fn encode(
6798            self,
6799            encoder: &mut fidl::encoding::Encoder<'_, D>,
6800            offset: usize,
6801            _depth: fidl::encoding::Depth,
6802        ) -> fidl::Result<()> {
6803            encoder.debug_check_bounds::<MlmeGetIfaceHistogramStatsResponse>(offset);
6804            // Delegate to tuple encoding.
6805            fidl::encoding::Encode::<MlmeGetIfaceHistogramStatsResponse, D>::encode(
6806                (<GetIfaceHistogramStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(
6807                    &self.resp,
6808                ),),
6809                encoder,
6810                offset,
6811                _depth,
6812            )
6813        }
6814    }
6815    unsafe impl<
6816        D: fidl::encoding::ResourceDialect,
6817        T0: fidl::encoding::Encode<GetIfaceHistogramStatsResponse, D>,
6818    > fidl::encoding::Encode<MlmeGetIfaceHistogramStatsResponse, D> for (T0,)
6819    {
6820        #[inline]
6821        unsafe fn encode(
6822            self,
6823            encoder: &mut fidl::encoding::Encoder<'_, D>,
6824            offset: usize,
6825            depth: fidl::encoding::Depth,
6826        ) -> fidl::Result<()> {
6827            encoder.debug_check_bounds::<MlmeGetIfaceHistogramStatsResponse>(offset);
6828            // Zero out padding regions. There's no need to apply masks
6829            // because the unmasked parts will be overwritten by fields.
6830            // Write the fields.
6831            self.0.encode(encoder, offset + 0, depth)?;
6832            Ok(())
6833        }
6834    }
6835
6836    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6837        for MlmeGetIfaceHistogramStatsResponse
6838    {
6839        #[inline(always)]
6840        fn new_empty() -> Self {
6841            Self { resp: fidl::new_empty!(GetIfaceHistogramStatsResponse, D) }
6842        }
6843
6844        #[inline]
6845        unsafe fn decode(
6846            &mut self,
6847            decoder: &mut fidl::encoding::Decoder<'_, D>,
6848            offset: usize,
6849            _depth: fidl::encoding::Depth,
6850        ) -> fidl::Result<()> {
6851            decoder.debug_check_bounds::<Self>(offset);
6852            // Verify that padding bytes are zero.
6853            fidl::decode!(
6854                GetIfaceHistogramStatsResponse,
6855                D,
6856                &mut self.resp,
6857                decoder,
6858                offset + 0,
6859                _depth
6860            )?;
6861            Ok(())
6862        }
6863    }
6864
6865    impl fidl::encoding::ValueTypeMarker for MlmeGetIfaceStatsResponse {
6866        type Borrowed<'a> = &'a Self;
6867        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6868            value
6869        }
6870    }
6871
6872    unsafe impl fidl::encoding::TypeMarker for MlmeGetIfaceStatsResponse {
6873        type Owned = Self;
6874
6875        #[inline(always)]
6876        fn inline_align(_context: fidl::encoding::Context) -> usize {
6877            8
6878        }
6879
6880        #[inline(always)]
6881        fn inline_size(_context: fidl::encoding::Context) -> usize {
6882            16
6883        }
6884    }
6885
6886    unsafe impl<D: fidl::encoding::ResourceDialect>
6887        fidl::encoding::Encode<MlmeGetIfaceStatsResponse, D> for &MlmeGetIfaceStatsResponse
6888    {
6889        #[inline]
6890        unsafe fn encode(
6891            self,
6892            encoder: &mut fidl::encoding::Encoder<'_, D>,
6893            offset: usize,
6894            _depth: fidl::encoding::Depth,
6895        ) -> fidl::Result<()> {
6896            encoder.debug_check_bounds::<MlmeGetIfaceStatsResponse>(offset);
6897            // Delegate to tuple encoding.
6898            fidl::encoding::Encode::<MlmeGetIfaceStatsResponse, D>::encode(
6899                (<GetIfaceStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6900                encoder,
6901                offset,
6902                _depth,
6903            )
6904        }
6905    }
6906    unsafe impl<
6907        D: fidl::encoding::ResourceDialect,
6908        T0: fidl::encoding::Encode<GetIfaceStatsResponse, D>,
6909    > fidl::encoding::Encode<MlmeGetIfaceStatsResponse, D> for (T0,)
6910    {
6911        #[inline]
6912        unsafe fn encode(
6913            self,
6914            encoder: &mut fidl::encoding::Encoder<'_, D>,
6915            offset: usize,
6916            depth: fidl::encoding::Depth,
6917        ) -> fidl::Result<()> {
6918            encoder.debug_check_bounds::<MlmeGetIfaceStatsResponse>(offset);
6919            // Zero out padding regions. There's no need to apply masks
6920            // because the unmasked parts will be overwritten by fields.
6921            // Write the fields.
6922            self.0.encode(encoder, offset + 0, depth)?;
6923            Ok(())
6924        }
6925    }
6926
6927    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6928        for MlmeGetIfaceStatsResponse
6929    {
6930        #[inline(always)]
6931        fn new_empty() -> Self {
6932            Self { resp: fidl::new_empty!(GetIfaceStatsResponse, D) }
6933        }
6934
6935        #[inline]
6936        unsafe fn decode(
6937            &mut self,
6938            decoder: &mut fidl::encoding::Decoder<'_, D>,
6939            offset: usize,
6940            _depth: fidl::encoding::Depth,
6941        ) -> fidl::Result<()> {
6942            decoder.debug_check_bounds::<Self>(offset);
6943            // Verify that padding bytes are zero.
6944            fidl::decode!(GetIfaceStatsResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
6945            Ok(())
6946        }
6947    }
6948
6949    impl fidl::encoding::ValueTypeMarker for MlmeGetMinstrelStatsRequest {
6950        type Borrowed<'a> = &'a Self;
6951        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6952            value
6953        }
6954    }
6955
6956    unsafe impl fidl::encoding::TypeMarker for MlmeGetMinstrelStatsRequest {
6957        type Owned = Self;
6958
6959        #[inline(always)]
6960        fn inline_align(_context: fidl::encoding::Context) -> usize {
6961            1
6962        }
6963
6964        #[inline(always)]
6965        fn inline_size(_context: fidl::encoding::Context) -> usize {
6966            6
6967        }
6968        #[inline(always)]
6969        fn encode_is_copy() -> bool {
6970            true
6971        }
6972
6973        #[inline(always)]
6974        fn decode_is_copy() -> bool {
6975            true
6976        }
6977    }
6978
6979    unsafe impl<D: fidl::encoding::ResourceDialect>
6980        fidl::encoding::Encode<MlmeGetMinstrelStatsRequest, D> for &MlmeGetMinstrelStatsRequest
6981    {
6982        #[inline]
6983        unsafe fn encode(
6984            self,
6985            encoder: &mut fidl::encoding::Encoder<'_, D>,
6986            offset: usize,
6987            _depth: fidl::encoding::Depth,
6988        ) -> fidl::Result<()> {
6989            encoder.debug_check_bounds::<MlmeGetMinstrelStatsRequest>(offset);
6990            unsafe {
6991                // Copy the object into the buffer.
6992                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
6993                (buf_ptr as *mut MlmeGetMinstrelStatsRequest)
6994                    .write_unaligned((self as *const MlmeGetMinstrelStatsRequest).read());
6995                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
6996                // done second because the memcpy will write garbage to these bytes.
6997            }
6998            Ok(())
6999        }
7000    }
7001    unsafe impl<
7002        D: fidl::encoding::ResourceDialect,
7003        T0: fidl::encoding::Encode<MinstrelStatsRequest, D>,
7004    > fidl::encoding::Encode<MlmeGetMinstrelStatsRequest, D> for (T0,)
7005    {
7006        #[inline]
7007        unsafe fn encode(
7008            self,
7009            encoder: &mut fidl::encoding::Encoder<'_, D>,
7010            offset: usize,
7011            depth: fidl::encoding::Depth,
7012        ) -> fidl::Result<()> {
7013            encoder.debug_check_bounds::<MlmeGetMinstrelStatsRequest>(offset);
7014            // Zero out padding regions. There's no need to apply masks
7015            // because the unmasked parts will be overwritten by fields.
7016            // Write the fields.
7017            self.0.encode(encoder, offset + 0, depth)?;
7018            Ok(())
7019        }
7020    }
7021
7022    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7023        for MlmeGetMinstrelStatsRequest
7024    {
7025        #[inline(always)]
7026        fn new_empty() -> Self {
7027            Self { req: fidl::new_empty!(MinstrelStatsRequest, D) }
7028        }
7029
7030        #[inline]
7031        unsafe fn decode(
7032            &mut self,
7033            decoder: &mut fidl::encoding::Decoder<'_, D>,
7034            offset: usize,
7035            _depth: fidl::encoding::Depth,
7036        ) -> fidl::Result<()> {
7037            decoder.debug_check_bounds::<Self>(offset);
7038            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7039            // Verify that padding bytes are zero.
7040            // Copy from the buffer into the object.
7041            unsafe {
7042                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
7043            }
7044            Ok(())
7045        }
7046    }
7047
7048    impl fidl::encoding::ValueTypeMarker for MlmeGetMinstrelStatsResponse {
7049        type Borrowed<'a> = &'a Self;
7050        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7051            value
7052        }
7053    }
7054
7055    unsafe impl fidl::encoding::TypeMarker for MlmeGetMinstrelStatsResponse {
7056        type Owned = Self;
7057
7058        #[inline(always)]
7059        fn inline_align(_context: fidl::encoding::Context) -> usize {
7060            8
7061        }
7062
7063        #[inline(always)]
7064        fn inline_size(_context: fidl::encoding::Context) -> usize {
7065            8
7066        }
7067    }
7068
7069    unsafe impl<D: fidl::encoding::ResourceDialect>
7070        fidl::encoding::Encode<MlmeGetMinstrelStatsResponse, D> for &MlmeGetMinstrelStatsResponse
7071    {
7072        #[inline]
7073        unsafe fn encode(
7074            self,
7075            encoder: &mut fidl::encoding::Encoder<'_, D>,
7076            offset: usize,
7077            _depth: fidl::encoding::Depth,
7078        ) -> fidl::Result<()> {
7079            encoder.debug_check_bounds::<MlmeGetMinstrelStatsResponse>(offset);
7080            // Delegate to tuple encoding.
7081            fidl::encoding::Encode::<MlmeGetMinstrelStatsResponse, D>::encode(
7082                (<MinstrelStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
7083                encoder,
7084                offset,
7085                _depth,
7086            )
7087        }
7088    }
7089    unsafe impl<
7090        D: fidl::encoding::ResourceDialect,
7091        T0: fidl::encoding::Encode<MinstrelStatsResponse, D>,
7092    > fidl::encoding::Encode<MlmeGetMinstrelStatsResponse, D> for (T0,)
7093    {
7094        #[inline]
7095        unsafe fn encode(
7096            self,
7097            encoder: &mut fidl::encoding::Encoder<'_, D>,
7098            offset: usize,
7099            depth: fidl::encoding::Depth,
7100        ) -> fidl::Result<()> {
7101            encoder.debug_check_bounds::<MlmeGetMinstrelStatsResponse>(offset);
7102            // Zero out padding regions. There's no need to apply masks
7103            // because the unmasked parts will be overwritten by fields.
7104            // Write the fields.
7105            self.0.encode(encoder, offset + 0, depth)?;
7106            Ok(())
7107        }
7108    }
7109
7110    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7111        for MlmeGetMinstrelStatsResponse
7112    {
7113        #[inline(always)]
7114        fn new_empty() -> Self {
7115            Self { resp: fidl::new_empty!(MinstrelStatsResponse, D) }
7116        }
7117
7118        #[inline]
7119        unsafe fn decode(
7120            &mut self,
7121            decoder: &mut fidl::encoding::Decoder<'_, D>,
7122            offset: usize,
7123            _depth: fidl::encoding::Depth,
7124        ) -> fidl::Result<()> {
7125            decoder.debug_check_bounds::<Self>(offset);
7126            // Verify that padding bytes are zero.
7127            fidl::decode!(MinstrelStatsResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
7128            Ok(())
7129        }
7130    }
7131
7132    impl fidl::encoding::ValueTypeMarker for MlmeInstallApfPacketFilterRequest {
7133        type Borrowed<'a> = &'a Self;
7134        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7135            value
7136        }
7137    }
7138
7139    unsafe impl fidl::encoding::TypeMarker for MlmeInstallApfPacketFilterRequest {
7140        type Owned = Self;
7141
7142        #[inline(always)]
7143        fn inline_align(_context: fidl::encoding::Context) -> usize {
7144            8
7145        }
7146
7147        #[inline(always)]
7148        fn inline_size(_context: fidl::encoding::Context) -> usize {
7149            16
7150        }
7151    }
7152
7153    unsafe impl<D: fidl::encoding::ResourceDialect>
7154        fidl::encoding::Encode<MlmeInstallApfPacketFilterRequest, D>
7155        for &MlmeInstallApfPacketFilterRequest
7156    {
7157        #[inline]
7158        unsafe fn encode(
7159            self,
7160            encoder: &mut fidl::encoding::Encoder<'_, D>,
7161            offset: usize,
7162            _depth: fidl::encoding::Depth,
7163        ) -> fidl::Result<()> {
7164            encoder.debug_check_bounds::<MlmeInstallApfPacketFilterRequest>(offset);
7165            // Delegate to tuple encoding.
7166            fidl::encoding::Encode::<MlmeInstallApfPacketFilterRequest, D>::encode(
7167                (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
7168                    &self.program,
7169                ),),
7170                encoder,
7171                offset,
7172                _depth,
7173            )
7174        }
7175    }
7176    unsafe impl<
7177        D: fidl::encoding::ResourceDialect,
7178        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
7179    > fidl::encoding::Encode<MlmeInstallApfPacketFilterRequest, D> for (T0,)
7180    {
7181        #[inline]
7182        unsafe fn encode(
7183            self,
7184            encoder: &mut fidl::encoding::Encoder<'_, D>,
7185            offset: usize,
7186            depth: fidl::encoding::Depth,
7187        ) -> fidl::Result<()> {
7188            encoder.debug_check_bounds::<MlmeInstallApfPacketFilterRequest>(offset);
7189            // Zero out padding regions. There's no need to apply masks
7190            // because the unmasked parts will be overwritten by fields.
7191            // Write the fields.
7192            self.0.encode(encoder, offset + 0, depth)?;
7193            Ok(())
7194        }
7195    }
7196
7197    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7198        for MlmeInstallApfPacketFilterRequest
7199    {
7200        #[inline(always)]
7201        fn new_empty() -> Self {
7202            Self { program: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
7203        }
7204
7205        #[inline]
7206        unsafe fn decode(
7207            &mut self,
7208            decoder: &mut fidl::encoding::Decoder<'_, D>,
7209            offset: usize,
7210            _depth: fidl::encoding::Depth,
7211        ) -> fidl::Result<()> {
7212            decoder.debug_check_bounds::<Self>(offset);
7213            // Verify that padding bytes are zero.
7214            fidl::decode!(
7215                fidl::encoding::UnboundedVector<u8>,
7216                D,
7217                &mut self.program,
7218                decoder,
7219                offset + 0,
7220                _depth
7221            )?;
7222            Ok(())
7223        }
7224    }
7225
7226    impl fidl::encoding::ValueTypeMarker for MlmeListMinstrelPeersResponse {
7227        type Borrowed<'a> = &'a Self;
7228        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7229            value
7230        }
7231    }
7232
7233    unsafe impl fidl::encoding::TypeMarker for MlmeListMinstrelPeersResponse {
7234        type Owned = Self;
7235
7236        #[inline(always)]
7237        fn inline_align(_context: fidl::encoding::Context) -> usize {
7238            8
7239        }
7240
7241        #[inline(always)]
7242        fn inline_size(_context: fidl::encoding::Context) -> usize {
7243            16
7244        }
7245    }
7246
7247    unsafe impl<D: fidl::encoding::ResourceDialect>
7248        fidl::encoding::Encode<MlmeListMinstrelPeersResponse, D>
7249        for &MlmeListMinstrelPeersResponse
7250    {
7251        #[inline]
7252        unsafe fn encode(
7253            self,
7254            encoder: &mut fidl::encoding::Encoder<'_, D>,
7255            offset: usize,
7256            _depth: fidl::encoding::Depth,
7257        ) -> fidl::Result<()> {
7258            encoder.debug_check_bounds::<MlmeListMinstrelPeersResponse>(offset);
7259            // Delegate to tuple encoding.
7260            fidl::encoding::Encode::<MlmeListMinstrelPeersResponse, D>::encode(
7261                (<MinstrelListResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
7262                encoder,
7263                offset,
7264                _depth,
7265            )
7266        }
7267    }
7268    unsafe impl<
7269        D: fidl::encoding::ResourceDialect,
7270        T0: fidl::encoding::Encode<MinstrelListResponse, D>,
7271    > fidl::encoding::Encode<MlmeListMinstrelPeersResponse, D> for (T0,)
7272    {
7273        #[inline]
7274        unsafe fn encode(
7275            self,
7276            encoder: &mut fidl::encoding::Encoder<'_, D>,
7277            offset: usize,
7278            depth: fidl::encoding::Depth,
7279        ) -> fidl::Result<()> {
7280            encoder.debug_check_bounds::<MlmeListMinstrelPeersResponse>(offset);
7281            // Zero out padding regions. There's no need to apply masks
7282            // because the unmasked parts will be overwritten by fields.
7283            // Write the fields.
7284            self.0.encode(encoder, offset + 0, depth)?;
7285            Ok(())
7286        }
7287    }
7288
7289    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7290        for MlmeListMinstrelPeersResponse
7291    {
7292        #[inline(always)]
7293        fn new_empty() -> Self {
7294            Self { resp: fidl::new_empty!(MinstrelListResponse, D) }
7295        }
7296
7297        #[inline]
7298        unsafe fn decode(
7299            &mut self,
7300            decoder: &mut fidl::encoding::Decoder<'_, D>,
7301            offset: usize,
7302            _depth: fidl::encoding::Depth,
7303        ) -> fidl::Result<()> {
7304            decoder.debug_check_bounds::<Self>(offset);
7305            // Verify that padding bytes are zero.
7306            fidl::decode!(MinstrelListResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
7307            Ok(())
7308        }
7309    }
7310
7311    impl fidl::encoding::ValueTypeMarker for MlmeOnChannelSwitchedRequest {
7312        type Borrowed<'a> = &'a Self;
7313        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7314            value
7315        }
7316    }
7317
7318    unsafe impl fidl::encoding::TypeMarker for MlmeOnChannelSwitchedRequest {
7319        type Owned = Self;
7320
7321        #[inline(always)]
7322        fn inline_align(_context: fidl::encoding::Context) -> usize {
7323            4
7324        }
7325
7326        #[inline(always)]
7327        fn inline_size(_context: fidl::encoding::Context) -> usize {
7328            12
7329        }
7330    }
7331
7332    unsafe impl<D: fidl::encoding::ResourceDialect>
7333        fidl::encoding::Encode<MlmeOnChannelSwitchedRequest, D> for &MlmeOnChannelSwitchedRequest
7334    {
7335        #[inline]
7336        unsafe fn encode(
7337            self,
7338            encoder: &mut fidl::encoding::Encoder<'_, D>,
7339            offset: usize,
7340            _depth: fidl::encoding::Depth,
7341        ) -> fidl::Result<()> {
7342            encoder.debug_check_bounds::<MlmeOnChannelSwitchedRequest>(offset);
7343            // Delegate to tuple encoding.
7344            fidl::encoding::Encode::<MlmeOnChannelSwitchedRequest, D>::encode(
7345                (
7346                    <fidl_fuchsia_wlan_internal_common::ChannelSwitchInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),
7347                ),
7348                encoder, offset, _depth
7349            )
7350        }
7351    }
7352    unsafe impl<
7353        D: fidl::encoding::ResourceDialect,
7354        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal_common::ChannelSwitchInfo, D>,
7355    > fidl::encoding::Encode<MlmeOnChannelSwitchedRequest, D> for (T0,)
7356    {
7357        #[inline]
7358        unsafe fn encode(
7359            self,
7360            encoder: &mut fidl::encoding::Encoder<'_, D>,
7361            offset: usize,
7362            depth: fidl::encoding::Depth,
7363        ) -> fidl::Result<()> {
7364            encoder.debug_check_bounds::<MlmeOnChannelSwitchedRequest>(offset);
7365            // Zero out padding regions. There's no need to apply masks
7366            // because the unmasked parts will be overwritten by fields.
7367            // Write the fields.
7368            self.0.encode(encoder, offset + 0, depth)?;
7369            Ok(())
7370        }
7371    }
7372
7373    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7374        for MlmeOnChannelSwitchedRequest
7375    {
7376        #[inline(always)]
7377        fn new_empty() -> Self {
7378            Self { info: fidl::new_empty!(fidl_fuchsia_wlan_internal_common::ChannelSwitchInfo, D) }
7379        }
7380
7381        #[inline]
7382        unsafe fn decode(
7383            &mut self,
7384            decoder: &mut fidl::encoding::Decoder<'_, D>,
7385            offset: usize,
7386            _depth: fidl::encoding::Depth,
7387        ) -> fidl::Result<()> {
7388            decoder.debug_check_bounds::<Self>(offset);
7389            // Verify that padding bytes are zero.
7390            fidl::decode!(
7391                fidl_fuchsia_wlan_internal_common::ChannelSwitchInfo,
7392                D,
7393                &mut self.info,
7394                decoder,
7395                offset + 0,
7396                _depth
7397            )?;
7398            Ok(())
7399        }
7400    }
7401
7402    impl fidl::encoding::ValueTypeMarker for MlmeOnPmkAvailableRequest {
7403        type Borrowed<'a> = &'a Self;
7404        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7405            value
7406        }
7407    }
7408
7409    unsafe impl fidl::encoding::TypeMarker for MlmeOnPmkAvailableRequest {
7410        type Owned = Self;
7411
7412        #[inline(always)]
7413        fn inline_align(_context: fidl::encoding::Context) -> usize {
7414            8
7415        }
7416
7417        #[inline(always)]
7418        fn inline_size(_context: fidl::encoding::Context) -> usize {
7419            32
7420        }
7421    }
7422
7423    unsafe impl<D: fidl::encoding::ResourceDialect>
7424        fidl::encoding::Encode<MlmeOnPmkAvailableRequest, D> for &MlmeOnPmkAvailableRequest
7425    {
7426        #[inline]
7427        unsafe fn encode(
7428            self,
7429            encoder: &mut fidl::encoding::Encoder<'_, D>,
7430            offset: usize,
7431            _depth: fidl::encoding::Depth,
7432        ) -> fidl::Result<()> {
7433            encoder.debug_check_bounds::<MlmeOnPmkAvailableRequest>(offset);
7434            // Delegate to tuple encoding.
7435            fidl::encoding::Encode::<MlmeOnPmkAvailableRequest, D>::encode(
7436                (<PmkInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
7437                encoder,
7438                offset,
7439                _depth,
7440            )
7441        }
7442    }
7443    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<PmkInfo, D>>
7444        fidl::encoding::Encode<MlmeOnPmkAvailableRequest, D> for (T0,)
7445    {
7446        #[inline]
7447        unsafe fn encode(
7448            self,
7449            encoder: &mut fidl::encoding::Encoder<'_, D>,
7450            offset: usize,
7451            depth: fidl::encoding::Depth,
7452        ) -> fidl::Result<()> {
7453            encoder.debug_check_bounds::<MlmeOnPmkAvailableRequest>(offset);
7454            // Zero out padding regions. There's no need to apply masks
7455            // because the unmasked parts will be overwritten by fields.
7456            // Write the fields.
7457            self.0.encode(encoder, offset + 0, depth)?;
7458            Ok(())
7459        }
7460    }
7461
7462    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7463        for MlmeOnPmkAvailableRequest
7464    {
7465        #[inline(always)]
7466        fn new_empty() -> Self {
7467            Self { info: fidl::new_empty!(PmkInfo, D) }
7468        }
7469
7470        #[inline]
7471        unsafe fn decode(
7472            &mut self,
7473            decoder: &mut fidl::encoding::Decoder<'_, D>,
7474            offset: usize,
7475            _depth: fidl::encoding::Depth,
7476        ) -> fidl::Result<()> {
7477            decoder.debug_check_bounds::<Self>(offset);
7478            // Verify that padding bytes are zero.
7479            fidl::decode!(PmkInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
7480            Ok(())
7481        }
7482    }
7483
7484    impl fidl::encoding::ValueTypeMarker for MlmeOnRssiThresholdBreachedRequest {
7485        type Borrowed<'a> = &'a Self;
7486        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7487            value
7488        }
7489    }
7490
7491    unsafe impl fidl::encoding::TypeMarker for MlmeOnRssiThresholdBreachedRequest {
7492        type Owned = Self;
7493
7494        #[inline(always)]
7495        fn inline_align(_context: fidl::encoding::Context) -> usize {
7496            1
7497        }
7498
7499        #[inline(always)]
7500        fn inline_size(_context: fidl::encoding::Context) -> usize {
7501            1
7502        }
7503        #[inline(always)]
7504        fn encode_is_copy() -> bool {
7505            true
7506        }
7507
7508        #[inline(always)]
7509        fn decode_is_copy() -> bool {
7510            true
7511        }
7512    }
7513
7514    unsafe impl<D: fidl::encoding::ResourceDialect>
7515        fidl::encoding::Encode<MlmeOnRssiThresholdBreachedRequest, D>
7516        for &MlmeOnRssiThresholdBreachedRequest
7517    {
7518        #[inline]
7519        unsafe fn encode(
7520            self,
7521            encoder: &mut fidl::encoding::Encoder<'_, D>,
7522            offset: usize,
7523            _depth: fidl::encoding::Depth,
7524        ) -> fidl::Result<()> {
7525            encoder.debug_check_bounds::<MlmeOnRssiThresholdBreachedRequest>(offset);
7526            unsafe {
7527                // Copy the object into the buffer.
7528                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7529                (buf_ptr as *mut MlmeOnRssiThresholdBreachedRequest)
7530                    .write_unaligned((self as *const MlmeOnRssiThresholdBreachedRequest).read());
7531                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7532                // done second because the memcpy will write garbage to these bytes.
7533            }
7534            Ok(())
7535        }
7536    }
7537    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i8, D>>
7538        fidl::encoding::Encode<MlmeOnRssiThresholdBreachedRequest, D> for (T0,)
7539    {
7540        #[inline]
7541        unsafe fn encode(
7542            self,
7543            encoder: &mut fidl::encoding::Encoder<'_, D>,
7544            offset: usize,
7545            depth: fidl::encoding::Depth,
7546        ) -> fidl::Result<()> {
7547            encoder.debug_check_bounds::<MlmeOnRssiThresholdBreachedRequest>(offset);
7548            // Zero out padding regions. There's no need to apply masks
7549            // because the unmasked parts will be overwritten by fields.
7550            // Write the fields.
7551            self.0.encode(encoder, offset + 0, depth)?;
7552            Ok(())
7553        }
7554    }
7555
7556    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7557        for MlmeOnRssiThresholdBreachedRequest
7558    {
7559        #[inline(always)]
7560        fn new_empty() -> Self {
7561            Self { cur_rssi_dbm: fidl::new_empty!(i8, D) }
7562        }
7563
7564        #[inline]
7565        unsafe fn decode(
7566            &mut self,
7567            decoder: &mut fidl::encoding::Decoder<'_, D>,
7568            offset: usize,
7569            _depth: fidl::encoding::Depth,
7570        ) -> fidl::Result<()> {
7571            decoder.debug_check_bounds::<Self>(offset);
7572            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7573            // Verify that padding bytes are zero.
7574            // Copy from the buffer into the object.
7575            unsafe {
7576                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
7577            }
7578            Ok(())
7579        }
7580    }
7581
7582    impl fidl::encoding::ValueTypeMarker for MlmeOnSaeFrameRxRequest {
7583        type Borrowed<'a> = &'a Self;
7584        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7585            value
7586        }
7587    }
7588
7589    unsafe impl fidl::encoding::TypeMarker for MlmeOnSaeFrameRxRequest {
7590        type Owned = Self;
7591
7592        #[inline(always)]
7593        fn inline_align(_context: fidl::encoding::Context) -> usize {
7594            8
7595        }
7596
7597        #[inline(always)]
7598        fn inline_size(_context: fidl::encoding::Context) -> usize {
7599            32
7600        }
7601    }
7602
7603    unsafe impl<D: fidl::encoding::ResourceDialect>
7604        fidl::encoding::Encode<MlmeOnSaeFrameRxRequest, D> for &MlmeOnSaeFrameRxRequest
7605    {
7606        #[inline]
7607        unsafe fn encode(
7608            self,
7609            encoder: &mut fidl::encoding::Encoder<'_, D>,
7610            offset: usize,
7611            _depth: fidl::encoding::Depth,
7612        ) -> fidl::Result<()> {
7613            encoder.debug_check_bounds::<MlmeOnSaeFrameRxRequest>(offset);
7614            // Delegate to tuple encoding.
7615            fidl::encoding::Encode::<MlmeOnSaeFrameRxRequest, D>::encode(
7616                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
7617                encoder,
7618                offset,
7619                _depth,
7620            )
7621        }
7622    }
7623    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
7624        fidl::encoding::Encode<MlmeOnSaeFrameRxRequest, D> for (T0,)
7625    {
7626        #[inline]
7627        unsafe fn encode(
7628            self,
7629            encoder: &mut fidl::encoding::Encoder<'_, D>,
7630            offset: usize,
7631            depth: fidl::encoding::Depth,
7632        ) -> fidl::Result<()> {
7633            encoder.debug_check_bounds::<MlmeOnSaeFrameRxRequest>(offset);
7634            // Zero out padding regions. There's no need to apply masks
7635            // because the unmasked parts will be overwritten by fields.
7636            // Write the fields.
7637            self.0.encode(encoder, offset + 0, depth)?;
7638            Ok(())
7639        }
7640    }
7641
7642    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7643        for MlmeOnSaeFrameRxRequest
7644    {
7645        #[inline(always)]
7646        fn new_empty() -> Self {
7647            Self { frame: fidl::new_empty!(SaeFrame, D) }
7648        }
7649
7650        #[inline]
7651        unsafe fn decode(
7652            &mut self,
7653            decoder: &mut fidl::encoding::Decoder<'_, D>,
7654            offset: usize,
7655            _depth: fidl::encoding::Depth,
7656        ) -> fidl::Result<()> {
7657            decoder.debug_check_bounds::<Self>(offset);
7658            // Verify that padding bytes are zero.
7659            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
7660            Ok(())
7661        }
7662    }
7663
7664    impl fidl::encoding::ValueTypeMarker for MlmeOnSaeHandshakeIndRequest {
7665        type Borrowed<'a> = &'a Self;
7666        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7667            value
7668        }
7669    }
7670
7671    unsafe impl fidl::encoding::TypeMarker for MlmeOnSaeHandshakeIndRequest {
7672        type Owned = Self;
7673
7674        #[inline(always)]
7675        fn inline_align(_context: fidl::encoding::Context) -> usize {
7676            1
7677        }
7678
7679        #[inline(always)]
7680        fn inline_size(_context: fidl::encoding::Context) -> usize {
7681            6
7682        }
7683        #[inline(always)]
7684        fn encode_is_copy() -> bool {
7685            true
7686        }
7687
7688        #[inline(always)]
7689        fn decode_is_copy() -> bool {
7690            true
7691        }
7692    }
7693
7694    unsafe impl<D: fidl::encoding::ResourceDialect>
7695        fidl::encoding::Encode<MlmeOnSaeHandshakeIndRequest, D> for &MlmeOnSaeHandshakeIndRequest
7696    {
7697        #[inline]
7698        unsafe fn encode(
7699            self,
7700            encoder: &mut fidl::encoding::Encoder<'_, D>,
7701            offset: usize,
7702            _depth: fidl::encoding::Depth,
7703        ) -> fidl::Result<()> {
7704            encoder.debug_check_bounds::<MlmeOnSaeHandshakeIndRequest>(offset);
7705            unsafe {
7706                // Copy the object into the buffer.
7707                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7708                (buf_ptr as *mut MlmeOnSaeHandshakeIndRequest)
7709                    .write_unaligned((self as *const MlmeOnSaeHandshakeIndRequest).read());
7710                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7711                // done second because the memcpy will write garbage to these bytes.
7712            }
7713            Ok(())
7714        }
7715    }
7716    unsafe impl<
7717        D: fidl::encoding::ResourceDialect,
7718        T0: fidl::encoding::Encode<SaeHandshakeIndication, D>,
7719    > fidl::encoding::Encode<MlmeOnSaeHandshakeIndRequest, D> for (T0,)
7720    {
7721        #[inline]
7722        unsafe fn encode(
7723            self,
7724            encoder: &mut fidl::encoding::Encoder<'_, D>,
7725            offset: usize,
7726            depth: fidl::encoding::Depth,
7727        ) -> fidl::Result<()> {
7728            encoder.debug_check_bounds::<MlmeOnSaeHandshakeIndRequest>(offset);
7729            // Zero out padding regions. There's no need to apply masks
7730            // because the unmasked parts will be overwritten by fields.
7731            // Write the fields.
7732            self.0.encode(encoder, offset + 0, depth)?;
7733            Ok(())
7734        }
7735    }
7736
7737    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7738        for MlmeOnSaeHandshakeIndRequest
7739    {
7740        #[inline(always)]
7741        fn new_empty() -> Self {
7742            Self { ind: fidl::new_empty!(SaeHandshakeIndication, D) }
7743        }
7744
7745        #[inline]
7746        unsafe fn decode(
7747            &mut self,
7748            decoder: &mut fidl::encoding::Decoder<'_, D>,
7749            offset: usize,
7750            _depth: fidl::encoding::Depth,
7751        ) -> fidl::Result<()> {
7752            decoder.debug_check_bounds::<Self>(offset);
7753            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7754            // Verify that padding bytes are zero.
7755            // Copy from the buffer into the object.
7756            unsafe {
7757                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
7758            }
7759            Ok(())
7760        }
7761    }
7762
7763    impl fidl::encoding::ValueTypeMarker for MlmeOnScanEndRequest {
7764        type Borrowed<'a> = &'a Self;
7765        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7766            value
7767        }
7768    }
7769
7770    unsafe impl fidl::encoding::TypeMarker for MlmeOnScanEndRequest {
7771        type Owned = Self;
7772
7773        #[inline(always)]
7774        fn inline_align(_context: fidl::encoding::Context) -> usize {
7775            8
7776        }
7777
7778        #[inline(always)]
7779        fn inline_size(_context: fidl::encoding::Context) -> usize {
7780            16
7781        }
7782    }
7783
7784    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeOnScanEndRequest, D>
7785        for &MlmeOnScanEndRequest
7786    {
7787        #[inline]
7788        unsafe fn encode(
7789            self,
7790            encoder: &mut fidl::encoding::Encoder<'_, D>,
7791            offset: usize,
7792            _depth: fidl::encoding::Depth,
7793        ) -> fidl::Result<()> {
7794            encoder.debug_check_bounds::<MlmeOnScanEndRequest>(offset);
7795            // Delegate to tuple encoding.
7796            fidl::encoding::Encode::<MlmeOnScanEndRequest, D>::encode(
7797                (<ScanEnd as fidl::encoding::ValueTypeMarker>::borrow(&self.end),),
7798                encoder,
7799                offset,
7800                _depth,
7801            )
7802        }
7803    }
7804    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanEnd, D>>
7805        fidl::encoding::Encode<MlmeOnScanEndRequest, D> for (T0,)
7806    {
7807        #[inline]
7808        unsafe fn encode(
7809            self,
7810            encoder: &mut fidl::encoding::Encoder<'_, D>,
7811            offset: usize,
7812            depth: fidl::encoding::Depth,
7813        ) -> fidl::Result<()> {
7814            encoder.debug_check_bounds::<MlmeOnScanEndRequest>(offset);
7815            // Zero out padding regions. There's no need to apply masks
7816            // because the unmasked parts will be overwritten by fields.
7817            // Write the fields.
7818            self.0.encode(encoder, offset + 0, depth)?;
7819            Ok(())
7820        }
7821    }
7822
7823    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeOnScanEndRequest {
7824        #[inline(always)]
7825        fn new_empty() -> Self {
7826            Self { end: fidl::new_empty!(ScanEnd, D) }
7827        }
7828
7829        #[inline]
7830        unsafe fn decode(
7831            &mut self,
7832            decoder: &mut fidl::encoding::Decoder<'_, D>,
7833            offset: usize,
7834            _depth: fidl::encoding::Depth,
7835        ) -> fidl::Result<()> {
7836            decoder.debug_check_bounds::<Self>(offset);
7837            // Verify that padding bytes are zero.
7838            fidl::decode!(ScanEnd, D, &mut self.end, decoder, offset + 0, _depth)?;
7839            Ok(())
7840        }
7841    }
7842
7843    impl fidl::encoding::ValueTypeMarker for MlmeOnScanResultRequest {
7844        type Borrowed<'a> = &'a Self;
7845        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7846            value
7847        }
7848    }
7849
7850    unsafe impl fidl::encoding::TypeMarker for MlmeOnScanResultRequest {
7851        type Owned = Self;
7852
7853        #[inline(always)]
7854        fn inline_align(_context: fidl::encoding::Context) -> usize {
7855            8
7856        }
7857
7858        #[inline(always)]
7859        fn inline_size(_context: fidl::encoding::Context) -> usize {
7860            64
7861        }
7862    }
7863
7864    unsafe impl<D: fidl::encoding::ResourceDialect>
7865        fidl::encoding::Encode<MlmeOnScanResultRequest, D> for &MlmeOnScanResultRequest
7866    {
7867        #[inline]
7868        unsafe fn encode(
7869            self,
7870            encoder: &mut fidl::encoding::Encoder<'_, D>,
7871            offset: usize,
7872            _depth: fidl::encoding::Depth,
7873        ) -> fidl::Result<()> {
7874            encoder.debug_check_bounds::<MlmeOnScanResultRequest>(offset);
7875            // Delegate to tuple encoding.
7876            fidl::encoding::Encode::<MlmeOnScanResultRequest, D>::encode(
7877                (<ScanResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),),
7878                encoder,
7879                offset,
7880                _depth,
7881            )
7882        }
7883    }
7884    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanResult, D>>
7885        fidl::encoding::Encode<MlmeOnScanResultRequest, D> for (T0,)
7886    {
7887        #[inline]
7888        unsafe fn encode(
7889            self,
7890            encoder: &mut fidl::encoding::Encoder<'_, D>,
7891            offset: usize,
7892            depth: fidl::encoding::Depth,
7893        ) -> fidl::Result<()> {
7894            encoder.debug_check_bounds::<MlmeOnScanResultRequest>(offset);
7895            // Zero out padding regions. There's no need to apply masks
7896            // because the unmasked parts will be overwritten by fields.
7897            // Write the fields.
7898            self.0.encode(encoder, offset + 0, depth)?;
7899            Ok(())
7900        }
7901    }
7902
7903    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7904        for MlmeOnScanResultRequest
7905    {
7906        #[inline(always)]
7907        fn new_empty() -> Self {
7908            Self { result: fidl::new_empty!(ScanResult, D) }
7909        }
7910
7911        #[inline]
7912        unsafe fn decode(
7913            &mut self,
7914            decoder: &mut fidl::encoding::Decoder<'_, D>,
7915            offset: usize,
7916            _depth: fidl::encoding::Depth,
7917        ) -> fidl::Result<()> {
7918            decoder.debug_check_bounds::<Self>(offset);
7919            // Verify that padding bytes are zero.
7920            fidl::decode!(ScanResult, D, &mut self.result, decoder, offset + 0, _depth)?;
7921            Ok(())
7922        }
7923    }
7924
7925    impl fidl::encoding::ValueTypeMarker for MlmeOnScheduledScanMatchesAvailableRequest {
7926        type Borrowed<'a> = &'a Self;
7927        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7928            value
7929        }
7930    }
7931
7932    unsafe impl fidl::encoding::TypeMarker for MlmeOnScheduledScanMatchesAvailableRequest {
7933        type Owned = Self;
7934
7935        #[inline(always)]
7936        fn inline_align(_context: fidl::encoding::Context) -> usize {
7937            8
7938        }
7939
7940        #[inline(always)]
7941        fn inline_size(_context: fidl::encoding::Context) -> usize {
7942            8
7943        }
7944        #[inline(always)]
7945        fn encode_is_copy() -> bool {
7946            true
7947        }
7948
7949        #[inline(always)]
7950        fn decode_is_copy() -> bool {
7951            true
7952        }
7953    }
7954
7955    unsafe impl<D: fidl::encoding::ResourceDialect>
7956        fidl::encoding::Encode<MlmeOnScheduledScanMatchesAvailableRequest, D>
7957        for &MlmeOnScheduledScanMatchesAvailableRequest
7958    {
7959        #[inline]
7960        unsafe fn encode(
7961            self,
7962            encoder: &mut fidl::encoding::Encoder<'_, D>,
7963            offset: usize,
7964            _depth: fidl::encoding::Depth,
7965        ) -> fidl::Result<()> {
7966            encoder.debug_check_bounds::<MlmeOnScheduledScanMatchesAvailableRequest>(offset);
7967            unsafe {
7968                // Copy the object into the buffer.
7969                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7970                (buf_ptr as *mut MlmeOnScheduledScanMatchesAvailableRequest).write_unaligned(
7971                    (self as *const MlmeOnScheduledScanMatchesAvailableRequest).read(),
7972                );
7973                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7974                // done second because the memcpy will write garbage to these bytes.
7975            }
7976            Ok(())
7977        }
7978    }
7979    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
7980        fidl::encoding::Encode<MlmeOnScheduledScanMatchesAvailableRequest, D> for (T0,)
7981    {
7982        #[inline]
7983        unsafe fn encode(
7984            self,
7985            encoder: &mut fidl::encoding::Encoder<'_, D>,
7986            offset: usize,
7987            depth: fidl::encoding::Depth,
7988        ) -> fidl::Result<()> {
7989            encoder.debug_check_bounds::<MlmeOnScheduledScanMatchesAvailableRequest>(offset);
7990            // Zero out padding regions. There's no need to apply masks
7991            // because the unmasked parts will be overwritten by fields.
7992            // Write the fields.
7993            self.0.encode(encoder, offset + 0, depth)?;
7994            Ok(())
7995        }
7996    }
7997
7998    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7999        for MlmeOnScheduledScanMatchesAvailableRequest
8000    {
8001        #[inline(always)]
8002        fn new_empty() -> Self {
8003            Self { txn_id: fidl::new_empty!(u64, D) }
8004        }
8005
8006        #[inline]
8007        unsafe fn decode(
8008            &mut self,
8009            decoder: &mut fidl::encoding::Decoder<'_, D>,
8010            offset: usize,
8011            _depth: fidl::encoding::Depth,
8012        ) -> fidl::Result<()> {
8013            decoder.debug_check_bounds::<Self>(offset);
8014            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
8015            // Verify that padding bytes are zero.
8016            // Copy from the buffer into the object.
8017            unsafe {
8018                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
8019            }
8020            Ok(())
8021        }
8022    }
8023
8024    impl fidl::encoding::ValueTypeMarker for MlmeOnScheduledScanStoppedByFirmwareRequest {
8025        type Borrowed<'a> = &'a Self;
8026        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8027            value
8028        }
8029    }
8030
8031    unsafe impl fidl::encoding::TypeMarker for MlmeOnScheduledScanStoppedByFirmwareRequest {
8032        type Owned = Self;
8033
8034        #[inline(always)]
8035        fn inline_align(_context: fidl::encoding::Context) -> usize {
8036            8
8037        }
8038
8039        #[inline(always)]
8040        fn inline_size(_context: fidl::encoding::Context) -> usize {
8041            8
8042        }
8043        #[inline(always)]
8044        fn encode_is_copy() -> bool {
8045            true
8046        }
8047
8048        #[inline(always)]
8049        fn decode_is_copy() -> bool {
8050            true
8051        }
8052    }
8053
8054    unsafe impl<D: fidl::encoding::ResourceDialect>
8055        fidl::encoding::Encode<MlmeOnScheduledScanStoppedByFirmwareRequest, D>
8056        for &MlmeOnScheduledScanStoppedByFirmwareRequest
8057    {
8058        #[inline]
8059        unsafe fn encode(
8060            self,
8061            encoder: &mut fidl::encoding::Encoder<'_, D>,
8062            offset: usize,
8063            _depth: fidl::encoding::Depth,
8064        ) -> fidl::Result<()> {
8065            encoder.debug_check_bounds::<MlmeOnScheduledScanStoppedByFirmwareRequest>(offset);
8066            unsafe {
8067                // Copy the object into the buffer.
8068                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
8069                (buf_ptr as *mut MlmeOnScheduledScanStoppedByFirmwareRequest).write_unaligned(
8070                    (self as *const MlmeOnScheduledScanStoppedByFirmwareRequest).read(),
8071                );
8072                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
8073                // done second because the memcpy will write garbage to these bytes.
8074            }
8075            Ok(())
8076        }
8077    }
8078    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
8079        fidl::encoding::Encode<MlmeOnScheduledScanStoppedByFirmwareRequest, D> for (T0,)
8080    {
8081        #[inline]
8082        unsafe fn encode(
8083            self,
8084            encoder: &mut fidl::encoding::Encoder<'_, D>,
8085            offset: usize,
8086            depth: fidl::encoding::Depth,
8087        ) -> fidl::Result<()> {
8088            encoder.debug_check_bounds::<MlmeOnScheduledScanStoppedByFirmwareRequest>(offset);
8089            // Zero out padding regions. There's no need to apply masks
8090            // because the unmasked parts will be overwritten by fields.
8091            // Write the fields.
8092            self.0.encode(encoder, offset + 0, depth)?;
8093            Ok(())
8094        }
8095    }
8096
8097    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8098        for MlmeOnScheduledScanStoppedByFirmwareRequest
8099    {
8100        #[inline(always)]
8101        fn new_empty() -> Self {
8102            Self { txn_id: fidl::new_empty!(u64, D) }
8103        }
8104
8105        #[inline]
8106        unsafe fn decode(
8107            &mut self,
8108            decoder: &mut fidl::encoding::Decoder<'_, D>,
8109            offset: usize,
8110            _depth: fidl::encoding::Depth,
8111        ) -> fidl::Result<()> {
8112            decoder.debug_check_bounds::<Self>(offset);
8113            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
8114            // Verify that padding bytes are zero.
8115            // Copy from the buffer into the object.
8116            unsafe {
8117                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
8118            }
8119            Ok(())
8120        }
8121    }
8122
8123    impl fidl::encoding::ValueTypeMarker for MlmeOnWmmStatusRespRequest {
8124        type Borrowed<'a> = &'a Self;
8125        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8126            value
8127        }
8128    }
8129
8130    unsafe impl fidl::encoding::TypeMarker for MlmeOnWmmStatusRespRequest {
8131        type Owned = Self;
8132
8133        #[inline(always)]
8134        fn inline_align(_context: fidl::encoding::Context) -> usize {
8135            4
8136        }
8137
8138        #[inline(always)]
8139        fn inline_size(_context: fidl::encoding::Context) -> usize {
8140            40
8141        }
8142    }
8143
8144    unsafe impl<D: fidl::encoding::ResourceDialect>
8145        fidl::encoding::Encode<MlmeOnWmmStatusRespRequest, D> for &MlmeOnWmmStatusRespRequest
8146    {
8147        #[inline]
8148        unsafe fn encode(
8149            self,
8150            encoder: &mut fidl::encoding::Encoder<'_, D>,
8151            offset: usize,
8152            _depth: fidl::encoding::Depth,
8153        ) -> fidl::Result<()> {
8154            encoder.debug_check_bounds::<MlmeOnWmmStatusRespRequest>(offset);
8155            // Delegate to tuple encoding.
8156            fidl::encoding::Encode::<MlmeOnWmmStatusRespRequest, D>::encode(
8157                (
8158                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
8159                    <fidl_fuchsia_wlan_internal_common::WmmStatusResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
8160                ),
8161                encoder, offset, _depth
8162            )
8163        }
8164    }
8165    unsafe impl<
8166        D: fidl::encoding::ResourceDialect,
8167        T0: fidl::encoding::Encode<i32, D>,
8168        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_internal_common::WmmStatusResponse, D>,
8169    > fidl::encoding::Encode<MlmeOnWmmStatusRespRequest, D> for (T0, T1)
8170    {
8171        #[inline]
8172        unsafe fn encode(
8173            self,
8174            encoder: &mut fidl::encoding::Encoder<'_, D>,
8175            offset: usize,
8176            depth: fidl::encoding::Depth,
8177        ) -> fidl::Result<()> {
8178            encoder.debug_check_bounds::<MlmeOnWmmStatusRespRequest>(offset);
8179            // Zero out padding regions. There's no need to apply masks
8180            // because the unmasked parts will be overwritten by fields.
8181            unsafe {
8182                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(36);
8183                (ptr as *mut u32).write_unaligned(0);
8184            }
8185            // Write the fields.
8186            self.0.encode(encoder, offset + 0, depth)?;
8187            self.1.encode(encoder, offset + 4, depth)?;
8188            Ok(())
8189        }
8190    }
8191
8192    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8193        for MlmeOnWmmStatusRespRequest
8194    {
8195        #[inline(always)]
8196        fn new_empty() -> Self {
8197            Self {
8198                status: fidl::new_empty!(i32, D),
8199                resp: fidl::new_empty!(fidl_fuchsia_wlan_internal_common::WmmStatusResponse, D),
8200            }
8201        }
8202
8203        #[inline]
8204        unsafe fn decode(
8205            &mut self,
8206            decoder: &mut fidl::encoding::Decoder<'_, D>,
8207            offset: usize,
8208            _depth: fidl::encoding::Depth,
8209        ) -> fidl::Result<()> {
8210            decoder.debug_check_bounds::<Self>(offset);
8211            // Verify that padding bytes are zero.
8212            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(36) };
8213            let padval = unsafe { (ptr as *const u32).read_unaligned() };
8214            let mask = 0xffff0000u32;
8215            let maskedval = padval & mask;
8216            if maskedval != 0 {
8217                return Err(fidl::Error::NonZeroPadding {
8218                    padding_start: offset + 36 + ((mask as u64).trailing_zeros() / 8) as usize,
8219                });
8220            }
8221            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
8222            fidl::decode!(
8223                fidl_fuchsia_wlan_internal_common::WmmStatusResponse,
8224                D,
8225                &mut self.resp,
8226                decoder,
8227                offset + 4,
8228                _depth
8229            )?;
8230            Ok(())
8231        }
8232    }
8233
8234    impl fidl::encoding::ValueTypeMarker for MlmeQueryDeviceInfoResponse {
8235        type Borrowed<'a> = &'a Self;
8236        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8237            value
8238        }
8239    }
8240
8241    unsafe impl fidl::encoding::TypeMarker for MlmeQueryDeviceInfoResponse {
8242        type Owned = Self;
8243
8244        #[inline(always)]
8245        fn inline_align(_context: fidl::encoding::Context) -> usize {
8246            8
8247        }
8248
8249        #[inline(always)]
8250        fn inline_size(_context: fidl::encoding::Context) -> usize {
8251            40
8252        }
8253    }
8254
8255    unsafe impl<D: fidl::encoding::ResourceDialect>
8256        fidl::encoding::Encode<MlmeQueryDeviceInfoResponse, D> for &MlmeQueryDeviceInfoResponse
8257    {
8258        #[inline]
8259        unsafe fn encode(
8260            self,
8261            encoder: &mut fidl::encoding::Encoder<'_, D>,
8262            offset: usize,
8263            _depth: fidl::encoding::Depth,
8264        ) -> fidl::Result<()> {
8265            encoder.debug_check_bounds::<MlmeQueryDeviceInfoResponse>(offset);
8266            // Delegate to tuple encoding.
8267            fidl::encoding::Encode::<MlmeQueryDeviceInfoResponse, D>::encode(
8268                (<DeviceInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
8269                encoder,
8270                offset,
8271                _depth,
8272            )
8273        }
8274    }
8275    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<DeviceInfo, D>>
8276        fidl::encoding::Encode<MlmeQueryDeviceInfoResponse, D> for (T0,)
8277    {
8278        #[inline]
8279        unsafe fn encode(
8280            self,
8281            encoder: &mut fidl::encoding::Encoder<'_, D>,
8282            offset: usize,
8283            depth: fidl::encoding::Depth,
8284        ) -> fidl::Result<()> {
8285            encoder.debug_check_bounds::<MlmeQueryDeviceInfoResponse>(offset);
8286            // Zero out padding regions. There's no need to apply masks
8287            // because the unmasked parts will be overwritten by fields.
8288            // Write the fields.
8289            self.0.encode(encoder, offset + 0, depth)?;
8290            Ok(())
8291        }
8292    }
8293
8294    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8295        for MlmeQueryDeviceInfoResponse
8296    {
8297        #[inline(always)]
8298        fn new_empty() -> Self {
8299            Self { info: fidl::new_empty!(DeviceInfo, D) }
8300        }
8301
8302        #[inline]
8303        unsafe fn decode(
8304            &mut self,
8305            decoder: &mut fidl::encoding::Decoder<'_, D>,
8306            offset: usize,
8307            _depth: fidl::encoding::Depth,
8308        ) -> fidl::Result<()> {
8309            decoder.debug_check_bounds::<Self>(offset);
8310            // Verify that padding bytes are zero.
8311            fidl::decode!(DeviceInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
8312            Ok(())
8313        }
8314    }
8315
8316    impl fidl::encoding::ValueTypeMarker for MlmeReconnectReqRequest {
8317        type Borrowed<'a> = &'a Self;
8318        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8319            value
8320        }
8321    }
8322
8323    unsafe impl fidl::encoding::TypeMarker for MlmeReconnectReqRequest {
8324        type Owned = Self;
8325
8326        #[inline(always)]
8327        fn inline_align(_context: fidl::encoding::Context) -> usize {
8328            1
8329        }
8330
8331        #[inline(always)]
8332        fn inline_size(_context: fidl::encoding::Context) -> usize {
8333            6
8334        }
8335        #[inline(always)]
8336        fn encode_is_copy() -> bool {
8337            true
8338        }
8339
8340        #[inline(always)]
8341        fn decode_is_copy() -> bool {
8342            true
8343        }
8344    }
8345
8346    unsafe impl<D: fidl::encoding::ResourceDialect>
8347        fidl::encoding::Encode<MlmeReconnectReqRequest, D> for &MlmeReconnectReqRequest
8348    {
8349        #[inline]
8350        unsafe fn encode(
8351            self,
8352            encoder: &mut fidl::encoding::Encoder<'_, D>,
8353            offset: usize,
8354            _depth: fidl::encoding::Depth,
8355        ) -> fidl::Result<()> {
8356            encoder.debug_check_bounds::<MlmeReconnectReqRequest>(offset);
8357            unsafe {
8358                // Copy the object into the buffer.
8359                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
8360                (buf_ptr as *mut MlmeReconnectReqRequest)
8361                    .write_unaligned((self as *const MlmeReconnectReqRequest).read());
8362                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
8363                // done second because the memcpy will write garbage to these bytes.
8364            }
8365            Ok(())
8366        }
8367    }
8368    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ReconnectRequest, D>>
8369        fidl::encoding::Encode<MlmeReconnectReqRequest, D> for (T0,)
8370    {
8371        #[inline]
8372        unsafe fn encode(
8373            self,
8374            encoder: &mut fidl::encoding::Encoder<'_, D>,
8375            offset: usize,
8376            depth: fidl::encoding::Depth,
8377        ) -> fidl::Result<()> {
8378            encoder.debug_check_bounds::<MlmeReconnectReqRequest>(offset);
8379            // Zero out padding regions. There's no need to apply masks
8380            // because the unmasked parts will be overwritten by fields.
8381            // Write the fields.
8382            self.0.encode(encoder, offset + 0, depth)?;
8383            Ok(())
8384        }
8385    }
8386
8387    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8388        for MlmeReconnectReqRequest
8389    {
8390        #[inline(always)]
8391        fn new_empty() -> Self {
8392            Self { req: fidl::new_empty!(ReconnectRequest, D) }
8393        }
8394
8395        #[inline]
8396        unsafe fn decode(
8397            &mut self,
8398            decoder: &mut fidl::encoding::Decoder<'_, D>,
8399            offset: usize,
8400            _depth: fidl::encoding::Depth,
8401        ) -> fidl::Result<()> {
8402            decoder.debug_check_bounds::<Self>(offset);
8403            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
8404            // Verify that padding bytes are zero.
8405            // Copy from the buffer into the object.
8406            unsafe {
8407                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
8408            }
8409            Ok(())
8410        }
8411    }
8412
8413    impl fidl::encoding::ValueTypeMarker for MlmeRelayCapturedFrameRequest {
8414        type Borrowed<'a> = &'a Self;
8415        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8416            value
8417        }
8418    }
8419
8420    unsafe impl fidl::encoding::TypeMarker for MlmeRelayCapturedFrameRequest {
8421        type Owned = Self;
8422
8423        #[inline(always)]
8424        fn inline_align(_context: fidl::encoding::Context) -> usize {
8425            8
8426        }
8427
8428        #[inline(always)]
8429        fn inline_size(_context: fidl::encoding::Context) -> usize {
8430            16
8431        }
8432    }
8433
8434    unsafe impl<D: fidl::encoding::ResourceDialect>
8435        fidl::encoding::Encode<MlmeRelayCapturedFrameRequest, D>
8436        for &MlmeRelayCapturedFrameRequest
8437    {
8438        #[inline]
8439        unsafe fn encode(
8440            self,
8441            encoder: &mut fidl::encoding::Encoder<'_, D>,
8442            offset: usize,
8443            _depth: fidl::encoding::Depth,
8444        ) -> fidl::Result<()> {
8445            encoder.debug_check_bounds::<MlmeRelayCapturedFrameRequest>(offset);
8446            // Delegate to tuple encoding.
8447            fidl::encoding::Encode::<MlmeRelayCapturedFrameRequest, D>::encode(
8448                (<CapturedFrameResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),),
8449                encoder,
8450                offset,
8451                _depth,
8452            )
8453        }
8454    }
8455    unsafe impl<
8456        D: fidl::encoding::ResourceDialect,
8457        T0: fidl::encoding::Encode<CapturedFrameResult, D>,
8458    > fidl::encoding::Encode<MlmeRelayCapturedFrameRequest, D> for (T0,)
8459    {
8460        #[inline]
8461        unsafe fn encode(
8462            self,
8463            encoder: &mut fidl::encoding::Encoder<'_, D>,
8464            offset: usize,
8465            depth: fidl::encoding::Depth,
8466        ) -> fidl::Result<()> {
8467            encoder.debug_check_bounds::<MlmeRelayCapturedFrameRequest>(offset);
8468            // Zero out padding regions. There's no need to apply masks
8469            // because the unmasked parts will be overwritten by fields.
8470            // Write the fields.
8471            self.0.encode(encoder, offset + 0, depth)?;
8472            Ok(())
8473        }
8474    }
8475
8476    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8477        for MlmeRelayCapturedFrameRequest
8478    {
8479        #[inline(always)]
8480        fn new_empty() -> Self {
8481            Self { result: fidl::new_empty!(CapturedFrameResult, D) }
8482        }
8483
8484        #[inline]
8485        unsafe fn decode(
8486            &mut self,
8487            decoder: &mut fidl::encoding::Decoder<'_, D>,
8488            offset: usize,
8489            _depth: fidl::encoding::Depth,
8490        ) -> fidl::Result<()> {
8491            decoder.debug_check_bounds::<Self>(offset);
8492            // Verify that padding bytes are zero.
8493            fidl::decode!(CapturedFrameResult, D, &mut self.result, decoder, offset + 0, _depth)?;
8494            Ok(())
8495        }
8496    }
8497
8498    impl fidl::encoding::ValueTypeMarker for MlmeResetReqRequest {
8499        type Borrowed<'a> = &'a Self;
8500        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8501            value
8502        }
8503    }
8504
8505    unsafe impl fidl::encoding::TypeMarker for MlmeResetReqRequest {
8506        type Owned = Self;
8507
8508        #[inline(always)]
8509        fn inline_align(_context: fidl::encoding::Context) -> usize {
8510            1
8511        }
8512
8513        #[inline(always)]
8514        fn inline_size(_context: fidl::encoding::Context) -> usize {
8515            7
8516        }
8517    }
8518
8519    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeResetReqRequest, D>
8520        for &MlmeResetReqRequest
8521    {
8522        #[inline]
8523        unsafe fn encode(
8524            self,
8525            encoder: &mut fidl::encoding::Encoder<'_, D>,
8526            offset: usize,
8527            _depth: fidl::encoding::Depth,
8528        ) -> fidl::Result<()> {
8529            encoder.debug_check_bounds::<MlmeResetReqRequest>(offset);
8530            // Delegate to tuple encoding.
8531            fidl::encoding::Encode::<MlmeResetReqRequest, D>::encode(
8532                (<ResetRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8533                encoder,
8534                offset,
8535                _depth,
8536            )
8537        }
8538    }
8539    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ResetRequest, D>>
8540        fidl::encoding::Encode<MlmeResetReqRequest, D> for (T0,)
8541    {
8542        #[inline]
8543        unsafe fn encode(
8544            self,
8545            encoder: &mut fidl::encoding::Encoder<'_, D>,
8546            offset: usize,
8547            depth: fidl::encoding::Depth,
8548        ) -> fidl::Result<()> {
8549            encoder.debug_check_bounds::<MlmeResetReqRequest>(offset);
8550            // Zero out padding regions. There's no need to apply masks
8551            // because the unmasked parts will be overwritten by fields.
8552            // Write the fields.
8553            self.0.encode(encoder, offset + 0, depth)?;
8554            Ok(())
8555        }
8556    }
8557
8558    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeResetReqRequest {
8559        #[inline(always)]
8560        fn new_empty() -> Self {
8561            Self { req: fidl::new_empty!(ResetRequest, D) }
8562        }
8563
8564        #[inline]
8565        unsafe fn decode(
8566            &mut self,
8567            decoder: &mut fidl::encoding::Decoder<'_, D>,
8568            offset: usize,
8569            _depth: fidl::encoding::Depth,
8570        ) -> fidl::Result<()> {
8571            decoder.debug_check_bounds::<Self>(offset);
8572            // Verify that padding bytes are zero.
8573            fidl::decode!(ResetRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8574            Ok(())
8575        }
8576    }
8577
8578    impl fidl::encoding::ValueTypeMarker for MlmeRoamConfRequest {
8579        type Borrowed<'a> = &'a Self;
8580        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8581            value
8582        }
8583    }
8584
8585    unsafe impl fidl::encoding::TypeMarker for MlmeRoamConfRequest {
8586        type Owned = Self;
8587
8588        #[inline(always)]
8589        fn inline_align(_context: fidl::encoding::Context) -> usize {
8590            8
8591        }
8592
8593        #[inline(always)]
8594        fn inline_size(_context: fidl::encoding::Context) -> usize {
8595            32
8596        }
8597    }
8598
8599    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeRoamConfRequest, D>
8600        for &MlmeRoamConfRequest
8601    {
8602        #[inline]
8603        unsafe fn encode(
8604            self,
8605            encoder: &mut fidl::encoding::Encoder<'_, D>,
8606            offset: usize,
8607            _depth: fidl::encoding::Depth,
8608        ) -> fidl::Result<()> {
8609            encoder.debug_check_bounds::<MlmeRoamConfRequest>(offset);
8610            // Delegate to tuple encoding.
8611            fidl::encoding::Encode::<MlmeRoamConfRequest, D>::encode(
8612                (<RoamConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.conf),),
8613                encoder,
8614                offset,
8615                _depth,
8616            )
8617        }
8618    }
8619    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RoamConfirm, D>>
8620        fidl::encoding::Encode<MlmeRoamConfRequest, D> for (T0,)
8621    {
8622        #[inline]
8623        unsafe fn encode(
8624            self,
8625            encoder: &mut fidl::encoding::Encoder<'_, D>,
8626            offset: usize,
8627            depth: fidl::encoding::Depth,
8628        ) -> fidl::Result<()> {
8629            encoder.debug_check_bounds::<MlmeRoamConfRequest>(offset);
8630            // Zero out padding regions. There's no need to apply masks
8631            // because the unmasked parts will be overwritten by fields.
8632            // Write the fields.
8633            self.0.encode(encoder, offset + 0, depth)?;
8634            Ok(())
8635        }
8636    }
8637
8638    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeRoamConfRequest {
8639        #[inline(always)]
8640        fn new_empty() -> Self {
8641            Self { conf: fidl::new_empty!(RoamConfirm, D) }
8642        }
8643
8644        #[inline]
8645        unsafe fn decode(
8646            &mut self,
8647            decoder: &mut fidl::encoding::Decoder<'_, D>,
8648            offset: usize,
8649            _depth: fidl::encoding::Depth,
8650        ) -> fidl::Result<()> {
8651            decoder.debug_check_bounds::<Self>(offset);
8652            // Verify that padding bytes are zero.
8653            fidl::decode!(RoamConfirm, D, &mut self.conf, decoder, offset + 0, _depth)?;
8654            Ok(())
8655        }
8656    }
8657
8658    impl fidl::encoding::ValueTypeMarker for MlmeRoamReqRequest {
8659        type Borrowed<'a> = &'a Self;
8660        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8661            value
8662        }
8663    }
8664
8665    unsafe impl fidl::encoding::TypeMarker for MlmeRoamReqRequest {
8666        type Owned = Self;
8667
8668        #[inline(always)]
8669        fn inline_align(_context: fidl::encoding::Context) -> usize {
8670            8
8671        }
8672
8673        #[inline(always)]
8674        fn inline_size(_context: fidl::encoding::Context) -> usize {
8675            48
8676        }
8677    }
8678
8679    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeRoamReqRequest, D>
8680        for &MlmeRoamReqRequest
8681    {
8682        #[inline]
8683        unsafe fn encode(
8684            self,
8685            encoder: &mut fidl::encoding::Encoder<'_, D>,
8686            offset: usize,
8687            _depth: fidl::encoding::Depth,
8688        ) -> fidl::Result<()> {
8689            encoder.debug_check_bounds::<MlmeRoamReqRequest>(offset);
8690            // Delegate to tuple encoding.
8691            fidl::encoding::Encode::<MlmeRoamReqRequest, D>::encode(
8692                (<RoamRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8693                encoder,
8694                offset,
8695                _depth,
8696            )
8697        }
8698    }
8699    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RoamRequest, D>>
8700        fidl::encoding::Encode<MlmeRoamReqRequest, D> for (T0,)
8701    {
8702        #[inline]
8703        unsafe fn encode(
8704            self,
8705            encoder: &mut fidl::encoding::Encoder<'_, D>,
8706            offset: usize,
8707            depth: fidl::encoding::Depth,
8708        ) -> fidl::Result<()> {
8709            encoder.debug_check_bounds::<MlmeRoamReqRequest>(offset);
8710            // Zero out padding regions. There's no need to apply masks
8711            // because the unmasked parts will be overwritten by fields.
8712            // Write the fields.
8713            self.0.encode(encoder, offset + 0, depth)?;
8714            Ok(())
8715        }
8716    }
8717
8718    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeRoamReqRequest {
8719        #[inline(always)]
8720        fn new_empty() -> Self {
8721            Self { req: fidl::new_empty!(RoamRequest, D) }
8722        }
8723
8724        #[inline]
8725        unsafe fn decode(
8726            &mut self,
8727            decoder: &mut fidl::encoding::Decoder<'_, D>,
8728            offset: usize,
8729            _depth: fidl::encoding::Depth,
8730        ) -> fidl::Result<()> {
8731            decoder.debug_check_bounds::<Self>(offset);
8732            // Verify that padding bytes are zero.
8733            fidl::decode!(RoamRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8734            Ok(())
8735        }
8736    }
8737
8738    impl fidl::encoding::ValueTypeMarker for MlmeRoamResultIndRequest {
8739        type Borrowed<'a> = &'a Self;
8740        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8741            value
8742        }
8743    }
8744
8745    unsafe impl fidl::encoding::TypeMarker for MlmeRoamResultIndRequest {
8746        type Owned = Self;
8747
8748        #[inline(always)]
8749        fn inline_align(_context: fidl::encoding::Context) -> usize {
8750            8
8751        }
8752
8753        #[inline(always)]
8754        fn inline_size(_context: fidl::encoding::Context) -> usize {
8755            32
8756        }
8757    }
8758
8759    unsafe impl<D: fidl::encoding::ResourceDialect>
8760        fidl::encoding::Encode<MlmeRoamResultIndRequest, D> for &MlmeRoamResultIndRequest
8761    {
8762        #[inline]
8763        unsafe fn encode(
8764            self,
8765            encoder: &mut fidl::encoding::Encoder<'_, D>,
8766            offset: usize,
8767            _depth: fidl::encoding::Depth,
8768        ) -> fidl::Result<()> {
8769            encoder.debug_check_bounds::<MlmeRoamResultIndRequest>(offset);
8770            // Delegate to tuple encoding.
8771            fidl::encoding::Encode::<MlmeRoamResultIndRequest, D>::encode(
8772                (<RoamResultIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
8773                encoder,
8774                offset,
8775                _depth,
8776            )
8777        }
8778    }
8779    unsafe impl<
8780        D: fidl::encoding::ResourceDialect,
8781        T0: fidl::encoding::Encode<RoamResultIndication, D>,
8782    > fidl::encoding::Encode<MlmeRoamResultIndRequest, D> for (T0,)
8783    {
8784        #[inline]
8785        unsafe fn encode(
8786            self,
8787            encoder: &mut fidl::encoding::Encoder<'_, D>,
8788            offset: usize,
8789            depth: fidl::encoding::Depth,
8790        ) -> fidl::Result<()> {
8791            encoder.debug_check_bounds::<MlmeRoamResultIndRequest>(offset);
8792            // Zero out padding regions. There's no need to apply masks
8793            // because the unmasked parts will be overwritten by fields.
8794            // Write the fields.
8795            self.0.encode(encoder, offset + 0, depth)?;
8796            Ok(())
8797        }
8798    }
8799
8800    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8801        for MlmeRoamResultIndRequest
8802    {
8803        #[inline(always)]
8804        fn new_empty() -> Self {
8805            Self { ind: fidl::new_empty!(RoamResultIndication, D) }
8806        }
8807
8808        #[inline]
8809        unsafe fn decode(
8810            &mut self,
8811            decoder: &mut fidl::encoding::Decoder<'_, D>,
8812            offset: usize,
8813            _depth: fidl::encoding::Depth,
8814        ) -> fidl::Result<()> {
8815            decoder.debug_check_bounds::<Self>(offset);
8816            // Verify that padding bytes are zero.
8817            fidl::decode!(RoamResultIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
8818            Ok(())
8819        }
8820    }
8821
8822    impl fidl::encoding::ValueTypeMarker for MlmeRoamStartIndRequest {
8823        type Borrowed<'a> = &'a Self;
8824        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8825            value
8826        }
8827    }
8828
8829    unsafe impl fidl::encoding::TypeMarker for MlmeRoamStartIndRequest {
8830        type Owned = Self;
8831
8832        #[inline(always)]
8833        fn inline_align(_context: fidl::encoding::Context) -> usize {
8834            8
8835        }
8836
8837        #[inline(always)]
8838        fn inline_size(_context: fidl::encoding::Context) -> usize {
8839            64
8840        }
8841    }
8842
8843    unsafe impl<D: fidl::encoding::ResourceDialect>
8844        fidl::encoding::Encode<MlmeRoamStartIndRequest, D> for &MlmeRoamStartIndRequest
8845    {
8846        #[inline]
8847        unsafe fn encode(
8848            self,
8849            encoder: &mut fidl::encoding::Encoder<'_, D>,
8850            offset: usize,
8851            _depth: fidl::encoding::Depth,
8852        ) -> fidl::Result<()> {
8853            encoder.debug_check_bounds::<MlmeRoamStartIndRequest>(offset);
8854            // Delegate to tuple encoding.
8855            fidl::encoding::Encode::<MlmeRoamStartIndRequest, D>::encode(
8856                (<RoamStartIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
8857                encoder,
8858                offset,
8859                _depth,
8860            )
8861        }
8862    }
8863    unsafe impl<
8864        D: fidl::encoding::ResourceDialect,
8865        T0: fidl::encoding::Encode<RoamStartIndication, D>,
8866    > fidl::encoding::Encode<MlmeRoamStartIndRequest, D> for (T0,)
8867    {
8868        #[inline]
8869        unsafe fn encode(
8870            self,
8871            encoder: &mut fidl::encoding::Encoder<'_, D>,
8872            offset: usize,
8873            depth: fidl::encoding::Depth,
8874        ) -> fidl::Result<()> {
8875            encoder.debug_check_bounds::<MlmeRoamStartIndRequest>(offset);
8876            // Zero out padding regions. There's no need to apply masks
8877            // because the unmasked parts will be overwritten by fields.
8878            // Write the fields.
8879            self.0.encode(encoder, offset + 0, depth)?;
8880            Ok(())
8881        }
8882    }
8883
8884    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8885        for MlmeRoamStartIndRequest
8886    {
8887        #[inline(always)]
8888        fn new_empty() -> Self {
8889            Self { ind: fidl::new_empty!(RoamStartIndication, D) }
8890        }
8891
8892        #[inline]
8893        unsafe fn decode(
8894            &mut self,
8895            decoder: &mut fidl::encoding::Decoder<'_, D>,
8896            offset: usize,
8897            _depth: fidl::encoding::Depth,
8898        ) -> fidl::Result<()> {
8899            decoder.debug_check_bounds::<Self>(offset);
8900            // Verify that padding bytes are zero.
8901            fidl::decode!(RoamStartIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
8902            Ok(())
8903        }
8904    }
8905
8906    impl fidl::encoding::ValueTypeMarker for MlmeSaeFrameTxRequest {
8907        type Borrowed<'a> = &'a Self;
8908        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8909            value
8910        }
8911    }
8912
8913    unsafe impl fidl::encoding::TypeMarker for MlmeSaeFrameTxRequest {
8914        type Owned = Self;
8915
8916        #[inline(always)]
8917        fn inline_align(_context: fidl::encoding::Context) -> usize {
8918            8
8919        }
8920
8921        #[inline(always)]
8922        fn inline_size(_context: fidl::encoding::Context) -> usize {
8923            32
8924        }
8925    }
8926
8927    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeSaeFrameTxRequest, D>
8928        for &MlmeSaeFrameTxRequest
8929    {
8930        #[inline]
8931        unsafe fn encode(
8932            self,
8933            encoder: &mut fidl::encoding::Encoder<'_, D>,
8934            offset: usize,
8935            _depth: fidl::encoding::Depth,
8936        ) -> fidl::Result<()> {
8937            encoder.debug_check_bounds::<MlmeSaeFrameTxRequest>(offset);
8938            // Delegate to tuple encoding.
8939            fidl::encoding::Encode::<MlmeSaeFrameTxRequest, D>::encode(
8940                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
8941                encoder,
8942                offset,
8943                _depth,
8944            )
8945        }
8946    }
8947    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
8948        fidl::encoding::Encode<MlmeSaeFrameTxRequest, D> for (T0,)
8949    {
8950        #[inline]
8951        unsafe fn encode(
8952            self,
8953            encoder: &mut fidl::encoding::Encoder<'_, D>,
8954            offset: usize,
8955            depth: fidl::encoding::Depth,
8956        ) -> fidl::Result<()> {
8957            encoder.debug_check_bounds::<MlmeSaeFrameTxRequest>(offset);
8958            // Zero out padding regions. There's no need to apply masks
8959            // because the unmasked parts will be overwritten by fields.
8960            // Write the fields.
8961            self.0.encode(encoder, offset + 0, depth)?;
8962            Ok(())
8963        }
8964    }
8965
8966    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeSaeFrameTxRequest {
8967        #[inline(always)]
8968        fn new_empty() -> Self {
8969            Self { frame: fidl::new_empty!(SaeFrame, D) }
8970        }
8971
8972        #[inline]
8973        unsafe fn decode(
8974            &mut self,
8975            decoder: &mut fidl::encoding::Decoder<'_, D>,
8976            offset: usize,
8977            _depth: fidl::encoding::Depth,
8978        ) -> fidl::Result<()> {
8979            decoder.debug_check_bounds::<Self>(offset);
8980            // Verify that padding bytes are zero.
8981            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
8982            Ok(())
8983        }
8984    }
8985
8986    impl fidl::encoding::ValueTypeMarker for MlmeSaeHandshakeRespRequest {
8987        type Borrowed<'a> = &'a Self;
8988        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8989            value
8990        }
8991    }
8992
8993    unsafe impl fidl::encoding::TypeMarker for MlmeSaeHandshakeRespRequest {
8994        type Owned = Self;
8995
8996        #[inline(always)]
8997        fn inline_align(_context: fidl::encoding::Context) -> usize {
8998            2
8999        }
9000
9001        #[inline(always)]
9002        fn inline_size(_context: fidl::encoding::Context) -> usize {
9003            8
9004        }
9005    }
9006
9007    unsafe impl<D: fidl::encoding::ResourceDialect>
9008        fidl::encoding::Encode<MlmeSaeHandshakeRespRequest, D> for &MlmeSaeHandshakeRespRequest
9009    {
9010        #[inline]
9011        unsafe fn encode(
9012            self,
9013            encoder: &mut fidl::encoding::Encoder<'_, D>,
9014            offset: usize,
9015            _depth: fidl::encoding::Depth,
9016        ) -> fidl::Result<()> {
9017            encoder.debug_check_bounds::<MlmeSaeHandshakeRespRequest>(offset);
9018            // Delegate to tuple encoding.
9019            fidl::encoding::Encode::<MlmeSaeHandshakeRespRequest, D>::encode(
9020                (<SaeHandshakeResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
9021                encoder,
9022                offset,
9023                _depth,
9024            )
9025        }
9026    }
9027    unsafe impl<
9028        D: fidl::encoding::ResourceDialect,
9029        T0: fidl::encoding::Encode<SaeHandshakeResponse, D>,
9030    > fidl::encoding::Encode<MlmeSaeHandshakeRespRequest, D> for (T0,)
9031    {
9032        #[inline]
9033        unsafe fn encode(
9034            self,
9035            encoder: &mut fidl::encoding::Encoder<'_, D>,
9036            offset: usize,
9037            depth: fidl::encoding::Depth,
9038        ) -> fidl::Result<()> {
9039            encoder.debug_check_bounds::<MlmeSaeHandshakeRespRequest>(offset);
9040            // Zero out padding regions. There's no need to apply masks
9041            // because the unmasked parts will be overwritten by fields.
9042            // Write the fields.
9043            self.0.encode(encoder, offset + 0, depth)?;
9044            Ok(())
9045        }
9046    }
9047
9048    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9049        for MlmeSaeHandshakeRespRequest
9050    {
9051        #[inline(always)]
9052        fn new_empty() -> Self {
9053            Self { resp: fidl::new_empty!(SaeHandshakeResponse, D) }
9054        }
9055
9056        #[inline]
9057        unsafe fn decode(
9058            &mut self,
9059            decoder: &mut fidl::encoding::Decoder<'_, D>,
9060            offset: usize,
9061            _depth: fidl::encoding::Depth,
9062        ) -> fidl::Result<()> {
9063            decoder.debug_check_bounds::<Self>(offset);
9064            // Verify that padding bytes are zero.
9065            fidl::decode!(SaeHandshakeResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
9066            Ok(())
9067        }
9068    }
9069
9070    impl fidl::encoding::ValueTypeMarker for MlmeSetApfPacketFilterEnabledRequest {
9071        type Borrowed<'a> = &'a Self;
9072        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9073            value
9074        }
9075    }
9076
9077    unsafe impl fidl::encoding::TypeMarker for MlmeSetApfPacketFilterEnabledRequest {
9078        type Owned = Self;
9079
9080        #[inline(always)]
9081        fn inline_align(_context: fidl::encoding::Context) -> usize {
9082            1
9083        }
9084
9085        #[inline(always)]
9086        fn inline_size(_context: fidl::encoding::Context) -> usize {
9087            1
9088        }
9089    }
9090
9091    unsafe impl<D: fidl::encoding::ResourceDialect>
9092        fidl::encoding::Encode<MlmeSetApfPacketFilterEnabledRequest, D>
9093        for &MlmeSetApfPacketFilterEnabledRequest
9094    {
9095        #[inline]
9096        unsafe fn encode(
9097            self,
9098            encoder: &mut fidl::encoding::Encoder<'_, D>,
9099            offset: usize,
9100            _depth: fidl::encoding::Depth,
9101        ) -> fidl::Result<()> {
9102            encoder.debug_check_bounds::<MlmeSetApfPacketFilterEnabledRequest>(offset);
9103            // Delegate to tuple encoding.
9104            fidl::encoding::Encode::<MlmeSetApfPacketFilterEnabledRequest, D>::encode(
9105                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enabled),),
9106                encoder,
9107                offset,
9108                _depth,
9109            )
9110        }
9111    }
9112    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
9113        fidl::encoding::Encode<MlmeSetApfPacketFilterEnabledRequest, D> for (T0,)
9114    {
9115        #[inline]
9116        unsafe fn encode(
9117            self,
9118            encoder: &mut fidl::encoding::Encoder<'_, D>,
9119            offset: usize,
9120            depth: fidl::encoding::Depth,
9121        ) -> fidl::Result<()> {
9122            encoder.debug_check_bounds::<MlmeSetApfPacketFilterEnabledRequest>(offset);
9123            // Zero out padding regions. There's no need to apply masks
9124            // because the unmasked parts will be overwritten by fields.
9125            // Write the fields.
9126            self.0.encode(encoder, offset + 0, depth)?;
9127            Ok(())
9128        }
9129    }
9130
9131    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9132        for MlmeSetApfPacketFilterEnabledRequest
9133    {
9134        #[inline(always)]
9135        fn new_empty() -> Self {
9136            Self { enabled: fidl::new_empty!(bool, D) }
9137        }
9138
9139        #[inline]
9140        unsafe fn decode(
9141            &mut self,
9142            decoder: &mut fidl::encoding::Decoder<'_, D>,
9143            offset: usize,
9144            _depth: fidl::encoding::Depth,
9145        ) -> fidl::Result<()> {
9146            decoder.debug_check_bounds::<Self>(offset);
9147            // Verify that padding bytes are zero.
9148            fidl::decode!(bool, D, &mut self.enabled, decoder, offset + 0, _depth)?;
9149            Ok(())
9150        }
9151    }
9152
9153    impl fidl::encoding::ValueTypeMarker for MlmeSetControlledPortRequest {
9154        type Borrowed<'a> = &'a Self;
9155        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9156            value
9157        }
9158    }
9159
9160    unsafe impl fidl::encoding::TypeMarker for MlmeSetControlledPortRequest {
9161        type Owned = Self;
9162
9163        #[inline(always)]
9164        fn inline_align(_context: fidl::encoding::Context) -> usize {
9165            4
9166        }
9167
9168        #[inline(always)]
9169        fn inline_size(_context: fidl::encoding::Context) -> usize {
9170            12
9171        }
9172    }
9173
9174    unsafe impl<D: fidl::encoding::ResourceDialect>
9175        fidl::encoding::Encode<MlmeSetControlledPortRequest, D> for &MlmeSetControlledPortRequest
9176    {
9177        #[inline]
9178        unsafe fn encode(
9179            self,
9180            encoder: &mut fidl::encoding::Encoder<'_, D>,
9181            offset: usize,
9182            _depth: fidl::encoding::Depth,
9183        ) -> fidl::Result<()> {
9184            encoder.debug_check_bounds::<MlmeSetControlledPortRequest>(offset);
9185            // Delegate to tuple encoding.
9186            fidl::encoding::Encode::<MlmeSetControlledPortRequest, D>::encode(
9187                (<SetControlledPortRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9188                encoder,
9189                offset,
9190                _depth,
9191            )
9192        }
9193    }
9194    unsafe impl<
9195        D: fidl::encoding::ResourceDialect,
9196        T0: fidl::encoding::Encode<SetControlledPortRequest, D>,
9197    > fidl::encoding::Encode<MlmeSetControlledPortRequest, D> for (T0,)
9198    {
9199        #[inline]
9200        unsafe fn encode(
9201            self,
9202            encoder: &mut fidl::encoding::Encoder<'_, D>,
9203            offset: usize,
9204            depth: fidl::encoding::Depth,
9205        ) -> fidl::Result<()> {
9206            encoder.debug_check_bounds::<MlmeSetControlledPortRequest>(offset);
9207            // Zero out padding regions. There's no need to apply masks
9208            // because the unmasked parts will be overwritten by fields.
9209            // Write the fields.
9210            self.0.encode(encoder, offset + 0, depth)?;
9211            Ok(())
9212        }
9213    }
9214
9215    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9216        for MlmeSetControlledPortRequest
9217    {
9218        #[inline(always)]
9219        fn new_empty() -> Self {
9220            Self { req: fidl::new_empty!(SetControlledPortRequest, D) }
9221        }
9222
9223        #[inline]
9224        unsafe fn decode(
9225            &mut self,
9226            decoder: &mut fidl::encoding::Decoder<'_, D>,
9227            offset: usize,
9228            _depth: fidl::encoding::Depth,
9229        ) -> fidl::Result<()> {
9230            decoder.debug_check_bounds::<Self>(offset);
9231            // Verify that padding bytes are zero.
9232            fidl::decode!(SetControlledPortRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9233            Ok(())
9234        }
9235    }
9236
9237    impl fidl::encoding::ValueTypeMarker for MlmeSetKeysConfRequest {
9238        type Borrowed<'a> = &'a Self;
9239        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9240            value
9241        }
9242    }
9243
9244    unsafe impl fidl::encoding::TypeMarker for MlmeSetKeysConfRequest {
9245        type Owned = Self;
9246
9247        #[inline(always)]
9248        fn inline_align(_context: fidl::encoding::Context) -> usize {
9249            8
9250        }
9251
9252        #[inline(always)]
9253        fn inline_size(_context: fidl::encoding::Context) -> usize {
9254            16
9255        }
9256    }
9257
9258    unsafe impl<D: fidl::encoding::ResourceDialect>
9259        fidl::encoding::Encode<MlmeSetKeysConfRequest, D> for &MlmeSetKeysConfRequest
9260    {
9261        #[inline]
9262        unsafe fn encode(
9263            self,
9264            encoder: &mut fidl::encoding::Encoder<'_, D>,
9265            offset: usize,
9266            _depth: fidl::encoding::Depth,
9267        ) -> fidl::Result<()> {
9268            encoder.debug_check_bounds::<MlmeSetKeysConfRequest>(offset);
9269            // Delegate to tuple encoding.
9270            fidl::encoding::Encode::<MlmeSetKeysConfRequest, D>::encode(
9271                (<SetKeysConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.conf),),
9272                encoder,
9273                offset,
9274                _depth,
9275            )
9276        }
9277    }
9278    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SetKeysConfirm, D>>
9279        fidl::encoding::Encode<MlmeSetKeysConfRequest, D> for (T0,)
9280    {
9281        #[inline]
9282        unsafe fn encode(
9283            self,
9284            encoder: &mut fidl::encoding::Encoder<'_, D>,
9285            offset: usize,
9286            depth: fidl::encoding::Depth,
9287        ) -> fidl::Result<()> {
9288            encoder.debug_check_bounds::<MlmeSetKeysConfRequest>(offset);
9289            // Zero out padding regions. There's no need to apply masks
9290            // because the unmasked parts will be overwritten by fields.
9291            // Write the fields.
9292            self.0.encode(encoder, offset + 0, depth)?;
9293            Ok(())
9294        }
9295    }
9296
9297    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9298        for MlmeSetKeysConfRequest
9299    {
9300        #[inline(always)]
9301        fn new_empty() -> Self {
9302            Self { conf: fidl::new_empty!(SetKeysConfirm, D) }
9303        }
9304
9305        #[inline]
9306        unsafe fn decode(
9307            &mut self,
9308            decoder: &mut fidl::encoding::Decoder<'_, D>,
9309            offset: usize,
9310            _depth: fidl::encoding::Depth,
9311        ) -> fidl::Result<()> {
9312            decoder.debug_check_bounds::<Self>(offset);
9313            // Verify that padding bytes are zero.
9314            fidl::decode!(SetKeysConfirm, D, &mut self.conf, decoder, offset + 0, _depth)?;
9315            Ok(())
9316        }
9317    }
9318
9319    impl fidl::encoding::ValueTypeMarker for MlmeSetKeysReqRequest {
9320        type Borrowed<'a> = &'a Self;
9321        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9322            value
9323        }
9324    }
9325
9326    unsafe impl fidl::encoding::TypeMarker for MlmeSetKeysReqRequest {
9327        type Owned = Self;
9328
9329        #[inline(always)]
9330        fn inline_align(_context: fidl::encoding::Context) -> usize {
9331            8
9332        }
9333
9334        #[inline(always)]
9335        fn inline_size(_context: fidl::encoding::Context) -> usize {
9336            16
9337        }
9338    }
9339
9340    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeSetKeysReqRequest, D>
9341        for &MlmeSetKeysReqRequest
9342    {
9343        #[inline]
9344        unsafe fn encode(
9345            self,
9346            encoder: &mut fidl::encoding::Encoder<'_, D>,
9347            offset: usize,
9348            _depth: fidl::encoding::Depth,
9349        ) -> fidl::Result<()> {
9350            encoder.debug_check_bounds::<MlmeSetKeysReqRequest>(offset);
9351            // Delegate to tuple encoding.
9352            fidl::encoding::Encode::<MlmeSetKeysReqRequest, D>::encode(
9353                (<SetKeysRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9354                encoder,
9355                offset,
9356                _depth,
9357            )
9358        }
9359    }
9360    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SetKeysRequest, D>>
9361        fidl::encoding::Encode<MlmeSetKeysReqRequest, D> for (T0,)
9362    {
9363        #[inline]
9364        unsafe fn encode(
9365            self,
9366            encoder: &mut fidl::encoding::Encoder<'_, D>,
9367            offset: usize,
9368            depth: fidl::encoding::Depth,
9369        ) -> fidl::Result<()> {
9370            encoder.debug_check_bounds::<MlmeSetKeysReqRequest>(offset);
9371            // Zero out padding regions. There's no need to apply masks
9372            // because the unmasked parts will be overwritten by fields.
9373            // Write the fields.
9374            self.0.encode(encoder, offset + 0, depth)?;
9375            Ok(())
9376        }
9377    }
9378
9379    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeSetKeysReqRequest {
9380        #[inline(always)]
9381        fn new_empty() -> Self {
9382            Self { req: fidl::new_empty!(SetKeysRequest, D) }
9383        }
9384
9385        #[inline]
9386        unsafe fn decode(
9387            &mut self,
9388            decoder: &mut fidl::encoding::Decoder<'_, D>,
9389            offset: usize,
9390            _depth: fidl::encoding::Depth,
9391        ) -> fidl::Result<()> {
9392            decoder.debug_check_bounds::<Self>(offset);
9393            // Verify that padding bytes are zero.
9394            fidl::decode!(SetKeysRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9395            Ok(())
9396        }
9397    }
9398
9399    impl fidl::encoding::ValueTypeMarker for MlmeSetMacAddressRequest {
9400        type Borrowed<'a> = &'a Self;
9401        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9402            value
9403        }
9404    }
9405
9406    unsafe impl fidl::encoding::TypeMarker for MlmeSetMacAddressRequest {
9407        type Owned = Self;
9408
9409        #[inline(always)]
9410        fn inline_align(_context: fidl::encoding::Context) -> usize {
9411            1
9412        }
9413
9414        #[inline(always)]
9415        fn inline_size(_context: fidl::encoding::Context) -> usize {
9416            6
9417        }
9418        #[inline(always)]
9419        fn encode_is_copy() -> bool {
9420            true
9421        }
9422
9423        #[inline(always)]
9424        fn decode_is_copy() -> bool {
9425            true
9426        }
9427    }
9428
9429    unsafe impl<D: fidl::encoding::ResourceDialect>
9430        fidl::encoding::Encode<MlmeSetMacAddressRequest, D> for &MlmeSetMacAddressRequest
9431    {
9432        #[inline]
9433        unsafe fn encode(
9434            self,
9435            encoder: &mut fidl::encoding::Encoder<'_, D>,
9436            offset: usize,
9437            _depth: fidl::encoding::Depth,
9438        ) -> fidl::Result<()> {
9439            encoder.debug_check_bounds::<MlmeSetMacAddressRequest>(offset);
9440            unsafe {
9441                // Copy the object into the buffer.
9442                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
9443                (buf_ptr as *mut MlmeSetMacAddressRequest)
9444                    .write_unaligned((self as *const MlmeSetMacAddressRequest).read());
9445                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
9446                // done second because the memcpy will write garbage to these bytes.
9447            }
9448            Ok(())
9449        }
9450    }
9451    unsafe impl<
9452        D: fidl::encoding::ResourceDialect,
9453        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
9454    > fidl::encoding::Encode<MlmeSetMacAddressRequest, D> for (T0,)
9455    {
9456        #[inline]
9457        unsafe fn encode(
9458            self,
9459            encoder: &mut fidl::encoding::Encoder<'_, D>,
9460            offset: usize,
9461            depth: fidl::encoding::Depth,
9462        ) -> fidl::Result<()> {
9463            encoder.debug_check_bounds::<MlmeSetMacAddressRequest>(offset);
9464            // Zero out padding regions. There's no need to apply masks
9465            // because the unmasked parts will be overwritten by fields.
9466            // Write the fields.
9467            self.0.encode(encoder, offset + 0, depth)?;
9468            Ok(())
9469        }
9470    }
9471
9472    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9473        for MlmeSetMacAddressRequest
9474    {
9475        #[inline(always)]
9476        fn new_empty() -> Self {
9477            Self { mac_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
9478        }
9479
9480        #[inline]
9481        unsafe fn decode(
9482            &mut self,
9483            decoder: &mut fidl::encoding::Decoder<'_, D>,
9484            offset: usize,
9485            _depth: fidl::encoding::Depth,
9486        ) -> fidl::Result<()> {
9487            decoder.debug_check_bounds::<Self>(offset);
9488            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
9489            // Verify that padding bytes are zero.
9490            // Copy from the buffer into the object.
9491            unsafe {
9492                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
9493            }
9494            Ok(())
9495        }
9496    }
9497
9498    impl fidl::encoding::ValueTypeMarker for MlmeSignalReportRequest {
9499        type Borrowed<'a> = &'a Self;
9500        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9501            value
9502        }
9503    }
9504
9505    unsafe impl fidl::encoding::TypeMarker for MlmeSignalReportRequest {
9506        type Owned = Self;
9507
9508        #[inline(always)]
9509        fn inline_align(_context: fidl::encoding::Context) -> usize {
9510            8
9511        }
9512
9513        #[inline(always)]
9514        fn inline_size(_context: fidl::encoding::Context) -> usize {
9515            16
9516        }
9517    }
9518
9519    unsafe impl<D: fidl::encoding::ResourceDialect>
9520        fidl::encoding::Encode<MlmeSignalReportRequest, D> for &MlmeSignalReportRequest
9521    {
9522        #[inline]
9523        unsafe fn encode(
9524            self,
9525            encoder: &mut fidl::encoding::Encoder<'_, D>,
9526            offset: usize,
9527            _depth: fidl::encoding::Depth,
9528        ) -> fidl::Result<()> {
9529            encoder.debug_check_bounds::<MlmeSignalReportRequest>(offset);
9530            // Delegate to tuple encoding.
9531            fidl::encoding::Encode::<MlmeSignalReportRequest, D>::encode(
9532                (
9533                    <fidl_fuchsia_wlan_internal_common::SignalReportIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),
9534                ),
9535                encoder, offset, _depth
9536            )
9537        }
9538    }
9539    unsafe impl<
9540        D: fidl::encoding::ResourceDialect,
9541        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal_common::SignalReportIndication, D>,
9542    > fidl::encoding::Encode<MlmeSignalReportRequest, D> for (T0,)
9543    {
9544        #[inline]
9545        unsafe fn encode(
9546            self,
9547            encoder: &mut fidl::encoding::Encoder<'_, D>,
9548            offset: usize,
9549            depth: fidl::encoding::Depth,
9550        ) -> fidl::Result<()> {
9551            encoder.debug_check_bounds::<MlmeSignalReportRequest>(offset);
9552            // Zero out padding regions. There's no need to apply masks
9553            // because the unmasked parts will be overwritten by fields.
9554            // Write the fields.
9555            self.0.encode(encoder, offset + 0, depth)?;
9556            Ok(())
9557        }
9558    }
9559
9560    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9561        for MlmeSignalReportRequest
9562    {
9563        #[inline(always)]
9564        fn new_empty() -> Self {
9565            Self {
9566                ind: fidl::new_empty!(fidl_fuchsia_wlan_internal_common::SignalReportIndication, D),
9567            }
9568        }
9569
9570        #[inline]
9571        unsafe fn decode(
9572            &mut self,
9573            decoder: &mut fidl::encoding::Decoder<'_, D>,
9574            offset: usize,
9575            _depth: fidl::encoding::Depth,
9576        ) -> fidl::Result<()> {
9577            decoder.debug_check_bounds::<Self>(offset);
9578            // Verify that padding bytes are zero.
9579            fidl::decode!(
9580                fidl_fuchsia_wlan_internal_common::SignalReportIndication,
9581                D,
9582                &mut self.ind,
9583                decoder,
9584                offset + 0,
9585                _depth
9586            )?;
9587            Ok(())
9588        }
9589    }
9590
9591    impl fidl::encoding::ValueTypeMarker for MlmeStartCaptureFramesRequest {
9592        type Borrowed<'a> = &'a Self;
9593        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9594            value
9595        }
9596    }
9597
9598    unsafe impl fidl::encoding::TypeMarker for MlmeStartCaptureFramesRequest {
9599        type Owned = Self;
9600
9601        #[inline(always)]
9602        fn inline_align(_context: fidl::encoding::Context) -> usize {
9603            4
9604        }
9605
9606        #[inline(always)]
9607        fn inline_size(_context: fidl::encoding::Context) -> usize {
9608            4
9609        }
9610    }
9611
9612    unsafe impl<D: fidl::encoding::ResourceDialect>
9613        fidl::encoding::Encode<MlmeStartCaptureFramesRequest, D>
9614        for &MlmeStartCaptureFramesRequest
9615    {
9616        #[inline]
9617        unsafe fn encode(
9618            self,
9619            encoder: &mut fidl::encoding::Encoder<'_, D>,
9620            offset: usize,
9621            _depth: fidl::encoding::Depth,
9622        ) -> fidl::Result<()> {
9623            encoder.debug_check_bounds::<MlmeStartCaptureFramesRequest>(offset);
9624            // Delegate to tuple encoding.
9625            fidl::encoding::Encode::<MlmeStartCaptureFramesRequest, D>::encode(
9626                (<StartCaptureFramesRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9627                encoder,
9628                offset,
9629                _depth,
9630            )
9631        }
9632    }
9633    unsafe impl<
9634        D: fidl::encoding::ResourceDialect,
9635        T0: fidl::encoding::Encode<StartCaptureFramesRequest, D>,
9636    > fidl::encoding::Encode<MlmeStartCaptureFramesRequest, D> for (T0,)
9637    {
9638        #[inline]
9639        unsafe fn encode(
9640            self,
9641            encoder: &mut fidl::encoding::Encoder<'_, D>,
9642            offset: usize,
9643            depth: fidl::encoding::Depth,
9644        ) -> fidl::Result<()> {
9645            encoder.debug_check_bounds::<MlmeStartCaptureFramesRequest>(offset);
9646            // Zero out padding regions. There's no need to apply masks
9647            // because the unmasked parts will be overwritten by fields.
9648            // Write the fields.
9649            self.0.encode(encoder, offset + 0, depth)?;
9650            Ok(())
9651        }
9652    }
9653
9654    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9655        for MlmeStartCaptureFramesRequest
9656    {
9657        #[inline(always)]
9658        fn new_empty() -> Self {
9659            Self { req: fidl::new_empty!(StartCaptureFramesRequest, D) }
9660        }
9661
9662        #[inline]
9663        unsafe fn decode(
9664            &mut self,
9665            decoder: &mut fidl::encoding::Decoder<'_, D>,
9666            offset: usize,
9667            _depth: fidl::encoding::Depth,
9668        ) -> fidl::Result<()> {
9669            decoder.debug_check_bounds::<Self>(offset);
9670            // Verify that padding bytes are zero.
9671            fidl::decode!(
9672                StartCaptureFramesRequest,
9673                D,
9674                &mut self.req,
9675                decoder,
9676                offset + 0,
9677                _depth
9678            )?;
9679            Ok(())
9680        }
9681    }
9682
9683    impl fidl::encoding::ValueTypeMarker for MlmeStartCaptureFramesResponse {
9684        type Borrowed<'a> = &'a Self;
9685        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9686            value
9687        }
9688    }
9689
9690    unsafe impl fidl::encoding::TypeMarker for MlmeStartCaptureFramesResponse {
9691        type Owned = Self;
9692
9693        #[inline(always)]
9694        fn inline_align(_context: fidl::encoding::Context) -> usize {
9695            4
9696        }
9697
9698        #[inline(always)]
9699        fn inline_size(_context: fidl::encoding::Context) -> usize {
9700            8
9701        }
9702    }
9703
9704    unsafe impl<D: fidl::encoding::ResourceDialect>
9705        fidl::encoding::Encode<MlmeStartCaptureFramesResponse, D>
9706        for &MlmeStartCaptureFramesResponse
9707    {
9708        #[inline]
9709        unsafe fn encode(
9710            self,
9711            encoder: &mut fidl::encoding::Encoder<'_, D>,
9712            offset: usize,
9713            _depth: fidl::encoding::Depth,
9714        ) -> fidl::Result<()> {
9715            encoder.debug_check_bounds::<MlmeStartCaptureFramesResponse>(offset);
9716            // Delegate to tuple encoding.
9717            fidl::encoding::Encode::<MlmeStartCaptureFramesResponse, D>::encode(
9718                (<StartCaptureFramesResponse as fidl::encoding::ValueTypeMarker>::borrow(
9719                    &self.resp,
9720                ),),
9721                encoder,
9722                offset,
9723                _depth,
9724            )
9725        }
9726    }
9727    unsafe impl<
9728        D: fidl::encoding::ResourceDialect,
9729        T0: fidl::encoding::Encode<StartCaptureFramesResponse, D>,
9730    > fidl::encoding::Encode<MlmeStartCaptureFramesResponse, D> for (T0,)
9731    {
9732        #[inline]
9733        unsafe fn encode(
9734            self,
9735            encoder: &mut fidl::encoding::Encoder<'_, D>,
9736            offset: usize,
9737            depth: fidl::encoding::Depth,
9738        ) -> fidl::Result<()> {
9739            encoder.debug_check_bounds::<MlmeStartCaptureFramesResponse>(offset);
9740            // Zero out padding regions. There's no need to apply masks
9741            // because the unmasked parts will be overwritten by fields.
9742            // Write the fields.
9743            self.0.encode(encoder, offset + 0, depth)?;
9744            Ok(())
9745        }
9746    }
9747
9748    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9749        for MlmeStartCaptureFramesResponse
9750    {
9751        #[inline(always)]
9752        fn new_empty() -> Self {
9753            Self { resp: fidl::new_empty!(StartCaptureFramesResponse, D) }
9754        }
9755
9756        #[inline]
9757        unsafe fn decode(
9758            &mut self,
9759            decoder: &mut fidl::encoding::Decoder<'_, D>,
9760            offset: usize,
9761            _depth: fidl::encoding::Depth,
9762        ) -> fidl::Result<()> {
9763            decoder.debug_check_bounds::<Self>(offset);
9764            // Verify that padding bytes are zero.
9765            fidl::decode!(
9766                StartCaptureFramesResponse,
9767                D,
9768                &mut self.resp,
9769                decoder,
9770                offset + 0,
9771                _depth
9772            )?;
9773            Ok(())
9774        }
9775    }
9776
9777    impl fidl::encoding::ValueTypeMarker for MlmeStartConfRequest {
9778        type Borrowed<'a> = &'a Self;
9779        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9780            value
9781        }
9782    }
9783
9784    unsafe impl fidl::encoding::TypeMarker for MlmeStartConfRequest {
9785        type Owned = Self;
9786
9787        #[inline(always)]
9788        fn inline_align(_context: fidl::encoding::Context) -> usize {
9789            4
9790        }
9791
9792        #[inline(always)]
9793        fn inline_size(_context: fidl::encoding::Context) -> usize {
9794            4
9795        }
9796    }
9797
9798    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartConfRequest, D>
9799        for &MlmeStartConfRequest
9800    {
9801        #[inline]
9802        unsafe fn encode(
9803            self,
9804            encoder: &mut fidl::encoding::Encoder<'_, D>,
9805            offset: usize,
9806            _depth: fidl::encoding::Depth,
9807        ) -> fidl::Result<()> {
9808            encoder.debug_check_bounds::<MlmeStartConfRequest>(offset);
9809            // Delegate to tuple encoding.
9810            fidl::encoding::Encode::<MlmeStartConfRequest, D>::encode(
9811                (<StartConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
9812                encoder,
9813                offset,
9814                _depth,
9815            )
9816        }
9817    }
9818    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartConfirm, D>>
9819        fidl::encoding::Encode<MlmeStartConfRequest, D> for (T0,)
9820    {
9821        #[inline]
9822        unsafe fn encode(
9823            self,
9824            encoder: &mut fidl::encoding::Encoder<'_, D>,
9825            offset: usize,
9826            depth: fidl::encoding::Depth,
9827        ) -> fidl::Result<()> {
9828            encoder.debug_check_bounds::<MlmeStartConfRequest>(offset);
9829            // Zero out padding regions. There's no need to apply masks
9830            // because the unmasked parts will be overwritten by fields.
9831            // Write the fields.
9832            self.0.encode(encoder, offset + 0, depth)?;
9833            Ok(())
9834        }
9835    }
9836
9837    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartConfRequest {
9838        #[inline(always)]
9839        fn new_empty() -> Self {
9840            Self { resp: fidl::new_empty!(StartConfirm, D) }
9841        }
9842
9843        #[inline]
9844        unsafe fn decode(
9845            &mut self,
9846            decoder: &mut fidl::encoding::Decoder<'_, D>,
9847            offset: usize,
9848            _depth: fidl::encoding::Depth,
9849        ) -> fidl::Result<()> {
9850            decoder.debug_check_bounds::<Self>(offset);
9851            // Verify that padding bytes are zero.
9852            fidl::decode!(StartConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
9853            Ok(())
9854        }
9855    }
9856
9857    impl fidl::encoding::ValueTypeMarker for MlmeStartReqRequest {
9858        type Borrowed<'a> = &'a Self;
9859        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9860            value
9861        }
9862    }
9863
9864    unsafe impl fidl::encoding::TypeMarker for MlmeStartReqRequest {
9865        type Owned = Self;
9866
9867        #[inline(always)]
9868        fn inline_align(_context: fidl::encoding::Context) -> usize {
9869            8
9870        }
9871
9872        #[inline(always)]
9873        fn inline_size(_context: fidl::encoding::Context) -> usize {
9874            96
9875        }
9876    }
9877
9878    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartReqRequest, D>
9879        for &MlmeStartReqRequest
9880    {
9881        #[inline]
9882        unsafe fn encode(
9883            self,
9884            encoder: &mut fidl::encoding::Encoder<'_, D>,
9885            offset: usize,
9886            _depth: fidl::encoding::Depth,
9887        ) -> fidl::Result<()> {
9888            encoder.debug_check_bounds::<MlmeStartReqRequest>(offset);
9889            // Delegate to tuple encoding.
9890            fidl::encoding::Encode::<MlmeStartReqRequest, D>::encode(
9891                (<StartRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9892                encoder,
9893                offset,
9894                _depth,
9895            )
9896        }
9897    }
9898    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartRequest, D>>
9899        fidl::encoding::Encode<MlmeStartReqRequest, D> for (T0,)
9900    {
9901        #[inline]
9902        unsafe fn encode(
9903            self,
9904            encoder: &mut fidl::encoding::Encoder<'_, D>,
9905            offset: usize,
9906            depth: fidl::encoding::Depth,
9907        ) -> fidl::Result<()> {
9908            encoder.debug_check_bounds::<MlmeStartReqRequest>(offset);
9909            // Zero out padding regions. There's no need to apply masks
9910            // because the unmasked parts will be overwritten by fields.
9911            // Write the fields.
9912            self.0.encode(encoder, offset + 0, depth)?;
9913            Ok(())
9914        }
9915    }
9916
9917    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartReqRequest {
9918        #[inline(always)]
9919        fn new_empty() -> Self {
9920            Self { req: fidl::new_empty!(StartRequest, D) }
9921        }
9922
9923        #[inline]
9924        unsafe fn decode(
9925            &mut self,
9926            decoder: &mut fidl::encoding::Decoder<'_, D>,
9927            offset: usize,
9928            _depth: fidl::encoding::Depth,
9929        ) -> fidl::Result<()> {
9930            decoder.debug_check_bounds::<Self>(offset);
9931            // Verify that padding bytes are zero.
9932            fidl::decode!(StartRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9933            Ok(())
9934        }
9935    }
9936
9937    impl fidl::encoding::ValueTypeMarker for MlmeStartRssiMonitorRequest {
9938        type Borrowed<'a> = &'a Self;
9939        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9940            value
9941        }
9942    }
9943
9944    unsafe impl fidl::encoding::TypeMarker for MlmeStartRssiMonitorRequest {
9945        type Owned = Self;
9946
9947        #[inline(always)]
9948        fn inline_align(_context: fidl::encoding::Context) -> usize {
9949            1
9950        }
9951
9952        #[inline(always)]
9953        fn inline_size(_context: fidl::encoding::Context) -> usize {
9954            2
9955        }
9956        #[inline(always)]
9957        fn encode_is_copy() -> bool {
9958            true
9959        }
9960
9961        #[inline(always)]
9962        fn decode_is_copy() -> bool {
9963            true
9964        }
9965    }
9966
9967    unsafe impl<D: fidl::encoding::ResourceDialect>
9968        fidl::encoding::Encode<MlmeStartRssiMonitorRequest, D> for &MlmeStartRssiMonitorRequest
9969    {
9970        #[inline]
9971        unsafe fn encode(
9972            self,
9973            encoder: &mut fidl::encoding::Encoder<'_, D>,
9974            offset: usize,
9975            _depth: fidl::encoding::Depth,
9976        ) -> fidl::Result<()> {
9977            encoder.debug_check_bounds::<MlmeStartRssiMonitorRequest>(offset);
9978            unsafe {
9979                // Copy the object into the buffer.
9980                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
9981                (buf_ptr as *mut MlmeStartRssiMonitorRequest)
9982                    .write_unaligned((self as *const MlmeStartRssiMonitorRequest).read());
9983                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
9984                // done second because the memcpy will write garbage to these bytes.
9985            }
9986            Ok(())
9987        }
9988    }
9989    unsafe impl<
9990        D: fidl::encoding::ResourceDialect,
9991        T0: fidl::encoding::Encode<i8, D>,
9992        T1: fidl::encoding::Encode<i8, D>,
9993    > fidl::encoding::Encode<MlmeStartRssiMonitorRequest, D> for (T0, T1)
9994    {
9995        #[inline]
9996        unsafe fn encode(
9997            self,
9998            encoder: &mut fidl::encoding::Encoder<'_, D>,
9999            offset: usize,
10000            depth: fidl::encoding::Depth,
10001        ) -> fidl::Result<()> {
10002            encoder.debug_check_bounds::<MlmeStartRssiMonitorRequest>(offset);
10003            // Zero out padding regions. There's no need to apply masks
10004            // because the unmasked parts will be overwritten by fields.
10005            // Write the fields.
10006            self.0.encode(encoder, offset + 0, depth)?;
10007            self.1.encode(encoder, offset + 1, depth)?;
10008            Ok(())
10009        }
10010    }
10011
10012    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10013        for MlmeStartRssiMonitorRequest
10014    {
10015        #[inline(always)]
10016        fn new_empty() -> Self {
10017            Self { min_rssi_dbm: fidl::new_empty!(i8, D), max_rssi_dbm: fidl::new_empty!(i8, D) }
10018        }
10019
10020        #[inline]
10021        unsafe fn decode(
10022            &mut self,
10023            decoder: &mut fidl::encoding::Decoder<'_, D>,
10024            offset: usize,
10025            _depth: fidl::encoding::Depth,
10026        ) -> fidl::Result<()> {
10027            decoder.debug_check_bounds::<Self>(offset);
10028            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
10029            // Verify that padding bytes are zero.
10030            // Copy from the buffer into the object.
10031            unsafe {
10032                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
10033            }
10034            Ok(())
10035        }
10036    }
10037
10038    impl fidl::encoding::ValueTypeMarker for MlmeStartScanRequest {
10039        type Borrowed<'a> = &'a Self;
10040        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10041            value
10042        }
10043    }
10044
10045    unsafe impl fidl::encoding::TypeMarker for MlmeStartScanRequest {
10046        type Owned = Self;
10047
10048        #[inline(always)]
10049        fn inline_align(_context: fidl::encoding::Context) -> usize {
10050            8
10051        }
10052
10053        #[inline(always)]
10054        fn inline_size(_context: fidl::encoding::Context) -> usize {
10055            64
10056        }
10057    }
10058
10059    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartScanRequest, D>
10060        for &MlmeStartScanRequest
10061    {
10062        #[inline]
10063        unsafe fn encode(
10064            self,
10065            encoder: &mut fidl::encoding::Encoder<'_, D>,
10066            offset: usize,
10067            _depth: fidl::encoding::Depth,
10068        ) -> fidl::Result<()> {
10069            encoder.debug_check_bounds::<MlmeStartScanRequest>(offset);
10070            // Delegate to tuple encoding.
10071            fidl::encoding::Encode::<MlmeStartScanRequest, D>::encode(
10072                (<ScanRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
10073                encoder,
10074                offset,
10075                _depth,
10076            )
10077        }
10078    }
10079    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanRequest, D>>
10080        fidl::encoding::Encode<MlmeStartScanRequest, D> for (T0,)
10081    {
10082        #[inline]
10083        unsafe fn encode(
10084            self,
10085            encoder: &mut fidl::encoding::Encoder<'_, D>,
10086            offset: usize,
10087            depth: fidl::encoding::Depth,
10088        ) -> fidl::Result<()> {
10089            encoder.debug_check_bounds::<MlmeStartScanRequest>(offset);
10090            // Zero out padding regions. There's no need to apply masks
10091            // because the unmasked parts will be overwritten by fields.
10092            // Write the fields.
10093            self.0.encode(encoder, offset + 0, depth)?;
10094            Ok(())
10095        }
10096    }
10097
10098    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartScanRequest {
10099        #[inline(always)]
10100        fn new_empty() -> Self {
10101            Self { req: fidl::new_empty!(ScanRequest, D) }
10102        }
10103
10104        #[inline]
10105        unsafe fn decode(
10106            &mut self,
10107            decoder: &mut fidl::encoding::Decoder<'_, D>,
10108            offset: usize,
10109            _depth: fidl::encoding::Depth,
10110        ) -> fidl::Result<()> {
10111            decoder.debug_check_bounds::<Self>(offset);
10112            // Verify that padding bytes are zero.
10113            fidl::decode!(ScanRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
10114            Ok(())
10115        }
10116    }
10117
10118    impl fidl::encoding::ValueTypeMarker for MlmeStartScheduledScanRequest {
10119        type Borrowed<'a> = &'a Self;
10120        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10121            value
10122        }
10123    }
10124
10125    unsafe impl fidl::encoding::TypeMarker for MlmeStartScheduledScanRequest {
10126        type Owned = Self;
10127
10128        #[inline(always)]
10129        fn inline_align(_context: fidl::encoding::Context) -> usize {
10130            8
10131        }
10132
10133        #[inline(always)]
10134        fn inline_size(_context: fidl::encoding::Context) -> usize {
10135            24
10136        }
10137    }
10138
10139    unsafe impl<D: fidl::encoding::ResourceDialect>
10140        fidl::encoding::Encode<MlmeStartScheduledScanRequest, D>
10141        for &MlmeStartScheduledScanRequest
10142    {
10143        #[inline]
10144        unsafe fn encode(
10145            self,
10146            encoder: &mut fidl::encoding::Encoder<'_, D>,
10147            offset: usize,
10148            _depth: fidl::encoding::Depth,
10149        ) -> fidl::Result<()> {
10150            encoder.debug_check_bounds::<MlmeStartScheduledScanRequest>(offset);
10151            // Delegate to tuple encoding.
10152            fidl::encoding::Encode::<MlmeStartScheduledScanRequest, D>::encode(
10153                (
10154                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
10155                    <fidl_fuchsia_wlan_common_common::ScheduledScanRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),
10156                ),
10157                encoder, offset, _depth
10158            )
10159        }
10160    }
10161    unsafe impl<
10162        D: fidl::encoding::ResourceDialect,
10163        T0: fidl::encoding::Encode<u64, D>,
10164        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common_common::ScheduledScanRequest, D>,
10165    > fidl::encoding::Encode<MlmeStartScheduledScanRequest, D> for (T0, T1)
10166    {
10167        #[inline]
10168        unsafe fn encode(
10169            self,
10170            encoder: &mut fidl::encoding::Encoder<'_, D>,
10171            offset: usize,
10172            depth: fidl::encoding::Depth,
10173        ) -> fidl::Result<()> {
10174            encoder.debug_check_bounds::<MlmeStartScheduledScanRequest>(offset);
10175            // Zero out padding regions. There's no need to apply masks
10176            // because the unmasked parts will be overwritten by fields.
10177            // Write the fields.
10178            self.0.encode(encoder, offset + 0, depth)?;
10179            self.1.encode(encoder, offset + 8, depth)?;
10180            Ok(())
10181        }
10182    }
10183
10184    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10185        for MlmeStartScheduledScanRequest
10186    {
10187        #[inline(always)]
10188        fn new_empty() -> Self {
10189            Self {
10190                txn_id: fidl::new_empty!(u64, D),
10191                req: fidl::new_empty!(fidl_fuchsia_wlan_common_common::ScheduledScanRequest, D),
10192            }
10193        }
10194
10195        #[inline]
10196        unsafe fn decode(
10197            &mut self,
10198            decoder: &mut fidl::encoding::Decoder<'_, D>,
10199            offset: usize,
10200            _depth: fidl::encoding::Depth,
10201        ) -> fidl::Result<()> {
10202            decoder.debug_check_bounds::<Self>(offset);
10203            // Verify that padding bytes are zero.
10204            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
10205            fidl::decode!(
10206                fidl_fuchsia_wlan_common_common::ScheduledScanRequest,
10207                D,
10208                &mut self.req,
10209                decoder,
10210                offset + 8,
10211                _depth
10212            )?;
10213            Ok(())
10214        }
10215    }
10216
10217    impl fidl::encoding::ValueTypeMarker for MlmeStopConfRequest {
10218        type Borrowed<'a> = &'a Self;
10219        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10220            value
10221        }
10222    }
10223
10224    unsafe impl fidl::encoding::TypeMarker for MlmeStopConfRequest {
10225        type Owned = Self;
10226
10227        #[inline(always)]
10228        fn inline_align(_context: fidl::encoding::Context) -> usize {
10229            4
10230        }
10231
10232        #[inline(always)]
10233        fn inline_size(_context: fidl::encoding::Context) -> usize {
10234            4
10235        }
10236    }
10237
10238    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStopConfRequest, D>
10239        for &MlmeStopConfRequest
10240    {
10241        #[inline]
10242        unsafe fn encode(
10243            self,
10244            encoder: &mut fidl::encoding::Encoder<'_, D>,
10245            offset: usize,
10246            _depth: fidl::encoding::Depth,
10247        ) -> fidl::Result<()> {
10248            encoder.debug_check_bounds::<MlmeStopConfRequest>(offset);
10249            // Delegate to tuple encoding.
10250            fidl::encoding::Encode::<MlmeStopConfRequest, D>::encode(
10251                (<StopConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
10252                encoder,
10253                offset,
10254                _depth,
10255            )
10256        }
10257    }
10258    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopConfirm, D>>
10259        fidl::encoding::Encode<MlmeStopConfRequest, D> for (T0,)
10260    {
10261        #[inline]
10262        unsafe fn encode(
10263            self,
10264            encoder: &mut fidl::encoding::Encoder<'_, D>,
10265            offset: usize,
10266            depth: fidl::encoding::Depth,
10267        ) -> fidl::Result<()> {
10268            encoder.debug_check_bounds::<MlmeStopConfRequest>(offset);
10269            // Zero out padding regions. There's no need to apply masks
10270            // because the unmasked parts will be overwritten by fields.
10271            // Write the fields.
10272            self.0.encode(encoder, offset + 0, depth)?;
10273            Ok(())
10274        }
10275    }
10276
10277    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStopConfRequest {
10278        #[inline(always)]
10279        fn new_empty() -> Self {
10280            Self { resp: fidl::new_empty!(StopConfirm, D) }
10281        }
10282
10283        #[inline]
10284        unsafe fn decode(
10285            &mut self,
10286            decoder: &mut fidl::encoding::Decoder<'_, D>,
10287            offset: usize,
10288            _depth: fidl::encoding::Depth,
10289        ) -> fidl::Result<()> {
10290            decoder.debug_check_bounds::<Self>(offset);
10291            // Verify that padding bytes are zero.
10292            fidl::decode!(StopConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
10293            Ok(())
10294        }
10295    }
10296
10297    impl fidl::encoding::ValueTypeMarker for MlmeStopReqRequest {
10298        type Borrowed<'a> = &'a Self;
10299        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10300            value
10301        }
10302    }
10303
10304    unsafe impl fidl::encoding::TypeMarker for MlmeStopReqRequest {
10305        type Owned = Self;
10306
10307        #[inline(always)]
10308        fn inline_align(_context: fidl::encoding::Context) -> usize {
10309            8
10310        }
10311
10312        #[inline(always)]
10313        fn inline_size(_context: fidl::encoding::Context) -> usize {
10314            16
10315        }
10316    }
10317
10318    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStopReqRequest, D>
10319        for &MlmeStopReqRequest
10320    {
10321        #[inline]
10322        unsafe fn encode(
10323            self,
10324            encoder: &mut fidl::encoding::Encoder<'_, D>,
10325            offset: usize,
10326            _depth: fidl::encoding::Depth,
10327        ) -> fidl::Result<()> {
10328            encoder.debug_check_bounds::<MlmeStopReqRequest>(offset);
10329            // Delegate to tuple encoding.
10330            fidl::encoding::Encode::<MlmeStopReqRequest, D>::encode(
10331                (<StopRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
10332                encoder,
10333                offset,
10334                _depth,
10335            )
10336        }
10337    }
10338    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopRequest, D>>
10339        fidl::encoding::Encode<MlmeStopReqRequest, D> for (T0,)
10340    {
10341        #[inline]
10342        unsafe fn encode(
10343            self,
10344            encoder: &mut fidl::encoding::Encoder<'_, D>,
10345            offset: usize,
10346            depth: fidl::encoding::Depth,
10347        ) -> fidl::Result<()> {
10348            encoder.debug_check_bounds::<MlmeStopReqRequest>(offset);
10349            // Zero out padding regions. There's no need to apply masks
10350            // because the unmasked parts will be overwritten by fields.
10351            // Write the fields.
10352            self.0.encode(encoder, offset + 0, depth)?;
10353            Ok(())
10354        }
10355    }
10356
10357    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStopReqRequest {
10358        #[inline(always)]
10359        fn new_empty() -> Self {
10360            Self { req: fidl::new_empty!(StopRequest, D) }
10361        }
10362
10363        #[inline]
10364        unsafe fn decode(
10365            &mut self,
10366            decoder: &mut fidl::encoding::Decoder<'_, D>,
10367            offset: usize,
10368            _depth: fidl::encoding::Depth,
10369        ) -> fidl::Result<()> {
10370            decoder.debug_check_bounds::<Self>(offset);
10371            // Verify that padding bytes are zero.
10372            fidl::decode!(StopRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
10373            Ok(())
10374        }
10375    }
10376
10377    impl fidl::encoding::ValueTypeMarker for MlmeStopScheduledScanRequest {
10378        type Borrowed<'a> = &'a Self;
10379        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10380            value
10381        }
10382    }
10383
10384    unsafe impl fidl::encoding::TypeMarker for MlmeStopScheduledScanRequest {
10385        type Owned = Self;
10386
10387        #[inline(always)]
10388        fn inline_align(_context: fidl::encoding::Context) -> usize {
10389            8
10390        }
10391
10392        #[inline(always)]
10393        fn inline_size(_context: fidl::encoding::Context) -> usize {
10394            8
10395        }
10396        #[inline(always)]
10397        fn encode_is_copy() -> bool {
10398            true
10399        }
10400
10401        #[inline(always)]
10402        fn decode_is_copy() -> bool {
10403            true
10404        }
10405    }
10406
10407    unsafe impl<D: fidl::encoding::ResourceDialect>
10408        fidl::encoding::Encode<MlmeStopScheduledScanRequest, D> for &MlmeStopScheduledScanRequest
10409    {
10410        #[inline]
10411        unsafe fn encode(
10412            self,
10413            encoder: &mut fidl::encoding::Encoder<'_, D>,
10414            offset: usize,
10415            _depth: fidl::encoding::Depth,
10416        ) -> fidl::Result<()> {
10417            encoder.debug_check_bounds::<MlmeStopScheduledScanRequest>(offset);
10418            unsafe {
10419                // Copy the object into the buffer.
10420                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
10421                (buf_ptr as *mut MlmeStopScheduledScanRequest)
10422                    .write_unaligned((self as *const MlmeStopScheduledScanRequest).read());
10423                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
10424                // done second because the memcpy will write garbage to these bytes.
10425            }
10426            Ok(())
10427        }
10428    }
10429    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
10430        fidl::encoding::Encode<MlmeStopScheduledScanRequest, D> for (T0,)
10431    {
10432        #[inline]
10433        unsafe fn encode(
10434            self,
10435            encoder: &mut fidl::encoding::Encoder<'_, D>,
10436            offset: usize,
10437            depth: fidl::encoding::Depth,
10438        ) -> fidl::Result<()> {
10439            encoder.debug_check_bounds::<MlmeStopScheduledScanRequest>(offset);
10440            // Zero out padding regions. There's no need to apply masks
10441            // because the unmasked parts will be overwritten by fields.
10442            // Write the fields.
10443            self.0.encode(encoder, offset + 0, depth)?;
10444            Ok(())
10445        }
10446    }
10447
10448    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10449        for MlmeStopScheduledScanRequest
10450    {
10451        #[inline(always)]
10452        fn new_empty() -> Self {
10453            Self { txn_id: fidl::new_empty!(u64, D) }
10454        }
10455
10456        #[inline]
10457        unsafe fn decode(
10458            &mut self,
10459            decoder: &mut fidl::encoding::Decoder<'_, D>,
10460            offset: usize,
10461            _depth: fidl::encoding::Depth,
10462        ) -> fidl::Result<()> {
10463            decoder.debug_check_bounds::<Self>(offset);
10464            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
10465            // Verify that padding bytes are zero.
10466            // Copy from the buffer into the object.
10467            unsafe {
10468                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
10469            }
10470            Ok(())
10471        }
10472    }
10473
10474    impl fidl::encoding::ValueTypeMarker for NegotiatedCapabilities {
10475        type Borrowed<'a> = &'a Self;
10476        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10477            value
10478        }
10479    }
10480
10481    unsafe impl fidl::encoding::TypeMarker for NegotiatedCapabilities {
10482        type Owned = Self;
10483
10484        #[inline(always)]
10485        fn inline_align(_context: fidl::encoding::Context) -> usize {
10486            8
10487        }
10488
10489        #[inline(always)]
10490        fn inline_size(_context: fidl::encoding::Context) -> usize {
10491            48
10492        }
10493    }
10494
10495    unsafe impl<D: fidl::encoding::ResourceDialect>
10496        fidl::encoding::Encode<NegotiatedCapabilities, D> for &NegotiatedCapabilities
10497    {
10498        #[inline]
10499        unsafe fn encode(
10500            self,
10501            encoder: &mut fidl::encoding::Encoder<'_, D>,
10502            offset: usize,
10503            _depth: fidl::encoding::Depth,
10504        ) -> fidl::Result<()> {
10505            encoder.debug_check_bounds::<NegotiatedCapabilities>(offset);
10506            // Delegate to tuple encoding.
10507            fidl::encoding::Encode::<NegotiatedCapabilities, D>::encode(
10508                (
10509                    <fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::ValueTypeMarker>::borrow(&self.primary),
10510                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
10511                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
10512                    <fidl::encoding::Boxed<WmmParameter> as fidl::encoding::ValueTypeMarker>::borrow(&self.wmm_param),
10513                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.ht_cap),
10514                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_cap),
10515                ),
10516                encoder, offset, _depth
10517            )
10518        }
10519    }
10520    unsafe impl<
10521        D: fidl::encoding::ResourceDialect,
10522        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D>,
10523        T1: fidl::encoding::Encode<u16, D>,
10524        T2: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
10525        T3: fidl::encoding::Encode<fidl::encoding::Boxed<WmmParameter>, D>,
10526        T4: fidl::encoding::Encode<
10527                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
10528                D,
10529            >,
10530        T5: fidl::encoding::Encode<
10531                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
10532                D,
10533            >,
10534    > fidl::encoding::Encode<NegotiatedCapabilities, D> for (T0, T1, T2, T3, T4, T5)
10535    {
10536        #[inline]
10537        unsafe fn encode(
10538            self,
10539            encoder: &mut fidl::encoding::Encoder<'_, D>,
10540            offset: usize,
10541            depth: fidl::encoding::Depth,
10542        ) -> fidl::Result<()> {
10543            encoder.debug_check_bounds::<NegotiatedCapabilities>(offset);
10544            // Zero out padding regions. There's no need to apply masks
10545            // because the unmasked parts will be overwritten by fields.
10546            unsafe {
10547                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
10548                (ptr as *mut u64).write_unaligned(0);
10549            }
10550            // Write the fields.
10551            self.0.encode(encoder, offset + 0, depth)?;
10552            self.1.encode(encoder, offset + 2, depth)?;
10553            self.2.encode(encoder, offset + 8, depth)?;
10554            self.3.encode(encoder, offset + 24, depth)?;
10555            self.4.encode(encoder, offset + 32, depth)?;
10556            self.5.encode(encoder, offset + 40, depth)?;
10557            Ok(())
10558        }
10559    }
10560
10561    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10562        for NegotiatedCapabilities
10563    {
10564        #[inline(always)]
10565        fn new_empty() -> Self {
10566            Self {
10567                primary: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D),
10568                capability_info: fidl::new_empty!(u16, D),
10569                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
10570                wmm_param: fidl::new_empty!(fidl::encoding::Boxed<WmmParameter>, D),
10571                ht_cap: fidl::new_empty!(
10572                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
10573                    D
10574                ),
10575                vht_cap: fidl::new_empty!(
10576                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
10577                    D
10578                ),
10579            }
10580        }
10581
10582        #[inline]
10583        unsafe fn decode(
10584            &mut self,
10585            decoder: &mut fidl::encoding::Decoder<'_, D>,
10586            offset: usize,
10587            _depth: fidl::encoding::Depth,
10588        ) -> fidl::Result<()> {
10589            decoder.debug_check_bounds::<Self>(offset);
10590            // Verify that padding bytes are zero.
10591            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
10592            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10593            let mask = 0xffffffff00000000u64;
10594            let maskedval = padval & mask;
10595            if maskedval != 0 {
10596                return Err(fidl::Error::NonZeroPadding {
10597                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
10598                });
10599            }
10600            fidl::decode!(
10601                fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
10602                D,
10603                &mut self.primary,
10604                decoder,
10605                offset + 0,
10606                _depth
10607            )?;
10608            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 2, _depth)?;
10609            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 8, _depth)?;
10610            fidl::decode!(
10611                fidl::encoding::Boxed<WmmParameter>,
10612                D,
10613                &mut self.wmm_param,
10614                decoder,
10615                offset + 24,
10616                _depth
10617            )?;
10618            fidl::decode!(
10619                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::HtCapabilities>,
10620                D,
10621                &mut self.ht_cap,
10622                decoder,
10623                offset + 32,
10624                _depth
10625            )?;
10626            fidl::decode!(
10627                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211_common::VhtCapabilities>,
10628                D,
10629                &mut self.vht_cap,
10630                decoder,
10631                offset + 40,
10632                _depth
10633            )?;
10634            Ok(())
10635        }
10636    }
10637
10638    impl fidl::encoding::ValueTypeMarker for PmkInfo {
10639        type Borrowed<'a> = &'a Self;
10640        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10641            value
10642        }
10643    }
10644
10645    unsafe impl fidl::encoding::TypeMarker for PmkInfo {
10646        type Owned = Self;
10647
10648        #[inline(always)]
10649        fn inline_align(_context: fidl::encoding::Context) -> usize {
10650            8
10651        }
10652
10653        #[inline(always)]
10654        fn inline_size(_context: fidl::encoding::Context) -> usize {
10655            32
10656        }
10657    }
10658
10659    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PmkInfo, D> for &PmkInfo {
10660        #[inline]
10661        unsafe fn encode(
10662            self,
10663            encoder: &mut fidl::encoding::Encoder<'_, D>,
10664            offset: usize,
10665            _depth: fidl::encoding::Depth,
10666        ) -> fidl::Result<()> {
10667            encoder.debug_check_bounds::<PmkInfo>(offset);
10668            // Delegate to tuple encoding.
10669            fidl::encoding::Encode::<PmkInfo, D>::encode(
10670                (
10671                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.pmk),
10672                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.pmkid),
10673                ),
10674                encoder, offset, _depth
10675            )
10676        }
10677    }
10678    unsafe impl<
10679        D: fidl::encoding::ResourceDialect,
10680        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10681        T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10682    > fidl::encoding::Encode<PmkInfo, D> for (T0, T1)
10683    {
10684        #[inline]
10685        unsafe fn encode(
10686            self,
10687            encoder: &mut fidl::encoding::Encoder<'_, D>,
10688            offset: usize,
10689            depth: fidl::encoding::Depth,
10690        ) -> fidl::Result<()> {
10691            encoder.debug_check_bounds::<PmkInfo>(offset);
10692            // Zero out padding regions. There's no need to apply masks
10693            // because the unmasked parts will be overwritten by fields.
10694            // Write the fields.
10695            self.0.encode(encoder, offset + 0, depth)?;
10696            self.1.encode(encoder, offset + 16, depth)?;
10697            Ok(())
10698        }
10699    }
10700
10701    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PmkInfo {
10702        #[inline(always)]
10703        fn new_empty() -> Self {
10704            Self {
10705                pmk: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10706                pmkid: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10707            }
10708        }
10709
10710        #[inline]
10711        unsafe fn decode(
10712            &mut self,
10713            decoder: &mut fidl::encoding::Decoder<'_, D>,
10714            offset: usize,
10715            _depth: fidl::encoding::Depth,
10716        ) -> fidl::Result<()> {
10717            decoder.debug_check_bounds::<Self>(offset);
10718            // Verify that padding bytes are zero.
10719            fidl::decode!(
10720                fidl::encoding::UnboundedVector<u8>,
10721                D,
10722                &mut self.pmk,
10723                decoder,
10724                offset + 0,
10725                _depth
10726            )?;
10727            fidl::decode!(
10728                fidl::encoding::UnboundedVector<u8>,
10729                D,
10730                &mut self.pmkid,
10731                decoder,
10732                offset + 16,
10733                _depth
10734            )?;
10735            Ok(())
10736        }
10737    }
10738
10739    impl fidl::encoding::ValueTypeMarker for ReconnectRequest {
10740        type Borrowed<'a> = &'a Self;
10741        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10742            value
10743        }
10744    }
10745
10746    unsafe impl fidl::encoding::TypeMarker for ReconnectRequest {
10747        type Owned = Self;
10748
10749        #[inline(always)]
10750        fn inline_align(_context: fidl::encoding::Context) -> usize {
10751            1
10752        }
10753
10754        #[inline(always)]
10755        fn inline_size(_context: fidl::encoding::Context) -> usize {
10756            6
10757        }
10758        #[inline(always)]
10759        fn encode_is_copy() -> bool {
10760            true
10761        }
10762
10763        #[inline(always)]
10764        fn decode_is_copy() -> bool {
10765            true
10766        }
10767    }
10768
10769    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ReconnectRequest, D>
10770        for &ReconnectRequest
10771    {
10772        #[inline]
10773        unsafe fn encode(
10774            self,
10775            encoder: &mut fidl::encoding::Encoder<'_, D>,
10776            offset: usize,
10777            _depth: fidl::encoding::Depth,
10778        ) -> fidl::Result<()> {
10779            encoder.debug_check_bounds::<ReconnectRequest>(offset);
10780            unsafe {
10781                // Copy the object into the buffer.
10782                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
10783                (buf_ptr as *mut ReconnectRequest)
10784                    .write_unaligned((self as *const ReconnectRequest).read());
10785                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
10786                // done second because the memcpy will write garbage to these bytes.
10787            }
10788            Ok(())
10789        }
10790    }
10791    unsafe impl<
10792        D: fidl::encoding::ResourceDialect,
10793        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10794    > fidl::encoding::Encode<ReconnectRequest, D> for (T0,)
10795    {
10796        #[inline]
10797        unsafe fn encode(
10798            self,
10799            encoder: &mut fidl::encoding::Encoder<'_, D>,
10800            offset: usize,
10801            depth: fidl::encoding::Depth,
10802        ) -> fidl::Result<()> {
10803            encoder.debug_check_bounds::<ReconnectRequest>(offset);
10804            // Zero out padding regions. There's no need to apply masks
10805            // because the unmasked parts will be overwritten by fields.
10806            // Write the fields.
10807            self.0.encode(encoder, offset + 0, depth)?;
10808            Ok(())
10809        }
10810    }
10811
10812    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ReconnectRequest {
10813        #[inline(always)]
10814        fn new_empty() -> Self {
10815            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
10816        }
10817
10818        #[inline]
10819        unsafe fn decode(
10820            &mut self,
10821            decoder: &mut fidl::encoding::Decoder<'_, D>,
10822            offset: usize,
10823            _depth: fidl::encoding::Depth,
10824        ) -> fidl::Result<()> {
10825            decoder.debug_check_bounds::<Self>(offset);
10826            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
10827            // Verify that padding bytes are zero.
10828            // Copy from the buffer into the object.
10829            unsafe {
10830                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
10831            }
10832            Ok(())
10833        }
10834    }
10835
10836    impl fidl::encoding::ValueTypeMarker for ResetRequest {
10837        type Borrowed<'a> = &'a Self;
10838        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10839            value
10840        }
10841    }
10842
10843    unsafe impl fidl::encoding::TypeMarker for ResetRequest {
10844        type Owned = Self;
10845
10846        #[inline(always)]
10847        fn inline_align(_context: fidl::encoding::Context) -> usize {
10848            1
10849        }
10850
10851        #[inline(always)]
10852        fn inline_size(_context: fidl::encoding::Context) -> usize {
10853            7
10854        }
10855    }
10856
10857    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResetRequest, D>
10858        for &ResetRequest
10859    {
10860        #[inline]
10861        unsafe fn encode(
10862            self,
10863            encoder: &mut fidl::encoding::Encoder<'_, D>,
10864            offset: usize,
10865            _depth: fidl::encoding::Depth,
10866        ) -> fidl::Result<()> {
10867            encoder.debug_check_bounds::<ResetRequest>(offset);
10868            // Delegate to tuple encoding.
10869            fidl::encoding::Encode::<ResetRequest, D>::encode(
10870                (
10871                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
10872                        &self.sta_address,
10873                    ),
10874                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.set_default_mib),
10875                ),
10876                encoder,
10877                offset,
10878                _depth,
10879            )
10880        }
10881    }
10882    unsafe impl<
10883        D: fidl::encoding::ResourceDialect,
10884        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10885        T1: fidl::encoding::Encode<bool, D>,
10886    > fidl::encoding::Encode<ResetRequest, D> for (T0, T1)
10887    {
10888        #[inline]
10889        unsafe fn encode(
10890            self,
10891            encoder: &mut fidl::encoding::Encoder<'_, D>,
10892            offset: usize,
10893            depth: fidl::encoding::Depth,
10894        ) -> fidl::Result<()> {
10895            encoder.debug_check_bounds::<ResetRequest>(offset);
10896            // Zero out padding regions. There's no need to apply masks
10897            // because the unmasked parts will be overwritten by fields.
10898            // Write the fields.
10899            self.0.encode(encoder, offset + 0, depth)?;
10900            self.1.encode(encoder, offset + 6, depth)?;
10901            Ok(())
10902        }
10903    }
10904
10905    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResetRequest {
10906        #[inline(always)]
10907        fn new_empty() -> Self {
10908            Self {
10909                sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10910                set_default_mib: fidl::new_empty!(bool, D),
10911            }
10912        }
10913
10914        #[inline]
10915        unsafe fn decode(
10916            &mut self,
10917            decoder: &mut fidl::encoding::Decoder<'_, D>,
10918            offset: usize,
10919            _depth: fidl::encoding::Depth,
10920        ) -> fidl::Result<()> {
10921            decoder.debug_check_bounds::<Self>(offset);
10922            // Verify that padding bytes are zero.
10923            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.sta_address, decoder, offset + 0, _depth)?;
10924            fidl::decode!(bool, D, &mut self.set_default_mib, decoder, offset + 6, _depth)?;
10925            Ok(())
10926        }
10927    }
10928
10929    impl fidl::encoding::ValueTypeMarker for RoamConfirm {
10930        type Borrowed<'a> = &'a Self;
10931        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10932            value
10933        }
10934    }
10935
10936    unsafe impl fidl::encoding::TypeMarker for RoamConfirm {
10937        type Owned = Self;
10938
10939        #[inline(always)]
10940        fn inline_align(_context: fidl::encoding::Context) -> usize {
10941            8
10942        }
10943
10944        #[inline(always)]
10945        fn inline_size(_context: fidl::encoding::Context) -> usize {
10946            32
10947        }
10948    }
10949
10950    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamConfirm, D>
10951        for &RoamConfirm
10952    {
10953        #[inline]
10954        unsafe fn encode(
10955            self,
10956            encoder: &mut fidl::encoding::Encoder<'_, D>,
10957            offset: usize,
10958            _depth: fidl::encoding::Depth,
10959        ) -> fidl::Result<()> {
10960            encoder.debug_check_bounds::<RoamConfirm>(offset);
10961            // Delegate to tuple encoding.
10962            fidl::encoding::Encode::<RoamConfirm, D>::encode(
10963                (
10964                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
10965                    <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10966                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
10967                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.target_bss_authenticated),
10968                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
10969                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
10970                ),
10971                encoder, offset, _depth
10972            )
10973        }
10974    }
10975    unsafe impl<
10976        D: fidl::encoding::ResourceDialect,
10977        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10978        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>,
10979        T2: fidl::encoding::Encode<bool, D>,
10980        T3: fidl::encoding::Encode<bool, D>,
10981        T4: fidl::encoding::Encode<u16, D>,
10982        T5: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10983    > fidl::encoding::Encode<RoamConfirm, D> for (T0, T1, T2, T3, T4, T5)
10984    {
10985        #[inline]
10986        unsafe fn encode(
10987            self,
10988            encoder: &mut fidl::encoding::Encoder<'_, D>,
10989            offset: usize,
10990            depth: fidl::encoding::Depth,
10991        ) -> fidl::Result<()> {
10992            encoder.debug_check_bounds::<RoamConfirm>(offset);
10993            // Zero out padding regions. There's no need to apply masks
10994            // because the unmasked parts will be overwritten by fields.
10995            unsafe {
10996                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10997                (ptr as *mut u64).write_unaligned(0);
10998            }
10999            // Write the fields.
11000            self.0.encode(encoder, offset + 0, depth)?;
11001            self.1.encode(encoder, offset + 6, depth)?;
11002            self.2.encode(encoder, offset + 8, depth)?;
11003            self.3.encode(encoder, offset + 9, depth)?;
11004            self.4.encode(encoder, offset + 10, depth)?;
11005            self.5.encode(encoder, offset + 16, depth)?;
11006            Ok(())
11007        }
11008    }
11009
11010    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamConfirm {
11011        #[inline(always)]
11012        fn new_empty() -> Self {
11013            Self {
11014                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11015                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D),
11016                original_association_maintained: fidl::new_empty!(bool, D),
11017                target_bss_authenticated: fidl::new_empty!(bool, D),
11018                association_id: fidl::new_empty!(u16, D),
11019                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
11020            }
11021        }
11022
11023        #[inline]
11024        unsafe fn decode(
11025            &mut self,
11026            decoder: &mut fidl::encoding::Decoder<'_, D>,
11027            offset: usize,
11028            _depth: fidl::encoding::Depth,
11029        ) -> fidl::Result<()> {
11030            decoder.debug_check_bounds::<Self>(offset);
11031            // Verify that padding bytes are zero.
11032            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
11033            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11034            let mask = 0xffffffff00000000u64;
11035            let maskedval = padval & mask;
11036            if maskedval != 0 {
11037                return Err(fidl::Error::NonZeroPadding {
11038                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
11039                });
11040            }
11041            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
11042            fidl::decode!(
11043                fidl_fuchsia_wlan_ieee80211_common::StatusCode,
11044                D,
11045                &mut self.status_code,
11046                decoder,
11047                offset + 6,
11048                _depth
11049            )?;
11050            fidl::decode!(
11051                bool,
11052                D,
11053                &mut self.original_association_maintained,
11054                decoder,
11055                offset + 8,
11056                _depth
11057            )?;
11058            fidl::decode!(
11059                bool,
11060                D,
11061                &mut self.target_bss_authenticated,
11062                decoder,
11063                offset + 9,
11064                _depth
11065            )?;
11066            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 10, _depth)?;
11067            fidl::decode!(
11068                fidl::encoding::UnboundedVector<u8>,
11069                D,
11070                &mut self.association_ies,
11071                decoder,
11072                offset + 16,
11073                _depth
11074            )?;
11075            Ok(())
11076        }
11077    }
11078
11079    impl fidl::encoding::ValueTypeMarker for RoamRequest {
11080        type Borrowed<'a> = &'a Self;
11081        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11082            value
11083        }
11084    }
11085
11086    unsafe impl fidl::encoding::TypeMarker for RoamRequest {
11087        type Owned = Self;
11088
11089        #[inline(always)]
11090        fn inline_align(_context: fidl::encoding::Context) -> usize {
11091            8
11092        }
11093
11094        #[inline(always)]
11095        fn inline_size(_context: fidl::encoding::Context) -> usize {
11096            48
11097        }
11098    }
11099
11100    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamRequest, D>
11101        for &RoamRequest
11102    {
11103        #[inline]
11104        unsafe fn encode(
11105            self,
11106            encoder: &mut fidl::encoding::Encoder<'_, D>,
11107            offset: usize,
11108            _depth: fidl::encoding::Depth,
11109        ) -> fidl::Result<()> {
11110            encoder.debug_check_bounds::<RoamRequest>(offset);
11111            // Delegate to tuple encoding.
11112            fidl::encoding::Encode::<RoamRequest, D>::encode(
11113                (
11114                    <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
11115                ),
11116                encoder, offset, _depth
11117            )
11118        }
11119    }
11120    unsafe impl<
11121        D: fidl::encoding::ResourceDialect,
11122        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>,
11123    > fidl::encoding::Encode<RoamRequest, D> for (T0,)
11124    {
11125        #[inline]
11126        unsafe fn encode(
11127            self,
11128            encoder: &mut fidl::encoding::Encoder<'_, D>,
11129            offset: usize,
11130            depth: fidl::encoding::Depth,
11131        ) -> fidl::Result<()> {
11132            encoder.debug_check_bounds::<RoamRequest>(offset);
11133            // Zero out padding regions. There's no need to apply masks
11134            // because the unmasked parts will be overwritten by fields.
11135            // Write the fields.
11136            self.0.encode(encoder, offset + 0, depth)?;
11137            Ok(())
11138        }
11139    }
11140
11141    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamRequest {
11142        #[inline(always)]
11143        fn new_empty() -> Self {
11144            Self {
11145                selected_bss: fidl::new_empty!(
11146                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
11147                    D
11148                ),
11149            }
11150        }
11151
11152        #[inline]
11153        unsafe fn decode(
11154            &mut self,
11155            decoder: &mut fidl::encoding::Decoder<'_, D>,
11156            offset: usize,
11157            _depth: fidl::encoding::Depth,
11158        ) -> fidl::Result<()> {
11159            decoder.debug_check_bounds::<Self>(offset);
11160            // Verify that padding bytes are zero.
11161            fidl::decode!(
11162                fidl_fuchsia_wlan_ieee80211_common::BssDescription,
11163                D,
11164                &mut self.selected_bss,
11165                decoder,
11166                offset + 0,
11167                _depth
11168            )?;
11169            Ok(())
11170        }
11171    }
11172
11173    impl fidl::encoding::ValueTypeMarker for RoamResultIndication {
11174        type Borrowed<'a> = &'a Self;
11175        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11176            value
11177        }
11178    }
11179
11180    unsafe impl fidl::encoding::TypeMarker for RoamResultIndication {
11181        type Owned = Self;
11182
11183        #[inline(always)]
11184        fn inline_align(_context: fidl::encoding::Context) -> usize {
11185            8
11186        }
11187
11188        #[inline(always)]
11189        fn inline_size(_context: fidl::encoding::Context) -> usize {
11190            32
11191        }
11192    }
11193
11194    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamResultIndication, D>
11195        for &RoamResultIndication
11196    {
11197        #[inline]
11198        unsafe fn encode(
11199            self,
11200            encoder: &mut fidl::encoding::Encoder<'_, D>,
11201            offset: usize,
11202            _depth: fidl::encoding::Depth,
11203        ) -> fidl::Result<()> {
11204            encoder.debug_check_bounds::<RoamResultIndication>(offset);
11205            // Delegate to tuple encoding.
11206            fidl::encoding::Encode::<RoamResultIndication, D>::encode(
11207                (
11208                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
11209                    <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
11210                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
11211                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.target_bss_authenticated),
11212                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
11213                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
11214                ),
11215                encoder, offset, _depth
11216            )
11217        }
11218    }
11219    unsafe impl<
11220        D: fidl::encoding::ResourceDialect,
11221        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11222        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>,
11223        T2: fidl::encoding::Encode<bool, D>,
11224        T3: fidl::encoding::Encode<bool, D>,
11225        T4: fidl::encoding::Encode<u16, D>,
11226        T5: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
11227    > fidl::encoding::Encode<RoamResultIndication, D> for (T0, T1, T2, T3, T4, T5)
11228    {
11229        #[inline]
11230        unsafe fn encode(
11231            self,
11232            encoder: &mut fidl::encoding::Encoder<'_, D>,
11233            offset: usize,
11234            depth: fidl::encoding::Depth,
11235        ) -> fidl::Result<()> {
11236            encoder.debug_check_bounds::<RoamResultIndication>(offset);
11237            // Zero out padding regions. There's no need to apply masks
11238            // because the unmasked parts will be overwritten by fields.
11239            unsafe {
11240                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
11241                (ptr as *mut u64).write_unaligned(0);
11242            }
11243            // Write the fields.
11244            self.0.encode(encoder, offset + 0, depth)?;
11245            self.1.encode(encoder, offset + 6, depth)?;
11246            self.2.encode(encoder, offset + 8, depth)?;
11247            self.3.encode(encoder, offset + 9, depth)?;
11248            self.4.encode(encoder, offset + 10, depth)?;
11249            self.5.encode(encoder, offset + 16, depth)?;
11250            Ok(())
11251        }
11252    }
11253
11254    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamResultIndication {
11255        #[inline(always)]
11256        fn new_empty() -> Self {
11257            Self {
11258                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11259                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D),
11260                original_association_maintained: fidl::new_empty!(bool, D),
11261                target_bss_authenticated: fidl::new_empty!(bool, D),
11262                association_id: fidl::new_empty!(u16, D),
11263                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
11264            }
11265        }
11266
11267        #[inline]
11268        unsafe fn decode(
11269            &mut self,
11270            decoder: &mut fidl::encoding::Decoder<'_, D>,
11271            offset: usize,
11272            _depth: fidl::encoding::Depth,
11273        ) -> fidl::Result<()> {
11274            decoder.debug_check_bounds::<Self>(offset);
11275            // Verify that padding bytes are zero.
11276            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
11277            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11278            let mask = 0xffffffff00000000u64;
11279            let maskedval = padval & mask;
11280            if maskedval != 0 {
11281                return Err(fidl::Error::NonZeroPadding {
11282                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
11283                });
11284            }
11285            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
11286            fidl::decode!(
11287                fidl_fuchsia_wlan_ieee80211_common::StatusCode,
11288                D,
11289                &mut self.status_code,
11290                decoder,
11291                offset + 6,
11292                _depth
11293            )?;
11294            fidl::decode!(
11295                bool,
11296                D,
11297                &mut self.original_association_maintained,
11298                decoder,
11299                offset + 8,
11300                _depth
11301            )?;
11302            fidl::decode!(
11303                bool,
11304                D,
11305                &mut self.target_bss_authenticated,
11306                decoder,
11307                offset + 9,
11308                _depth
11309            )?;
11310            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 10, _depth)?;
11311            fidl::decode!(
11312                fidl::encoding::UnboundedVector<u8>,
11313                D,
11314                &mut self.association_ies,
11315                decoder,
11316                offset + 16,
11317                _depth
11318            )?;
11319            Ok(())
11320        }
11321    }
11322
11323    impl fidl::encoding::ValueTypeMarker for RoamStartIndication {
11324        type Borrowed<'a> = &'a Self;
11325        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11326            value
11327        }
11328    }
11329
11330    unsafe impl fidl::encoding::TypeMarker for RoamStartIndication {
11331        type Owned = Self;
11332
11333        #[inline(always)]
11334        fn inline_align(_context: fidl::encoding::Context) -> usize {
11335            8
11336        }
11337
11338        #[inline(always)]
11339        fn inline_size(_context: fidl::encoding::Context) -> usize {
11340            64
11341        }
11342    }
11343
11344    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamStartIndication, D>
11345        for &RoamStartIndication
11346    {
11347        #[inline]
11348        unsafe fn encode(
11349            self,
11350            encoder: &mut fidl::encoding::Encoder<'_, D>,
11351            offset: usize,
11352            _depth: fidl::encoding::Depth,
11353        ) -> fidl::Result<()> {
11354            encoder.debug_check_bounds::<RoamStartIndication>(offset);
11355            // Delegate to tuple encoding.
11356            fidl::encoding::Encode::<RoamStartIndication, D>::encode(
11357                (
11358                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
11359                    <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
11360                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
11361                ),
11362                encoder, offset, _depth
11363            )
11364        }
11365    }
11366    unsafe impl<
11367        D: fidl::encoding::ResourceDialect,
11368        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11369        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>,
11370        T2: fidl::encoding::Encode<bool, D>,
11371    > fidl::encoding::Encode<RoamStartIndication, D> for (T0, T1, T2)
11372    {
11373        #[inline]
11374        unsafe fn encode(
11375            self,
11376            encoder: &mut fidl::encoding::Encoder<'_, D>,
11377            offset: usize,
11378            depth: fidl::encoding::Depth,
11379        ) -> fidl::Result<()> {
11380            encoder.debug_check_bounds::<RoamStartIndication>(offset);
11381            // Zero out padding regions. There's no need to apply masks
11382            // because the unmasked parts will be overwritten by fields.
11383            unsafe {
11384                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
11385                (ptr as *mut u64).write_unaligned(0);
11386            }
11387            unsafe {
11388                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
11389                (ptr as *mut u64).write_unaligned(0);
11390            }
11391            // Write the fields.
11392            self.0.encode(encoder, offset + 0, depth)?;
11393            self.1.encode(encoder, offset + 8, depth)?;
11394            self.2.encode(encoder, offset + 56, depth)?;
11395            Ok(())
11396        }
11397    }
11398
11399    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamStartIndication {
11400        #[inline(always)]
11401        fn new_empty() -> Self {
11402            Self {
11403                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11404                selected_bss: fidl::new_empty!(
11405                    fidl_fuchsia_wlan_ieee80211_common::BssDescription,
11406                    D
11407                ),
11408                original_association_maintained: fidl::new_empty!(bool, D),
11409            }
11410        }
11411
11412        #[inline]
11413        unsafe fn decode(
11414            &mut self,
11415            decoder: &mut fidl::encoding::Decoder<'_, D>,
11416            offset: usize,
11417            _depth: fidl::encoding::Depth,
11418        ) -> fidl::Result<()> {
11419            decoder.debug_check_bounds::<Self>(offset);
11420            // Verify that padding bytes are zero.
11421            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
11422            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11423            let mask = 0xffff000000000000u64;
11424            let maskedval = padval & mask;
11425            if maskedval != 0 {
11426                return Err(fidl::Error::NonZeroPadding {
11427                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
11428                });
11429            }
11430            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
11431            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11432            let mask = 0xffffffffffffff00u64;
11433            let maskedval = padval & mask;
11434            if maskedval != 0 {
11435                return Err(fidl::Error::NonZeroPadding {
11436                    padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
11437                });
11438            }
11439            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
11440            fidl::decode!(
11441                fidl_fuchsia_wlan_ieee80211_common::BssDescription,
11442                D,
11443                &mut self.selected_bss,
11444                decoder,
11445                offset + 8,
11446                _depth
11447            )?;
11448            fidl::decode!(
11449                bool,
11450                D,
11451                &mut self.original_association_maintained,
11452                decoder,
11453                offset + 56,
11454                _depth
11455            )?;
11456            Ok(())
11457        }
11458    }
11459
11460    impl fidl::encoding::ValueTypeMarker for SaeFrame {
11461        type Borrowed<'a> = &'a Self;
11462        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11463            value
11464        }
11465    }
11466
11467    unsafe impl fidl::encoding::TypeMarker for SaeFrame {
11468        type Owned = Self;
11469
11470        #[inline(always)]
11471        fn inline_align(_context: fidl::encoding::Context) -> usize {
11472            8
11473        }
11474
11475        #[inline(always)]
11476        fn inline_size(_context: fidl::encoding::Context) -> usize {
11477            32
11478        }
11479    }
11480
11481    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFrame, D> for &SaeFrame {
11482        #[inline]
11483        unsafe fn encode(
11484            self,
11485            encoder: &mut fidl::encoding::Encoder<'_, D>,
11486            offset: usize,
11487            _depth: fidl::encoding::Depth,
11488        ) -> fidl::Result<()> {
11489            encoder.debug_check_bounds::<SaeFrame>(offset);
11490            // Delegate to tuple encoding.
11491            fidl::encoding::Encode::<SaeFrame, D>::encode(
11492                (
11493                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
11494                    <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
11495                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.seq_num),
11496                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.sae_fields),
11497                ),
11498                encoder, offset, _depth
11499            )
11500        }
11501    }
11502    unsafe impl<
11503        D: fidl::encoding::ResourceDialect,
11504        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11505        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>,
11506        T2: fidl::encoding::Encode<u16, D>,
11507        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
11508    > fidl::encoding::Encode<SaeFrame, D> for (T0, T1, T2, T3)
11509    {
11510        #[inline]
11511        unsafe fn encode(
11512            self,
11513            encoder: &mut fidl::encoding::Encoder<'_, D>,
11514            offset: usize,
11515            depth: fidl::encoding::Depth,
11516        ) -> fidl::Result<()> {
11517            encoder.debug_check_bounds::<SaeFrame>(offset);
11518            // Zero out padding regions. There's no need to apply masks
11519            // because the unmasked parts will be overwritten by fields.
11520            unsafe {
11521                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
11522                (ptr as *mut u64).write_unaligned(0);
11523            }
11524            // Write the fields.
11525            self.0.encode(encoder, offset + 0, depth)?;
11526            self.1.encode(encoder, offset + 6, depth)?;
11527            self.2.encode(encoder, offset + 8, depth)?;
11528            self.3.encode(encoder, offset + 16, depth)?;
11529            Ok(())
11530        }
11531    }
11532
11533    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFrame {
11534        #[inline(always)]
11535        fn new_empty() -> Self {
11536            Self {
11537                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11538                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D),
11539                seq_num: fidl::new_empty!(u16, D),
11540                sae_fields: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
11541            }
11542        }
11543
11544        #[inline]
11545        unsafe fn decode(
11546            &mut self,
11547            decoder: &mut fidl::encoding::Decoder<'_, D>,
11548            offset: usize,
11549            _depth: fidl::encoding::Depth,
11550        ) -> fidl::Result<()> {
11551            decoder.debug_check_bounds::<Self>(offset);
11552            // Verify that padding bytes are zero.
11553            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
11554            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11555            let mask = 0xffffffffffff0000u64;
11556            let maskedval = padval & mask;
11557            if maskedval != 0 {
11558                return Err(fidl::Error::NonZeroPadding {
11559                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
11560                });
11561            }
11562            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
11563            fidl::decode!(
11564                fidl_fuchsia_wlan_ieee80211_common::StatusCode,
11565                D,
11566                &mut self.status_code,
11567                decoder,
11568                offset + 6,
11569                _depth
11570            )?;
11571            fidl::decode!(u16, D, &mut self.seq_num, decoder, offset + 8, _depth)?;
11572            fidl::decode!(
11573                fidl::encoding::UnboundedVector<u8>,
11574                D,
11575                &mut self.sae_fields,
11576                decoder,
11577                offset + 16,
11578                _depth
11579            )?;
11580            Ok(())
11581        }
11582    }
11583
11584    impl fidl::encoding::ValueTypeMarker for SaeHandshakeIndication {
11585        type Borrowed<'a> = &'a Self;
11586        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11587            value
11588        }
11589    }
11590
11591    unsafe impl fidl::encoding::TypeMarker for SaeHandshakeIndication {
11592        type Owned = Self;
11593
11594        #[inline(always)]
11595        fn inline_align(_context: fidl::encoding::Context) -> usize {
11596            1
11597        }
11598
11599        #[inline(always)]
11600        fn inline_size(_context: fidl::encoding::Context) -> usize {
11601            6
11602        }
11603        #[inline(always)]
11604        fn encode_is_copy() -> bool {
11605            true
11606        }
11607
11608        #[inline(always)]
11609        fn decode_is_copy() -> bool {
11610            true
11611        }
11612    }
11613
11614    unsafe impl<D: fidl::encoding::ResourceDialect>
11615        fidl::encoding::Encode<SaeHandshakeIndication, D> for &SaeHandshakeIndication
11616    {
11617        #[inline]
11618        unsafe fn encode(
11619            self,
11620            encoder: &mut fidl::encoding::Encoder<'_, D>,
11621            offset: usize,
11622            _depth: fidl::encoding::Depth,
11623        ) -> fidl::Result<()> {
11624            encoder.debug_check_bounds::<SaeHandshakeIndication>(offset);
11625            unsafe {
11626                // Copy the object into the buffer.
11627                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
11628                (buf_ptr as *mut SaeHandshakeIndication)
11629                    .write_unaligned((self as *const SaeHandshakeIndication).read());
11630                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
11631                // done second because the memcpy will write garbage to these bytes.
11632            }
11633            Ok(())
11634        }
11635    }
11636    unsafe impl<
11637        D: fidl::encoding::ResourceDialect,
11638        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11639    > fidl::encoding::Encode<SaeHandshakeIndication, D> for (T0,)
11640    {
11641        #[inline]
11642        unsafe fn encode(
11643            self,
11644            encoder: &mut fidl::encoding::Encoder<'_, D>,
11645            offset: usize,
11646            depth: fidl::encoding::Depth,
11647        ) -> fidl::Result<()> {
11648            encoder.debug_check_bounds::<SaeHandshakeIndication>(offset);
11649            // Zero out padding regions. There's no need to apply masks
11650            // because the unmasked parts will be overwritten by fields.
11651            // Write the fields.
11652            self.0.encode(encoder, offset + 0, depth)?;
11653            Ok(())
11654        }
11655    }
11656
11657    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11658        for SaeHandshakeIndication
11659    {
11660        #[inline(always)]
11661        fn new_empty() -> Self {
11662            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
11663        }
11664
11665        #[inline]
11666        unsafe fn decode(
11667            &mut self,
11668            decoder: &mut fidl::encoding::Decoder<'_, D>,
11669            offset: usize,
11670            _depth: fidl::encoding::Depth,
11671        ) -> fidl::Result<()> {
11672            decoder.debug_check_bounds::<Self>(offset);
11673            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
11674            // Verify that padding bytes are zero.
11675            // Copy from the buffer into the object.
11676            unsafe {
11677                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
11678            }
11679            Ok(())
11680        }
11681    }
11682
11683    impl fidl::encoding::ValueTypeMarker for SaeHandshakeResponse {
11684        type Borrowed<'a> = &'a Self;
11685        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11686            value
11687        }
11688    }
11689
11690    unsafe impl fidl::encoding::TypeMarker for SaeHandshakeResponse {
11691        type Owned = Self;
11692
11693        #[inline(always)]
11694        fn inline_align(_context: fidl::encoding::Context) -> usize {
11695            2
11696        }
11697
11698        #[inline(always)]
11699        fn inline_size(_context: fidl::encoding::Context) -> usize {
11700            8
11701        }
11702    }
11703
11704    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeHandshakeResponse, D>
11705        for &SaeHandshakeResponse
11706    {
11707        #[inline]
11708        unsafe fn encode(
11709            self,
11710            encoder: &mut fidl::encoding::Encoder<'_, D>,
11711            offset: usize,
11712            _depth: fidl::encoding::Depth,
11713        ) -> fidl::Result<()> {
11714            encoder.debug_check_bounds::<SaeHandshakeResponse>(offset);
11715            // Delegate to tuple encoding.
11716            fidl::encoding::Encode::<SaeHandshakeResponse, D>::encode(
11717                (
11718                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
11719                    <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
11720                ),
11721                encoder, offset, _depth
11722            )
11723        }
11724    }
11725    unsafe impl<
11726        D: fidl::encoding::ResourceDialect,
11727        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11728        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>,
11729    > fidl::encoding::Encode<SaeHandshakeResponse, D> for (T0, T1)
11730    {
11731        #[inline]
11732        unsafe fn encode(
11733            self,
11734            encoder: &mut fidl::encoding::Encoder<'_, D>,
11735            offset: usize,
11736            depth: fidl::encoding::Depth,
11737        ) -> fidl::Result<()> {
11738            encoder.debug_check_bounds::<SaeHandshakeResponse>(offset);
11739            // Zero out padding regions. There's no need to apply masks
11740            // because the unmasked parts will be overwritten by fields.
11741            // Write the fields.
11742            self.0.encode(encoder, offset + 0, depth)?;
11743            self.1.encode(encoder, offset + 6, depth)?;
11744            Ok(())
11745        }
11746    }
11747
11748    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeHandshakeResponse {
11749        #[inline(always)]
11750        fn new_empty() -> Self {
11751            Self {
11752                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11753                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D),
11754            }
11755        }
11756
11757        #[inline]
11758        unsafe fn decode(
11759            &mut self,
11760            decoder: &mut fidl::encoding::Decoder<'_, D>,
11761            offset: usize,
11762            _depth: fidl::encoding::Depth,
11763        ) -> fidl::Result<()> {
11764            decoder.debug_check_bounds::<Self>(offset);
11765            // Verify that padding bytes are zero.
11766            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
11767            fidl::decode!(
11768                fidl_fuchsia_wlan_ieee80211_common::StatusCode,
11769                D,
11770                &mut self.status_code,
11771                decoder,
11772                offset + 6,
11773                _depth
11774            )?;
11775            Ok(())
11776        }
11777    }
11778
11779    impl fidl::encoding::ValueTypeMarker for ScanEnd {
11780        type Borrowed<'a> = &'a Self;
11781        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11782            value
11783        }
11784    }
11785
11786    unsafe impl fidl::encoding::TypeMarker for ScanEnd {
11787        type Owned = Self;
11788
11789        #[inline(always)]
11790        fn inline_align(_context: fidl::encoding::Context) -> usize {
11791            8
11792        }
11793
11794        #[inline(always)]
11795        fn inline_size(_context: fidl::encoding::Context) -> usize {
11796            16
11797        }
11798    }
11799
11800    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanEnd, D> for &ScanEnd {
11801        #[inline]
11802        unsafe fn encode(
11803            self,
11804            encoder: &mut fidl::encoding::Encoder<'_, D>,
11805            offset: usize,
11806            _depth: fidl::encoding::Depth,
11807        ) -> fidl::Result<()> {
11808            encoder.debug_check_bounds::<ScanEnd>(offset);
11809            // Delegate to tuple encoding.
11810            fidl::encoding::Encode::<ScanEnd, D>::encode(
11811                (
11812                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
11813                    <ScanResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.code),
11814                ),
11815                encoder,
11816                offset,
11817                _depth,
11818            )
11819        }
11820    }
11821    unsafe impl<
11822        D: fidl::encoding::ResourceDialect,
11823        T0: fidl::encoding::Encode<u64, D>,
11824        T1: fidl::encoding::Encode<ScanResultCode, D>,
11825    > fidl::encoding::Encode<ScanEnd, D> for (T0, T1)
11826    {
11827        #[inline]
11828        unsafe fn encode(
11829            self,
11830            encoder: &mut fidl::encoding::Encoder<'_, D>,
11831            offset: usize,
11832            depth: fidl::encoding::Depth,
11833        ) -> fidl::Result<()> {
11834            encoder.debug_check_bounds::<ScanEnd>(offset);
11835            // Zero out padding regions. There's no need to apply masks
11836            // because the unmasked parts will be overwritten by fields.
11837            unsafe {
11838                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
11839                (ptr as *mut u64).write_unaligned(0);
11840            }
11841            // Write the fields.
11842            self.0.encode(encoder, offset + 0, depth)?;
11843            self.1.encode(encoder, offset + 8, depth)?;
11844            Ok(())
11845        }
11846    }
11847
11848    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanEnd {
11849        #[inline(always)]
11850        fn new_empty() -> Self {
11851            Self { txn_id: fidl::new_empty!(u64, D), code: fidl::new_empty!(ScanResultCode, D) }
11852        }
11853
11854        #[inline]
11855        unsafe fn decode(
11856            &mut self,
11857            decoder: &mut fidl::encoding::Decoder<'_, D>,
11858            offset: usize,
11859            _depth: fidl::encoding::Depth,
11860        ) -> fidl::Result<()> {
11861            decoder.debug_check_bounds::<Self>(offset);
11862            // Verify that padding bytes are zero.
11863            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
11864            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11865            let mask = 0xffffffff00000000u64;
11866            let maskedval = padval & mask;
11867            if maskedval != 0 {
11868                return Err(fidl::Error::NonZeroPadding {
11869                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
11870                });
11871            }
11872            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
11873            fidl::decode!(ScanResultCode, D, &mut self.code, decoder, offset + 8, _depth)?;
11874            Ok(())
11875        }
11876    }
11877
11878    impl fidl::encoding::ValueTypeMarker for ScanRequest {
11879        type Borrowed<'a> = &'a Self;
11880        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11881            value
11882        }
11883    }
11884
11885    unsafe impl fidl::encoding::TypeMarker for ScanRequest {
11886        type Owned = Self;
11887
11888        #[inline(always)]
11889        fn inline_align(_context: fidl::encoding::Context) -> usize {
11890            8
11891        }
11892
11893        #[inline(always)]
11894        fn inline_size(_context: fidl::encoding::Context) -> usize {
11895            64
11896        }
11897    }
11898
11899    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanRequest, D>
11900        for &ScanRequest
11901    {
11902        #[inline]
11903        unsafe fn encode(
11904            self,
11905            encoder: &mut fidl::encoding::Encoder<'_, D>,
11906            offset: usize,
11907            _depth: fidl::encoding::Depth,
11908        ) -> fidl::Result<()> {
11909            encoder.debug_check_bounds::<ScanRequest>(offset);
11910            // Delegate to tuple encoding.
11911            fidl::encoding::Encode::<ScanRequest, D>::encode(
11912                (
11913                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
11914                    <ScanTypes as fidl::encoding::ValueTypeMarker>::borrow(&self.scan_type),
11915                    <fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.channel_list),
11916                    <fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid_list),
11917                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.probe_delay),
11918                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.min_channel_time),
11919                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.max_channel_time),
11920                ),
11921                encoder, offset, _depth
11922            )
11923        }
11924    }
11925    unsafe impl<
11926        D: fidl::encoding::ResourceDialect,
11927        T0: fidl::encoding::Encode<u64, D>,
11928        T1: fidl::encoding::Encode<ScanTypes, D>,
11929        T2: fidl::encoding::Encode<
11930                fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>,
11931                D,
11932            >,
11933        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>,
11934        T4: fidl::encoding::Encode<u32, D>,
11935        T5: fidl::encoding::Encode<u32, D>,
11936        T6: fidl::encoding::Encode<u32, D>,
11937    > fidl::encoding::Encode<ScanRequest, D> for (T0, T1, T2, T3, T4, T5, T6)
11938    {
11939        #[inline]
11940        unsafe fn encode(
11941            self,
11942            encoder: &mut fidl::encoding::Encoder<'_, D>,
11943            offset: usize,
11944            depth: fidl::encoding::Depth,
11945        ) -> fidl::Result<()> {
11946            encoder.debug_check_bounds::<ScanRequest>(offset);
11947            // Zero out padding regions. There's no need to apply masks
11948            // because the unmasked parts will be overwritten by fields.
11949            unsafe {
11950                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
11951                (ptr as *mut u64).write_unaligned(0);
11952            }
11953            unsafe {
11954                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
11955                (ptr as *mut u64).write_unaligned(0);
11956            }
11957            // Write the fields.
11958            self.0.encode(encoder, offset + 0, depth)?;
11959            self.1.encode(encoder, offset + 8, depth)?;
11960            self.2.encode(encoder, offset + 16, depth)?;
11961            self.3.encode(encoder, offset + 32, depth)?;
11962            self.4.encode(encoder, offset + 48, depth)?;
11963            self.5.encode(encoder, offset + 52, depth)?;
11964            self.6.encode(encoder, offset + 56, depth)?;
11965            Ok(())
11966        }
11967    }
11968
11969    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanRequest {
11970        #[inline(always)]
11971        fn new_empty() -> Self {
11972            Self {
11973                txn_id: fidl::new_empty!(u64, D),
11974                scan_type: fidl::new_empty!(ScanTypes, D),
11975                channel_list: fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D),
11976                ssid_list: fidl::new_empty!(
11977                    fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
11978                    D
11979                ),
11980                probe_delay: fidl::new_empty!(u32, D),
11981                min_channel_time: fidl::new_empty!(u32, D),
11982                max_channel_time: fidl::new_empty!(u32, D),
11983            }
11984        }
11985
11986        #[inline]
11987        unsafe fn decode(
11988            &mut self,
11989            decoder: &mut fidl::encoding::Decoder<'_, D>,
11990            offset: usize,
11991            _depth: fidl::encoding::Depth,
11992        ) -> fidl::Result<()> {
11993            decoder.debug_check_bounds::<Self>(offset);
11994            // Verify that padding bytes are zero.
11995            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
11996            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11997            let mask = 0xffffffff00000000u64;
11998            let maskedval = padval & mask;
11999            if maskedval != 0 {
12000                return Err(fidl::Error::NonZeroPadding {
12001                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
12002                });
12003            }
12004            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
12005            let padval = unsafe { (ptr as *const u64).read_unaligned() };
12006            let mask = 0xffffffff00000000u64;
12007            let maskedval = padval & mask;
12008            if maskedval != 0 {
12009                return Err(fidl::Error::NonZeroPadding {
12010                    padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
12011                });
12012            }
12013            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
12014            fidl::decode!(ScanTypes, D, &mut self.scan_type, decoder, offset + 8, _depth)?;
12015            fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, 256>, D, &mut self.channel_list, decoder, offset + 16, _depth)?;
12016            fidl::decode!(
12017                fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
12018                D,
12019                &mut self.ssid_list,
12020                decoder,
12021                offset + 32,
12022                _depth
12023            )?;
12024            fidl::decode!(u32, D, &mut self.probe_delay, decoder, offset + 48, _depth)?;
12025            fidl::decode!(u32, D, &mut self.min_channel_time, decoder, offset + 52, _depth)?;
12026            fidl::decode!(u32, D, &mut self.max_channel_time, decoder, offset + 56, _depth)?;
12027            Ok(())
12028        }
12029    }
12030
12031    impl fidl::encoding::ValueTypeMarker for ScanResult {
12032        type Borrowed<'a> = &'a Self;
12033        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12034            value
12035        }
12036    }
12037
12038    unsafe impl fidl::encoding::TypeMarker for ScanResult {
12039        type Owned = Self;
12040
12041        #[inline(always)]
12042        fn inline_align(_context: fidl::encoding::Context) -> usize {
12043            8
12044        }
12045
12046        #[inline(always)]
12047        fn inline_size(_context: fidl::encoding::Context) -> usize {
12048            64
12049        }
12050    }
12051
12052    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanResult, D>
12053        for &ScanResult
12054    {
12055        #[inline]
12056        unsafe fn encode(
12057            self,
12058            encoder: &mut fidl::encoding::Encoder<'_, D>,
12059            offset: usize,
12060            _depth: fidl::encoding::Depth,
12061        ) -> fidl::Result<()> {
12062            encoder.debug_check_bounds::<ScanResult>(offset);
12063            // Delegate to tuple encoding.
12064            fidl::encoding::Encode::<ScanResult, D>::encode(
12065                (
12066                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
12067                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timestamp_nanos),
12068                    <fidl_fuchsia_wlan_ieee80211_common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.bss),
12069                ),
12070                encoder, offset, _depth
12071            )
12072        }
12073    }
12074    unsafe impl<
12075        D: fidl::encoding::ResourceDialect,
12076        T0: fidl::encoding::Encode<u64, D>,
12077        T1: fidl::encoding::Encode<i64, D>,
12078        T2: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::BssDescription, D>,
12079    > fidl::encoding::Encode<ScanResult, D> for (T0, T1, T2)
12080    {
12081        #[inline]
12082        unsafe fn encode(
12083            self,
12084            encoder: &mut fidl::encoding::Encoder<'_, D>,
12085            offset: usize,
12086            depth: fidl::encoding::Depth,
12087        ) -> fidl::Result<()> {
12088            encoder.debug_check_bounds::<ScanResult>(offset);
12089            // Zero out padding regions. There's no need to apply masks
12090            // because the unmasked parts will be overwritten by fields.
12091            // Write the fields.
12092            self.0.encode(encoder, offset + 0, depth)?;
12093            self.1.encode(encoder, offset + 8, depth)?;
12094            self.2.encode(encoder, offset + 16, depth)?;
12095            Ok(())
12096        }
12097    }
12098
12099    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanResult {
12100        #[inline(always)]
12101        fn new_empty() -> Self {
12102            Self {
12103                txn_id: fidl::new_empty!(u64, D),
12104                timestamp_nanos: fidl::new_empty!(i64, D),
12105                bss: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssDescription, D),
12106            }
12107        }
12108
12109        #[inline]
12110        unsafe fn decode(
12111            &mut self,
12112            decoder: &mut fidl::encoding::Decoder<'_, D>,
12113            offset: usize,
12114            _depth: fidl::encoding::Depth,
12115        ) -> fidl::Result<()> {
12116            decoder.debug_check_bounds::<Self>(offset);
12117            // Verify that padding bytes are zero.
12118            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
12119            fidl::decode!(i64, D, &mut self.timestamp_nanos, decoder, offset + 8, _depth)?;
12120            fidl::decode!(
12121                fidl_fuchsia_wlan_ieee80211_common::BssDescription,
12122                D,
12123                &mut self.bss,
12124                decoder,
12125                offset + 16,
12126                _depth
12127            )?;
12128            Ok(())
12129        }
12130    }
12131
12132    impl fidl::encoding::ValueTypeMarker for SetControlledPortRequest {
12133        type Borrowed<'a> = &'a Self;
12134        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12135            value
12136        }
12137    }
12138
12139    unsafe impl fidl::encoding::TypeMarker for SetControlledPortRequest {
12140        type Owned = Self;
12141
12142        #[inline(always)]
12143        fn inline_align(_context: fidl::encoding::Context) -> usize {
12144            4
12145        }
12146
12147        #[inline(always)]
12148        fn inline_size(_context: fidl::encoding::Context) -> usize {
12149            12
12150        }
12151    }
12152
12153    unsafe impl<D: fidl::encoding::ResourceDialect>
12154        fidl::encoding::Encode<SetControlledPortRequest, D> for &SetControlledPortRequest
12155    {
12156        #[inline]
12157        unsafe fn encode(
12158            self,
12159            encoder: &mut fidl::encoding::Encoder<'_, D>,
12160            offset: usize,
12161            _depth: fidl::encoding::Depth,
12162        ) -> fidl::Result<()> {
12163            encoder.debug_check_bounds::<SetControlledPortRequest>(offset);
12164            // Delegate to tuple encoding.
12165            fidl::encoding::Encode::<SetControlledPortRequest, D>::encode(
12166                (
12167                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
12168                        &self.peer_sta_address,
12169                    ),
12170                    <ControlledPortState as fidl::encoding::ValueTypeMarker>::borrow(&self.state),
12171                ),
12172                encoder,
12173                offset,
12174                _depth,
12175            )
12176        }
12177    }
12178    unsafe impl<
12179        D: fidl::encoding::ResourceDialect,
12180        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
12181        T1: fidl::encoding::Encode<ControlledPortState, D>,
12182    > fidl::encoding::Encode<SetControlledPortRequest, D> for (T0, T1)
12183    {
12184        #[inline]
12185        unsafe fn encode(
12186            self,
12187            encoder: &mut fidl::encoding::Encoder<'_, D>,
12188            offset: usize,
12189            depth: fidl::encoding::Depth,
12190        ) -> fidl::Result<()> {
12191            encoder.debug_check_bounds::<SetControlledPortRequest>(offset);
12192            // Zero out padding regions. There's no need to apply masks
12193            // because the unmasked parts will be overwritten by fields.
12194            unsafe {
12195                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
12196                (ptr as *mut u32).write_unaligned(0);
12197            }
12198            // Write the fields.
12199            self.0.encode(encoder, offset + 0, depth)?;
12200            self.1.encode(encoder, offset + 8, depth)?;
12201            Ok(())
12202        }
12203    }
12204
12205    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12206        for SetControlledPortRequest
12207    {
12208        #[inline(always)]
12209        fn new_empty() -> Self {
12210            Self {
12211                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
12212                state: fidl::new_empty!(ControlledPortState, D),
12213            }
12214        }
12215
12216        #[inline]
12217        unsafe fn decode(
12218            &mut self,
12219            decoder: &mut fidl::encoding::Decoder<'_, D>,
12220            offset: usize,
12221            _depth: fidl::encoding::Depth,
12222        ) -> fidl::Result<()> {
12223            decoder.debug_check_bounds::<Self>(offset);
12224            // Verify that padding bytes are zero.
12225            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
12226            let padval = unsafe { (ptr as *const u32).read_unaligned() };
12227            let mask = 0xffff0000u32;
12228            let maskedval = padval & mask;
12229            if maskedval != 0 {
12230                return Err(fidl::Error::NonZeroPadding {
12231                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
12232                });
12233            }
12234            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
12235            fidl::decode!(ControlledPortState, D, &mut self.state, decoder, offset + 8, _depth)?;
12236            Ok(())
12237        }
12238    }
12239
12240    impl fidl::encoding::ValueTypeMarker for SetKeyDescriptor {
12241        type Borrowed<'a> = &'a Self;
12242        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12243            value
12244        }
12245    }
12246
12247    unsafe impl fidl::encoding::TypeMarker for SetKeyDescriptor {
12248        type Owned = Self;
12249
12250        #[inline(always)]
12251        fn inline_align(_context: fidl::encoding::Context) -> usize {
12252            8
12253        }
12254
12255        #[inline(always)]
12256        fn inline_size(_context: fidl::encoding::Context) -> usize {
12257            48
12258        }
12259    }
12260
12261    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeyDescriptor, D>
12262        for &SetKeyDescriptor
12263    {
12264        #[inline]
12265        unsafe fn encode(
12266            self,
12267            encoder: &mut fidl::encoding::Encoder<'_, D>,
12268            offset: usize,
12269            _depth: fidl::encoding::Depth,
12270        ) -> fidl::Result<()> {
12271            encoder.debug_check_bounds::<SetKeyDescriptor>(offset);
12272            // Delegate to tuple encoding.
12273            fidl::encoding::Encode::<SetKeyDescriptor, D>::encode(
12274                (
12275                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
12276                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.key_id),
12277                    <KeyType as fidl::encoding::ValueTypeMarker>::borrow(&self.key_type),
12278                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.address),
12279                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.rsc),
12280                    <fidl::encoding::Array<u8, 3> as fidl::encoding::ValueTypeMarker>::borrow(&self.cipher_suite_oui),
12281                    <fidl_fuchsia_wlan_ieee80211_common::CipherSuiteType as fidl::encoding::ValueTypeMarker>::borrow(&self.cipher_suite_type),
12282                ),
12283                encoder, offset, _depth
12284            )
12285        }
12286    }
12287    unsafe impl<
12288        D: fidl::encoding::ResourceDialect,
12289        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
12290        T1: fidl::encoding::Encode<u16, D>,
12291        T2: fidl::encoding::Encode<KeyType, D>,
12292        T3: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
12293        T4: fidl::encoding::Encode<u64, D>,
12294        T5: fidl::encoding::Encode<fidl::encoding::Array<u8, 3>, D>,
12295        T6: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::CipherSuiteType, D>,
12296    > fidl::encoding::Encode<SetKeyDescriptor, D> for (T0, T1, T2, T3, T4, T5, T6)
12297    {
12298        #[inline]
12299        unsafe fn encode(
12300            self,
12301            encoder: &mut fidl::encoding::Encoder<'_, D>,
12302            offset: usize,
12303            depth: fidl::encoding::Depth,
12304        ) -> fidl::Result<()> {
12305            encoder.debug_check_bounds::<SetKeyDescriptor>(offset);
12306            // Zero out padding regions. There's no need to apply masks
12307            // because the unmasked parts will be overwritten by fields.
12308            unsafe {
12309                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
12310                (ptr as *mut u64).write_unaligned(0);
12311            }
12312            unsafe {
12313                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
12314                (ptr as *mut u64).write_unaligned(0);
12315            }
12316            unsafe {
12317                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(40);
12318                (ptr as *mut u64).write_unaligned(0);
12319            }
12320            // Write the fields.
12321            self.0.encode(encoder, offset + 0, depth)?;
12322            self.1.encode(encoder, offset + 16, depth)?;
12323            self.2.encode(encoder, offset + 20, depth)?;
12324            self.3.encode(encoder, offset + 24, depth)?;
12325            self.4.encode(encoder, offset + 32, depth)?;
12326            self.5.encode(encoder, offset + 40, depth)?;
12327            self.6.encode(encoder, offset + 44, depth)?;
12328            Ok(())
12329        }
12330    }
12331
12332    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeyDescriptor {
12333        #[inline(always)]
12334        fn new_empty() -> Self {
12335            Self {
12336                key: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
12337                key_id: fidl::new_empty!(u16, D),
12338                key_type: fidl::new_empty!(KeyType, D),
12339                address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
12340                rsc: fidl::new_empty!(u64, D),
12341                cipher_suite_oui: fidl::new_empty!(fidl::encoding::Array<u8, 3>, D),
12342                cipher_suite_type: fidl::new_empty!(
12343                    fidl_fuchsia_wlan_ieee80211_common::CipherSuiteType,
12344                    D
12345                ),
12346            }
12347        }
12348
12349        #[inline]
12350        unsafe fn decode(
12351            &mut self,
12352            decoder: &mut fidl::encoding::Decoder<'_, D>,
12353            offset: usize,
12354            _depth: fidl::encoding::Depth,
12355        ) -> fidl::Result<()> {
12356            decoder.debug_check_bounds::<Self>(offset);
12357            // Verify that padding bytes are zero.
12358            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
12359            let padval = unsafe { (ptr as *const u64).read_unaligned() };
12360            let mask = 0xffff0000u64;
12361            let maskedval = padval & mask;
12362            if maskedval != 0 {
12363                return Err(fidl::Error::NonZeroPadding {
12364                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
12365                });
12366            }
12367            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
12368            let padval = unsafe { (ptr as *const u64).read_unaligned() };
12369            let mask = 0xffff000000000000u64;
12370            let maskedval = padval & mask;
12371            if maskedval != 0 {
12372                return Err(fidl::Error::NonZeroPadding {
12373                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
12374                });
12375            }
12376            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(40) };
12377            let padval = unsafe { (ptr as *const u64).read_unaligned() };
12378            let mask = 0xff000000u64;
12379            let maskedval = padval & mask;
12380            if maskedval != 0 {
12381                return Err(fidl::Error::NonZeroPadding {
12382                    padding_start: offset + 40 + ((mask as u64).trailing_zeros() / 8) as usize,
12383                });
12384            }
12385            fidl::decode!(
12386                fidl::encoding::UnboundedVector<u8>,
12387                D,
12388                &mut self.key,
12389                decoder,
12390                offset + 0,
12391                _depth
12392            )?;
12393            fidl::decode!(u16, D, &mut self.key_id, decoder, offset + 16, _depth)?;
12394            fidl::decode!(KeyType, D, &mut self.key_type, decoder, offset + 20, _depth)?;
12395            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.address, decoder, offset + 24, _depth)?;
12396            fidl::decode!(u64, D, &mut self.rsc, decoder, offset + 32, _depth)?;
12397            fidl::decode!(fidl::encoding::Array<u8, 3>, D, &mut self.cipher_suite_oui, decoder, offset + 40, _depth)?;
12398            fidl::decode!(
12399                fidl_fuchsia_wlan_ieee80211_common::CipherSuiteType,
12400                D,
12401                &mut self.cipher_suite_type,
12402                decoder,
12403                offset + 44,
12404                _depth
12405            )?;
12406            Ok(())
12407        }
12408    }
12409
12410    impl fidl::encoding::ValueTypeMarker for SetKeyResult {
12411        type Borrowed<'a> = &'a Self;
12412        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12413            value
12414        }
12415    }
12416
12417    unsafe impl fidl::encoding::TypeMarker for SetKeyResult {
12418        type Owned = Self;
12419
12420        #[inline(always)]
12421        fn inline_align(_context: fidl::encoding::Context) -> usize {
12422            4
12423        }
12424
12425        #[inline(always)]
12426        fn inline_size(_context: fidl::encoding::Context) -> usize {
12427            8
12428        }
12429    }
12430
12431    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeyResult, D>
12432        for &SetKeyResult
12433    {
12434        #[inline]
12435        unsafe fn encode(
12436            self,
12437            encoder: &mut fidl::encoding::Encoder<'_, D>,
12438            offset: usize,
12439            _depth: fidl::encoding::Depth,
12440        ) -> fidl::Result<()> {
12441            encoder.debug_check_bounds::<SetKeyResult>(offset);
12442            unsafe {
12443                // Copy the object into the buffer.
12444                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
12445                (buf_ptr as *mut SetKeyResult)
12446                    .write_unaligned((self as *const SetKeyResult).read());
12447                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
12448                // done second because the memcpy will write garbage to these bytes.
12449                let padding_ptr = buf_ptr.offset(0) as *mut u32;
12450                let padding_mask = 0xffff0000u32;
12451                padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
12452            }
12453            Ok(())
12454        }
12455    }
12456    unsafe impl<
12457        D: fidl::encoding::ResourceDialect,
12458        T0: fidl::encoding::Encode<u16, D>,
12459        T1: fidl::encoding::Encode<i32, D>,
12460    > fidl::encoding::Encode<SetKeyResult, D> for (T0, T1)
12461    {
12462        #[inline]
12463        unsafe fn encode(
12464            self,
12465            encoder: &mut fidl::encoding::Encoder<'_, D>,
12466            offset: usize,
12467            depth: fidl::encoding::Depth,
12468        ) -> fidl::Result<()> {
12469            encoder.debug_check_bounds::<SetKeyResult>(offset);
12470            // Zero out padding regions. There's no need to apply masks
12471            // because the unmasked parts will be overwritten by fields.
12472            unsafe {
12473                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
12474                (ptr as *mut u32).write_unaligned(0);
12475            }
12476            // Write the fields.
12477            self.0.encode(encoder, offset + 0, depth)?;
12478            self.1.encode(encoder, offset + 4, depth)?;
12479            Ok(())
12480        }
12481    }
12482
12483    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeyResult {
12484        #[inline(always)]
12485        fn new_empty() -> Self {
12486            Self { key_id: fidl::new_empty!(u16, D), status: fidl::new_empty!(i32, D) }
12487        }
12488
12489        #[inline]
12490        unsafe fn decode(
12491            &mut self,
12492            decoder: &mut fidl::encoding::Decoder<'_, D>,
12493            offset: usize,
12494            _depth: fidl::encoding::Depth,
12495        ) -> fidl::Result<()> {
12496            decoder.debug_check_bounds::<Self>(offset);
12497            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
12498            // Verify that padding bytes are zero.
12499            let ptr = unsafe { buf_ptr.offset(0) };
12500            let padval = unsafe { (ptr as *const u32).read_unaligned() };
12501            let mask = 0xffff0000u32;
12502            let maskedval = padval & mask;
12503            if maskedval != 0 {
12504                return Err(fidl::Error::NonZeroPadding {
12505                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
12506                });
12507            }
12508            // Copy from the buffer into the object.
12509            unsafe {
12510                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
12511            }
12512            Ok(())
12513        }
12514    }
12515
12516    impl fidl::encoding::ValueTypeMarker for SetKeysConfirm {
12517        type Borrowed<'a> = &'a Self;
12518        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12519            value
12520        }
12521    }
12522
12523    unsafe impl fidl::encoding::TypeMarker for SetKeysConfirm {
12524        type Owned = Self;
12525
12526        #[inline(always)]
12527        fn inline_align(_context: fidl::encoding::Context) -> usize {
12528            8
12529        }
12530
12531        #[inline(always)]
12532        fn inline_size(_context: fidl::encoding::Context) -> usize {
12533            16
12534        }
12535    }
12536
12537    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeysConfirm, D>
12538        for &SetKeysConfirm
12539    {
12540        #[inline]
12541        unsafe fn encode(
12542            self,
12543            encoder: &mut fidl::encoding::Encoder<'_, D>,
12544            offset: usize,
12545            _depth: fidl::encoding::Depth,
12546        ) -> fidl::Result<()> {
12547            encoder.debug_check_bounds::<SetKeysConfirm>(offset);
12548            // Delegate to tuple encoding.
12549            fidl::encoding::Encode::<SetKeysConfirm, D>::encode(
12550                (
12551                    <fidl::encoding::UnboundedVector<SetKeyResult> as fidl::encoding::ValueTypeMarker>::borrow(&self.results),
12552                ),
12553                encoder, offset, _depth
12554            )
12555        }
12556    }
12557    unsafe impl<
12558        D: fidl::encoding::ResourceDialect,
12559        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<SetKeyResult>, D>,
12560    > fidl::encoding::Encode<SetKeysConfirm, D> for (T0,)
12561    {
12562        #[inline]
12563        unsafe fn encode(
12564            self,
12565            encoder: &mut fidl::encoding::Encoder<'_, D>,
12566            offset: usize,
12567            depth: fidl::encoding::Depth,
12568        ) -> fidl::Result<()> {
12569            encoder.debug_check_bounds::<SetKeysConfirm>(offset);
12570            // Zero out padding regions. There's no need to apply masks
12571            // because the unmasked parts will be overwritten by fields.
12572            // Write the fields.
12573            self.0.encode(encoder, offset + 0, depth)?;
12574            Ok(())
12575        }
12576    }
12577
12578    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeysConfirm {
12579        #[inline(always)]
12580        fn new_empty() -> Self {
12581            Self { results: fidl::new_empty!(fidl::encoding::UnboundedVector<SetKeyResult>, D) }
12582        }
12583
12584        #[inline]
12585        unsafe fn decode(
12586            &mut self,
12587            decoder: &mut fidl::encoding::Decoder<'_, D>,
12588            offset: usize,
12589            _depth: fidl::encoding::Depth,
12590        ) -> fidl::Result<()> {
12591            decoder.debug_check_bounds::<Self>(offset);
12592            // Verify that padding bytes are zero.
12593            fidl::decode!(
12594                fidl::encoding::UnboundedVector<SetKeyResult>,
12595                D,
12596                &mut self.results,
12597                decoder,
12598                offset + 0,
12599                _depth
12600            )?;
12601            Ok(())
12602        }
12603    }
12604
12605    impl fidl::encoding::ValueTypeMarker for SetKeysRequest {
12606        type Borrowed<'a> = &'a Self;
12607        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12608            value
12609        }
12610    }
12611
12612    unsafe impl fidl::encoding::TypeMarker for SetKeysRequest {
12613        type Owned = Self;
12614
12615        #[inline(always)]
12616        fn inline_align(_context: fidl::encoding::Context) -> usize {
12617            8
12618        }
12619
12620        #[inline(always)]
12621        fn inline_size(_context: fidl::encoding::Context) -> usize {
12622            16
12623        }
12624    }
12625
12626    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeysRequest, D>
12627        for &SetKeysRequest
12628    {
12629        #[inline]
12630        unsafe fn encode(
12631            self,
12632            encoder: &mut fidl::encoding::Encoder<'_, D>,
12633            offset: usize,
12634            _depth: fidl::encoding::Depth,
12635        ) -> fidl::Result<()> {
12636            encoder.debug_check_bounds::<SetKeysRequest>(offset);
12637            // Delegate to tuple encoding.
12638            fidl::encoding::Encode::<SetKeysRequest, D>::encode(
12639                (
12640                    <fidl::encoding::UnboundedVector<SetKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.keylist),
12641                ),
12642                encoder, offset, _depth
12643            )
12644        }
12645    }
12646    unsafe impl<
12647        D: fidl::encoding::ResourceDialect,
12648        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<SetKeyDescriptor>, D>,
12649    > fidl::encoding::Encode<SetKeysRequest, D> for (T0,)
12650    {
12651        #[inline]
12652        unsafe fn encode(
12653            self,
12654            encoder: &mut fidl::encoding::Encoder<'_, D>,
12655            offset: usize,
12656            depth: fidl::encoding::Depth,
12657        ) -> fidl::Result<()> {
12658            encoder.debug_check_bounds::<SetKeysRequest>(offset);
12659            // Zero out padding regions. There's no need to apply masks
12660            // because the unmasked parts will be overwritten by fields.
12661            // Write the fields.
12662            self.0.encode(encoder, offset + 0, depth)?;
12663            Ok(())
12664        }
12665    }
12666
12667    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeysRequest {
12668        #[inline(always)]
12669        fn new_empty() -> Self {
12670            Self { keylist: fidl::new_empty!(fidl::encoding::UnboundedVector<SetKeyDescriptor>, D) }
12671        }
12672
12673        #[inline]
12674        unsafe fn decode(
12675            &mut self,
12676            decoder: &mut fidl::encoding::Decoder<'_, D>,
12677            offset: usize,
12678            _depth: fidl::encoding::Depth,
12679        ) -> fidl::Result<()> {
12680            decoder.debug_check_bounds::<Self>(offset);
12681            // Verify that padding bytes are zero.
12682            fidl::decode!(
12683                fidl::encoding::UnboundedVector<SetKeyDescriptor>,
12684                D,
12685                &mut self.keylist,
12686                decoder,
12687                offset + 0,
12688                _depth
12689            )?;
12690            Ok(())
12691        }
12692    }
12693
12694    impl fidl::encoding::ValueTypeMarker for StartCaptureFramesRequest {
12695        type Borrowed<'a> = &'a Self;
12696        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12697            value
12698        }
12699    }
12700
12701    unsafe impl fidl::encoding::TypeMarker for StartCaptureFramesRequest {
12702        type Owned = Self;
12703
12704        #[inline(always)]
12705        fn inline_align(_context: fidl::encoding::Context) -> usize {
12706            4
12707        }
12708
12709        #[inline(always)]
12710        fn inline_size(_context: fidl::encoding::Context) -> usize {
12711            4
12712        }
12713    }
12714
12715    unsafe impl<D: fidl::encoding::ResourceDialect>
12716        fidl::encoding::Encode<StartCaptureFramesRequest, D> for &StartCaptureFramesRequest
12717    {
12718        #[inline]
12719        unsafe fn encode(
12720            self,
12721            encoder: &mut fidl::encoding::Encoder<'_, D>,
12722            offset: usize,
12723            _depth: fidl::encoding::Depth,
12724        ) -> fidl::Result<()> {
12725            encoder.debug_check_bounds::<StartCaptureFramesRequest>(offset);
12726            // Delegate to tuple encoding.
12727            fidl::encoding::Encode::<StartCaptureFramesRequest, D>::encode(
12728                (<MgmtFrameCaptureFlags as fidl::encoding::ValueTypeMarker>::borrow(
12729                    &self.mgmt_frame_flags,
12730                ),),
12731                encoder,
12732                offset,
12733                _depth,
12734            )
12735        }
12736    }
12737    unsafe impl<
12738        D: fidl::encoding::ResourceDialect,
12739        T0: fidl::encoding::Encode<MgmtFrameCaptureFlags, D>,
12740    > fidl::encoding::Encode<StartCaptureFramesRequest, D> for (T0,)
12741    {
12742        #[inline]
12743        unsafe fn encode(
12744            self,
12745            encoder: &mut fidl::encoding::Encoder<'_, D>,
12746            offset: usize,
12747            depth: fidl::encoding::Depth,
12748        ) -> fidl::Result<()> {
12749            encoder.debug_check_bounds::<StartCaptureFramesRequest>(offset);
12750            // Zero out padding regions. There's no need to apply masks
12751            // because the unmasked parts will be overwritten by fields.
12752            // Write the fields.
12753            self.0.encode(encoder, offset + 0, depth)?;
12754            Ok(())
12755        }
12756    }
12757
12758    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12759        for StartCaptureFramesRequest
12760    {
12761        #[inline(always)]
12762        fn new_empty() -> Self {
12763            Self { mgmt_frame_flags: fidl::new_empty!(MgmtFrameCaptureFlags, D) }
12764        }
12765
12766        #[inline]
12767        unsafe fn decode(
12768            &mut self,
12769            decoder: &mut fidl::encoding::Decoder<'_, D>,
12770            offset: usize,
12771            _depth: fidl::encoding::Depth,
12772        ) -> fidl::Result<()> {
12773            decoder.debug_check_bounds::<Self>(offset);
12774            // Verify that padding bytes are zero.
12775            fidl::decode!(
12776                MgmtFrameCaptureFlags,
12777                D,
12778                &mut self.mgmt_frame_flags,
12779                decoder,
12780                offset + 0,
12781                _depth
12782            )?;
12783            Ok(())
12784        }
12785    }
12786
12787    impl fidl::encoding::ValueTypeMarker for StartCaptureFramesResponse {
12788        type Borrowed<'a> = &'a Self;
12789        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12790            value
12791        }
12792    }
12793
12794    unsafe impl fidl::encoding::TypeMarker for StartCaptureFramesResponse {
12795        type Owned = Self;
12796
12797        #[inline(always)]
12798        fn inline_align(_context: fidl::encoding::Context) -> usize {
12799            4
12800        }
12801
12802        #[inline(always)]
12803        fn inline_size(_context: fidl::encoding::Context) -> usize {
12804            8
12805        }
12806    }
12807
12808    unsafe impl<D: fidl::encoding::ResourceDialect>
12809        fidl::encoding::Encode<StartCaptureFramesResponse, D> for &StartCaptureFramesResponse
12810    {
12811        #[inline]
12812        unsafe fn encode(
12813            self,
12814            encoder: &mut fidl::encoding::Encoder<'_, D>,
12815            offset: usize,
12816            _depth: fidl::encoding::Depth,
12817        ) -> fidl::Result<()> {
12818            encoder.debug_check_bounds::<StartCaptureFramesResponse>(offset);
12819            // Delegate to tuple encoding.
12820            fidl::encoding::Encode::<StartCaptureFramesResponse, D>::encode(
12821                (
12822                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
12823                    <MgmtFrameCaptureFlags as fidl::encoding::ValueTypeMarker>::borrow(
12824                        &self.supported_mgmt_frames,
12825                    ),
12826                ),
12827                encoder,
12828                offset,
12829                _depth,
12830            )
12831        }
12832    }
12833    unsafe impl<
12834        D: fidl::encoding::ResourceDialect,
12835        T0: fidl::encoding::Encode<i32, D>,
12836        T1: fidl::encoding::Encode<MgmtFrameCaptureFlags, D>,
12837    > fidl::encoding::Encode<StartCaptureFramesResponse, D> for (T0, T1)
12838    {
12839        #[inline]
12840        unsafe fn encode(
12841            self,
12842            encoder: &mut fidl::encoding::Encoder<'_, D>,
12843            offset: usize,
12844            depth: fidl::encoding::Depth,
12845        ) -> fidl::Result<()> {
12846            encoder.debug_check_bounds::<StartCaptureFramesResponse>(offset);
12847            // Zero out padding regions. There's no need to apply masks
12848            // because the unmasked parts will be overwritten by fields.
12849            // Write the fields.
12850            self.0.encode(encoder, offset + 0, depth)?;
12851            self.1.encode(encoder, offset + 4, depth)?;
12852            Ok(())
12853        }
12854    }
12855
12856    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12857        for StartCaptureFramesResponse
12858    {
12859        #[inline(always)]
12860        fn new_empty() -> Self {
12861            Self {
12862                status: fidl::new_empty!(i32, D),
12863                supported_mgmt_frames: fidl::new_empty!(MgmtFrameCaptureFlags, D),
12864            }
12865        }
12866
12867        #[inline]
12868        unsafe fn decode(
12869            &mut self,
12870            decoder: &mut fidl::encoding::Decoder<'_, D>,
12871            offset: usize,
12872            _depth: fidl::encoding::Depth,
12873        ) -> fidl::Result<()> {
12874            decoder.debug_check_bounds::<Self>(offset);
12875            // Verify that padding bytes are zero.
12876            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
12877            fidl::decode!(
12878                MgmtFrameCaptureFlags,
12879                D,
12880                &mut self.supported_mgmt_frames,
12881                decoder,
12882                offset + 4,
12883                _depth
12884            )?;
12885            Ok(())
12886        }
12887    }
12888
12889    impl fidl::encoding::ValueTypeMarker for StartConfirm {
12890        type Borrowed<'a> = &'a Self;
12891        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12892            value
12893        }
12894    }
12895
12896    unsafe impl fidl::encoding::TypeMarker for StartConfirm {
12897        type Owned = Self;
12898
12899        #[inline(always)]
12900        fn inline_align(_context: fidl::encoding::Context) -> usize {
12901            4
12902        }
12903
12904        #[inline(always)]
12905        fn inline_size(_context: fidl::encoding::Context) -> usize {
12906            4
12907        }
12908    }
12909
12910    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartConfirm, D>
12911        for &StartConfirm
12912    {
12913        #[inline]
12914        unsafe fn encode(
12915            self,
12916            encoder: &mut fidl::encoding::Encoder<'_, D>,
12917            offset: usize,
12918            _depth: fidl::encoding::Depth,
12919        ) -> fidl::Result<()> {
12920            encoder.debug_check_bounds::<StartConfirm>(offset);
12921            // Delegate to tuple encoding.
12922            fidl::encoding::Encode::<StartConfirm, D>::encode(
12923                (<StartResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),),
12924                encoder,
12925                offset,
12926                _depth,
12927            )
12928        }
12929    }
12930    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartResultCode, D>>
12931        fidl::encoding::Encode<StartConfirm, D> for (T0,)
12932    {
12933        #[inline]
12934        unsafe fn encode(
12935            self,
12936            encoder: &mut fidl::encoding::Encoder<'_, D>,
12937            offset: usize,
12938            depth: fidl::encoding::Depth,
12939        ) -> fidl::Result<()> {
12940            encoder.debug_check_bounds::<StartConfirm>(offset);
12941            // Zero out padding regions. There's no need to apply masks
12942            // because the unmasked parts will be overwritten by fields.
12943            // Write the fields.
12944            self.0.encode(encoder, offset + 0, depth)?;
12945            Ok(())
12946        }
12947    }
12948
12949    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartConfirm {
12950        #[inline(always)]
12951        fn new_empty() -> Self {
12952            Self { result_code: fidl::new_empty!(StartResultCode, D) }
12953        }
12954
12955        #[inline]
12956        unsafe fn decode(
12957            &mut self,
12958            decoder: &mut fidl::encoding::Decoder<'_, D>,
12959            offset: usize,
12960            _depth: fidl::encoding::Depth,
12961        ) -> fidl::Result<()> {
12962            decoder.debug_check_bounds::<Self>(offset);
12963            // Verify that padding bytes are zero.
12964            fidl::decode!(StartResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
12965            Ok(())
12966        }
12967    }
12968
12969    impl fidl::encoding::ValueTypeMarker for StartRequest {
12970        type Borrowed<'a> = &'a Self;
12971        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12972            value
12973        }
12974    }
12975
12976    unsafe impl fidl::encoding::TypeMarker for StartRequest {
12977        type Owned = Self;
12978
12979        #[inline(always)]
12980        fn inline_align(_context: fidl::encoding::Context) -> usize {
12981            8
12982        }
12983
12984        #[inline(always)]
12985        fn inline_size(_context: fidl::encoding::Context) -> usize {
12986            96
12987        }
12988    }
12989
12990    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartRequest, D>
12991        for &StartRequest
12992    {
12993        #[inline]
12994        unsafe fn encode(
12995            self,
12996            encoder: &mut fidl::encoding::Encoder<'_, D>,
12997            offset: usize,
12998            _depth: fidl::encoding::Depth,
12999        ) -> fidl::Result<()> {
13000            encoder.debug_check_bounds::<StartRequest>(offset);
13001            // Delegate to tuple encoding.
13002            fidl::encoding::Encode::<StartRequest, D>::encode(
13003                (
13004                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid),
13005                    <fidl_fuchsia_wlan_ieee80211_common::BssType as fidl::encoding::ValueTypeMarker>::borrow(&self.bss_type),
13006                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.beacon_period),
13007                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.dtim_period),
13008                    <fidl_fuchsia_wlan_ieee80211_common::ChannelNumber as fidl::encoding::ValueTypeMarker>::borrow(&self.primary),
13009                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
13010                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
13011                    <Country as fidl::encoding::ValueTypeMarker>::borrow(&self.country),
13012                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.mesh_id),
13013                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>> as fidl::encoding::ValueTypeMarker>::borrow(&self.rsne),
13014                    <fidl_fuchsia_wlan_ieee80211_common::WlanPhyType as fidl::encoding::ValueTypeMarker>::borrow(&self.phy),
13015                    <fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth as fidl::encoding::ValueTypeMarker>::borrow(&self.bandwidth),
13016                ),
13017                encoder, offset, _depth
13018            )
13019        }
13020    }
13021    unsafe impl<
13022        D: fidl::encoding::ResourceDialect,
13023        T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
13024        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::BssType, D>,
13025        T2: fidl::encoding::Encode<u16, D>,
13026        T3: fidl::encoding::Encode<u8, D>,
13027        T4: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D>,
13028        T5: fidl::encoding::Encode<u16, D>,
13029        T6: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
13030        T7: fidl::encoding::Encode<Country, D>,
13031        T8: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
13032        T9: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>, D>,
13033        T10: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::WlanPhyType, D>,
13034        T11: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth, D>,
13035    > fidl::encoding::Encode<StartRequest, D>
13036        for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
13037    {
13038        #[inline]
13039        unsafe fn encode(
13040            self,
13041            encoder: &mut fidl::encoding::Encoder<'_, D>,
13042            offset: usize,
13043            depth: fidl::encoding::Depth,
13044        ) -> fidl::Result<()> {
13045            encoder.debug_check_bounds::<StartRequest>(offset);
13046            // Zero out padding regions. There's no need to apply masks
13047            // because the unmasked parts will be overwritten by fields.
13048            unsafe {
13049                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
13050                (ptr as *mut u64).write_unaligned(0);
13051            }
13052            unsafe {
13053                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(48);
13054                (ptr as *mut u64).write_unaligned(0);
13055            }
13056            // Write the fields.
13057            self.0.encode(encoder, offset + 0, depth)?;
13058            self.1.encode(encoder, offset + 16, depth)?;
13059            self.2.encode(encoder, offset + 20, depth)?;
13060            self.3.encode(encoder, offset + 22, depth)?;
13061            self.4.encode(encoder, offset + 23, depth)?;
13062            self.5.encode(encoder, offset + 26, depth)?;
13063            self.6.encode(encoder, offset + 32, depth)?;
13064            self.7.encode(encoder, offset + 48, depth)?;
13065            self.8.encode(encoder, offset + 56, depth)?;
13066            self.9.encode(encoder, offset + 72, depth)?;
13067            self.10.encode(encoder, offset + 88, depth)?;
13068            self.11.encode(encoder, offset + 92, depth)?;
13069            Ok(())
13070        }
13071    }
13072
13073    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartRequest {
13074        #[inline(always)]
13075        fn new_empty() -> Self {
13076            Self {
13077                ssid: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
13078                bss_type: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::BssType, D),
13079                beacon_period: fidl::new_empty!(u16, D),
13080                dtim_period: fidl::new_empty!(u8, D),
13081                primary: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ChannelNumber, D),
13082                capability_info: fidl::new_empty!(u16, D),
13083                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
13084                country: fidl::new_empty!(Country, D),
13085                mesh_id: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
13086                rsne: fidl::new_empty!(
13087                    fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
13088                    D
13089                ),
13090                phy: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::WlanPhyType, D),
13091                bandwidth: fidl::new_empty!(
13092                    fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth,
13093                    D
13094                ),
13095            }
13096        }
13097
13098        #[inline]
13099        unsafe fn decode(
13100            &mut self,
13101            decoder: &mut fidl::encoding::Decoder<'_, D>,
13102            offset: usize,
13103            _depth: fidl::encoding::Depth,
13104        ) -> fidl::Result<()> {
13105            decoder.debug_check_bounds::<Self>(offset);
13106            // Verify that padding bytes are zero.
13107            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
13108            let padval = unsafe { (ptr as *const u64).read_unaligned() };
13109            let mask = 0xffffffff0000ff00u64;
13110            let maskedval = padval & mask;
13111            if maskedval != 0 {
13112                return Err(fidl::Error::NonZeroPadding {
13113                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
13114                });
13115            }
13116            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(48) };
13117            let padval = unsafe { (ptr as *const u64).read_unaligned() };
13118            let mask = 0xffffffffff000000u64;
13119            let maskedval = padval & mask;
13120            if maskedval != 0 {
13121                return Err(fidl::Error::NonZeroPadding {
13122                    padding_start: offset + 48 + ((mask as u64).trailing_zeros() / 8) as usize,
13123                });
13124            }
13125            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.ssid, decoder, offset + 0, _depth)?;
13126            fidl::decode!(
13127                fidl_fuchsia_wlan_ieee80211_common::BssType,
13128                D,
13129                &mut self.bss_type,
13130                decoder,
13131                offset + 16,
13132                _depth
13133            )?;
13134            fidl::decode!(u16, D, &mut self.beacon_period, decoder, offset + 20, _depth)?;
13135            fidl::decode!(u8, D, &mut self.dtim_period, decoder, offset + 22, _depth)?;
13136            fidl::decode!(
13137                fidl_fuchsia_wlan_ieee80211_common::ChannelNumber,
13138                D,
13139                &mut self.primary,
13140                decoder,
13141                offset + 23,
13142                _depth
13143            )?;
13144            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 26, _depth)?;
13145            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 32, _depth)?;
13146            fidl::decode!(Country, D, &mut self.country, decoder, offset + 48, _depth)?;
13147            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.mesh_id, decoder, offset + 56, _depth)?;
13148            fidl::decode!(
13149                fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
13150                D,
13151                &mut self.rsne,
13152                decoder,
13153                offset + 72,
13154                _depth
13155            )?;
13156            fidl::decode!(
13157                fidl_fuchsia_wlan_ieee80211_common::WlanPhyType,
13158                D,
13159                &mut self.phy,
13160                decoder,
13161                offset + 88,
13162                _depth
13163            )?;
13164            fidl::decode!(
13165                fidl_fuchsia_wlan_ieee80211_common::ChannelBandwidth,
13166                D,
13167                &mut self.bandwidth,
13168                decoder,
13169                offset + 92,
13170                _depth
13171            )?;
13172            Ok(())
13173        }
13174    }
13175
13176    impl fidl::encoding::ValueTypeMarker for StopConfirm {
13177        type Borrowed<'a> = &'a Self;
13178        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13179            value
13180        }
13181    }
13182
13183    unsafe impl fidl::encoding::TypeMarker for StopConfirm {
13184        type Owned = Self;
13185
13186        #[inline(always)]
13187        fn inline_align(_context: fidl::encoding::Context) -> usize {
13188            4
13189        }
13190
13191        #[inline(always)]
13192        fn inline_size(_context: fidl::encoding::Context) -> usize {
13193            4
13194        }
13195    }
13196
13197    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopConfirm, D>
13198        for &StopConfirm
13199    {
13200        #[inline]
13201        unsafe fn encode(
13202            self,
13203            encoder: &mut fidl::encoding::Encoder<'_, D>,
13204            offset: usize,
13205            _depth: fidl::encoding::Depth,
13206        ) -> fidl::Result<()> {
13207            encoder.debug_check_bounds::<StopConfirm>(offset);
13208            // Delegate to tuple encoding.
13209            fidl::encoding::Encode::<StopConfirm, D>::encode(
13210                (<StopResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),),
13211                encoder,
13212                offset,
13213                _depth,
13214            )
13215        }
13216    }
13217    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopResultCode, D>>
13218        fidl::encoding::Encode<StopConfirm, D> for (T0,)
13219    {
13220        #[inline]
13221        unsafe fn encode(
13222            self,
13223            encoder: &mut fidl::encoding::Encoder<'_, D>,
13224            offset: usize,
13225            depth: fidl::encoding::Depth,
13226        ) -> fidl::Result<()> {
13227            encoder.debug_check_bounds::<StopConfirm>(offset);
13228            // Zero out padding regions. There's no need to apply masks
13229            // because the unmasked parts will be overwritten by fields.
13230            // Write the fields.
13231            self.0.encode(encoder, offset + 0, depth)?;
13232            Ok(())
13233        }
13234    }
13235
13236    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopConfirm {
13237        #[inline(always)]
13238        fn new_empty() -> Self {
13239            Self { result_code: fidl::new_empty!(StopResultCode, D) }
13240        }
13241
13242        #[inline]
13243        unsafe fn decode(
13244            &mut self,
13245            decoder: &mut fidl::encoding::Decoder<'_, D>,
13246            offset: usize,
13247            _depth: fidl::encoding::Depth,
13248        ) -> fidl::Result<()> {
13249            decoder.debug_check_bounds::<Self>(offset);
13250            // Verify that padding bytes are zero.
13251            fidl::decode!(StopResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
13252            Ok(())
13253        }
13254    }
13255
13256    impl fidl::encoding::ValueTypeMarker for StopRequest {
13257        type Borrowed<'a> = &'a Self;
13258        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13259            value
13260        }
13261    }
13262
13263    unsafe impl fidl::encoding::TypeMarker for StopRequest {
13264        type Owned = Self;
13265
13266        #[inline(always)]
13267        fn inline_align(_context: fidl::encoding::Context) -> usize {
13268            8
13269        }
13270
13271        #[inline(always)]
13272        fn inline_size(_context: fidl::encoding::Context) -> usize {
13273            16
13274        }
13275    }
13276
13277    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopRequest, D>
13278        for &StopRequest
13279    {
13280        #[inline]
13281        unsafe fn encode(
13282            self,
13283            encoder: &mut fidl::encoding::Encoder<'_, D>,
13284            offset: usize,
13285            _depth: fidl::encoding::Depth,
13286        ) -> fidl::Result<()> {
13287            encoder.debug_check_bounds::<StopRequest>(offset);
13288            // Delegate to tuple encoding.
13289            fidl::encoding::Encode::<StopRequest, D>::encode(
13290                (<fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(
13291                    &self.ssid,
13292                ),),
13293                encoder,
13294                offset,
13295                _depth,
13296            )
13297        }
13298    }
13299    unsafe impl<
13300        D: fidl::encoding::ResourceDialect,
13301        T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
13302    > fidl::encoding::Encode<StopRequest, D> for (T0,)
13303    {
13304        #[inline]
13305        unsafe fn encode(
13306            self,
13307            encoder: &mut fidl::encoding::Encoder<'_, D>,
13308            offset: usize,
13309            depth: fidl::encoding::Depth,
13310        ) -> fidl::Result<()> {
13311            encoder.debug_check_bounds::<StopRequest>(offset);
13312            // Zero out padding regions. There's no need to apply masks
13313            // because the unmasked parts will be overwritten by fields.
13314            // Write the fields.
13315            self.0.encode(encoder, offset + 0, depth)?;
13316            Ok(())
13317        }
13318    }
13319
13320    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopRequest {
13321        #[inline(always)]
13322        fn new_empty() -> Self {
13323            Self { ssid: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D) }
13324        }
13325
13326        #[inline]
13327        unsafe fn decode(
13328            &mut self,
13329            decoder: &mut fidl::encoding::Decoder<'_, D>,
13330            offset: usize,
13331            _depth: fidl::encoding::Depth,
13332        ) -> fidl::Result<()> {
13333            decoder.debug_check_bounds::<Self>(offset);
13334            // Verify that padding bytes are zero.
13335            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.ssid, decoder, offset + 0, _depth)?;
13336            Ok(())
13337        }
13338    }
13339
13340    impl fidl::encoding::ValueTypeMarker for WmmParameter {
13341        type Borrowed<'a> = &'a Self;
13342        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13343            value
13344        }
13345    }
13346
13347    unsafe impl fidl::encoding::TypeMarker for WmmParameter {
13348        type Owned = Self;
13349
13350        #[inline(always)]
13351        fn inline_align(_context: fidl::encoding::Context) -> usize {
13352            1
13353        }
13354
13355        #[inline(always)]
13356        fn inline_size(_context: fidl::encoding::Context) -> usize {
13357            18
13358        }
13359        #[inline(always)]
13360        fn encode_is_copy() -> bool {
13361            true
13362        }
13363
13364        #[inline(always)]
13365        fn decode_is_copy() -> bool {
13366            true
13367        }
13368    }
13369
13370    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WmmParameter, D>
13371        for &WmmParameter
13372    {
13373        #[inline]
13374        unsafe fn encode(
13375            self,
13376            encoder: &mut fidl::encoding::Encoder<'_, D>,
13377            offset: usize,
13378            _depth: fidl::encoding::Depth,
13379        ) -> fidl::Result<()> {
13380            encoder.debug_check_bounds::<WmmParameter>(offset);
13381            unsafe {
13382                // Copy the object into the buffer.
13383                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
13384                (buf_ptr as *mut WmmParameter)
13385                    .write_unaligned((self as *const WmmParameter).read());
13386                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
13387                // done second because the memcpy will write garbage to these bytes.
13388            }
13389            Ok(())
13390        }
13391    }
13392    unsafe impl<
13393        D: fidl::encoding::ResourceDialect,
13394        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 18>, D>,
13395    > fidl::encoding::Encode<WmmParameter, D> for (T0,)
13396    {
13397        #[inline]
13398        unsafe fn encode(
13399            self,
13400            encoder: &mut fidl::encoding::Encoder<'_, D>,
13401            offset: usize,
13402            depth: fidl::encoding::Depth,
13403        ) -> fidl::Result<()> {
13404            encoder.debug_check_bounds::<WmmParameter>(offset);
13405            // Zero out padding regions. There's no need to apply masks
13406            // because the unmasked parts will be overwritten by fields.
13407            // Write the fields.
13408            self.0.encode(encoder, offset + 0, depth)?;
13409            Ok(())
13410        }
13411    }
13412
13413    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WmmParameter {
13414        #[inline(always)]
13415        fn new_empty() -> Self {
13416            Self { bytes: fidl::new_empty!(fidl::encoding::Array<u8, 18>, D) }
13417        }
13418
13419        #[inline]
13420        unsafe fn decode(
13421            &mut self,
13422            decoder: &mut fidl::encoding::Decoder<'_, D>,
13423            offset: usize,
13424            _depth: fidl::encoding::Depth,
13425        ) -> fidl::Result<()> {
13426            decoder.debug_check_bounds::<Self>(offset);
13427            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
13428            // Verify that padding bytes are zero.
13429            // Copy from the buffer into the object.
13430            unsafe {
13431                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 18);
13432            }
13433            Ok(())
13434        }
13435    }
13436
13437    impl fidl::encoding::ValueTypeMarker for GetIfaceHistogramStatsResponse {
13438        type Borrowed<'a> = &'a Self;
13439        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13440            value
13441        }
13442    }
13443
13444    unsafe impl fidl::encoding::TypeMarker for GetIfaceHistogramStatsResponse {
13445        type Owned = Self;
13446
13447        #[inline(always)]
13448        fn inline_align(_context: fidl::encoding::Context) -> usize {
13449            8
13450        }
13451
13452        #[inline(always)]
13453        fn inline_size(_context: fidl::encoding::Context) -> usize {
13454            16
13455        }
13456    }
13457
13458    unsafe impl<D: fidl::encoding::ResourceDialect>
13459        fidl::encoding::Encode<GetIfaceHistogramStatsResponse, D>
13460        for &GetIfaceHistogramStatsResponse
13461    {
13462        #[inline]
13463        unsafe fn encode(
13464            self,
13465            encoder: &mut fidl::encoding::Encoder<'_, D>,
13466            offset: usize,
13467            _depth: fidl::encoding::Depth,
13468        ) -> fidl::Result<()> {
13469            encoder.debug_check_bounds::<GetIfaceHistogramStatsResponse>(offset);
13470            encoder.write_num::<u64>(self.ordinal(), offset);
13471            match self {
13472            GetIfaceHistogramStatsResponse::Stats(ref val) => {
13473                fidl::encoding::encode_in_envelope::<fidl_fuchsia_wlan_stats_common::IfaceHistogramStats, D>(
13474                    <fidl_fuchsia_wlan_stats_common::IfaceHistogramStats as fidl::encoding::ValueTypeMarker>::borrow(val),
13475                    encoder, offset + 8, _depth
13476                )
13477            }
13478            GetIfaceHistogramStatsResponse::ErrorStatus(ref val) => {
13479                fidl::encoding::encode_in_envelope::<i32, D>(
13480                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
13481                    encoder, offset + 8, _depth
13482                )
13483            }
13484        }
13485        }
13486    }
13487
13488    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13489        for GetIfaceHistogramStatsResponse
13490    {
13491        #[inline(always)]
13492        fn new_empty() -> Self {
13493            Self::Stats(fidl::new_empty!(fidl_fuchsia_wlan_stats_common::IfaceHistogramStats, D))
13494        }
13495
13496        #[inline]
13497        unsafe fn decode(
13498            &mut self,
13499            decoder: &mut fidl::encoding::Decoder<'_, D>,
13500            offset: usize,
13501            mut depth: fidl::encoding::Depth,
13502        ) -> fidl::Result<()> {
13503            decoder.debug_check_bounds::<Self>(offset);
13504            #[allow(unused_variables)]
13505            let next_out_of_line = decoder.next_out_of_line();
13506            let handles_before = decoder.remaining_handles();
13507            let (ordinal, inlined, num_bytes, num_handles) =
13508                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
13509
13510            let member_inline_size = match ordinal {
13511            1 => <fidl_fuchsia_wlan_stats_common::IfaceHistogramStats as fidl::encoding::TypeMarker>::inline_size(decoder.context),
13512            2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
13513            _ => return Err(fidl::Error::UnknownUnionTag),
13514        };
13515
13516            if inlined != (member_inline_size <= 4) {
13517                return Err(fidl::Error::InvalidInlineBitInEnvelope);
13518            }
13519            let _inner_offset;
13520            if inlined {
13521                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
13522                _inner_offset = offset + 8;
13523            } else {
13524                depth.increment()?;
13525                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13526            }
13527            match ordinal {
13528                1 => {
13529                    #[allow(irrefutable_let_patterns)]
13530                    if let GetIfaceHistogramStatsResponse::Stats(_) = self {
13531                        // Do nothing, read the value into the object
13532                    } else {
13533                        // Initialize `self` to the right variant
13534                        *self = GetIfaceHistogramStatsResponse::Stats(fidl::new_empty!(
13535                            fidl_fuchsia_wlan_stats_common::IfaceHistogramStats,
13536                            D
13537                        ));
13538                    }
13539                    #[allow(irrefutable_let_patterns)]
13540                    if let GetIfaceHistogramStatsResponse::Stats(ref mut val) = self {
13541                        fidl::decode!(
13542                            fidl_fuchsia_wlan_stats_common::IfaceHistogramStats,
13543                            D,
13544                            val,
13545                            decoder,
13546                            _inner_offset,
13547                            depth
13548                        )?;
13549                    } else {
13550                        unreachable!()
13551                    }
13552                }
13553                2 => {
13554                    #[allow(irrefutable_let_patterns)]
13555                    if let GetIfaceHistogramStatsResponse::ErrorStatus(_) = self {
13556                        // Do nothing, read the value into the object
13557                    } else {
13558                        // Initialize `self` to the right variant
13559                        *self =
13560                            GetIfaceHistogramStatsResponse::ErrorStatus(fidl::new_empty!(i32, D));
13561                    }
13562                    #[allow(irrefutable_let_patterns)]
13563                    if let GetIfaceHistogramStatsResponse::ErrorStatus(ref mut val) = self {
13564                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
13565                    } else {
13566                        unreachable!()
13567                    }
13568                }
13569                ordinal => panic!("unexpected ordinal {:?}", ordinal),
13570            }
13571            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
13572                return Err(fidl::Error::InvalidNumBytesInEnvelope);
13573            }
13574            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13575                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13576            }
13577            Ok(())
13578        }
13579    }
13580
13581    impl fidl::encoding::ValueTypeMarker for GetIfaceStatsResponse {
13582        type Borrowed<'a> = &'a Self;
13583        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13584            value
13585        }
13586    }
13587
13588    unsafe impl fidl::encoding::TypeMarker for GetIfaceStatsResponse {
13589        type Owned = Self;
13590
13591        #[inline(always)]
13592        fn inline_align(_context: fidl::encoding::Context) -> usize {
13593            8
13594        }
13595
13596        #[inline(always)]
13597        fn inline_size(_context: fidl::encoding::Context) -> usize {
13598            16
13599        }
13600    }
13601
13602    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<GetIfaceStatsResponse, D>
13603        for &GetIfaceStatsResponse
13604    {
13605        #[inline]
13606        unsafe fn encode(
13607            self,
13608            encoder: &mut fidl::encoding::Encoder<'_, D>,
13609            offset: usize,
13610            _depth: fidl::encoding::Depth,
13611        ) -> fidl::Result<()> {
13612            encoder.debug_check_bounds::<GetIfaceStatsResponse>(offset);
13613            encoder.write_num::<u64>(self.ordinal(), offset);
13614            match self {
13615            GetIfaceStatsResponse::Stats(ref val) => {
13616                fidl::encoding::encode_in_envelope::<fidl_fuchsia_wlan_stats_common::IfaceStats, D>(
13617                    <fidl_fuchsia_wlan_stats_common::IfaceStats as fidl::encoding::ValueTypeMarker>::borrow(val),
13618                    encoder, offset + 8, _depth
13619                )
13620            }
13621            GetIfaceStatsResponse::ErrorStatus(ref val) => {
13622                fidl::encoding::encode_in_envelope::<i32, D>(
13623                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
13624                    encoder, offset + 8, _depth
13625                )
13626            }
13627        }
13628        }
13629    }
13630
13631    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GetIfaceStatsResponse {
13632        #[inline(always)]
13633        fn new_empty() -> Self {
13634            Self::Stats(fidl::new_empty!(fidl_fuchsia_wlan_stats_common::IfaceStats, D))
13635        }
13636
13637        #[inline]
13638        unsafe fn decode(
13639            &mut self,
13640            decoder: &mut fidl::encoding::Decoder<'_, D>,
13641            offset: usize,
13642            mut depth: fidl::encoding::Depth,
13643        ) -> fidl::Result<()> {
13644            decoder.debug_check_bounds::<Self>(offset);
13645            #[allow(unused_variables)]
13646            let next_out_of_line = decoder.next_out_of_line();
13647            let handles_before = decoder.remaining_handles();
13648            let (ordinal, inlined, num_bytes, num_handles) =
13649                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
13650
13651            let member_inline_size = match ordinal {
13652            1 => <fidl_fuchsia_wlan_stats_common::IfaceStats as fidl::encoding::TypeMarker>::inline_size(decoder.context),
13653            2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
13654            _ => return Err(fidl::Error::UnknownUnionTag),
13655        };
13656
13657            if inlined != (member_inline_size <= 4) {
13658                return Err(fidl::Error::InvalidInlineBitInEnvelope);
13659            }
13660            let _inner_offset;
13661            if inlined {
13662                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
13663                _inner_offset = offset + 8;
13664            } else {
13665                depth.increment()?;
13666                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13667            }
13668            match ordinal {
13669                1 => {
13670                    #[allow(irrefutable_let_patterns)]
13671                    if let GetIfaceStatsResponse::Stats(_) = self {
13672                        // Do nothing, read the value into the object
13673                    } else {
13674                        // Initialize `self` to the right variant
13675                        *self = GetIfaceStatsResponse::Stats(fidl::new_empty!(
13676                            fidl_fuchsia_wlan_stats_common::IfaceStats,
13677                            D
13678                        ));
13679                    }
13680                    #[allow(irrefutable_let_patterns)]
13681                    if let GetIfaceStatsResponse::Stats(ref mut val) = self {
13682                        fidl::decode!(
13683                            fidl_fuchsia_wlan_stats_common::IfaceStats,
13684                            D,
13685                            val,
13686                            decoder,
13687                            _inner_offset,
13688                            depth
13689                        )?;
13690                    } else {
13691                        unreachable!()
13692                    }
13693                }
13694                2 => {
13695                    #[allow(irrefutable_let_patterns)]
13696                    if let GetIfaceStatsResponse::ErrorStatus(_) = self {
13697                        // Do nothing, read the value into the object
13698                    } else {
13699                        // Initialize `self` to the right variant
13700                        *self = GetIfaceStatsResponse::ErrorStatus(fidl::new_empty!(i32, D));
13701                    }
13702                    #[allow(irrefutable_let_patterns)]
13703                    if let GetIfaceStatsResponse::ErrorStatus(ref mut val) = self {
13704                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
13705                    } else {
13706                        unreachable!()
13707                    }
13708                }
13709                ordinal => panic!("unexpected ordinal {:?}", ordinal),
13710            }
13711            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
13712                return Err(fidl::Error::InvalidNumBytesInEnvelope);
13713            }
13714            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13715                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13716            }
13717            Ok(())
13718        }
13719    }
13720}