fidl_fuchsia_wlan_mlme__common/
fidl_fuchsia_wlan_mlme__common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11/// WFA WMM v1.2, 2.2.1
12pub type QosInfo = u8;
13
14pub const MAX_SSIDS_PER_SCAN_REQUEST: u32 = 32;
15
16/// WFA WMM v1.2, 2.2.2 Table 5
17/// Length of the WMM Parameter Element body. This does not include IE and vendor IE headers,
18/// and only includes the QoS Info, reserved, and AC parameters fields.
19pub const WMM_PARAM_LEN: u8 = 18;
20
21pub const COUNTRY_ENVIRON_ALL: u8 = 32;
22
23pub const COUNTRY_ENVIRON_INDOOR: u8 = 73;
24
25pub const COUNTRY_ENVIRON_NON_COUNTRY: u8 = 88;
26
27pub const COUNTRY_ENVIRON_OUTDOOR: u8 = 79;
28
29bitflags! {
30    /// Bits used to request management frame subtypes to be captured. Also used in
31    /// StartCaptureFramesResponse to indicate what management frames are supported.
32    ///
33    /// These values are set at `1 << MgmtFrameSubtypeValue`
34    /// See IEEE Std 802.11-2016, 9.2.4.1.3, for value of each management frame subtype
35    #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
36    pub struct MgmtFrameCaptureFlags: u32 {
37        const ASSOC_REQ = 1;
38        const ASSOC_RESP = 2;
39        const REASSOC_REQ = 4;
40        const REASSOC_RESP = 8;
41        const PROBE_REQ = 16;
42        const PROBE_RESP = 32;
43        const TIMING_AD = 64;
44        const BEACON = 256;
45        const ATIM = 512;
46        const DISASSOC = 1024;
47        const AUTH = 2048;
48        const DEAUTH = 4096;
49        const ACTION = 8192;
50        const ACTION_NO_ACK = 16384;
51    }
52}
53
54impl MgmtFrameCaptureFlags {}
55
56#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
57#[repr(u32)]
58pub enum AssociateResultCode {
59    Success = 0,
60    RefusedReasonUnspecified = 1,
61    RefusedNotAuthenticated = 2,
62    RefusedCapabilitiesMismatch = 3,
63    RefusedExternalReason = 4,
64    RefusedApOutOfMemory = 5,
65    RefusedBasicRatesMismatch = 6,
66    RejectedEmergencyServicesNotSupported = 7,
67    RefusedTemporarily = 8,
68}
69
70impl AssociateResultCode {
71    #[inline]
72    pub fn from_primitive(prim: u32) -> Option<Self> {
73        match prim {
74            0 => Some(Self::Success),
75            1 => Some(Self::RefusedReasonUnspecified),
76            2 => Some(Self::RefusedNotAuthenticated),
77            3 => Some(Self::RefusedCapabilitiesMismatch),
78            4 => Some(Self::RefusedExternalReason),
79            5 => Some(Self::RefusedApOutOfMemory),
80            6 => Some(Self::RefusedBasicRatesMismatch),
81            7 => Some(Self::RejectedEmergencyServicesNotSupported),
82            8 => Some(Self::RefusedTemporarily),
83            _ => None,
84        }
85    }
86
87    #[inline]
88    pub const fn into_primitive(self) -> u32 {
89        self as u32
90    }
91}
92
93#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
94#[repr(u32)]
95pub enum AuthenticateResultCode {
96    Success = 0,
97    Refused = 1,
98    AntiCloggingTokenRequired = 2,
99    FiniteCyclicGroupNotSupported = 3,
100    AuthenticationRejected = 4,
101    AuthFailureTimeout = 5,
102}
103
104impl AuthenticateResultCode {
105    #[inline]
106    pub fn from_primitive(prim: u32) -> Option<Self> {
107        match prim {
108            0 => Some(Self::Success),
109            1 => Some(Self::Refused),
110            2 => Some(Self::AntiCloggingTokenRequired),
111            3 => Some(Self::FiniteCyclicGroupNotSupported),
112            4 => Some(Self::AuthenticationRejected),
113            5 => Some(Self::AuthFailureTimeout),
114            _ => None,
115        }
116    }
117
118    #[inline]
119    pub const fn into_primitive(self) -> u32 {
120        self as u32
121    }
122}
123
124#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
125#[repr(u32)]
126pub enum AuthenticationTypes {
127    OpenSystem = 1,
128    SharedKey = 2,
129    FastBssTransition = 3,
130    Sae = 4,
131}
132
133impl AuthenticationTypes {
134    #[inline]
135    pub fn from_primitive(prim: u32) -> Option<Self> {
136        match prim {
137            1 => Some(Self::OpenSystem),
138            2 => Some(Self::SharedKey),
139            3 => Some(Self::FastBssTransition),
140            4 => Some(Self::Sae),
141            _ => None,
142        }
143    }
144
145    #[inline]
146    pub const fn into_primitive(self) -> u32 {
147        self as u32
148    }
149}
150
151#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
152#[repr(u32)]
153pub enum ControlledPortState {
154    Closed = 0,
155    Open = 1,
156}
157
158impl ControlledPortState {
159    #[inline]
160    pub fn from_primitive(prim: u32) -> Option<Self> {
161        match prim {
162            0 => Some(Self::Closed),
163            1 => Some(Self::Open),
164            _ => None,
165        }
166    }
167
168    #[inline]
169    pub const fn into_primitive(self) -> u32 {
170        self as u32
171    }
172}
173
174#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
175#[repr(u32)]
176pub enum EapolResultCode {
177    Success = 0,
178    TransmissionFailure = 1,
179}
180
181impl EapolResultCode {
182    #[inline]
183    pub fn from_primitive(prim: u32) -> Option<Self> {
184        match prim {
185            0 => Some(Self::Success),
186            1 => Some(Self::TransmissionFailure),
187            _ => None,
188        }
189    }
190
191    #[inline]
192    pub const fn into_primitive(self) -> u32 {
193        self as u32
194    }
195}
196
197#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
198#[repr(u32)]
199pub enum KeyType {
200    Group = 1,
201    Pairwise = 2,
202    PeerKey = 3,
203    Igtk = 4,
204}
205
206impl KeyType {
207    #[inline]
208    pub fn from_primitive(prim: u32) -> Option<Self> {
209        match prim {
210            1 => Some(Self::Group),
211            2 => Some(Self::Pairwise),
212            3 => Some(Self::PeerKey),
213            4 => Some(Self::Igtk),
214            _ => None,
215        }
216    }
217
218    #[inline]
219    pub const fn into_primitive(self) -> u32 {
220        self as u32
221    }
222}
223
224#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
225#[repr(u32)]
226pub enum ScanResultCode {
227    Success = 0,
228    NotSupported = 1,
229    InvalidArgs = 2,
230    InternalError = 3,
231    ShouldWait = 4,
232    CanceledByDriverOrFirmware = 5,
233}
234
235impl ScanResultCode {
236    #[inline]
237    pub fn from_primitive(prim: u32) -> Option<Self> {
238        match prim {
239            0 => Some(Self::Success),
240            1 => Some(Self::NotSupported),
241            2 => Some(Self::InvalidArgs),
242            3 => Some(Self::InternalError),
243            4 => Some(Self::ShouldWait),
244            5 => Some(Self::CanceledByDriverOrFirmware),
245            _ => None,
246        }
247    }
248
249    #[inline]
250    pub const fn into_primitive(self) -> u32 {
251        self as u32
252    }
253}
254
255#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
256#[repr(u32)]
257pub enum ScanTypes {
258    Active = 1,
259    Passive = 2,
260}
261
262impl ScanTypes {
263    #[inline]
264    pub fn from_primitive(prim: u32) -> Option<Self> {
265        match prim {
266            1 => Some(Self::Active),
267            2 => Some(Self::Passive),
268            _ => None,
269        }
270    }
271
272    #[inline]
273    pub const fn into_primitive(self) -> u32 {
274        self as u32
275    }
276}
277
278#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
279#[repr(u32)]
280pub enum StartResultCode {
281    Success = 0,
282    BssAlreadyStartedOrJoined = 1,
283    ResetRequiredBeforeStart = 2,
284    NotSupported = 3,
285    InternalError = 4,
286}
287
288impl StartResultCode {
289    #[inline]
290    pub fn from_primitive(prim: u32) -> Option<Self> {
291        match prim {
292            0 => Some(Self::Success),
293            1 => Some(Self::BssAlreadyStartedOrJoined),
294            2 => Some(Self::ResetRequiredBeforeStart),
295            3 => Some(Self::NotSupported),
296            4 => Some(Self::InternalError),
297            _ => None,
298        }
299    }
300
301    #[inline]
302    pub const fn into_primitive(self) -> u32 {
303        self as u32
304    }
305}
306
307#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
308#[repr(u32)]
309pub enum StopResultCode {
310    Success = 0,
311    BssAlreadyStopped = 1,
312    InternalError = 2,
313}
314
315impl StopResultCode {
316    #[inline]
317    pub fn from_primitive(prim: u32) -> Option<Self> {
318        match prim {
319            0 => Some(Self::Success),
320            1 => Some(Self::BssAlreadyStopped),
321            2 => Some(Self::InternalError),
322            _ => None,
323        }
324    }
325
326    #[inline]
327    pub const fn into_primitive(self) -> u32 {
328        self as u32
329    }
330}
331
332#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
333pub struct AssociateIndication {
334    pub peer_sta_address: [u8; 6],
335    pub capability_info: u16,
336    pub listen_interval: u16,
337    pub ssid: Option<Vec<u8>>,
338    pub rates: Vec<u8>,
339    pub rsne: Option<Vec<u8>>,
340}
341
342impl fidl::Persistable for AssociateIndication {}
343
344#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
345pub struct AssociateResponse {
346    pub peer_sta_address: [u8; 6],
347    pub result_code: AssociateResultCode,
348    pub association_id: u16,
349    pub capability_info: u16,
350    pub rates: Vec<u8>,
351}
352
353impl fidl::Persistable for AssociateResponse {}
354
355#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
356pub struct AuthenticateIndication {
357    pub peer_sta_address: [u8; 6],
358    pub auth_type: AuthenticationTypes,
359}
360
361impl fidl::Persistable for AuthenticateIndication {}
362
363#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
364pub struct AuthenticateResponse {
365    pub peer_sta_address: [u8; 6],
366    pub result_code: AuthenticateResultCode,
367}
368
369impl fidl::Persistable for AuthenticateResponse {}
370
371#[derive(Clone, Debug, PartialEq)]
372pub struct BandCapability {
373    /// The values of this struct apply to the band indicated in this field.
374    pub band: fidl_fuchsia_wlan_ieee80211__common::WlanBand,
375    /// Basic rates supported in units of 500 kbit/s (as defined in
376    /// IEEE Std 802.11-2016, 9.4.2.3), e.g., 0x02 represents 1 Mbps.
377    /// The value returned by this type indicates all the non-HT rates
378    /// the device supports transmitting and receiving.
379    pub basic_rates: Vec<u8>,
380    pub ht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>>,
381    pub vht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>>,
382    /// A list of operating channels considered valid by hardware, in the context of
383    /// regulatory information known to the device driver, at the time of its
384    /// construction during iface creation. In this context, an operating channel
385    /// means a channel which APs may transmit Beacon frames on in the current
386    /// regulatory domain.
387    ///
388    /// This list should be used to determine efficacy of subsequent requests to
389    /// scan a subset of channels using the iface, or to determine which operating
390    /// channel to use when starting an AP.
391    pub operating_channels: Vec<u8>,
392}
393
394impl fidl::Persistable for BandCapability {}
395
396#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
397pub struct CapturedFrameResult {
398    pub frame: Vec<u8>,
399}
400
401impl fidl::Persistable for CapturedFrameResult {}
402
403#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
404pub struct ConnectConfirm {
405    pub peer_sta_address: [u8; 6],
406    pub result_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
407    pub association_id: u16,
408    pub association_ies: Vec<u8>,
409}
410
411impl fidl::Persistable for ConnectConfirm {}
412
413#[derive(Clone, Debug, PartialEq)]
414pub struct ConnectRequest {
415    pub selected_bss: fidl_fuchsia_wlan_common__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, Debug, PartialEq)]
552pub struct MlmeGetSignalReportResponse {
553    pub resp: fidl_fuchsia_wlan_stats__common::SignalReport,
554}
555
556impl fidl::Persistable for MlmeGetSignalReportResponse {}
557
558#[derive(Clone, Debug, PartialEq)]
559pub struct MlmeQueryTelemetrySupportResponse {
560    pub resp: fidl_fuchsia_wlan_stats__common::TelemetrySupport,
561}
562
563impl fidl::Persistable for MlmeQueryTelemetrySupportResponse {}
564
565#[derive(Clone, Debug, PartialEq)]
566pub struct MinstrelListResponse {
567    pub peers: fidl_fuchsia_wlan_minstrel__common::Peers,
568}
569
570impl fidl::Persistable for MinstrelListResponse {}
571
572#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
573#[repr(C)]
574pub struct MinstrelStatsRequest {
575    pub peer_addr: [u8; 6],
576}
577
578impl fidl::Persistable for MinstrelStatsRequest {}
579
580#[derive(Clone, Debug, PartialEq)]
581pub struct MinstrelStatsResponse {
582    pub peer: Option<Box<fidl_fuchsia_wlan_minstrel__common::Peer>>,
583}
584
585impl fidl::Persistable for MinstrelStatsResponse {}
586
587#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
588pub struct MlmeAssociateIndRequest {
589    pub ind: AssociateIndication,
590}
591
592impl fidl::Persistable for MlmeAssociateIndRequest {}
593
594#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
595pub struct MlmeAssociateRespRequest {
596    pub resp: AssociateResponse,
597}
598
599impl fidl::Persistable for MlmeAssociateRespRequest {}
600
601#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
602pub struct MlmeAuthenticateIndRequest {
603    pub ind: AuthenticateIndication,
604}
605
606impl fidl::Persistable for MlmeAuthenticateIndRequest {}
607
608#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
609pub struct MlmeAuthenticateRespRequest {
610    pub resp: AuthenticateResponse,
611}
612
613impl fidl::Persistable for MlmeAuthenticateRespRequest {}
614
615#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
616pub struct MlmeConnectConfRequest {
617    pub resp: ConnectConfirm,
618}
619
620impl fidl::Persistable for MlmeConnectConfRequest {}
621
622#[derive(Clone, Debug, PartialEq)]
623pub struct MlmeConnectReqRequest {
624    pub req: ConnectRequest,
625}
626
627impl fidl::Persistable for MlmeConnectReqRequest {}
628
629#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
630#[repr(C)]
631pub struct MlmeDeauthenticateConfRequest {
632    pub resp: DeauthenticateConfirm,
633}
634
635impl fidl::Persistable for MlmeDeauthenticateConfRequest {}
636
637#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
638pub struct MlmeDeauthenticateIndRequest {
639    pub ind: DeauthenticateIndication,
640}
641
642impl fidl::Persistable for MlmeDeauthenticateIndRequest {}
643
644#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
645pub struct MlmeDeauthenticateReqRequest {
646    pub req: DeauthenticateRequest,
647}
648
649impl fidl::Persistable for MlmeDeauthenticateReqRequest {}
650
651#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
652pub struct MlmeDeleteKeysReqRequest {
653    pub req: DeleteKeysRequest,
654}
655
656impl fidl::Persistable for MlmeDeleteKeysReqRequest {}
657
658#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
659#[repr(C)]
660pub struct MlmeDisassociateConfRequest {
661    pub resp: DisassociateConfirm,
662}
663
664impl fidl::Persistable for MlmeDisassociateConfRequest {}
665
666#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
667pub struct MlmeDisassociateIndRequest {
668    pub ind: DisassociateIndication,
669}
670
671impl fidl::Persistable for MlmeDisassociateIndRequest {}
672
673#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
674pub struct MlmeDisassociateReqRequest {
675    pub req: DisassociateRequest,
676}
677
678impl fidl::Persistable for MlmeDisassociateReqRequest {}
679
680#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
681pub struct MlmeEapolConfRequest {
682    pub resp: EapolConfirm,
683}
684
685impl fidl::Persistable for MlmeEapolConfRequest {}
686
687#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
688pub struct MlmeEapolIndRequest {
689    pub ind: EapolIndication,
690}
691
692impl fidl::Persistable for MlmeEapolIndRequest {}
693
694#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
695pub struct MlmeEapolReqRequest {
696    pub req: EapolRequest,
697}
698
699impl fidl::Persistable for MlmeEapolReqRequest {}
700
701#[derive(Clone, Debug, PartialEq)]
702pub struct MlmeFinalizeAssociationReqRequest {
703    pub negotiated_capabilities: NegotiatedCapabilities,
704}
705
706impl fidl::Persistable for MlmeFinalizeAssociationReqRequest {}
707
708#[derive(Clone, Debug, PartialEq)]
709pub struct MlmeGetIfaceHistogramStatsResponse {
710    pub resp: GetIfaceHistogramStatsResponse,
711}
712
713impl fidl::Persistable for MlmeGetIfaceHistogramStatsResponse {}
714
715#[derive(Clone, Debug, PartialEq)]
716pub struct MlmeGetIfaceStatsResponse {
717    pub resp: GetIfaceStatsResponse,
718}
719
720impl fidl::Persistable for MlmeGetIfaceStatsResponse {}
721
722#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
723#[repr(C)]
724pub struct MlmeGetMinstrelStatsRequest {
725    pub req: MinstrelStatsRequest,
726}
727
728impl fidl::Persistable for MlmeGetMinstrelStatsRequest {}
729
730#[derive(Clone, Debug, PartialEq)]
731pub struct MlmeGetMinstrelStatsResponse {
732    pub resp: MinstrelStatsResponse,
733}
734
735impl fidl::Persistable for MlmeGetMinstrelStatsResponse {}
736
737#[derive(Clone, Debug, PartialEq)]
738pub struct MlmeListMinstrelPeersResponse {
739    pub resp: MinstrelListResponse,
740}
741
742impl fidl::Persistable for MlmeListMinstrelPeersResponse {}
743
744#[derive(Clone, Debug, PartialEq)]
745pub struct MlmeOnChannelSwitchedRequest {
746    pub info: fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo,
747}
748
749impl fidl::Persistable for MlmeOnChannelSwitchedRequest {}
750
751#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
752pub struct MlmeOnPmkAvailableRequest {
753    pub info: PmkInfo,
754}
755
756impl fidl::Persistable for MlmeOnPmkAvailableRequest {}
757
758#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
759pub struct MlmeOnSaeFrameRxRequest {
760    pub frame: SaeFrame,
761}
762
763impl fidl::Persistable for MlmeOnSaeFrameRxRequest {}
764
765#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
766#[repr(C)]
767pub struct MlmeOnSaeHandshakeIndRequest {
768    pub ind: SaeHandshakeIndication,
769}
770
771impl fidl::Persistable for MlmeOnSaeHandshakeIndRequest {}
772
773#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
774pub struct MlmeOnScanEndRequest {
775    pub end: ScanEnd,
776}
777
778impl fidl::Persistable for MlmeOnScanEndRequest {}
779
780#[derive(Clone, Debug, PartialEq)]
781pub struct MlmeOnScanResultRequest {
782    pub result: ScanResult,
783}
784
785impl fidl::Persistable for MlmeOnScanResultRequest {}
786
787#[derive(Clone, Debug, PartialEq)]
788pub struct MlmeOnWmmStatusRespRequest {
789    pub status: i32,
790    pub resp: fidl_fuchsia_wlan_internal__common::WmmStatusResponse,
791}
792
793impl fidl::Persistable for MlmeOnWmmStatusRespRequest {}
794
795#[derive(Clone, Debug, PartialEq)]
796pub struct MlmeQueryDeviceInfoResponse {
797    pub info: DeviceInfo,
798}
799
800impl fidl::Persistable for MlmeQueryDeviceInfoResponse {}
801
802#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
803#[repr(C)]
804pub struct MlmeReconnectReqRequest {
805    pub req: ReconnectRequest,
806}
807
808impl fidl::Persistable for MlmeReconnectReqRequest {}
809
810#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
811pub struct MlmeRelayCapturedFrameRequest {
812    pub result: CapturedFrameResult,
813}
814
815impl fidl::Persistable for MlmeRelayCapturedFrameRequest {}
816
817#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
818pub struct MlmeResetReqRequest {
819    pub req: ResetRequest,
820}
821
822impl fidl::Persistable for MlmeResetReqRequest {}
823
824#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
825pub struct MlmeRoamConfRequest {
826    pub conf: RoamConfirm,
827}
828
829impl fidl::Persistable for MlmeRoamConfRequest {}
830
831#[derive(Clone, Debug, PartialEq)]
832pub struct MlmeRoamReqRequest {
833    pub req: RoamRequest,
834}
835
836impl fidl::Persistable for MlmeRoamReqRequest {}
837
838#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
839pub struct MlmeRoamResultIndRequest {
840    pub ind: RoamResultIndication,
841}
842
843impl fidl::Persistable for MlmeRoamResultIndRequest {}
844
845#[derive(Clone, Debug, PartialEq)]
846pub struct MlmeRoamStartIndRequest {
847    pub ind: RoamStartIndication,
848}
849
850impl fidl::Persistable for MlmeRoamStartIndRequest {}
851
852#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
853pub struct MlmeSaeFrameTxRequest {
854    pub frame: SaeFrame,
855}
856
857impl fidl::Persistable for MlmeSaeFrameTxRequest {}
858
859#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
860pub struct MlmeSaeHandshakeRespRequest {
861    pub resp: SaeHandshakeResponse,
862}
863
864impl fidl::Persistable for MlmeSaeHandshakeRespRequest {}
865
866#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
867pub struct MlmeSetControlledPortRequest {
868    pub req: SetControlledPortRequest,
869}
870
871impl fidl::Persistable for MlmeSetControlledPortRequest {}
872
873#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
874pub struct MlmeSetKeysConfRequest {
875    pub conf: SetKeysConfirm,
876}
877
878impl fidl::Persistable for MlmeSetKeysConfRequest {}
879
880#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
881pub struct MlmeSetKeysReqRequest {
882    pub req: SetKeysRequest,
883}
884
885impl fidl::Persistable for MlmeSetKeysReqRequest {}
886
887#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
888#[repr(C)]
889pub struct MlmeSetMacAddressRequest {
890    pub mac_addr: [u8; 6],
891}
892
893impl fidl::Persistable for MlmeSetMacAddressRequest {}
894
895#[derive(Clone, Debug, PartialEq)]
896pub struct MlmeSignalReportRequest {
897    pub ind: fidl_fuchsia_wlan_internal__common::SignalReportIndication,
898}
899
900impl fidl::Persistable for MlmeSignalReportRequest {}
901
902#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
903pub struct MlmeStartCaptureFramesRequest {
904    pub req: StartCaptureFramesRequest,
905}
906
907impl fidl::Persistable for MlmeStartCaptureFramesRequest {}
908
909#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
910pub struct MlmeStartCaptureFramesResponse {
911    pub resp: StartCaptureFramesResponse,
912}
913
914impl fidl::Persistable for MlmeStartCaptureFramesResponse {}
915
916#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
917pub struct MlmeStartConfRequest {
918    pub resp: StartConfirm,
919}
920
921impl fidl::Persistable for MlmeStartConfRequest {}
922
923#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
924pub struct MlmeStartReqRequest {
925    pub req: StartRequest,
926}
927
928impl fidl::Persistable for MlmeStartReqRequest {}
929
930#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
931pub struct MlmeStartScanRequest {
932    pub req: ScanRequest,
933}
934
935impl fidl::Persistable for MlmeStartScanRequest {}
936
937#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
938pub struct MlmeStopConfRequest {
939    pub resp: StopConfirm,
940}
941
942impl fidl::Persistable for MlmeStopConfRequest {}
943
944#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
945pub struct MlmeStopReqRequest {
946    pub req: StopRequest,
947}
948
949impl fidl::Persistable for MlmeStopReqRequest {}
950
951/// Non-IEEE custom structure to inform a SoftMAC device about the association negotiation outcome.
952#[derive(Clone, Debug, PartialEq)]
953pub struct NegotiatedCapabilities {
954    pub channel: fidl_fuchsia_wlan_ieee80211__common::WlanChannel,
955    pub capability_info: u16,
956    pub rates: Vec<u8>,
957    pub wmm_param: Option<Box<WmmParameter>>,
958    pub ht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>>,
959    pub vht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>>,
960}
961
962impl fidl::Persistable for NegotiatedCapabilities {}
963
964#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
965pub struct PmkInfo {
966    pub pmk: Vec<u8>,
967    pub pmkid: Vec<u8>,
968}
969
970impl fidl::Persistable for PmkInfo {}
971
972#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
973#[repr(C)]
974pub struct ReconnectRequest {
975    pub peer_sta_address: [u8; 6],
976}
977
978impl fidl::Persistable for ReconnectRequest {}
979
980#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
981pub struct ResetRequest {
982    pub sta_address: [u8; 6],
983    pub set_default_mib: bool,
984}
985
986impl fidl::Persistable for ResetRequest {}
987
988/// Result of an SME-initiated roam attempt.
989#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
990pub struct RoamConfirm {
991    pub selected_bssid: [u8; 6],
992    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
993    /// Whether the original BSS association has been maintained through the roam attempt.
994    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
995    /// success then this field must be set to false; a roam failure typically incurs disassociation
996    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
997    pub original_association_maintained: bool,
998    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
999    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1000    /// This allows higher layers to decide how to clean up connection state after a failed roam
1001    /// attempt.
1002    pub target_bss_authenticated: bool,
1003    pub association_id: u16,
1004    pub association_ies: Vec<u8>,
1005}
1006
1007impl fidl::Persistable for RoamConfirm {}
1008
1009#[derive(Clone, Debug, PartialEq)]
1010pub struct RoamRequest {
1011    pub selected_bss: fidl_fuchsia_wlan_common__common::BssDescription,
1012}
1013
1014impl fidl::Persistable for RoamRequest {}
1015
1016/// Result of a fullmac-initiated roam attempt.
1017#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1018pub struct RoamResultIndication {
1019    pub selected_bssid: [u8; 6],
1020    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
1021    /// Whether the original BSS association has been maintained through the roam attempt.
1022    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1023    /// success then this field must be set to false; a roam failure typically incurs disassociation
1024    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1025    pub original_association_maintained: bool,
1026    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1027    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1028    /// This allows higher layers to decide how to clean up connection state after a failed roam
1029    /// attempt.
1030    pub target_bss_authenticated: bool,
1031    pub association_id: u16,
1032    pub association_ies: Vec<u8>,
1033}
1034
1035impl fidl::Persistable for RoamResultIndication {}
1036
1037/// In-progress fullmac-initiated roam attempt details.
1038#[derive(Clone, Debug, PartialEq)]
1039pub struct RoamStartIndication {
1040    pub selected_bssid: [u8; 6],
1041    pub selected_bss: fidl_fuchsia_wlan_common__common::BssDescription,
1042    /// Whether the original BSS association has been maintained at the start of a roam attempt.
1043    /// 802.11 dictates that a STA can only be associated with a single BSS, so a roam attempt
1044    /// typically incurs disassociation at the start of the roam attempt. However, 802.11 also
1045    /// provides a mechanism (i.e. Fast BSS Transition) that allows a device to maintain
1046    /// association with the original BSS while establishing authentication with the target BSS, in
1047    /// order to avoid losing the original association if authentication with the target BSS fails.
1048    pub original_association_maintained: bool,
1049}
1050
1051impl fidl::Persistable for RoamStartIndication {}
1052
1053#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1054pub struct SaeFrame {
1055    pub peer_sta_address: [u8; 6],
1056    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
1057    pub seq_num: u16,
1058    pub sae_fields: Vec<u8>,
1059}
1060
1061impl fidl::Persistable for SaeFrame {}
1062
1063#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1064#[repr(C)]
1065pub struct SaeHandshakeIndication {
1066    pub peer_sta_address: [u8; 6],
1067}
1068
1069impl fidl::Persistable for SaeHandshakeIndication {}
1070
1071#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1072pub struct SaeHandshakeResponse {
1073    pub peer_sta_address: [u8; 6],
1074    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
1075}
1076
1077impl fidl::Persistable for SaeHandshakeResponse {}
1078
1079#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1080pub struct ScanEnd {
1081    pub txn_id: u64,
1082    pub code: ScanResultCode,
1083}
1084
1085impl fidl::Persistable for ScanEnd {}
1086
1087#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1088pub struct ScanRequest {
1089    pub txn_id: u64,
1090    pub scan_type: ScanTypes,
1091    /// List of channels to scan on. An empty list of channels will cause a
1092    /// scan request to immediately return a ScanEnd with code INVALID_ARGS.
1093    ///
1094    /// Invalid channel numbers will be silently ignored. The validity of a channel
1095    /// number depends on the current regulatory region, and MLME does not control
1096    /// or know this setting.
1097    pub channel_list: Vec<u8>,
1098    /// List of SSIDs to scan for. An empty list of ssids is the same as specifying
1099    /// a list containing only the wildcard SSID.
1100    ///
1101    /// There is no limit on the number of SSIDs specified. A large number of
1102    /// SSIDs may result in extended scan times because of hardware limitations on
1103    /// the number of SSIDs permitted per scan request and the technical limitation
1104    /// in IEEE 802.11-2016 that limits the number of SSIDs in a single Probe Request
1105    /// frame to ieee80211.SSID_LIST_MAX SSIDs.
1106    pub ssid_list: Vec<Vec<u8>>,
1107    pub probe_delay: u32,
1108    pub min_channel_time: u32,
1109    pub max_channel_time: u32,
1110}
1111
1112impl fidl::Persistable for ScanRequest {}
1113
1114#[derive(Clone, Debug, PartialEq)]
1115pub struct ScanResult {
1116    pub txn_id: u64,
1117    pub timestamp_nanos: i64,
1118    pub bss: fidl_fuchsia_wlan_common__common::BssDescription,
1119}
1120
1121impl fidl::Persistable for ScanResult {}
1122
1123#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1124pub struct SetControlledPortRequest {
1125    pub peer_sta_address: [u8; 6],
1126    pub state: ControlledPortState,
1127}
1128
1129impl fidl::Persistable for SetControlledPortRequest {}
1130
1131#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1132pub struct SetKeyDescriptor {
1133    pub key: Vec<u8>,
1134    pub key_id: u16,
1135    pub key_type: KeyType,
1136    pub address: [u8; 6],
1137    pub rsc: u64,
1138    pub cipher_suite_oui: [u8; 3],
1139    pub cipher_suite_type: fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
1140}
1141
1142impl fidl::Persistable for SetKeyDescriptor {}
1143
1144#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1145#[repr(C)]
1146pub struct SetKeyResult {
1147    pub key_id: u16,
1148    pub status: i32,
1149}
1150
1151impl fidl::Persistable for SetKeyResult {}
1152
1153#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1154pub struct SetKeysConfirm {
1155    pub results: Vec<SetKeyResult>,
1156}
1157
1158impl fidl::Persistable for SetKeysConfirm {}
1159
1160#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1161pub struct SetKeysRequest {
1162    pub keylist: Vec<SetKeyDescriptor>,
1163}
1164
1165impl fidl::Persistable for SetKeysRequest {}
1166
1167#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1168pub struct StartCaptureFramesRequest {
1169    pub mgmt_frame_flags: MgmtFrameCaptureFlags,
1170}
1171
1172impl fidl::Persistable for StartCaptureFramesRequest {}
1173
1174#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1175pub struct StartCaptureFramesResponse {
1176    pub status: i32,
1177    pub supported_mgmt_frames: MgmtFrameCaptureFlags,
1178}
1179
1180impl fidl::Persistable for StartCaptureFramesResponse {}
1181
1182#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1183pub struct StartConfirm {
1184    pub result_code: StartResultCode,
1185}
1186
1187impl fidl::Persistable for StartConfirm {}
1188
1189#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1190pub struct StartRequest {
1191    pub ssid: Vec<u8>,
1192    pub bss_type: fidl_fuchsia_wlan_common__common::BssType,
1193    pub beacon_period: u16,
1194    pub dtim_period: u8,
1195    pub channel: u8,
1196    pub capability_info: u16,
1197    pub rates: Vec<u8>,
1198    pub country: Country,
1199    pub mesh_id: Vec<u8>,
1200    pub rsne: Option<Vec<u8>>,
1201    pub phy: fidl_fuchsia_wlan_common__common::WlanPhyType,
1202    pub channel_bandwidth: fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth,
1203}
1204
1205impl fidl::Persistable for StartRequest {}
1206
1207#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1208pub struct StopConfirm {
1209    pub result_code: StopResultCode,
1210}
1211
1212impl fidl::Persistable for StopConfirm {}
1213
1214#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1215pub struct StopRequest {
1216    pub ssid: Vec<u8>,
1217}
1218
1219impl fidl::Persistable for StopRequest {}
1220
1221#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1222#[repr(C)]
1223pub struct WmmParameter {
1224    pub bytes: [u8; 18],
1225}
1226
1227impl fidl::Persistable for WmmParameter {}
1228
1229#[derive(Clone, Debug, PartialEq)]
1230pub enum GetIfaceHistogramStatsResponse {
1231    Stats(fidl_fuchsia_wlan_stats__common::IfaceHistogramStats),
1232    ErrorStatus(i32),
1233}
1234
1235impl GetIfaceHistogramStatsResponse {
1236    #[inline]
1237    pub fn ordinal(&self) -> u64 {
1238        match *self {
1239            Self::Stats(_) => 1,
1240            Self::ErrorStatus(_) => 2,
1241        }
1242    }
1243}
1244
1245impl fidl::Persistable for GetIfaceHistogramStatsResponse {}
1246
1247#[derive(Clone, Debug, PartialEq)]
1248pub enum GetIfaceStatsResponse {
1249    Stats(fidl_fuchsia_wlan_stats__common::IfaceStats),
1250    ErrorStatus(i32),
1251}
1252
1253impl GetIfaceStatsResponse {
1254    #[inline]
1255    pub fn ordinal(&self) -> u64 {
1256        match *self {
1257            Self::Stats(_) => 1,
1258            Self::ErrorStatus(_) => 2,
1259        }
1260    }
1261}
1262
1263impl fidl::Persistable for GetIfaceStatsResponse {}
1264
1265pub mod connector_ordinals {
1266    pub const CONNECT: u64 = 0x42131859717af962;
1267}
1268
1269pub mod mlme_ordinals {
1270    pub const START_SCAN: u64 = 0x342cc5ec6a957479;
1271    pub const ON_SCAN_RESULT: u64 = 0x681af7466a75074d;
1272    pub const ON_SCAN_END: u64 = 0x7f2702d253e7ca59;
1273    pub const CONNECT_REQ: u64 = 0x31153dc85f8f64c;
1274    pub const CONNECT_CONF: u64 = 0x77b27623279b981e;
1275    pub const RECONNECT_REQ: u64 = 0x74e0f1bd758b6b78;
1276    pub const ROAM_REQ: u64 = 0x3ba163eadf7dba45;
1277    pub const ROAM_CONF: u64 = 0x3f608034faa054bc;
1278    pub const ROAM_START_IND: u64 = 0x270a1ec78672d094;
1279    pub const ROAM_RESULT_IND: u64 = 0x26d074364fc84865;
1280    pub const AUTHENTICATE_IND: u64 = 0x460f49ae891adbe9;
1281    pub const AUTHENTICATE_RESP: u64 = 0x26108aade2fdd2f4;
1282    pub const DEAUTHENTICATE_REQ: u64 = 0x228983b200de5d12;
1283    pub const DEAUTHENTICATE_CONF: u64 = 0x3b44debc21b88c8c;
1284    pub const DEAUTHENTICATE_IND: u64 = 0x7ee0889b326da1d7;
1285    pub const ASSOCIATE_IND: u64 = 0x6a86f20e3063dd63;
1286    pub const ASSOCIATE_RESP: u64 = 0x70244dbd652ed6d9;
1287    pub const DISASSOCIATE_REQ: u64 = 0x5765807f1387d764;
1288    pub const DISASSOCIATE_CONF: u64 = 0x61345fbce732a28d;
1289    pub const DISASSOCIATE_IND: u64 = 0x77ac0ebf387c1f35;
1290    pub const RESET_REQ: u64 = 0x780b98c58a286b9f;
1291    pub const START_REQ: u64 = 0x5d95885f8053654;
1292    pub const START_CONF: u64 = 0x15ea6cdf3b8382b3;
1293    pub const STOP_REQ: u64 = 0x27b9a2ab04a2c79f;
1294    pub const STOP_CONF: u64 = 0x50b426ef4a84a2df;
1295    pub const SET_KEYS_REQ: u64 = 0x6b30a07fd3a11a79;
1296    pub const SET_KEYS_CONF: u64 = 0x5bafb3a8d4039380;
1297    pub const DELETE_KEYS_REQ: u64 = 0x1e3524d20d190c8f;
1298    pub const EAPOL_REQ: u64 = 0xc3c096924704d4;
1299    pub const EAPOL_CONF: u64 = 0x6ffa21f4ee73ce64;
1300    pub const SIGNAL_REPORT: u64 = 0x48f32a876aa53d8f;
1301    pub const EAPOL_IND: u64 = 0x7038dca46a3142fc;
1302    pub const SET_CONTROLLED_PORT: u64 = 0x4e47065668890c8d;
1303    pub const QUERY_DEVICE_INFO: u64 = 0x6ee3e7f63f2b7bc0;
1304    pub const QUERY_TELEMETRY_SUPPORT: u64 = 0x1598879b70332c99;
1305    pub const GET_IFACE_STATS: u64 = 0xede1a8342d1b211;
1306    pub const GET_IFACE_HISTOGRAM_STATS: u64 = 0x1979c9d3449f8675;
1307    pub const GET_SIGNAL_REPORT: u64 = 0x7e47e7ebe92acec9;
1308    pub const LIST_MINSTREL_PEERS: u64 = 0x4ac5d1e66fe1ffd5;
1309    pub const GET_MINSTREL_STATS: u64 = 0x2f688b1245323f4b;
1310    pub const START_CAPTURE_FRAMES: u64 = 0x23b369ed5749ee69;
1311    pub const STOP_CAPTURE_FRAMES: u64 = 0x2f1aebbc68bf7c54;
1312    pub const RELAY_CAPTURED_FRAME: u64 = 0x6f00a6f3cff9b1f5;
1313    pub const ON_CHANNEL_SWITCHED: u64 = 0x581750594e4c0c1;
1314    pub const ON_PMK_AVAILABLE: u64 = 0x1314fc2c79643f90;
1315    pub const ON_SAE_HANDSHAKE_IND: u64 = 0x6308b10e18986d7e;
1316    pub const SAE_HANDSHAKE_RESP: u64 = 0x28477bd2f7a5ab0c;
1317    pub const SAE_FRAME_TX: u64 = 0x7700c0d536733d8c;
1318    pub const ON_SAE_FRAME_RX: u64 = 0x4ebf51c86ef5f3cd;
1319    pub const WMM_STATUS_REQ: u64 = 0xef4851f6088fede;
1320    pub const ON_WMM_STATUS_RESP: u64 = 0x53f056b432e7b5cb;
1321    pub const FINALIZE_ASSOCIATION_REQ: u64 = 0x7aea59787cfd385a;
1322    pub const SET_MAC_ADDRESS: u64 = 0x476999f9bb27afe1;
1323}
1324
1325mod internal {
1326    use super::*;
1327    unsafe impl fidl::encoding::TypeMarker for MgmtFrameCaptureFlags {
1328        type Owned = Self;
1329
1330        #[inline(always)]
1331        fn inline_align(_context: fidl::encoding::Context) -> usize {
1332            4
1333        }
1334
1335        #[inline(always)]
1336        fn inline_size(_context: fidl::encoding::Context) -> usize {
1337            4
1338        }
1339    }
1340
1341    impl fidl::encoding::ValueTypeMarker for MgmtFrameCaptureFlags {
1342        type Borrowed<'a> = Self;
1343        #[inline(always)]
1344        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1345            *value
1346        }
1347    }
1348
1349    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1350        for MgmtFrameCaptureFlags
1351    {
1352        #[inline]
1353        unsafe fn encode(
1354            self,
1355            encoder: &mut fidl::encoding::Encoder<'_, D>,
1356            offset: usize,
1357            _depth: fidl::encoding::Depth,
1358        ) -> fidl::Result<()> {
1359            encoder.debug_check_bounds::<Self>(offset);
1360            if self.bits() & Self::all().bits() != self.bits() {
1361                return Err(fidl::Error::InvalidBitsValue);
1362            }
1363            encoder.write_num(self.bits(), offset);
1364            Ok(())
1365        }
1366    }
1367
1368    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MgmtFrameCaptureFlags {
1369        #[inline(always)]
1370        fn new_empty() -> Self {
1371            Self::empty()
1372        }
1373
1374        #[inline]
1375        unsafe fn decode(
1376            &mut self,
1377            decoder: &mut fidl::encoding::Decoder<'_, D>,
1378            offset: usize,
1379            _depth: fidl::encoding::Depth,
1380        ) -> fidl::Result<()> {
1381            decoder.debug_check_bounds::<Self>(offset);
1382            let prim = decoder.read_num::<u32>(offset);
1383            *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
1384            Ok(())
1385        }
1386    }
1387    unsafe impl fidl::encoding::TypeMarker for AssociateResultCode {
1388        type Owned = Self;
1389
1390        #[inline(always)]
1391        fn inline_align(_context: fidl::encoding::Context) -> usize {
1392            std::mem::align_of::<u32>()
1393        }
1394
1395        #[inline(always)]
1396        fn inline_size(_context: fidl::encoding::Context) -> usize {
1397            std::mem::size_of::<u32>()
1398        }
1399
1400        #[inline(always)]
1401        fn encode_is_copy() -> bool {
1402            true
1403        }
1404
1405        #[inline(always)]
1406        fn decode_is_copy() -> bool {
1407            false
1408        }
1409    }
1410
1411    impl fidl::encoding::ValueTypeMarker for AssociateResultCode {
1412        type Borrowed<'a> = Self;
1413        #[inline(always)]
1414        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1415            *value
1416        }
1417    }
1418
1419    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1420        for AssociateResultCode
1421    {
1422        #[inline]
1423        unsafe fn encode(
1424            self,
1425            encoder: &mut fidl::encoding::Encoder<'_, D>,
1426            offset: usize,
1427            _depth: fidl::encoding::Depth,
1428        ) -> fidl::Result<()> {
1429            encoder.debug_check_bounds::<Self>(offset);
1430            encoder.write_num(self.into_primitive(), offset);
1431            Ok(())
1432        }
1433    }
1434
1435    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateResultCode {
1436        #[inline(always)]
1437        fn new_empty() -> Self {
1438            Self::Success
1439        }
1440
1441        #[inline]
1442        unsafe fn decode(
1443            &mut self,
1444            decoder: &mut fidl::encoding::Decoder<'_, D>,
1445            offset: usize,
1446            _depth: fidl::encoding::Depth,
1447        ) -> fidl::Result<()> {
1448            decoder.debug_check_bounds::<Self>(offset);
1449            let prim = decoder.read_num::<u32>(offset);
1450
1451            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1452            Ok(())
1453        }
1454    }
1455    unsafe impl fidl::encoding::TypeMarker for AuthenticateResultCode {
1456        type Owned = Self;
1457
1458        #[inline(always)]
1459        fn inline_align(_context: fidl::encoding::Context) -> usize {
1460            std::mem::align_of::<u32>()
1461        }
1462
1463        #[inline(always)]
1464        fn inline_size(_context: fidl::encoding::Context) -> usize {
1465            std::mem::size_of::<u32>()
1466        }
1467
1468        #[inline(always)]
1469        fn encode_is_copy() -> bool {
1470            true
1471        }
1472
1473        #[inline(always)]
1474        fn decode_is_copy() -> bool {
1475            false
1476        }
1477    }
1478
1479    impl fidl::encoding::ValueTypeMarker for AuthenticateResultCode {
1480        type Borrowed<'a> = Self;
1481        #[inline(always)]
1482        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1483            *value
1484        }
1485    }
1486
1487    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1488        for AuthenticateResultCode
1489    {
1490        #[inline]
1491        unsafe fn encode(
1492            self,
1493            encoder: &mut fidl::encoding::Encoder<'_, D>,
1494            offset: usize,
1495            _depth: fidl::encoding::Depth,
1496        ) -> fidl::Result<()> {
1497            encoder.debug_check_bounds::<Self>(offset);
1498            encoder.write_num(self.into_primitive(), offset);
1499            Ok(())
1500        }
1501    }
1502
1503    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1504        for AuthenticateResultCode
1505    {
1506        #[inline(always)]
1507        fn new_empty() -> Self {
1508            Self::Success
1509        }
1510
1511        #[inline]
1512        unsafe fn decode(
1513            &mut self,
1514            decoder: &mut fidl::encoding::Decoder<'_, D>,
1515            offset: usize,
1516            _depth: fidl::encoding::Depth,
1517        ) -> fidl::Result<()> {
1518            decoder.debug_check_bounds::<Self>(offset);
1519            let prim = decoder.read_num::<u32>(offset);
1520
1521            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1522            Ok(())
1523        }
1524    }
1525    unsafe impl fidl::encoding::TypeMarker for AuthenticationTypes {
1526        type Owned = Self;
1527
1528        #[inline(always)]
1529        fn inline_align(_context: fidl::encoding::Context) -> usize {
1530            std::mem::align_of::<u32>()
1531        }
1532
1533        #[inline(always)]
1534        fn inline_size(_context: fidl::encoding::Context) -> usize {
1535            std::mem::size_of::<u32>()
1536        }
1537
1538        #[inline(always)]
1539        fn encode_is_copy() -> bool {
1540            true
1541        }
1542
1543        #[inline(always)]
1544        fn decode_is_copy() -> bool {
1545            false
1546        }
1547    }
1548
1549    impl fidl::encoding::ValueTypeMarker for AuthenticationTypes {
1550        type Borrowed<'a> = Self;
1551        #[inline(always)]
1552        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1553            *value
1554        }
1555    }
1556
1557    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1558        for AuthenticationTypes
1559    {
1560        #[inline]
1561        unsafe fn encode(
1562            self,
1563            encoder: &mut fidl::encoding::Encoder<'_, D>,
1564            offset: usize,
1565            _depth: fidl::encoding::Depth,
1566        ) -> fidl::Result<()> {
1567            encoder.debug_check_bounds::<Self>(offset);
1568            encoder.write_num(self.into_primitive(), offset);
1569            Ok(())
1570        }
1571    }
1572
1573    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AuthenticationTypes {
1574        #[inline(always)]
1575        fn new_empty() -> Self {
1576            Self::OpenSystem
1577        }
1578
1579        #[inline]
1580        unsafe fn decode(
1581            &mut self,
1582            decoder: &mut fidl::encoding::Decoder<'_, D>,
1583            offset: usize,
1584            _depth: fidl::encoding::Depth,
1585        ) -> fidl::Result<()> {
1586            decoder.debug_check_bounds::<Self>(offset);
1587            let prim = decoder.read_num::<u32>(offset);
1588
1589            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1590            Ok(())
1591        }
1592    }
1593    unsafe impl fidl::encoding::TypeMarker for ControlledPortState {
1594        type Owned = Self;
1595
1596        #[inline(always)]
1597        fn inline_align(_context: fidl::encoding::Context) -> usize {
1598            std::mem::align_of::<u32>()
1599        }
1600
1601        #[inline(always)]
1602        fn inline_size(_context: fidl::encoding::Context) -> usize {
1603            std::mem::size_of::<u32>()
1604        }
1605
1606        #[inline(always)]
1607        fn encode_is_copy() -> bool {
1608            true
1609        }
1610
1611        #[inline(always)]
1612        fn decode_is_copy() -> bool {
1613            false
1614        }
1615    }
1616
1617    impl fidl::encoding::ValueTypeMarker for ControlledPortState {
1618        type Borrowed<'a> = Self;
1619        #[inline(always)]
1620        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1621            *value
1622        }
1623    }
1624
1625    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1626        for ControlledPortState
1627    {
1628        #[inline]
1629        unsafe fn encode(
1630            self,
1631            encoder: &mut fidl::encoding::Encoder<'_, D>,
1632            offset: usize,
1633            _depth: fidl::encoding::Depth,
1634        ) -> fidl::Result<()> {
1635            encoder.debug_check_bounds::<Self>(offset);
1636            encoder.write_num(self.into_primitive(), offset);
1637            Ok(())
1638        }
1639    }
1640
1641    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlledPortState {
1642        #[inline(always)]
1643        fn new_empty() -> Self {
1644            Self::Closed
1645        }
1646
1647        #[inline]
1648        unsafe fn decode(
1649            &mut self,
1650            decoder: &mut fidl::encoding::Decoder<'_, D>,
1651            offset: usize,
1652            _depth: fidl::encoding::Depth,
1653        ) -> fidl::Result<()> {
1654            decoder.debug_check_bounds::<Self>(offset);
1655            let prim = decoder.read_num::<u32>(offset);
1656
1657            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1658            Ok(())
1659        }
1660    }
1661    unsafe impl fidl::encoding::TypeMarker for EapolResultCode {
1662        type Owned = Self;
1663
1664        #[inline(always)]
1665        fn inline_align(_context: fidl::encoding::Context) -> usize {
1666            std::mem::align_of::<u32>()
1667        }
1668
1669        #[inline(always)]
1670        fn inline_size(_context: fidl::encoding::Context) -> usize {
1671            std::mem::size_of::<u32>()
1672        }
1673
1674        #[inline(always)]
1675        fn encode_is_copy() -> bool {
1676            true
1677        }
1678
1679        #[inline(always)]
1680        fn decode_is_copy() -> bool {
1681            false
1682        }
1683    }
1684
1685    impl fidl::encoding::ValueTypeMarker for EapolResultCode {
1686        type Borrowed<'a> = Self;
1687        #[inline(always)]
1688        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1689            *value
1690        }
1691    }
1692
1693    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1694        for EapolResultCode
1695    {
1696        #[inline]
1697        unsafe fn encode(
1698            self,
1699            encoder: &mut fidl::encoding::Encoder<'_, D>,
1700            offset: usize,
1701            _depth: fidl::encoding::Depth,
1702        ) -> fidl::Result<()> {
1703            encoder.debug_check_bounds::<Self>(offset);
1704            encoder.write_num(self.into_primitive(), offset);
1705            Ok(())
1706        }
1707    }
1708
1709    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolResultCode {
1710        #[inline(always)]
1711        fn new_empty() -> Self {
1712            Self::Success
1713        }
1714
1715        #[inline]
1716        unsafe fn decode(
1717            &mut self,
1718            decoder: &mut fidl::encoding::Decoder<'_, D>,
1719            offset: usize,
1720            _depth: fidl::encoding::Depth,
1721        ) -> fidl::Result<()> {
1722            decoder.debug_check_bounds::<Self>(offset);
1723            let prim = decoder.read_num::<u32>(offset);
1724
1725            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1726            Ok(())
1727        }
1728    }
1729    unsafe impl fidl::encoding::TypeMarker for KeyType {
1730        type Owned = Self;
1731
1732        #[inline(always)]
1733        fn inline_align(_context: fidl::encoding::Context) -> usize {
1734            std::mem::align_of::<u32>()
1735        }
1736
1737        #[inline(always)]
1738        fn inline_size(_context: fidl::encoding::Context) -> usize {
1739            std::mem::size_of::<u32>()
1740        }
1741
1742        #[inline(always)]
1743        fn encode_is_copy() -> bool {
1744            true
1745        }
1746
1747        #[inline(always)]
1748        fn decode_is_copy() -> bool {
1749            false
1750        }
1751    }
1752
1753    impl fidl::encoding::ValueTypeMarker for KeyType {
1754        type Borrowed<'a> = Self;
1755        #[inline(always)]
1756        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1757            *value
1758        }
1759    }
1760
1761    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for KeyType {
1762        #[inline]
1763        unsafe fn encode(
1764            self,
1765            encoder: &mut fidl::encoding::Encoder<'_, D>,
1766            offset: usize,
1767            _depth: fidl::encoding::Depth,
1768        ) -> fidl::Result<()> {
1769            encoder.debug_check_bounds::<Self>(offset);
1770            encoder.write_num(self.into_primitive(), offset);
1771            Ok(())
1772        }
1773    }
1774
1775    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for KeyType {
1776        #[inline(always)]
1777        fn new_empty() -> Self {
1778            Self::Group
1779        }
1780
1781        #[inline]
1782        unsafe fn decode(
1783            &mut self,
1784            decoder: &mut fidl::encoding::Decoder<'_, D>,
1785            offset: usize,
1786            _depth: fidl::encoding::Depth,
1787        ) -> fidl::Result<()> {
1788            decoder.debug_check_bounds::<Self>(offset);
1789            let prim = decoder.read_num::<u32>(offset);
1790
1791            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1792            Ok(())
1793        }
1794    }
1795    unsafe impl fidl::encoding::TypeMarker for ScanResultCode {
1796        type Owned = Self;
1797
1798        #[inline(always)]
1799        fn inline_align(_context: fidl::encoding::Context) -> usize {
1800            std::mem::align_of::<u32>()
1801        }
1802
1803        #[inline(always)]
1804        fn inline_size(_context: fidl::encoding::Context) -> usize {
1805            std::mem::size_of::<u32>()
1806        }
1807
1808        #[inline(always)]
1809        fn encode_is_copy() -> bool {
1810            true
1811        }
1812
1813        #[inline(always)]
1814        fn decode_is_copy() -> bool {
1815            false
1816        }
1817    }
1818
1819    impl fidl::encoding::ValueTypeMarker for ScanResultCode {
1820        type Borrowed<'a> = Self;
1821        #[inline(always)]
1822        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1823            *value
1824        }
1825    }
1826
1827    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanResultCode {
1828        #[inline]
1829        unsafe fn encode(
1830            self,
1831            encoder: &mut fidl::encoding::Encoder<'_, D>,
1832            offset: usize,
1833            _depth: fidl::encoding::Depth,
1834        ) -> fidl::Result<()> {
1835            encoder.debug_check_bounds::<Self>(offset);
1836            encoder.write_num(self.into_primitive(), offset);
1837            Ok(())
1838        }
1839    }
1840
1841    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanResultCode {
1842        #[inline(always)]
1843        fn new_empty() -> Self {
1844            Self::Success
1845        }
1846
1847        #[inline]
1848        unsafe fn decode(
1849            &mut self,
1850            decoder: &mut fidl::encoding::Decoder<'_, D>,
1851            offset: usize,
1852            _depth: fidl::encoding::Depth,
1853        ) -> fidl::Result<()> {
1854            decoder.debug_check_bounds::<Self>(offset);
1855            let prim = decoder.read_num::<u32>(offset);
1856
1857            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1858            Ok(())
1859        }
1860    }
1861    unsafe impl fidl::encoding::TypeMarker for ScanTypes {
1862        type Owned = Self;
1863
1864        #[inline(always)]
1865        fn inline_align(_context: fidl::encoding::Context) -> usize {
1866            std::mem::align_of::<u32>()
1867        }
1868
1869        #[inline(always)]
1870        fn inline_size(_context: fidl::encoding::Context) -> usize {
1871            std::mem::size_of::<u32>()
1872        }
1873
1874        #[inline(always)]
1875        fn encode_is_copy() -> bool {
1876            true
1877        }
1878
1879        #[inline(always)]
1880        fn decode_is_copy() -> bool {
1881            false
1882        }
1883    }
1884
1885    impl fidl::encoding::ValueTypeMarker for ScanTypes {
1886        type Borrowed<'a> = Self;
1887        #[inline(always)]
1888        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1889            *value
1890        }
1891    }
1892
1893    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanTypes {
1894        #[inline]
1895        unsafe fn encode(
1896            self,
1897            encoder: &mut fidl::encoding::Encoder<'_, D>,
1898            offset: usize,
1899            _depth: fidl::encoding::Depth,
1900        ) -> fidl::Result<()> {
1901            encoder.debug_check_bounds::<Self>(offset);
1902            encoder.write_num(self.into_primitive(), offset);
1903            Ok(())
1904        }
1905    }
1906
1907    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanTypes {
1908        #[inline(always)]
1909        fn new_empty() -> Self {
1910            Self::Active
1911        }
1912
1913        #[inline]
1914        unsafe fn decode(
1915            &mut self,
1916            decoder: &mut fidl::encoding::Decoder<'_, D>,
1917            offset: usize,
1918            _depth: fidl::encoding::Depth,
1919        ) -> fidl::Result<()> {
1920            decoder.debug_check_bounds::<Self>(offset);
1921            let prim = decoder.read_num::<u32>(offset);
1922
1923            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1924            Ok(())
1925        }
1926    }
1927    unsafe impl fidl::encoding::TypeMarker for StartResultCode {
1928        type Owned = Self;
1929
1930        #[inline(always)]
1931        fn inline_align(_context: fidl::encoding::Context) -> usize {
1932            std::mem::align_of::<u32>()
1933        }
1934
1935        #[inline(always)]
1936        fn inline_size(_context: fidl::encoding::Context) -> usize {
1937            std::mem::size_of::<u32>()
1938        }
1939
1940        #[inline(always)]
1941        fn encode_is_copy() -> bool {
1942            true
1943        }
1944
1945        #[inline(always)]
1946        fn decode_is_copy() -> bool {
1947            false
1948        }
1949    }
1950
1951    impl fidl::encoding::ValueTypeMarker for StartResultCode {
1952        type Borrowed<'a> = Self;
1953        #[inline(always)]
1954        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1955            *value
1956        }
1957    }
1958
1959    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1960        for StartResultCode
1961    {
1962        #[inline]
1963        unsafe fn encode(
1964            self,
1965            encoder: &mut fidl::encoding::Encoder<'_, D>,
1966            offset: usize,
1967            _depth: fidl::encoding::Depth,
1968        ) -> fidl::Result<()> {
1969            encoder.debug_check_bounds::<Self>(offset);
1970            encoder.write_num(self.into_primitive(), offset);
1971            Ok(())
1972        }
1973    }
1974
1975    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartResultCode {
1976        #[inline(always)]
1977        fn new_empty() -> Self {
1978            Self::Success
1979        }
1980
1981        #[inline]
1982        unsafe fn decode(
1983            &mut self,
1984            decoder: &mut fidl::encoding::Decoder<'_, D>,
1985            offset: usize,
1986            _depth: fidl::encoding::Depth,
1987        ) -> fidl::Result<()> {
1988            decoder.debug_check_bounds::<Self>(offset);
1989            let prim = decoder.read_num::<u32>(offset);
1990
1991            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1992            Ok(())
1993        }
1994    }
1995    unsafe impl fidl::encoding::TypeMarker for StopResultCode {
1996        type Owned = Self;
1997
1998        #[inline(always)]
1999        fn inline_align(_context: fidl::encoding::Context) -> usize {
2000            std::mem::align_of::<u32>()
2001        }
2002
2003        #[inline(always)]
2004        fn inline_size(_context: fidl::encoding::Context) -> usize {
2005            std::mem::size_of::<u32>()
2006        }
2007
2008        #[inline(always)]
2009        fn encode_is_copy() -> bool {
2010            true
2011        }
2012
2013        #[inline(always)]
2014        fn decode_is_copy() -> bool {
2015            false
2016        }
2017    }
2018
2019    impl fidl::encoding::ValueTypeMarker for StopResultCode {
2020        type Borrowed<'a> = Self;
2021        #[inline(always)]
2022        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2023            *value
2024        }
2025    }
2026
2027    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StopResultCode {
2028        #[inline]
2029        unsafe fn encode(
2030            self,
2031            encoder: &mut fidl::encoding::Encoder<'_, D>,
2032            offset: usize,
2033            _depth: fidl::encoding::Depth,
2034        ) -> fidl::Result<()> {
2035            encoder.debug_check_bounds::<Self>(offset);
2036            encoder.write_num(self.into_primitive(), offset);
2037            Ok(())
2038        }
2039    }
2040
2041    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopResultCode {
2042        #[inline(always)]
2043        fn new_empty() -> Self {
2044            Self::Success
2045        }
2046
2047        #[inline]
2048        unsafe fn decode(
2049            &mut self,
2050            decoder: &mut fidl::encoding::Decoder<'_, D>,
2051            offset: usize,
2052            _depth: fidl::encoding::Depth,
2053        ) -> fidl::Result<()> {
2054            decoder.debug_check_bounds::<Self>(offset);
2055            let prim = decoder.read_num::<u32>(offset);
2056
2057            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2058            Ok(())
2059        }
2060    }
2061
2062    impl fidl::encoding::ValueTypeMarker for AssociateIndication {
2063        type Borrowed<'a> = &'a Self;
2064        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2065            value
2066        }
2067    }
2068
2069    unsafe impl fidl::encoding::TypeMarker for AssociateIndication {
2070        type Owned = Self;
2071
2072        #[inline(always)]
2073        fn inline_align(_context: fidl::encoding::Context) -> usize {
2074            8
2075        }
2076
2077        #[inline(always)]
2078        fn inline_size(_context: fidl::encoding::Context) -> usize {
2079            64
2080        }
2081    }
2082
2083    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AssociateIndication, D>
2084        for &AssociateIndication
2085    {
2086        #[inline]
2087        unsafe fn encode(
2088            self,
2089            encoder: &mut fidl::encoding::Encoder<'_, D>,
2090            offset: usize,
2091            _depth: fidl::encoding::Depth,
2092        ) -> fidl::Result<()> {
2093            encoder.debug_check_bounds::<AssociateIndication>(offset);
2094            // Delegate to tuple encoding.
2095            fidl::encoding::Encode::<AssociateIndication, D>::encode(
2096                (
2097                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
2098                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
2099                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.listen_interval),
2100                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid),
2101                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
2102                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>> as fidl::encoding::ValueTypeMarker>::borrow(&self.rsne),
2103                ),
2104                encoder, offset, _depth
2105            )
2106        }
2107    }
2108    unsafe impl<
2109        D: fidl::encoding::ResourceDialect,
2110        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2111        T1: fidl::encoding::Encode<u16, D>,
2112        T2: fidl::encoding::Encode<u16, D>,
2113        T3: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>, D>,
2114        T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
2115        T5: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>, D>,
2116    > fidl::encoding::Encode<AssociateIndication, D> for (T0, T1, T2, T3, T4, T5)
2117    {
2118        #[inline]
2119        unsafe fn encode(
2120            self,
2121            encoder: &mut fidl::encoding::Encoder<'_, D>,
2122            offset: usize,
2123            depth: fidl::encoding::Depth,
2124        ) -> fidl::Result<()> {
2125            encoder.debug_check_bounds::<AssociateIndication>(offset);
2126            // Zero out padding regions. There's no need to apply masks
2127            // because the unmasked parts will be overwritten by fields.
2128            unsafe {
2129                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2130                (ptr as *mut u64).write_unaligned(0);
2131            }
2132            // Write the fields.
2133            self.0.encode(encoder, offset + 0, depth)?;
2134            self.1.encode(encoder, offset + 6, depth)?;
2135            self.2.encode(encoder, offset + 8, depth)?;
2136            self.3.encode(encoder, offset + 16, depth)?;
2137            self.4.encode(encoder, offset + 32, depth)?;
2138            self.5.encode(encoder, offset + 48, depth)?;
2139            Ok(())
2140        }
2141    }
2142
2143    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateIndication {
2144        #[inline(always)]
2145        fn new_empty() -> Self {
2146            Self {
2147                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2148                capability_info: fidl::new_empty!(u16, D),
2149                listen_interval: fidl::new_empty!(u16, D),
2150                ssid: fidl::new_empty!(fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>, D),
2151                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
2152                rsne: fidl::new_empty!(
2153                    fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
2154                    D
2155                ),
2156            }
2157        }
2158
2159        #[inline]
2160        unsafe fn decode(
2161            &mut self,
2162            decoder: &mut fidl::encoding::Decoder<'_, D>,
2163            offset: usize,
2164            _depth: fidl::encoding::Depth,
2165        ) -> fidl::Result<()> {
2166            decoder.debug_check_bounds::<Self>(offset);
2167            // Verify that padding bytes are zero.
2168            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2169            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2170            let mask = 0xffffffffffff0000u64;
2171            let maskedval = padval & mask;
2172            if maskedval != 0 {
2173                return Err(fidl::Error::NonZeroPadding {
2174                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2175                });
2176            }
2177            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2178            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 6, _depth)?;
2179            fidl::decode!(u16, D, &mut self.listen_interval, decoder, offset + 8, _depth)?;
2180            fidl::decode!(
2181                fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>,
2182                D,
2183                &mut self.ssid,
2184                decoder,
2185                offset + 16,
2186                _depth
2187            )?;
2188            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 32, _depth)?;
2189            fidl::decode!(
2190                fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
2191                D,
2192                &mut self.rsne,
2193                decoder,
2194                offset + 48,
2195                _depth
2196            )?;
2197            Ok(())
2198        }
2199    }
2200
2201    impl fidl::encoding::ValueTypeMarker for AssociateResponse {
2202        type Borrowed<'a> = &'a Self;
2203        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2204            value
2205        }
2206    }
2207
2208    unsafe impl fidl::encoding::TypeMarker for AssociateResponse {
2209        type Owned = Self;
2210
2211        #[inline(always)]
2212        fn inline_align(_context: fidl::encoding::Context) -> usize {
2213            8
2214        }
2215
2216        #[inline(always)]
2217        fn inline_size(_context: fidl::encoding::Context) -> usize {
2218            32
2219        }
2220    }
2221
2222    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AssociateResponse, D>
2223        for &AssociateResponse
2224    {
2225        #[inline]
2226        unsafe fn encode(
2227            self,
2228            encoder: &mut fidl::encoding::Encoder<'_, D>,
2229            offset: usize,
2230            _depth: fidl::encoding::Depth,
2231        ) -> fidl::Result<()> {
2232            encoder.debug_check_bounds::<AssociateResponse>(offset);
2233            // Delegate to tuple encoding.
2234            fidl::encoding::Encode::<AssociateResponse, D>::encode(
2235                (
2236                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2237                        &self.peer_sta_address,
2238                    ),
2239                    <AssociateResultCode as fidl::encoding::ValueTypeMarker>::borrow(
2240                        &self.result_code,
2241                    ),
2242                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
2243                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
2244                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(
2245                        &self.rates,
2246                    ),
2247                ),
2248                encoder,
2249                offset,
2250                _depth,
2251            )
2252        }
2253    }
2254    unsafe impl<
2255        D: fidl::encoding::ResourceDialect,
2256        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2257        T1: fidl::encoding::Encode<AssociateResultCode, D>,
2258        T2: fidl::encoding::Encode<u16, D>,
2259        T3: fidl::encoding::Encode<u16, D>,
2260        T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
2261    > fidl::encoding::Encode<AssociateResponse, D> for (T0, T1, T2, T3, T4)
2262    {
2263        #[inline]
2264        unsafe fn encode(
2265            self,
2266            encoder: &mut fidl::encoding::Encoder<'_, D>,
2267            offset: usize,
2268            depth: fidl::encoding::Depth,
2269        ) -> fidl::Result<()> {
2270            encoder.debug_check_bounds::<AssociateResponse>(offset);
2271            // Zero out padding regions. There's no need to apply masks
2272            // because the unmasked parts will be overwritten by fields.
2273            unsafe {
2274                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2275                (ptr as *mut u64).write_unaligned(0);
2276            }
2277            // Write the fields.
2278            self.0.encode(encoder, offset + 0, depth)?;
2279            self.1.encode(encoder, offset + 8, depth)?;
2280            self.2.encode(encoder, offset + 12, depth)?;
2281            self.3.encode(encoder, offset + 14, depth)?;
2282            self.4.encode(encoder, offset + 16, depth)?;
2283            Ok(())
2284        }
2285    }
2286
2287    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateResponse {
2288        #[inline(always)]
2289        fn new_empty() -> Self {
2290            Self {
2291                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2292                result_code: fidl::new_empty!(AssociateResultCode, D),
2293                association_id: fidl::new_empty!(u16, D),
2294                capability_info: fidl::new_empty!(u16, D),
2295                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
2296            }
2297        }
2298
2299        #[inline]
2300        unsafe fn decode(
2301            &mut self,
2302            decoder: &mut fidl::encoding::Decoder<'_, D>,
2303            offset: usize,
2304            _depth: fidl::encoding::Depth,
2305        ) -> fidl::Result<()> {
2306            decoder.debug_check_bounds::<Self>(offset);
2307            // Verify that padding bytes are zero.
2308            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2309            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2310            let mask = 0xffff000000000000u64;
2311            let maskedval = padval & mask;
2312            if maskedval != 0 {
2313                return Err(fidl::Error::NonZeroPadding {
2314                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2315                });
2316            }
2317            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2318            fidl::decode!(
2319                AssociateResultCode,
2320                D,
2321                &mut self.result_code,
2322                decoder,
2323                offset + 8,
2324                _depth
2325            )?;
2326            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 12, _depth)?;
2327            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 14, _depth)?;
2328            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 16, _depth)?;
2329            Ok(())
2330        }
2331    }
2332
2333    impl fidl::encoding::ValueTypeMarker for AuthenticateIndication {
2334        type Borrowed<'a> = &'a Self;
2335        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2336            value
2337        }
2338    }
2339
2340    unsafe impl fidl::encoding::TypeMarker for AuthenticateIndication {
2341        type Owned = Self;
2342
2343        #[inline(always)]
2344        fn inline_align(_context: fidl::encoding::Context) -> usize {
2345            4
2346        }
2347
2348        #[inline(always)]
2349        fn inline_size(_context: fidl::encoding::Context) -> usize {
2350            12
2351        }
2352    }
2353
2354    unsafe impl<D: fidl::encoding::ResourceDialect>
2355        fidl::encoding::Encode<AuthenticateIndication, D> for &AuthenticateIndication
2356    {
2357        #[inline]
2358        unsafe fn encode(
2359            self,
2360            encoder: &mut fidl::encoding::Encoder<'_, D>,
2361            offset: usize,
2362            _depth: fidl::encoding::Depth,
2363        ) -> fidl::Result<()> {
2364            encoder.debug_check_bounds::<AuthenticateIndication>(offset);
2365            // Delegate to tuple encoding.
2366            fidl::encoding::Encode::<AuthenticateIndication, D>::encode(
2367                (
2368                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2369                        &self.peer_sta_address,
2370                    ),
2371                    <AuthenticationTypes as fidl::encoding::ValueTypeMarker>::borrow(
2372                        &self.auth_type,
2373                    ),
2374                ),
2375                encoder,
2376                offset,
2377                _depth,
2378            )
2379        }
2380    }
2381    unsafe impl<
2382        D: fidl::encoding::ResourceDialect,
2383        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2384        T1: fidl::encoding::Encode<AuthenticationTypes, D>,
2385    > fidl::encoding::Encode<AuthenticateIndication, D> for (T0, T1)
2386    {
2387        #[inline]
2388        unsafe fn encode(
2389            self,
2390            encoder: &mut fidl::encoding::Encoder<'_, D>,
2391            offset: usize,
2392            depth: fidl::encoding::Depth,
2393        ) -> fidl::Result<()> {
2394            encoder.debug_check_bounds::<AuthenticateIndication>(offset);
2395            // Zero out padding regions. There's no need to apply masks
2396            // because the unmasked parts will be overwritten by fields.
2397            unsafe {
2398                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
2399                (ptr as *mut u32).write_unaligned(0);
2400            }
2401            // Write the fields.
2402            self.0.encode(encoder, offset + 0, depth)?;
2403            self.1.encode(encoder, offset + 8, depth)?;
2404            Ok(())
2405        }
2406    }
2407
2408    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2409        for AuthenticateIndication
2410    {
2411        #[inline(always)]
2412        fn new_empty() -> Self {
2413            Self {
2414                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2415                auth_type: fidl::new_empty!(AuthenticationTypes, D),
2416            }
2417        }
2418
2419        #[inline]
2420        unsafe fn decode(
2421            &mut self,
2422            decoder: &mut fidl::encoding::Decoder<'_, D>,
2423            offset: usize,
2424            _depth: fidl::encoding::Depth,
2425        ) -> fidl::Result<()> {
2426            decoder.debug_check_bounds::<Self>(offset);
2427            // Verify that padding bytes are zero.
2428            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
2429            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2430            let mask = 0xffff0000u32;
2431            let maskedval = padval & mask;
2432            if maskedval != 0 {
2433                return Err(fidl::Error::NonZeroPadding {
2434                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
2435                });
2436            }
2437            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2438            fidl::decode!(
2439                AuthenticationTypes,
2440                D,
2441                &mut self.auth_type,
2442                decoder,
2443                offset + 8,
2444                _depth
2445            )?;
2446            Ok(())
2447        }
2448    }
2449
2450    impl fidl::encoding::ValueTypeMarker for AuthenticateResponse {
2451        type Borrowed<'a> = &'a Self;
2452        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2453            value
2454        }
2455    }
2456
2457    unsafe impl fidl::encoding::TypeMarker for AuthenticateResponse {
2458        type Owned = Self;
2459
2460        #[inline(always)]
2461        fn inline_align(_context: fidl::encoding::Context) -> usize {
2462            4
2463        }
2464
2465        #[inline(always)]
2466        fn inline_size(_context: fidl::encoding::Context) -> usize {
2467            12
2468        }
2469    }
2470
2471    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AuthenticateResponse, D>
2472        for &AuthenticateResponse
2473    {
2474        #[inline]
2475        unsafe fn encode(
2476            self,
2477            encoder: &mut fidl::encoding::Encoder<'_, D>,
2478            offset: usize,
2479            _depth: fidl::encoding::Depth,
2480        ) -> fidl::Result<()> {
2481            encoder.debug_check_bounds::<AuthenticateResponse>(offset);
2482            // Delegate to tuple encoding.
2483            fidl::encoding::Encode::<AuthenticateResponse, D>::encode(
2484                (
2485                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2486                        &self.peer_sta_address,
2487                    ),
2488                    <AuthenticateResultCode as fidl::encoding::ValueTypeMarker>::borrow(
2489                        &self.result_code,
2490                    ),
2491                ),
2492                encoder,
2493                offset,
2494                _depth,
2495            )
2496        }
2497    }
2498    unsafe impl<
2499        D: fidl::encoding::ResourceDialect,
2500        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2501        T1: fidl::encoding::Encode<AuthenticateResultCode, D>,
2502    > fidl::encoding::Encode<AuthenticateResponse, D> for (T0, T1)
2503    {
2504        #[inline]
2505        unsafe fn encode(
2506            self,
2507            encoder: &mut fidl::encoding::Encoder<'_, D>,
2508            offset: usize,
2509            depth: fidl::encoding::Depth,
2510        ) -> fidl::Result<()> {
2511            encoder.debug_check_bounds::<AuthenticateResponse>(offset);
2512            // Zero out padding regions. There's no need to apply masks
2513            // because the unmasked parts will be overwritten by fields.
2514            unsafe {
2515                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
2516                (ptr as *mut u32).write_unaligned(0);
2517            }
2518            // Write the fields.
2519            self.0.encode(encoder, offset + 0, depth)?;
2520            self.1.encode(encoder, offset + 8, depth)?;
2521            Ok(())
2522        }
2523    }
2524
2525    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AuthenticateResponse {
2526        #[inline(always)]
2527        fn new_empty() -> Self {
2528            Self {
2529                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2530                result_code: fidl::new_empty!(AuthenticateResultCode, D),
2531            }
2532        }
2533
2534        #[inline]
2535        unsafe fn decode(
2536            &mut self,
2537            decoder: &mut fidl::encoding::Decoder<'_, D>,
2538            offset: usize,
2539            _depth: fidl::encoding::Depth,
2540        ) -> fidl::Result<()> {
2541            decoder.debug_check_bounds::<Self>(offset);
2542            // Verify that padding bytes are zero.
2543            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
2544            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2545            let mask = 0xffff0000u32;
2546            let maskedval = padval & mask;
2547            if maskedval != 0 {
2548                return Err(fidl::Error::NonZeroPadding {
2549                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
2550                });
2551            }
2552            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2553            fidl::decode!(
2554                AuthenticateResultCode,
2555                D,
2556                &mut self.result_code,
2557                decoder,
2558                offset + 8,
2559                _depth
2560            )?;
2561            Ok(())
2562        }
2563    }
2564
2565    impl fidl::encoding::ValueTypeMarker for BandCapability {
2566        type Borrowed<'a> = &'a Self;
2567        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2568            value
2569        }
2570    }
2571
2572    unsafe impl fidl::encoding::TypeMarker for BandCapability {
2573        type Owned = Self;
2574
2575        #[inline(always)]
2576        fn inline_align(_context: fidl::encoding::Context) -> usize {
2577            8
2578        }
2579
2580        #[inline(always)]
2581        fn inline_size(_context: fidl::encoding::Context) -> usize {
2582            56
2583        }
2584    }
2585
2586    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandCapability, D>
2587        for &BandCapability
2588    {
2589        #[inline]
2590        unsafe fn encode(
2591            self,
2592            encoder: &mut fidl::encoding::Encoder<'_, D>,
2593            offset: usize,
2594            _depth: fidl::encoding::Depth,
2595        ) -> fidl::Result<()> {
2596            encoder.debug_check_bounds::<BandCapability>(offset);
2597            // Delegate to tuple encoding.
2598            fidl::encoding::Encode::<BandCapability, D>::encode(
2599                (
2600                    <fidl_fuchsia_wlan_ieee80211__common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow(&self.band),
2601                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::ValueTypeMarker>::borrow(&self.basic_rates),
2602                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.ht_cap),
2603                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_cap),
2604                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.operating_channels),
2605                ),
2606                encoder, offset, _depth
2607            )
2608        }
2609    }
2610    unsafe impl<
2611        D: fidl::encoding::ResourceDialect,
2612        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::WlanBand, D>,
2613        T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 12>, D>,
2614        T2: fidl::encoding::Encode<
2615                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
2616                D,
2617            >,
2618        T3: fidl::encoding::Encode<
2619                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
2620                D,
2621            >,
2622        T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 256>, D>,
2623    > fidl::encoding::Encode<BandCapability, D> for (T0, T1, T2, T3, T4)
2624    {
2625        #[inline]
2626        unsafe fn encode(
2627            self,
2628            encoder: &mut fidl::encoding::Encoder<'_, D>,
2629            offset: usize,
2630            depth: fidl::encoding::Depth,
2631        ) -> fidl::Result<()> {
2632            encoder.debug_check_bounds::<BandCapability>(offset);
2633            // Zero out padding regions. There's no need to apply masks
2634            // because the unmasked parts will be overwritten by fields.
2635            unsafe {
2636                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2637                (ptr as *mut u64).write_unaligned(0);
2638            }
2639            // Write the fields.
2640            self.0.encode(encoder, offset + 0, depth)?;
2641            self.1.encode(encoder, offset + 8, depth)?;
2642            self.2.encode(encoder, offset + 24, depth)?;
2643            self.3.encode(encoder, offset + 32, depth)?;
2644            self.4.encode(encoder, offset + 40, depth)?;
2645            Ok(())
2646        }
2647    }
2648
2649    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandCapability {
2650        #[inline(always)]
2651        fn new_empty() -> Self {
2652            Self {
2653                band: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanBand, D),
2654                basic_rates: fidl::new_empty!(fidl::encoding::Vector<u8, 12>, D),
2655                ht_cap: fidl::new_empty!(
2656                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
2657                    D
2658                ),
2659                vht_cap: fidl::new_empty!(
2660                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
2661                    D
2662                ),
2663                operating_channels: fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D),
2664            }
2665        }
2666
2667        #[inline]
2668        unsafe fn decode(
2669            &mut self,
2670            decoder: &mut fidl::encoding::Decoder<'_, D>,
2671            offset: usize,
2672            _depth: fidl::encoding::Depth,
2673        ) -> fidl::Result<()> {
2674            decoder.debug_check_bounds::<Self>(offset);
2675            // Verify that padding bytes are zero.
2676            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2677            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2678            let mask = 0xffffffffffffff00u64;
2679            let maskedval = padval & mask;
2680            if maskedval != 0 {
2681                return Err(fidl::Error::NonZeroPadding {
2682                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2683                });
2684            }
2685            fidl::decode!(
2686                fidl_fuchsia_wlan_ieee80211__common::WlanBand,
2687                D,
2688                &mut self.band,
2689                decoder,
2690                offset + 0,
2691                _depth
2692            )?;
2693            fidl::decode!(fidl::encoding::Vector<u8, 12>, D, &mut self.basic_rates, decoder, offset + 8, _depth)?;
2694            fidl::decode!(
2695                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
2696                D,
2697                &mut self.ht_cap,
2698                decoder,
2699                offset + 24,
2700                _depth
2701            )?;
2702            fidl::decode!(
2703                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
2704                D,
2705                &mut self.vht_cap,
2706                decoder,
2707                offset + 32,
2708                _depth
2709            )?;
2710            fidl::decode!(fidl::encoding::Vector<u8, 256>, D, &mut self.operating_channels, decoder, offset + 40, _depth)?;
2711            Ok(())
2712        }
2713    }
2714
2715    impl fidl::encoding::ValueTypeMarker for CapturedFrameResult {
2716        type Borrowed<'a> = &'a Self;
2717        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2718            value
2719        }
2720    }
2721
2722    unsafe impl fidl::encoding::TypeMarker for CapturedFrameResult {
2723        type Owned = Self;
2724
2725        #[inline(always)]
2726        fn inline_align(_context: fidl::encoding::Context) -> usize {
2727            8
2728        }
2729
2730        #[inline(always)]
2731        fn inline_size(_context: fidl::encoding::Context) -> usize {
2732            16
2733        }
2734    }
2735
2736    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CapturedFrameResult, D>
2737        for &CapturedFrameResult
2738    {
2739        #[inline]
2740        unsafe fn encode(
2741            self,
2742            encoder: &mut fidl::encoding::Encoder<'_, D>,
2743            offset: usize,
2744            _depth: fidl::encoding::Depth,
2745        ) -> fidl::Result<()> {
2746            encoder.debug_check_bounds::<CapturedFrameResult>(offset);
2747            // Delegate to tuple encoding.
2748            fidl::encoding::Encode::<CapturedFrameResult, D>::encode(
2749                (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
2750                    &self.frame,
2751                ),),
2752                encoder,
2753                offset,
2754                _depth,
2755            )
2756        }
2757    }
2758    unsafe impl<
2759        D: fidl::encoding::ResourceDialect,
2760        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2761    > fidl::encoding::Encode<CapturedFrameResult, D> for (T0,)
2762    {
2763        #[inline]
2764        unsafe fn encode(
2765            self,
2766            encoder: &mut fidl::encoding::Encoder<'_, D>,
2767            offset: usize,
2768            depth: fidl::encoding::Depth,
2769        ) -> fidl::Result<()> {
2770            encoder.debug_check_bounds::<CapturedFrameResult>(offset);
2771            // Zero out padding regions. There's no need to apply masks
2772            // because the unmasked parts will be overwritten by fields.
2773            // Write the fields.
2774            self.0.encode(encoder, offset + 0, depth)?;
2775            Ok(())
2776        }
2777    }
2778
2779    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CapturedFrameResult {
2780        #[inline(always)]
2781        fn new_empty() -> Self {
2782            Self { frame: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
2783        }
2784
2785        #[inline]
2786        unsafe fn decode(
2787            &mut self,
2788            decoder: &mut fidl::encoding::Decoder<'_, D>,
2789            offset: usize,
2790            _depth: fidl::encoding::Depth,
2791        ) -> fidl::Result<()> {
2792            decoder.debug_check_bounds::<Self>(offset);
2793            // Verify that padding bytes are zero.
2794            fidl::decode!(
2795                fidl::encoding::UnboundedVector<u8>,
2796                D,
2797                &mut self.frame,
2798                decoder,
2799                offset + 0,
2800                _depth
2801            )?;
2802            Ok(())
2803        }
2804    }
2805
2806    impl fidl::encoding::ValueTypeMarker for ConnectConfirm {
2807        type Borrowed<'a> = &'a Self;
2808        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2809            value
2810        }
2811    }
2812
2813    unsafe impl fidl::encoding::TypeMarker for ConnectConfirm {
2814        type Owned = Self;
2815
2816        #[inline(always)]
2817        fn inline_align(_context: fidl::encoding::Context) -> usize {
2818            8
2819        }
2820
2821        #[inline(always)]
2822        fn inline_size(_context: fidl::encoding::Context) -> usize {
2823            32
2824        }
2825    }
2826
2827    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectConfirm, D>
2828        for &ConnectConfirm
2829    {
2830        #[inline]
2831        unsafe fn encode(
2832            self,
2833            encoder: &mut fidl::encoding::Encoder<'_, D>,
2834            offset: usize,
2835            _depth: fidl::encoding::Depth,
2836        ) -> fidl::Result<()> {
2837            encoder.debug_check_bounds::<ConnectConfirm>(offset);
2838            // Delegate to tuple encoding.
2839            fidl::encoding::Encode::<ConnectConfirm, D>::encode(
2840                (
2841                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
2842                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
2843                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
2844                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
2845                ),
2846                encoder, offset, _depth
2847            )
2848        }
2849    }
2850    unsafe impl<
2851        D: fidl::encoding::ResourceDialect,
2852        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2853        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
2854        T2: fidl::encoding::Encode<u16, D>,
2855        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2856    > fidl::encoding::Encode<ConnectConfirm, D> for (T0, T1, T2, T3)
2857    {
2858        #[inline]
2859        unsafe fn encode(
2860            self,
2861            encoder: &mut fidl::encoding::Encoder<'_, D>,
2862            offset: usize,
2863            depth: fidl::encoding::Depth,
2864        ) -> fidl::Result<()> {
2865            encoder.debug_check_bounds::<ConnectConfirm>(offset);
2866            // Zero out padding regions. There's no need to apply masks
2867            // because the unmasked parts will be overwritten by fields.
2868            unsafe {
2869                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2870                (ptr as *mut u64).write_unaligned(0);
2871            }
2872            // Write the fields.
2873            self.0.encode(encoder, offset + 0, depth)?;
2874            self.1.encode(encoder, offset + 6, depth)?;
2875            self.2.encode(encoder, offset + 8, depth)?;
2876            self.3.encode(encoder, offset + 16, depth)?;
2877            Ok(())
2878        }
2879    }
2880
2881    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectConfirm {
2882        #[inline(always)]
2883        fn new_empty() -> Self {
2884            Self {
2885                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2886                result_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
2887                association_id: fidl::new_empty!(u16, D),
2888                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
2889            }
2890        }
2891
2892        #[inline]
2893        unsafe fn decode(
2894            &mut self,
2895            decoder: &mut fidl::encoding::Decoder<'_, D>,
2896            offset: usize,
2897            _depth: fidl::encoding::Depth,
2898        ) -> fidl::Result<()> {
2899            decoder.debug_check_bounds::<Self>(offset);
2900            // Verify that padding bytes are zero.
2901            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2902            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2903            let mask = 0xffffffffffff0000u64;
2904            let maskedval = padval & mask;
2905            if maskedval != 0 {
2906                return Err(fidl::Error::NonZeroPadding {
2907                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2908                });
2909            }
2910            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2911            fidl::decode!(
2912                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
2913                D,
2914                &mut self.result_code,
2915                decoder,
2916                offset + 6,
2917                _depth
2918            )?;
2919            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 8, _depth)?;
2920            fidl::decode!(
2921                fidl::encoding::UnboundedVector<u8>,
2922                D,
2923                &mut self.association_ies,
2924                decoder,
2925                offset + 16,
2926                _depth
2927            )?;
2928            Ok(())
2929        }
2930    }
2931
2932    impl fidl::encoding::ValueTypeMarker for ConnectRequest {
2933        type Borrowed<'a> = &'a Self;
2934        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2935            value
2936        }
2937    }
2938
2939    unsafe impl fidl::encoding::TypeMarker for ConnectRequest {
2940        type Owned = Self;
2941
2942        #[inline(always)]
2943        fn inline_align(_context: fidl::encoding::Context) -> usize {
2944            8
2945        }
2946
2947        #[inline(always)]
2948        fn inline_size(_context: fidl::encoding::Context) -> usize {
2949            104
2950        }
2951    }
2952
2953    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectRequest, D>
2954        for &ConnectRequest
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::<ConnectRequest>(offset);
2964            // Delegate to tuple encoding.
2965            fidl::encoding::Encode::<ConnectRequest, D>::encode(
2966                (
2967                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
2968                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.connect_failure_timeout),
2969                    <AuthenticationTypes as fidl::encoding::ValueTypeMarker>::borrow(&self.auth_type),
2970                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.sae_password),
2971                    <fidl::encoding::Boxed<SetKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.wep_key),
2972                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow(&self.security_ie),
2973                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_internal__common::OwePublicKey> as fidl::encoding::ValueTypeMarker>::borrow(&self.owe_public_key),
2974                ),
2975                encoder, offset, _depth
2976            )
2977        }
2978    }
2979    unsafe impl<
2980        D: fidl::encoding::ResourceDialect,
2981        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
2982        T1: fidl::encoding::Encode<u32, D>,
2983        T2: fidl::encoding::Encode<AuthenticationTypes, D>,
2984        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2985        T4: fidl::encoding::Encode<fidl::encoding::Boxed<SetKeyDescriptor>, D>,
2986        T5: fidl::encoding::Encode<fidl::encoding::Vector<u8, 257>, D>,
2987        T6: fidl::encoding::Encode<
2988                fidl::encoding::Boxed<fidl_fuchsia_wlan_internal__common::OwePublicKey>,
2989                D,
2990            >,
2991    > fidl::encoding::Encode<ConnectRequest, D> for (T0, T1, T2, T3, T4, T5, T6)
2992    {
2993        #[inline]
2994        unsafe fn encode(
2995            self,
2996            encoder: &mut fidl::encoding::Encoder<'_, D>,
2997            offset: usize,
2998            depth: fidl::encoding::Depth,
2999        ) -> fidl::Result<()> {
3000            encoder.debug_check_bounds::<ConnectRequest>(offset);
3001            // Zero out padding regions. There's no need to apply masks
3002            // because the unmasked parts will be overwritten by fields.
3003            // Write the fields.
3004            self.0.encode(encoder, offset + 0, depth)?;
3005            self.1.encode(encoder, offset + 48, depth)?;
3006            self.2.encode(encoder, offset + 52, depth)?;
3007            self.3.encode(encoder, offset + 56, depth)?;
3008            self.4.encode(encoder, offset + 72, depth)?;
3009            self.5.encode(encoder, offset + 80, depth)?;
3010            self.6.encode(encoder, offset + 96, depth)?;
3011            Ok(())
3012        }
3013    }
3014
3015    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectRequest {
3016        #[inline(always)]
3017        fn new_empty() -> Self {
3018            Self {
3019                selected_bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
3020                connect_failure_timeout: fidl::new_empty!(u32, D),
3021                auth_type: fidl::new_empty!(AuthenticationTypes, D),
3022                sae_password: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
3023                wep_key: fidl::new_empty!(fidl::encoding::Boxed<SetKeyDescriptor>, D),
3024                security_ie: fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D),
3025                owe_public_key: fidl::new_empty!(
3026                    fidl::encoding::Boxed<fidl_fuchsia_wlan_internal__common::OwePublicKey>,
3027                    D
3028                ),
3029            }
3030        }
3031
3032        #[inline]
3033        unsafe fn decode(
3034            &mut self,
3035            decoder: &mut fidl::encoding::Decoder<'_, D>,
3036            offset: usize,
3037            _depth: fidl::encoding::Depth,
3038        ) -> fidl::Result<()> {
3039            decoder.debug_check_bounds::<Self>(offset);
3040            // Verify that padding bytes are zero.
3041            fidl::decode!(
3042                fidl_fuchsia_wlan_common__common::BssDescription,
3043                D,
3044                &mut self.selected_bss,
3045                decoder,
3046                offset + 0,
3047                _depth
3048            )?;
3049            fidl::decode!(u32, D, &mut self.connect_failure_timeout, decoder, offset + 48, _depth)?;
3050            fidl::decode!(
3051                AuthenticationTypes,
3052                D,
3053                &mut self.auth_type,
3054                decoder,
3055                offset + 52,
3056                _depth
3057            )?;
3058            fidl::decode!(
3059                fidl::encoding::UnboundedVector<u8>,
3060                D,
3061                &mut self.sae_password,
3062                decoder,
3063                offset + 56,
3064                _depth
3065            )?;
3066            fidl::decode!(
3067                fidl::encoding::Boxed<SetKeyDescriptor>,
3068                D,
3069                &mut self.wep_key,
3070                decoder,
3071                offset + 72,
3072                _depth
3073            )?;
3074            fidl::decode!(fidl::encoding::Vector<u8, 257>, D, &mut self.security_ie, decoder, offset + 80, _depth)?;
3075            fidl::decode!(
3076                fidl::encoding::Boxed<fidl_fuchsia_wlan_internal__common::OwePublicKey>,
3077                D,
3078                &mut self.owe_public_key,
3079                decoder,
3080                offset + 96,
3081                _depth
3082            )?;
3083            Ok(())
3084        }
3085    }
3086
3087    impl fidl::encoding::ValueTypeMarker for Country {
3088        type Borrowed<'a> = &'a Self;
3089        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3090            value
3091        }
3092    }
3093
3094    unsafe impl fidl::encoding::TypeMarker for Country {
3095        type Owned = Self;
3096
3097        #[inline(always)]
3098        fn inline_align(_context: fidl::encoding::Context) -> usize {
3099            1
3100        }
3101
3102        #[inline(always)]
3103        fn inline_size(_context: fidl::encoding::Context) -> usize {
3104            3
3105        }
3106        #[inline(always)]
3107        fn encode_is_copy() -> bool {
3108            true
3109        }
3110
3111        #[inline(always)]
3112        fn decode_is_copy() -> bool {
3113            true
3114        }
3115    }
3116
3117    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Country, D> for &Country {
3118        #[inline]
3119        unsafe fn encode(
3120            self,
3121            encoder: &mut fidl::encoding::Encoder<'_, D>,
3122            offset: usize,
3123            _depth: fidl::encoding::Depth,
3124        ) -> fidl::Result<()> {
3125            encoder.debug_check_bounds::<Country>(offset);
3126            unsafe {
3127                // Copy the object into the buffer.
3128                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3129                (buf_ptr as *mut Country).write_unaligned((self as *const Country).read());
3130                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3131                // done second because the memcpy will write garbage to these bytes.
3132            }
3133            Ok(())
3134        }
3135    }
3136    unsafe impl<
3137        D: fidl::encoding::ResourceDialect,
3138        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 2>, D>,
3139        T1: fidl::encoding::Encode<u8, D>,
3140    > fidl::encoding::Encode<Country, D> for (T0, T1)
3141    {
3142        #[inline]
3143        unsafe fn encode(
3144            self,
3145            encoder: &mut fidl::encoding::Encoder<'_, D>,
3146            offset: usize,
3147            depth: fidl::encoding::Depth,
3148        ) -> fidl::Result<()> {
3149            encoder.debug_check_bounds::<Country>(offset);
3150            // Zero out padding regions. There's no need to apply masks
3151            // because the unmasked parts will be overwritten by fields.
3152            // Write the fields.
3153            self.0.encode(encoder, offset + 0, depth)?;
3154            self.1.encode(encoder, offset + 2, depth)?;
3155            Ok(())
3156        }
3157    }
3158
3159    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Country {
3160        #[inline(always)]
3161        fn new_empty() -> Self {
3162            Self {
3163                alpha2: fidl::new_empty!(fidl::encoding::Array<u8, 2>, D),
3164                suffix: fidl::new_empty!(u8, D),
3165            }
3166        }
3167
3168        #[inline]
3169        unsafe fn decode(
3170            &mut self,
3171            decoder: &mut fidl::encoding::Decoder<'_, D>,
3172            offset: usize,
3173            _depth: fidl::encoding::Depth,
3174        ) -> fidl::Result<()> {
3175            decoder.debug_check_bounds::<Self>(offset);
3176            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3177            // Verify that padding bytes are zero.
3178            // Copy from the buffer into the object.
3179            unsafe {
3180                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 3);
3181            }
3182            Ok(())
3183        }
3184    }
3185
3186    impl fidl::encoding::ValueTypeMarker for DeauthenticateConfirm {
3187        type Borrowed<'a> = &'a Self;
3188        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3189            value
3190        }
3191    }
3192
3193    unsafe impl fidl::encoding::TypeMarker for DeauthenticateConfirm {
3194        type Owned = Self;
3195
3196        #[inline(always)]
3197        fn inline_align(_context: fidl::encoding::Context) -> usize {
3198            1
3199        }
3200
3201        #[inline(always)]
3202        fn inline_size(_context: fidl::encoding::Context) -> usize {
3203            6
3204        }
3205        #[inline(always)]
3206        fn encode_is_copy() -> bool {
3207            true
3208        }
3209
3210        #[inline(always)]
3211        fn decode_is_copy() -> bool {
3212            true
3213        }
3214    }
3215
3216    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeauthenticateConfirm, D>
3217        for &DeauthenticateConfirm
3218    {
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::<DeauthenticateConfirm>(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 DeauthenticateConfirm)
3231                    .write_unaligned((self as *const DeauthenticateConfirm).read());
3232                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3233                // done second because the memcpy will write garbage to these bytes.
3234            }
3235            Ok(())
3236        }
3237    }
3238    unsafe impl<
3239        D: fidl::encoding::ResourceDialect,
3240        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3241    > fidl::encoding::Encode<DeauthenticateConfirm, D> for (T0,)
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::<DeauthenticateConfirm>(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            Ok(())
3256        }
3257    }
3258
3259    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeauthenticateConfirm {
3260        #[inline(always)]
3261        fn new_empty() -> Self {
3262            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
3263        }
3264
3265        #[inline]
3266        unsafe fn decode(
3267            &mut self,
3268            decoder: &mut fidl::encoding::Decoder<'_, D>,
3269            offset: usize,
3270            _depth: fidl::encoding::Depth,
3271        ) -> fidl::Result<()> {
3272            decoder.debug_check_bounds::<Self>(offset);
3273            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3274            // Verify that padding bytes are zero.
3275            // Copy from the buffer into the object.
3276            unsafe {
3277                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
3278            }
3279            Ok(())
3280        }
3281    }
3282
3283    impl fidl::encoding::ValueTypeMarker for DeauthenticateIndication {
3284        type Borrowed<'a> = &'a Self;
3285        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3286            value
3287        }
3288    }
3289
3290    unsafe impl fidl::encoding::TypeMarker for DeauthenticateIndication {
3291        type Owned = Self;
3292
3293        #[inline(always)]
3294        fn inline_align(_context: fidl::encoding::Context) -> usize {
3295            2
3296        }
3297
3298        #[inline(always)]
3299        fn inline_size(_context: fidl::encoding::Context) -> usize {
3300            10
3301        }
3302    }
3303
3304    unsafe impl<D: fidl::encoding::ResourceDialect>
3305        fidl::encoding::Encode<DeauthenticateIndication, D> for &DeauthenticateIndication
3306    {
3307        #[inline]
3308        unsafe fn encode(
3309            self,
3310            encoder: &mut fidl::encoding::Encoder<'_, D>,
3311            offset: usize,
3312            _depth: fidl::encoding::Depth,
3313        ) -> fidl::Result<()> {
3314            encoder.debug_check_bounds::<DeauthenticateIndication>(offset);
3315            // Delegate to tuple encoding.
3316            fidl::encoding::Encode::<DeauthenticateIndication, D>::encode(
3317                (
3318                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3319                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3320                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.locally_initiated),
3321                ),
3322                encoder, offset, _depth
3323            )
3324        }
3325    }
3326    unsafe impl<
3327        D: fidl::encoding::ResourceDialect,
3328        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3329        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
3330        T2: fidl::encoding::Encode<bool, D>,
3331    > fidl::encoding::Encode<DeauthenticateIndication, D> for (T0, T1, T2)
3332    {
3333        #[inline]
3334        unsafe fn encode(
3335            self,
3336            encoder: &mut fidl::encoding::Encoder<'_, D>,
3337            offset: usize,
3338            depth: fidl::encoding::Depth,
3339        ) -> fidl::Result<()> {
3340            encoder.debug_check_bounds::<DeauthenticateIndication>(offset);
3341            // Zero out padding regions. There's no need to apply masks
3342            // because the unmasked parts will be overwritten by fields.
3343            unsafe {
3344                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3345                (ptr as *mut u16).write_unaligned(0);
3346            }
3347            // Write the fields.
3348            self.0.encode(encoder, offset + 0, depth)?;
3349            self.1.encode(encoder, offset + 6, depth)?;
3350            self.2.encode(encoder, offset + 8, depth)?;
3351            Ok(())
3352        }
3353    }
3354
3355    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3356        for DeauthenticateIndication
3357    {
3358        #[inline(always)]
3359        fn new_empty() -> Self {
3360            Self {
3361                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3362                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
3363                locally_initiated: fidl::new_empty!(bool, D),
3364            }
3365        }
3366
3367        #[inline]
3368        unsafe fn decode(
3369            &mut self,
3370            decoder: &mut fidl::encoding::Decoder<'_, D>,
3371            offset: usize,
3372            _depth: fidl::encoding::Depth,
3373        ) -> fidl::Result<()> {
3374            decoder.debug_check_bounds::<Self>(offset);
3375            // Verify that padding bytes are zero.
3376            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
3377            let padval = unsafe { (ptr as *const u16).read_unaligned() };
3378            let mask = 0xff00u16;
3379            let maskedval = padval & mask;
3380            if maskedval != 0 {
3381                return Err(fidl::Error::NonZeroPadding {
3382                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
3383                });
3384            }
3385            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
3386            fidl::decode!(
3387                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
3388                D,
3389                &mut self.reason_code,
3390                decoder,
3391                offset + 6,
3392                _depth
3393            )?;
3394            fidl::decode!(bool, D, &mut self.locally_initiated, decoder, offset + 8, _depth)?;
3395            Ok(())
3396        }
3397    }
3398
3399    impl fidl::encoding::ValueTypeMarker for DeauthenticateRequest {
3400        type Borrowed<'a> = &'a Self;
3401        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3402            value
3403        }
3404    }
3405
3406    unsafe impl fidl::encoding::TypeMarker for DeauthenticateRequest {
3407        type Owned = Self;
3408
3409        #[inline(always)]
3410        fn inline_align(_context: fidl::encoding::Context) -> usize {
3411            2
3412        }
3413
3414        #[inline(always)]
3415        fn inline_size(_context: fidl::encoding::Context) -> usize {
3416            8
3417        }
3418    }
3419
3420    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeauthenticateRequest, D>
3421        for &DeauthenticateRequest
3422    {
3423        #[inline]
3424        unsafe fn encode(
3425            self,
3426            encoder: &mut fidl::encoding::Encoder<'_, D>,
3427            offset: usize,
3428            _depth: fidl::encoding::Depth,
3429        ) -> fidl::Result<()> {
3430            encoder.debug_check_bounds::<DeauthenticateRequest>(offset);
3431            // Delegate to tuple encoding.
3432            fidl::encoding::Encode::<DeauthenticateRequest, D>::encode(
3433                (
3434                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3435                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3436                ),
3437                encoder, offset, _depth
3438            )
3439        }
3440    }
3441    unsafe impl<
3442        D: fidl::encoding::ResourceDialect,
3443        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3444        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
3445    > fidl::encoding::Encode<DeauthenticateRequest, D> for (T0, T1)
3446    {
3447        #[inline]
3448        unsafe fn encode(
3449            self,
3450            encoder: &mut fidl::encoding::Encoder<'_, D>,
3451            offset: usize,
3452            depth: fidl::encoding::Depth,
3453        ) -> fidl::Result<()> {
3454            encoder.debug_check_bounds::<DeauthenticateRequest>(offset);
3455            // Zero out padding regions. There's no need to apply masks
3456            // because the unmasked parts will be overwritten by fields.
3457            // Write the fields.
3458            self.0.encode(encoder, offset + 0, depth)?;
3459            self.1.encode(encoder, offset + 6, depth)?;
3460            Ok(())
3461        }
3462    }
3463
3464    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeauthenticateRequest {
3465        #[inline(always)]
3466        fn new_empty() -> Self {
3467            Self {
3468                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3469                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
3470            }
3471        }
3472
3473        #[inline]
3474        unsafe fn decode(
3475            &mut self,
3476            decoder: &mut fidl::encoding::Decoder<'_, D>,
3477            offset: usize,
3478            _depth: fidl::encoding::Depth,
3479        ) -> fidl::Result<()> {
3480            decoder.debug_check_bounds::<Self>(offset);
3481            // Verify that padding bytes are zero.
3482            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
3483            fidl::decode!(
3484                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
3485                D,
3486                &mut self.reason_code,
3487                decoder,
3488                offset + 6,
3489                _depth
3490            )?;
3491            Ok(())
3492        }
3493    }
3494
3495    impl fidl::encoding::ValueTypeMarker for DeleteKeyDescriptor {
3496        type Borrowed<'a> = &'a Self;
3497        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3498            value
3499        }
3500    }
3501
3502    unsafe impl fidl::encoding::TypeMarker for DeleteKeyDescriptor {
3503        type Owned = Self;
3504
3505        #[inline(always)]
3506        fn inline_align(_context: fidl::encoding::Context) -> usize {
3507            4
3508        }
3509
3510        #[inline(always)]
3511        fn inline_size(_context: fidl::encoding::Context) -> usize {
3512            16
3513        }
3514    }
3515
3516    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeleteKeyDescriptor, D>
3517        for &DeleteKeyDescriptor
3518    {
3519        #[inline]
3520        unsafe fn encode(
3521            self,
3522            encoder: &mut fidl::encoding::Encoder<'_, D>,
3523            offset: usize,
3524            _depth: fidl::encoding::Depth,
3525        ) -> fidl::Result<()> {
3526            encoder.debug_check_bounds::<DeleteKeyDescriptor>(offset);
3527            // Delegate to tuple encoding.
3528            fidl::encoding::Encode::<DeleteKeyDescriptor, D>::encode(
3529                (
3530                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.key_id),
3531                    <KeyType as fidl::encoding::ValueTypeMarker>::borrow(&self.key_type),
3532                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
3533                        &self.address,
3534                    ),
3535                ),
3536                encoder,
3537                offset,
3538                _depth,
3539            )
3540        }
3541    }
3542    unsafe impl<
3543        D: fidl::encoding::ResourceDialect,
3544        T0: fidl::encoding::Encode<u16, D>,
3545        T1: fidl::encoding::Encode<KeyType, D>,
3546        T2: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3547    > fidl::encoding::Encode<DeleteKeyDescriptor, D> for (T0, T1, T2)
3548    {
3549        #[inline]
3550        unsafe fn encode(
3551            self,
3552            encoder: &mut fidl::encoding::Encoder<'_, D>,
3553            offset: usize,
3554            depth: fidl::encoding::Depth,
3555        ) -> fidl::Result<()> {
3556            encoder.debug_check_bounds::<DeleteKeyDescriptor>(offset);
3557            // Zero out padding regions. There's no need to apply masks
3558            // because the unmasked parts will be overwritten by fields.
3559            unsafe {
3560                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3561                (ptr as *mut u32).write_unaligned(0);
3562            }
3563            unsafe {
3564                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(12);
3565                (ptr as *mut u32).write_unaligned(0);
3566            }
3567            // Write the fields.
3568            self.0.encode(encoder, offset + 0, depth)?;
3569            self.1.encode(encoder, offset + 4, depth)?;
3570            self.2.encode(encoder, offset + 8, depth)?;
3571            Ok(())
3572        }
3573    }
3574
3575    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeleteKeyDescriptor {
3576        #[inline(always)]
3577        fn new_empty() -> Self {
3578            Self {
3579                key_id: fidl::new_empty!(u16, D),
3580                key_type: fidl::new_empty!(KeyType, D),
3581                address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3582            }
3583        }
3584
3585        #[inline]
3586        unsafe fn decode(
3587            &mut self,
3588            decoder: &mut fidl::encoding::Decoder<'_, D>,
3589            offset: usize,
3590            _depth: fidl::encoding::Depth,
3591        ) -> fidl::Result<()> {
3592            decoder.debug_check_bounds::<Self>(offset);
3593            // Verify that padding bytes are zero.
3594            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3595            let padval = unsafe { (ptr as *const u32).read_unaligned() };
3596            let mask = 0xffff0000u32;
3597            let maskedval = padval & mask;
3598            if maskedval != 0 {
3599                return Err(fidl::Error::NonZeroPadding {
3600                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3601                });
3602            }
3603            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(12) };
3604            let padval = unsafe { (ptr as *const u32).read_unaligned() };
3605            let mask = 0xffff0000u32;
3606            let maskedval = padval & mask;
3607            if maskedval != 0 {
3608                return Err(fidl::Error::NonZeroPadding {
3609                    padding_start: offset + 12 + ((mask as u64).trailing_zeros() / 8) as usize,
3610                });
3611            }
3612            fidl::decode!(u16, D, &mut self.key_id, decoder, offset + 0, _depth)?;
3613            fidl::decode!(KeyType, D, &mut self.key_type, decoder, offset + 4, _depth)?;
3614            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.address, decoder, offset + 8, _depth)?;
3615            Ok(())
3616        }
3617    }
3618
3619    impl fidl::encoding::ValueTypeMarker for DeleteKeysRequest {
3620        type Borrowed<'a> = &'a Self;
3621        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3622            value
3623        }
3624    }
3625
3626    unsafe impl fidl::encoding::TypeMarker for DeleteKeysRequest {
3627        type Owned = Self;
3628
3629        #[inline(always)]
3630        fn inline_align(_context: fidl::encoding::Context) -> usize {
3631            8
3632        }
3633
3634        #[inline(always)]
3635        fn inline_size(_context: fidl::encoding::Context) -> usize {
3636            16
3637        }
3638    }
3639
3640    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeleteKeysRequest, D>
3641        for &DeleteKeysRequest
3642    {
3643        #[inline]
3644        unsafe fn encode(
3645            self,
3646            encoder: &mut fidl::encoding::Encoder<'_, D>,
3647            offset: usize,
3648            _depth: fidl::encoding::Depth,
3649        ) -> fidl::Result<()> {
3650            encoder.debug_check_bounds::<DeleteKeysRequest>(offset);
3651            // Delegate to tuple encoding.
3652            fidl::encoding::Encode::<DeleteKeysRequest, D>::encode(
3653                (
3654                    <fidl::encoding::UnboundedVector<DeleteKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.keylist),
3655                ),
3656                encoder, offset, _depth
3657            )
3658        }
3659    }
3660    unsafe impl<
3661        D: fidl::encoding::ResourceDialect,
3662        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<DeleteKeyDescriptor>, D>,
3663    > fidl::encoding::Encode<DeleteKeysRequest, D> for (T0,)
3664    {
3665        #[inline]
3666        unsafe fn encode(
3667            self,
3668            encoder: &mut fidl::encoding::Encoder<'_, D>,
3669            offset: usize,
3670            depth: fidl::encoding::Depth,
3671        ) -> fidl::Result<()> {
3672            encoder.debug_check_bounds::<DeleteKeysRequest>(offset);
3673            // Zero out padding regions. There's no need to apply masks
3674            // because the unmasked parts will be overwritten by fields.
3675            // Write the fields.
3676            self.0.encode(encoder, offset + 0, depth)?;
3677            Ok(())
3678        }
3679    }
3680
3681    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeleteKeysRequest {
3682        #[inline(always)]
3683        fn new_empty() -> Self {
3684            Self {
3685                keylist: fidl::new_empty!(fidl::encoding::UnboundedVector<DeleteKeyDescriptor>, D),
3686            }
3687        }
3688
3689        #[inline]
3690        unsafe fn decode(
3691            &mut self,
3692            decoder: &mut fidl::encoding::Decoder<'_, D>,
3693            offset: usize,
3694            _depth: fidl::encoding::Depth,
3695        ) -> fidl::Result<()> {
3696            decoder.debug_check_bounds::<Self>(offset);
3697            // Verify that padding bytes are zero.
3698            fidl::decode!(
3699                fidl::encoding::UnboundedVector<DeleteKeyDescriptor>,
3700                D,
3701                &mut self.keylist,
3702                decoder,
3703                offset + 0,
3704                _depth
3705            )?;
3706            Ok(())
3707        }
3708    }
3709
3710    impl fidl::encoding::ValueTypeMarker for DeviceInfo {
3711        type Borrowed<'a> = &'a Self;
3712        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3713            value
3714        }
3715    }
3716
3717    unsafe impl fidl::encoding::TypeMarker for DeviceInfo {
3718        type Owned = Self;
3719
3720        #[inline(always)]
3721        fn inline_align(_context: fidl::encoding::Context) -> usize {
3722            8
3723        }
3724
3725        #[inline(always)]
3726        fn inline_size(_context: fidl::encoding::Context) -> usize {
3727            40
3728        }
3729    }
3730
3731    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceInfo, D>
3732        for &DeviceInfo
3733    {
3734        #[inline]
3735        unsafe fn encode(
3736            self,
3737            encoder: &mut fidl::encoding::Encoder<'_, D>,
3738            offset: usize,
3739            _depth: fidl::encoding::Depth,
3740        ) -> fidl::Result<()> {
3741            encoder.debug_check_bounds::<DeviceInfo>(offset);
3742            // Delegate to tuple encoding.
3743            fidl::encoding::Encode::<DeviceInfo, D>::encode(
3744                (
3745                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.sta_addr),
3746                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.factory_addr),
3747                    <fidl_fuchsia_wlan_common__common::WlanMacRole as fidl::encoding::ValueTypeMarker>::borrow(&self.role),
3748                    <fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::ValueTypeMarker>::borrow(&self.bands),
3749                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.softmac_hardware_capability),
3750                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.qos_capable),
3751                ),
3752                encoder, offset, _depth
3753            )
3754        }
3755    }
3756    unsafe impl<
3757        D: fidl::encoding::ResourceDialect,
3758        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3759        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3760        T2: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::WlanMacRole, D>,
3761        T3: fidl::encoding::Encode<fidl::encoding::Vector<BandCapability, 16>, D>,
3762        T4: fidl::encoding::Encode<u32, D>,
3763        T5: fidl::encoding::Encode<bool, D>,
3764    > fidl::encoding::Encode<DeviceInfo, D> for (T0, T1, T2, T3, T4, T5)
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::<DeviceInfo>(offset);
3774            // Zero out padding regions. There's no need to apply masks
3775            // because the unmasked parts will be overwritten by fields.
3776            unsafe {
3777                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
3778                (ptr as *mut u64).write_unaligned(0);
3779            }
3780            // Write the fields.
3781            self.0.encode(encoder, offset + 0, depth)?;
3782            self.1.encode(encoder, offset + 6, depth)?;
3783            self.2.encode(encoder, offset + 12, depth)?;
3784            self.3.encode(encoder, offset + 16, depth)?;
3785            self.4.encode(encoder, offset + 32, depth)?;
3786            self.5.encode(encoder, offset + 36, depth)?;
3787            Ok(())
3788        }
3789    }
3790
3791    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceInfo {
3792        #[inline(always)]
3793        fn new_empty() -> Self {
3794            Self {
3795                sta_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3796                factory_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3797                role: fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanMacRole, D),
3798                bands: fidl::new_empty!(fidl::encoding::Vector<BandCapability, 16>, D),
3799                softmac_hardware_capability: fidl::new_empty!(u32, D),
3800                qos_capable: fidl::new_empty!(bool, D),
3801            }
3802        }
3803
3804        #[inline]
3805        unsafe fn decode(
3806            &mut self,
3807            decoder: &mut fidl::encoding::Decoder<'_, D>,
3808            offset: usize,
3809            _depth: fidl::encoding::Depth,
3810        ) -> fidl::Result<()> {
3811            decoder.debug_check_bounds::<Self>(offset);
3812            // Verify that padding bytes are zero.
3813            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
3814            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3815            let mask = 0xffffff0000000000u64;
3816            let maskedval = padval & mask;
3817            if maskedval != 0 {
3818                return Err(fidl::Error::NonZeroPadding {
3819                    padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
3820                });
3821            }
3822            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.sta_addr, decoder, offset + 0, _depth)?;
3823            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.factory_addr, decoder, offset + 6, _depth)?;
3824            fidl::decode!(
3825                fidl_fuchsia_wlan_common__common::WlanMacRole,
3826                D,
3827                &mut self.role,
3828                decoder,
3829                offset + 12,
3830                _depth
3831            )?;
3832            fidl::decode!(fidl::encoding::Vector<BandCapability, 16>, D, &mut self.bands, decoder, offset + 16, _depth)?;
3833            fidl::decode!(
3834                u32,
3835                D,
3836                &mut self.softmac_hardware_capability,
3837                decoder,
3838                offset + 32,
3839                _depth
3840            )?;
3841            fidl::decode!(bool, D, &mut self.qos_capable, decoder, offset + 36, _depth)?;
3842            Ok(())
3843        }
3844    }
3845
3846    impl fidl::encoding::ValueTypeMarker for DisassociateConfirm {
3847        type Borrowed<'a> = &'a Self;
3848        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3849            value
3850        }
3851    }
3852
3853    unsafe impl fidl::encoding::TypeMarker for DisassociateConfirm {
3854        type Owned = Self;
3855
3856        #[inline(always)]
3857        fn inline_align(_context: fidl::encoding::Context) -> usize {
3858            4
3859        }
3860
3861        #[inline(always)]
3862        fn inline_size(_context: fidl::encoding::Context) -> usize {
3863            4
3864        }
3865        #[inline(always)]
3866        fn encode_is_copy() -> bool {
3867            true
3868        }
3869
3870        #[inline(always)]
3871        fn decode_is_copy() -> bool {
3872            true
3873        }
3874    }
3875
3876    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisassociateConfirm, D>
3877        for &DisassociateConfirm
3878    {
3879        #[inline]
3880        unsafe fn encode(
3881            self,
3882            encoder: &mut fidl::encoding::Encoder<'_, D>,
3883            offset: usize,
3884            _depth: fidl::encoding::Depth,
3885        ) -> fidl::Result<()> {
3886            encoder.debug_check_bounds::<DisassociateConfirm>(offset);
3887            unsafe {
3888                // Copy the object into the buffer.
3889                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3890                (buf_ptr as *mut DisassociateConfirm)
3891                    .write_unaligned((self as *const DisassociateConfirm).read());
3892                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3893                // done second because the memcpy will write garbage to these bytes.
3894            }
3895            Ok(())
3896        }
3897    }
3898    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
3899        fidl::encoding::Encode<DisassociateConfirm, D> for (T0,)
3900    {
3901        #[inline]
3902        unsafe fn encode(
3903            self,
3904            encoder: &mut fidl::encoding::Encoder<'_, D>,
3905            offset: usize,
3906            depth: fidl::encoding::Depth,
3907        ) -> fidl::Result<()> {
3908            encoder.debug_check_bounds::<DisassociateConfirm>(offset);
3909            // Zero out padding regions. There's no need to apply masks
3910            // because the unmasked parts will be overwritten by fields.
3911            // Write the fields.
3912            self.0.encode(encoder, offset + 0, depth)?;
3913            Ok(())
3914        }
3915    }
3916
3917    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisassociateConfirm {
3918        #[inline(always)]
3919        fn new_empty() -> Self {
3920            Self { status: fidl::new_empty!(i32, D) }
3921        }
3922
3923        #[inline]
3924        unsafe fn decode(
3925            &mut self,
3926            decoder: &mut fidl::encoding::Decoder<'_, D>,
3927            offset: usize,
3928            _depth: fidl::encoding::Depth,
3929        ) -> fidl::Result<()> {
3930            decoder.debug_check_bounds::<Self>(offset);
3931            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3932            // Verify that padding bytes are zero.
3933            // Copy from the buffer into the object.
3934            unsafe {
3935                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
3936            }
3937            Ok(())
3938        }
3939    }
3940
3941    impl fidl::encoding::ValueTypeMarker for DisassociateIndication {
3942        type Borrowed<'a> = &'a Self;
3943        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3944            value
3945        }
3946    }
3947
3948    unsafe impl fidl::encoding::TypeMarker for DisassociateIndication {
3949        type Owned = Self;
3950
3951        #[inline(always)]
3952        fn inline_align(_context: fidl::encoding::Context) -> usize {
3953            2
3954        }
3955
3956        #[inline(always)]
3957        fn inline_size(_context: fidl::encoding::Context) -> usize {
3958            10
3959        }
3960    }
3961
3962    unsafe impl<D: fidl::encoding::ResourceDialect>
3963        fidl::encoding::Encode<DisassociateIndication, D> for &DisassociateIndication
3964    {
3965        #[inline]
3966        unsafe fn encode(
3967            self,
3968            encoder: &mut fidl::encoding::Encoder<'_, D>,
3969            offset: usize,
3970            _depth: fidl::encoding::Depth,
3971        ) -> fidl::Result<()> {
3972            encoder.debug_check_bounds::<DisassociateIndication>(offset);
3973            // Delegate to tuple encoding.
3974            fidl::encoding::Encode::<DisassociateIndication, D>::encode(
3975                (
3976                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3977                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3978                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.locally_initiated),
3979                ),
3980                encoder, offset, _depth
3981            )
3982        }
3983    }
3984    unsafe impl<
3985        D: fidl::encoding::ResourceDialect,
3986        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3987        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
3988        T2: fidl::encoding::Encode<bool, D>,
3989    > fidl::encoding::Encode<DisassociateIndication, D> for (T0, T1, T2)
3990    {
3991        #[inline]
3992        unsafe fn encode(
3993            self,
3994            encoder: &mut fidl::encoding::Encoder<'_, D>,
3995            offset: usize,
3996            depth: fidl::encoding::Depth,
3997        ) -> fidl::Result<()> {
3998            encoder.debug_check_bounds::<DisassociateIndication>(offset);
3999            // Zero out padding regions. There's no need to apply masks
4000            // because the unmasked parts will be overwritten by fields.
4001            unsafe {
4002                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4003                (ptr as *mut u16).write_unaligned(0);
4004            }
4005            // Write the fields.
4006            self.0.encode(encoder, offset + 0, depth)?;
4007            self.1.encode(encoder, offset + 6, depth)?;
4008            self.2.encode(encoder, offset + 8, depth)?;
4009            Ok(())
4010        }
4011    }
4012
4013    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4014        for DisassociateIndication
4015    {
4016        #[inline(always)]
4017        fn new_empty() -> Self {
4018            Self {
4019                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4020                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
4021                locally_initiated: fidl::new_empty!(bool, D),
4022            }
4023        }
4024
4025        #[inline]
4026        unsafe fn decode(
4027            &mut self,
4028            decoder: &mut fidl::encoding::Decoder<'_, D>,
4029            offset: usize,
4030            _depth: fidl::encoding::Depth,
4031        ) -> fidl::Result<()> {
4032            decoder.debug_check_bounds::<Self>(offset);
4033            // Verify that padding bytes are zero.
4034            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4035            let padval = unsafe { (ptr as *const u16).read_unaligned() };
4036            let mask = 0xff00u16;
4037            let maskedval = padval & mask;
4038            if maskedval != 0 {
4039                return Err(fidl::Error::NonZeroPadding {
4040                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4041                });
4042            }
4043            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
4044            fidl::decode!(
4045                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
4046                D,
4047                &mut self.reason_code,
4048                decoder,
4049                offset + 6,
4050                _depth
4051            )?;
4052            fidl::decode!(bool, D, &mut self.locally_initiated, decoder, offset + 8, _depth)?;
4053            Ok(())
4054        }
4055    }
4056
4057    impl fidl::encoding::ValueTypeMarker for DisassociateRequest {
4058        type Borrowed<'a> = &'a Self;
4059        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4060            value
4061        }
4062    }
4063
4064    unsafe impl fidl::encoding::TypeMarker for DisassociateRequest {
4065        type Owned = Self;
4066
4067        #[inline(always)]
4068        fn inline_align(_context: fidl::encoding::Context) -> usize {
4069            2
4070        }
4071
4072        #[inline(always)]
4073        fn inline_size(_context: fidl::encoding::Context) -> usize {
4074            8
4075        }
4076    }
4077
4078    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisassociateRequest, D>
4079        for &DisassociateRequest
4080    {
4081        #[inline]
4082        unsafe fn encode(
4083            self,
4084            encoder: &mut fidl::encoding::Encoder<'_, D>,
4085            offset: usize,
4086            _depth: fidl::encoding::Depth,
4087        ) -> fidl::Result<()> {
4088            encoder.debug_check_bounds::<DisassociateRequest>(offset);
4089            // Delegate to tuple encoding.
4090            fidl::encoding::Encode::<DisassociateRequest, D>::encode(
4091                (
4092                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
4093                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
4094                ),
4095                encoder, offset, _depth
4096            )
4097        }
4098    }
4099    unsafe impl<
4100        D: fidl::encoding::ResourceDialect,
4101        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4102        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
4103    > fidl::encoding::Encode<DisassociateRequest, D> for (T0, T1)
4104    {
4105        #[inline]
4106        unsafe fn encode(
4107            self,
4108            encoder: &mut fidl::encoding::Encoder<'_, D>,
4109            offset: usize,
4110            depth: fidl::encoding::Depth,
4111        ) -> fidl::Result<()> {
4112            encoder.debug_check_bounds::<DisassociateRequest>(offset);
4113            // Zero out padding regions. There's no need to apply masks
4114            // because the unmasked parts will be overwritten by fields.
4115            // Write the fields.
4116            self.0.encode(encoder, offset + 0, depth)?;
4117            self.1.encode(encoder, offset + 6, depth)?;
4118            Ok(())
4119        }
4120    }
4121
4122    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisassociateRequest {
4123        #[inline(always)]
4124        fn new_empty() -> Self {
4125            Self {
4126                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4127                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
4128            }
4129        }
4130
4131        #[inline]
4132        unsafe fn decode(
4133            &mut self,
4134            decoder: &mut fidl::encoding::Decoder<'_, D>,
4135            offset: usize,
4136            _depth: fidl::encoding::Depth,
4137        ) -> fidl::Result<()> {
4138            decoder.debug_check_bounds::<Self>(offset);
4139            // Verify that padding bytes are zero.
4140            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
4141            fidl::decode!(
4142                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
4143                D,
4144                &mut self.reason_code,
4145                decoder,
4146                offset + 6,
4147                _depth
4148            )?;
4149            Ok(())
4150        }
4151    }
4152
4153    impl fidl::encoding::ValueTypeMarker for EapolConfirm {
4154        type Borrowed<'a> = &'a Self;
4155        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4156            value
4157        }
4158    }
4159
4160    unsafe impl fidl::encoding::TypeMarker for EapolConfirm {
4161        type Owned = Self;
4162
4163        #[inline(always)]
4164        fn inline_align(_context: fidl::encoding::Context) -> usize {
4165            4
4166        }
4167
4168        #[inline(always)]
4169        fn inline_size(_context: fidl::encoding::Context) -> usize {
4170            12
4171        }
4172    }
4173
4174    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolConfirm, D>
4175        for &EapolConfirm
4176    {
4177        #[inline]
4178        unsafe fn encode(
4179            self,
4180            encoder: &mut fidl::encoding::Encoder<'_, D>,
4181            offset: usize,
4182            _depth: fidl::encoding::Depth,
4183        ) -> fidl::Result<()> {
4184            encoder.debug_check_bounds::<EapolConfirm>(offset);
4185            // Delegate to tuple encoding.
4186            fidl::encoding::Encode::<EapolConfirm, D>::encode(
4187                (
4188                    <EapolResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
4189                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
4190                        &self.dst_addr,
4191                    ),
4192                ),
4193                encoder,
4194                offset,
4195                _depth,
4196            )
4197        }
4198    }
4199    unsafe impl<
4200        D: fidl::encoding::ResourceDialect,
4201        T0: fidl::encoding::Encode<EapolResultCode, D>,
4202        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4203    > fidl::encoding::Encode<EapolConfirm, D> for (T0, T1)
4204    {
4205        #[inline]
4206        unsafe fn encode(
4207            self,
4208            encoder: &mut fidl::encoding::Encoder<'_, D>,
4209            offset: usize,
4210            depth: fidl::encoding::Depth,
4211        ) -> fidl::Result<()> {
4212            encoder.debug_check_bounds::<EapolConfirm>(offset);
4213            // Zero out padding regions. There's no need to apply masks
4214            // because the unmasked parts will be overwritten by fields.
4215            unsafe {
4216                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4217                (ptr as *mut u32).write_unaligned(0);
4218            }
4219            // Write the fields.
4220            self.0.encode(encoder, offset + 0, depth)?;
4221            self.1.encode(encoder, offset + 4, depth)?;
4222            Ok(())
4223        }
4224    }
4225
4226    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolConfirm {
4227        #[inline(always)]
4228        fn new_empty() -> Self {
4229            Self {
4230                result_code: fidl::new_empty!(EapolResultCode, D),
4231                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4232            }
4233        }
4234
4235        #[inline]
4236        unsafe fn decode(
4237            &mut self,
4238            decoder: &mut fidl::encoding::Decoder<'_, D>,
4239            offset: usize,
4240            _depth: fidl::encoding::Depth,
4241        ) -> fidl::Result<()> {
4242            decoder.debug_check_bounds::<Self>(offset);
4243            // Verify that padding bytes are zero.
4244            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4245            let padval = unsafe { (ptr as *const u32).read_unaligned() };
4246            let mask = 0xffff0000u32;
4247            let maskedval = padval & mask;
4248            if maskedval != 0 {
4249                return Err(fidl::Error::NonZeroPadding {
4250                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4251                });
4252            }
4253            fidl::decode!(EapolResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
4254            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 4, _depth)?;
4255            Ok(())
4256        }
4257    }
4258
4259    impl fidl::encoding::ValueTypeMarker for EapolIndication {
4260        type Borrowed<'a> = &'a Self;
4261        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4262            value
4263        }
4264    }
4265
4266    unsafe impl fidl::encoding::TypeMarker for EapolIndication {
4267        type Owned = Self;
4268
4269        #[inline(always)]
4270        fn inline_align(_context: fidl::encoding::Context) -> usize {
4271            8
4272        }
4273
4274        #[inline(always)]
4275        fn inline_size(_context: fidl::encoding::Context) -> usize {
4276            32
4277        }
4278    }
4279
4280    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolIndication, D>
4281        for &EapolIndication
4282    {
4283        #[inline]
4284        unsafe fn encode(
4285            self,
4286            encoder: &mut fidl::encoding::Encoder<'_, D>,
4287            offset: usize,
4288            _depth: fidl::encoding::Depth,
4289        ) -> fidl::Result<()> {
4290            encoder.debug_check_bounds::<EapolIndication>(offset);
4291            // Delegate to tuple encoding.
4292            fidl::encoding::Encode::<EapolIndication, D>::encode(
4293                (
4294                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.src_addr),
4295                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.dst_addr),
4296                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4297                ),
4298                encoder, offset, _depth
4299            )
4300        }
4301    }
4302    unsafe impl<
4303        D: fidl::encoding::ResourceDialect,
4304        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4305        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4306        T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4307    > fidl::encoding::Encode<EapolIndication, D> for (T0, T1, T2)
4308    {
4309        #[inline]
4310        unsafe fn encode(
4311            self,
4312            encoder: &mut fidl::encoding::Encoder<'_, D>,
4313            offset: usize,
4314            depth: fidl::encoding::Depth,
4315        ) -> fidl::Result<()> {
4316            encoder.debug_check_bounds::<EapolIndication>(offset);
4317            // Zero out padding regions. There's no need to apply masks
4318            // because the unmasked parts will be overwritten by fields.
4319            unsafe {
4320                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4321                (ptr as *mut u64).write_unaligned(0);
4322            }
4323            // Write the fields.
4324            self.0.encode(encoder, offset + 0, depth)?;
4325            self.1.encode(encoder, offset + 6, depth)?;
4326            self.2.encode(encoder, offset + 16, depth)?;
4327            Ok(())
4328        }
4329    }
4330
4331    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolIndication {
4332        #[inline(always)]
4333        fn new_empty() -> Self {
4334            Self {
4335                src_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4336                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4337                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4338            }
4339        }
4340
4341        #[inline]
4342        unsafe fn decode(
4343            &mut self,
4344            decoder: &mut fidl::encoding::Decoder<'_, D>,
4345            offset: usize,
4346            _depth: fidl::encoding::Depth,
4347        ) -> fidl::Result<()> {
4348            decoder.debug_check_bounds::<Self>(offset);
4349            // Verify that padding bytes are zero.
4350            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4351            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4352            let mask = 0xffffffff00000000u64;
4353            let maskedval = padval & mask;
4354            if maskedval != 0 {
4355                return Err(fidl::Error::NonZeroPadding {
4356                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4357                });
4358            }
4359            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.src_addr, decoder, offset + 0, _depth)?;
4360            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 6, _depth)?;
4361            fidl::decode!(
4362                fidl::encoding::UnboundedVector<u8>,
4363                D,
4364                &mut self.data,
4365                decoder,
4366                offset + 16,
4367                _depth
4368            )?;
4369            Ok(())
4370        }
4371    }
4372
4373    impl fidl::encoding::ValueTypeMarker for EapolRequest {
4374        type Borrowed<'a> = &'a Self;
4375        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4376            value
4377        }
4378    }
4379
4380    unsafe impl fidl::encoding::TypeMarker for EapolRequest {
4381        type Owned = Self;
4382
4383        #[inline(always)]
4384        fn inline_align(_context: fidl::encoding::Context) -> usize {
4385            8
4386        }
4387
4388        #[inline(always)]
4389        fn inline_size(_context: fidl::encoding::Context) -> usize {
4390            32
4391        }
4392    }
4393
4394    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolRequest, D>
4395        for &EapolRequest
4396    {
4397        #[inline]
4398        unsafe fn encode(
4399            self,
4400            encoder: &mut fidl::encoding::Encoder<'_, D>,
4401            offset: usize,
4402            _depth: fidl::encoding::Depth,
4403        ) -> fidl::Result<()> {
4404            encoder.debug_check_bounds::<EapolRequest>(offset);
4405            // Delegate to tuple encoding.
4406            fidl::encoding::Encode::<EapolRequest, D>::encode(
4407                (
4408                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.src_addr),
4409                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.dst_addr),
4410                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4411                ),
4412                encoder, offset, _depth
4413            )
4414        }
4415    }
4416    unsafe impl<
4417        D: fidl::encoding::ResourceDialect,
4418        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4419        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4420        T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4421    > fidl::encoding::Encode<EapolRequest, D> for (T0, T1, T2)
4422    {
4423        #[inline]
4424        unsafe fn encode(
4425            self,
4426            encoder: &mut fidl::encoding::Encoder<'_, D>,
4427            offset: usize,
4428            depth: fidl::encoding::Depth,
4429        ) -> fidl::Result<()> {
4430            encoder.debug_check_bounds::<EapolRequest>(offset);
4431            // Zero out padding regions. There's no need to apply masks
4432            // because the unmasked parts will be overwritten by fields.
4433            unsafe {
4434                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4435                (ptr as *mut u64).write_unaligned(0);
4436            }
4437            // Write the fields.
4438            self.0.encode(encoder, offset + 0, depth)?;
4439            self.1.encode(encoder, offset + 6, depth)?;
4440            self.2.encode(encoder, offset + 16, depth)?;
4441            Ok(())
4442        }
4443    }
4444
4445    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolRequest {
4446        #[inline(always)]
4447        fn new_empty() -> Self {
4448            Self {
4449                src_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4450                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4451                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4452            }
4453        }
4454
4455        #[inline]
4456        unsafe fn decode(
4457            &mut self,
4458            decoder: &mut fidl::encoding::Decoder<'_, D>,
4459            offset: usize,
4460            _depth: fidl::encoding::Depth,
4461        ) -> fidl::Result<()> {
4462            decoder.debug_check_bounds::<Self>(offset);
4463            // Verify that padding bytes are zero.
4464            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4465            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4466            let mask = 0xffffffff00000000u64;
4467            let maskedval = padval & mask;
4468            if maskedval != 0 {
4469                return Err(fidl::Error::NonZeroPadding {
4470                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4471                });
4472            }
4473            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.src_addr, decoder, offset + 0, _depth)?;
4474            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 6, _depth)?;
4475            fidl::decode!(
4476                fidl::encoding::UnboundedVector<u8>,
4477                D,
4478                &mut self.data,
4479                decoder,
4480                offset + 16,
4481                _depth
4482            )?;
4483            Ok(())
4484        }
4485    }
4486
4487    impl fidl::encoding::ValueTypeMarker for MlmeGetSignalReportResponse {
4488        type Borrowed<'a> = &'a Self;
4489        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4490            value
4491        }
4492    }
4493
4494    unsafe impl fidl::encoding::TypeMarker for MlmeGetSignalReportResponse {
4495        type Owned = Self;
4496
4497        #[inline(always)]
4498        fn inline_align(_context: fidl::encoding::Context) -> usize {
4499            8
4500        }
4501
4502        #[inline(always)]
4503        fn inline_size(_context: fidl::encoding::Context) -> usize {
4504            16
4505        }
4506    }
4507
4508    unsafe impl<D: fidl::encoding::ResourceDialect>
4509        fidl::encoding::Encode<MlmeGetSignalReportResponse, D> for &MlmeGetSignalReportResponse
4510    {
4511        #[inline]
4512        unsafe fn encode(
4513            self,
4514            encoder: &mut fidl::encoding::Encoder<'_, D>,
4515            offset: usize,
4516            _depth: fidl::encoding::Depth,
4517        ) -> fidl::Result<()> {
4518            encoder.debug_check_bounds::<MlmeGetSignalReportResponse>(offset);
4519            // Delegate to tuple encoding.
4520            fidl::encoding::Encode::<MlmeGetSignalReportResponse, D>::encode(
4521                (
4522                    <fidl_fuchsia_wlan_stats__common::SignalReport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
4523                ),
4524                encoder, offset, _depth
4525            )
4526        }
4527    }
4528    unsafe impl<
4529        D: fidl::encoding::ResourceDialect,
4530        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::SignalReport, D>,
4531    > fidl::encoding::Encode<MlmeGetSignalReportResponse, D> for (T0,)
4532    {
4533        #[inline]
4534        unsafe fn encode(
4535            self,
4536            encoder: &mut fidl::encoding::Encoder<'_, D>,
4537            offset: usize,
4538            depth: fidl::encoding::Depth,
4539        ) -> fidl::Result<()> {
4540            encoder.debug_check_bounds::<MlmeGetSignalReportResponse>(offset);
4541            // Zero out padding regions. There's no need to apply masks
4542            // because the unmasked parts will be overwritten by fields.
4543            // Write the fields.
4544            self.0.encode(encoder, offset + 0, depth)?;
4545            Ok(())
4546        }
4547    }
4548
4549    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4550        for MlmeGetSignalReportResponse
4551    {
4552        #[inline(always)]
4553        fn new_empty() -> Self {
4554            Self { resp: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::SignalReport, D) }
4555        }
4556
4557        #[inline]
4558        unsafe fn decode(
4559            &mut self,
4560            decoder: &mut fidl::encoding::Decoder<'_, D>,
4561            offset: usize,
4562            _depth: fidl::encoding::Depth,
4563        ) -> fidl::Result<()> {
4564            decoder.debug_check_bounds::<Self>(offset);
4565            // Verify that padding bytes are zero.
4566            fidl::decode!(
4567                fidl_fuchsia_wlan_stats__common::SignalReport,
4568                D,
4569                &mut self.resp,
4570                decoder,
4571                offset + 0,
4572                _depth
4573            )?;
4574            Ok(())
4575        }
4576    }
4577
4578    impl fidl::encoding::ValueTypeMarker for MlmeQueryTelemetrySupportResponse {
4579        type Borrowed<'a> = &'a Self;
4580        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4581            value
4582        }
4583    }
4584
4585    unsafe impl fidl::encoding::TypeMarker for MlmeQueryTelemetrySupportResponse {
4586        type Owned = Self;
4587
4588        #[inline(always)]
4589        fn inline_align(_context: fidl::encoding::Context) -> usize {
4590            8
4591        }
4592
4593        #[inline(always)]
4594        fn inline_size(_context: fidl::encoding::Context) -> usize {
4595            16
4596        }
4597    }
4598
4599    unsafe impl<D: fidl::encoding::ResourceDialect>
4600        fidl::encoding::Encode<MlmeQueryTelemetrySupportResponse, D>
4601        for &MlmeQueryTelemetrySupportResponse
4602    {
4603        #[inline]
4604        unsafe fn encode(
4605            self,
4606            encoder: &mut fidl::encoding::Encoder<'_, D>,
4607            offset: usize,
4608            _depth: fidl::encoding::Depth,
4609        ) -> fidl::Result<()> {
4610            encoder.debug_check_bounds::<MlmeQueryTelemetrySupportResponse>(offset);
4611            // Delegate to tuple encoding.
4612            fidl::encoding::Encode::<MlmeQueryTelemetrySupportResponse, D>::encode(
4613                (
4614                    <fidl_fuchsia_wlan_stats__common::TelemetrySupport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
4615                ),
4616                encoder, offset, _depth
4617            )
4618        }
4619    }
4620    unsafe impl<
4621        D: fidl::encoding::ResourceDialect,
4622        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::TelemetrySupport, D>,
4623    > fidl::encoding::Encode<MlmeQueryTelemetrySupportResponse, D> for (T0,)
4624    {
4625        #[inline]
4626        unsafe fn encode(
4627            self,
4628            encoder: &mut fidl::encoding::Encoder<'_, D>,
4629            offset: usize,
4630            depth: fidl::encoding::Depth,
4631        ) -> fidl::Result<()> {
4632            encoder.debug_check_bounds::<MlmeQueryTelemetrySupportResponse>(offset);
4633            // Zero out padding regions. There's no need to apply masks
4634            // because the unmasked parts will be overwritten by fields.
4635            // Write the fields.
4636            self.0.encode(encoder, offset + 0, depth)?;
4637            Ok(())
4638        }
4639    }
4640
4641    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4642        for MlmeQueryTelemetrySupportResponse
4643    {
4644        #[inline(always)]
4645        fn new_empty() -> Self {
4646            Self { resp: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::TelemetrySupport, D) }
4647        }
4648
4649        #[inline]
4650        unsafe fn decode(
4651            &mut self,
4652            decoder: &mut fidl::encoding::Decoder<'_, D>,
4653            offset: usize,
4654            _depth: fidl::encoding::Depth,
4655        ) -> fidl::Result<()> {
4656            decoder.debug_check_bounds::<Self>(offset);
4657            // Verify that padding bytes are zero.
4658            fidl::decode!(
4659                fidl_fuchsia_wlan_stats__common::TelemetrySupport,
4660                D,
4661                &mut self.resp,
4662                decoder,
4663                offset + 0,
4664                _depth
4665            )?;
4666            Ok(())
4667        }
4668    }
4669
4670    impl fidl::encoding::ValueTypeMarker for MinstrelListResponse {
4671        type Borrowed<'a> = &'a Self;
4672        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4673            value
4674        }
4675    }
4676
4677    unsafe impl fidl::encoding::TypeMarker for MinstrelListResponse {
4678        type Owned = Self;
4679
4680        #[inline(always)]
4681        fn inline_align(_context: fidl::encoding::Context) -> usize {
4682            8
4683        }
4684
4685        #[inline(always)]
4686        fn inline_size(_context: fidl::encoding::Context) -> usize {
4687            16
4688        }
4689    }
4690
4691    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelListResponse, D>
4692        for &MinstrelListResponse
4693    {
4694        #[inline]
4695        unsafe fn encode(
4696            self,
4697            encoder: &mut fidl::encoding::Encoder<'_, D>,
4698            offset: usize,
4699            _depth: fidl::encoding::Depth,
4700        ) -> fidl::Result<()> {
4701            encoder.debug_check_bounds::<MinstrelListResponse>(offset);
4702            // Delegate to tuple encoding.
4703            fidl::encoding::Encode::<MinstrelListResponse, D>::encode(
4704                (
4705                    <fidl_fuchsia_wlan_minstrel__common::Peers as fidl::encoding::ValueTypeMarker>::borrow(&self.peers),
4706                ),
4707                encoder, offset, _depth
4708            )
4709        }
4710    }
4711    unsafe impl<
4712        D: fidl::encoding::ResourceDialect,
4713        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_minstrel__common::Peers, D>,
4714    > fidl::encoding::Encode<MinstrelListResponse, D> for (T0,)
4715    {
4716        #[inline]
4717        unsafe fn encode(
4718            self,
4719            encoder: &mut fidl::encoding::Encoder<'_, D>,
4720            offset: usize,
4721            depth: fidl::encoding::Depth,
4722        ) -> fidl::Result<()> {
4723            encoder.debug_check_bounds::<MinstrelListResponse>(offset);
4724            // Zero out padding regions. There's no need to apply masks
4725            // because the unmasked parts will be overwritten by fields.
4726            // Write the fields.
4727            self.0.encode(encoder, offset + 0, depth)?;
4728            Ok(())
4729        }
4730    }
4731
4732    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelListResponse {
4733        #[inline(always)]
4734        fn new_empty() -> Self {
4735            Self { peers: fidl::new_empty!(fidl_fuchsia_wlan_minstrel__common::Peers, D) }
4736        }
4737
4738        #[inline]
4739        unsafe fn decode(
4740            &mut self,
4741            decoder: &mut fidl::encoding::Decoder<'_, D>,
4742            offset: usize,
4743            _depth: fidl::encoding::Depth,
4744        ) -> fidl::Result<()> {
4745            decoder.debug_check_bounds::<Self>(offset);
4746            // Verify that padding bytes are zero.
4747            fidl::decode!(
4748                fidl_fuchsia_wlan_minstrel__common::Peers,
4749                D,
4750                &mut self.peers,
4751                decoder,
4752                offset + 0,
4753                _depth
4754            )?;
4755            Ok(())
4756        }
4757    }
4758
4759    impl fidl::encoding::ValueTypeMarker for MinstrelStatsRequest {
4760        type Borrowed<'a> = &'a Self;
4761        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4762            value
4763        }
4764    }
4765
4766    unsafe impl fidl::encoding::TypeMarker for MinstrelStatsRequest {
4767        type Owned = Self;
4768
4769        #[inline(always)]
4770        fn inline_align(_context: fidl::encoding::Context) -> usize {
4771            1
4772        }
4773
4774        #[inline(always)]
4775        fn inline_size(_context: fidl::encoding::Context) -> usize {
4776            6
4777        }
4778        #[inline(always)]
4779        fn encode_is_copy() -> bool {
4780            true
4781        }
4782
4783        #[inline(always)]
4784        fn decode_is_copy() -> bool {
4785            true
4786        }
4787    }
4788
4789    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelStatsRequest, D>
4790        for &MinstrelStatsRequest
4791    {
4792        #[inline]
4793        unsafe fn encode(
4794            self,
4795            encoder: &mut fidl::encoding::Encoder<'_, D>,
4796            offset: usize,
4797            _depth: fidl::encoding::Depth,
4798        ) -> fidl::Result<()> {
4799            encoder.debug_check_bounds::<MinstrelStatsRequest>(offset);
4800            unsafe {
4801                // Copy the object into the buffer.
4802                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
4803                (buf_ptr as *mut MinstrelStatsRequest)
4804                    .write_unaligned((self as *const MinstrelStatsRequest).read());
4805                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
4806                // done second because the memcpy will write garbage to these bytes.
4807            }
4808            Ok(())
4809        }
4810    }
4811    unsafe impl<
4812        D: fidl::encoding::ResourceDialect,
4813        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4814    > fidl::encoding::Encode<MinstrelStatsRequest, D> for (T0,)
4815    {
4816        #[inline]
4817        unsafe fn encode(
4818            self,
4819            encoder: &mut fidl::encoding::Encoder<'_, D>,
4820            offset: usize,
4821            depth: fidl::encoding::Depth,
4822        ) -> fidl::Result<()> {
4823            encoder.debug_check_bounds::<MinstrelStatsRequest>(offset);
4824            // Zero out padding regions. There's no need to apply masks
4825            // because the unmasked parts will be overwritten by fields.
4826            // Write the fields.
4827            self.0.encode(encoder, offset + 0, depth)?;
4828            Ok(())
4829        }
4830    }
4831
4832    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelStatsRequest {
4833        #[inline(always)]
4834        fn new_empty() -> Self {
4835            Self { peer_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
4836        }
4837
4838        #[inline]
4839        unsafe fn decode(
4840            &mut self,
4841            decoder: &mut fidl::encoding::Decoder<'_, D>,
4842            offset: usize,
4843            _depth: fidl::encoding::Depth,
4844        ) -> fidl::Result<()> {
4845            decoder.debug_check_bounds::<Self>(offset);
4846            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
4847            // Verify that padding bytes are zero.
4848            // Copy from the buffer into the object.
4849            unsafe {
4850                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
4851            }
4852            Ok(())
4853        }
4854    }
4855
4856    impl fidl::encoding::ValueTypeMarker for MinstrelStatsResponse {
4857        type Borrowed<'a> = &'a Self;
4858        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4859            value
4860        }
4861    }
4862
4863    unsafe impl fidl::encoding::TypeMarker for MinstrelStatsResponse {
4864        type Owned = Self;
4865
4866        #[inline(always)]
4867        fn inline_align(_context: fidl::encoding::Context) -> usize {
4868            8
4869        }
4870
4871        #[inline(always)]
4872        fn inline_size(_context: fidl::encoding::Context) -> usize {
4873            8
4874        }
4875    }
4876
4877    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelStatsResponse, D>
4878        for &MinstrelStatsResponse
4879    {
4880        #[inline]
4881        unsafe fn encode(
4882            self,
4883            encoder: &mut fidl::encoding::Encoder<'_, D>,
4884            offset: usize,
4885            _depth: fidl::encoding::Depth,
4886        ) -> fidl::Result<()> {
4887            encoder.debug_check_bounds::<MinstrelStatsResponse>(offset);
4888            // Delegate to tuple encoding.
4889            fidl::encoding::Encode::<MinstrelStatsResponse, D>::encode(
4890                (
4891                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer),
4892                ),
4893                encoder, offset, _depth
4894            )
4895        }
4896    }
4897    unsafe impl<
4898        D: fidl::encoding::ResourceDialect,
4899        T0: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer>, D>,
4900    > fidl::encoding::Encode<MinstrelStatsResponse, D> for (T0,)
4901    {
4902        #[inline]
4903        unsafe fn encode(
4904            self,
4905            encoder: &mut fidl::encoding::Encoder<'_, D>,
4906            offset: usize,
4907            depth: fidl::encoding::Depth,
4908        ) -> fidl::Result<()> {
4909            encoder.debug_check_bounds::<MinstrelStatsResponse>(offset);
4910            // Zero out padding regions. There's no need to apply masks
4911            // because the unmasked parts will be overwritten by fields.
4912            // Write the fields.
4913            self.0.encode(encoder, offset + 0, depth)?;
4914            Ok(())
4915        }
4916    }
4917
4918    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelStatsResponse {
4919        #[inline(always)]
4920        fn new_empty() -> Self {
4921            Self {
4922                peer: fidl::new_empty!(
4923                    fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer>,
4924                    D
4925                ),
4926            }
4927        }
4928
4929        #[inline]
4930        unsafe fn decode(
4931            &mut self,
4932            decoder: &mut fidl::encoding::Decoder<'_, D>,
4933            offset: usize,
4934            _depth: fidl::encoding::Depth,
4935        ) -> fidl::Result<()> {
4936            decoder.debug_check_bounds::<Self>(offset);
4937            // Verify that padding bytes are zero.
4938            fidl::decode!(
4939                fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer>,
4940                D,
4941                &mut self.peer,
4942                decoder,
4943                offset + 0,
4944                _depth
4945            )?;
4946            Ok(())
4947        }
4948    }
4949
4950    impl fidl::encoding::ValueTypeMarker for MlmeAssociateIndRequest {
4951        type Borrowed<'a> = &'a Self;
4952        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4953            value
4954        }
4955    }
4956
4957    unsafe impl fidl::encoding::TypeMarker for MlmeAssociateIndRequest {
4958        type Owned = Self;
4959
4960        #[inline(always)]
4961        fn inline_align(_context: fidl::encoding::Context) -> usize {
4962            8
4963        }
4964
4965        #[inline(always)]
4966        fn inline_size(_context: fidl::encoding::Context) -> usize {
4967            64
4968        }
4969    }
4970
4971    unsafe impl<D: fidl::encoding::ResourceDialect>
4972        fidl::encoding::Encode<MlmeAssociateIndRequest, D> for &MlmeAssociateIndRequest
4973    {
4974        #[inline]
4975        unsafe fn encode(
4976            self,
4977            encoder: &mut fidl::encoding::Encoder<'_, D>,
4978            offset: usize,
4979            _depth: fidl::encoding::Depth,
4980        ) -> fidl::Result<()> {
4981            encoder.debug_check_bounds::<MlmeAssociateIndRequest>(offset);
4982            // Delegate to tuple encoding.
4983            fidl::encoding::Encode::<MlmeAssociateIndRequest, D>::encode(
4984                (<AssociateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
4985                encoder,
4986                offset,
4987                _depth,
4988            )
4989        }
4990    }
4991    unsafe impl<
4992        D: fidl::encoding::ResourceDialect,
4993        T0: fidl::encoding::Encode<AssociateIndication, D>,
4994    > fidl::encoding::Encode<MlmeAssociateIndRequest, D> for (T0,)
4995    {
4996        #[inline]
4997        unsafe fn encode(
4998            self,
4999            encoder: &mut fidl::encoding::Encoder<'_, D>,
5000            offset: usize,
5001            depth: fidl::encoding::Depth,
5002        ) -> fidl::Result<()> {
5003            encoder.debug_check_bounds::<MlmeAssociateIndRequest>(offset);
5004            // Zero out padding regions. There's no need to apply masks
5005            // because the unmasked parts will be overwritten by fields.
5006            // Write the fields.
5007            self.0.encode(encoder, offset + 0, depth)?;
5008            Ok(())
5009        }
5010    }
5011
5012    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5013        for MlmeAssociateIndRequest
5014    {
5015        #[inline(always)]
5016        fn new_empty() -> Self {
5017            Self { ind: fidl::new_empty!(AssociateIndication, D) }
5018        }
5019
5020        #[inline]
5021        unsafe fn decode(
5022            &mut self,
5023            decoder: &mut fidl::encoding::Decoder<'_, D>,
5024            offset: usize,
5025            _depth: fidl::encoding::Depth,
5026        ) -> fidl::Result<()> {
5027            decoder.debug_check_bounds::<Self>(offset);
5028            // Verify that padding bytes are zero.
5029            fidl::decode!(AssociateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5030            Ok(())
5031        }
5032    }
5033
5034    impl fidl::encoding::ValueTypeMarker for MlmeAssociateRespRequest {
5035        type Borrowed<'a> = &'a Self;
5036        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5037            value
5038        }
5039    }
5040
5041    unsafe impl fidl::encoding::TypeMarker for MlmeAssociateRespRequest {
5042        type Owned = Self;
5043
5044        #[inline(always)]
5045        fn inline_align(_context: fidl::encoding::Context) -> usize {
5046            8
5047        }
5048
5049        #[inline(always)]
5050        fn inline_size(_context: fidl::encoding::Context) -> usize {
5051            32
5052        }
5053    }
5054
5055    unsafe impl<D: fidl::encoding::ResourceDialect>
5056        fidl::encoding::Encode<MlmeAssociateRespRequest, D> for &MlmeAssociateRespRequest
5057    {
5058        #[inline]
5059        unsafe fn encode(
5060            self,
5061            encoder: &mut fidl::encoding::Encoder<'_, D>,
5062            offset: usize,
5063            _depth: fidl::encoding::Depth,
5064        ) -> fidl::Result<()> {
5065            encoder.debug_check_bounds::<MlmeAssociateRespRequest>(offset);
5066            // Delegate to tuple encoding.
5067            fidl::encoding::Encode::<MlmeAssociateRespRequest, D>::encode(
5068                (<AssociateResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5069                encoder,
5070                offset,
5071                _depth,
5072            )
5073        }
5074    }
5075    unsafe impl<
5076        D: fidl::encoding::ResourceDialect,
5077        T0: fidl::encoding::Encode<AssociateResponse, D>,
5078    > fidl::encoding::Encode<MlmeAssociateRespRequest, D> for (T0,)
5079    {
5080        #[inline]
5081        unsafe fn encode(
5082            self,
5083            encoder: &mut fidl::encoding::Encoder<'_, D>,
5084            offset: usize,
5085            depth: fidl::encoding::Depth,
5086        ) -> fidl::Result<()> {
5087            encoder.debug_check_bounds::<MlmeAssociateRespRequest>(offset);
5088            // Zero out padding regions. There's no need to apply masks
5089            // because the unmasked parts will be overwritten by fields.
5090            // Write the fields.
5091            self.0.encode(encoder, offset + 0, depth)?;
5092            Ok(())
5093        }
5094    }
5095
5096    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5097        for MlmeAssociateRespRequest
5098    {
5099        #[inline(always)]
5100        fn new_empty() -> Self {
5101            Self { resp: fidl::new_empty!(AssociateResponse, D) }
5102        }
5103
5104        #[inline]
5105        unsafe fn decode(
5106            &mut self,
5107            decoder: &mut fidl::encoding::Decoder<'_, D>,
5108            offset: usize,
5109            _depth: fidl::encoding::Depth,
5110        ) -> fidl::Result<()> {
5111            decoder.debug_check_bounds::<Self>(offset);
5112            // Verify that padding bytes are zero.
5113            fidl::decode!(AssociateResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
5114            Ok(())
5115        }
5116    }
5117
5118    impl fidl::encoding::ValueTypeMarker for MlmeAuthenticateIndRequest {
5119        type Borrowed<'a> = &'a Self;
5120        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5121            value
5122        }
5123    }
5124
5125    unsafe impl fidl::encoding::TypeMarker for MlmeAuthenticateIndRequest {
5126        type Owned = Self;
5127
5128        #[inline(always)]
5129        fn inline_align(_context: fidl::encoding::Context) -> usize {
5130            4
5131        }
5132
5133        #[inline(always)]
5134        fn inline_size(_context: fidl::encoding::Context) -> usize {
5135            12
5136        }
5137    }
5138
5139    unsafe impl<D: fidl::encoding::ResourceDialect>
5140        fidl::encoding::Encode<MlmeAuthenticateIndRequest, D> for &MlmeAuthenticateIndRequest
5141    {
5142        #[inline]
5143        unsafe fn encode(
5144            self,
5145            encoder: &mut fidl::encoding::Encoder<'_, D>,
5146            offset: usize,
5147            _depth: fidl::encoding::Depth,
5148        ) -> fidl::Result<()> {
5149            encoder.debug_check_bounds::<MlmeAuthenticateIndRequest>(offset);
5150            // Delegate to tuple encoding.
5151            fidl::encoding::Encode::<MlmeAuthenticateIndRequest, D>::encode(
5152                (<AuthenticateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5153                encoder,
5154                offset,
5155                _depth,
5156            )
5157        }
5158    }
5159    unsafe impl<
5160        D: fidl::encoding::ResourceDialect,
5161        T0: fidl::encoding::Encode<AuthenticateIndication, D>,
5162    > fidl::encoding::Encode<MlmeAuthenticateIndRequest, D> for (T0,)
5163    {
5164        #[inline]
5165        unsafe fn encode(
5166            self,
5167            encoder: &mut fidl::encoding::Encoder<'_, D>,
5168            offset: usize,
5169            depth: fidl::encoding::Depth,
5170        ) -> fidl::Result<()> {
5171            encoder.debug_check_bounds::<MlmeAuthenticateIndRequest>(offset);
5172            // Zero out padding regions. There's no need to apply masks
5173            // because the unmasked parts will be overwritten by fields.
5174            // Write the fields.
5175            self.0.encode(encoder, offset + 0, depth)?;
5176            Ok(())
5177        }
5178    }
5179
5180    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5181        for MlmeAuthenticateIndRequest
5182    {
5183        #[inline(always)]
5184        fn new_empty() -> Self {
5185            Self { ind: fidl::new_empty!(AuthenticateIndication, D) }
5186        }
5187
5188        #[inline]
5189        unsafe fn decode(
5190            &mut self,
5191            decoder: &mut fidl::encoding::Decoder<'_, D>,
5192            offset: usize,
5193            _depth: fidl::encoding::Depth,
5194        ) -> fidl::Result<()> {
5195            decoder.debug_check_bounds::<Self>(offset);
5196            // Verify that padding bytes are zero.
5197            fidl::decode!(AuthenticateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5198            Ok(())
5199        }
5200    }
5201
5202    impl fidl::encoding::ValueTypeMarker for MlmeAuthenticateRespRequest {
5203        type Borrowed<'a> = &'a Self;
5204        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5205            value
5206        }
5207    }
5208
5209    unsafe impl fidl::encoding::TypeMarker for MlmeAuthenticateRespRequest {
5210        type Owned = Self;
5211
5212        #[inline(always)]
5213        fn inline_align(_context: fidl::encoding::Context) -> usize {
5214            4
5215        }
5216
5217        #[inline(always)]
5218        fn inline_size(_context: fidl::encoding::Context) -> usize {
5219            12
5220        }
5221    }
5222
5223    unsafe impl<D: fidl::encoding::ResourceDialect>
5224        fidl::encoding::Encode<MlmeAuthenticateRespRequest, D> for &MlmeAuthenticateRespRequest
5225    {
5226        #[inline]
5227        unsafe fn encode(
5228            self,
5229            encoder: &mut fidl::encoding::Encoder<'_, D>,
5230            offset: usize,
5231            _depth: fidl::encoding::Depth,
5232        ) -> fidl::Result<()> {
5233            encoder.debug_check_bounds::<MlmeAuthenticateRespRequest>(offset);
5234            // Delegate to tuple encoding.
5235            fidl::encoding::Encode::<MlmeAuthenticateRespRequest, D>::encode(
5236                (<AuthenticateResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5237                encoder,
5238                offset,
5239                _depth,
5240            )
5241        }
5242    }
5243    unsafe impl<
5244        D: fidl::encoding::ResourceDialect,
5245        T0: fidl::encoding::Encode<AuthenticateResponse, D>,
5246    > fidl::encoding::Encode<MlmeAuthenticateRespRequest, D> for (T0,)
5247    {
5248        #[inline]
5249        unsafe fn encode(
5250            self,
5251            encoder: &mut fidl::encoding::Encoder<'_, D>,
5252            offset: usize,
5253            depth: fidl::encoding::Depth,
5254        ) -> fidl::Result<()> {
5255            encoder.debug_check_bounds::<MlmeAuthenticateRespRequest>(offset);
5256            // Zero out padding regions. There's no need to apply masks
5257            // because the unmasked parts will be overwritten by fields.
5258            // Write the fields.
5259            self.0.encode(encoder, offset + 0, depth)?;
5260            Ok(())
5261        }
5262    }
5263
5264    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5265        for MlmeAuthenticateRespRequest
5266    {
5267        #[inline(always)]
5268        fn new_empty() -> Self {
5269            Self { resp: fidl::new_empty!(AuthenticateResponse, D) }
5270        }
5271
5272        #[inline]
5273        unsafe fn decode(
5274            &mut self,
5275            decoder: &mut fidl::encoding::Decoder<'_, D>,
5276            offset: usize,
5277            _depth: fidl::encoding::Depth,
5278        ) -> fidl::Result<()> {
5279            decoder.debug_check_bounds::<Self>(offset);
5280            // Verify that padding bytes are zero.
5281            fidl::decode!(AuthenticateResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
5282            Ok(())
5283        }
5284    }
5285
5286    impl fidl::encoding::ValueTypeMarker for MlmeConnectConfRequest {
5287        type Borrowed<'a> = &'a Self;
5288        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5289            value
5290        }
5291    }
5292
5293    unsafe impl fidl::encoding::TypeMarker for MlmeConnectConfRequest {
5294        type Owned = Self;
5295
5296        #[inline(always)]
5297        fn inline_align(_context: fidl::encoding::Context) -> usize {
5298            8
5299        }
5300
5301        #[inline(always)]
5302        fn inline_size(_context: fidl::encoding::Context) -> usize {
5303            32
5304        }
5305    }
5306
5307    unsafe impl<D: fidl::encoding::ResourceDialect>
5308        fidl::encoding::Encode<MlmeConnectConfRequest, D> for &MlmeConnectConfRequest
5309    {
5310        #[inline]
5311        unsafe fn encode(
5312            self,
5313            encoder: &mut fidl::encoding::Encoder<'_, D>,
5314            offset: usize,
5315            _depth: fidl::encoding::Depth,
5316        ) -> fidl::Result<()> {
5317            encoder.debug_check_bounds::<MlmeConnectConfRequest>(offset);
5318            // Delegate to tuple encoding.
5319            fidl::encoding::Encode::<MlmeConnectConfRequest, D>::encode(
5320                (<ConnectConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5321                encoder,
5322                offset,
5323                _depth,
5324            )
5325        }
5326    }
5327    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ConnectConfirm, D>>
5328        fidl::encoding::Encode<MlmeConnectConfRequest, D> for (T0,)
5329    {
5330        #[inline]
5331        unsafe fn encode(
5332            self,
5333            encoder: &mut fidl::encoding::Encoder<'_, D>,
5334            offset: usize,
5335            depth: fidl::encoding::Depth,
5336        ) -> fidl::Result<()> {
5337            encoder.debug_check_bounds::<MlmeConnectConfRequest>(offset);
5338            // Zero out padding regions. There's no need to apply masks
5339            // because the unmasked parts will be overwritten by fields.
5340            // Write the fields.
5341            self.0.encode(encoder, offset + 0, depth)?;
5342            Ok(())
5343        }
5344    }
5345
5346    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5347        for MlmeConnectConfRequest
5348    {
5349        #[inline(always)]
5350        fn new_empty() -> Self {
5351            Self { resp: fidl::new_empty!(ConnectConfirm, D) }
5352        }
5353
5354        #[inline]
5355        unsafe fn decode(
5356            &mut self,
5357            decoder: &mut fidl::encoding::Decoder<'_, D>,
5358            offset: usize,
5359            _depth: fidl::encoding::Depth,
5360        ) -> fidl::Result<()> {
5361            decoder.debug_check_bounds::<Self>(offset);
5362            // Verify that padding bytes are zero.
5363            fidl::decode!(ConnectConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
5364            Ok(())
5365        }
5366    }
5367
5368    impl fidl::encoding::ValueTypeMarker for MlmeConnectReqRequest {
5369        type Borrowed<'a> = &'a Self;
5370        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5371            value
5372        }
5373    }
5374
5375    unsafe impl fidl::encoding::TypeMarker for MlmeConnectReqRequest {
5376        type Owned = Self;
5377
5378        #[inline(always)]
5379        fn inline_align(_context: fidl::encoding::Context) -> usize {
5380            8
5381        }
5382
5383        #[inline(always)]
5384        fn inline_size(_context: fidl::encoding::Context) -> usize {
5385            104
5386        }
5387    }
5388
5389    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeConnectReqRequest, D>
5390        for &MlmeConnectReqRequest
5391    {
5392        #[inline]
5393        unsafe fn encode(
5394            self,
5395            encoder: &mut fidl::encoding::Encoder<'_, D>,
5396            offset: usize,
5397            _depth: fidl::encoding::Depth,
5398        ) -> fidl::Result<()> {
5399            encoder.debug_check_bounds::<MlmeConnectReqRequest>(offset);
5400            // Delegate to tuple encoding.
5401            fidl::encoding::Encode::<MlmeConnectReqRequest, D>::encode(
5402                (<ConnectRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5403                encoder,
5404                offset,
5405                _depth,
5406            )
5407        }
5408    }
5409    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ConnectRequest, D>>
5410        fidl::encoding::Encode<MlmeConnectReqRequest, D> for (T0,)
5411    {
5412        #[inline]
5413        unsafe fn encode(
5414            self,
5415            encoder: &mut fidl::encoding::Encoder<'_, D>,
5416            offset: usize,
5417            depth: fidl::encoding::Depth,
5418        ) -> fidl::Result<()> {
5419            encoder.debug_check_bounds::<MlmeConnectReqRequest>(offset);
5420            // Zero out padding regions. There's no need to apply masks
5421            // because the unmasked parts will be overwritten by fields.
5422            // Write the fields.
5423            self.0.encode(encoder, offset + 0, depth)?;
5424            Ok(())
5425        }
5426    }
5427
5428    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeConnectReqRequest {
5429        #[inline(always)]
5430        fn new_empty() -> Self {
5431            Self { req: fidl::new_empty!(ConnectRequest, D) }
5432        }
5433
5434        #[inline]
5435        unsafe fn decode(
5436            &mut self,
5437            decoder: &mut fidl::encoding::Decoder<'_, D>,
5438            offset: usize,
5439            _depth: fidl::encoding::Depth,
5440        ) -> fidl::Result<()> {
5441            decoder.debug_check_bounds::<Self>(offset);
5442            // Verify that padding bytes are zero.
5443            fidl::decode!(ConnectRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5444            Ok(())
5445        }
5446    }
5447
5448    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateConfRequest {
5449        type Borrowed<'a> = &'a Self;
5450        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5451            value
5452        }
5453    }
5454
5455    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateConfRequest {
5456        type Owned = Self;
5457
5458        #[inline(always)]
5459        fn inline_align(_context: fidl::encoding::Context) -> usize {
5460            1
5461        }
5462
5463        #[inline(always)]
5464        fn inline_size(_context: fidl::encoding::Context) -> usize {
5465            6
5466        }
5467        #[inline(always)]
5468        fn encode_is_copy() -> bool {
5469            true
5470        }
5471
5472        #[inline(always)]
5473        fn decode_is_copy() -> bool {
5474            true
5475        }
5476    }
5477
5478    unsafe impl<D: fidl::encoding::ResourceDialect>
5479        fidl::encoding::Encode<MlmeDeauthenticateConfRequest, D>
5480        for &MlmeDeauthenticateConfRequest
5481    {
5482        #[inline]
5483        unsafe fn encode(
5484            self,
5485            encoder: &mut fidl::encoding::Encoder<'_, D>,
5486            offset: usize,
5487            _depth: fidl::encoding::Depth,
5488        ) -> fidl::Result<()> {
5489            encoder.debug_check_bounds::<MlmeDeauthenticateConfRequest>(offset);
5490            unsafe {
5491                // Copy the object into the buffer.
5492                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5493                (buf_ptr as *mut MlmeDeauthenticateConfRequest)
5494                    .write_unaligned((self as *const MlmeDeauthenticateConfRequest).read());
5495                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
5496                // done second because the memcpy will write garbage to these bytes.
5497            }
5498            Ok(())
5499        }
5500    }
5501    unsafe impl<
5502        D: fidl::encoding::ResourceDialect,
5503        T0: fidl::encoding::Encode<DeauthenticateConfirm, D>,
5504    > fidl::encoding::Encode<MlmeDeauthenticateConfRequest, D> for (T0,)
5505    {
5506        #[inline]
5507        unsafe fn encode(
5508            self,
5509            encoder: &mut fidl::encoding::Encoder<'_, D>,
5510            offset: usize,
5511            depth: fidl::encoding::Depth,
5512        ) -> fidl::Result<()> {
5513            encoder.debug_check_bounds::<MlmeDeauthenticateConfRequest>(offset);
5514            // Zero out padding regions. There's no need to apply masks
5515            // because the unmasked parts will be overwritten by fields.
5516            // Write the fields.
5517            self.0.encode(encoder, offset + 0, depth)?;
5518            Ok(())
5519        }
5520    }
5521
5522    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5523        for MlmeDeauthenticateConfRequest
5524    {
5525        #[inline(always)]
5526        fn new_empty() -> Self {
5527            Self { resp: fidl::new_empty!(DeauthenticateConfirm, D) }
5528        }
5529
5530        #[inline]
5531        unsafe fn decode(
5532            &mut self,
5533            decoder: &mut fidl::encoding::Decoder<'_, D>,
5534            offset: usize,
5535            _depth: fidl::encoding::Depth,
5536        ) -> fidl::Result<()> {
5537            decoder.debug_check_bounds::<Self>(offset);
5538            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5539            // Verify that padding bytes are zero.
5540            // Copy from the buffer into the object.
5541            unsafe {
5542                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
5543            }
5544            Ok(())
5545        }
5546    }
5547
5548    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateIndRequest {
5549        type Borrowed<'a> = &'a Self;
5550        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5551            value
5552        }
5553    }
5554
5555    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateIndRequest {
5556        type Owned = Self;
5557
5558        #[inline(always)]
5559        fn inline_align(_context: fidl::encoding::Context) -> usize {
5560            2
5561        }
5562
5563        #[inline(always)]
5564        fn inline_size(_context: fidl::encoding::Context) -> usize {
5565            10
5566        }
5567    }
5568
5569    unsafe impl<D: fidl::encoding::ResourceDialect>
5570        fidl::encoding::Encode<MlmeDeauthenticateIndRequest, D> for &MlmeDeauthenticateIndRequest
5571    {
5572        #[inline]
5573        unsafe fn encode(
5574            self,
5575            encoder: &mut fidl::encoding::Encoder<'_, D>,
5576            offset: usize,
5577            _depth: fidl::encoding::Depth,
5578        ) -> fidl::Result<()> {
5579            encoder.debug_check_bounds::<MlmeDeauthenticateIndRequest>(offset);
5580            // Delegate to tuple encoding.
5581            fidl::encoding::Encode::<MlmeDeauthenticateIndRequest, D>::encode(
5582                (<DeauthenticateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5583                encoder,
5584                offset,
5585                _depth,
5586            )
5587        }
5588    }
5589    unsafe impl<
5590        D: fidl::encoding::ResourceDialect,
5591        T0: fidl::encoding::Encode<DeauthenticateIndication, D>,
5592    > fidl::encoding::Encode<MlmeDeauthenticateIndRequest, D> for (T0,)
5593    {
5594        #[inline]
5595        unsafe fn encode(
5596            self,
5597            encoder: &mut fidl::encoding::Encoder<'_, D>,
5598            offset: usize,
5599            depth: fidl::encoding::Depth,
5600        ) -> fidl::Result<()> {
5601            encoder.debug_check_bounds::<MlmeDeauthenticateIndRequest>(offset);
5602            // Zero out padding regions. There's no need to apply masks
5603            // because the unmasked parts will be overwritten by fields.
5604            // Write the fields.
5605            self.0.encode(encoder, offset + 0, depth)?;
5606            Ok(())
5607        }
5608    }
5609
5610    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5611        for MlmeDeauthenticateIndRequest
5612    {
5613        #[inline(always)]
5614        fn new_empty() -> Self {
5615            Self { ind: fidl::new_empty!(DeauthenticateIndication, D) }
5616        }
5617
5618        #[inline]
5619        unsafe fn decode(
5620            &mut self,
5621            decoder: &mut fidl::encoding::Decoder<'_, D>,
5622            offset: usize,
5623            _depth: fidl::encoding::Depth,
5624        ) -> fidl::Result<()> {
5625            decoder.debug_check_bounds::<Self>(offset);
5626            // Verify that padding bytes are zero.
5627            fidl::decode!(DeauthenticateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5628            Ok(())
5629        }
5630    }
5631
5632    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateReqRequest {
5633        type Borrowed<'a> = &'a Self;
5634        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5635            value
5636        }
5637    }
5638
5639    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateReqRequest {
5640        type Owned = Self;
5641
5642        #[inline(always)]
5643        fn inline_align(_context: fidl::encoding::Context) -> usize {
5644            2
5645        }
5646
5647        #[inline(always)]
5648        fn inline_size(_context: fidl::encoding::Context) -> usize {
5649            8
5650        }
5651    }
5652
5653    unsafe impl<D: fidl::encoding::ResourceDialect>
5654        fidl::encoding::Encode<MlmeDeauthenticateReqRequest, D> for &MlmeDeauthenticateReqRequest
5655    {
5656        #[inline]
5657        unsafe fn encode(
5658            self,
5659            encoder: &mut fidl::encoding::Encoder<'_, D>,
5660            offset: usize,
5661            _depth: fidl::encoding::Depth,
5662        ) -> fidl::Result<()> {
5663            encoder.debug_check_bounds::<MlmeDeauthenticateReqRequest>(offset);
5664            // Delegate to tuple encoding.
5665            fidl::encoding::Encode::<MlmeDeauthenticateReqRequest, D>::encode(
5666                (<DeauthenticateRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5667                encoder,
5668                offset,
5669                _depth,
5670            )
5671        }
5672    }
5673    unsafe impl<
5674        D: fidl::encoding::ResourceDialect,
5675        T0: fidl::encoding::Encode<DeauthenticateRequest, D>,
5676    > fidl::encoding::Encode<MlmeDeauthenticateReqRequest, D> for (T0,)
5677    {
5678        #[inline]
5679        unsafe fn encode(
5680            self,
5681            encoder: &mut fidl::encoding::Encoder<'_, D>,
5682            offset: usize,
5683            depth: fidl::encoding::Depth,
5684        ) -> fidl::Result<()> {
5685            encoder.debug_check_bounds::<MlmeDeauthenticateReqRequest>(offset);
5686            // Zero out padding regions. There's no need to apply masks
5687            // because the unmasked parts will be overwritten by fields.
5688            // Write the fields.
5689            self.0.encode(encoder, offset + 0, depth)?;
5690            Ok(())
5691        }
5692    }
5693
5694    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5695        for MlmeDeauthenticateReqRequest
5696    {
5697        #[inline(always)]
5698        fn new_empty() -> Self {
5699            Self { req: fidl::new_empty!(DeauthenticateRequest, D) }
5700        }
5701
5702        #[inline]
5703        unsafe fn decode(
5704            &mut self,
5705            decoder: &mut fidl::encoding::Decoder<'_, D>,
5706            offset: usize,
5707            _depth: fidl::encoding::Depth,
5708        ) -> fidl::Result<()> {
5709            decoder.debug_check_bounds::<Self>(offset);
5710            // Verify that padding bytes are zero.
5711            fidl::decode!(DeauthenticateRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5712            Ok(())
5713        }
5714    }
5715
5716    impl fidl::encoding::ValueTypeMarker for MlmeDeleteKeysReqRequest {
5717        type Borrowed<'a> = &'a Self;
5718        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5719            value
5720        }
5721    }
5722
5723    unsafe impl fidl::encoding::TypeMarker for MlmeDeleteKeysReqRequest {
5724        type Owned = Self;
5725
5726        #[inline(always)]
5727        fn inline_align(_context: fidl::encoding::Context) -> usize {
5728            8
5729        }
5730
5731        #[inline(always)]
5732        fn inline_size(_context: fidl::encoding::Context) -> usize {
5733            16
5734        }
5735    }
5736
5737    unsafe impl<D: fidl::encoding::ResourceDialect>
5738        fidl::encoding::Encode<MlmeDeleteKeysReqRequest, D> for &MlmeDeleteKeysReqRequest
5739    {
5740        #[inline]
5741        unsafe fn encode(
5742            self,
5743            encoder: &mut fidl::encoding::Encoder<'_, D>,
5744            offset: usize,
5745            _depth: fidl::encoding::Depth,
5746        ) -> fidl::Result<()> {
5747            encoder.debug_check_bounds::<MlmeDeleteKeysReqRequest>(offset);
5748            // Delegate to tuple encoding.
5749            fidl::encoding::Encode::<MlmeDeleteKeysReqRequest, D>::encode(
5750                (<DeleteKeysRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5751                encoder,
5752                offset,
5753                _depth,
5754            )
5755        }
5756    }
5757    unsafe impl<
5758        D: fidl::encoding::ResourceDialect,
5759        T0: fidl::encoding::Encode<DeleteKeysRequest, D>,
5760    > fidl::encoding::Encode<MlmeDeleteKeysReqRequest, D> for (T0,)
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::<MlmeDeleteKeysReqRequest>(offset);
5770            // Zero out padding regions. There's no need to apply masks
5771            // because the unmasked parts will be overwritten by fields.
5772            // Write the fields.
5773            self.0.encode(encoder, offset + 0, depth)?;
5774            Ok(())
5775        }
5776    }
5777
5778    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5779        for MlmeDeleteKeysReqRequest
5780    {
5781        #[inline(always)]
5782        fn new_empty() -> Self {
5783            Self { req: fidl::new_empty!(DeleteKeysRequest, D) }
5784        }
5785
5786        #[inline]
5787        unsafe fn decode(
5788            &mut self,
5789            decoder: &mut fidl::encoding::Decoder<'_, D>,
5790            offset: usize,
5791            _depth: fidl::encoding::Depth,
5792        ) -> fidl::Result<()> {
5793            decoder.debug_check_bounds::<Self>(offset);
5794            // Verify that padding bytes are zero.
5795            fidl::decode!(DeleteKeysRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5796            Ok(())
5797        }
5798    }
5799
5800    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateConfRequest {
5801        type Borrowed<'a> = &'a Self;
5802        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5803            value
5804        }
5805    }
5806
5807    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateConfRequest {
5808        type Owned = Self;
5809
5810        #[inline(always)]
5811        fn inline_align(_context: fidl::encoding::Context) -> usize {
5812            4
5813        }
5814
5815        #[inline(always)]
5816        fn inline_size(_context: fidl::encoding::Context) -> usize {
5817            4
5818        }
5819        #[inline(always)]
5820        fn encode_is_copy() -> bool {
5821            true
5822        }
5823
5824        #[inline(always)]
5825        fn decode_is_copy() -> bool {
5826            true
5827        }
5828    }
5829
5830    unsafe impl<D: fidl::encoding::ResourceDialect>
5831        fidl::encoding::Encode<MlmeDisassociateConfRequest, D> for &MlmeDisassociateConfRequest
5832    {
5833        #[inline]
5834        unsafe fn encode(
5835            self,
5836            encoder: &mut fidl::encoding::Encoder<'_, D>,
5837            offset: usize,
5838            _depth: fidl::encoding::Depth,
5839        ) -> fidl::Result<()> {
5840            encoder.debug_check_bounds::<MlmeDisassociateConfRequest>(offset);
5841            unsafe {
5842                // Copy the object into the buffer.
5843                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5844                (buf_ptr as *mut MlmeDisassociateConfRequest)
5845                    .write_unaligned((self as *const MlmeDisassociateConfRequest).read());
5846                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
5847                // done second because the memcpy will write garbage to these bytes.
5848            }
5849            Ok(())
5850        }
5851    }
5852    unsafe impl<
5853        D: fidl::encoding::ResourceDialect,
5854        T0: fidl::encoding::Encode<DisassociateConfirm, D>,
5855    > fidl::encoding::Encode<MlmeDisassociateConfRequest, D> for (T0,)
5856    {
5857        #[inline]
5858        unsafe fn encode(
5859            self,
5860            encoder: &mut fidl::encoding::Encoder<'_, D>,
5861            offset: usize,
5862            depth: fidl::encoding::Depth,
5863        ) -> fidl::Result<()> {
5864            encoder.debug_check_bounds::<MlmeDisassociateConfRequest>(offset);
5865            // Zero out padding regions. There's no need to apply masks
5866            // because the unmasked parts will be overwritten by fields.
5867            // Write the fields.
5868            self.0.encode(encoder, offset + 0, depth)?;
5869            Ok(())
5870        }
5871    }
5872
5873    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5874        for MlmeDisassociateConfRequest
5875    {
5876        #[inline(always)]
5877        fn new_empty() -> Self {
5878            Self { resp: fidl::new_empty!(DisassociateConfirm, D) }
5879        }
5880
5881        #[inline]
5882        unsafe fn decode(
5883            &mut self,
5884            decoder: &mut fidl::encoding::Decoder<'_, D>,
5885            offset: usize,
5886            _depth: fidl::encoding::Depth,
5887        ) -> fidl::Result<()> {
5888            decoder.debug_check_bounds::<Self>(offset);
5889            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5890            // Verify that padding bytes are zero.
5891            // Copy from the buffer into the object.
5892            unsafe {
5893                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
5894            }
5895            Ok(())
5896        }
5897    }
5898
5899    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateIndRequest {
5900        type Borrowed<'a> = &'a Self;
5901        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5902            value
5903        }
5904    }
5905
5906    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateIndRequest {
5907        type Owned = Self;
5908
5909        #[inline(always)]
5910        fn inline_align(_context: fidl::encoding::Context) -> usize {
5911            2
5912        }
5913
5914        #[inline(always)]
5915        fn inline_size(_context: fidl::encoding::Context) -> usize {
5916            10
5917        }
5918    }
5919
5920    unsafe impl<D: fidl::encoding::ResourceDialect>
5921        fidl::encoding::Encode<MlmeDisassociateIndRequest, D> for &MlmeDisassociateIndRequest
5922    {
5923        #[inline]
5924        unsafe fn encode(
5925            self,
5926            encoder: &mut fidl::encoding::Encoder<'_, D>,
5927            offset: usize,
5928            _depth: fidl::encoding::Depth,
5929        ) -> fidl::Result<()> {
5930            encoder.debug_check_bounds::<MlmeDisassociateIndRequest>(offset);
5931            // Delegate to tuple encoding.
5932            fidl::encoding::Encode::<MlmeDisassociateIndRequest, D>::encode(
5933                (<DisassociateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5934                encoder,
5935                offset,
5936                _depth,
5937            )
5938        }
5939    }
5940    unsafe impl<
5941        D: fidl::encoding::ResourceDialect,
5942        T0: fidl::encoding::Encode<DisassociateIndication, D>,
5943    > fidl::encoding::Encode<MlmeDisassociateIndRequest, D> for (T0,)
5944    {
5945        #[inline]
5946        unsafe fn encode(
5947            self,
5948            encoder: &mut fidl::encoding::Encoder<'_, D>,
5949            offset: usize,
5950            depth: fidl::encoding::Depth,
5951        ) -> fidl::Result<()> {
5952            encoder.debug_check_bounds::<MlmeDisassociateIndRequest>(offset);
5953            // Zero out padding regions. There's no need to apply masks
5954            // because the unmasked parts will be overwritten by fields.
5955            // Write the fields.
5956            self.0.encode(encoder, offset + 0, depth)?;
5957            Ok(())
5958        }
5959    }
5960
5961    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5962        for MlmeDisassociateIndRequest
5963    {
5964        #[inline(always)]
5965        fn new_empty() -> Self {
5966            Self { ind: fidl::new_empty!(DisassociateIndication, D) }
5967        }
5968
5969        #[inline]
5970        unsafe fn decode(
5971            &mut self,
5972            decoder: &mut fidl::encoding::Decoder<'_, D>,
5973            offset: usize,
5974            _depth: fidl::encoding::Depth,
5975        ) -> fidl::Result<()> {
5976            decoder.debug_check_bounds::<Self>(offset);
5977            // Verify that padding bytes are zero.
5978            fidl::decode!(DisassociateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5979            Ok(())
5980        }
5981    }
5982
5983    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateReqRequest {
5984        type Borrowed<'a> = &'a Self;
5985        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5986            value
5987        }
5988    }
5989
5990    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateReqRequest {
5991        type Owned = Self;
5992
5993        #[inline(always)]
5994        fn inline_align(_context: fidl::encoding::Context) -> usize {
5995            2
5996        }
5997
5998        #[inline(always)]
5999        fn inline_size(_context: fidl::encoding::Context) -> usize {
6000            8
6001        }
6002    }
6003
6004    unsafe impl<D: fidl::encoding::ResourceDialect>
6005        fidl::encoding::Encode<MlmeDisassociateReqRequest, D> for &MlmeDisassociateReqRequest
6006    {
6007        #[inline]
6008        unsafe fn encode(
6009            self,
6010            encoder: &mut fidl::encoding::Encoder<'_, D>,
6011            offset: usize,
6012            _depth: fidl::encoding::Depth,
6013        ) -> fidl::Result<()> {
6014            encoder.debug_check_bounds::<MlmeDisassociateReqRequest>(offset);
6015            // Delegate to tuple encoding.
6016            fidl::encoding::Encode::<MlmeDisassociateReqRequest, D>::encode(
6017                (<DisassociateRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6018                encoder,
6019                offset,
6020                _depth,
6021            )
6022        }
6023    }
6024    unsafe impl<
6025        D: fidl::encoding::ResourceDialect,
6026        T0: fidl::encoding::Encode<DisassociateRequest, D>,
6027    > fidl::encoding::Encode<MlmeDisassociateReqRequest, D> for (T0,)
6028    {
6029        #[inline]
6030        unsafe fn encode(
6031            self,
6032            encoder: &mut fidl::encoding::Encoder<'_, D>,
6033            offset: usize,
6034            depth: fidl::encoding::Depth,
6035        ) -> fidl::Result<()> {
6036            encoder.debug_check_bounds::<MlmeDisassociateReqRequest>(offset);
6037            // Zero out padding regions. There's no need to apply masks
6038            // because the unmasked parts will be overwritten by fields.
6039            // Write the fields.
6040            self.0.encode(encoder, offset + 0, depth)?;
6041            Ok(())
6042        }
6043    }
6044
6045    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6046        for MlmeDisassociateReqRequest
6047    {
6048        #[inline(always)]
6049        fn new_empty() -> Self {
6050            Self { req: fidl::new_empty!(DisassociateRequest, D) }
6051        }
6052
6053        #[inline]
6054        unsafe fn decode(
6055            &mut self,
6056            decoder: &mut fidl::encoding::Decoder<'_, D>,
6057            offset: usize,
6058            _depth: fidl::encoding::Depth,
6059        ) -> fidl::Result<()> {
6060            decoder.debug_check_bounds::<Self>(offset);
6061            // Verify that padding bytes are zero.
6062            fidl::decode!(DisassociateRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6063            Ok(())
6064        }
6065    }
6066
6067    impl fidl::encoding::ValueTypeMarker for MlmeEapolConfRequest {
6068        type Borrowed<'a> = &'a Self;
6069        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6070            value
6071        }
6072    }
6073
6074    unsafe impl fidl::encoding::TypeMarker for MlmeEapolConfRequest {
6075        type Owned = Self;
6076
6077        #[inline(always)]
6078        fn inline_align(_context: fidl::encoding::Context) -> usize {
6079            4
6080        }
6081
6082        #[inline(always)]
6083        fn inline_size(_context: fidl::encoding::Context) -> usize {
6084            12
6085        }
6086    }
6087
6088    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolConfRequest, D>
6089        for &MlmeEapolConfRequest
6090    {
6091        #[inline]
6092        unsafe fn encode(
6093            self,
6094            encoder: &mut fidl::encoding::Encoder<'_, D>,
6095            offset: usize,
6096            _depth: fidl::encoding::Depth,
6097        ) -> fidl::Result<()> {
6098            encoder.debug_check_bounds::<MlmeEapolConfRequest>(offset);
6099            // Delegate to tuple encoding.
6100            fidl::encoding::Encode::<MlmeEapolConfRequest, D>::encode(
6101                (<EapolConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6102                encoder,
6103                offset,
6104                _depth,
6105            )
6106        }
6107    }
6108    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolConfirm, D>>
6109        fidl::encoding::Encode<MlmeEapolConfRequest, D> for (T0,)
6110    {
6111        #[inline]
6112        unsafe fn encode(
6113            self,
6114            encoder: &mut fidl::encoding::Encoder<'_, D>,
6115            offset: usize,
6116            depth: fidl::encoding::Depth,
6117        ) -> fidl::Result<()> {
6118            encoder.debug_check_bounds::<MlmeEapolConfRequest>(offset);
6119            // Zero out padding regions. There's no need to apply masks
6120            // because the unmasked parts will be overwritten by fields.
6121            // Write the fields.
6122            self.0.encode(encoder, offset + 0, depth)?;
6123            Ok(())
6124        }
6125    }
6126
6127    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolConfRequest {
6128        #[inline(always)]
6129        fn new_empty() -> Self {
6130            Self { resp: fidl::new_empty!(EapolConfirm, D) }
6131        }
6132
6133        #[inline]
6134        unsafe fn decode(
6135            &mut self,
6136            decoder: &mut fidl::encoding::Decoder<'_, D>,
6137            offset: usize,
6138            _depth: fidl::encoding::Depth,
6139        ) -> fidl::Result<()> {
6140            decoder.debug_check_bounds::<Self>(offset);
6141            // Verify that padding bytes are zero.
6142            fidl::decode!(EapolConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
6143            Ok(())
6144        }
6145    }
6146
6147    impl fidl::encoding::ValueTypeMarker for MlmeEapolIndRequest {
6148        type Borrowed<'a> = &'a Self;
6149        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6150            value
6151        }
6152    }
6153
6154    unsafe impl fidl::encoding::TypeMarker for MlmeEapolIndRequest {
6155        type Owned = Self;
6156
6157        #[inline(always)]
6158        fn inline_align(_context: fidl::encoding::Context) -> usize {
6159            8
6160        }
6161
6162        #[inline(always)]
6163        fn inline_size(_context: fidl::encoding::Context) -> usize {
6164            32
6165        }
6166    }
6167
6168    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolIndRequest, D>
6169        for &MlmeEapolIndRequest
6170    {
6171        #[inline]
6172        unsafe fn encode(
6173            self,
6174            encoder: &mut fidl::encoding::Encoder<'_, D>,
6175            offset: usize,
6176            _depth: fidl::encoding::Depth,
6177        ) -> fidl::Result<()> {
6178            encoder.debug_check_bounds::<MlmeEapolIndRequest>(offset);
6179            // Delegate to tuple encoding.
6180            fidl::encoding::Encode::<MlmeEapolIndRequest, D>::encode(
6181                (<EapolIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
6182                encoder,
6183                offset,
6184                _depth,
6185            )
6186        }
6187    }
6188    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolIndication, D>>
6189        fidl::encoding::Encode<MlmeEapolIndRequest, D> for (T0,)
6190    {
6191        #[inline]
6192        unsafe fn encode(
6193            self,
6194            encoder: &mut fidl::encoding::Encoder<'_, D>,
6195            offset: usize,
6196            depth: fidl::encoding::Depth,
6197        ) -> fidl::Result<()> {
6198            encoder.debug_check_bounds::<MlmeEapolIndRequest>(offset);
6199            // Zero out padding regions. There's no need to apply masks
6200            // because the unmasked parts will be overwritten by fields.
6201            // Write the fields.
6202            self.0.encode(encoder, offset + 0, depth)?;
6203            Ok(())
6204        }
6205    }
6206
6207    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolIndRequest {
6208        #[inline(always)]
6209        fn new_empty() -> Self {
6210            Self { ind: fidl::new_empty!(EapolIndication, D) }
6211        }
6212
6213        #[inline]
6214        unsafe fn decode(
6215            &mut self,
6216            decoder: &mut fidl::encoding::Decoder<'_, D>,
6217            offset: usize,
6218            _depth: fidl::encoding::Depth,
6219        ) -> fidl::Result<()> {
6220            decoder.debug_check_bounds::<Self>(offset);
6221            // Verify that padding bytes are zero.
6222            fidl::decode!(EapolIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
6223            Ok(())
6224        }
6225    }
6226
6227    impl fidl::encoding::ValueTypeMarker for MlmeEapolReqRequest {
6228        type Borrowed<'a> = &'a Self;
6229        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6230            value
6231        }
6232    }
6233
6234    unsafe impl fidl::encoding::TypeMarker for MlmeEapolReqRequest {
6235        type Owned = Self;
6236
6237        #[inline(always)]
6238        fn inline_align(_context: fidl::encoding::Context) -> usize {
6239            8
6240        }
6241
6242        #[inline(always)]
6243        fn inline_size(_context: fidl::encoding::Context) -> usize {
6244            32
6245        }
6246    }
6247
6248    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolReqRequest, D>
6249        for &MlmeEapolReqRequest
6250    {
6251        #[inline]
6252        unsafe fn encode(
6253            self,
6254            encoder: &mut fidl::encoding::Encoder<'_, D>,
6255            offset: usize,
6256            _depth: fidl::encoding::Depth,
6257        ) -> fidl::Result<()> {
6258            encoder.debug_check_bounds::<MlmeEapolReqRequest>(offset);
6259            // Delegate to tuple encoding.
6260            fidl::encoding::Encode::<MlmeEapolReqRequest, D>::encode(
6261                (<EapolRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6262                encoder,
6263                offset,
6264                _depth,
6265            )
6266        }
6267    }
6268    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolRequest, D>>
6269        fidl::encoding::Encode<MlmeEapolReqRequest, D> for (T0,)
6270    {
6271        #[inline]
6272        unsafe fn encode(
6273            self,
6274            encoder: &mut fidl::encoding::Encoder<'_, D>,
6275            offset: usize,
6276            depth: fidl::encoding::Depth,
6277        ) -> fidl::Result<()> {
6278            encoder.debug_check_bounds::<MlmeEapolReqRequest>(offset);
6279            // Zero out padding regions. There's no need to apply masks
6280            // because the unmasked parts will be overwritten by fields.
6281            // Write the fields.
6282            self.0.encode(encoder, offset + 0, depth)?;
6283            Ok(())
6284        }
6285    }
6286
6287    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolReqRequest {
6288        #[inline(always)]
6289        fn new_empty() -> Self {
6290            Self { req: fidl::new_empty!(EapolRequest, D) }
6291        }
6292
6293        #[inline]
6294        unsafe fn decode(
6295            &mut self,
6296            decoder: &mut fidl::encoding::Decoder<'_, D>,
6297            offset: usize,
6298            _depth: fidl::encoding::Depth,
6299        ) -> fidl::Result<()> {
6300            decoder.debug_check_bounds::<Self>(offset);
6301            // Verify that padding bytes are zero.
6302            fidl::decode!(EapolRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6303            Ok(())
6304        }
6305    }
6306
6307    impl fidl::encoding::ValueTypeMarker for MlmeFinalizeAssociationReqRequest {
6308        type Borrowed<'a> = &'a Self;
6309        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6310            value
6311        }
6312    }
6313
6314    unsafe impl fidl::encoding::TypeMarker for MlmeFinalizeAssociationReqRequest {
6315        type Owned = Self;
6316
6317        #[inline(always)]
6318        fn inline_align(_context: fidl::encoding::Context) -> usize {
6319            8
6320        }
6321
6322        #[inline(always)]
6323        fn inline_size(_context: fidl::encoding::Context) -> usize {
6324            56
6325        }
6326    }
6327
6328    unsafe impl<D: fidl::encoding::ResourceDialect>
6329        fidl::encoding::Encode<MlmeFinalizeAssociationReqRequest, D>
6330        for &MlmeFinalizeAssociationReqRequest
6331    {
6332        #[inline]
6333        unsafe fn encode(
6334            self,
6335            encoder: &mut fidl::encoding::Encoder<'_, D>,
6336            offset: usize,
6337            _depth: fidl::encoding::Depth,
6338        ) -> fidl::Result<()> {
6339            encoder.debug_check_bounds::<MlmeFinalizeAssociationReqRequest>(offset);
6340            // Delegate to tuple encoding.
6341            fidl::encoding::Encode::<MlmeFinalizeAssociationReqRequest, D>::encode(
6342                (<NegotiatedCapabilities as fidl::encoding::ValueTypeMarker>::borrow(
6343                    &self.negotiated_capabilities,
6344                ),),
6345                encoder,
6346                offset,
6347                _depth,
6348            )
6349        }
6350    }
6351    unsafe impl<
6352        D: fidl::encoding::ResourceDialect,
6353        T0: fidl::encoding::Encode<NegotiatedCapabilities, D>,
6354    > fidl::encoding::Encode<MlmeFinalizeAssociationReqRequest, D> for (T0,)
6355    {
6356        #[inline]
6357        unsafe fn encode(
6358            self,
6359            encoder: &mut fidl::encoding::Encoder<'_, D>,
6360            offset: usize,
6361            depth: fidl::encoding::Depth,
6362        ) -> fidl::Result<()> {
6363            encoder.debug_check_bounds::<MlmeFinalizeAssociationReqRequest>(offset);
6364            // Zero out padding regions. There's no need to apply masks
6365            // because the unmasked parts will be overwritten by fields.
6366            // Write the fields.
6367            self.0.encode(encoder, offset + 0, depth)?;
6368            Ok(())
6369        }
6370    }
6371
6372    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6373        for MlmeFinalizeAssociationReqRequest
6374    {
6375        #[inline(always)]
6376        fn new_empty() -> Self {
6377            Self { negotiated_capabilities: fidl::new_empty!(NegotiatedCapabilities, D) }
6378        }
6379
6380        #[inline]
6381        unsafe fn decode(
6382            &mut self,
6383            decoder: &mut fidl::encoding::Decoder<'_, D>,
6384            offset: usize,
6385            _depth: fidl::encoding::Depth,
6386        ) -> fidl::Result<()> {
6387            decoder.debug_check_bounds::<Self>(offset);
6388            // Verify that padding bytes are zero.
6389            fidl::decode!(
6390                NegotiatedCapabilities,
6391                D,
6392                &mut self.negotiated_capabilities,
6393                decoder,
6394                offset + 0,
6395                _depth
6396            )?;
6397            Ok(())
6398        }
6399    }
6400
6401    impl fidl::encoding::ValueTypeMarker for MlmeGetIfaceHistogramStatsResponse {
6402        type Borrowed<'a> = &'a Self;
6403        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6404            value
6405        }
6406    }
6407
6408    unsafe impl fidl::encoding::TypeMarker for MlmeGetIfaceHistogramStatsResponse {
6409        type Owned = Self;
6410
6411        #[inline(always)]
6412        fn inline_align(_context: fidl::encoding::Context) -> usize {
6413            8
6414        }
6415
6416        #[inline(always)]
6417        fn inline_size(_context: fidl::encoding::Context) -> usize {
6418            16
6419        }
6420    }
6421
6422    unsafe impl<D: fidl::encoding::ResourceDialect>
6423        fidl::encoding::Encode<MlmeGetIfaceHistogramStatsResponse, D>
6424        for &MlmeGetIfaceHistogramStatsResponse
6425    {
6426        #[inline]
6427        unsafe fn encode(
6428            self,
6429            encoder: &mut fidl::encoding::Encoder<'_, D>,
6430            offset: usize,
6431            _depth: fidl::encoding::Depth,
6432        ) -> fidl::Result<()> {
6433            encoder.debug_check_bounds::<MlmeGetIfaceHistogramStatsResponse>(offset);
6434            // Delegate to tuple encoding.
6435            fidl::encoding::Encode::<MlmeGetIfaceHistogramStatsResponse, D>::encode(
6436                (<GetIfaceHistogramStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(
6437                    &self.resp,
6438                ),),
6439                encoder,
6440                offset,
6441                _depth,
6442            )
6443        }
6444    }
6445    unsafe impl<
6446        D: fidl::encoding::ResourceDialect,
6447        T0: fidl::encoding::Encode<GetIfaceHistogramStatsResponse, D>,
6448    > fidl::encoding::Encode<MlmeGetIfaceHistogramStatsResponse, D> for (T0,)
6449    {
6450        #[inline]
6451        unsafe fn encode(
6452            self,
6453            encoder: &mut fidl::encoding::Encoder<'_, D>,
6454            offset: usize,
6455            depth: fidl::encoding::Depth,
6456        ) -> fidl::Result<()> {
6457            encoder.debug_check_bounds::<MlmeGetIfaceHistogramStatsResponse>(offset);
6458            // Zero out padding regions. There's no need to apply masks
6459            // because the unmasked parts will be overwritten by fields.
6460            // Write the fields.
6461            self.0.encode(encoder, offset + 0, depth)?;
6462            Ok(())
6463        }
6464    }
6465
6466    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6467        for MlmeGetIfaceHistogramStatsResponse
6468    {
6469        #[inline(always)]
6470        fn new_empty() -> Self {
6471            Self { resp: fidl::new_empty!(GetIfaceHistogramStatsResponse, D) }
6472        }
6473
6474        #[inline]
6475        unsafe fn decode(
6476            &mut self,
6477            decoder: &mut fidl::encoding::Decoder<'_, D>,
6478            offset: usize,
6479            _depth: fidl::encoding::Depth,
6480        ) -> fidl::Result<()> {
6481            decoder.debug_check_bounds::<Self>(offset);
6482            // Verify that padding bytes are zero.
6483            fidl::decode!(
6484                GetIfaceHistogramStatsResponse,
6485                D,
6486                &mut self.resp,
6487                decoder,
6488                offset + 0,
6489                _depth
6490            )?;
6491            Ok(())
6492        }
6493    }
6494
6495    impl fidl::encoding::ValueTypeMarker for MlmeGetIfaceStatsResponse {
6496        type Borrowed<'a> = &'a Self;
6497        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6498            value
6499        }
6500    }
6501
6502    unsafe impl fidl::encoding::TypeMarker for MlmeGetIfaceStatsResponse {
6503        type Owned = Self;
6504
6505        #[inline(always)]
6506        fn inline_align(_context: fidl::encoding::Context) -> usize {
6507            8
6508        }
6509
6510        #[inline(always)]
6511        fn inline_size(_context: fidl::encoding::Context) -> usize {
6512            16
6513        }
6514    }
6515
6516    unsafe impl<D: fidl::encoding::ResourceDialect>
6517        fidl::encoding::Encode<MlmeGetIfaceStatsResponse, D> for &MlmeGetIfaceStatsResponse
6518    {
6519        #[inline]
6520        unsafe fn encode(
6521            self,
6522            encoder: &mut fidl::encoding::Encoder<'_, D>,
6523            offset: usize,
6524            _depth: fidl::encoding::Depth,
6525        ) -> fidl::Result<()> {
6526            encoder.debug_check_bounds::<MlmeGetIfaceStatsResponse>(offset);
6527            // Delegate to tuple encoding.
6528            fidl::encoding::Encode::<MlmeGetIfaceStatsResponse, D>::encode(
6529                (<GetIfaceStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6530                encoder,
6531                offset,
6532                _depth,
6533            )
6534        }
6535    }
6536    unsafe impl<
6537        D: fidl::encoding::ResourceDialect,
6538        T0: fidl::encoding::Encode<GetIfaceStatsResponse, D>,
6539    > fidl::encoding::Encode<MlmeGetIfaceStatsResponse, D> for (T0,)
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::<MlmeGetIfaceStatsResponse>(offset);
6549            // Zero out padding regions. There's no need to apply masks
6550            // because the unmasked parts will be overwritten by fields.
6551            // Write the fields.
6552            self.0.encode(encoder, offset + 0, depth)?;
6553            Ok(())
6554        }
6555    }
6556
6557    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6558        for MlmeGetIfaceStatsResponse
6559    {
6560        #[inline(always)]
6561        fn new_empty() -> Self {
6562            Self { resp: fidl::new_empty!(GetIfaceStatsResponse, D) }
6563        }
6564
6565        #[inline]
6566        unsafe fn decode(
6567            &mut self,
6568            decoder: &mut fidl::encoding::Decoder<'_, D>,
6569            offset: usize,
6570            _depth: fidl::encoding::Depth,
6571        ) -> fidl::Result<()> {
6572            decoder.debug_check_bounds::<Self>(offset);
6573            // Verify that padding bytes are zero.
6574            fidl::decode!(GetIfaceStatsResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
6575            Ok(())
6576        }
6577    }
6578
6579    impl fidl::encoding::ValueTypeMarker for MlmeGetMinstrelStatsRequest {
6580        type Borrowed<'a> = &'a Self;
6581        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6582            value
6583        }
6584    }
6585
6586    unsafe impl fidl::encoding::TypeMarker for MlmeGetMinstrelStatsRequest {
6587        type Owned = Self;
6588
6589        #[inline(always)]
6590        fn inline_align(_context: fidl::encoding::Context) -> usize {
6591            1
6592        }
6593
6594        #[inline(always)]
6595        fn inline_size(_context: fidl::encoding::Context) -> usize {
6596            6
6597        }
6598        #[inline(always)]
6599        fn encode_is_copy() -> bool {
6600            true
6601        }
6602
6603        #[inline(always)]
6604        fn decode_is_copy() -> bool {
6605            true
6606        }
6607    }
6608
6609    unsafe impl<D: fidl::encoding::ResourceDialect>
6610        fidl::encoding::Encode<MlmeGetMinstrelStatsRequest, D> for &MlmeGetMinstrelStatsRequest
6611    {
6612        #[inline]
6613        unsafe fn encode(
6614            self,
6615            encoder: &mut fidl::encoding::Encoder<'_, D>,
6616            offset: usize,
6617            _depth: fidl::encoding::Depth,
6618        ) -> fidl::Result<()> {
6619            encoder.debug_check_bounds::<MlmeGetMinstrelStatsRequest>(offset);
6620            unsafe {
6621                // Copy the object into the buffer.
6622                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
6623                (buf_ptr as *mut MlmeGetMinstrelStatsRequest)
6624                    .write_unaligned((self as *const MlmeGetMinstrelStatsRequest).read());
6625                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
6626                // done second because the memcpy will write garbage to these bytes.
6627            }
6628            Ok(())
6629        }
6630    }
6631    unsafe impl<
6632        D: fidl::encoding::ResourceDialect,
6633        T0: fidl::encoding::Encode<MinstrelStatsRequest, D>,
6634    > fidl::encoding::Encode<MlmeGetMinstrelStatsRequest, D> for (T0,)
6635    {
6636        #[inline]
6637        unsafe fn encode(
6638            self,
6639            encoder: &mut fidl::encoding::Encoder<'_, D>,
6640            offset: usize,
6641            depth: fidl::encoding::Depth,
6642        ) -> fidl::Result<()> {
6643            encoder.debug_check_bounds::<MlmeGetMinstrelStatsRequest>(offset);
6644            // Zero out padding regions. There's no need to apply masks
6645            // because the unmasked parts will be overwritten by fields.
6646            // Write the fields.
6647            self.0.encode(encoder, offset + 0, depth)?;
6648            Ok(())
6649        }
6650    }
6651
6652    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6653        for MlmeGetMinstrelStatsRequest
6654    {
6655        #[inline(always)]
6656        fn new_empty() -> Self {
6657            Self { req: fidl::new_empty!(MinstrelStatsRequest, D) }
6658        }
6659
6660        #[inline]
6661        unsafe fn decode(
6662            &mut self,
6663            decoder: &mut fidl::encoding::Decoder<'_, D>,
6664            offset: usize,
6665            _depth: fidl::encoding::Depth,
6666        ) -> fidl::Result<()> {
6667            decoder.debug_check_bounds::<Self>(offset);
6668            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
6669            // Verify that padding bytes are zero.
6670            // Copy from the buffer into the object.
6671            unsafe {
6672                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
6673            }
6674            Ok(())
6675        }
6676    }
6677
6678    impl fidl::encoding::ValueTypeMarker for MlmeGetMinstrelStatsResponse {
6679        type Borrowed<'a> = &'a Self;
6680        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6681            value
6682        }
6683    }
6684
6685    unsafe impl fidl::encoding::TypeMarker for MlmeGetMinstrelStatsResponse {
6686        type Owned = Self;
6687
6688        #[inline(always)]
6689        fn inline_align(_context: fidl::encoding::Context) -> usize {
6690            8
6691        }
6692
6693        #[inline(always)]
6694        fn inline_size(_context: fidl::encoding::Context) -> usize {
6695            8
6696        }
6697    }
6698
6699    unsafe impl<D: fidl::encoding::ResourceDialect>
6700        fidl::encoding::Encode<MlmeGetMinstrelStatsResponse, D> for &MlmeGetMinstrelStatsResponse
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::<MlmeGetMinstrelStatsResponse>(offset);
6710            // Delegate to tuple encoding.
6711            fidl::encoding::Encode::<MlmeGetMinstrelStatsResponse, D>::encode(
6712                (<MinstrelStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6713                encoder,
6714                offset,
6715                _depth,
6716            )
6717        }
6718    }
6719    unsafe impl<
6720        D: fidl::encoding::ResourceDialect,
6721        T0: fidl::encoding::Encode<MinstrelStatsResponse, D>,
6722    > fidl::encoding::Encode<MlmeGetMinstrelStatsResponse, D> for (T0,)
6723    {
6724        #[inline]
6725        unsafe fn encode(
6726            self,
6727            encoder: &mut fidl::encoding::Encoder<'_, D>,
6728            offset: usize,
6729            depth: fidl::encoding::Depth,
6730        ) -> fidl::Result<()> {
6731            encoder.debug_check_bounds::<MlmeGetMinstrelStatsResponse>(offset);
6732            // Zero out padding regions. There's no need to apply masks
6733            // because the unmasked parts will be overwritten by fields.
6734            // Write the fields.
6735            self.0.encode(encoder, offset + 0, depth)?;
6736            Ok(())
6737        }
6738    }
6739
6740    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6741        for MlmeGetMinstrelStatsResponse
6742    {
6743        #[inline(always)]
6744        fn new_empty() -> Self {
6745            Self { resp: fidl::new_empty!(MinstrelStatsResponse, D) }
6746        }
6747
6748        #[inline]
6749        unsafe fn decode(
6750            &mut self,
6751            decoder: &mut fidl::encoding::Decoder<'_, D>,
6752            offset: usize,
6753            _depth: fidl::encoding::Depth,
6754        ) -> fidl::Result<()> {
6755            decoder.debug_check_bounds::<Self>(offset);
6756            // Verify that padding bytes are zero.
6757            fidl::decode!(MinstrelStatsResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
6758            Ok(())
6759        }
6760    }
6761
6762    impl fidl::encoding::ValueTypeMarker for MlmeListMinstrelPeersResponse {
6763        type Borrowed<'a> = &'a Self;
6764        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6765            value
6766        }
6767    }
6768
6769    unsafe impl fidl::encoding::TypeMarker for MlmeListMinstrelPeersResponse {
6770        type Owned = Self;
6771
6772        #[inline(always)]
6773        fn inline_align(_context: fidl::encoding::Context) -> usize {
6774            8
6775        }
6776
6777        #[inline(always)]
6778        fn inline_size(_context: fidl::encoding::Context) -> usize {
6779            16
6780        }
6781    }
6782
6783    unsafe impl<D: fidl::encoding::ResourceDialect>
6784        fidl::encoding::Encode<MlmeListMinstrelPeersResponse, D>
6785        for &MlmeListMinstrelPeersResponse
6786    {
6787        #[inline]
6788        unsafe fn encode(
6789            self,
6790            encoder: &mut fidl::encoding::Encoder<'_, D>,
6791            offset: usize,
6792            _depth: fidl::encoding::Depth,
6793        ) -> fidl::Result<()> {
6794            encoder.debug_check_bounds::<MlmeListMinstrelPeersResponse>(offset);
6795            // Delegate to tuple encoding.
6796            fidl::encoding::Encode::<MlmeListMinstrelPeersResponse, D>::encode(
6797                (<MinstrelListResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6798                encoder,
6799                offset,
6800                _depth,
6801            )
6802        }
6803    }
6804    unsafe impl<
6805        D: fidl::encoding::ResourceDialect,
6806        T0: fidl::encoding::Encode<MinstrelListResponse, D>,
6807    > fidl::encoding::Encode<MlmeListMinstrelPeersResponse, D> for (T0,)
6808    {
6809        #[inline]
6810        unsafe fn encode(
6811            self,
6812            encoder: &mut fidl::encoding::Encoder<'_, D>,
6813            offset: usize,
6814            depth: fidl::encoding::Depth,
6815        ) -> fidl::Result<()> {
6816            encoder.debug_check_bounds::<MlmeListMinstrelPeersResponse>(offset);
6817            // Zero out padding regions. There's no need to apply masks
6818            // because the unmasked parts will be overwritten by fields.
6819            // Write the fields.
6820            self.0.encode(encoder, offset + 0, depth)?;
6821            Ok(())
6822        }
6823    }
6824
6825    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6826        for MlmeListMinstrelPeersResponse
6827    {
6828        #[inline(always)]
6829        fn new_empty() -> Self {
6830            Self { resp: fidl::new_empty!(MinstrelListResponse, D) }
6831        }
6832
6833        #[inline]
6834        unsafe fn decode(
6835            &mut self,
6836            decoder: &mut fidl::encoding::Decoder<'_, D>,
6837            offset: usize,
6838            _depth: fidl::encoding::Depth,
6839        ) -> fidl::Result<()> {
6840            decoder.debug_check_bounds::<Self>(offset);
6841            // Verify that padding bytes are zero.
6842            fidl::decode!(MinstrelListResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
6843            Ok(())
6844        }
6845    }
6846
6847    impl fidl::encoding::ValueTypeMarker for MlmeOnChannelSwitchedRequest {
6848        type Borrowed<'a> = &'a Self;
6849        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6850            value
6851        }
6852    }
6853
6854    unsafe impl fidl::encoding::TypeMarker for MlmeOnChannelSwitchedRequest {
6855        type Owned = Self;
6856
6857        #[inline(always)]
6858        fn inline_align(_context: fidl::encoding::Context) -> usize {
6859            1
6860        }
6861
6862        #[inline(always)]
6863        fn inline_size(_context: fidl::encoding::Context) -> usize {
6864            1
6865        }
6866    }
6867
6868    unsafe impl<D: fidl::encoding::ResourceDialect>
6869        fidl::encoding::Encode<MlmeOnChannelSwitchedRequest, D> for &MlmeOnChannelSwitchedRequest
6870    {
6871        #[inline]
6872        unsafe fn encode(
6873            self,
6874            encoder: &mut fidl::encoding::Encoder<'_, D>,
6875            offset: usize,
6876            _depth: fidl::encoding::Depth,
6877        ) -> fidl::Result<()> {
6878            encoder.debug_check_bounds::<MlmeOnChannelSwitchedRequest>(offset);
6879            // Delegate to tuple encoding.
6880            fidl::encoding::Encode::<MlmeOnChannelSwitchedRequest, D>::encode(
6881                (
6882                    <fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),
6883                ),
6884                encoder, offset, _depth
6885            )
6886        }
6887    }
6888    unsafe impl<
6889        D: fidl::encoding::ResourceDialect,
6890        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo, D>,
6891    > fidl::encoding::Encode<MlmeOnChannelSwitchedRequest, D> for (T0,)
6892    {
6893        #[inline]
6894        unsafe fn encode(
6895            self,
6896            encoder: &mut fidl::encoding::Encoder<'_, D>,
6897            offset: usize,
6898            depth: fidl::encoding::Depth,
6899        ) -> fidl::Result<()> {
6900            encoder.debug_check_bounds::<MlmeOnChannelSwitchedRequest>(offset);
6901            // Zero out padding regions. There's no need to apply masks
6902            // because the unmasked parts will be overwritten by fields.
6903            // Write the fields.
6904            self.0.encode(encoder, offset + 0, depth)?;
6905            Ok(())
6906        }
6907    }
6908
6909    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6910        for MlmeOnChannelSwitchedRequest
6911    {
6912        #[inline(always)]
6913        fn new_empty() -> Self {
6914            Self {
6915                info: fidl::new_empty!(fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo, D),
6916            }
6917        }
6918
6919        #[inline]
6920        unsafe fn decode(
6921            &mut self,
6922            decoder: &mut fidl::encoding::Decoder<'_, D>,
6923            offset: usize,
6924            _depth: fidl::encoding::Depth,
6925        ) -> fidl::Result<()> {
6926            decoder.debug_check_bounds::<Self>(offset);
6927            // Verify that padding bytes are zero.
6928            fidl::decode!(
6929                fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo,
6930                D,
6931                &mut self.info,
6932                decoder,
6933                offset + 0,
6934                _depth
6935            )?;
6936            Ok(())
6937        }
6938    }
6939
6940    impl fidl::encoding::ValueTypeMarker for MlmeOnPmkAvailableRequest {
6941        type Borrowed<'a> = &'a Self;
6942        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6943            value
6944        }
6945    }
6946
6947    unsafe impl fidl::encoding::TypeMarker for MlmeOnPmkAvailableRequest {
6948        type Owned = Self;
6949
6950        #[inline(always)]
6951        fn inline_align(_context: fidl::encoding::Context) -> usize {
6952            8
6953        }
6954
6955        #[inline(always)]
6956        fn inline_size(_context: fidl::encoding::Context) -> usize {
6957            32
6958        }
6959    }
6960
6961    unsafe impl<D: fidl::encoding::ResourceDialect>
6962        fidl::encoding::Encode<MlmeOnPmkAvailableRequest, D> for &MlmeOnPmkAvailableRequest
6963    {
6964        #[inline]
6965        unsafe fn encode(
6966            self,
6967            encoder: &mut fidl::encoding::Encoder<'_, D>,
6968            offset: usize,
6969            _depth: fidl::encoding::Depth,
6970        ) -> fidl::Result<()> {
6971            encoder.debug_check_bounds::<MlmeOnPmkAvailableRequest>(offset);
6972            // Delegate to tuple encoding.
6973            fidl::encoding::Encode::<MlmeOnPmkAvailableRequest, D>::encode(
6974                (<PmkInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
6975                encoder,
6976                offset,
6977                _depth,
6978            )
6979        }
6980    }
6981    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<PmkInfo, D>>
6982        fidl::encoding::Encode<MlmeOnPmkAvailableRequest, D> for (T0,)
6983    {
6984        #[inline]
6985        unsafe fn encode(
6986            self,
6987            encoder: &mut fidl::encoding::Encoder<'_, D>,
6988            offset: usize,
6989            depth: fidl::encoding::Depth,
6990        ) -> fidl::Result<()> {
6991            encoder.debug_check_bounds::<MlmeOnPmkAvailableRequest>(offset);
6992            // Zero out padding regions. There's no need to apply masks
6993            // because the unmasked parts will be overwritten by fields.
6994            // Write the fields.
6995            self.0.encode(encoder, offset + 0, depth)?;
6996            Ok(())
6997        }
6998    }
6999
7000    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7001        for MlmeOnPmkAvailableRequest
7002    {
7003        #[inline(always)]
7004        fn new_empty() -> Self {
7005            Self { info: fidl::new_empty!(PmkInfo, D) }
7006        }
7007
7008        #[inline]
7009        unsafe fn decode(
7010            &mut self,
7011            decoder: &mut fidl::encoding::Decoder<'_, D>,
7012            offset: usize,
7013            _depth: fidl::encoding::Depth,
7014        ) -> fidl::Result<()> {
7015            decoder.debug_check_bounds::<Self>(offset);
7016            // Verify that padding bytes are zero.
7017            fidl::decode!(PmkInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
7018            Ok(())
7019        }
7020    }
7021
7022    impl fidl::encoding::ValueTypeMarker for MlmeOnSaeFrameRxRequest {
7023        type Borrowed<'a> = &'a Self;
7024        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7025            value
7026        }
7027    }
7028
7029    unsafe impl fidl::encoding::TypeMarker for MlmeOnSaeFrameRxRequest {
7030        type Owned = Self;
7031
7032        #[inline(always)]
7033        fn inline_align(_context: fidl::encoding::Context) -> usize {
7034            8
7035        }
7036
7037        #[inline(always)]
7038        fn inline_size(_context: fidl::encoding::Context) -> usize {
7039            32
7040        }
7041    }
7042
7043    unsafe impl<D: fidl::encoding::ResourceDialect>
7044        fidl::encoding::Encode<MlmeOnSaeFrameRxRequest, D> for &MlmeOnSaeFrameRxRequest
7045    {
7046        #[inline]
7047        unsafe fn encode(
7048            self,
7049            encoder: &mut fidl::encoding::Encoder<'_, D>,
7050            offset: usize,
7051            _depth: fidl::encoding::Depth,
7052        ) -> fidl::Result<()> {
7053            encoder.debug_check_bounds::<MlmeOnSaeFrameRxRequest>(offset);
7054            // Delegate to tuple encoding.
7055            fidl::encoding::Encode::<MlmeOnSaeFrameRxRequest, D>::encode(
7056                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
7057                encoder,
7058                offset,
7059                _depth,
7060            )
7061        }
7062    }
7063    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
7064        fidl::encoding::Encode<MlmeOnSaeFrameRxRequest, D> for (T0,)
7065    {
7066        #[inline]
7067        unsafe fn encode(
7068            self,
7069            encoder: &mut fidl::encoding::Encoder<'_, D>,
7070            offset: usize,
7071            depth: fidl::encoding::Depth,
7072        ) -> fidl::Result<()> {
7073            encoder.debug_check_bounds::<MlmeOnSaeFrameRxRequest>(offset);
7074            // Zero out padding regions. There's no need to apply masks
7075            // because the unmasked parts will be overwritten by fields.
7076            // Write the fields.
7077            self.0.encode(encoder, offset + 0, depth)?;
7078            Ok(())
7079        }
7080    }
7081
7082    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7083        for MlmeOnSaeFrameRxRequest
7084    {
7085        #[inline(always)]
7086        fn new_empty() -> Self {
7087            Self { frame: fidl::new_empty!(SaeFrame, D) }
7088        }
7089
7090        #[inline]
7091        unsafe fn decode(
7092            &mut self,
7093            decoder: &mut fidl::encoding::Decoder<'_, D>,
7094            offset: usize,
7095            _depth: fidl::encoding::Depth,
7096        ) -> fidl::Result<()> {
7097            decoder.debug_check_bounds::<Self>(offset);
7098            // Verify that padding bytes are zero.
7099            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
7100            Ok(())
7101        }
7102    }
7103
7104    impl fidl::encoding::ValueTypeMarker for MlmeOnSaeHandshakeIndRequest {
7105        type Borrowed<'a> = &'a Self;
7106        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7107            value
7108        }
7109    }
7110
7111    unsafe impl fidl::encoding::TypeMarker for MlmeOnSaeHandshakeIndRequest {
7112        type Owned = Self;
7113
7114        #[inline(always)]
7115        fn inline_align(_context: fidl::encoding::Context) -> usize {
7116            1
7117        }
7118
7119        #[inline(always)]
7120        fn inline_size(_context: fidl::encoding::Context) -> usize {
7121            6
7122        }
7123        #[inline(always)]
7124        fn encode_is_copy() -> bool {
7125            true
7126        }
7127
7128        #[inline(always)]
7129        fn decode_is_copy() -> bool {
7130            true
7131        }
7132    }
7133
7134    unsafe impl<D: fidl::encoding::ResourceDialect>
7135        fidl::encoding::Encode<MlmeOnSaeHandshakeIndRequest, D> for &MlmeOnSaeHandshakeIndRequest
7136    {
7137        #[inline]
7138        unsafe fn encode(
7139            self,
7140            encoder: &mut fidl::encoding::Encoder<'_, D>,
7141            offset: usize,
7142            _depth: fidl::encoding::Depth,
7143        ) -> fidl::Result<()> {
7144            encoder.debug_check_bounds::<MlmeOnSaeHandshakeIndRequest>(offset);
7145            unsafe {
7146                // Copy the object into the buffer.
7147                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7148                (buf_ptr as *mut MlmeOnSaeHandshakeIndRequest)
7149                    .write_unaligned((self as *const MlmeOnSaeHandshakeIndRequest).read());
7150                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7151                // done second because the memcpy will write garbage to these bytes.
7152            }
7153            Ok(())
7154        }
7155    }
7156    unsafe impl<
7157        D: fidl::encoding::ResourceDialect,
7158        T0: fidl::encoding::Encode<SaeHandshakeIndication, D>,
7159    > fidl::encoding::Encode<MlmeOnSaeHandshakeIndRequest, D> for (T0,)
7160    {
7161        #[inline]
7162        unsafe fn encode(
7163            self,
7164            encoder: &mut fidl::encoding::Encoder<'_, D>,
7165            offset: usize,
7166            depth: fidl::encoding::Depth,
7167        ) -> fidl::Result<()> {
7168            encoder.debug_check_bounds::<MlmeOnSaeHandshakeIndRequest>(offset);
7169            // Zero out padding regions. There's no need to apply masks
7170            // because the unmasked parts will be overwritten by fields.
7171            // Write the fields.
7172            self.0.encode(encoder, offset + 0, depth)?;
7173            Ok(())
7174        }
7175    }
7176
7177    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7178        for MlmeOnSaeHandshakeIndRequest
7179    {
7180        #[inline(always)]
7181        fn new_empty() -> Self {
7182            Self { ind: fidl::new_empty!(SaeHandshakeIndication, D) }
7183        }
7184
7185        #[inline]
7186        unsafe fn decode(
7187            &mut self,
7188            decoder: &mut fidl::encoding::Decoder<'_, D>,
7189            offset: usize,
7190            _depth: fidl::encoding::Depth,
7191        ) -> fidl::Result<()> {
7192            decoder.debug_check_bounds::<Self>(offset);
7193            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7194            // Verify that padding bytes are zero.
7195            // Copy from the buffer into the object.
7196            unsafe {
7197                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
7198            }
7199            Ok(())
7200        }
7201    }
7202
7203    impl fidl::encoding::ValueTypeMarker for MlmeOnScanEndRequest {
7204        type Borrowed<'a> = &'a Self;
7205        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7206            value
7207        }
7208    }
7209
7210    unsafe impl fidl::encoding::TypeMarker for MlmeOnScanEndRequest {
7211        type Owned = Self;
7212
7213        #[inline(always)]
7214        fn inline_align(_context: fidl::encoding::Context) -> usize {
7215            8
7216        }
7217
7218        #[inline(always)]
7219        fn inline_size(_context: fidl::encoding::Context) -> usize {
7220            16
7221        }
7222    }
7223
7224    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeOnScanEndRequest, D>
7225        for &MlmeOnScanEndRequest
7226    {
7227        #[inline]
7228        unsafe fn encode(
7229            self,
7230            encoder: &mut fidl::encoding::Encoder<'_, D>,
7231            offset: usize,
7232            _depth: fidl::encoding::Depth,
7233        ) -> fidl::Result<()> {
7234            encoder.debug_check_bounds::<MlmeOnScanEndRequest>(offset);
7235            // Delegate to tuple encoding.
7236            fidl::encoding::Encode::<MlmeOnScanEndRequest, D>::encode(
7237                (<ScanEnd as fidl::encoding::ValueTypeMarker>::borrow(&self.end),),
7238                encoder,
7239                offset,
7240                _depth,
7241            )
7242        }
7243    }
7244    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanEnd, D>>
7245        fidl::encoding::Encode<MlmeOnScanEndRequest, D> for (T0,)
7246    {
7247        #[inline]
7248        unsafe fn encode(
7249            self,
7250            encoder: &mut fidl::encoding::Encoder<'_, D>,
7251            offset: usize,
7252            depth: fidl::encoding::Depth,
7253        ) -> fidl::Result<()> {
7254            encoder.debug_check_bounds::<MlmeOnScanEndRequest>(offset);
7255            // Zero out padding regions. There's no need to apply masks
7256            // because the unmasked parts will be overwritten by fields.
7257            // Write the fields.
7258            self.0.encode(encoder, offset + 0, depth)?;
7259            Ok(())
7260        }
7261    }
7262
7263    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeOnScanEndRequest {
7264        #[inline(always)]
7265        fn new_empty() -> Self {
7266            Self { end: fidl::new_empty!(ScanEnd, D) }
7267        }
7268
7269        #[inline]
7270        unsafe fn decode(
7271            &mut self,
7272            decoder: &mut fidl::encoding::Decoder<'_, D>,
7273            offset: usize,
7274            _depth: fidl::encoding::Depth,
7275        ) -> fidl::Result<()> {
7276            decoder.debug_check_bounds::<Self>(offset);
7277            // Verify that padding bytes are zero.
7278            fidl::decode!(ScanEnd, D, &mut self.end, decoder, offset + 0, _depth)?;
7279            Ok(())
7280        }
7281    }
7282
7283    impl fidl::encoding::ValueTypeMarker for MlmeOnScanResultRequest {
7284        type Borrowed<'a> = &'a Self;
7285        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7286            value
7287        }
7288    }
7289
7290    unsafe impl fidl::encoding::TypeMarker for MlmeOnScanResultRequest {
7291        type Owned = Self;
7292
7293        #[inline(always)]
7294        fn inline_align(_context: fidl::encoding::Context) -> usize {
7295            8
7296        }
7297
7298        #[inline(always)]
7299        fn inline_size(_context: fidl::encoding::Context) -> usize {
7300            64
7301        }
7302    }
7303
7304    unsafe impl<D: fidl::encoding::ResourceDialect>
7305        fidl::encoding::Encode<MlmeOnScanResultRequest, D> for &MlmeOnScanResultRequest
7306    {
7307        #[inline]
7308        unsafe fn encode(
7309            self,
7310            encoder: &mut fidl::encoding::Encoder<'_, D>,
7311            offset: usize,
7312            _depth: fidl::encoding::Depth,
7313        ) -> fidl::Result<()> {
7314            encoder.debug_check_bounds::<MlmeOnScanResultRequest>(offset);
7315            // Delegate to tuple encoding.
7316            fidl::encoding::Encode::<MlmeOnScanResultRequest, D>::encode(
7317                (<ScanResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),),
7318                encoder,
7319                offset,
7320                _depth,
7321            )
7322        }
7323    }
7324    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanResult, D>>
7325        fidl::encoding::Encode<MlmeOnScanResultRequest, D> for (T0,)
7326    {
7327        #[inline]
7328        unsafe fn encode(
7329            self,
7330            encoder: &mut fidl::encoding::Encoder<'_, D>,
7331            offset: usize,
7332            depth: fidl::encoding::Depth,
7333        ) -> fidl::Result<()> {
7334            encoder.debug_check_bounds::<MlmeOnScanResultRequest>(offset);
7335            // Zero out padding regions. There's no need to apply masks
7336            // because the unmasked parts will be overwritten by fields.
7337            // Write the fields.
7338            self.0.encode(encoder, offset + 0, depth)?;
7339            Ok(())
7340        }
7341    }
7342
7343    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7344        for MlmeOnScanResultRequest
7345    {
7346        #[inline(always)]
7347        fn new_empty() -> Self {
7348            Self { result: fidl::new_empty!(ScanResult, D) }
7349        }
7350
7351        #[inline]
7352        unsafe fn decode(
7353            &mut self,
7354            decoder: &mut fidl::encoding::Decoder<'_, D>,
7355            offset: usize,
7356            _depth: fidl::encoding::Depth,
7357        ) -> fidl::Result<()> {
7358            decoder.debug_check_bounds::<Self>(offset);
7359            // Verify that padding bytes are zero.
7360            fidl::decode!(ScanResult, D, &mut self.result, decoder, offset + 0, _depth)?;
7361            Ok(())
7362        }
7363    }
7364
7365    impl fidl::encoding::ValueTypeMarker for MlmeOnWmmStatusRespRequest {
7366        type Borrowed<'a> = &'a Self;
7367        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7368            value
7369        }
7370    }
7371
7372    unsafe impl fidl::encoding::TypeMarker for MlmeOnWmmStatusRespRequest {
7373        type Owned = Self;
7374
7375        #[inline(always)]
7376        fn inline_align(_context: fidl::encoding::Context) -> usize {
7377            4
7378        }
7379
7380        #[inline(always)]
7381        fn inline_size(_context: fidl::encoding::Context) -> usize {
7382            40
7383        }
7384    }
7385
7386    unsafe impl<D: fidl::encoding::ResourceDialect>
7387        fidl::encoding::Encode<MlmeOnWmmStatusRespRequest, D> for &MlmeOnWmmStatusRespRequest
7388    {
7389        #[inline]
7390        unsafe fn encode(
7391            self,
7392            encoder: &mut fidl::encoding::Encoder<'_, D>,
7393            offset: usize,
7394            _depth: fidl::encoding::Depth,
7395        ) -> fidl::Result<()> {
7396            encoder.debug_check_bounds::<MlmeOnWmmStatusRespRequest>(offset);
7397            // Delegate to tuple encoding.
7398            fidl::encoding::Encode::<MlmeOnWmmStatusRespRequest, D>::encode(
7399                (
7400                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
7401                    <fidl_fuchsia_wlan_internal__common::WmmStatusResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
7402                ),
7403                encoder, offset, _depth
7404            )
7405        }
7406    }
7407    unsafe impl<
7408        D: fidl::encoding::ResourceDialect,
7409        T0: fidl::encoding::Encode<i32, D>,
7410        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_internal__common::WmmStatusResponse, D>,
7411    > fidl::encoding::Encode<MlmeOnWmmStatusRespRequest, D> for (T0, T1)
7412    {
7413        #[inline]
7414        unsafe fn encode(
7415            self,
7416            encoder: &mut fidl::encoding::Encoder<'_, D>,
7417            offset: usize,
7418            depth: fidl::encoding::Depth,
7419        ) -> fidl::Result<()> {
7420            encoder.debug_check_bounds::<MlmeOnWmmStatusRespRequest>(offset);
7421            // Zero out padding regions. There's no need to apply masks
7422            // because the unmasked parts will be overwritten by fields.
7423            unsafe {
7424                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(36);
7425                (ptr as *mut u32).write_unaligned(0);
7426            }
7427            // Write the fields.
7428            self.0.encode(encoder, offset + 0, depth)?;
7429            self.1.encode(encoder, offset + 4, depth)?;
7430            Ok(())
7431        }
7432    }
7433
7434    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7435        for MlmeOnWmmStatusRespRequest
7436    {
7437        #[inline(always)]
7438        fn new_empty() -> Self {
7439            Self {
7440                status: fidl::new_empty!(i32, D),
7441                resp: fidl::new_empty!(fidl_fuchsia_wlan_internal__common::WmmStatusResponse, D),
7442            }
7443        }
7444
7445        #[inline]
7446        unsafe fn decode(
7447            &mut self,
7448            decoder: &mut fidl::encoding::Decoder<'_, D>,
7449            offset: usize,
7450            _depth: fidl::encoding::Depth,
7451        ) -> fidl::Result<()> {
7452            decoder.debug_check_bounds::<Self>(offset);
7453            // Verify that padding bytes are zero.
7454            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(36) };
7455            let padval = unsafe { (ptr as *const u32).read_unaligned() };
7456            let mask = 0xffff0000u32;
7457            let maskedval = padval & mask;
7458            if maskedval != 0 {
7459                return Err(fidl::Error::NonZeroPadding {
7460                    padding_start: offset + 36 + ((mask as u64).trailing_zeros() / 8) as usize,
7461                });
7462            }
7463            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
7464            fidl::decode!(
7465                fidl_fuchsia_wlan_internal__common::WmmStatusResponse,
7466                D,
7467                &mut self.resp,
7468                decoder,
7469                offset + 4,
7470                _depth
7471            )?;
7472            Ok(())
7473        }
7474    }
7475
7476    impl fidl::encoding::ValueTypeMarker for MlmeQueryDeviceInfoResponse {
7477        type Borrowed<'a> = &'a Self;
7478        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7479            value
7480        }
7481    }
7482
7483    unsafe impl fidl::encoding::TypeMarker for MlmeQueryDeviceInfoResponse {
7484        type Owned = Self;
7485
7486        #[inline(always)]
7487        fn inline_align(_context: fidl::encoding::Context) -> usize {
7488            8
7489        }
7490
7491        #[inline(always)]
7492        fn inline_size(_context: fidl::encoding::Context) -> usize {
7493            40
7494        }
7495    }
7496
7497    unsafe impl<D: fidl::encoding::ResourceDialect>
7498        fidl::encoding::Encode<MlmeQueryDeviceInfoResponse, D> for &MlmeQueryDeviceInfoResponse
7499    {
7500        #[inline]
7501        unsafe fn encode(
7502            self,
7503            encoder: &mut fidl::encoding::Encoder<'_, D>,
7504            offset: usize,
7505            _depth: fidl::encoding::Depth,
7506        ) -> fidl::Result<()> {
7507            encoder.debug_check_bounds::<MlmeQueryDeviceInfoResponse>(offset);
7508            // Delegate to tuple encoding.
7509            fidl::encoding::Encode::<MlmeQueryDeviceInfoResponse, D>::encode(
7510                (<DeviceInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
7511                encoder,
7512                offset,
7513                _depth,
7514            )
7515        }
7516    }
7517    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<DeviceInfo, D>>
7518        fidl::encoding::Encode<MlmeQueryDeviceInfoResponse, D> for (T0,)
7519    {
7520        #[inline]
7521        unsafe fn encode(
7522            self,
7523            encoder: &mut fidl::encoding::Encoder<'_, D>,
7524            offset: usize,
7525            depth: fidl::encoding::Depth,
7526        ) -> fidl::Result<()> {
7527            encoder.debug_check_bounds::<MlmeQueryDeviceInfoResponse>(offset);
7528            // Zero out padding regions. There's no need to apply masks
7529            // because the unmasked parts will be overwritten by fields.
7530            // Write the fields.
7531            self.0.encode(encoder, offset + 0, depth)?;
7532            Ok(())
7533        }
7534    }
7535
7536    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7537        for MlmeQueryDeviceInfoResponse
7538    {
7539        #[inline(always)]
7540        fn new_empty() -> Self {
7541            Self { info: fidl::new_empty!(DeviceInfo, D) }
7542        }
7543
7544        #[inline]
7545        unsafe fn decode(
7546            &mut self,
7547            decoder: &mut fidl::encoding::Decoder<'_, D>,
7548            offset: usize,
7549            _depth: fidl::encoding::Depth,
7550        ) -> fidl::Result<()> {
7551            decoder.debug_check_bounds::<Self>(offset);
7552            // Verify that padding bytes are zero.
7553            fidl::decode!(DeviceInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
7554            Ok(())
7555        }
7556    }
7557
7558    impl fidl::encoding::ValueTypeMarker for MlmeReconnectReqRequest {
7559        type Borrowed<'a> = &'a Self;
7560        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7561            value
7562        }
7563    }
7564
7565    unsafe impl fidl::encoding::TypeMarker for MlmeReconnectReqRequest {
7566        type Owned = Self;
7567
7568        #[inline(always)]
7569        fn inline_align(_context: fidl::encoding::Context) -> usize {
7570            1
7571        }
7572
7573        #[inline(always)]
7574        fn inline_size(_context: fidl::encoding::Context) -> usize {
7575            6
7576        }
7577        #[inline(always)]
7578        fn encode_is_copy() -> bool {
7579            true
7580        }
7581
7582        #[inline(always)]
7583        fn decode_is_copy() -> bool {
7584            true
7585        }
7586    }
7587
7588    unsafe impl<D: fidl::encoding::ResourceDialect>
7589        fidl::encoding::Encode<MlmeReconnectReqRequest, D> for &MlmeReconnectReqRequest
7590    {
7591        #[inline]
7592        unsafe fn encode(
7593            self,
7594            encoder: &mut fidl::encoding::Encoder<'_, D>,
7595            offset: usize,
7596            _depth: fidl::encoding::Depth,
7597        ) -> fidl::Result<()> {
7598            encoder.debug_check_bounds::<MlmeReconnectReqRequest>(offset);
7599            unsafe {
7600                // Copy the object into the buffer.
7601                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7602                (buf_ptr as *mut MlmeReconnectReqRequest)
7603                    .write_unaligned((self as *const MlmeReconnectReqRequest).read());
7604                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7605                // done second because the memcpy will write garbage to these bytes.
7606            }
7607            Ok(())
7608        }
7609    }
7610    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ReconnectRequest, D>>
7611        fidl::encoding::Encode<MlmeReconnectReqRequest, D> for (T0,)
7612    {
7613        #[inline]
7614        unsafe fn encode(
7615            self,
7616            encoder: &mut fidl::encoding::Encoder<'_, D>,
7617            offset: usize,
7618            depth: fidl::encoding::Depth,
7619        ) -> fidl::Result<()> {
7620            encoder.debug_check_bounds::<MlmeReconnectReqRequest>(offset);
7621            // Zero out padding regions. There's no need to apply masks
7622            // because the unmasked parts will be overwritten by fields.
7623            // Write the fields.
7624            self.0.encode(encoder, offset + 0, depth)?;
7625            Ok(())
7626        }
7627    }
7628
7629    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7630        for MlmeReconnectReqRequest
7631    {
7632        #[inline(always)]
7633        fn new_empty() -> Self {
7634            Self { req: fidl::new_empty!(ReconnectRequest, D) }
7635        }
7636
7637        #[inline]
7638        unsafe fn decode(
7639            &mut self,
7640            decoder: &mut fidl::encoding::Decoder<'_, D>,
7641            offset: usize,
7642            _depth: fidl::encoding::Depth,
7643        ) -> fidl::Result<()> {
7644            decoder.debug_check_bounds::<Self>(offset);
7645            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7646            // Verify that padding bytes are zero.
7647            // Copy from the buffer into the object.
7648            unsafe {
7649                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
7650            }
7651            Ok(())
7652        }
7653    }
7654
7655    impl fidl::encoding::ValueTypeMarker for MlmeRelayCapturedFrameRequest {
7656        type Borrowed<'a> = &'a Self;
7657        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7658            value
7659        }
7660    }
7661
7662    unsafe impl fidl::encoding::TypeMarker for MlmeRelayCapturedFrameRequest {
7663        type Owned = Self;
7664
7665        #[inline(always)]
7666        fn inline_align(_context: fidl::encoding::Context) -> usize {
7667            8
7668        }
7669
7670        #[inline(always)]
7671        fn inline_size(_context: fidl::encoding::Context) -> usize {
7672            16
7673        }
7674    }
7675
7676    unsafe impl<D: fidl::encoding::ResourceDialect>
7677        fidl::encoding::Encode<MlmeRelayCapturedFrameRequest, D>
7678        for &MlmeRelayCapturedFrameRequest
7679    {
7680        #[inline]
7681        unsafe fn encode(
7682            self,
7683            encoder: &mut fidl::encoding::Encoder<'_, D>,
7684            offset: usize,
7685            _depth: fidl::encoding::Depth,
7686        ) -> fidl::Result<()> {
7687            encoder.debug_check_bounds::<MlmeRelayCapturedFrameRequest>(offset);
7688            // Delegate to tuple encoding.
7689            fidl::encoding::Encode::<MlmeRelayCapturedFrameRequest, D>::encode(
7690                (<CapturedFrameResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),),
7691                encoder,
7692                offset,
7693                _depth,
7694            )
7695        }
7696    }
7697    unsafe impl<
7698        D: fidl::encoding::ResourceDialect,
7699        T0: fidl::encoding::Encode<CapturedFrameResult, D>,
7700    > fidl::encoding::Encode<MlmeRelayCapturedFrameRequest, D> for (T0,)
7701    {
7702        #[inline]
7703        unsafe fn encode(
7704            self,
7705            encoder: &mut fidl::encoding::Encoder<'_, D>,
7706            offset: usize,
7707            depth: fidl::encoding::Depth,
7708        ) -> fidl::Result<()> {
7709            encoder.debug_check_bounds::<MlmeRelayCapturedFrameRequest>(offset);
7710            // Zero out padding regions. There's no need to apply masks
7711            // because the unmasked parts will be overwritten by fields.
7712            // Write the fields.
7713            self.0.encode(encoder, offset + 0, depth)?;
7714            Ok(())
7715        }
7716    }
7717
7718    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7719        for MlmeRelayCapturedFrameRequest
7720    {
7721        #[inline(always)]
7722        fn new_empty() -> Self {
7723            Self { result: fidl::new_empty!(CapturedFrameResult, D) }
7724        }
7725
7726        #[inline]
7727        unsafe fn decode(
7728            &mut self,
7729            decoder: &mut fidl::encoding::Decoder<'_, D>,
7730            offset: usize,
7731            _depth: fidl::encoding::Depth,
7732        ) -> fidl::Result<()> {
7733            decoder.debug_check_bounds::<Self>(offset);
7734            // Verify that padding bytes are zero.
7735            fidl::decode!(CapturedFrameResult, D, &mut self.result, decoder, offset + 0, _depth)?;
7736            Ok(())
7737        }
7738    }
7739
7740    impl fidl::encoding::ValueTypeMarker for MlmeResetReqRequest {
7741        type Borrowed<'a> = &'a Self;
7742        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7743            value
7744        }
7745    }
7746
7747    unsafe impl fidl::encoding::TypeMarker for MlmeResetReqRequest {
7748        type Owned = Self;
7749
7750        #[inline(always)]
7751        fn inline_align(_context: fidl::encoding::Context) -> usize {
7752            1
7753        }
7754
7755        #[inline(always)]
7756        fn inline_size(_context: fidl::encoding::Context) -> usize {
7757            7
7758        }
7759    }
7760
7761    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeResetReqRequest, D>
7762        for &MlmeResetReqRequest
7763    {
7764        #[inline]
7765        unsafe fn encode(
7766            self,
7767            encoder: &mut fidl::encoding::Encoder<'_, D>,
7768            offset: usize,
7769            _depth: fidl::encoding::Depth,
7770        ) -> fidl::Result<()> {
7771            encoder.debug_check_bounds::<MlmeResetReqRequest>(offset);
7772            // Delegate to tuple encoding.
7773            fidl::encoding::Encode::<MlmeResetReqRequest, D>::encode(
7774                (<ResetRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
7775                encoder,
7776                offset,
7777                _depth,
7778            )
7779        }
7780    }
7781    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ResetRequest, D>>
7782        fidl::encoding::Encode<MlmeResetReqRequest, D> for (T0,)
7783    {
7784        #[inline]
7785        unsafe fn encode(
7786            self,
7787            encoder: &mut fidl::encoding::Encoder<'_, D>,
7788            offset: usize,
7789            depth: fidl::encoding::Depth,
7790        ) -> fidl::Result<()> {
7791            encoder.debug_check_bounds::<MlmeResetReqRequest>(offset);
7792            // Zero out padding regions. There's no need to apply masks
7793            // because the unmasked parts will be overwritten by fields.
7794            // Write the fields.
7795            self.0.encode(encoder, offset + 0, depth)?;
7796            Ok(())
7797        }
7798    }
7799
7800    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeResetReqRequest {
7801        #[inline(always)]
7802        fn new_empty() -> Self {
7803            Self { req: fidl::new_empty!(ResetRequest, D) }
7804        }
7805
7806        #[inline]
7807        unsafe fn decode(
7808            &mut self,
7809            decoder: &mut fidl::encoding::Decoder<'_, D>,
7810            offset: usize,
7811            _depth: fidl::encoding::Depth,
7812        ) -> fidl::Result<()> {
7813            decoder.debug_check_bounds::<Self>(offset);
7814            // Verify that padding bytes are zero.
7815            fidl::decode!(ResetRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
7816            Ok(())
7817        }
7818    }
7819
7820    impl fidl::encoding::ValueTypeMarker for MlmeRoamConfRequest {
7821        type Borrowed<'a> = &'a Self;
7822        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7823            value
7824        }
7825    }
7826
7827    unsafe impl fidl::encoding::TypeMarker for MlmeRoamConfRequest {
7828        type Owned = Self;
7829
7830        #[inline(always)]
7831        fn inline_align(_context: fidl::encoding::Context) -> usize {
7832            8
7833        }
7834
7835        #[inline(always)]
7836        fn inline_size(_context: fidl::encoding::Context) -> usize {
7837            32
7838        }
7839    }
7840
7841    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeRoamConfRequest, D>
7842        for &MlmeRoamConfRequest
7843    {
7844        #[inline]
7845        unsafe fn encode(
7846            self,
7847            encoder: &mut fidl::encoding::Encoder<'_, D>,
7848            offset: usize,
7849            _depth: fidl::encoding::Depth,
7850        ) -> fidl::Result<()> {
7851            encoder.debug_check_bounds::<MlmeRoamConfRequest>(offset);
7852            // Delegate to tuple encoding.
7853            fidl::encoding::Encode::<MlmeRoamConfRequest, D>::encode(
7854                (<RoamConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.conf),),
7855                encoder,
7856                offset,
7857                _depth,
7858            )
7859        }
7860    }
7861    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RoamConfirm, D>>
7862        fidl::encoding::Encode<MlmeRoamConfRequest, D> for (T0,)
7863    {
7864        #[inline]
7865        unsafe fn encode(
7866            self,
7867            encoder: &mut fidl::encoding::Encoder<'_, D>,
7868            offset: usize,
7869            depth: fidl::encoding::Depth,
7870        ) -> fidl::Result<()> {
7871            encoder.debug_check_bounds::<MlmeRoamConfRequest>(offset);
7872            // Zero out padding regions. There's no need to apply masks
7873            // because the unmasked parts will be overwritten by fields.
7874            // Write the fields.
7875            self.0.encode(encoder, offset + 0, depth)?;
7876            Ok(())
7877        }
7878    }
7879
7880    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeRoamConfRequest {
7881        #[inline(always)]
7882        fn new_empty() -> Self {
7883            Self { conf: fidl::new_empty!(RoamConfirm, D) }
7884        }
7885
7886        #[inline]
7887        unsafe fn decode(
7888            &mut self,
7889            decoder: &mut fidl::encoding::Decoder<'_, D>,
7890            offset: usize,
7891            _depth: fidl::encoding::Depth,
7892        ) -> fidl::Result<()> {
7893            decoder.debug_check_bounds::<Self>(offset);
7894            // Verify that padding bytes are zero.
7895            fidl::decode!(RoamConfirm, D, &mut self.conf, decoder, offset + 0, _depth)?;
7896            Ok(())
7897        }
7898    }
7899
7900    impl fidl::encoding::ValueTypeMarker for MlmeRoamReqRequest {
7901        type Borrowed<'a> = &'a Self;
7902        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7903            value
7904        }
7905    }
7906
7907    unsafe impl fidl::encoding::TypeMarker for MlmeRoamReqRequest {
7908        type Owned = Self;
7909
7910        #[inline(always)]
7911        fn inline_align(_context: fidl::encoding::Context) -> usize {
7912            8
7913        }
7914
7915        #[inline(always)]
7916        fn inline_size(_context: fidl::encoding::Context) -> usize {
7917            48
7918        }
7919    }
7920
7921    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeRoamReqRequest, D>
7922        for &MlmeRoamReqRequest
7923    {
7924        #[inline]
7925        unsafe fn encode(
7926            self,
7927            encoder: &mut fidl::encoding::Encoder<'_, D>,
7928            offset: usize,
7929            _depth: fidl::encoding::Depth,
7930        ) -> fidl::Result<()> {
7931            encoder.debug_check_bounds::<MlmeRoamReqRequest>(offset);
7932            // Delegate to tuple encoding.
7933            fidl::encoding::Encode::<MlmeRoamReqRequest, D>::encode(
7934                (<RoamRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
7935                encoder,
7936                offset,
7937                _depth,
7938            )
7939        }
7940    }
7941    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RoamRequest, D>>
7942        fidl::encoding::Encode<MlmeRoamReqRequest, D> for (T0,)
7943    {
7944        #[inline]
7945        unsafe fn encode(
7946            self,
7947            encoder: &mut fidl::encoding::Encoder<'_, D>,
7948            offset: usize,
7949            depth: fidl::encoding::Depth,
7950        ) -> fidl::Result<()> {
7951            encoder.debug_check_bounds::<MlmeRoamReqRequest>(offset);
7952            // Zero out padding regions. There's no need to apply masks
7953            // because the unmasked parts will be overwritten by fields.
7954            // Write the fields.
7955            self.0.encode(encoder, offset + 0, depth)?;
7956            Ok(())
7957        }
7958    }
7959
7960    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeRoamReqRequest {
7961        #[inline(always)]
7962        fn new_empty() -> Self {
7963            Self { req: fidl::new_empty!(RoamRequest, D) }
7964        }
7965
7966        #[inline]
7967        unsafe fn decode(
7968            &mut self,
7969            decoder: &mut fidl::encoding::Decoder<'_, D>,
7970            offset: usize,
7971            _depth: fidl::encoding::Depth,
7972        ) -> fidl::Result<()> {
7973            decoder.debug_check_bounds::<Self>(offset);
7974            // Verify that padding bytes are zero.
7975            fidl::decode!(RoamRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
7976            Ok(())
7977        }
7978    }
7979
7980    impl fidl::encoding::ValueTypeMarker for MlmeRoamResultIndRequest {
7981        type Borrowed<'a> = &'a Self;
7982        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7983            value
7984        }
7985    }
7986
7987    unsafe impl fidl::encoding::TypeMarker for MlmeRoamResultIndRequest {
7988        type Owned = Self;
7989
7990        #[inline(always)]
7991        fn inline_align(_context: fidl::encoding::Context) -> usize {
7992            8
7993        }
7994
7995        #[inline(always)]
7996        fn inline_size(_context: fidl::encoding::Context) -> usize {
7997            32
7998        }
7999    }
8000
8001    unsafe impl<D: fidl::encoding::ResourceDialect>
8002        fidl::encoding::Encode<MlmeRoamResultIndRequest, D> for &MlmeRoamResultIndRequest
8003    {
8004        #[inline]
8005        unsafe fn encode(
8006            self,
8007            encoder: &mut fidl::encoding::Encoder<'_, D>,
8008            offset: usize,
8009            _depth: fidl::encoding::Depth,
8010        ) -> fidl::Result<()> {
8011            encoder.debug_check_bounds::<MlmeRoamResultIndRequest>(offset);
8012            // Delegate to tuple encoding.
8013            fidl::encoding::Encode::<MlmeRoamResultIndRequest, D>::encode(
8014                (<RoamResultIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
8015                encoder,
8016                offset,
8017                _depth,
8018            )
8019        }
8020    }
8021    unsafe impl<
8022        D: fidl::encoding::ResourceDialect,
8023        T0: fidl::encoding::Encode<RoamResultIndication, D>,
8024    > fidl::encoding::Encode<MlmeRoamResultIndRequest, D> for (T0,)
8025    {
8026        #[inline]
8027        unsafe fn encode(
8028            self,
8029            encoder: &mut fidl::encoding::Encoder<'_, D>,
8030            offset: usize,
8031            depth: fidl::encoding::Depth,
8032        ) -> fidl::Result<()> {
8033            encoder.debug_check_bounds::<MlmeRoamResultIndRequest>(offset);
8034            // Zero out padding regions. There's no need to apply masks
8035            // because the unmasked parts will be overwritten by fields.
8036            // Write the fields.
8037            self.0.encode(encoder, offset + 0, depth)?;
8038            Ok(())
8039        }
8040    }
8041
8042    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8043        for MlmeRoamResultIndRequest
8044    {
8045        #[inline(always)]
8046        fn new_empty() -> Self {
8047            Self { ind: fidl::new_empty!(RoamResultIndication, D) }
8048        }
8049
8050        #[inline]
8051        unsafe fn decode(
8052            &mut self,
8053            decoder: &mut fidl::encoding::Decoder<'_, D>,
8054            offset: usize,
8055            _depth: fidl::encoding::Depth,
8056        ) -> fidl::Result<()> {
8057            decoder.debug_check_bounds::<Self>(offset);
8058            // Verify that padding bytes are zero.
8059            fidl::decode!(RoamResultIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
8060            Ok(())
8061        }
8062    }
8063
8064    impl fidl::encoding::ValueTypeMarker for MlmeRoamStartIndRequest {
8065        type Borrowed<'a> = &'a Self;
8066        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8067            value
8068        }
8069    }
8070
8071    unsafe impl fidl::encoding::TypeMarker for MlmeRoamStartIndRequest {
8072        type Owned = Self;
8073
8074        #[inline(always)]
8075        fn inline_align(_context: fidl::encoding::Context) -> usize {
8076            8
8077        }
8078
8079        #[inline(always)]
8080        fn inline_size(_context: fidl::encoding::Context) -> usize {
8081            64
8082        }
8083    }
8084
8085    unsafe impl<D: fidl::encoding::ResourceDialect>
8086        fidl::encoding::Encode<MlmeRoamStartIndRequest, D> for &MlmeRoamStartIndRequest
8087    {
8088        #[inline]
8089        unsafe fn encode(
8090            self,
8091            encoder: &mut fidl::encoding::Encoder<'_, D>,
8092            offset: usize,
8093            _depth: fidl::encoding::Depth,
8094        ) -> fidl::Result<()> {
8095            encoder.debug_check_bounds::<MlmeRoamStartIndRequest>(offset);
8096            // Delegate to tuple encoding.
8097            fidl::encoding::Encode::<MlmeRoamStartIndRequest, D>::encode(
8098                (<RoamStartIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
8099                encoder,
8100                offset,
8101                _depth,
8102            )
8103        }
8104    }
8105    unsafe impl<
8106        D: fidl::encoding::ResourceDialect,
8107        T0: fidl::encoding::Encode<RoamStartIndication, D>,
8108    > fidl::encoding::Encode<MlmeRoamStartIndRequest, D> for (T0,)
8109    {
8110        #[inline]
8111        unsafe fn encode(
8112            self,
8113            encoder: &mut fidl::encoding::Encoder<'_, D>,
8114            offset: usize,
8115            depth: fidl::encoding::Depth,
8116        ) -> fidl::Result<()> {
8117            encoder.debug_check_bounds::<MlmeRoamStartIndRequest>(offset);
8118            // Zero out padding regions. There's no need to apply masks
8119            // because the unmasked parts will be overwritten by fields.
8120            // Write the fields.
8121            self.0.encode(encoder, offset + 0, depth)?;
8122            Ok(())
8123        }
8124    }
8125
8126    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8127        for MlmeRoamStartIndRequest
8128    {
8129        #[inline(always)]
8130        fn new_empty() -> Self {
8131            Self { ind: fidl::new_empty!(RoamStartIndication, D) }
8132        }
8133
8134        #[inline]
8135        unsafe fn decode(
8136            &mut self,
8137            decoder: &mut fidl::encoding::Decoder<'_, D>,
8138            offset: usize,
8139            _depth: fidl::encoding::Depth,
8140        ) -> fidl::Result<()> {
8141            decoder.debug_check_bounds::<Self>(offset);
8142            // Verify that padding bytes are zero.
8143            fidl::decode!(RoamStartIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
8144            Ok(())
8145        }
8146    }
8147
8148    impl fidl::encoding::ValueTypeMarker for MlmeSaeFrameTxRequest {
8149        type Borrowed<'a> = &'a Self;
8150        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8151            value
8152        }
8153    }
8154
8155    unsafe impl fidl::encoding::TypeMarker for MlmeSaeFrameTxRequest {
8156        type Owned = Self;
8157
8158        #[inline(always)]
8159        fn inline_align(_context: fidl::encoding::Context) -> usize {
8160            8
8161        }
8162
8163        #[inline(always)]
8164        fn inline_size(_context: fidl::encoding::Context) -> usize {
8165            32
8166        }
8167    }
8168
8169    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeSaeFrameTxRequest, D>
8170        for &MlmeSaeFrameTxRequest
8171    {
8172        #[inline]
8173        unsafe fn encode(
8174            self,
8175            encoder: &mut fidl::encoding::Encoder<'_, D>,
8176            offset: usize,
8177            _depth: fidl::encoding::Depth,
8178        ) -> fidl::Result<()> {
8179            encoder.debug_check_bounds::<MlmeSaeFrameTxRequest>(offset);
8180            // Delegate to tuple encoding.
8181            fidl::encoding::Encode::<MlmeSaeFrameTxRequest, D>::encode(
8182                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
8183                encoder,
8184                offset,
8185                _depth,
8186            )
8187        }
8188    }
8189    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
8190        fidl::encoding::Encode<MlmeSaeFrameTxRequest, D> for (T0,)
8191    {
8192        #[inline]
8193        unsafe fn encode(
8194            self,
8195            encoder: &mut fidl::encoding::Encoder<'_, D>,
8196            offset: usize,
8197            depth: fidl::encoding::Depth,
8198        ) -> fidl::Result<()> {
8199            encoder.debug_check_bounds::<MlmeSaeFrameTxRequest>(offset);
8200            // Zero out padding regions. There's no need to apply masks
8201            // because the unmasked parts will be overwritten by fields.
8202            // Write the fields.
8203            self.0.encode(encoder, offset + 0, depth)?;
8204            Ok(())
8205        }
8206    }
8207
8208    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeSaeFrameTxRequest {
8209        #[inline(always)]
8210        fn new_empty() -> Self {
8211            Self { frame: fidl::new_empty!(SaeFrame, D) }
8212        }
8213
8214        #[inline]
8215        unsafe fn decode(
8216            &mut self,
8217            decoder: &mut fidl::encoding::Decoder<'_, D>,
8218            offset: usize,
8219            _depth: fidl::encoding::Depth,
8220        ) -> fidl::Result<()> {
8221            decoder.debug_check_bounds::<Self>(offset);
8222            // Verify that padding bytes are zero.
8223            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
8224            Ok(())
8225        }
8226    }
8227
8228    impl fidl::encoding::ValueTypeMarker for MlmeSaeHandshakeRespRequest {
8229        type Borrowed<'a> = &'a Self;
8230        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8231            value
8232        }
8233    }
8234
8235    unsafe impl fidl::encoding::TypeMarker for MlmeSaeHandshakeRespRequest {
8236        type Owned = Self;
8237
8238        #[inline(always)]
8239        fn inline_align(_context: fidl::encoding::Context) -> usize {
8240            2
8241        }
8242
8243        #[inline(always)]
8244        fn inline_size(_context: fidl::encoding::Context) -> usize {
8245            8
8246        }
8247    }
8248
8249    unsafe impl<D: fidl::encoding::ResourceDialect>
8250        fidl::encoding::Encode<MlmeSaeHandshakeRespRequest, D> for &MlmeSaeHandshakeRespRequest
8251    {
8252        #[inline]
8253        unsafe fn encode(
8254            self,
8255            encoder: &mut fidl::encoding::Encoder<'_, D>,
8256            offset: usize,
8257            _depth: fidl::encoding::Depth,
8258        ) -> fidl::Result<()> {
8259            encoder.debug_check_bounds::<MlmeSaeHandshakeRespRequest>(offset);
8260            // Delegate to tuple encoding.
8261            fidl::encoding::Encode::<MlmeSaeHandshakeRespRequest, D>::encode(
8262                (<SaeHandshakeResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
8263                encoder,
8264                offset,
8265                _depth,
8266            )
8267        }
8268    }
8269    unsafe impl<
8270        D: fidl::encoding::ResourceDialect,
8271        T0: fidl::encoding::Encode<SaeHandshakeResponse, D>,
8272    > fidl::encoding::Encode<MlmeSaeHandshakeRespRequest, D> for (T0,)
8273    {
8274        #[inline]
8275        unsafe fn encode(
8276            self,
8277            encoder: &mut fidl::encoding::Encoder<'_, D>,
8278            offset: usize,
8279            depth: fidl::encoding::Depth,
8280        ) -> fidl::Result<()> {
8281            encoder.debug_check_bounds::<MlmeSaeHandshakeRespRequest>(offset);
8282            // Zero out padding regions. There's no need to apply masks
8283            // because the unmasked parts will be overwritten by fields.
8284            // Write the fields.
8285            self.0.encode(encoder, offset + 0, depth)?;
8286            Ok(())
8287        }
8288    }
8289
8290    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8291        for MlmeSaeHandshakeRespRequest
8292    {
8293        #[inline(always)]
8294        fn new_empty() -> Self {
8295            Self { resp: fidl::new_empty!(SaeHandshakeResponse, D) }
8296        }
8297
8298        #[inline]
8299        unsafe fn decode(
8300            &mut self,
8301            decoder: &mut fidl::encoding::Decoder<'_, D>,
8302            offset: usize,
8303            _depth: fidl::encoding::Depth,
8304        ) -> fidl::Result<()> {
8305            decoder.debug_check_bounds::<Self>(offset);
8306            // Verify that padding bytes are zero.
8307            fidl::decode!(SaeHandshakeResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
8308            Ok(())
8309        }
8310    }
8311
8312    impl fidl::encoding::ValueTypeMarker for MlmeSetControlledPortRequest {
8313        type Borrowed<'a> = &'a Self;
8314        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8315            value
8316        }
8317    }
8318
8319    unsafe impl fidl::encoding::TypeMarker for MlmeSetControlledPortRequest {
8320        type Owned = Self;
8321
8322        #[inline(always)]
8323        fn inline_align(_context: fidl::encoding::Context) -> usize {
8324            4
8325        }
8326
8327        #[inline(always)]
8328        fn inline_size(_context: fidl::encoding::Context) -> usize {
8329            12
8330        }
8331    }
8332
8333    unsafe impl<D: fidl::encoding::ResourceDialect>
8334        fidl::encoding::Encode<MlmeSetControlledPortRequest, D> for &MlmeSetControlledPortRequest
8335    {
8336        #[inline]
8337        unsafe fn encode(
8338            self,
8339            encoder: &mut fidl::encoding::Encoder<'_, D>,
8340            offset: usize,
8341            _depth: fidl::encoding::Depth,
8342        ) -> fidl::Result<()> {
8343            encoder.debug_check_bounds::<MlmeSetControlledPortRequest>(offset);
8344            // Delegate to tuple encoding.
8345            fidl::encoding::Encode::<MlmeSetControlledPortRequest, D>::encode(
8346                (<SetControlledPortRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8347                encoder,
8348                offset,
8349                _depth,
8350            )
8351        }
8352    }
8353    unsafe impl<
8354        D: fidl::encoding::ResourceDialect,
8355        T0: fidl::encoding::Encode<SetControlledPortRequest, D>,
8356    > fidl::encoding::Encode<MlmeSetControlledPortRequest, D> for (T0,)
8357    {
8358        #[inline]
8359        unsafe fn encode(
8360            self,
8361            encoder: &mut fidl::encoding::Encoder<'_, D>,
8362            offset: usize,
8363            depth: fidl::encoding::Depth,
8364        ) -> fidl::Result<()> {
8365            encoder.debug_check_bounds::<MlmeSetControlledPortRequest>(offset);
8366            // Zero out padding regions. There's no need to apply masks
8367            // because the unmasked parts will be overwritten by fields.
8368            // Write the fields.
8369            self.0.encode(encoder, offset + 0, depth)?;
8370            Ok(())
8371        }
8372    }
8373
8374    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8375        for MlmeSetControlledPortRequest
8376    {
8377        #[inline(always)]
8378        fn new_empty() -> Self {
8379            Self { req: fidl::new_empty!(SetControlledPortRequest, D) }
8380        }
8381
8382        #[inline]
8383        unsafe fn decode(
8384            &mut self,
8385            decoder: &mut fidl::encoding::Decoder<'_, D>,
8386            offset: usize,
8387            _depth: fidl::encoding::Depth,
8388        ) -> fidl::Result<()> {
8389            decoder.debug_check_bounds::<Self>(offset);
8390            // Verify that padding bytes are zero.
8391            fidl::decode!(SetControlledPortRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8392            Ok(())
8393        }
8394    }
8395
8396    impl fidl::encoding::ValueTypeMarker for MlmeSetKeysConfRequest {
8397        type Borrowed<'a> = &'a Self;
8398        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8399            value
8400        }
8401    }
8402
8403    unsafe impl fidl::encoding::TypeMarker for MlmeSetKeysConfRequest {
8404        type Owned = Self;
8405
8406        #[inline(always)]
8407        fn inline_align(_context: fidl::encoding::Context) -> usize {
8408            8
8409        }
8410
8411        #[inline(always)]
8412        fn inline_size(_context: fidl::encoding::Context) -> usize {
8413            16
8414        }
8415    }
8416
8417    unsafe impl<D: fidl::encoding::ResourceDialect>
8418        fidl::encoding::Encode<MlmeSetKeysConfRequest, D> for &MlmeSetKeysConfRequest
8419    {
8420        #[inline]
8421        unsafe fn encode(
8422            self,
8423            encoder: &mut fidl::encoding::Encoder<'_, D>,
8424            offset: usize,
8425            _depth: fidl::encoding::Depth,
8426        ) -> fidl::Result<()> {
8427            encoder.debug_check_bounds::<MlmeSetKeysConfRequest>(offset);
8428            // Delegate to tuple encoding.
8429            fidl::encoding::Encode::<MlmeSetKeysConfRequest, D>::encode(
8430                (<SetKeysConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.conf),),
8431                encoder,
8432                offset,
8433                _depth,
8434            )
8435        }
8436    }
8437    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SetKeysConfirm, D>>
8438        fidl::encoding::Encode<MlmeSetKeysConfRequest, D> for (T0,)
8439    {
8440        #[inline]
8441        unsafe fn encode(
8442            self,
8443            encoder: &mut fidl::encoding::Encoder<'_, D>,
8444            offset: usize,
8445            depth: fidl::encoding::Depth,
8446        ) -> fidl::Result<()> {
8447            encoder.debug_check_bounds::<MlmeSetKeysConfRequest>(offset);
8448            // Zero out padding regions. There's no need to apply masks
8449            // because the unmasked parts will be overwritten by fields.
8450            // Write the fields.
8451            self.0.encode(encoder, offset + 0, depth)?;
8452            Ok(())
8453        }
8454    }
8455
8456    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8457        for MlmeSetKeysConfRequest
8458    {
8459        #[inline(always)]
8460        fn new_empty() -> Self {
8461            Self { conf: fidl::new_empty!(SetKeysConfirm, D) }
8462        }
8463
8464        #[inline]
8465        unsafe fn decode(
8466            &mut self,
8467            decoder: &mut fidl::encoding::Decoder<'_, D>,
8468            offset: usize,
8469            _depth: fidl::encoding::Depth,
8470        ) -> fidl::Result<()> {
8471            decoder.debug_check_bounds::<Self>(offset);
8472            // Verify that padding bytes are zero.
8473            fidl::decode!(SetKeysConfirm, D, &mut self.conf, decoder, offset + 0, _depth)?;
8474            Ok(())
8475        }
8476    }
8477
8478    impl fidl::encoding::ValueTypeMarker for MlmeSetKeysReqRequest {
8479        type Borrowed<'a> = &'a Self;
8480        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8481            value
8482        }
8483    }
8484
8485    unsafe impl fidl::encoding::TypeMarker for MlmeSetKeysReqRequest {
8486        type Owned = Self;
8487
8488        #[inline(always)]
8489        fn inline_align(_context: fidl::encoding::Context) -> usize {
8490            8
8491        }
8492
8493        #[inline(always)]
8494        fn inline_size(_context: fidl::encoding::Context) -> usize {
8495            16
8496        }
8497    }
8498
8499    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeSetKeysReqRequest, D>
8500        for &MlmeSetKeysReqRequest
8501    {
8502        #[inline]
8503        unsafe fn encode(
8504            self,
8505            encoder: &mut fidl::encoding::Encoder<'_, D>,
8506            offset: usize,
8507            _depth: fidl::encoding::Depth,
8508        ) -> fidl::Result<()> {
8509            encoder.debug_check_bounds::<MlmeSetKeysReqRequest>(offset);
8510            // Delegate to tuple encoding.
8511            fidl::encoding::Encode::<MlmeSetKeysReqRequest, D>::encode(
8512                (<SetKeysRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8513                encoder,
8514                offset,
8515                _depth,
8516            )
8517        }
8518    }
8519    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SetKeysRequest, D>>
8520        fidl::encoding::Encode<MlmeSetKeysReqRequest, D> for (T0,)
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::<MlmeSetKeysReqRequest>(offset);
8530            // Zero out padding regions. There's no need to apply masks
8531            // because the unmasked parts will be overwritten by fields.
8532            // Write the fields.
8533            self.0.encode(encoder, offset + 0, depth)?;
8534            Ok(())
8535        }
8536    }
8537
8538    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeSetKeysReqRequest {
8539        #[inline(always)]
8540        fn new_empty() -> Self {
8541            Self { req: fidl::new_empty!(SetKeysRequest, D) }
8542        }
8543
8544        #[inline]
8545        unsafe fn decode(
8546            &mut self,
8547            decoder: &mut fidl::encoding::Decoder<'_, D>,
8548            offset: usize,
8549            _depth: fidl::encoding::Depth,
8550        ) -> fidl::Result<()> {
8551            decoder.debug_check_bounds::<Self>(offset);
8552            // Verify that padding bytes are zero.
8553            fidl::decode!(SetKeysRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8554            Ok(())
8555        }
8556    }
8557
8558    impl fidl::encoding::ValueTypeMarker for MlmeSetMacAddressRequest {
8559        type Borrowed<'a> = &'a Self;
8560        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8561            value
8562        }
8563    }
8564
8565    unsafe impl fidl::encoding::TypeMarker for MlmeSetMacAddressRequest {
8566        type Owned = Self;
8567
8568        #[inline(always)]
8569        fn inline_align(_context: fidl::encoding::Context) -> usize {
8570            1
8571        }
8572
8573        #[inline(always)]
8574        fn inline_size(_context: fidl::encoding::Context) -> usize {
8575            6
8576        }
8577        #[inline(always)]
8578        fn encode_is_copy() -> bool {
8579            true
8580        }
8581
8582        #[inline(always)]
8583        fn decode_is_copy() -> bool {
8584            true
8585        }
8586    }
8587
8588    unsafe impl<D: fidl::encoding::ResourceDialect>
8589        fidl::encoding::Encode<MlmeSetMacAddressRequest, D> for &MlmeSetMacAddressRequest
8590    {
8591        #[inline]
8592        unsafe fn encode(
8593            self,
8594            encoder: &mut fidl::encoding::Encoder<'_, D>,
8595            offset: usize,
8596            _depth: fidl::encoding::Depth,
8597        ) -> fidl::Result<()> {
8598            encoder.debug_check_bounds::<MlmeSetMacAddressRequest>(offset);
8599            unsafe {
8600                // Copy the object into the buffer.
8601                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
8602                (buf_ptr as *mut MlmeSetMacAddressRequest)
8603                    .write_unaligned((self as *const MlmeSetMacAddressRequest).read());
8604                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
8605                // done second because the memcpy will write garbage to these bytes.
8606            }
8607            Ok(())
8608        }
8609    }
8610    unsafe impl<
8611        D: fidl::encoding::ResourceDialect,
8612        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
8613    > fidl::encoding::Encode<MlmeSetMacAddressRequest, D> for (T0,)
8614    {
8615        #[inline]
8616        unsafe fn encode(
8617            self,
8618            encoder: &mut fidl::encoding::Encoder<'_, D>,
8619            offset: usize,
8620            depth: fidl::encoding::Depth,
8621        ) -> fidl::Result<()> {
8622            encoder.debug_check_bounds::<MlmeSetMacAddressRequest>(offset);
8623            // Zero out padding regions. There's no need to apply masks
8624            // because the unmasked parts will be overwritten by fields.
8625            // Write the fields.
8626            self.0.encode(encoder, offset + 0, depth)?;
8627            Ok(())
8628        }
8629    }
8630
8631    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8632        for MlmeSetMacAddressRequest
8633    {
8634        #[inline(always)]
8635        fn new_empty() -> Self {
8636            Self { mac_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
8637        }
8638
8639        #[inline]
8640        unsafe fn decode(
8641            &mut self,
8642            decoder: &mut fidl::encoding::Decoder<'_, D>,
8643            offset: usize,
8644            _depth: fidl::encoding::Depth,
8645        ) -> fidl::Result<()> {
8646            decoder.debug_check_bounds::<Self>(offset);
8647            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
8648            // Verify that padding bytes are zero.
8649            // Copy from the buffer into the object.
8650            unsafe {
8651                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
8652            }
8653            Ok(())
8654        }
8655    }
8656
8657    impl fidl::encoding::ValueTypeMarker for MlmeSignalReportRequest {
8658        type Borrowed<'a> = &'a Self;
8659        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8660            value
8661        }
8662    }
8663
8664    unsafe impl fidl::encoding::TypeMarker for MlmeSignalReportRequest {
8665        type Owned = Self;
8666
8667        #[inline(always)]
8668        fn inline_align(_context: fidl::encoding::Context) -> usize {
8669            1
8670        }
8671
8672        #[inline(always)]
8673        fn inline_size(_context: fidl::encoding::Context) -> usize {
8674            2
8675        }
8676    }
8677
8678    unsafe impl<D: fidl::encoding::ResourceDialect>
8679        fidl::encoding::Encode<MlmeSignalReportRequest, D> for &MlmeSignalReportRequest
8680    {
8681        #[inline]
8682        unsafe fn encode(
8683            self,
8684            encoder: &mut fidl::encoding::Encoder<'_, D>,
8685            offset: usize,
8686            _depth: fidl::encoding::Depth,
8687        ) -> fidl::Result<()> {
8688            encoder.debug_check_bounds::<MlmeSignalReportRequest>(offset);
8689            // Delegate to tuple encoding.
8690            fidl::encoding::Encode::<MlmeSignalReportRequest, D>::encode(
8691                (
8692                    <fidl_fuchsia_wlan_internal__common::SignalReportIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),
8693                ),
8694                encoder, offset, _depth
8695            )
8696        }
8697    }
8698    unsafe impl<
8699        D: fidl::encoding::ResourceDialect,
8700        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal__common::SignalReportIndication, D>,
8701    > fidl::encoding::Encode<MlmeSignalReportRequest, D> for (T0,)
8702    {
8703        #[inline]
8704        unsafe fn encode(
8705            self,
8706            encoder: &mut fidl::encoding::Encoder<'_, D>,
8707            offset: usize,
8708            depth: fidl::encoding::Depth,
8709        ) -> fidl::Result<()> {
8710            encoder.debug_check_bounds::<MlmeSignalReportRequest>(offset);
8711            // Zero out padding regions. There's no need to apply masks
8712            // because the unmasked parts will be overwritten by fields.
8713            // Write the fields.
8714            self.0.encode(encoder, offset + 0, depth)?;
8715            Ok(())
8716        }
8717    }
8718
8719    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8720        for MlmeSignalReportRequest
8721    {
8722        #[inline(always)]
8723        fn new_empty() -> Self {
8724            Self {
8725                ind: fidl::new_empty!(
8726                    fidl_fuchsia_wlan_internal__common::SignalReportIndication,
8727                    D
8728                ),
8729            }
8730        }
8731
8732        #[inline]
8733        unsafe fn decode(
8734            &mut self,
8735            decoder: &mut fidl::encoding::Decoder<'_, D>,
8736            offset: usize,
8737            _depth: fidl::encoding::Depth,
8738        ) -> fidl::Result<()> {
8739            decoder.debug_check_bounds::<Self>(offset);
8740            // Verify that padding bytes are zero.
8741            fidl::decode!(
8742                fidl_fuchsia_wlan_internal__common::SignalReportIndication,
8743                D,
8744                &mut self.ind,
8745                decoder,
8746                offset + 0,
8747                _depth
8748            )?;
8749            Ok(())
8750        }
8751    }
8752
8753    impl fidl::encoding::ValueTypeMarker for MlmeStartCaptureFramesRequest {
8754        type Borrowed<'a> = &'a Self;
8755        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8756            value
8757        }
8758    }
8759
8760    unsafe impl fidl::encoding::TypeMarker for MlmeStartCaptureFramesRequest {
8761        type Owned = Self;
8762
8763        #[inline(always)]
8764        fn inline_align(_context: fidl::encoding::Context) -> usize {
8765            4
8766        }
8767
8768        #[inline(always)]
8769        fn inline_size(_context: fidl::encoding::Context) -> usize {
8770            4
8771        }
8772    }
8773
8774    unsafe impl<D: fidl::encoding::ResourceDialect>
8775        fidl::encoding::Encode<MlmeStartCaptureFramesRequest, D>
8776        for &MlmeStartCaptureFramesRequest
8777    {
8778        #[inline]
8779        unsafe fn encode(
8780            self,
8781            encoder: &mut fidl::encoding::Encoder<'_, D>,
8782            offset: usize,
8783            _depth: fidl::encoding::Depth,
8784        ) -> fidl::Result<()> {
8785            encoder.debug_check_bounds::<MlmeStartCaptureFramesRequest>(offset);
8786            // Delegate to tuple encoding.
8787            fidl::encoding::Encode::<MlmeStartCaptureFramesRequest, D>::encode(
8788                (<StartCaptureFramesRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8789                encoder,
8790                offset,
8791                _depth,
8792            )
8793        }
8794    }
8795    unsafe impl<
8796        D: fidl::encoding::ResourceDialect,
8797        T0: fidl::encoding::Encode<StartCaptureFramesRequest, D>,
8798    > fidl::encoding::Encode<MlmeStartCaptureFramesRequest, D> for (T0,)
8799    {
8800        #[inline]
8801        unsafe fn encode(
8802            self,
8803            encoder: &mut fidl::encoding::Encoder<'_, D>,
8804            offset: usize,
8805            depth: fidl::encoding::Depth,
8806        ) -> fidl::Result<()> {
8807            encoder.debug_check_bounds::<MlmeStartCaptureFramesRequest>(offset);
8808            // Zero out padding regions. There's no need to apply masks
8809            // because the unmasked parts will be overwritten by fields.
8810            // Write the fields.
8811            self.0.encode(encoder, offset + 0, depth)?;
8812            Ok(())
8813        }
8814    }
8815
8816    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8817        for MlmeStartCaptureFramesRequest
8818    {
8819        #[inline(always)]
8820        fn new_empty() -> Self {
8821            Self { req: fidl::new_empty!(StartCaptureFramesRequest, D) }
8822        }
8823
8824        #[inline]
8825        unsafe fn decode(
8826            &mut self,
8827            decoder: &mut fidl::encoding::Decoder<'_, D>,
8828            offset: usize,
8829            _depth: fidl::encoding::Depth,
8830        ) -> fidl::Result<()> {
8831            decoder.debug_check_bounds::<Self>(offset);
8832            // Verify that padding bytes are zero.
8833            fidl::decode!(
8834                StartCaptureFramesRequest,
8835                D,
8836                &mut self.req,
8837                decoder,
8838                offset + 0,
8839                _depth
8840            )?;
8841            Ok(())
8842        }
8843    }
8844
8845    impl fidl::encoding::ValueTypeMarker for MlmeStartCaptureFramesResponse {
8846        type Borrowed<'a> = &'a Self;
8847        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8848            value
8849        }
8850    }
8851
8852    unsafe impl fidl::encoding::TypeMarker for MlmeStartCaptureFramesResponse {
8853        type Owned = Self;
8854
8855        #[inline(always)]
8856        fn inline_align(_context: fidl::encoding::Context) -> usize {
8857            4
8858        }
8859
8860        #[inline(always)]
8861        fn inline_size(_context: fidl::encoding::Context) -> usize {
8862            8
8863        }
8864    }
8865
8866    unsafe impl<D: fidl::encoding::ResourceDialect>
8867        fidl::encoding::Encode<MlmeStartCaptureFramesResponse, D>
8868        for &MlmeStartCaptureFramesResponse
8869    {
8870        #[inline]
8871        unsafe fn encode(
8872            self,
8873            encoder: &mut fidl::encoding::Encoder<'_, D>,
8874            offset: usize,
8875            _depth: fidl::encoding::Depth,
8876        ) -> fidl::Result<()> {
8877            encoder.debug_check_bounds::<MlmeStartCaptureFramesResponse>(offset);
8878            // Delegate to tuple encoding.
8879            fidl::encoding::Encode::<MlmeStartCaptureFramesResponse, D>::encode(
8880                (<StartCaptureFramesResponse as fidl::encoding::ValueTypeMarker>::borrow(
8881                    &self.resp,
8882                ),),
8883                encoder,
8884                offset,
8885                _depth,
8886            )
8887        }
8888    }
8889    unsafe impl<
8890        D: fidl::encoding::ResourceDialect,
8891        T0: fidl::encoding::Encode<StartCaptureFramesResponse, D>,
8892    > fidl::encoding::Encode<MlmeStartCaptureFramesResponse, D> for (T0,)
8893    {
8894        #[inline]
8895        unsafe fn encode(
8896            self,
8897            encoder: &mut fidl::encoding::Encoder<'_, D>,
8898            offset: usize,
8899            depth: fidl::encoding::Depth,
8900        ) -> fidl::Result<()> {
8901            encoder.debug_check_bounds::<MlmeStartCaptureFramesResponse>(offset);
8902            // Zero out padding regions. There's no need to apply masks
8903            // because the unmasked parts will be overwritten by fields.
8904            // Write the fields.
8905            self.0.encode(encoder, offset + 0, depth)?;
8906            Ok(())
8907        }
8908    }
8909
8910    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8911        for MlmeStartCaptureFramesResponse
8912    {
8913        #[inline(always)]
8914        fn new_empty() -> Self {
8915            Self { resp: fidl::new_empty!(StartCaptureFramesResponse, D) }
8916        }
8917
8918        #[inline]
8919        unsafe fn decode(
8920            &mut self,
8921            decoder: &mut fidl::encoding::Decoder<'_, D>,
8922            offset: usize,
8923            _depth: fidl::encoding::Depth,
8924        ) -> fidl::Result<()> {
8925            decoder.debug_check_bounds::<Self>(offset);
8926            // Verify that padding bytes are zero.
8927            fidl::decode!(
8928                StartCaptureFramesResponse,
8929                D,
8930                &mut self.resp,
8931                decoder,
8932                offset + 0,
8933                _depth
8934            )?;
8935            Ok(())
8936        }
8937    }
8938
8939    impl fidl::encoding::ValueTypeMarker for MlmeStartConfRequest {
8940        type Borrowed<'a> = &'a Self;
8941        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8942            value
8943        }
8944    }
8945
8946    unsafe impl fidl::encoding::TypeMarker for MlmeStartConfRequest {
8947        type Owned = Self;
8948
8949        #[inline(always)]
8950        fn inline_align(_context: fidl::encoding::Context) -> usize {
8951            4
8952        }
8953
8954        #[inline(always)]
8955        fn inline_size(_context: fidl::encoding::Context) -> usize {
8956            4
8957        }
8958    }
8959
8960    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartConfRequest, D>
8961        for &MlmeStartConfRequest
8962    {
8963        #[inline]
8964        unsafe fn encode(
8965            self,
8966            encoder: &mut fidl::encoding::Encoder<'_, D>,
8967            offset: usize,
8968            _depth: fidl::encoding::Depth,
8969        ) -> fidl::Result<()> {
8970            encoder.debug_check_bounds::<MlmeStartConfRequest>(offset);
8971            // Delegate to tuple encoding.
8972            fidl::encoding::Encode::<MlmeStartConfRequest, D>::encode(
8973                (<StartConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
8974                encoder,
8975                offset,
8976                _depth,
8977            )
8978        }
8979    }
8980    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartConfirm, D>>
8981        fidl::encoding::Encode<MlmeStartConfRequest, D> for (T0,)
8982    {
8983        #[inline]
8984        unsafe fn encode(
8985            self,
8986            encoder: &mut fidl::encoding::Encoder<'_, D>,
8987            offset: usize,
8988            depth: fidl::encoding::Depth,
8989        ) -> fidl::Result<()> {
8990            encoder.debug_check_bounds::<MlmeStartConfRequest>(offset);
8991            // Zero out padding regions. There's no need to apply masks
8992            // because the unmasked parts will be overwritten by fields.
8993            // Write the fields.
8994            self.0.encode(encoder, offset + 0, depth)?;
8995            Ok(())
8996        }
8997    }
8998
8999    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartConfRequest {
9000        #[inline(always)]
9001        fn new_empty() -> Self {
9002            Self { resp: fidl::new_empty!(StartConfirm, D) }
9003        }
9004
9005        #[inline]
9006        unsafe fn decode(
9007            &mut self,
9008            decoder: &mut fidl::encoding::Decoder<'_, D>,
9009            offset: usize,
9010            _depth: fidl::encoding::Depth,
9011        ) -> fidl::Result<()> {
9012            decoder.debug_check_bounds::<Self>(offset);
9013            // Verify that padding bytes are zero.
9014            fidl::decode!(StartConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
9015            Ok(())
9016        }
9017    }
9018
9019    impl fidl::encoding::ValueTypeMarker for MlmeStartReqRequest {
9020        type Borrowed<'a> = &'a Self;
9021        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9022            value
9023        }
9024    }
9025
9026    unsafe impl fidl::encoding::TypeMarker for MlmeStartReqRequest {
9027        type Owned = Self;
9028
9029        #[inline(always)]
9030        fn inline_align(_context: fidl::encoding::Context) -> usize {
9031            8
9032        }
9033
9034        #[inline(always)]
9035        fn inline_size(_context: fidl::encoding::Context) -> usize {
9036            96
9037        }
9038    }
9039
9040    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartReqRequest, D>
9041        for &MlmeStartReqRequest
9042    {
9043        #[inline]
9044        unsafe fn encode(
9045            self,
9046            encoder: &mut fidl::encoding::Encoder<'_, D>,
9047            offset: usize,
9048            _depth: fidl::encoding::Depth,
9049        ) -> fidl::Result<()> {
9050            encoder.debug_check_bounds::<MlmeStartReqRequest>(offset);
9051            // Delegate to tuple encoding.
9052            fidl::encoding::Encode::<MlmeStartReqRequest, D>::encode(
9053                (<StartRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9054                encoder,
9055                offset,
9056                _depth,
9057            )
9058        }
9059    }
9060    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartRequest, D>>
9061        fidl::encoding::Encode<MlmeStartReqRequest, D> for (T0,)
9062    {
9063        #[inline]
9064        unsafe fn encode(
9065            self,
9066            encoder: &mut fidl::encoding::Encoder<'_, D>,
9067            offset: usize,
9068            depth: fidl::encoding::Depth,
9069        ) -> fidl::Result<()> {
9070            encoder.debug_check_bounds::<MlmeStartReqRequest>(offset);
9071            // Zero out padding regions. There's no need to apply masks
9072            // because the unmasked parts will be overwritten by fields.
9073            // Write the fields.
9074            self.0.encode(encoder, offset + 0, depth)?;
9075            Ok(())
9076        }
9077    }
9078
9079    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartReqRequest {
9080        #[inline(always)]
9081        fn new_empty() -> Self {
9082            Self { req: fidl::new_empty!(StartRequest, D) }
9083        }
9084
9085        #[inline]
9086        unsafe fn decode(
9087            &mut self,
9088            decoder: &mut fidl::encoding::Decoder<'_, D>,
9089            offset: usize,
9090            _depth: fidl::encoding::Depth,
9091        ) -> fidl::Result<()> {
9092            decoder.debug_check_bounds::<Self>(offset);
9093            // Verify that padding bytes are zero.
9094            fidl::decode!(StartRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9095            Ok(())
9096        }
9097    }
9098
9099    impl fidl::encoding::ValueTypeMarker for MlmeStartScanRequest {
9100        type Borrowed<'a> = &'a Self;
9101        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9102            value
9103        }
9104    }
9105
9106    unsafe impl fidl::encoding::TypeMarker for MlmeStartScanRequest {
9107        type Owned = Self;
9108
9109        #[inline(always)]
9110        fn inline_align(_context: fidl::encoding::Context) -> usize {
9111            8
9112        }
9113
9114        #[inline(always)]
9115        fn inline_size(_context: fidl::encoding::Context) -> usize {
9116            64
9117        }
9118    }
9119
9120    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartScanRequest, D>
9121        for &MlmeStartScanRequest
9122    {
9123        #[inline]
9124        unsafe fn encode(
9125            self,
9126            encoder: &mut fidl::encoding::Encoder<'_, D>,
9127            offset: usize,
9128            _depth: fidl::encoding::Depth,
9129        ) -> fidl::Result<()> {
9130            encoder.debug_check_bounds::<MlmeStartScanRequest>(offset);
9131            // Delegate to tuple encoding.
9132            fidl::encoding::Encode::<MlmeStartScanRequest, D>::encode(
9133                (<ScanRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9134                encoder,
9135                offset,
9136                _depth,
9137            )
9138        }
9139    }
9140    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanRequest, D>>
9141        fidl::encoding::Encode<MlmeStartScanRequest, D> for (T0,)
9142    {
9143        #[inline]
9144        unsafe fn encode(
9145            self,
9146            encoder: &mut fidl::encoding::Encoder<'_, D>,
9147            offset: usize,
9148            depth: fidl::encoding::Depth,
9149        ) -> fidl::Result<()> {
9150            encoder.debug_check_bounds::<MlmeStartScanRequest>(offset);
9151            // Zero out padding regions. There's no need to apply masks
9152            // because the unmasked parts will be overwritten by fields.
9153            // Write the fields.
9154            self.0.encode(encoder, offset + 0, depth)?;
9155            Ok(())
9156        }
9157    }
9158
9159    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartScanRequest {
9160        #[inline(always)]
9161        fn new_empty() -> Self {
9162            Self { req: fidl::new_empty!(ScanRequest, D) }
9163        }
9164
9165        #[inline]
9166        unsafe fn decode(
9167            &mut self,
9168            decoder: &mut fidl::encoding::Decoder<'_, D>,
9169            offset: usize,
9170            _depth: fidl::encoding::Depth,
9171        ) -> fidl::Result<()> {
9172            decoder.debug_check_bounds::<Self>(offset);
9173            // Verify that padding bytes are zero.
9174            fidl::decode!(ScanRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9175            Ok(())
9176        }
9177    }
9178
9179    impl fidl::encoding::ValueTypeMarker for MlmeStopConfRequest {
9180        type Borrowed<'a> = &'a Self;
9181        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9182            value
9183        }
9184    }
9185
9186    unsafe impl fidl::encoding::TypeMarker for MlmeStopConfRequest {
9187        type Owned = Self;
9188
9189        #[inline(always)]
9190        fn inline_align(_context: fidl::encoding::Context) -> usize {
9191            4
9192        }
9193
9194        #[inline(always)]
9195        fn inline_size(_context: fidl::encoding::Context) -> usize {
9196            4
9197        }
9198    }
9199
9200    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStopConfRequest, D>
9201        for &MlmeStopConfRequest
9202    {
9203        #[inline]
9204        unsafe fn encode(
9205            self,
9206            encoder: &mut fidl::encoding::Encoder<'_, D>,
9207            offset: usize,
9208            _depth: fidl::encoding::Depth,
9209        ) -> fidl::Result<()> {
9210            encoder.debug_check_bounds::<MlmeStopConfRequest>(offset);
9211            // Delegate to tuple encoding.
9212            fidl::encoding::Encode::<MlmeStopConfRequest, D>::encode(
9213                (<StopConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
9214                encoder,
9215                offset,
9216                _depth,
9217            )
9218        }
9219    }
9220    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopConfirm, D>>
9221        fidl::encoding::Encode<MlmeStopConfRequest, D> for (T0,)
9222    {
9223        #[inline]
9224        unsafe fn encode(
9225            self,
9226            encoder: &mut fidl::encoding::Encoder<'_, D>,
9227            offset: usize,
9228            depth: fidl::encoding::Depth,
9229        ) -> fidl::Result<()> {
9230            encoder.debug_check_bounds::<MlmeStopConfRequest>(offset);
9231            // Zero out padding regions. There's no need to apply masks
9232            // because the unmasked parts will be overwritten by fields.
9233            // Write the fields.
9234            self.0.encode(encoder, offset + 0, depth)?;
9235            Ok(())
9236        }
9237    }
9238
9239    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStopConfRequest {
9240        #[inline(always)]
9241        fn new_empty() -> Self {
9242            Self { resp: fidl::new_empty!(StopConfirm, D) }
9243        }
9244
9245        #[inline]
9246        unsafe fn decode(
9247            &mut self,
9248            decoder: &mut fidl::encoding::Decoder<'_, D>,
9249            offset: usize,
9250            _depth: fidl::encoding::Depth,
9251        ) -> fidl::Result<()> {
9252            decoder.debug_check_bounds::<Self>(offset);
9253            // Verify that padding bytes are zero.
9254            fidl::decode!(StopConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
9255            Ok(())
9256        }
9257    }
9258
9259    impl fidl::encoding::ValueTypeMarker for MlmeStopReqRequest {
9260        type Borrowed<'a> = &'a Self;
9261        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9262            value
9263        }
9264    }
9265
9266    unsafe impl fidl::encoding::TypeMarker for MlmeStopReqRequest {
9267        type Owned = Self;
9268
9269        #[inline(always)]
9270        fn inline_align(_context: fidl::encoding::Context) -> usize {
9271            8
9272        }
9273
9274        #[inline(always)]
9275        fn inline_size(_context: fidl::encoding::Context) -> usize {
9276            16
9277        }
9278    }
9279
9280    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStopReqRequest, D>
9281        for &MlmeStopReqRequest
9282    {
9283        #[inline]
9284        unsafe fn encode(
9285            self,
9286            encoder: &mut fidl::encoding::Encoder<'_, D>,
9287            offset: usize,
9288            _depth: fidl::encoding::Depth,
9289        ) -> fidl::Result<()> {
9290            encoder.debug_check_bounds::<MlmeStopReqRequest>(offset);
9291            // Delegate to tuple encoding.
9292            fidl::encoding::Encode::<MlmeStopReqRequest, D>::encode(
9293                (<StopRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9294                encoder,
9295                offset,
9296                _depth,
9297            )
9298        }
9299    }
9300    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopRequest, D>>
9301        fidl::encoding::Encode<MlmeStopReqRequest, D> for (T0,)
9302    {
9303        #[inline]
9304        unsafe fn encode(
9305            self,
9306            encoder: &mut fidl::encoding::Encoder<'_, D>,
9307            offset: usize,
9308            depth: fidl::encoding::Depth,
9309        ) -> fidl::Result<()> {
9310            encoder.debug_check_bounds::<MlmeStopReqRequest>(offset);
9311            // Zero out padding regions. There's no need to apply masks
9312            // because the unmasked parts will be overwritten by fields.
9313            // Write the fields.
9314            self.0.encode(encoder, offset + 0, depth)?;
9315            Ok(())
9316        }
9317    }
9318
9319    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStopReqRequest {
9320        #[inline(always)]
9321        fn new_empty() -> Self {
9322            Self { req: fidl::new_empty!(StopRequest, D) }
9323        }
9324
9325        #[inline]
9326        unsafe fn decode(
9327            &mut self,
9328            decoder: &mut fidl::encoding::Decoder<'_, D>,
9329            offset: usize,
9330            _depth: fidl::encoding::Depth,
9331        ) -> fidl::Result<()> {
9332            decoder.debug_check_bounds::<Self>(offset);
9333            // Verify that padding bytes are zero.
9334            fidl::decode!(StopRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9335            Ok(())
9336        }
9337    }
9338
9339    impl fidl::encoding::ValueTypeMarker for NegotiatedCapabilities {
9340        type Borrowed<'a> = &'a Self;
9341        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9342            value
9343        }
9344    }
9345
9346    unsafe impl fidl::encoding::TypeMarker for NegotiatedCapabilities {
9347        type Owned = Self;
9348
9349        #[inline(always)]
9350        fn inline_align(_context: fidl::encoding::Context) -> usize {
9351            8
9352        }
9353
9354        #[inline(always)]
9355        fn inline_size(_context: fidl::encoding::Context) -> usize {
9356            56
9357        }
9358    }
9359
9360    unsafe impl<D: fidl::encoding::ResourceDialect>
9361        fidl::encoding::Encode<NegotiatedCapabilities, D> for &NegotiatedCapabilities
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::<NegotiatedCapabilities>(offset);
9371            // Delegate to tuple encoding.
9372            fidl::encoding::Encode::<NegotiatedCapabilities, D>::encode(
9373                (
9374                    <fidl_fuchsia_wlan_ieee80211__common::WlanChannel as fidl::encoding::ValueTypeMarker>::borrow(&self.channel),
9375                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
9376                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
9377                    <fidl::encoding::Boxed<WmmParameter> as fidl::encoding::ValueTypeMarker>::borrow(&self.wmm_param),
9378                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.ht_cap),
9379                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_cap),
9380                ),
9381                encoder, offset, _depth
9382            )
9383        }
9384    }
9385    unsafe impl<
9386        D: fidl::encoding::ResourceDialect,
9387        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::WlanChannel, D>,
9388        T1: fidl::encoding::Encode<u16, D>,
9389        T2: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
9390        T3: fidl::encoding::Encode<fidl::encoding::Boxed<WmmParameter>, D>,
9391        T4: fidl::encoding::Encode<
9392                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
9393                D,
9394            >,
9395        T5: fidl::encoding::Encode<
9396                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
9397                D,
9398            >,
9399    > fidl::encoding::Encode<NegotiatedCapabilities, D> for (T0, T1, T2, T3, T4, T5)
9400    {
9401        #[inline]
9402        unsafe fn encode(
9403            self,
9404            encoder: &mut fidl::encoding::Encoder<'_, D>,
9405            offset: usize,
9406            depth: fidl::encoding::Depth,
9407        ) -> fidl::Result<()> {
9408            encoder.debug_check_bounds::<NegotiatedCapabilities>(offset);
9409            // Zero out padding regions. There's no need to apply masks
9410            // because the unmasked parts will be overwritten by fields.
9411            unsafe {
9412                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
9413                (ptr as *mut u64).write_unaligned(0);
9414            }
9415            // Write the fields.
9416            self.0.encode(encoder, offset + 0, depth)?;
9417            self.1.encode(encoder, offset + 12, depth)?;
9418            self.2.encode(encoder, offset + 16, depth)?;
9419            self.3.encode(encoder, offset + 32, depth)?;
9420            self.4.encode(encoder, offset + 40, depth)?;
9421            self.5.encode(encoder, offset + 48, depth)?;
9422            Ok(())
9423        }
9424    }
9425
9426    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9427        for NegotiatedCapabilities
9428    {
9429        #[inline(always)]
9430        fn new_empty() -> Self {
9431            Self {
9432                channel: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanChannel, D),
9433                capability_info: fidl::new_empty!(u16, D),
9434                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
9435                wmm_param: fidl::new_empty!(fidl::encoding::Boxed<WmmParameter>, D),
9436                ht_cap: fidl::new_empty!(
9437                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
9438                    D
9439                ),
9440                vht_cap: fidl::new_empty!(
9441                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
9442                    D
9443                ),
9444            }
9445        }
9446
9447        #[inline]
9448        unsafe fn decode(
9449            &mut self,
9450            decoder: &mut fidl::encoding::Decoder<'_, D>,
9451            offset: usize,
9452            _depth: fidl::encoding::Depth,
9453        ) -> fidl::Result<()> {
9454            decoder.debug_check_bounds::<Self>(offset);
9455            // Verify that padding bytes are zero.
9456            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
9457            let padval = unsafe { (ptr as *const u64).read_unaligned() };
9458            let mask = 0xffff000000000000u64;
9459            let maskedval = padval & mask;
9460            if maskedval != 0 {
9461                return Err(fidl::Error::NonZeroPadding {
9462                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
9463                });
9464            }
9465            fidl::decode!(
9466                fidl_fuchsia_wlan_ieee80211__common::WlanChannel,
9467                D,
9468                &mut self.channel,
9469                decoder,
9470                offset + 0,
9471                _depth
9472            )?;
9473            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 12, _depth)?;
9474            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 16, _depth)?;
9475            fidl::decode!(
9476                fidl::encoding::Boxed<WmmParameter>,
9477                D,
9478                &mut self.wmm_param,
9479                decoder,
9480                offset + 32,
9481                _depth
9482            )?;
9483            fidl::decode!(
9484                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
9485                D,
9486                &mut self.ht_cap,
9487                decoder,
9488                offset + 40,
9489                _depth
9490            )?;
9491            fidl::decode!(
9492                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
9493                D,
9494                &mut self.vht_cap,
9495                decoder,
9496                offset + 48,
9497                _depth
9498            )?;
9499            Ok(())
9500        }
9501    }
9502
9503    impl fidl::encoding::ValueTypeMarker for PmkInfo {
9504        type Borrowed<'a> = &'a Self;
9505        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9506            value
9507        }
9508    }
9509
9510    unsafe impl fidl::encoding::TypeMarker for PmkInfo {
9511        type Owned = Self;
9512
9513        #[inline(always)]
9514        fn inline_align(_context: fidl::encoding::Context) -> usize {
9515            8
9516        }
9517
9518        #[inline(always)]
9519        fn inline_size(_context: fidl::encoding::Context) -> usize {
9520            32
9521        }
9522    }
9523
9524    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PmkInfo, D> for &PmkInfo {
9525        #[inline]
9526        unsafe fn encode(
9527            self,
9528            encoder: &mut fidl::encoding::Encoder<'_, D>,
9529            offset: usize,
9530            _depth: fidl::encoding::Depth,
9531        ) -> fidl::Result<()> {
9532            encoder.debug_check_bounds::<PmkInfo>(offset);
9533            // Delegate to tuple encoding.
9534            fidl::encoding::Encode::<PmkInfo, D>::encode(
9535                (
9536                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.pmk),
9537                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.pmkid),
9538                ),
9539                encoder, offset, _depth
9540            )
9541        }
9542    }
9543    unsafe impl<
9544        D: fidl::encoding::ResourceDialect,
9545        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
9546        T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
9547    > fidl::encoding::Encode<PmkInfo, D> for (T0, T1)
9548    {
9549        #[inline]
9550        unsafe fn encode(
9551            self,
9552            encoder: &mut fidl::encoding::Encoder<'_, D>,
9553            offset: usize,
9554            depth: fidl::encoding::Depth,
9555        ) -> fidl::Result<()> {
9556            encoder.debug_check_bounds::<PmkInfo>(offset);
9557            // Zero out padding regions. There's no need to apply masks
9558            // because the unmasked parts will be overwritten by fields.
9559            // Write the fields.
9560            self.0.encode(encoder, offset + 0, depth)?;
9561            self.1.encode(encoder, offset + 16, depth)?;
9562            Ok(())
9563        }
9564    }
9565
9566    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PmkInfo {
9567        #[inline(always)]
9568        fn new_empty() -> Self {
9569            Self {
9570                pmk: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
9571                pmkid: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
9572            }
9573        }
9574
9575        #[inline]
9576        unsafe fn decode(
9577            &mut self,
9578            decoder: &mut fidl::encoding::Decoder<'_, D>,
9579            offset: usize,
9580            _depth: fidl::encoding::Depth,
9581        ) -> fidl::Result<()> {
9582            decoder.debug_check_bounds::<Self>(offset);
9583            // Verify that padding bytes are zero.
9584            fidl::decode!(
9585                fidl::encoding::UnboundedVector<u8>,
9586                D,
9587                &mut self.pmk,
9588                decoder,
9589                offset + 0,
9590                _depth
9591            )?;
9592            fidl::decode!(
9593                fidl::encoding::UnboundedVector<u8>,
9594                D,
9595                &mut self.pmkid,
9596                decoder,
9597                offset + 16,
9598                _depth
9599            )?;
9600            Ok(())
9601        }
9602    }
9603
9604    impl fidl::encoding::ValueTypeMarker for ReconnectRequest {
9605        type Borrowed<'a> = &'a Self;
9606        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9607            value
9608        }
9609    }
9610
9611    unsafe impl fidl::encoding::TypeMarker for ReconnectRequest {
9612        type Owned = Self;
9613
9614        #[inline(always)]
9615        fn inline_align(_context: fidl::encoding::Context) -> usize {
9616            1
9617        }
9618
9619        #[inline(always)]
9620        fn inline_size(_context: fidl::encoding::Context) -> usize {
9621            6
9622        }
9623        #[inline(always)]
9624        fn encode_is_copy() -> bool {
9625            true
9626        }
9627
9628        #[inline(always)]
9629        fn decode_is_copy() -> bool {
9630            true
9631        }
9632    }
9633
9634    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ReconnectRequest, D>
9635        for &ReconnectRequest
9636    {
9637        #[inline]
9638        unsafe fn encode(
9639            self,
9640            encoder: &mut fidl::encoding::Encoder<'_, D>,
9641            offset: usize,
9642            _depth: fidl::encoding::Depth,
9643        ) -> fidl::Result<()> {
9644            encoder.debug_check_bounds::<ReconnectRequest>(offset);
9645            unsafe {
9646                // Copy the object into the buffer.
9647                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
9648                (buf_ptr as *mut ReconnectRequest)
9649                    .write_unaligned((self as *const ReconnectRequest).read());
9650                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
9651                // done second because the memcpy will write garbage to these bytes.
9652            }
9653            Ok(())
9654        }
9655    }
9656    unsafe impl<
9657        D: fidl::encoding::ResourceDialect,
9658        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
9659    > fidl::encoding::Encode<ReconnectRequest, D> for (T0,)
9660    {
9661        #[inline]
9662        unsafe fn encode(
9663            self,
9664            encoder: &mut fidl::encoding::Encoder<'_, D>,
9665            offset: usize,
9666            depth: fidl::encoding::Depth,
9667        ) -> fidl::Result<()> {
9668            encoder.debug_check_bounds::<ReconnectRequest>(offset);
9669            // Zero out padding regions. There's no need to apply masks
9670            // because the unmasked parts will be overwritten by fields.
9671            // Write the fields.
9672            self.0.encode(encoder, offset + 0, depth)?;
9673            Ok(())
9674        }
9675    }
9676
9677    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ReconnectRequest {
9678        #[inline(always)]
9679        fn new_empty() -> Self {
9680            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
9681        }
9682
9683        #[inline]
9684        unsafe fn decode(
9685            &mut self,
9686            decoder: &mut fidl::encoding::Decoder<'_, D>,
9687            offset: usize,
9688            _depth: fidl::encoding::Depth,
9689        ) -> fidl::Result<()> {
9690            decoder.debug_check_bounds::<Self>(offset);
9691            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
9692            // Verify that padding bytes are zero.
9693            // Copy from the buffer into the object.
9694            unsafe {
9695                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
9696            }
9697            Ok(())
9698        }
9699    }
9700
9701    impl fidl::encoding::ValueTypeMarker for ResetRequest {
9702        type Borrowed<'a> = &'a Self;
9703        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9704            value
9705        }
9706    }
9707
9708    unsafe impl fidl::encoding::TypeMarker for ResetRequest {
9709        type Owned = Self;
9710
9711        #[inline(always)]
9712        fn inline_align(_context: fidl::encoding::Context) -> usize {
9713            1
9714        }
9715
9716        #[inline(always)]
9717        fn inline_size(_context: fidl::encoding::Context) -> usize {
9718            7
9719        }
9720    }
9721
9722    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResetRequest, D>
9723        for &ResetRequest
9724    {
9725        #[inline]
9726        unsafe fn encode(
9727            self,
9728            encoder: &mut fidl::encoding::Encoder<'_, D>,
9729            offset: usize,
9730            _depth: fidl::encoding::Depth,
9731        ) -> fidl::Result<()> {
9732            encoder.debug_check_bounds::<ResetRequest>(offset);
9733            // Delegate to tuple encoding.
9734            fidl::encoding::Encode::<ResetRequest, D>::encode(
9735                (
9736                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
9737                        &self.sta_address,
9738                    ),
9739                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.set_default_mib),
9740                ),
9741                encoder,
9742                offset,
9743                _depth,
9744            )
9745        }
9746    }
9747    unsafe impl<
9748        D: fidl::encoding::ResourceDialect,
9749        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
9750        T1: fidl::encoding::Encode<bool, D>,
9751    > fidl::encoding::Encode<ResetRequest, D> for (T0, T1)
9752    {
9753        #[inline]
9754        unsafe fn encode(
9755            self,
9756            encoder: &mut fidl::encoding::Encoder<'_, D>,
9757            offset: usize,
9758            depth: fidl::encoding::Depth,
9759        ) -> fidl::Result<()> {
9760            encoder.debug_check_bounds::<ResetRequest>(offset);
9761            // Zero out padding regions. There's no need to apply masks
9762            // because the unmasked parts will be overwritten by fields.
9763            // Write the fields.
9764            self.0.encode(encoder, offset + 0, depth)?;
9765            self.1.encode(encoder, offset + 6, depth)?;
9766            Ok(())
9767        }
9768    }
9769
9770    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResetRequest {
9771        #[inline(always)]
9772        fn new_empty() -> Self {
9773            Self {
9774                sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
9775                set_default_mib: fidl::new_empty!(bool, D),
9776            }
9777        }
9778
9779        #[inline]
9780        unsafe fn decode(
9781            &mut self,
9782            decoder: &mut fidl::encoding::Decoder<'_, D>,
9783            offset: usize,
9784            _depth: fidl::encoding::Depth,
9785        ) -> fidl::Result<()> {
9786            decoder.debug_check_bounds::<Self>(offset);
9787            // Verify that padding bytes are zero.
9788            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.sta_address, decoder, offset + 0, _depth)?;
9789            fidl::decode!(bool, D, &mut self.set_default_mib, decoder, offset + 6, _depth)?;
9790            Ok(())
9791        }
9792    }
9793
9794    impl fidl::encoding::ValueTypeMarker for RoamConfirm {
9795        type Borrowed<'a> = &'a Self;
9796        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9797            value
9798        }
9799    }
9800
9801    unsafe impl fidl::encoding::TypeMarker for RoamConfirm {
9802        type Owned = Self;
9803
9804        #[inline(always)]
9805        fn inline_align(_context: fidl::encoding::Context) -> usize {
9806            8
9807        }
9808
9809        #[inline(always)]
9810        fn inline_size(_context: fidl::encoding::Context) -> usize {
9811            32
9812        }
9813    }
9814
9815    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamConfirm, D>
9816        for &RoamConfirm
9817    {
9818        #[inline]
9819        unsafe fn encode(
9820            self,
9821            encoder: &mut fidl::encoding::Encoder<'_, D>,
9822            offset: usize,
9823            _depth: fidl::encoding::Depth,
9824        ) -> fidl::Result<()> {
9825            encoder.debug_check_bounds::<RoamConfirm>(offset);
9826            // Delegate to tuple encoding.
9827            fidl::encoding::Encode::<RoamConfirm, D>::encode(
9828                (
9829                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
9830                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
9831                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
9832                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.target_bss_authenticated),
9833                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
9834                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
9835                ),
9836                encoder, offset, _depth
9837            )
9838        }
9839    }
9840    unsafe impl<
9841        D: fidl::encoding::ResourceDialect,
9842        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
9843        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
9844        T2: fidl::encoding::Encode<bool, D>,
9845        T3: fidl::encoding::Encode<bool, D>,
9846        T4: fidl::encoding::Encode<u16, D>,
9847        T5: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
9848    > fidl::encoding::Encode<RoamConfirm, D> for (T0, T1, T2, T3, T4, T5)
9849    {
9850        #[inline]
9851        unsafe fn encode(
9852            self,
9853            encoder: &mut fidl::encoding::Encoder<'_, D>,
9854            offset: usize,
9855            depth: fidl::encoding::Depth,
9856        ) -> fidl::Result<()> {
9857            encoder.debug_check_bounds::<RoamConfirm>(offset);
9858            // Zero out padding regions. There's no need to apply masks
9859            // because the unmasked parts will be overwritten by fields.
9860            unsafe {
9861                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
9862                (ptr as *mut u64).write_unaligned(0);
9863            }
9864            // Write the fields.
9865            self.0.encode(encoder, offset + 0, depth)?;
9866            self.1.encode(encoder, offset + 6, depth)?;
9867            self.2.encode(encoder, offset + 8, depth)?;
9868            self.3.encode(encoder, offset + 9, depth)?;
9869            self.4.encode(encoder, offset + 10, depth)?;
9870            self.5.encode(encoder, offset + 16, depth)?;
9871            Ok(())
9872        }
9873    }
9874
9875    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamConfirm {
9876        #[inline(always)]
9877        fn new_empty() -> Self {
9878            Self {
9879                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
9880                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
9881                original_association_maintained: fidl::new_empty!(bool, D),
9882                target_bss_authenticated: fidl::new_empty!(bool, D),
9883                association_id: fidl::new_empty!(u16, D),
9884                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
9885            }
9886        }
9887
9888        #[inline]
9889        unsafe fn decode(
9890            &mut self,
9891            decoder: &mut fidl::encoding::Decoder<'_, D>,
9892            offset: usize,
9893            _depth: fidl::encoding::Depth,
9894        ) -> fidl::Result<()> {
9895            decoder.debug_check_bounds::<Self>(offset);
9896            // Verify that padding bytes are zero.
9897            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
9898            let padval = unsafe { (ptr as *const u64).read_unaligned() };
9899            let mask = 0xffffffff00000000u64;
9900            let maskedval = padval & mask;
9901            if maskedval != 0 {
9902                return Err(fidl::Error::NonZeroPadding {
9903                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
9904                });
9905            }
9906            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
9907            fidl::decode!(
9908                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
9909                D,
9910                &mut self.status_code,
9911                decoder,
9912                offset + 6,
9913                _depth
9914            )?;
9915            fidl::decode!(
9916                bool,
9917                D,
9918                &mut self.original_association_maintained,
9919                decoder,
9920                offset + 8,
9921                _depth
9922            )?;
9923            fidl::decode!(
9924                bool,
9925                D,
9926                &mut self.target_bss_authenticated,
9927                decoder,
9928                offset + 9,
9929                _depth
9930            )?;
9931            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 10, _depth)?;
9932            fidl::decode!(
9933                fidl::encoding::UnboundedVector<u8>,
9934                D,
9935                &mut self.association_ies,
9936                decoder,
9937                offset + 16,
9938                _depth
9939            )?;
9940            Ok(())
9941        }
9942    }
9943
9944    impl fidl::encoding::ValueTypeMarker for RoamRequest {
9945        type Borrowed<'a> = &'a Self;
9946        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9947            value
9948        }
9949    }
9950
9951    unsafe impl fidl::encoding::TypeMarker for RoamRequest {
9952        type Owned = Self;
9953
9954        #[inline(always)]
9955        fn inline_align(_context: fidl::encoding::Context) -> usize {
9956            8
9957        }
9958
9959        #[inline(always)]
9960        fn inline_size(_context: fidl::encoding::Context) -> usize {
9961            48
9962        }
9963    }
9964
9965    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamRequest, D>
9966        for &RoamRequest
9967    {
9968        #[inline]
9969        unsafe fn encode(
9970            self,
9971            encoder: &mut fidl::encoding::Encoder<'_, D>,
9972            offset: usize,
9973            _depth: fidl::encoding::Depth,
9974        ) -> fidl::Result<()> {
9975            encoder.debug_check_bounds::<RoamRequest>(offset);
9976            // Delegate to tuple encoding.
9977            fidl::encoding::Encode::<RoamRequest, D>::encode(
9978                (
9979                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
9980                ),
9981                encoder, offset, _depth
9982            )
9983        }
9984    }
9985    unsafe impl<
9986        D: fidl::encoding::ResourceDialect,
9987        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
9988    > fidl::encoding::Encode<RoamRequest, D> for (T0,)
9989    {
9990        #[inline]
9991        unsafe fn encode(
9992            self,
9993            encoder: &mut fidl::encoding::Encoder<'_, D>,
9994            offset: usize,
9995            depth: fidl::encoding::Depth,
9996        ) -> fidl::Result<()> {
9997            encoder.debug_check_bounds::<RoamRequest>(offset);
9998            // Zero out padding regions. There's no need to apply masks
9999            // because the unmasked parts will be overwritten by fields.
10000            // Write the fields.
10001            self.0.encode(encoder, offset + 0, depth)?;
10002            Ok(())
10003        }
10004    }
10005
10006    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamRequest {
10007        #[inline(always)]
10008        fn new_empty() -> Self {
10009            Self {
10010                selected_bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
10011            }
10012        }
10013
10014        #[inline]
10015        unsafe fn decode(
10016            &mut self,
10017            decoder: &mut fidl::encoding::Decoder<'_, D>,
10018            offset: usize,
10019            _depth: fidl::encoding::Depth,
10020        ) -> fidl::Result<()> {
10021            decoder.debug_check_bounds::<Self>(offset);
10022            // Verify that padding bytes are zero.
10023            fidl::decode!(
10024                fidl_fuchsia_wlan_common__common::BssDescription,
10025                D,
10026                &mut self.selected_bss,
10027                decoder,
10028                offset + 0,
10029                _depth
10030            )?;
10031            Ok(())
10032        }
10033    }
10034
10035    impl fidl::encoding::ValueTypeMarker for RoamResultIndication {
10036        type Borrowed<'a> = &'a Self;
10037        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10038            value
10039        }
10040    }
10041
10042    unsafe impl fidl::encoding::TypeMarker for RoamResultIndication {
10043        type Owned = Self;
10044
10045        #[inline(always)]
10046        fn inline_align(_context: fidl::encoding::Context) -> usize {
10047            8
10048        }
10049
10050        #[inline(always)]
10051        fn inline_size(_context: fidl::encoding::Context) -> usize {
10052            32
10053        }
10054    }
10055
10056    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamResultIndication, D>
10057        for &RoamResultIndication
10058    {
10059        #[inline]
10060        unsafe fn encode(
10061            self,
10062            encoder: &mut fidl::encoding::Encoder<'_, D>,
10063            offset: usize,
10064            _depth: fidl::encoding::Depth,
10065        ) -> fidl::Result<()> {
10066            encoder.debug_check_bounds::<RoamResultIndication>(offset);
10067            // Delegate to tuple encoding.
10068            fidl::encoding::Encode::<RoamResultIndication, D>::encode(
10069                (
10070                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
10071                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10072                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
10073                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.target_bss_authenticated),
10074                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
10075                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
10076                ),
10077                encoder, offset, _depth
10078            )
10079        }
10080    }
10081    unsafe impl<
10082        D: fidl::encoding::ResourceDialect,
10083        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10084        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
10085        T2: fidl::encoding::Encode<bool, D>,
10086        T3: fidl::encoding::Encode<bool, D>,
10087        T4: fidl::encoding::Encode<u16, D>,
10088        T5: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10089    > fidl::encoding::Encode<RoamResultIndication, D> for (T0, T1, T2, T3, T4, T5)
10090    {
10091        #[inline]
10092        unsafe fn encode(
10093            self,
10094            encoder: &mut fidl::encoding::Encoder<'_, D>,
10095            offset: usize,
10096            depth: fidl::encoding::Depth,
10097        ) -> fidl::Result<()> {
10098            encoder.debug_check_bounds::<RoamResultIndication>(offset);
10099            // Zero out padding regions. There's no need to apply masks
10100            // because the unmasked parts will be overwritten by fields.
10101            unsafe {
10102                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10103                (ptr as *mut u64).write_unaligned(0);
10104            }
10105            // Write the fields.
10106            self.0.encode(encoder, offset + 0, depth)?;
10107            self.1.encode(encoder, offset + 6, depth)?;
10108            self.2.encode(encoder, offset + 8, depth)?;
10109            self.3.encode(encoder, offset + 9, depth)?;
10110            self.4.encode(encoder, offset + 10, depth)?;
10111            self.5.encode(encoder, offset + 16, depth)?;
10112            Ok(())
10113        }
10114    }
10115
10116    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamResultIndication {
10117        #[inline(always)]
10118        fn new_empty() -> Self {
10119            Self {
10120                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10121                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
10122                original_association_maintained: fidl::new_empty!(bool, D),
10123                target_bss_authenticated: fidl::new_empty!(bool, D),
10124                association_id: fidl::new_empty!(u16, D),
10125                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10126            }
10127        }
10128
10129        #[inline]
10130        unsafe fn decode(
10131            &mut self,
10132            decoder: &mut fidl::encoding::Decoder<'_, D>,
10133            offset: usize,
10134            _depth: fidl::encoding::Depth,
10135        ) -> fidl::Result<()> {
10136            decoder.debug_check_bounds::<Self>(offset);
10137            // Verify that padding bytes are zero.
10138            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10139            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10140            let mask = 0xffffffff00000000u64;
10141            let maskedval = padval & mask;
10142            if maskedval != 0 {
10143                return Err(fidl::Error::NonZeroPadding {
10144                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10145                });
10146            }
10147            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
10148            fidl::decode!(
10149                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10150                D,
10151                &mut self.status_code,
10152                decoder,
10153                offset + 6,
10154                _depth
10155            )?;
10156            fidl::decode!(
10157                bool,
10158                D,
10159                &mut self.original_association_maintained,
10160                decoder,
10161                offset + 8,
10162                _depth
10163            )?;
10164            fidl::decode!(
10165                bool,
10166                D,
10167                &mut self.target_bss_authenticated,
10168                decoder,
10169                offset + 9,
10170                _depth
10171            )?;
10172            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 10, _depth)?;
10173            fidl::decode!(
10174                fidl::encoding::UnboundedVector<u8>,
10175                D,
10176                &mut self.association_ies,
10177                decoder,
10178                offset + 16,
10179                _depth
10180            )?;
10181            Ok(())
10182        }
10183    }
10184
10185    impl fidl::encoding::ValueTypeMarker for RoamStartIndication {
10186        type Borrowed<'a> = &'a Self;
10187        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10188            value
10189        }
10190    }
10191
10192    unsafe impl fidl::encoding::TypeMarker for RoamStartIndication {
10193        type Owned = Self;
10194
10195        #[inline(always)]
10196        fn inline_align(_context: fidl::encoding::Context) -> usize {
10197            8
10198        }
10199
10200        #[inline(always)]
10201        fn inline_size(_context: fidl::encoding::Context) -> usize {
10202            64
10203        }
10204    }
10205
10206    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamStartIndication, D>
10207        for &RoamStartIndication
10208    {
10209        #[inline]
10210        unsafe fn encode(
10211            self,
10212            encoder: &mut fidl::encoding::Encoder<'_, D>,
10213            offset: usize,
10214            _depth: fidl::encoding::Depth,
10215        ) -> fidl::Result<()> {
10216            encoder.debug_check_bounds::<RoamStartIndication>(offset);
10217            // Delegate to tuple encoding.
10218            fidl::encoding::Encode::<RoamStartIndication, D>::encode(
10219                (
10220                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
10221                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
10222                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
10223                ),
10224                encoder, offset, _depth
10225            )
10226        }
10227    }
10228    unsafe impl<
10229        D: fidl::encoding::ResourceDialect,
10230        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10231        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
10232        T2: fidl::encoding::Encode<bool, D>,
10233    > fidl::encoding::Encode<RoamStartIndication, D> for (T0, T1, T2)
10234    {
10235        #[inline]
10236        unsafe fn encode(
10237            self,
10238            encoder: &mut fidl::encoding::Encoder<'_, D>,
10239            offset: usize,
10240            depth: fidl::encoding::Depth,
10241        ) -> fidl::Result<()> {
10242            encoder.debug_check_bounds::<RoamStartIndication>(offset);
10243            // Zero out padding regions. There's no need to apply masks
10244            // because the unmasked parts will be overwritten by fields.
10245            unsafe {
10246                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
10247                (ptr as *mut u64).write_unaligned(0);
10248            }
10249            unsafe {
10250                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
10251                (ptr as *mut u64).write_unaligned(0);
10252            }
10253            // Write the fields.
10254            self.0.encode(encoder, offset + 0, depth)?;
10255            self.1.encode(encoder, offset + 8, depth)?;
10256            self.2.encode(encoder, offset + 56, depth)?;
10257            Ok(())
10258        }
10259    }
10260
10261    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamStartIndication {
10262        #[inline(always)]
10263        fn new_empty() -> Self {
10264            Self {
10265                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10266                selected_bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
10267                original_association_maintained: fidl::new_empty!(bool, D),
10268            }
10269        }
10270
10271        #[inline]
10272        unsafe fn decode(
10273            &mut self,
10274            decoder: &mut fidl::encoding::Decoder<'_, D>,
10275            offset: usize,
10276            _depth: fidl::encoding::Depth,
10277        ) -> fidl::Result<()> {
10278            decoder.debug_check_bounds::<Self>(offset);
10279            // Verify that padding bytes are zero.
10280            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
10281            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10282            let mask = 0xffff000000000000u64;
10283            let maskedval = padval & mask;
10284            if maskedval != 0 {
10285                return Err(fidl::Error::NonZeroPadding {
10286                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
10287                });
10288            }
10289            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
10290            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10291            let mask = 0xffffffffffffff00u64;
10292            let maskedval = padval & mask;
10293            if maskedval != 0 {
10294                return Err(fidl::Error::NonZeroPadding {
10295                    padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
10296                });
10297            }
10298            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
10299            fidl::decode!(
10300                fidl_fuchsia_wlan_common__common::BssDescription,
10301                D,
10302                &mut self.selected_bss,
10303                decoder,
10304                offset + 8,
10305                _depth
10306            )?;
10307            fidl::decode!(
10308                bool,
10309                D,
10310                &mut self.original_association_maintained,
10311                decoder,
10312                offset + 56,
10313                _depth
10314            )?;
10315            Ok(())
10316        }
10317    }
10318
10319    impl fidl::encoding::ValueTypeMarker for SaeFrame {
10320        type Borrowed<'a> = &'a Self;
10321        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10322            value
10323        }
10324    }
10325
10326    unsafe impl fidl::encoding::TypeMarker for SaeFrame {
10327        type Owned = Self;
10328
10329        #[inline(always)]
10330        fn inline_align(_context: fidl::encoding::Context) -> usize {
10331            8
10332        }
10333
10334        #[inline(always)]
10335        fn inline_size(_context: fidl::encoding::Context) -> usize {
10336            32
10337        }
10338    }
10339
10340    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFrame, D> for &SaeFrame {
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::<SaeFrame>(offset);
10349            // Delegate to tuple encoding.
10350            fidl::encoding::Encode::<SaeFrame, D>::encode(
10351                (
10352                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
10353                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10354                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.seq_num),
10355                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.sae_fields),
10356                ),
10357                encoder, offset, _depth
10358            )
10359        }
10360    }
10361    unsafe impl<
10362        D: fidl::encoding::ResourceDialect,
10363        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10364        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
10365        T2: fidl::encoding::Encode<u16, D>,
10366        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10367    > fidl::encoding::Encode<SaeFrame, D> for (T0, T1, T2, T3)
10368    {
10369        #[inline]
10370        unsafe fn encode(
10371            self,
10372            encoder: &mut fidl::encoding::Encoder<'_, D>,
10373            offset: usize,
10374            depth: fidl::encoding::Depth,
10375        ) -> fidl::Result<()> {
10376            encoder.debug_check_bounds::<SaeFrame>(offset);
10377            // Zero out padding regions. There's no need to apply masks
10378            // because the unmasked parts will be overwritten by fields.
10379            unsafe {
10380                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10381                (ptr as *mut u64).write_unaligned(0);
10382            }
10383            // Write the fields.
10384            self.0.encode(encoder, offset + 0, depth)?;
10385            self.1.encode(encoder, offset + 6, depth)?;
10386            self.2.encode(encoder, offset + 8, depth)?;
10387            self.3.encode(encoder, offset + 16, depth)?;
10388            Ok(())
10389        }
10390    }
10391
10392    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFrame {
10393        #[inline(always)]
10394        fn new_empty() -> Self {
10395            Self {
10396                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10397                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
10398                seq_num: fidl::new_empty!(u16, D),
10399                sae_fields: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10400            }
10401        }
10402
10403        #[inline]
10404        unsafe fn decode(
10405            &mut self,
10406            decoder: &mut fidl::encoding::Decoder<'_, D>,
10407            offset: usize,
10408            _depth: fidl::encoding::Depth,
10409        ) -> fidl::Result<()> {
10410            decoder.debug_check_bounds::<Self>(offset);
10411            // Verify that padding bytes are zero.
10412            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10413            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10414            let mask = 0xffffffffffff0000u64;
10415            let maskedval = padval & mask;
10416            if maskedval != 0 {
10417                return Err(fidl::Error::NonZeroPadding {
10418                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10419                });
10420            }
10421            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
10422            fidl::decode!(
10423                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10424                D,
10425                &mut self.status_code,
10426                decoder,
10427                offset + 6,
10428                _depth
10429            )?;
10430            fidl::decode!(u16, D, &mut self.seq_num, decoder, offset + 8, _depth)?;
10431            fidl::decode!(
10432                fidl::encoding::UnboundedVector<u8>,
10433                D,
10434                &mut self.sae_fields,
10435                decoder,
10436                offset + 16,
10437                _depth
10438            )?;
10439            Ok(())
10440        }
10441    }
10442
10443    impl fidl::encoding::ValueTypeMarker for SaeHandshakeIndication {
10444        type Borrowed<'a> = &'a Self;
10445        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10446            value
10447        }
10448    }
10449
10450    unsafe impl fidl::encoding::TypeMarker for SaeHandshakeIndication {
10451        type Owned = Self;
10452
10453        #[inline(always)]
10454        fn inline_align(_context: fidl::encoding::Context) -> usize {
10455            1
10456        }
10457
10458        #[inline(always)]
10459        fn inline_size(_context: fidl::encoding::Context) -> usize {
10460            6
10461        }
10462        #[inline(always)]
10463        fn encode_is_copy() -> bool {
10464            true
10465        }
10466
10467        #[inline(always)]
10468        fn decode_is_copy() -> bool {
10469            true
10470        }
10471    }
10472
10473    unsafe impl<D: fidl::encoding::ResourceDialect>
10474        fidl::encoding::Encode<SaeHandshakeIndication, D> for &SaeHandshakeIndication
10475    {
10476        #[inline]
10477        unsafe fn encode(
10478            self,
10479            encoder: &mut fidl::encoding::Encoder<'_, D>,
10480            offset: usize,
10481            _depth: fidl::encoding::Depth,
10482        ) -> fidl::Result<()> {
10483            encoder.debug_check_bounds::<SaeHandshakeIndication>(offset);
10484            unsafe {
10485                // Copy the object into the buffer.
10486                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
10487                (buf_ptr as *mut SaeHandshakeIndication)
10488                    .write_unaligned((self as *const SaeHandshakeIndication).read());
10489                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
10490                // done second because the memcpy will write garbage to these bytes.
10491            }
10492            Ok(())
10493        }
10494    }
10495    unsafe impl<
10496        D: fidl::encoding::ResourceDialect,
10497        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10498    > fidl::encoding::Encode<SaeHandshakeIndication, D> for (T0,)
10499    {
10500        #[inline]
10501        unsafe fn encode(
10502            self,
10503            encoder: &mut fidl::encoding::Encoder<'_, D>,
10504            offset: usize,
10505            depth: fidl::encoding::Depth,
10506        ) -> fidl::Result<()> {
10507            encoder.debug_check_bounds::<SaeHandshakeIndication>(offset);
10508            // Zero out padding regions. There's no need to apply masks
10509            // because the unmasked parts will be overwritten by fields.
10510            // Write the fields.
10511            self.0.encode(encoder, offset + 0, depth)?;
10512            Ok(())
10513        }
10514    }
10515
10516    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10517        for SaeHandshakeIndication
10518    {
10519        #[inline(always)]
10520        fn new_empty() -> Self {
10521            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
10522        }
10523
10524        #[inline]
10525        unsafe fn decode(
10526            &mut self,
10527            decoder: &mut fidl::encoding::Decoder<'_, D>,
10528            offset: usize,
10529            _depth: fidl::encoding::Depth,
10530        ) -> fidl::Result<()> {
10531            decoder.debug_check_bounds::<Self>(offset);
10532            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
10533            // Verify that padding bytes are zero.
10534            // Copy from the buffer into the object.
10535            unsafe {
10536                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
10537            }
10538            Ok(())
10539        }
10540    }
10541
10542    impl fidl::encoding::ValueTypeMarker for SaeHandshakeResponse {
10543        type Borrowed<'a> = &'a Self;
10544        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10545            value
10546        }
10547    }
10548
10549    unsafe impl fidl::encoding::TypeMarker for SaeHandshakeResponse {
10550        type Owned = Self;
10551
10552        #[inline(always)]
10553        fn inline_align(_context: fidl::encoding::Context) -> usize {
10554            2
10555        }
10556
10557        #[inline(always)]
10558        fn inline_size(_context: fidl::encoding::Context) -> usize {
10559            8
10560        }
10561    }
10562
10563    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeHandshakeResponse, D>
10564        for &SaeHandshakeResponse
10565    {
10566        #[inline]
10567        unsafe fn encode(
10568            self,
10569            encoder: &mut fidl::encoding::Encoder<'_, D>,
10570            offset: usize,
10571            _depth: fidl::encoding::Depth,
10572        ) -> fidl::Result<()> {
10573            encoder.debug_check_bounds::<SaeHandshakeResponse>(offset);
10574            // Delegate to tuple encoding.
10575            fidl::encoding::Encode::<SaeHandshakeResponse, D>::encode(
10576                (
10577                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
10578                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10579                ),
10580                encoder, offset, _depth
10581            )
10582        }
10583    }
10584    unsafe impl<
10585        D: fidl::encoding::ResourceDialect,
10586        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10587        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
10588    > fidl::encoding::Encode<SaeHandshakeResponse, D> for (T0, T1)
10589    {
10590        #[inline]
10591        unsafe fn encode(
10592            self,
10593            encoder: &mut fidl::encoding::Encoder<'_, D>,
10594            offset: usize,
10595            depth: fidl::encoding::Depth,
10596        ) -> fidl::Result<()> {
10597            encoder.debug_check_bounds::<SaeHandshakeResponse>(offset);
10598            // Zero out padding regions. There's no need to apply masks
10599            // because the unmasked parts will be overwritten by fields.
10600            // Write the fields.
10601            self.0.encode(encoder, offset + 0, depth)?;
10602            self.1.encode(encoder, offset + 6, depth)?;
10603            Ok(())
10604        }
10605    }
10606
10607    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeHandshakeResponse {
10608        #[inline(always)]
10609        fn new_empty() -> Self {
10610            Self {
10611                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10612                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
10613            }
10614        }
10615
10616        #[inline]
10617        unsafe fn decode(
10618            &mut self,
10619            decoder: &mut fidl::encoding::Decoder<'_, D>,
10620            offset: usize,
10621            _depth: fidl::encoding::Depth,
10622        ) -> fidl::Result<()> {
10623            decoder.debug_check_bounds::<Self>(offset);
10624            // Verify that padding bytes are zero.
10625            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
10626            fidl::decode!(
10627                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10628                D,
10629                &mut self.status_code,
10630                decoder,
10631                offset + 6,
10632                _depth
10633            )?;
10634            Ok(())
10635        }
10636    }
10637
10638    impl fidl::encoding::ValueTypeMarker for ScanEnd {
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 ScanEnd {
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            16
10656        }
10657    }
10658
10659    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanEnd, D> for &ScanEnd {
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::<ScanEnd>(offset);
10668            // Delegate to tuple encoding.
10669            fidl::encoding::Encode::<ScanEnd, D>::encode(
10670                (
10671                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
10672                    <ScanResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.code),
10673                ),
10674                encoder,
10675                offset,
10676                _depth,
10677            )
10678        }
10679    }
10680    unsafe impl<
10681        D: fidl::encoding::ResourceDialect,
10682        T0: fidl::encoding::Encode<u64, D>,
10683        T1: fidl::encoding::Encode<ScanResultCode, D>,
10684    > fidl::encoding::Encode<ScanEnd, D> for (T0, T1)
10685    {
10686        #[inline]
10687        unsafe fn encode(
10688            self,
10689            encoder: &mut fidl::encoding::Encoder<'_, D>,
10690            offset: usize,
10691            depth: fidl::encoding::Depth,
10692        ) -> fidl::Result<()> {
10693            encoder.debug_check_bounds::<ScanEnd>(offset);
10694            // Zero out padding regions. There's no need to apply masks
10695            // because the unmasked parts will be overwritten by fields.
10696            unsafe {
10697                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10698                (ptr as *mut u64).write_unaligned(0);
10699            }
10700            // Write the fields.
10701            self.0.encode(encoder, offset + 0, depth)?;
10702            self.1.encode(encoder, offset + 8, depth)?;
10703            Ok(())
10704        }
10705    }
10706
10707    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanEnd {
10708        #[inline(always)]
10709        fn new_empty() -> Self {
10710            Self { txn_id: fidl::new_empty!(u64, D), code: fidl::new_empty!(ScanResultCode, D) }
10711        }
10712
10713        #[inline]
10714        unsafe fn decode(
10715            &mut self,
10716            decoder: &mut fidl::encoding::Decoder<'_, D>,
10717            offset: usize,
10718            _depth: fidl::encoding::Depth,
10719        ) -> fidl::Result<()> {
10720            decoder.debug_check_bounds::<Self>(offset);
10721            // Verify that padding bytes are zero.
10722            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10723            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10724            let mask = 0xffffffff00000000u64;
10725            let maskedval = padval & mask;
10726            if maskedval != 0 {
10727                return Err(fidl::Error::NonZeroPadding {
10728                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10729                });
10730            }
10731            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
10732            fidl::decode!(ScanResultCode, D, &mut self.code, decoder, offset + 8, _depth)?;
10733            Ok(())
10734        }
10735    }
10736
10737    impl fidl::encoding::ValueTypeMarker for ScanRequest {
10738        type Borrowed<'a> = &'a Self;
10739        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10740            value
10741        }
10742    }
10743
10744    unsafe impl fidl::encoding::TypeMarker for ScanRequest {
10745        type Owned = Self;
10746
10747        #[inline(always)]
10748        fn inline_align(_context: fidl::encoding::Context) -> usize {
10749            8
10750        }
10751
10752        #[inline(always)]
10753        fn inline_size(_context: fidl::encoding::Context) -> usize {
10754            64
10755        }
10756    }
10757
10758    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanRequest, D>
10759        for &ScanRequest
10760    {
10761        #[inline]
10762        unsafe fn encode(
10763            self,
10764            encoder: &mut fidl::encoding::Encoder<'_, D>,
10765            offset: usize,
10766            _depth: fidl::encoding::Depth,
10767        ) -> fidl::Result<()> {
10768            encoder.debug_check_bounds::<ScanRequest>(offset);
10769            // Delegate to tuple encoding.
10770            fidl::encoding::Encode::<ScanRequest, D>::encode(
10771                (
10772                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
10773                    <ScanTypes as fidl::encoding::ValueTypeMarker>::borrow(&self.scan_type),
10774                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.channel_list),
10775                    <fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid_list),
10776                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.probe_delay),
10777                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.min_channel_time),
10778                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.max_channel_time),
10779                ),
10780                encoder, offset, _depth
10781            )
10782        }
10783    }
10784    unsafe impl<
10785        D: fidl::encoding::ResourceDialect,
10786        T0: fidl::encoding::Encode<u64, D>,
10787        T1: fidl::encoding::Encode<ScanTypes, D>,
10788        T2: fidl::encoding::Encode<fidl::encoding::Vector<u8, 256>, D>,
10789        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>,
10790        T4: fidl::encoding::Encode<u32, D>,
10791        T5: fidl::encoding::Encode<u32, D>,
10792        T6: fidl::encoding::Encode<u32, D>,
10793    > fidl::encoding::Encode<ScanRequest, D> for (T0, T1, T2, T3, T4, T5, T6)
10794    {
10795        #[inline]
10796        unsafe fn encode(
10797            self,
10798            encoder: &mut fidl::encoding::Encoder<'_, D>,
10799            offset: usize,
10800            depth: fidl::encoding::Depth,
10801        ) -> fidl::Result<()> {
10802            encoder.debug_check_bounds::<ScanRequest>(offset);
10803            // Zero out padding regions. There's no need to apply masks
10804            // because the unmasked parts will be overwritten by fields.
10805            unsafe {
10806                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10807                (ptr as *mut u64).write_unaligned(0);
10808            }
10809            unsafe {
10810                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
10811                (ptr as *mut u64).write_unaligned(0);
10812            }
10813            // Write the fields.
10814            self.0.encode(encoder, offset + 0, depth)?;
10815            self.1.encode(encoder, offset + 8, depth)?;
10816            self.2.encode(encoder, offset + 16, depth)?;
10817            self.3.encode(encoder, offset + 32, depth)?;
10818            self.4.encode(encoder, offset + 48, depth)?;
10819            self.5.encode(encoder, offset + 52, depth)?;
10820            self.6.encode(encoder, offset + 56, depth)?;
10821            Ok(())
10822        }
10823    }
10824
10825    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanRequest {
10826        #[inline(always)]
10827        fn new_empty() -> Self {
10828            Self {
10829                txn_id: fidl::new_empty!(u64, D),
10830                scan_type: fidl::new_empty!(ScanTypes, D),
10831                channel_list: fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D),
10832                ssid_list: fidl::new_empty!(
10833                    fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
10834                    D
10835                ),
10836                probe_delay: fidl::new_empty!(u32, D),
10837                min_channel_time: fidl::new_empty!(u32, D),
10838                max_channel_time: fidl::new_empty!(u32, D),
10839            }
10840        }
10841
10842        #[inline]
10843        unsafe fn decode(
10844            &mut self,
10845            decoder: &mut fidl::encoding::Decoder<'_, D>,
10846            offset: usize,
10847            _depth: fidl::encoding::Depth,
10848        ) -> fidl::Result<()> {
10849            decoder.debug_check_bounds::<Self>(offset);
10850            // Verify that padding bytes are zero.
10851            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10852            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10853            let mask = 0xffffffff00000000u64;
10854            let maskedval = padval & mask;
10855            if maskedval != 0 {
10856                return Err(fidl::Error::NonZeroPadding {
10857                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10858                });
10859            }
10860            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
10861            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10862            let mask = 0xffffffff00000000u64;
10863            let maskedval = padval & mask;
10864            if maskedval != 0 {
10865                return Err(fidl::Error::NonZeroPadding {
10866                    padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
10867                });
10868            }
10869            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
10870            fidl::decode!(ScanTypes, D, &mut self.scan_type, decoder, offset + 8, _depth)?;
10871            fidl::decode!(fidl::encoding::Vector<u8, 256>, D, &mut self.channel_list, decoder, offset + 16, _depth)?;
10872            fidl::decode!(
10873                fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
10874                D,
10875                &mut self.ssid_list,
10876                decoder,
10877                offset + 32,
10878                _depth
10879            )?;
10880            fidl::decode!(u32, D, &mut self.probe_delay, decoder, offset + 48, _depth)?;
10881            fidl::decode!(u32, D, &mut self.min_channel_time, decoder, offset + 52, _depth)?;
10882            fidl::decode!(u32, D, &mut self.max_channel_time, decoder, offset + 56, _depth)?;
10883            Ok(())
10884        }
10885    }
10886
10887    impl fidl::encoding::ValueTypeMarker for ScanResult {
10888        type Borrowed<'a> = &'a Self;
10889        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10890            value
10891        }
10892    }
10893
10894    unsafe impl fidl::encoding::TypeMarker for ScanResult {
10895        type Owned = Self;
10896
10897        #[inline(always)]
10898        fn inline_align(_context: fidl::encoding::Context) -> usize {
10899            8
10900        }
10901
10902        #[inline(always)]
10903        fn inline_size(_context: fidl::encoding::Context) -> usize {
10904            64
10905        }
10906    }
10907
10908    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanResult, D>
10909        for &ScanResult
10910    {
10911        #[inline]
10912        unsafe fn encode(
10913            self,
10914            encoder: &mut fidl::encoding::Encoder<'_, D>,
10915            offset: usize,
10916            _depth: fidl::encoding::Depth,
10917        ) -> fidl::Result<()> {
10918            encoder.debug_check_bounds::<ScanResult>(offset);
10919            // Delegate to tuple encoding.
10920            fidl::encoding::Encode::<ScanResult, D>::encode(
10921                (
10922                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
10923                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timestamp_nanos),
10924                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.bss),
10925                ),
10926                encoder, offset, _depth
10927            )
10928        }
10929    }
10930    unsafe impl<
10931        D: fidl::encoding::ResourceDialect,
10932        T0: fidl::encoding::Encode<u64, D>,
10933        T1: fidl::encoding::Encode<i64, D>,
10934        T2: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
10935    > fidl::encoding::Encode<ScanResult, D> for (T0, T1, T2)
10936    {
10937        #[inline]
10938        unsafe fn encode(
10939            self,
10940            encoder: &mut fidl::encoding::Encoder<'_, D>,
10941            offset: usize,
10942            depth: fidl::encoding::Depth,
10943        ) -> fidl::Result<()> {
10944            encoder.debug_check_bounds::<ScanResult>(offset);
10945            // Zero out padding regions. There's no need to apply masks
10946            // because the unmasked parts will be overwritten by fields.
10947            // Write the fields.
10948            self.0.encode(encoder, offset + 0, depth)?;
10949            self.1.encode(encoder, offset + 8, depth)?;
10950            self.2.encode(encoder, offset + 16, depth)?;
10951            Ok(())
10952        }
10953    }
10954
10955    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanResult {
10956        #[inline(always)]
10957        fn new_empty() -> Self {
10958            Self {
10959                txn_id: fidl::new_empty!(u64, D),
10960                timestamp_nanos: fidl::new_empty!(i64, D),
10961                bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
10962            }
10963        }
10964
10965        #[inline]
10966        unsafe fn decode(
10967            &mut self,
10968            decoder: &mut fidl::encoding::Decoder<'_, D>,
10969            offset: usize,
10970            _depth: fidl::encoding::Depth,
10971        ) -> fidl::Result<()> {
10972            decoder.debug_check_bounds::<Self>(offset);
10973            // Verify that padding bytes are zero.
10974            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
10975            fidl::decode!(i64, D, &mut self.timestamp_nanos, decoder, offset + 8, _depth)?;
10976            fidl::decode!(
10977                fidl_fuchsia_wlan_common__common::BssDescription,
10978                D,
10979                &mut self.bss,
10980                decoder,
10981                offset + 16,
10982                _depth
10983            )?;
10984            Ok(())
10985        }
10986    }
10987
10988    impl fidl::encoding::ValueTypeMarker for SetControlledPortRequest {
10989        type Borrowed<'a> = &'a Self;
10990        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10991            value
10992        }
10993    }
10994
10995    unsafe impl fidl::encoding::TypeMarker for SetControlledPortRequest {
10996        type Owned = Self;
10997
10998        #[inline(always)]
10999        fn inline_align(_context: fidl::encoding::Context) -> usize {
11000            4
11001        }
11002
11003        #[inline(always)]
11004        fn inline_size(_context: fidl::encoding::Context) -> usize {
11005            12
11006        }
11007    }
11008
11009    unsafe impl<D: fidl::encoding::ResourceDialect>
11010        fidl::encoding::Encode<SetControlledPortRequest, D> for &SetControlledPortRequest
11011    {
11012        #[inline]
11013        unsafe fn encode(
11014            self,
11015            encoder: &mut fidl::encoding::Encoder<'_, D>,
11016            offset: usize,
11017            _depth: fidl::encoding::Depth,
11018        ) -> fidl::Result<()> {
11019            encoder.debug_check_bounds::<SetControlledPortRequest>(offset);
11020            // Delegate to tuple encoding.
11021            fidl::encoding::Encode::<SetControlledPortRequest, D>::encode(
11022                (
11023                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
11024                        &self.peer_sta_address,
11025                    ),
11026                    <ControlledPortState as fidl::encoding::ValueTypeMarker>::borrow(&self.state),
11027                ),
11028                encoder,
11029                offset,
11030                _depth,
11031            )
11032        }
11033    }
11034    unsafe impl<
11035        D: fidl::encoding::ResourceDialect,
11036        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11037        T1: fidl::encoding::Encode<ControlledPortState, D>,
11038    > fidl::encoding::Encode<SetControlledPortRequest, D> for (T0, T1)
11039    {
11040        #[inline]
11041        unsafe fn encode(
11042            self,
11043            encoder: &mut fidl::encoding::Encoder<'_, D>,
11044            offset: usize,
11045            depth: fidl::encoding::Depth,
11046        ) -> fidl::Result<()> {
11047            encoder.debug_check_bounds::<SetControlledPortRequest>(offset);
11048            // Zero out padding regions. There's no need to apply masks
11049            // because the unmasked parts will be overwritten by fields.
11050            unsafe {
11051                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
11052                (ptr as *mut u32).write_unaligned(0);
11053            }
11054            // Write the fields.
11055            self.0.encode(encoder, offset + 0, depth)?;
11056            self.1.encode(encoder, offset + 8, depth)?;
11057            Ok(())
11058        }
11059    }
11060
11061    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11062        for SetControlledPortRequest
11063    {
11064        #[inline(always)]
11065        fn new_empty() -> Self {
11066            Self {
11067                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11068                state: fidl::new_empty!(ControlledPortState, D),
11069            }
11070        }
11071
11072        #[inline]
11073        unsafe fn decode(
11074            &mut self,
11075            decoder: &mut fidl::encoding::Decoder<'_, D>,
11076            offset: usize,
11077            _depth: fidl::encoding::Depth,
11078        ) -> fidl::Result<()> {
11079            decoder.debug_check_bounds::<Self>(offset);
11080            // Verify that padding bytes are zero.
11081            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
11082            let padval = unsafe { (ptr as *const u32).read_unaligned() };
11083            let mask = 0xffff0000u32;
11084            let maskedval = padval & mask;
11085            if maskedval != 0 {
11086                return Err(fidl::Error::NonZeroPadding {
11087                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
11088                });
11089            }
11090            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
11091            fidl::decode!(ControlledPortState, D, &mut self.state, decoder, offset + 8, _depth)?;
11092            Ok(())
11093        }
11094    }
11095
11096    impl fidl::encoding::ValueTypeMarker for SetKeyDescriptor {
11097        type Borrowed<'a> = &'a Self;
11098        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11099            value
11100        }
11101    }
11102
11103    unsafe impl fidl::encoding::TypeMarker for SetKeyDescriptor {
11104        type Owned = Self;
11105
11106        #[inline(always)]
11107        fn inline_align(_context: fidl::encoding::Context) -> usize {
11108            8
11109        }
11110
11111        #[inline(always)]
11112        fn inline_size(_context: fidl::encoding::Context) -> usize {
11113            48
11114        }
11115    }
11116
11117    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeyDescriptor, D>
11118        for &SetKeyDescriptor
11119    {
11120        #[inline]
11121        unsafe fn encode(
11122            self,
11123            encoder: &mut fidl::encoding::Encoder<'_, D>,
11124            offset: usize,
11125            _depth: fidl::encoding::Depth,
11126        ) -> fidl::Result<()> {
11127            encoder.debug_check_bounds::<SetKeyDescriptor>(offset);
11128            // Delegate to tuple encoding.
11129            fidl::encoding::Encode::<SetKeyDescriptor, D>::encode(
11130                (
11131                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
11132                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.key_id),
11133                    <KeyType as fidl::encoding::ValueTypeMarker>::borrow(&self.key_type),
11134                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.address),
11135                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.rsc),
11136                    <fidl::encoding::Array<u8, 3> as fidl::encoding::ValueTypeMarker>::borrow(&self.cipher_suite_oui),
11137                    <fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType as fidl::encoding::ValueTypeMarker>::borrow(&self.cipher_suite_type),
11138                ),
11139                encoder, offset, _depth
11140            )
11141        }
11142    }
11143    unsafe impl<
11144        D: fidl::encoding::ResourceDialect,
11145        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
11146        T1: fidl::encoding::Encode<u16, D>,
11147        T2: fidl::encoding::Encode<KeyType, D>,
11148        T3: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11149        T4: fidl::encoding::Encode<u64, D>,
11150        T5: fidl::encoding::Encode<fidl::encoding::Array<u8, 3>, D>,
11151        T6: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType, D>,
11152    > fidl::encoding::Encode<SetKeyDescriptor, D> for (T0, T1, T2, T3, T4, T5, T6)
11153    {
11154        #[inline]
11155        unsafe fn encode(
11156            self,
11157            encoder: &mut fidl::encoding::Encoder<'_, D>,
11158            offset: usize,
11159            depth: fidl::encoding::Depth,
11160        ) -> fidl::Result<()> {
11161            encoder.debug_check_bounds::<SetKeyDescriptor>(offset);
11162            // Zero out padding regions. There's no need to apply masks
11163            // because the unmasked parts will be overwritten by fields.
11164            unsafe {
11165                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
11166                (ptr as *mut u64).write_unaligned(0);
11167            }
11168            unsafe {
11169                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
11170                (ptr as *mut u64).write_unaligned(0);
11171            }
11172            unsafe {
11173                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(40);
11174                (ptr as *mut u64).write_unaligned(0);
11175            }
11176            // Write the fields.
11177            self.0.encode(encoder, offset + 0, depth)?;
11178            self.1.encode(encoder, offset + 16, depth)?;
11179            self.2.encode(encoder, offset + 20, depth)?;
11180            self.3.encode(encoder, offset + 24, depth)?;
11181            self.4.encode(encoder, offset + 32, depth)?;
11182            self.5.encode(encoder, offset + 40, depth)?;
11183            self.6.encode(encoder, offset + 44, depth)?;
11184            Ok(())
11185        }
11186    }
11187
11188    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeyDescriptor {
11189        #[inline(always)]
11190        fn new_empty() -> Self {
11191            Self {
11192                key: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
11193                key_id: fidl::new_empty!(u16, D),
11194                key_type: fidl::new_empty!(KeyType, D),
11195                address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11196                rsc: fidl::new_empty!(u64, D),
11197                cipher_suite_oui: fidl::new_empty!(fidl::encoding::Array<u8, 3>, D),
11198                cipher_suite_type: fidl::new_empty!(
11199                    fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
11200                    D
11201                ),
11202            }
11203        }
11204
11205        #[inline]
11206        unsafe fn decode(
11207            &mut self,
11208            decoder: &mut fidl::encoding::Decoder<'_, D>,
11209            offset: usize,
11210            _depth: fidl::encoding::Depth,
11211        ) -> fidl::Result<()> {
11212            decoder.debug_check_bounds::<Self>(offset);
11213            // Verify that padding bytes are zero.
11214            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
11215            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11216            let mask = 0xffff0000u64;
11217            let maskedval = padval & mask;
11218            if maskedval != 0 {
11219                return Err(fidl::Error::NonZeroPadding {
11220                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
11221                });
11222            }
11223            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
11224            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11225            let mask = 0xffff000000000000u64;
11226            let maskedval = padval & mask;
11227            if maskedval != 0 {
11228                return Err(fidl::Error::NonZeroPadding {
11229                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
11230                });
11231            }
11232            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(40) };
11233            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11234            let mask = 0xff000000u64;
11235            let maskedval = padval & mask;
11236            if maskedval != 0 {
11237                return Err(fidl::Error::NonZeroPadding {
11238                    padding_start: offset + 40 + ((mask as u64).trailing_zeros() / 8) as usize,
11239                });
11240            }
11241            fidl::decode!(
11242                fidl::encoding::UnboundedVector<u8>,
11243                D,
11244                &mut self.key,
11245                decoder,
11246                offset + 0,
11247                _depth
11248            )?;
11249            fidl::decode!(u16, D, &mut self.key_id, decoder, offset + 16, _depth)?;
11250            fidl::decode!(KeyType, D, &mut self.key_type, decoder, offset + 20, _depth)?;
11251            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.address, decoder, offset + 24, _depth)?;
11252            fidl::decode!(u64, D, &mut self.rsc, decoder, offset + 32, _depth)?;
11253            fidl::decode!(fidl::encoding::Array<u8, 3>, D, &mut self.cipher_suite_oui, decoder, offset + 40, _depth)?;
11254            fidl::decode!(
11255                fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
11256                D,
11257                &mut self.cipher_suite_type,
11258                decoder,
11259                offset + 44,
11260                _depth
11261            )?;
11262            Ok(())
11263        }
11264    }
11265
11266    impl fidl::encoding::ValueTypeMarker for SetKeyResult {
11267        type Borrowed<'a> = &'a Self;
11268        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11269            value
11270        }
11271    }
11272
11273    unsafe impl fidl::encoding::TypeMarker for SetKeyResult {
11274        type Owned = Self;
11275
11276        #[inline(always)]
11277        fn inline_align(_context: fidl::encoding::Context) -> usize {
11278            4
11279        }
11280
11281        #[inline(always)]
11282        fn inline_size(_context: fidl::encoding::Context) -> usize {
11283            8
11284        }
11285    }
11286
11287    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeyResult, D>
11288        for &SetKeyResult
11289    {
11290        #[inline]
11291        unsafe fn encode(
11292            self,
11293            encoder: &mut fidl::encoding::Encoder<'_, D>,
11294            offset: usize,
11295            _depth: fidl::encoding::Depth,
11296        ) -> fidl::Result<()> {
11297            encoder.debug_check_bounds::<SetKeyResult>(offset);
11298            unsafe {
11299                // Copy the object into the buffer.
11300                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
11301                (buf_ptr as *mut SetKeyResult)
11302                    .write_unaligned((self as *const SetKeyResult).read());
11303                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
11304                // done second because the memcpy will write garbage to these bytes.
11305                let padding_ptr = buf_ptr.offset(0) as *mut u32;
11306                let padding_mask = 0xffff0000u32;
11307                padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
11308            }
11309            Ok(())
11310        }
11311    }
11312    unsafe impl<
11313        D: fidl::encoding::ResourceDialect,
11314        T0: fidl::encoding::Encode<u16, D>,
11315        T1: fidl::encoding::Encode<i32, D>,
11316    > fidl::encoding::Encode<SetKeyResult, D> for (T0, T1)
11317    {
11318        #[inline]
11319        unsafe fn encode(
11320            self,
11321            encoder: &mut fidl::encoding::Encoder<'_, D>,
11322            offset: usize,
11323            depth: fidl::encoding::Depth,
11324        ) -> fidl::Result<()> {
11325            encoder.debug_check_bounds::<SetKeyResult>(offset);
11326            // Zero out padding regions. There's no need to apply masks
11327            // because the unmasked parts will be overwritten by fields.
11328            unsafe {
11329                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
11330                (ptr as *mut u32).write_unaligned(0);
11331            }
11332            // Write the fields.
11333            self.0.encode(encoder, offset + 0, depth)?;
11334            self.1.encode(encoder, offset + 4, depth)?;
11335            Ok(())
11336        }
11337    }
11338
11339    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeyResult {
11340        #[inline(always)]
11341        fn new_empty() -> Self {
11342            Self { key_id: fidl::new_empty!(u16, D), status: fidl::new_empty!(i32, D) }
11343        }
11344
11345        #[inline]
11346        unsafe fn decode(
11347            &mut self,
11348            decoder: &mut fidl::encoding::Decoder<'_, D>,
11349            offset: usize,
11350            _depth: fidl::encoding::Depth,
11351        ) -> fidl::Result<()> {
11352            decoder.debug_check_bounds::<Self>(offset);
11353            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
11354            // Verify that padding bytes are zero.
11355            let ptr = unsafe { buf_ptr.offset(0) };
11356            let padval = unsafe { (ptr as *const u32).read_unaligned() };
11357            let mask = 0xffff0000u32;
11358            let maskedval = padval & mask;
11359            if maskedval != 0 {
11360                return Err(fidl::Error::NonZeroPadding {
11361                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
11362                });
11363            }
11364            // Copy from the buffer into the object.
11365            unsafe {
11366                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
11367            }
11368            Ok(())
11369        }
11370    }
11371
11372    impl fidl::encoding::ValueTypeMarker for SetKeysConfirm {
11373        type Borrowed<'a> = &'a Self;
11374        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11375            value
11376        }
11377    }
11378
11379    unsafe impl fidl::encoding::TypeMarker for SetKeysConfirm {
11380        type Owned = Self;
11381
11382        #[inline(always)]
11383        fn inline_align(_context: fidl::encoding::Context) -> usize {
11384            8
11385        }
11386
11387        #[inline(always)]
11388        fn inline_size(_context: fidl::encoding::Context) -> usize {
11389            16
11390        }
11391    }
11392
11393    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeysConfirm, D>
11394        for &SetKeysConfirm
11395    {
11396        #[inline]
11397        unsafe fn encode(
11398            self,
11399            encoder: &mut fidl::encoding::Encoder<'_, D>,
11400            offset: usize,
11401            _depth: fidl::encoding::Depth,
11402        ) -> fidl::Result<()> {
11403            encoder.debug_check_bounds::<SetKeysConfirm>(offset);
11404            // Delegate to tuple encoding.
11405            fidl::encoding::Encode::<SetKeysConfirm, D>::encode(
11406                (
11407                    <fidl::encoding::UnboundedVector<SetKeyResult> as fidl::encoding::ValueTypeMarker>::borrow(&self.results),
11408                ),
11409                encoder, offset, _depth
11410            )
11411        }
11412    }
11413    unsafe impl<
11414        D: fidl::encoding::ResourceDialect,
11415        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<SetKeyResult>, D>,
11416    > fidl::encoding::Encode<SetKeysConfirm, D> for (T0,)
11417    {
11418        #[inline]
11419        unsafe fn encode(
11420            self,
11421            encoder: &mut fidl::encoding::Encoder<'_, D>,
11422            offset: usize,
11423            depth: fidl::encoding::Depth,
11424        ) -> fidl::Result<()> {
11425            encoder.debug_check_bounds::<SetKeysConfirm>(offset);
11426            // Zero out padding regions. There's no need to apply masks
11427            // because the unmasked parts will be overwritten by fields.
11428            // Write the fields.
11429            self.0.encode(encoder, offset + 0, depth)?;
11430            Ok(())
11431        }
11432    }
11433
11434    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeysConfirm {
11435        #[inline(always)]
11436        fn new_empty() -> Self {
11437            Self { results: fidl::new_empty!(fidl::encoding::UnboundedVector<SetKeyResult>, D) }
11438        }
11439
11440        #[inline]
11441        unsafe fn decode(
11442            &mut self,
11443            decoder: &mut fidl::encoding::Decoder<'_, D>,
11444            offset: usize,
11445            _depth: fidl::encoding::Depth,
11446        ) -> fidl::Result<()> {
11447            decoder.debug_check_bounds::<Self>(offset);
11448            // Verify that padding bytes are zero.
11449            fidl::decode!(
11450                fidl::encoding::UnboundedVector<SetKeyResult>,
11451                D,
11452                &mut self.results,
11453                decoder,
11454                offset + 0,
11455                _depth
11456            )?;
11457            Ok(())
11458        }
11459    }
11460
11461    impl fidl::encoding::ValueTypeMarker for SetKeysRequest {
11462        type Borrowed<'a> = &'a Self;
11463        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11464            value
11465        }
11466    }
11467
11468    unsafe impl fidl::encoding::TypeMarker for SetKeysRequest {
11469        type Owned = Self;
11470
11471        #[inline(always)]
11472        fn inline_align(_context: fidl::encoding::Context) -> usize {
11473            8
11474        }
11475
11476        #[inline(always)]
11477        fn inline_size(_context: fidl::encoding::Context) -> usize {
11478            16
11479        }
11480    }
11481
11482    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeysRequest, D>
11483        for &SetKeysRequest
11484    {
11485        #[inline]
11486        unsafe fn encode(
11487            self,
11488            encoder: &mut fidl::encoding::Encoder<'_, D>,
11489            offset: usize,
11490            _depth: fidl::encoding::Depth,
11491        ) -> fidl::Result<()> {
11492            encoder.debug_check_bounds::<SetKeysRequest>(offset);
11493            // Delegate to tuple encoding.
11494            fidl::encoding::Encode::<SetKeysRequest, D>::encode(
11495                (
11496                    <fidl::encoding::UnboundedVector<SetKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.keylist),
11497                ),
11498                encoder, offset, _depth
11499            )
11500        }
11501    }
11502    unsafe impl<
11503        D: fidl::encoding::ResourceDialect,
11504        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<SetKeyDescriptor>, D>,
11505    > fidl::encoding::Encode<SetKeysRequest, D> for (T0,)
11506    {
11507        #[inline]
11508        unsafe fn encode(
11509            self,
11510            encoder: &mut fidl::encoding::Encoder<'_, D>,
11511            offset: usize,
11512            depth: fidl::encoding::Depth,
11513        ) -> fidl::Result<()> {
11514            encoder.debug_check_bounds::<SetKeysRequest>(offset);
11515            // Zero out padding regions. There's no need to apply masks
11516            // because the unmasked parts will be overwritten by fields.
11517            // Write the fields.
11518            self.0.encode(encoder, offset + 0, depth)?;
11519            Ok(())
11520        }
11521    }
11522
11523    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeysRequest {
11524        #[inline(always)]
11525        fn new_empty() -> Self {
11526            Self { keylist: fidl::new_empty!(fidl::encoding::UnboundedVector<SetKeyDescriptor>, D) }
11527        }
11528
11529        #[inline]
11530        unsafe fn decode(
11531            &mut self,
11532            decoder: &mut fidl::encoding::Decoder<'_, D>,
11533            offset: usize,
11534            _depth: fidl::encoding::Depth,
11535        ) -> fidl::Result<()> {
11536            decoder.debug_check_bounds::<Self>(offset);
11537            // Verify that padding bytes are zero.
11538            fidl::decode!(
11539                fidl::encoding::UnboundedVector<SetKeyDescriptor>,
11540                D,
11541                &mut self.keylist,
11542                decoder,
11543                offset + 0,
11544                _depth
11545            )?;
11546            Ok(())
11547        }
11548    }
11549
11550    impl fidl::encoding::ValueTypeMarker for StartCaptureFramesRequest {
11551        type Borrowed<'a> = &'a Self;
11552        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11553            value
11554        }
11555    }
11556
11557    unsafe impl fidl::encoding::TypeMarker for StartCaptureFramesRequest {
11558        type Owned = Self;
11559
11560        #[inline(always)]
11561        fn inline_align(_context: fidl::encoding::Context) -> usize {
11562            4
11563        }
11564
11565        #[inline(always)]
11566        fn inline_size(_context: fidl::encoding::Context) -> usize {
11567            4
11568        }
11569    }
11570
11571    unsafe impl<D: fidl::encoding::ResourceDialect>
11572        fidl::encoding::Encode<StartCaptureFramesRequest, D> for &StartCaptureFramesRequest
11573    {
11574        #[inline]
11575        unsafe fn encode(
11576            self,
11577            encoder: &mut fidl::encoding::Encoder<'_, D>,
11578            offset: usize,
11579            _depth: fidl::encoding::Depth,
11580        ) -> fidl::Result<()> {
11581            encoder.debug_check_bounds::<StartCaptureFramesRequest>(offset);
11582            // Delegate to tuple encoding.
11583            fidl::encoding::Encode::<StartCaptureFramesRequest, D>::encode(
11584                (<MgmtFrameCaptureFlags as fidl::encoding::ValueTypeMarker>::borrow(
11585                    &self.mgmt_frame_flags,
11586                ),),
11587                encoder,
11588                offset,
11589                _depth,
11590            )
11591        }
11592    }
11593    unsafe impl<
11594        D: fidl::encoding::ResourceDialect,
11595        T0: fidl::encoding::Encode<MgmtFrameCaptureFlags, D>,
11596    > fidl::encoding::Encode<StartCaptureFramesRequest, D> for (T0,)
11597    {
11598        #[inline]
11599        unsafe fn encode(
11600            self,
11601            encoder: &mut fidl::encoding::Encoder<'_, D>,
11602            offset: usize,
11603            depth: fidl::encoding::Depth,
11604        ) -> fidl::Result<()> {
11605            encoder.debug_check_bounds::<StartCaptureFramesRequest>(offset);
11606            // Zero out padding regions. There's no need to apply masks
11607            // because the unmasked parts will be overwritten by fields.
11608            // Write the fields.
11609            self.0.encode(encoder, offset + 0, depth)?;
11610            Ok(())
11611        }
11612    }
11613
11614    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11615        for StartCaptureFramesRequest
11616    {
11617        #[inline(always)]
11618        fn new_empty() -> Self {
11619            Self { mgmt_frame_flags: fidl::new_empty!(MgmtFrameCaptureFlags, D) }
11620        }
11621
11622        #[inline]
11623        unsafe fn decode(
11624            &mut self,
11625            decoder: &mut fidl::encoding::Decoder<'_, D>,
11626            offset: usize,
11627            _depth: fidl::encoding::Depth,
11628        ) -> fidl::Result<()> {
11629            decoder.debug_check_bounds::<Self>(offset);
11630            // Verify that padding bytes are zero.
11631            fidl::decode!(
11632                MgmtFrameCaptureFlags,
11633                D,
11634                &mut self.mgmt_frame_flags,
11635                decoder,
11636                offset + 0,
11637                _depth
11638            )?;
11639            Ok(())
11640        }
11641    }
11642
11643    impl fidl::encoding::ValueTypeMarker for StartCaptureFramesResponse {
11644        type Borrowed<'a> = &'a Self;
11645        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11646            value
11647        }
11648    }
11649
11650    unsafe impl fidl::encoding::TypeMarker for StartCaptureFramesResponse {
11651        type Owned = Self;
11652
11653        #[inline(always)]
11654        fn inline_align(_context: fidl::encoding::Context) -> usize {
11655            4
11656        }
11657
11658        #[inline(always)]
11659        fn inline_size(_context: fidl::encoding::Context) -> usize {
11660            8
11661        }
11662    }
11663
11664    unsafe impl<D: fidl::encoding::ResourceDialect>
11665        fidl::encoding::Encode<StartCaptureFramesResponse, D> for &StartCaptureFramesResponse
11666    {
11667        #[inline]
11668        unsafe fn encode(
11669            self,
11670            encoder: &mut fidl::encoding::Encoder<'_, D>,
11671            offset: usize,
11672            _depth: fidl::encoding::Depth,
11673        ) -> fidl::Result<()> {
11674            encoder.debug_check_bounds::<StartCaptureFramesResponse>(offset);
11675            // Delegate to tuple encoding.
11676            fidl::encoding::Encode::<StartCaptureFramesResponse, D>::encode(
11677                (
11678                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
11679                    <MgmtFrameCaptureFlags as fidl::encoding::ValueTypeMarker>::borrow(
11680                        &self.supported_mgmt_frames,
11681                    ),
11682                ),
11683                encoder,
11684                offset,
11685                _depth,
11686            )
11687        }
11688    }
11689    unsafe impl<
11690        D: fidl::encoding::ResourceDialect,
11691        T0: fidl::encoding::Encode<i32, D>,
11692        T1: fidl::encoding::Encode<MgmtFrameCaptureFlags, D>,
11693    > fidl::encoding::Encode<StartCaptureFramesResponse, D> for (T0, T1)
11694    {
11695        #[inline]
11696        unsafe fn encode(
11697            self,
11698            encoder: &mut fidl::encoding::Encoder<'_, D>,
11699            offset: usize,
11700            depth: fidl::encoding::Depth,
11701        ) -> fidl::Result<()> {
11702            encoder.debug_check_bounds::<StartCaptureFramesResponse>(offset);
11703            // Zero out padding regions. There's no need to apply masks
11704            // because the unmasked parts will be overwritten by fields.
11705            // Write the fields.
11706            self.0.encode(encoder, offset + 0, depth)?;
11707            self.1.encode(encoder, offset + 4, depth)?;
11708            Ok(())
11709        }
11710    }
11711
11712    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11713        for StartCaptureFramesResponse
11714    {
11715        #[inline(always)]
11716        fn new_empty() -> Self {
11717            Self {
11718                status: fidl::new_empty!(i32, D),
11719                supported_mgmt_frames: fidl::new_empty!(MgmtFrameCaptureFlags, D),
11720            }
11721        }
11722
11723        #[inline]
11724        unsafe fn decode(
11725            &mut self,
11726            decoder: &mut fidl::encoding::Decoder<'_, D>,
11727            offset: usize,
11728            _depth: fidl::encoding::Depth,
11729        ) -> fidl::Result<()> {
11730            decoder.debug_check_bounds::<Self>(offset);
11731            // Verify that padding bytes are zero.
11732            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
11733            fidl::decode!(
11734                MgmtFrameCaptureFlags,
11735                D,
11736                &mut self.supported_mgmt_frames,
11737                decoder,
11738                offset + 4,
11739                _depth
11740            )?;
11741            Ok(())
11742        }
11743    }
11744
11745    impl fidl::encoding::ValueTypeMarker for StartConfirm {
11746        type Borrowed<'a> = &'a Self;
11747        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11748            value
11749        }
11750    }
11751
11752    unsafe impl fidl::encoding::TypeMarker for StartConfirm {
11753        type Owned = Self;
11754
11755        #[inline(always)]
11756        fn inline_align(_context: fidl::encoding::Context) -> usize {
11757            4
11758        }
11759
11760        #[inline(always)]
11761        fn inline_size(_context: fidl::encoding::Context) -> usize {
11762            4
11763        }
11764    }
11765
11766    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartConfirm, D>
11767        for &StartConfirm
11768    {
11769        #[inline]
11770        unsafe fn encode(
11771            self,
11772            encoder: &mut fidl::encoding::Encoder<'_, D>,
11773            offset: usize,
11774            _depth: fidl::encoding::Depth,
11775        ) -> fidl::Result<()> {
11776            encoder.debug_check_bounds::<StartConfirm>(offset);
11777            // Delegate to tuple encoding.
11778            fidl::encoding::Encode::<StartConfirm, D>::encode(
11779                (<StartResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),),
11780                encoder,
11781                offset,
11782                _depth,
11783            )
11784        }
11785    }
11786    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartResultCode, D>>
11787        fidl::encoding::Encode<StartConfirm, D> for (T0,)
11788    {
11789        #[inline]
11790        unsafe fn encode(
11791            self,
11792            encoder: &mut fidl::encoding::Encoder<'_, D>,
11793            offset: usize,
11794            depth: fidl::encoding::Depth,
11795        ) -> fidl::Result<()> {
11796            encoder.debug_check_bounds::<StartConfirm>(offset);
11797            // Zero out padding regions. There's no need to apply masks
11798            // because the unmasked parts will be overwritten by fields.
11799            // Write the fields.
11800            self.0.encode(encoder, offset + 0, depth)?;
11801            Ok(())
11802        }
11803    }
11804
11805    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartConfirm {
11806        #[inline(always)]
11807        fn new_empty() -> Self {
11808            Self { result_code: fidl::new_empty!(StartResultCode, D) }
11809        }
11810
11811        #[inline]
11812        unsafe fn decode(
11813            &mut self,
11814            decoder: &mut fidl::encoding::Decoder<'_, D>,
11815            offset: usize,
11816            _depth: fidl::encoding::Depth,
11817        ) -> fidl::Result<()> {
11818            decoder.debug_check_bounds::<Self>(offset);
11819            // Verify that padding bytes are zero.
11820            fidl::decode!(StartResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
11821            Ok(())
11822        }
11823    }
11824
11825    impl fidl::encoding::ValueTypeMarker for StartRequest {
11826        type Borrowed<'a> = &'a Self;
11827        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11828            value
11829        }
11830    }
11831
11832    unsafe impl fidl::encoding::TypeMarker for StartRequest {
11833        type Owned = Self;
11834
11835        #[inline(always)]
11836        fn inline_align(_context: fidl::encoding::Context) -> usize {
11837            8
11838        }
11839
11840        #[inline(always)]
11841        fn inline_size(_context: fidl::encoding::Context) -> usize {
11842            96
11843        }
11844    }
11845
11846    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartRequest, D>
11847        for &StartRequest
11848    {
11849        #[inline]
11850        unsafe fn encode(
11851            self,
11852            encoder: &mut fidl::encoding::Encoder<'_, D>,
11853            offset: usize,
11854            _depth: fidl::encoding::Depth,
11855        ) -> fidl::Result<()> {
11856            encoder.debug_check_bounds::<StartRequest>(offset);
11857            // Delegate to tuple encoding.
11858            fidl::encoding::Encode::<StartRequest, D>::encode(
11859                (
11860                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid),
11861                    <fidl_fuchsia_wlan_common__common::BssType as fidl::encoding::ValueTypeMarker>::borrow(&self.bss_type),
11862                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.beacon_period),
11863                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.dtim_period),
11864                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.channel),
11865                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
11866                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
11867                    <Country as fidl::encoding::ValueTypeMarker>::borrow(&self.country),
11868                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.mesh_id),
11869                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>> as fidl::encoding::ValueTypeMarker>::borrow(&self.rsne),
11870                    <fidl_fuchsia_wlan_common__common::WlanPhyType as fidl::encoding::ValueTypeMarker>::borrow(&self.phy),
11871                    <fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth as fidl::encoding::ValueTypeMarker>::borrow(&self.channel_bandwidth),
11872                ),
11873                encoder, offset, _depth
11874            )
11875        }
11876    }
11877    unsafe impl<
11878        D: fidl::encoding::ResourceDialect,
11879        T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
11880        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssType, D>,
11881        T2: fidl::encoding::Encode<u16, D>,
11882        T3: fidl::encoding::Encode<u8, D>,
11883        T4: fidl::encoding::Encode<u8, D>,
11884        T5: fidl::encoding::Encode<u16, D>,
11885        T6: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
11886        T7: fidl::encoding::Encode<Country, D>,
11887        T8: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
11888        T9: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>, D>,
11889        T10: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::WlanPhyType, D>,
11890        T11: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth, D>,
11891    > fidl::encoding::Encode<StartRequest, D>
11892        for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
11893    {
11894        #[inline]
11895        unsafe fn encode(
11896            self,
11897            encoder: &mut fidl::encoding::Encoder<'_, D>,
11898            offset: usize,
11899            depth: fidl::encoding::Depth,
11900        ) -> fidl::Result<()> {
11901            encoder.debug_check_bounds::<StartRequest>(offset);
11902            // Zero out padding regions. There's no need to apply masks
11903            // because the unmasked parts will be overwritten by fields.
11904            unsafe {
11905                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
11906                (ptr as *mut u64).write_unaligned(0);
11907            }
11908            unsafe {
11909                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(48);
11910                (ptr as *mut u64).write_unaligned(0);
11911            }
11912            // Write the fields.
11913            self.0.encode(encoder, offset + 0, depth)?;
11914            self.1.encode(encoder, offset + 16, depth)?;
11915            self.2.encode(encoder, offset + 20, depth)?;
11916            self.3.encode(encoder, offset + 22, depth)?;
11917            self.4.encode(encoder, offset + 23, depth)?;
11918            self.5.encode(encoder, offset + 24, depth)?;
11919            self.6.encode(encoder, offset + 32, depth)?;
11920            self.7.encode(encoder, offset + 48, depth)?;
11921            self.8.encode(encoder, offset + 56, depth)?;
11922            self.9.encode(encoder, offset + 72, depth)?;
11923            self.10.encode(encoder, offset + 88, depth)?;
11924            self.11.encode(encoder, offset + 92, depth)?;
11925            Ok(())
11926        }
11927    }
11928
11929    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartRequest {
11930        #[inline(always)]
11931        fn new_empty() -> Self {
11932            Self {
11933                ssid: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
11934                bss_type: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssType, D),
11935                beacon_period: fidl::new_empty!(u16, D),
11936                dtim_period: fidl::new_empty!(u8, D),
11937                channel: fidl::new_empty!(u8, D),
11938                capability_info: fidl::new_empty!(u16, D),
11939                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
11940                country: fidl::new_empty!(Country, D),
11941                mesh_id: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
11942                rsne: fidl::new_empty!(
11943                    fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
11944                    D
11945                ),
11946                phy: fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanPhyType, D),
11947                channel_bandwidth: fidl::new_empty!(
11948                    fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth,
11949                    D
11950                ),
11951            }
11952        }
11953
11954        #[inline]
11955        unsafe fn decode(
11956            &mut self,
11957            decoder: &mut fidl::encoding::Decoder<'_, D>,
11958            offset: usize,
11959            _depth: fidl::encoding::Depth,
11960        ) -> fidl::Result<()> {
11961            decoder.debug_check_bounds::<Self>(offset);
11962            // Verify that padding bytes are zero.
11963            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
11964            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11965            let mask = 0xffffffffffff0000u64;
11966            let maskedval = padval & mask;
11967            if maskedval != 0 {
11968                return Err(fidl::Error::NonZeroPadding {
11969                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
11970                });
11971            }
11972            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(48) };
11973            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11974            let mask = 0xffffffffff000000u64;
11975            let maskedval = padval & mask;
11976            if maskedval != 0 {
11977                return Err(fidl::Error::NonZeroPadding {
11978                    padding_start: offset + 48 + ((mask as u64).trailing_zeros() / 8) as usize,
11979                });
11980            }
11981            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.ssid, decoder, offset + 0, _depth)?;
11982            fidl::decode!(
11983                fidl_fuchsia_wlan_common__common::BssType,
11984                D,
11985                &mut self.bss_type,
11986                decoder,
11987                offset + 16,
11988                _depth
11989            )?;
11990            fidl::decode!(u16, D, &mut self.beacon_period, decoder, offset + 20, _depth)?;
11991            fidl::decode!(u8, D, &mut self.dtim_period, decoder, offset + 22, _depth)?;
11992            fidl::decode!(u8, D, &mut self.channel, decoder, offset + 23, _depth)?;
11993            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 24, _depth)?;
11994            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 32, _depth)?;
11995            fidl::decode!(Country, D, &mut self.country, decoder, offset + 48, _depth)?;
11996            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.mesh_id, decoder, offset + 56, _depth)?;
11997            fidl::decode!(
11998                fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
11999                D,
12000                &mut self.rsne,
12001                decoder,
12002                offset + 72,
12003                _depth
12004            )?;
12005            fidl::decode!(
12006                fidl_fuchsia_wlan_common__common::WlanPhyType,
12007                D,
12008                &mut self.phy,
12009                decoder,
12010                offset + 88,
12011                _depth
12012            )?;
12013            fidl::decode!(
12014                fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth,
12015                D,
12016                &mut self.channel_bandwidth,
12017                decoder,
12018                offset + 92,
12019                _depth
12020            )?;
12021            Ok(())
12022        }
12023    }
12024
12025    impl fidl::encoding::ValueTypeMarker for StopConfirm {
12026        type Borrowed<'a> = &'a Self;
12027        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12028            value
12029        }
12030    }
12031
12032    unsafe impl fidl::encoding::TypeMarker for StopConfirm {
12033        type Owned = Self;
12034
12035        #[inline(always)]
12036        fn inline_align(_context: fidl::encoding::Context) -> usize {
12037            4
12038        }
12039
12040        #[inline(always)]
12041        fn inline_size(_context: fidl::encoding::Context) -> usize {
12042            4
12043        }
12044    }
12045
12046    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopConfirm, D>
12047        for &StopConfirm
12048    {
12049        #[inline]
12050        unsafe fn encode(
12051            self,
12052            encoder: &mut fidl::encoding::Encoder<'_, D>,
12053            offset: usize,
12054            _depth: fidl::encoding::Depth,
12055        ) -> fidl::Result<()> {
12056            encoder.debug_check_bounds::<StopConfirm>(offset);
12057            // Delegate to tuple encoding.
12058            fidl::encoding::Encode::<StopConfirm, D>::encode(
12059                (<StopResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),),
12060                encoder,
12061                offset,
12062                _depth,
12063            )
12064        }
12065    }
12066    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopResultCode, D>>
12067        fidl::encoding::Encode<StopConfirm, D> for (T0,)
12068    {
12069        #[inline]
12070        unsafe fn encode(
12071            self,
12072            encoder: &mut fidl::encoding::Encoder<'_, D>,
12073            offset: usize,
12074            depth: fidl::encoding::Depth,
12075        ) -> fidl::Result<()> {
12076            encoder.debug_check_bounds::<StopConfirm>(offset);
12077            // Zero out padding regions. There's no need to apply masks
12078            // because the unmasked parts will be overwritten by fields.
12079            // Write the fields.
12080            self.0.encode(encoder, offset + 0, depth)?;
12081            Ok(())
12082        }
12083    }
12084
12085    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopConfirm {
12086        #[inline(always)]
12087        fn new_empty() -> Self {
12088            Self { result_code: fidl::new_empty!(StopResultCode, D) }
12089        }
12090
12091        #[inline]
12092        unsafe fn decode(
12093            &mut self,
12094            decoder: &mut fidl::encoding::Decoder<'_, D>,
12095            offset: usize,
12096            _depth: fidl::encoding::Depth,
12097        ) -> fidl::Result<()> {
12098            decoder.debug_check_bounds::<Self>(offset);
12099            // Verify that padding bytes are zero.
12100            fidl::decode!(StopResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
12101            Ok(())
12102        }
12103    }
12104
12105    impl fidl::encoding::ValueTypeMarker for StopRequest {
12106        type Borrowed<'a> = &'a Self;
12107        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12108            value
12109        }
12110    }
12111
12112    unsafe impl fidl::encoding::TypeMarker for StopRequest {
12113        type Owned = Self;
12114
12115        #[inline(always)]
12116        fn inline_align(_context: fidl::encoding::Context) -> usize {
12117            8
12118        }
12119
12120        #[inline(always)]
12121        fn inline_size(_context: fidl::encoding::Context) -> usize {
12122            16
12123        }
12124    }
12125
12126    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopRequest, D>
12127        for &StopRequest
12128    {
12129        #[inline]
12130        unsafe fn encode(
12131            self,
12132            encoder: &mut fidl::encoding::Encoder<'_, D>,
12133            offset: usize,
12134            _depth: fidl::encoding::Depth,
12135        ) -> fidl::Result<()> {
12136            encoder.debug_check_bounds::<StopRequest>(offset);
12137            // Delegate to tuple encoding.
12138            fidl::encoding::Encode::<StopRequest, D>::encode(
12139                (<fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(
12140                    &self.ssid,
12141                ),),
12142                encoder,
12143                offset,
12144                _depth,
12145            )
12146        }
12147    }
12148    unsafe impl<
12149        D: fidl::encoding::ResourceDialect,
12150        T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
12151    > fidl::encoding::Encode<StopRequest, D> for (T0,)
12152    {
12153        #[inline]
12154        unsafe fn encode(
12155            self,
12156            encoder: &mut fidl::encoding::Encoder<'_, D>,
12157            offset: usize,
12158            depth: fidl::encoding::Depth,
12159        ) -> fidl::Result<()> {
12160            encoder.debug_check_bounds::<StopRequest>(offset);
12161            // Zero out padding regions. There's no need to apply masks
12162            // because the unmasked parts will be overwritten by fields.
12163            // Write the fields.
12164            self.0.encode(encoder, offset + 0, depth)?;
12165            Ok(())
12166        }
12167    }
12168
12169    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopRequest {
12170        #[inline(always)]
12171        fn new_empty() -> Self {
12172            Self { ssid: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D) }
12173        }
12174
12175        #[inline]
12176        unsafe fn decode(
12177            &mut self,
12178            decoder: &mut fidl::encoding::Decoder<'_, D>,
12179            offset: usize,
12180            _depth: fidl::encoding::Depth,
12181        ) -> fidl::Result<()> {
12182            decoder.debug_check_bounds::<Self>(offset);
12183            // Verify that padding bytes are zero.
12184            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.ssid, decoder, offset + 0, _depth)?;
12185            Ok(())
12186        }
12187    }
12188
12189    impl fidl::encoding::ValueTypeMarker for WmmParameter {
12190        type Borrowed<'a> = &'a Self;
12191        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12192            value
12193        }
12194    }
12195
12196    unsafe impl fidl::encoding::TypeMarker for WmmParameter {
12197        type Owned = Self;
12198
12199        #[inline(always)]
12200        fn inline_align(_context: fidl::encoding::Context) -> usize {
12201            1
12202        }
12203
12204        #[inline(always)]
12205        fn inline_size(_context: fidl::encoding::Context) -> usize {
12206            18
12207        }
12208        #[inline(always)]
12209        fn encode_is_copy() -> bool {
12210            true
12211        }
12212
12213        #[inline(always)]
12214        fn decode_is_copy() -> bool {
12215            true
12216        }
12217    }
12218
12219    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WmmParameter, D>
12220        for &WmmParameter
12221    {
12222        #[inline]
12223        unsafe fn encode(
12224            self,
12225            encoder: &mut fidl::encoding::Encoder<'_, D>,
12226            offset: usize,
12227            _depth: fidl::encoding::Depth,
12228        ) -> fidl::Result<()> {
12229            encoder.debug_check_bounds::<WmmParameter>(offset);
12230            unsafe {
12231                // Copy the object into the buffer.
12232                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
12233                (buf_ptr as *mut WmmParameter)
12234                    .write_unaligned((self as *const WmmParameter).read());
12235                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
12236                // done second because the memcpy will write garbage to these bytes.
12237            }
12238            Ok(())
12239        }
12240    }
12241    unsafe impl<
12242        D: fidl::encoding::ResourceDialect,
12243        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 18>, D>,
12244    > fidl::encoding::Encode<WmmParameter, D> for (T0,)
12245    {
12246        #[inline]
12247        unsafe fn encode(
12248            self,
12249            encoder: &mut fidl::encoding::Encoder<'_, D>,
12250            offset: usize,
12251            depth: fidl::encoding::Depth,
12252        ) -> fidl::Result<()> {
12253            encoder.debug_check_bounds::<WmmParameter>(offset);
12254            // Zero out padding regions. There's no need to apply masks
12255            // because the unmasked parts will be overwritten by fields.
12256            // Write the fields.
12257            self.0.encode(encoder, offset + 0, depth)?;
12258            Ok(())
12259        }
12260    }
12261
12262    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WmmParameter {
12263        #[inline(always)]
12264        fn new_empty() -> Self {
12265            Self { bytes: fidl::new_empty!(fidl::encoding::Array<u8, 18>, D) }
12266        }
12267
12268        #[inline]
12269        unsafe fn decode(
12270            &mut self,
12271            decoder: &mut fidl::encoding::Decoder<'_, D>,
12272            offset: usize,
12273            _depth: fidl::encoding::Depth,
12274        ) -> fidl::Result<()> {
12275            decoder.debug_check_bounds::<Self>(offset);
12276            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
12277            // Verify that padding bytes are zero.
12278            // Copy from the buffer into the object.
12279            unsafe {
12280                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 18);
12281            }
12282            Ok(())
12283        }
12284    }
12285
12286    impl fidl::encoding::ValueTypeMarker for GetIfaceHistogramStatsResponse {
12287        type Borrowed<'a> = &'a Self;
12288        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12289            value
12290        }
12291    }
12292
12293    unsafe impl fidl::encoding::TypeMarker for GetIfaceHistogramStatsResponse {
12294        type Owned = Self;
12295
12296        #[inline(always)]
12297        fn inline_align(_context: fidl::encoding::Context) -> usize {
12298            8
12299        }
12300
12301        #[inline(always)]
12302        fn inline_size(_context: fidl::encoding::Context) -> usize {
12303            16
12304        }
12305    }
12306
12307    unsafe impl<D: fidl::encoding::ResourceDialect>
12308        fidl::encoding::Encode<GetIfaceHistogramStatsResponse, D>
12309        for &GetIfaceHistogramStatsResponse
12310    {
12311        #[inline]
12312        unsafe fn encode(
12313            self,
12314            encoder: &mut fidl::encoding::Encoder<'_, D>,
12315            offset: usize,
12316            _depth: fidl::encoding::Depth,
12317        ) -> fidl::Result<()> {
12318            encoder.debug_check_bounds::<GetIfaceHistogramStatsResponse>(offset);
12319            encoder.write_num::<u64>(self.ordinal(), offset);
12320            match self {
12321            GetIfaceHistogramStatsResponse::Stats(ref val) => {
12322                fidl::encoding::encode_in_envelope::<fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D>(
12323                    <fidl_fuchsia_wlan_stats__common::IfaceHistogramStats as fidl::encoding::ValueTypeMarker>::borrow(val),
12324                    encoder, offset + 8, _depth
12325                )
12326            }
12327            GetIfaceHistogramStatsResponse::ErrorStatus(ref val) => {
12328                fidl::encoding::encode_in_envelope::<i32, D>(
12329                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
12330                    encoder, offset + 8, _depth
12331                )
12332            }
12333        }
12334        }
12335    }
12336
12337    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12338        for GetIfaceHistogramStatsResponse
12339    {
12340        #[inline(always)]
12341        fn new_empty() -> Self {
12342            Self::Stats(fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D))
12343        }
12344
12345        #[inline]
12346        unsafe fn decode(
12347            &mut self,
12348            decoder: &mut fidl::encoding::Decoder<'_, D>,
12349            offset: usize,
12350            mut depth: fidl::encoding::Depth,
12351        ) -> fidl::Result<()> {
12352            decoder.debug_check_bounds::<Self>(offset);
12353            #[allow(unused_variables)]
12354            let next_out_of_line = decoder.next_out_of_line();
12355            let handles_before = decoder.remaining_handles();
12356            let (ordinal, inlined, num_bytes, num_handles) =
12357                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12358
12359            let member_inline_size = match ordinal {
12360            1 => <fidl_fuchsia_wlan_stats__common::IfaceHistogramStats as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12361            2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12362            _ => return Err(fidl::Error::UnknownUnionTag),
12363        };
12364
12365            if inlined != (member_inline_size <= 4) {
12366                return Err(fidl::Error::InvalidInlineBitInEnvelope);
12367            }
12368            let _inner_offset;
12369            if inlined {
12370                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
12371                _inner_offset = offset + 8;
12372            } else {
12373                depth.increment()?;
12374                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12375            }
12376            match ordinal {
12377                1 => {
12378                    #[allow(irrefutable_let_patterns)]
12379                    if let GetIfaceHistogramStatsResponse::Stats(_) = self {
12380                        // Do nothing, read the value into the object
12381                    } else {
12382                        // Initialize `self` to the right variant
12383                        *self = GetIfaceHistogramStatsResponse::Stats(fidl::new_empty!(
12384                            fidl_fuchsia_wlan_stats__common::IfaceHistogramStats,
12385                            D
12386                        ));
12387                    }
12388                    #[allow(irrefutable_let_patterns)]
12389                    if let GetIfaceHistogramStatsResponse::Stats(ref mut val) = self {
12390                        fidl::decode!(
12391                            fidl_fuchsia_wlan_stats__common::IfaceHistogramStats,
12392                            D,
12393                            val,
12394                            decoder,
12395                            _inner_offset,
12396                            depth
12397                        )?;
12398                    } else {
12399                        unreachable!()
12400                    }
12401                }
12402                2 => {
12403                    #[allow(irrefutable_let_patterns)]
12404                    if let GetIfaceHistogramStatsResponse::ErrorStatus(_) = self {
12405                        // Do nothing, read the value into the object
12406                    } else {
12407                        // Initialize `self` to the right variant
12408                        *self =
12409                            GetIfaceHistogramStatsResponse::ErrorStatus(fidl::new_empty!(i32, D));
12410                    }
12411                    #[allow(irrefutable_let_patterns)]
12412                    if let GetIfaceHistogramStatsResponse::ErrorStatus(ref mut val) = self {
12413                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
12414                    } else {
12415                        unreachable!()
12416                    }
12417                }
12418                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12419            }
12420            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12421                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12422            }
12423            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12424                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12425            }
12426            Ok(())
12427        }
12428    }
12429
12430    impl fidl::encoding::ValueTypeMarker for GetIfaceStatsResponse {
12431        type Borrowed<'a> = &'a Self;
12432        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12433            value
12434        }
12435    }
12436
12437    unsafe impl fidl::encoding::TypeMarker for GetIfaceStatsResponse {
12438        type Owned = Self;
12439
12440        #[inline(always)]
12441        fn inline_align(_context: fidl::encoding::Context) -> usize {
12442            8
12443        }
12444
12445        #[inline(always)]
12446        fn inline_size(_context: fidl::encoding::Context) -> usize {
12447            16
12448        }
12449    }
12450
12451    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<GetIfaceStatsResponse, D>
12452        for &GetIfaceStatsResponse
12453    {
12454        #[inline]
12455        unsafe fn encode(
12456            self,
12457            encoder: &mut fidl::encoding::Encoder<'_, D>,
12458            offset: usize,
12459            _depth: fidl::encoding::Depth,
12460        ) -> fidl::Result<()> {
12461            encoder.debug_check_bounds::<GetIfaceStatsResponse>(offset);
12462            encoder.write_num::<u64>(self.ordinal(), offset);
12463            match self {
12464            GetIfaceStatsResponse::Stats(ref val) => {
12465                fidl::encoding::encode_in_envelope::<fidl_fuchsia_wlan_stats__common::IfaceStats, D>(
12466                    <fidl_fuchsia_wlan_stats__common::IfaceStats as fidl::encoding::ValueTypeMarker>::borrow(val),
12467                    encoder, offset + 8, _depth
12468                )
12469            }
12470            GetIfaceStatsResponse::ErrorStatus(ref val) => {
12471                fidl::encoding::encode_in_envelope::<i32, D>(
12472                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
12473                    encoder, offset + 8, _depth
12474                )
12475            }
12476        }
12477        }
12478    }
12479
12480    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GetIfaceStatsResponse {
12481        #[inline(always)]
12482        fn new_empty() -> Self {
12483            Self::Stats(fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceStats, D))
12484        }
12485
12486        #[inline]
12487        unsafe fn decode(
12488            &mut self,
12489            decoder: &mut fidl::encoding::Decoder<'_, D>,
12490            offset: usize,
12491            mut depth: fidl::encoding::Depth,
12492        ) -> fidl::Result<()> {
12493            decoder.debug_check_bounds::<Self>(offset);
12494            #[allow(unused_variables)]
12495            let next_out_of_line = decoder.next_out_of_line();
12496            let handles_before = decoder.remaining_handles();
12497            let (ordinal, inlined, num_bytes, num_handles) =
12498                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12499
12500            let member_inline_size = match ordinal {
12501            1 => <fidl_fuchsia_wlan_stats__common::IfaceStats as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12502            2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12503            _ => return Err(fidl::Error::UnknownUnionTag),
12504        };
12505
12506            if inlined != (member_inline_size <= 4) {
12507                return Err(fidl::Error::InvalidInlineBitInEnvelope);
12508            }
12509            let _inner_offset;
12510            if inlined {
12511                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
12512                _inner_offset = offset + 8;
12513            } else {
12514                depth.increment()?;
12515                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12516            }
12517            match ordinal {
12518                1 => {
12519                    #[allow(irrefutable_let_patterns)]
12520                    if let GetIfaceStatsResponse::Stats(_) = self {
12521                        // Do nothing, read the value into the object
12522                    } else {
12523                        // Initialize `self` to the right variant
12524                        *self = GetIfaceStatsResponse::Stats(fidl::new_empty!(
12525                            fidl_fuchsia_wlan_stats__common::IfaceStats,
12526                            D
12527                        ));
12528                    }
12529                    #[allow(irrefutable_let_patterns)]
12530                    if let GetIfaceStatsResponse::Stats(ref mut val) = self {
12531                        fidl::decode!(
12532                            fidl_fuchsia_wlan_stats__common::IfaceStats,
12533                            D,
12534                            val,
12535                            decoder,
12536                            _inner_offset,
12537                            depth
12538                        )?;
12539                    } else {
12540                        unreachable!()
12541                    }
12542                }
12543                2 => {
12544                    #[allow(irrefutable_let_patterns)]
12545                    if let GetIfaceStatsResponse::ErrorStatus(_) = self {
12546                        // Do nothing, read the value into the object
12547                    } else {
12548                        // Initialize `self` to the right variant
12549                        *self = GetIfaceStatsResponse::ErrorStatus(fidl::new_empty!(i32, D));
12550                    }
12551                    #[allow(irrefutable_let_patterns)]
12552                    if let GetIfaceStatsResponse::ErrorStatus(ref mut val) = self {
12553                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
12554                    } else {
12555                        unreachable!()
12556                    }
12557                }
12558                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12559            }
12560            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12561                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12562            }
12563            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12564                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12565            }
12566            Ok(())
12567        }
12568    }
12569}