Skip to main content

fidl_fuchsia_wlan_mlme__common/
fidl_fuchsia_wlan_mlme__common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11/// WFA WMM v1.2, 2.2.1
12pub type QosInfo = u8;
13
14pub const MAX_SSIDS_PER_SCAN_REQUEST: u32 = 32;
15
16/// WFA WMM v1.2, 2.2.2 Table 5
17/// Length of the WMM Parameter Element body. This does not include IE and vendor IE headers,
18/// and only includes the QoS Info, reserved, and AC parameters fields.
19pub const WMM_PARAM_LEN: u8 = 18;
20
21pub const COUNTRY_ENVIRON_ALL: u8 = 32;
22
23pub const COUNTRY_ENVIRON_INDOOR: u8 = 73;
24
25pub const COUNTRY_ENVIRON_NON_COUNTRY: u8 = 88;
26
27pub const COUNTRY_ENVIRON_OUTDOOR: u8 = 79;
28
29bitflags! {
30    /// Bits used to request management frame subtypes to be captured. Also used in
31    /// StartCaptureFramesResponse to indicate what management frames are supported.
32    ///
33    /// These values are set at `1 << MgmtFrameSubtypeValue`
34    /// See IEEE Std 802.11-2016, 9.2.4.1.3, for value of each management frame subtype
35    #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
36    pub struct MgmtFrameCaptureFlags: u32 {
37        const ASSOC_REQ = 1;
38        const ASSOC_RESP = 2;
39        const REASSOC_REQ = 4;
40        const REASSOC_RESP = 8;
41        const PROBE_REQ = 16;
42        const PROBE_RESP = 32;
43        const TIMING_AD = 64;
44        const BEACON = 256;
45        const ATIM = 512;
46        const DISASSOC = 1024;
47        const AUTH = 2048;
48        const DEAUTH = 4096;
49        const ACTION = 8192;
50        const ACTION_NO_ACK = 16384;
51    }
52}
53
54impl MgmtFrameCaptureFlags {}
55
56#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
57#[repr(u32)]
58pub enum AssociateResultCode {
59    Success = 0,
60    RefusedReasonUnspecified = 1,
61    RefusedNotAuthenticated = 2,
62    RefusedCapabilitiesMismatch = 3,
63    RefusedExternalReason = 4,
64    RefusedApOutOfMemory = 5,
65    RefusedBasicRatesMismatch = 6,
66    RejectedEmergencyServicesNotSupported = 7,
67    RefusedTemporarily = 8,
68}
69
70impl AssociateResultCode {
71    #[inline]
72    pub fn from_primitive(prim: u32) -> Option<Self> {
73        match prim {
74            0 => Some(Self::Success),
75            1 => Some(Self::RefusedReasonUnspecified),
76            2 => Some(Self::RefusedNotAuthenticated),
77            3 => Some(Self::RefusedCapabilitiesMismatch),
78            4 => Some(Self::RefusedExternalReason),
79            5 => Some(Self::RefusedApOutOfMemory),
80            6 => Some(Self::RefusedBasicRatesMismatch),
81            7 => Some(Self::RejectedEmergencyServicesNotSupported),
82            8 => Some(Self::RefusedTemporarily),
83            _ => None,
84        }
85    }
86
87    #[inline]
88    pub const fn into_primitive(self) -> u32 {
89        self as u32
90    }
91}
92
93#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
94#[repr(u32)]
95pub enum AuthenticateResultCode {
96    Success = 0,
97    Refused = 1,
98    AntiCloggingTokenRequired = 2,
99    FiniteCyclicGroupNotSupported = 3,
100    AuthenticationRejected = 4,
101    AuthFailureTimeout = 5,
102}
103
104impl AuthenticateResultCode {
105    #[inline]
106    pub fn from_primitive(prim: u32) -> Option<Self> {
107        match prim {
108            0 => Some(Self::Success),
109            1 => Some(Self::Refused),
110            2 => Some(Self::AntiCloggingTokenRequired),
111            3 => Some(Self::FiniteCyclicGroupNotSupported),
112            4 => Some(Self::AuthenticationRejected),
113            5 => Some(Self::AuthFailureTimeout),
114            _ => None,
115        }
116    }
117
118    #[inline]
119    pub const fn into_primitive(self) -> u32 {
120        self as u32
121    }
122}
123
124#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
125#[repr(u32)]
126pub enum AuthenticationTypes {
127    OpenSystem = 1,
128    SharedKey = 2,
129    FastBssTransition = 3,
130    Sae = 4,
131}
132
133impl AuthenticationTypes {
134    #[inline]
135    pub fn from_primitive(prim: u32) -> Option<Self> {
136        match prim {
137            1 => Some(Self::OpenSystem),
138            2 => Some(Self::SharedKey),
139            3 => Some(Self::FastBssTransition),
140            4 => Some(Self::Sae),
141            _ => None,
142        }
143    }
144
145    #[inline]
146    pub const fn into_primitive(self) -> u32 {
147        self as u32
148    }
149}
150
151#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
152#[repr(u32)]
153pub enum ControlledPortState {
154    Closed = 0,
155    Open = 1,
156}
157
158impl ControlledPortState {
159    #[inline]
160    pub fn from_primitive(prim: u32) -> Option<Self> {
161        match prim {
162            0 => Some(Self::Closed),
163            1 => Some(Self::Open),
164            _ => None,
165        }
166    }
167
168    #[inline]
169    pub const fn into_primitive(self) -> u32 {
170        self as u32
171    }
172}
173
174#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
175#[repr(u32)]
176pub enum EapolResultCode {
177    Success = 0,
178    TransmissionFailure = 1,
179}
180
181impl EapolResultCode {
182    #[inline]
183    pub fn from_primitive(prim: u32) -> Option<Self> {
184        match prim {
185            0 => Some(Self::Success),
186            1 => Some(Self::TransmissionFailure),
187            _ => None,
188        }
189    }
190
191    #[inline]
192    pub const fn into_primitive(self) -> u32 {
193        self as u32
194    }
195}
196
197#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
198#[repr(u32)]
199pub enum KeyType {
200    Group = 1,
201    Pairwise = 2,
202    PeerKey = 3,
203    Igtk = 4,
204}
205
206impl KeyType {
207    #[inline]
208    pub fn from_primitive(prim: u32) -> Option<Self> {
209        match prim {
210            1 => Some(Self::Group),
211            2 => Some(Self::Pairwise),
212            3 => Some(Self::PeerKey),
213            4 => Some(Self::Igtk),
214            _ => None,
215        }
216    }
217
218    #[inline]
219    pub const fn into_primitive(self) -> u32 {
220        self as u32
221    }
222}
223
224#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
225#[repr(u32)]
226pub enum ScanResultCode {
227    Success = 0,
228    NotSupported = 1,
229    InvalidArgs = 2,
230    InternalError = 3,
231    ShouldWait = 4,
232    CanceledByDriverOrFirmware = 5,
233}
234
235impl ScanResultCode {
236    #[inline]
237    pub fn from_primitive(prim: u32) -> Option<Self> {
238        match prim {
239            0 => Some(Self::Success),
240            1 => Some(Self::NotSupported),
241            2 => Some(Self::InvalidArgs),
242            3 => Some(Self::InternalError),
243            4 => Some(Self::ShouldWait),
244            5 => Some(Self::CanceledByDriverOrFirmware),
245            _ => None,
246        }
247    }
248
249    #[inline]
250    pub const fn into_primitive(self) -> u32 {
251        self as u32
252    }
253}
254
255#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
256#[repr(u32)]
257pub enum ScanTypes {
258    Active = 1,
259    Passive = 2,
260}
261
262impl ScanTypes {
263    #[inline]
264    pub fn from_primitive(prim: u32) -> Option<Self> {
265        match prim {
266            1 => Some(Self::Active),
267            2 => Some(Self::Passive),
268            _ => None,
269        }
270    }
271
272    #[inline]
273    pub const fn into_primitive(self) -> u32 {
274        self as u32
275    }
276}
277
278#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
279#[repr(u32)]
280pub enum StartResultCode {
281    Success = 0,
282    BssAlreadyStartedOrJoined = 1,
283    ResetRequiredBeforeStart = 2,
284    NotSupported = 3,
285    InternalError = 4,
286}
287
288impl StartResultCode {
289    #[inline]
290    pub fn from_primitive(prim: u32) -> Option<Self> {
291        match prim {
292            0 => Some(Self::Success),
293            1 => Some(Self::BssAlreadyStartedOrJoined),
294            2 => Some(Self::ResetRequiredBeforeStart),
295            3 => Some(Self::NotSupported),
296            4 => Some(Self::InternalError),
297            _ => None,
298        }
299    }
300
301    #[inline]
302    pub const fn into_primitive(self) -> u32 {
303        self as u32
304    }
305}
306
307#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
308#[repr(u32)]
309pub enum StopResultCode {
310    Success = 0,
311    BssAlreadyStopped = 1,
312    InternalError = 2,
313}
314
315impl StopResultCode {
316    #[inline]
317    pub fn from_primitive(prim: u32) -> Option<Self> {
318        match prim {
319            0 => Some(Self::Success),
320            1 => Some(Self::BssAlreadyStopped),
321            2 => Some(Self::InternalError),
322            _ => None,
323        }
324    }
325
326    #[inline]
327    pub const fn into_primitive(self) -> u32 {
328        self as u32
329    }
330}
331
332#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
333pub struct AssociateIndication {
334    pub peer_sta_address: [u8; 6],
335    pub capability_info: u16,
336    pub listen_interval: u16,
337    pub ssid: Option<Vec<u8>>,
338    pub rates: Vec<u8>,
339    pub rsne: Option<Vec<u8>>,
340}
341
342impl fidl::Persistable for AssociateIndication {}
343
344#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
345pub struct AssociateResponse {
346    pub peer_sta_address: [u8; 6],
347    pub result_code: AssociateResultCode,
348    pub association_id: u16,
349    pub capability_info: u16,
350    pub rates: Vec<u8>,
351}
352
353impl fidl::Persistable for AssociateResponse {}
354
355#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
356pub struct AuthenticateIndication {
357    pub peer_sta_address: [u8; 6],
358    pub auth_type: AuthenticationTypes,
359}
360
361impl fidl::Persistable for AuthenticateIndication {}
362
363#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
364pub struct AuthenticateResponse {
365    pub peer_sta_address: [u8; 6],
366    pub result_code: AuthenticateResultCode,
367}
368
369impl fidl::Persistable for AuthenticateResponse {}
370
371#[derive(Clone, Debug, PartialEq)]
372pub struct BandCapability {
373    /// The values of this struct apply to the band indicated in this field.
374    pub band: fidl_fuchsia_wlan_ieee80211__common::WlanBand,
375    /// Basic rates supported in units of 500 kbit/s (as defined in
376    /// IEEE Std 802.11-2016, 9.4.2.3), e.g., 0x02 represents 1 Mbps.
377    /// The value returned by this type indicates all the non-HT rates
378    /// the device supports transmitting and receiving.
379    pub basic_rates: Vec<u8>,
380    pub ht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>>,
381    pub vht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>>,
382    /// A list of operating channels considered valid by hardware, in the context of
383    /// regulatory information known to the device driver, at the time of its
384    /// construction during iface creation. In this context, an operating channel
385    /// means a channel which APs may transmit Beacon frames on in the current
386    /// regulatory domain.
387    ///
388    /// This list should be used to determine efficacy of subsequent requests to
389    /// scan a subset of channels using the iface, or to determine which operating
390    /// channel to use when starting an AP.
391    pub operating_channels: Vec<u8>,
392}
393
394impl fidl::Persistable for BandCapability {}
395
396#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
397pub struct CapturedFrameResult {
398    pub frame: Vec<u8>,
399}
400
401impl fidl::Persistable for CapturedFrameResult {}
402
403#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
404pub struct ConnectConfirm {
405    pub peer_sta_address: [u8; 6],
406    pub result_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
407    pub association_id: u16,
408    pub association_ies: Vec<u8>,
409}
410
411impl fidl::Persistable for ConnectConfirm {}
412
413#[derive(Clone, Debug, PartialEq)]
414pub struct ConnectRequest {
415    pub selected_bss: fidl_fuchsia_wlan_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, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
552pub struct MlmeGetApfPacketFilterEnabledResponse {
553    pub enabled: bool,
554}
555
556impl fidl::Persistable for MlmeGetApfPacketFilterEnabledResponse {}
557
558#[derive(Clone, Debug, PartialEq)]
559pub struct MlmeGetSignalReportResponse {
560    pub resp: fidl_fuchsia_wlan_stats__common::SignalReport,
561}
562
563impl fidl::Persistable for MlmeGetSignalReportResponse {}
564
565#[derive(Clone, Debug, PartialEq)]
566pub struct MlmeQueryTelemetrySupportResponse {
567    pub resp: fidl_fuchsia_wlan_stats__common::TelemetrySupport,
568}
569
570impl fidl::Persistable for MlmeQueryTelemetrySupportResponse {}
571
572#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
573pub struct MlmeReadApfPacketFilterDataResponse {
574    pub memory: Vec<u8>,
575}
576
577impl fidl::Persistable for MlmeReadApfPacketFilterDataResponse {}
578
579#[derive(Clone, Debug, PartialEq)]
580pub struct MinstrelListResponse {
581    pub peers: fidl_fuchsia_wlan_minstrel__common::Peers,
582}
583
584impl fidl::Persistable for MinstrelListResponse {}
585
586#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
587#[repr(C)]
588pub struct MinstrelStatsRequest {
589    pub peer_addr: [u8; 6],
590}
591
592impl fidl::Persistable for MinstrelStatsRequest {}
593
594#[derive(Clone, Debug, PartialEq)]
595pub struct MinstrelStatsResponse {
596    pub peer: Option<Box<fidl_fuchsia_wlan_minstrel__common::Peer>>,
597}
598
599impl fidl::Persistable for MinstrelStatsResponse {}
600
601#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
602pub struct MlmeAssociateIndRequest {
603    pub ind: AssociateIndication,
604}
605
606impl fidl::Persistable for MlmeAssociateIndRequest {}
607
608#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
609pub struct MlmeAssociateRespRequest {
610    pub resp: AssociateResponse,
611}
612
613impl fidl::Persistable for MlmeAssociateRespRequest {}
614
615#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
616pub struct MlmeAuthenticateIndRequest {
617    pub ind: AuthenticateIndication,
618}
619
620impl fidl::Persistable for MlmeAuthenticateIndRequest {}
621
622#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
623pub struct MlmeAuthenticateRespRequest {
624    pub resp: AuthenticateResponse,
625}
626
627impl fidl::Persistable for MlmeAuthenticateRespRequest {}
628
629#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
630pub struct MlmeConnectConfRequest {
631    pub resp: ConnectConfirm,
632}
633
634impl fidl::Persistable for MlmeConnectConfRequest {}
635
636#[derive(Clone, Debug, PartialEq)]
637pub struct MlmeConnectReqRequest {
638    pub req: ConnectRequest,
639}
640
641impl fidl::Persistable for MlmeConnectReqRequest {}
642
643#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
644#[repr(C)]
645pub struct MlmeDeauthenticateConfRequest {
646    pub resp: DeauthenticateConfirm,
647}
648
649impl fidl::Persistable for MlmeDeauthenticateConfRequest {}
650
651#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
652pub struct MlmeDeauthenticateIndRequest {
653    pub ind: DeauthenticateIndication,
654}
655
656impl fidl::Persistable for MlmeDeauthenticateIndRequest {}
657
658#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
659pub struct MlmeDeauthenticateReqRequest {
660    pub req: DeauthenticateRequest,
661}
662
663impl fidl::Persistable for MlmeDeauthenticateReqRequest {}
664
665#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
666pub struct MlmeDeleteKeysReqRequest {
667    pub req: DeleteKeysRequest,
668}
669
670impl fidl::Persistable for MlmeDeleteKeysReqRequest {}
671
672#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
673#[repr(C)]
674pub struct MlmeDisassociateConfRequest {
675    pub resp: DisassociateConfirm,
676}
677
678impl fidl::Persistable for MlmeDisassociateConfRequest {}
679
680#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
681pub struct MlmeDisassociateIndRequest {
682    pub ind: DisassociateIndication,
683}
684
685impl fidl::Persistable for MlmeDisassociateIndRequest {}
686
687#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
688pub struct MlmeDisassociateReqRequest {
689    pub req: DisassociateRequest,
690}
691
692impl fidl::Persistable for MlmeDisassociateReqRequest {}
693
694#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
695pub struct MlmeEapolConfRequest {
696    pub resp: EapolConfirm,
697}
698
699impl fidl::Persistable for MlmeEapolConfRequest {}
700
701#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
702pub struct MlmeEapolIndRequest {
703    pub ind: EapolIndication,
704}
705
706impl fidl::Persistable for MlmeEapolIndRequest {}
707
708#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
709pub struct MlmeEapolReqRequest {
710    pub req: EapolRequest,
711}
712
713impl fidl::Persistable for MlmeEapolReqRequest {}
714
715#[derive(Clone, Debug, PartialEq)]
716pub struct MlmeFinalizeAssociationReqRequest {
717    pub negotiated_capabilities: NegotiatedCapabilities,
718}
719
720impl fidl::Persistable for MlmeFinalizeAssociationReqRequest {}
721
722#[derive(Clone, Debug, PartialEq)]
723pub struct MlmeGetIfaceHistogramStatsResponse {
724    pub resp: GetIfaceHistogramStatsResponse,
725}
726
727impl fidl::Persistable for MlmeGetIfaceHistogramStatsResponse {}
728
729#[derive(Clone, Debug, PartialEq)]
730pub struct MlmeGetIfaceStatsResponse {
731    pub resp: GetIfaceStatsResponse,
732}
733
734impl fidl::Persistable for MlmeGetIfaceStatsResponse {}
735
736#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
737#[repr(C)]
738pub struct MlmeGetMinstrelStatsRequest {
739    pub req: MinstrelStatsRequest,
740}
741
742impl fidl::Persistable for MlmeGetMinstrelStatsRequest {}
743
744#[derive(Clone, Debug, PartialEq)]
745pub struct MlmeGetMinstrelStatsResponse {
746    pub resp: MinstrelStatsResponse,
747}
748
749impl fidl::Persistable for MlmeGetMinstrelStatsResponse {}
750
751#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
752pub struct MlmeInstallApfPacketFilterRequest {
753    pub program: Vec<u8>,
754}
755
756impl fidl::Persistable for MlmeInstallApfPacketFilterRequest {}
757
758#[derive(Clone, Debug, PartialEq)]
759pub struct MlmeListMinstrelPeersResponse {
760    pub resp: MinstrelListResponse,
761}
762
763impl fidl::Persistable for MlmeListMinstrelPeersResponse {}
764
765#[derive(Clone, Debug, PartialEq)]
766pub struct MlmeOnChannelSwitchedRequest {
767    pub info: fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo,
768}
769
770impl fidl::Persistable for MlmeOnChannelSwitchedRequest {}
771
772#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
773pub struct MlmeOnPmkAvailableRequest {
774    pub info: PmkInfo,
775}
776
777impl fidl::Persistable for MlmeOnPmkAvailableRequest {}
778
779#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
780pub struct MlmeOnSaeFrameRxRequest {
781    pub frame: SaeFrame,
782}
783
784impl fidl::Persistable for MlmeOnSaeFrameRxRequest {}
785
786#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
787#[repr(C)]
788pub struct MlmeOnSaeHandshakeIndRequest {
789    pub ind: SaeHandshakeIndication,
790}
791
792impl fidl::Persistable for MlmeOnSaeHandshakeIndRequest {}
793
794#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
795pub struct MlmeOnScanEndRequest {
796    pub end: ScanEnd,
797}
798
799impl fidl::Persistable for MlmeOnScanEndRequest {}
800
801#[derive(Clone, Debug, PartialEq)]
802pub struct MlmeOnScanResultRequest {
803    pub result: ScanResult,
804}
805
806impl fidl::Persistable for MlmeOnScanResultRequest {}
807
808#[derive(Clone, Debug, PartialEq)]
809pub struct MlmeOnWmmStatusRespRequest {
810    pub status: i32,
811    pub resp: fidl_fuchsia_wlan_internal__common::WmmStatusResponse,
812}
813
814impl fidl::Persistable for MlmeOnWmmStatusRespRequest {}
815
816#[derive(Clone, Debug, PartialEq)]
817pub struct MlmeQueryDeviceInfoResponse {
818    pub info: DeviceInfo,
819}
820
821impl fidl::Persistable for MlmeQueryDeviceInfoResponse {}
822
823#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
824#[repr(C)]
825pub struct MlmeReconnectReqRequest {
826    pub req: ReconnectRequest,
827}
828
829impl fidl::Persistable for MlmeReconnectReqRequest {}
830
831#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
832pub struct MlmeRelayCapturedFrameRequest {
833    pub result: CapturedFrameResult,
834}
835
836impl fidl::Persistable for MlmeRelayCapturedFrameRequest {}
837
838#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
839pub struct MlmeResetReqRequest {
840    pub req: ResetRequest,
841}
842
843impl fidl::Persistable for MlmeResetReqRequest {}
844
845#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
846pub struct MlmeRoamConfRequest {
847    pub conf: RoamConfirm,
848}
849
850impl fidl::Persistable for MlmeRoamConfRequest {}
851
852#[derive(Clone, Debug, PartialEq)]
853pub struct MlmeRoamReqRequest {
854    pub req: RoamRequest,
855}
856
857impl fidl::Persistable for MlmeRoamReqRequest {}
858
859#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
860pub struct MlmeRoamResultIndRequest {
861    pub ind: RoamResultIndication,
862}
863
864impl fidl::Persistable for MlmeRoamResultIndRequest {}
865
866#[derive(Clone, Debug, PartialEq)]
867pub struct MlmeRoamStartIndRequest {
868    pub ind: RoamStartIndication,
869}
870
871impl fidl::Persistable for MlmeRoamStartIndRequest {}
872
873#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
874pub struct MlmeSaeFrameTxRequest {
875    pub frame: SaeFrame,
876}
877
878impl fidl::Persistable for MlmeSaeFrameTxRequest {}
879
880#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
881pub struct MlmeSaeHandshakeRespRequest {
882    pub resp: SaeHandshakeResponse,
883}
884
885impl fidl::Persistable for MlmeSaeHandshakeRespRequest {}
886
887#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
888pub struct MlmeSetApfPacketFilterEnabledRequest {
889    pub enabled: bool,
890}
891
892impl fidl::Persistable for MlmeSetApfPacketFilterEnabledRequest {}
893
894#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
895pub struct MlmeSetControlledPortRequest {
896    pub req: SetControlledPortRequest,
897}
898
899impl fidl::Persistable for MlmeSetControlledPortRequest {}
900
901#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
902pub struct MlmeSetKeysConfRequest {
903    pub conf: SetKeysConfirm,
904}
905
906impl fidl::Persistable for MlmeSetKeysConfRequest {}
907
908#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
909pub struct MlmeSetKeysReqRequest {
910    pub req: SetKeysRequest,
911}
912
913impl fidl::Persistable for MlmeSetKeysReqRequest {}
914
915#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
916#[repr(C)]
917pub struct MlmeSetMacAddressRequest {
918    pub mac_addr: [u8; 6],
919}
920
921impl fidl::Persistable for MlmeSetMacAddressRequest {}
922
923#[derive(Clone, Debug, PartialEq)]
924pub struct MlmeSignalReportRequest {
925    pub ind: fidl_fuchsia_wlan_internal__common::SignalReportIndication,
926}
927
928impl fidl::Persistable for MlmeSignalReportRequest {}
929
930#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
931pub struct MlmeStartCaptureFramesRequest {
932    pub req: StartCaptureFramesRequest,
933}
934
935impl fidl::Persistable for MlmeStartCaptureFramesRequest {}
936
937#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
938pub struct MlmeStartCaptureFramesResponse {
939    pub resp: StartCaptureFramesResponse,
940}
941
942impl fidl::Persistable for MlmeStartCaptureFramesResponse {}
943
944#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
945pub struct MlmeStartConfRequest {
946    pub resp: StartConfirm,
947}
948
949impl fidl::Persistable for MlmeStartConfRequest {}
950
951#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
952pub struct MlmeStartReqRequest {
953    pub req: StartRequest,
954}
955
956impl fidl::Persistable for MlmeStartReqRequest {}
957
958#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
959pub struct MlmeStartScanRequest {
960    pub req: ScanRequest,
961}
962
963impl fidl::Persistable for MlmeStartScanRequest {}
964
965#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
966pub struct MlmeStopConfRequest {
967    pub resp: StopConfirm,
968}
969
970impl fidl::Persistable for MlmeStopConfRequest {}
971
972#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
973pub struct MlmeStopReqRequest {
974    pub req: StopRequest,
975}
976
977impl fidl::Persistable for MlmeStopReqRequest {}
978
979/// Non-IEEE custom structure to inform a SoftMAC device about the association negotiation outcome.
980#[derive(Clone, Debug, PartialEq)]
981pub struct NegotiatedCapabilities {
982    pub channel: fidl_fuchsia_wlan_ieee80211__common::WlanChannel,
983    pub capability_info: u16,
984    pub rates: Vec<u8>,
985    pub wmm_param: Option<Box<WmmParameter>>,
986    pub ht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>>,
987    pub vht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>>,
988}
989
990impl fidl::Persistable for NegotiatedCapabilities {}
991
992#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
993pub struct PmkInfo {
994    pub pmk: Vec<u8>,
995    pub pmkid: Vec<u8>,
996}
997
998impl fidl::Persistable for PmkInfo {}
999
1000#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1001#[repr(C)]
1002pub struct ReconnectRequest {
1003    pub peer_sta_address: [u8; 6],
1004}
1005
1006impl fidl::Persistable for ReconnectRequest {}
1007
1008#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1009pub struct ResetRequest {
1010    pub sta_address: [u8; 6],
1011    pub set_default_mib: bool,
1012}
1013
1014impl fidl::Persistable for ResetRequest {}
1015
1016/// Result of an SME-initiated roam attempt.
1017#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1018pub struct RoamConfirm {
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 RoamConfirm {}
1036
1037#[derive(Clone, Debug, PartialEq)]
1038pub struct RoamRequest {
1039    pub selected_bss: fidl_fuchsia_wlan_common__common::BssDescription,
1040}
1041
1042impl fidl::Persistable for RoamRequest {}
1043
1044/// Result of a fullmac-initiated roam attempt.
1045#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1046pub struct RoamResultIndication {
1047    pub selected_bssid: [u8; 6],
1048    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
1049    /// Whether the original BSS association has been maintained through the roam attempt.
1050    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1051    /// success then this field must be set to false; a roam failure typically incurs disassociation
1052    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1053    pub original_association_maintained: bool,
1054    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1055    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1056    /// This allows higher layers to decide how to clean up connection state after a failed roam
1057    /// attempt.
1058    pub target_bss_authenticated: bool,
1059    pub association_id: u16,
1060    pub association_ies: Vec<u8>,
1061}
1062
1063impl fidl::Persistable for RoamResultIndication {}
1064
1065/// In-progress fullmac-initiated roam attempt details.
1066#[derive(Clone, Debug, PartialEq)]
1067pub struct RoamStartIndication {
1068    pub selected_bssid: [u8; 6],
1069    pub selected_bss: fidl_fuchsia_wlan_common__common::BssDescription,
1070    /// Whether the original BSS association has been maintained at the start of a roam attempt.
1071    /// 802.11 dictates that a STA can only be associated with a single BSS, so a roam attempt
1072    /// typically incurs disassociation at the start of the roam attempt. However, 802.11 also
1073    /// provides a mechanism (i.e. Fast BSS Transition) that allows a device to maintain
1074    /// association with the original BSS while establishing authentication with the target BSS, in
1075    /// order to avoid losing the original association if authentication with the target BSS fails.
1076    pub original_association_maintained: bool,
1077}
1078
1079impl fidl::Persistable for RoamStartIndication {}
1080
1081#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1082pub struct SaeFrame {
1083    pub peer_sta_address: [u8; 6],
1084    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
1085    pub seq_num: u16,
1086    pub sae_fields: Vec<u8>,
1087}
1088
1089impl fidl::Persistable for SaeFrame {}
1090
1091#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1092#[repr(C)]
1093pub struct SaeHandshakeIndication {
1094    pub peer_sta_address: [u8; 6],
1095}
1096
1097impl fidl::Persistable for SaeHandshakeIndication {}
1098
1099#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1100pub struct SaeHandshakeResponse {
1101    pub peer_sta_address: [u8; 6],
1102    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
1103}
1104
1105impl fidl::Persistable for SaeHandshakeResponse {}
1106
1107#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1108pub struct ScanEnd {
1109    pub txn_id: u64,
1110    pub code: ScanResultCode,
1111}
1112
1113impl fidl::Persistable for ScanEnd {}
1114
1115#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1116pub struct ScanRequest {
1117    pub txn_id: u64,
1118    pub scan_type: ScanTypes,
1119    /// List of channels to scan on. An empty list of channels will cause a
1120    /// scan request to immediately return a ScanEnd with code INVALID_ARGS.
1121    ///
1122    /// Invalid channel numbers will be silently ignored. The validity of a channel
1123    /// number depends on the current regulatory region, and MLME does not control
1124    /// or know this setting.
1125    pub channel_list: Vec<u8>,
1126    /// List of SSIDs to scan for. An empty list of ssids is the same as specifying
1127    /// a list containing only the wildcard SSID.
1128    ///
1129    /// There is no limit on the number of SSIDs specified. A large number of
1130    /// SSIDs may result in extended scan times because of hardware limitations on
1131    /// the number of SSIDs permitted per scan request and the technical limitation
1132    /// in IEEE 802.11-2016 that limits the number of SSIDs in a single Probe Request
1133    /// frame to ieee80211.SSID_LIST_MAX SSIDs.
1134    pub ssid_list: Vec<Vec<u8>>,
1135    pub probe_delay: u32,
1136    pub min_channel_time: u32,
1137    pub max_channel_time: u32,
1138}
1139
1140impl fidl::Persistable for ScanRequest {}
1141
1142#[derive(Clone, Debug, PartialEq)]
1143pub struct ScanResult {
1144    pub txn_id: u64,
1145    pub timestamp_nanos: i64,
1146    pub bss: fidl_fuchsia_wlan_common__common::BssDescription,
1147}
1148
1149impl fidl::Persistable for ScanResult {}
1150
1151#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1152pub struct SetControlledPortRequest {
1153    pub peer_sta_address: [u8; 6],
1154    pub state: ControlledPortState,
1155}
1156
1157impl fidl::Persistable for SetControlledPortRequest {}
1158
1159#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1160pub struct SetKeyDescriptor {
1161    pub key: Vec<u8>,
1162    pub key_id: u16,
1163    pub key_type: KeyType,
1164    pub address: [u8; 6],
1165    pub rsc: u64,
1166    pub cipher_suite_oui: [u8; 3],
1167    pub cipher_suite_type: fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
1168}
1169
1170impl fidl::Persistable for SetKeyDescriptor {}
1171
1172#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1173#[repr(C)]
1174pub struct SetKeyResult {
1175    pub key_id: u16,
1176    pub status: i32,
1177}
1178
1179impl fidl::Persistable for SetKeyResult {}
1180
1181#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1182pub struct SetKeysConfirm {
1183    pub results: Vec<SetKeyResult>,
1184}
1185
1186impl fidl::Persistable for SetKeysConfirm {}
1187
1188#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1189pub struct SetKeysRequest {
1190    pub keylist: Vec<SetKeyDescriptor>,
1191}
1192
1193impl fidl::Persistable for SetKeysRequest {}
1194
1195#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1196pub struct StartCaptureFramesRequest {
1197    pub mgmt_frame_flags: MgmtFrameCaptureFlags,
1198}
1199
1200impl fidl::Persistable for StartCaptureFramesRequest {}
1201
1202#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1203pub struct StartCaptureFramesResponse {
1204    pub status: i32,
1205    pub supported_mgmt_frames: MgmtFrameCaptureFlags,
1206}
1207
1208impl fidl::Persistable for StartCaptureFramesResponse {}
1209
1210#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1211pub struct StartConfirm {
1212    pub result_code: StartResultCode,
1213}
1214
1215impl fidl::Persistable for StartConfirm {}
1216
1217#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1218pub struct StartRequest {
1219    pub ssid: Vec<u8>,
1220    pub bss_type: fidl_fuchsia_wlan_common__common::BssType,
1221    pub beacon_period: u16,
1222    pub dtim_period: u8,
1223    pub channel: u8,
1224    pub capability_info: u16,
1225    pub rates: Vec<u8>,
1226    pub country: Country,
1227    pub mesh_id: Vec<u8>,
1228    pub rsne: Option<Vec<u8>>,
1229    pub phy: fidl_fuchsia_wlan_common__common::WlanPhyType,
1230    pub channel_bandwidth: fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth,
1231}
1232
1233impl fidl::Persistable for StartRequest {}
1234
1235#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1236pub struct StopConfirm {
1237    pub result_code: StopResultCode,
1238}
1239
1240impl fidl::Persistable for StopConfirm {}
1241
1242#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1243pub struct StopRequest {
1244    pub ssid: Vec<u8>,
1245}
1246
1247impl fidl::Persistable for StopRequest {}
1248
1249#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1250#[repr(C)]
1251pub struct WmmParameter {
1252    pub bytes: [u8; 18],
1253}
1254
1255impl fidl::Persistable for WmmParameter {}
1256
1257#[derive(Clone, Debug, PartialEq)]
1258pub enum GetIfaceHistogramStatsResponse {
1259    Stats(fidl_fuchsia_wlan_stats__common::IfaceHistogramStats),
1260    ErrorStatus(i32),
1261}
1262
1263impl GetIfaceHistogramStatsResponse {
1264    #[inline]
1265    pub fn ordinal(&self) -> u64 {
1266        match *self {
1267            Self::Stats(_) => 1,
1268            Self::ErrorStatus(_) => 2,
1269        }
1270    }
1271}
1272
1273impl fidl::Persistable for GetIfaceHistogramStatsResponse {}
1274
1275#[derive(Clone, Debug, PartialEq)]
1276pub enum GetIfaceStatsResponse {
1277    Stats(fidl_fuchsia_wlan_stats__common::IfaceStats),
1278    ErrorStatus(i32),
1279}
1280
1281impl GetIfaceStatsResponse {
1282    #[inline]
1283    pub fn ordinal(&self) -> u64 {
1284        match *self {
1285            Self::Stats(_) => 1,
1286            Self::ErrorStatus(_) => 2,
1287        }
1288    }
1289}
1290
1291impl fidl::Persistable for GetIfaceStatsResponse {}
1292
1293pub mod connector_ordinals {
1294    pub const CONNECT: u64 = 0x42131859717af962;
1295}
1296
1297pub mod mlme_ordinals {
1298    pub const START_SCAN: u64 = 0x342cc5ec6a957479;
1299    pub const ON_SCAN_RESULT: u64 = 0x681af7466a75074d;
1300    pub const ON_SCAN_END: u64 = 0x7f2702d253e7ca59;
1301    pub const CONNECT_REQ: u64 = 0x31153dc85f8f64c;
1302    pub const CONNECT_CONF: u64 = 0x77b27623279b981e;
1303    pub const RECONNECT_REQ: u64 = 0x74e0f1bd758b6b78;
1304    pub const ROAM_REQ: u64 = 0x3ba163eadf7dba45;
1305    pub const ROAM_CONF: u64 = 0x3f608034faa054bc;
1306    pub const ROAM_START_IND: u64 = 0x270a1ec78672d094;
1307    pub const ROAM_RESULT_IND: u64 = 0x26d074364fc84865;
1308    pub const AUTHENTICATE_IND: u64 = 0x460f49ae891adbe9;
1309    pub const AUTHENTICATE_RESP: u64 = 0x26108aade2fdd2f4;
1310    pub const DEAUTHENTICATE_REQ: u64 = 0x228983b200de5d12;
1311    pub const DEAUTHENTICATE_CONF: u64 = 0x3b44debc21b88c8c;
1312    pub const DEAUTHENTICATE_IND: u64 = 0x7ee0889b326da1d7;
1313    pub const ASSOCIATE_IND: u64 = 0x6a86f20e3063dd63;
1314    pub const ASSOCIATE_RESP: u64 = 0x70244dbd652ed6d9;
1315    pub const DISASSOCIATE_REQ: u64 = 0x5765807f1387d764;
1316    pub const DISASSOCIATE_CONF: u64 = 0x61345fbce732a28d;
1317    pub const DISASSOCIATE_IND: u64 = 0x77ac0ebf387c1f35;
1318    pub const RESET_REQ: u64 = 0x780b98c58a286b9f;
1319    pub const START_REQ: u64 = 0x5d95885f8053654;
1320    pub const START_CONF: u64 = 0x15ea6cdf3b8382b3;
1321    pub const STOP_REQ: u64 = 0x27b9a2ab04a2c79f;
1322    pub const STOP_CONF: u64 = 0x50b426ef4a84a2df;
1323    pub const SET_KEYS_REQ: u64 = 0x6b30a07fd3a11a79;
1324    pub const SET_KEYS_CONF: u64 = 0x5bafb3a8d4039380;
1325    pub const DELETE_KEYS_REQ: u64 = 0x1e3524d20d190c8f;
1326    pub const EAPOL_REQ: u64 = 0xc3c096924704d4;
1327    pub const EAPOL_CONF: u64 = 0x6ffa21f4ee73ce64;
1328    pub const SIGNAL_REPORT: u64 = 0x48f32a876aa53d8f;
1329    pub const EAPOL_IND: u64 = 0x7038dca46a3142fc;
1330    pub const SET_CONTROLLED_PORT: u64 = 0x4e47065668890c8d;
1331    pub const QUERY_DEVICE_INFO: u64 = 0x6ee3e7f63f2b7bc0;
1332    pub const QUERY_TELEMETRY_SUPPORT: u64 = 0x1598879b70332c99;
1333    pub const GET_IFACE_STATS: u64 = 0xede1a8342d1b211;
1334    pub const GET_IFACE_HISTOGRAM_STATS: u64 = 0x1979c9d3449f8675;
1335    pub const GET_SIGNAL_REPORT: u64 = 0x7e47e7ebe92acec9;
1336    pub const LIST_MINSTREL_PEERS: u64 = 0x4ac5d1e66fe1ffd5;
1337    pub const GET_MINSTREL_STATS: u64 = 0x2f688b1245323f4b;
1338    pub const START_CAPTURE_FRAMES: u64 = 0x23b369ed5749ee69;
1339    pub const STOP_CAPTURE_FRAMES: u64 = 0x2f1aebbc68bf7c54;
1340    pub const RELAY_CAPTURED_FRAME: u64 = 0x6f00a6f3cff9b1f5;
1341    pub const ON_CHANNEL_SWITCHED: u64 = 0x581750594e4c0c1;
1342    pub const ON_PMK_AVAILABLE: u64 = 0x1314fc2c79643f90;
1343    pub const ON_SAE_HANDSHAKE_IND: u64 = 0x6308b10e18986d7e;
1344    pub const SAE_HANDSHAKE_RESP: u64 = 0x28477bd2f7a5ab0c;
1345    pub const SAE_FRAME_TX: u64 = 0x7700c0d536733d8c;
1346    pub const ON_SAE_FRAME_RX: u64 = 0x4ebf51c86ef5f3cd;
1347    pub const WMM_STATUS_REQ: u64 = 0xef4851f6088fede;
1348    pub const ON_WMM_STATUS_RESP: u64 = 0x53f056b432e7b5cb;
1349    pub const FINALIZE_ASSOCIATION_REQ: u64 = 0x7aea59787cfd385a;
1350    pub const SET_MAC_ADDRESS: u64 = 0x476999f9bb27afe1;
1351    pub const INSTALL_APF_PACKET_FILTER: u64 = 0x267565b4916c825b;
1352    pub const READ_APF_PACKET_FILTER_DATA: u64 = 0x6040d744f1b2cb61;
1353    pub const SET_APF_PACKET_FILTER_ENABLED: u64 = 0x6d99bdca77076aea;
1354    pub const GET_APF_PACKET_FILTER_ENABLED: u64 = 0x1df408bc154be1e4;
1355}
1356
1357mod internal {
1358    use super::*;
1359    unsafe impl fidl::encoding::TypeMarker for MgmtFrameCaptureFlags {
1360        type Owned = Self;
1361
1362        #[inline(always)]
1363        fn inline_align(_context: fidl::encoding::Context) -> usize {
1364            4
1365        }
1366
1367        #[inline(always)]
1368        fn inline_size(_context: fidl::encoding::Context) -> usize {
1369            4
1370        }
1371    }
1372
1373    impl fidl::encoding::ValueTypeMarker for MgmtFrameCaptureFlags {
1374        type Borrowed<'a> = Self;
1375        #[inline(always)]
1376        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1377            *value
1378        }
1379    }
1380
1381    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1382        for MgmtFrameCaptureFlags
1383    {
1384        #[inline]
1385        unsafe fn encode(
1386            self,
1387            encoder: &mut fidl::encoding::Encoder<'_, D>,
1388            offset: usize,
1389            _depth: fidl::encoding::Depth,
1390        ) -> fidl::Result<()> {
1391            encoder.debug_check_bounds::<Self>(offset);
1392            if self.bits() & Self::all().bits() != self.bits() {
1393                return Err(fidl::Error::InvalidBitsValue);
1394            }
1395            encoder.write_num(self.bits(), offset);
1396            Ok(())
1397        }
1398    }
1399
1400    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MgmtFrameCaptureFlags {
1401        #[inline(always)]
1402        fn new_empty() -> Self {
1403            Self::empty()
1404        }
1405
1406        #[inline]
1407        unsafe fn decode(
1408            &mut self,
1409            decoder: &mut fidl::encoding::Decoder<'_, D>,
1410            offset: usize,
1411            _depth: fidl::encoding::Depth,
1412        ) -> fidl::Result<()> {
1413            decoder.debug_check_bounds::<Self>(offset);
1414            let prim = decoder.read_num::<u32>(offset);
1415            *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
1416            Ok(())
1417        }
1418    }
1419    unsafe impl fidl::encoding::TypeMarker for AssociateResultCode {
1420        type Owned = Self;
1421
1422        #[inline(always)]
1423        fn inline_align(_context: fidl::encoding::Context) -> usize {
1424            std::mem::align_of::<u32>()
1425        }
1426
1427        #[inline(always)]
1428        fn inline_size(_context: fidl::encoding::Context) -> usize {
1429            std::mem::size_of::<u32>()
1430        }
1431
1432        #[inline(always)]
1433        fn encode_is_copy() -> bool {
1434            true
1435        }
1436
1437        #[inline(always)]
1438        fn decode_is_copy() -> bool {
1439            false
1440        }
1441    }
1442
1443    impl fidl::encoding::ValueTypeMarker for AssociateResultCode {
1444        type Borrowed<'a> = Self;
1445        #[inline(always)]
1446        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1447            *value
1448        }
1449    }
1450
1451    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1452        for AssociateResultCode
1453    {
1454        #[inline]
1455        unsafe fn encode(
1456            self,
1457            encoder: &mut fidl::encoding::Encoder<'_, D>,
1458            offset: usize,
1459            _depth: fidl::encoding::Depth,
1460        ) -> fidl::Result<()> {
1461            encoder.debug_check_bounds::<Self>(offset);
1462            encoder.write_num(self.into_primitive(), offset);
1463            Ok(())
1464        }
1465    }
1466
1467    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateResultCode {
1468        #[inline(always)]
1469        fn new_empty() -> Self {
1470            Self::Success
1471        }
1472
1473        #[inline]
1474        unsafe fn decode(
1475            &mut self,
1476            decoder: &mut fidl::encoding::Decoder<'_, D>,
1477            offset: usize,
1478            _depth: fidl::encoding::Depth,
1479        ) -> fidl::Result<()> {
1480            decoder.debug_check_bounds::<Self>(offset);
1481            let prim = decoder.read_num::<u32>(offset);
1482
1483            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1484            Ok(())
1485        }
1486    }
1487    unsafe impl fidl::encoding::TypeMarker for AuthenticateResultCode {
1488        type Owned = Self;
1489
1490        #[inline(always)]
1491        fn inline_align(_context: fidl::encoding::Context) -> usize {
1492            std::mem::align_of::<u32>()
1493        }
1494
1495        #[inline(always)]
1496        fn inline_size(_context: fidl::encoding::Context) -> usize {
1497            std::mem::size_of::<u32>()
1498        }
1499
1500        #[inline(always)]
1501        fn encode_is_copy() -> bool {
1502            true
1503        }
1504
1505        #[inline(always)]
1506        fn decode_is_copy() -> bool {
1507            false
1508        }
1509    }
1510
1511    impl fidl::encoding::ValueTypeMarker for AuthenticateResultCode {
1512        type Borrowed<'a> = Self;
1513        #[inline(always)]
1514        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1515            *value
1516        }
1517    }
1518
1519    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1520        for AuthenticateResultCode
1521    {
1522        #[inline]
1523        unsafe fn encode(
1524            self,
1525            encoder: &mut fidl::encoding::Encoder<'_, D>,
1526            offset: usize,
1527            _depth: fidl::encoding::Depth,
1528        ) -> fidl::Result<()> {
1529            encoder.debug_check_bounds::<Self>(offset);
1530            encoder.write_num(self.into_primitive(), offset);
1531            Ok(())
1532        }
1533    }
1534
1535    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1536        for AuthenticateResultCode
1537    {
1538        #[inline(always)]
1539        fn new_empty() -> Self {
1540            Self::Success
1541        }
1542
1543        #[inline]
1544        unsafe fn decode(
1545            &mut self,
1546            decoder: &mut fidl::encoding::Decoder<'_, D>,
1547            offset: usize,
1548            _depth: fidl::encoding::Depth,
1549        ) -> fidl::Result<()> {
1550            decoder.debug_check_bounds::<Self>(offset);
1551            let prim = decoder.read_num::<u32>(offset);
1552
1553            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1554            Ok(())
1555        }
1556    }
1557    unsafe impl fidl::encoding::TypeMarker for AuthenticationTypes {
1558        type Owned = Self;
1559
1560        #[inline(always)]
1561        fn inline_align(_context: fidl::encoding::Context) -> usize {
1562            std::mem::align_of::<u32>()
1563        }
1564
1565        #[inline(always)]
1566        fn inline_size(_context: fidl::encoding::Context) -> usize {
1567            std::mem::size_of::<u32>()
1568        }
1569
1570        #[inline(always)]
1571        fn encode_is_copy() -> bool {
1572            true
1573        }
1574
1575        #[inline(always)]
1576        fn decode_is_copy() -> bool {
1577            false
1578        }
1579    }
1580
1581    impl fidl::encoding::ValueTypeMarker for AuthenticationTypes {
1582        type Borrowed<'a> = Self;
1583        #[inline(always)]
1584        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1585            *value
1586        }
1587    }
1588
1589    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1590        for AuthenticationTypes
1591    {
1592        #[inline]
1593        unsafe fn encode(
1594            self,
1595            encoder: &mut fidl::encoding::Encoder<'_, D>,
1596            offset: usize,
1597            _depth: fidl::encoding::Depth,
1598        ) -> fidl::Result<()> {
1599            encoder.debug_check_bounds::<Self>(offset);
1600            encoder.write_num(self.into_primitive(), offset);
1601            Ok(())
1602        }
1603    }
1604
1605    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AuthenticationTypes {
1606        #[inline(always)]
1607        fn new_empty() -> Self {
1608            Self::OpenSystem
1609        }
1610
1611        #[inline]
1612        unsafe fn decode(
1613            &mut self,
1614            decoder: &mut fidl::encoding::Decoder<'_, D>,
1615            offset: usize,
1616            _depth: fidl::encoding::Depth,
1617        ) -> fidl::Result<()> {
1618            decoder.debug_check_bounds::<Self>(offset);
1619            let prim = decoder.read_num::<u32>(offset);
1620
1621            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1622            Ok(())
1623        }
1624    }
1625    unsafe impl fidl::encoding::TypeMarker for ControlledPortState {
1626        type Owned = Self;
1627
1628        #[inline(always)]
1629        fn inline_align(_context: fidl::encoding::Context) -> usize {
1630            std::mem::align_of::<u32>()
1631        }
1632
1633        #[inline(always)]
1634        fn inline_size(_context: fidl::encoding::Context) -> usize {
1635            std::mem::size_of::<u32>()
1636        }
1637
1638        #[inline(always)]
1639        fn encode_is_copy() -> bool {
1640            true
1641        }
1642
1643        #[inline(always)]
1644        fn decode_is_copy() -> bool {
1645            false
1646        }
1647    }
1648
1649    impl fidl::encoding::ValueTypeMarker for ControlledPortState {
1650        type Borrowed<'a> = Self;
1651        #[inline(always)]
1652        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1653            *value
1654        }
1655    }
1656
1657    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1658        for ControlledPortState
1659    {
1660        #[inline]
1661        unsafe fn encode(
1662            self,
1663            encoder: &mut fidl::encoding::Encoder<'_, D>,
1664            offset: usize,
1665            _depth: fidl::encoding::Depth,
1666        ) -> fidl::Result<()> {
1667            encoder.debug_check_bounds::<Self>(offset);
1668            encoder.write_num(self.into_primitive(), offset);
1669            Ok(())
1670        }
1671    }
1672
1673    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlledPortState {
1674        #[inline(always)]
1675        fn new_empty() -> Self {
1676            Self::Closed
1677        }
1678
1679        #[inline]
1680        unsafe fn decode(
1681            &mut self,
1682            decoder: &mut fidl::encoding::Decoder<'_, D>,
1683            offset: usize,
1684            _depth: fidl::encoding::Depth,
1685        ) -> fidl::Result<()> {
1686            decoder.debug_check_bounds::<Self>(offset);
1687            let prim = decoder.read_num::<u32>(offset);
1688
1689            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1690            Ok(())
1691        }
1692    }
1693    unsafe impl fidl::encoding::TypeMarker for EapolResultCode {
1694        type Owned = Self;
1695
1696        #[inline(always)]
1697        fn inline_align(_context: fidl::encoding::Context) -> usize {
1698            std::mem::align_of::<u32>()
1699        }
1700
1701        #[inline(always)]
1702        fn inline_size(_context: fidl::encoding::Context) -> usize {
1703            std::mem::size_of::<u32>()
1704        }
1705
1706        #[inline(always)]
1707        fn encode_is_copy() -> bool {
1708            true
1709        }
1710
1711        #[inline(always)]
1712        fn decode_is_copy() -> bool {
1713            false
1714        }
1715    }
1716
1717    impl fidl::encoding::ValueTypeMarker for EapolResultCode {
1718        type Borrowed<'a> = Self;
1719        #[inline(always)]
1720        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1721            *value
1722        }
1723    }
1724
1725    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1726        for EapolResultCode
1727    {
1728        #[inline]
1729        unsafe fn encode(
1730            self,
1731            encoder: &mut fidl::encoding::Encoder<'_, D>,
1732            offset: usize,
1733            _depth: fidl::encoding::Depth,
1734        ) -> fidl::Result<()> {
1735            encoder.debug_check_bounds::<Self>(offset);
1736            encoder.write_num(self.into_primitive(), offset);
1737            Ok(())
1738        }
1739    }
1740
1741    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolResultCode {
1742        #[inline(always)]
1743        fn new_empty() -> Self {
1744            Self::Success
1745        }
1746
1747        #[inline]
1748        unsafe fn decode(
1749            &mut self,
1750            decoder: &mut fidl::encoding::Decoder<'_, D>,
1751            offset: usize,
1752            _depth: fidl::encoding::Depth,
1753        ) -> fidl::Result<()> {
1754            decoder.debug_check_bounds::<Self>(offset);
1755            let prim = decoder.read_num::<u32>(offset);
1756
1757            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1758            Ok(())
1759        }
1760    }
1761    unsafe impl fidl::encoding::TypeMarker for KeyType {
1762        type Owned = Self;
1763
1764        #[inline(always)]
1765        fn inline_align(_context: fidl::encoding::Context) -> usize {
1766            std::mem::align_of::<u32>()
1767        }
1768
1769        #[inline(always)]
1770        fn inline_size(_context: fidl::encoding::Context) -> usize {
1771            std::mem::size_of::<u32>()
1772        }
1773
1774        #[inline(always)]
1775        fn encode_is_copy() -> bool {
1776            true
1777        }
1778
1779        #[inline(always)]
1780        fn decode_is_copy() -> bool {
1781            false
1782        }
1783    }
1784
1785    impl fidl::encoding::ValueTypeMarker for KeyType {
1786        type Borrowed<'a> = Self;
1787        #[inline(always)]
1788        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1789            *value
1790        }
1791    }
1792
1793    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for KeyType {
1794        #[inline]
1795        unsafe fn encode(
1796            self,
1797            encoder: &mut fidl::encoding::Encoder<'_, D>,
1798            offset: usize,
1799            _depth: fidl::encoding::Depth,
1800        ) -> fidl::Result<()> {
1801            encoder.debug_check_bounds::<Self>(offset);
1802            encoder.write_num(self.into_primitive(), offset);
1803            Ok(())
1804        }
1805    }
1806
1807    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for KeyType {
1808        #[inline(always)]
1809        fn new_empty() -> Self {
1810            Self::Group
1811        }
1812
1813        #[inline]
1814        unsafe fn decode(
1815            &mut self,
1816            decoder: &mut fidl::encoding::Decoder<'_, D>,
1817            offset: usize,
1818            _depth: fidl::encoding::Depth,
1819        ) -> fidl::Result<()> {
1820            decoder.debug_check_bounds::<Self>(offset);
1821            let prim = decoder.read_num::<u32>(offset);
1822
1823            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1824            Ok(())
1825        }
1826    }
1827    unsafe impl fidl::encoding::TypeMarker for ScanResultCode {
1828        type Owned = Self;
1829
1830        #[inline(always)]
1831        fn inline_align(_context: fidl::encoding::Context) -> usize {
1832            std::mem::align_of::<u32>()
1833        }
1834
1835        #[inline(always)]
1836        fn inline_size(_context: fidl::encoding::Context) -> usize {
1837            std::mem::size_of::<u32>()
1838        }
1839
1840        #[inline(always)]
1841        fn encode_is_copy() -> bool {
1842            true
1843        }
1844
1845        #[inline(always)]
1846        fn decode_is_copy() -> bool {
1847            false
1848        }
1849    }
1850
1851    impl fidl::encoding::ValueTypeMarker for ScanResultCode {
1852        type Borrowed<'a> = Self;
1853        #[inline(always)]
1854        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1855            *value
1856        }
1857    }
1858
1859    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanResultCode {
1860        #[inline]
1861        unsafe fn encode(
1862            self,
1863            encoder: &mut fidl::encoding::Encoder<'_, D>,
1864            offset: usize,
1865            _depth: fidl::encoding::Depth,
1866        ) -> fidl::Result<()> {
1867            encoder.debug_check_bounds::<Self>(offset);
1868            encoder.write_num(self.into_primitive(), offset);
1869            Ok(())
1870        }
1871    }
1872
1873    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanResultCode {
1874        #[inline(always)]
1875        fn new_empty() -> Self {
1876            Self::Success
1877        }
1878
1879        #[inline]
1880        unsafe fn decode(
1881            &mut self,
1882            decoder: &mut fidl::encoding::Decoder<'_, D>,
1883            offset: usize,
1884            _depth: fidl::encoding::Depth,
1885        ) -> fidl::Result<()> {
1886            decoder.debug_check_bounds::<Self>(offset);
1887            let prim = decoder.read_num::<u32>(offset);
1888
1889            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1890            Ok(())
1891        }
1892    }
1893    unsafe impl fidl::encoding::TypeMarker for ScanTypes {
1894        type Owned = Self;
1895
1896        #[inline(always)]
1897        fn inline_align(_context: fidl::encoding::Context) -> usize {
1898            std::mem::align_of::<u32>()
1899        }
1900
1901        #[inline(always)]
1902        fn inline_size(_context: fidl::encoding::Context) -> usize {
1903            std::mem::size_of::<u32>()
1904        }
1905
1906        #[inline(always)]
1907        fn encode_is_copy() -> bool {
1908            true
1909        }
1910
1911        #[inline(always)]
1912        fn decode_is_copy() -> bool {
1913            false
1914        }
1915    }
1916
1917    impl fidl::encoding::ValueTypeMarker for ScanTypes {
1918        type Borrowed<'a> = Self;
1919        #[inline(always)]
1920        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1921            *value
1922        }
1923    }
1924
1925    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanTypes {
1926        #[inline]
1927        unsafe fn encode(
1928            self,
1929            encoder: &mut fidl::encoding::Encoder<'_, D>,
1930            offset: usize,
1931            _depth: fidl::encoding::Depth,
1932        ) -> fidl::Result<()> {
1933            encoder.debug_check_bounds::<Self>(offset);
1934            encoder.write_num(self.into_primitive(), offset);
1935            Ok(())
1936        }
1937    }
1938
1939    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanTypes {
1940        #[inline(always)]
1941        fn new_empty() -> Self {
1942            Self::Active
1943        }
1944
1945        #[inline]
1946        unsafe fn decode(
1947            &mut self,
1948            decoder: &mut fidl::encoding::Decoder<'_, D>,
1949            offset: usize,
1950            _depth: fidl::encoding::Depth,
1951        ) -> fidl::Result<()> {
1952            decoder.debug_check_bounds::<Self>(offset);
1953            let prim = decoder.read_num::<u32>(offset);
1954
1955            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1956            Ok(())
1957        }
1958    }
1959    unsafe impl fidl::encoding::TypeMarker for StartResultCode {
1960        type Owned = Self;
1961
1962        #[inline(always)]
1963        fn inline_align(_context: fidl::encoding::Context) -> usize {
1964            std::mem::align_of::<u32>()
1965        }
1966
1967        #[inline(always)]
1968        fn inline_size(_context: fidl::encoding::Context) -> usize {
1969            std::mem::size_of::<u32>()
1970        }
1971
1972        #[inline(always)]
1973        fn encode_is_copy() -> bool {
1974            true
1975        }
1976
1977        #[inline(always)]
1978        fn decode_is_copy() -> bool {
1979            false
1980        }
1981    }
1982
1983    impl fidl::encoding::ValueTypeMarker for StartResultCode {
1984        type Borrowed<'a> = Self;
1985        #[inline(always)]
1986        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1987            *value
1988        }
1989    }
1990
1991    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1992        for StartResultCode
1993    {
1994        #[inline]
1995        unsafe fn encode(
1996            self,
1997            encoder: &mut fidl::encoding::Encoder<'_, D>,
1998            offset: usize,
1999            _depth: fidl::encoding::Depth,
2000        ) -> fidl::Result<()> {
2001            encoder.debug_check_bounds::<Self>(offset);
2002            encoder.write_num(self.into_primitive(), offset);
2003            Ok(())
2004        }
2005    }
2006
2007    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartResultCode {
2008        #[inline(always)]
2009        fn new_empty() -> Self {
2010            Self::Success
2011        }
2012
2013        #[inline]
2014        unsafe fn decode(
2015            &mut self,
2016            decoder: &mut fidl::encoding::Decoder<'_, D>,
2017            offset: usize,
2018            _depth: fidl::encoding::Depth,
2019        ) -> fidl::Result<()> {
2020            decoder.debug_check_bounds::<Self>(offset);
2021            let prim = decoder.read_num::<u32>(offset);
2022
2023            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2024            Ok(())
2025        }
2026    }
2027    unsafe impl fidl::encoding::TypeMarker for StopResultCode {
2028        type Owned = Self;
2029
2030        #[inline(always)]
2031        fn inline_align(_context: fidl::encoding::Context) -> usize {
2032            std::mem::align_of::<u32>()
2033        }
2034
2035        #[inline(always)]
2036        fn inline_size(_context: fidl::encoding::Context) -> usize {
2037            std::mem::size_of::<u32>()
2038        }
2039
2040        #[inline(always)]
2041        fn encode_is_copy() -> bool {
2042            true
2043        }
2044
2045        #[inline(always)]
2046        fn decode_is_copy() -> bool {
2047            false
2048        }
2049    }
2050
2051    impl fidl::encoding::ValueTypeMarker for StopResultCode {
2052        type Borrowed<'a> = Self;
2053        #[inline(always)]
2054        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2055            *value
2056        }
2057    }
2058
2059    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StopResultCode {
2060        #[inline]
2061        unsafe fn encode(
2062            self,
2063            encoder: &mut fidl::encoding::Encoder<'_, D>,
2064            offset: usize,
2065            _depth: fidl::encoding::Depth,
2066        ) -> fidl::Result<()> {
2067            encoder.debug_check_bounds::<Self>(offset);
2068            encoder.write_num(self.into_primitive(), offset);
2069            Ok(())
2070        }
2071    }
2072
2073    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopResultCode {
2074        #[inline(always)]
2075        fn new_empty() -> Self {
2076            Self::Success
2077        }
2078
2079        #[inline]
2080        unsafe fn decode(
2081            &mut self,
2082            decoder: &mut fidl::encoding::Decoder<'_, D>,
2083            offset: usize,
2084            _depth: fidl::encoding::Depth,
2085        ) -> fidl::Result<()> {
2086            decoder.debug_check_bounds::<Self>(offset);
2087            let prim = decoder.read_num::<u32>(offset);
2088
2089            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2090            Ok(())
2091        }
2092    }
2093
2094    impl fidl::encoding::ValueTypeMarker for AssociateIndication {
2095        type Borrowed<'a> = &'a Self;
2096        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2097            value
2098        }
2099    }
2100
2101    unsafe impl fidl::encoding::TypeMarker for AssociateIndication {
2102        type Owned = Self;
2103
2104        #[inline(always)]
2105        fn inline_align(_context: fidl::encoding::Context) -> usize {
2106            8
2107        }
2108
2109        #[inline(always)]
2110        fn inline_size(_context: fidl::encoding::Context) -> usize {
2111            64
2112        }
2113    }
2114
2115    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AssociateIndication, D>
2116        for &AssociateIndication
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            // Delegate to tuple encoding.
2127            fidl::encoding::Encode::<AssociateIndication, D>::encode(
2128                (
2129                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
2130                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
2131                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.listen_interval),
2132                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid),
2133                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
2134                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>> as fidl::encoding::ValueTypeMarker>::borrow(&self.rsne),
2135                ),
2136                encoder, offset, _depth
2137            )
2138        }
2139    }
2140    unsafe impl<
2141        D: fidl::encoding::ResourceDialect,
2142        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2143        T1: fidl::encoding::Encode<u16, D>,
2144        T2: fidl::encoding::Encode<u16, D>,
2145        T3: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>, D>,
2146        T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
2147        T5: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>, D>,
2148    > fidl::encoding::Encode<AssociateIndication, D> for (T0, T1, T2, T3, T4, T5)
2149    {
2150        #[inline]
2151        unsafe fn encode(
2152            self,
2153            encoder: &mut fidl::encoding::Encoder<'_, D>,
2154            offset: usize,
2155            depth: fidl::encoding::Depth,
2156        ) -> fidl::Result<()> {
2157            encoder.debug_check_bounds::<AssociateIndication>(offset);
2158            // Zero out padding regions. There's no need to apply masks
2159            // because the unmasked parts will be overwritten by fields.
2160            unsafe {
2161                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2162                (ptr as *mut u64).write_unaligned(0);
2163            }
2164            // Write the fields.
2165            self.0.encode(encoder, offset + 0, depth)?;
2166            self.1.encode(encoder, offset + 6, depth)?;
2167            self.2.encode(encoder, offset + 8, depth)?;
2168            self.3.encode(encoder, offset + 16, depth)?;
2169            self.4.encode(encoder, offset + 32, depth)?;
2170            self.5.encode(encoder, offset + 48, depth)?;
2171            Ok(())
2172        }
2173    }
2174
2175    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateIndication {
2176        #[inline(always)]
2177        fn new_empty() -> Self {
2178            Self {
2179                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2180                capability_info: fidl::new_empty!(u16, D),
2181                listen_interval: fidl::new_empty!(u16, D),
2182                ssid: fidl::new_empty!(fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>, D),
2183                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
2184                rsne: fidl::new_empty!(
2185                    fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
2186                    D
2187                ),
2188            }
2189        }
2190
2191        #[inline]
2192        unsafe fn decode(
2193            &mut self,
2194            decoder: &mut fidl::encoding::Decoder<'_, D>,
2195            offset: usize,
2196            _depth: fidl::encoding::Depth,
2197        ) -> fidl::Result<()> {
2198            decoder.debug_check_bounds::<Self>(offset);
2199            // Verify that padding bytes are zero.
2200            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2201            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2202            let mask = 0xffffffffffff0000u64;
2203            let maskedval = padval & mask;
2204            if maskedval != 0 {
2205                return Err(fidl::Error::NonZeroPadding {
2206                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2207                });
2208            }
2209            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2210            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 6, _depth)?;
2211            fidl::decode!(u16, D, &mut self.listen_interval, decoder, offset + 8, _depth)?;
2212            fidl::decode!(
2213                fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>,
2214                D,
2215                &mut self.ssid,
2216                decoder,
2217                offset + 16,
2218                _depth
2219            )?;
2220            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 32, _depth)?;
2221            fidl::decode!(
2222                fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
2223                D,
2224                &mut self.rsne,
2225                decoder,
2226                offset + 48,
2227                _depth
2228            )?;
2229            Ok(())
2230        }
2231    }
2232
2233    impl fidl::encoding::ValueTypeMarker for AssociateResponse {
2234        type Borrowed<'a> = &'a Self;
2235        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2236            value
2237        }
2238    }
2239
2240    unsafe impl fidl::encoding::TypeMarker for AssociateResponse {
2241        type Owned = Self;
2242
2243        #[inline(always)]
2244        fn inline_align(_context: fidl::encoding::Context) -> usize {
2245            8
2246        }
2247
2248        #[inline(always)]
2249        fn inline_size(_context: fidl::encoding::Context) -> usize {
2250            32
2251        }
2252    }
2253
2254    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AssociateResponse, D>
2255        for &AssociateResponse
2256    {
2257        #[inline]
2258        unsafe fn encode(
2259            self,
2260            encoder: &mut fidl::encoding::Encoder<'_, D>,
2261            offset: usize,
2262            _depth: fidl::encoding::Depth,
2263        ) -> fidl::Result<()> {
2264            encoder.debug_check_bounds::<AssociateResponse>(offset);
2265            // Delegate to tuple encoding.
2266            fidl::encoding::Encode::<AssociateResponse, D>::encode(
2267                (
2268                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2269                        &self.peer_sta_address,
2270                    ),
2271                    <AssociateResultCode as fidl::encoding::ValueTypeMarker>::borrow(
2272                        &self.result_code,
2273                    ),
2274                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
2275                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
2276                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(
2277                        &self.rates,
2278                    ),
2279                ),
2280                encoder,
2281                offset,
2282                _depth,
2283            )
2284        }
2285    }
2286    unsafe impl<
2287        D: fidl::encoding::ResourceDialect,
2288        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2289        T1: fidl::encoding::Encode<AssociateResultCode, D>,
2290        T2: fidl::encoding::Encode<u16, D>,
2291        T3: fidl::encoding::Encode<u16, D>,
2292        T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
2293    > fidl::encoding::Encode<AssociateResponse, D> for (T0, T1, T2, T3, T4)
2294    {
2295        #[inline]
2296        unsafe fn encode(
2297            self,
2298            encoder: &mut fidl::encoding::Encoder<'_, D>,
2299            offset: usize,
2300            depth: fidl::encoding::Depth,
2301        ) -> fidl::Result<()> {
2302            encoder.debug_check_bounds::<AssociateResponse>(offset);
2303            // Zero out padding regions. There's no need to apply masks
2304            // because the unmasked parts will be overwritten by fields.
2305            unsafe {
2306                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2307                (ptr as *mut u64).write_unaligned(0);
2308            }
2309            // Write the fields.
2310            self.0.encode(encoder, offset + 0, depth)?;
2311            self.1.encode(encoder, offset + 8, depth)?;
2312            self.2.encode(encoder, offset + 12, depth)?;
2313            self.3.encode(encoder, offset + 14, depth)?;
2314            self.4.encode(encoder, offset + 16, depth)?;
2315            Ok(())
2316        }
2317    }
2318
2319    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateResponse {
2320        #[inline(always)]
2321        fn new_empty() -> Self {
2322            Self {
2323                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2324                result_code: fidl::new_empty!(AssociateResultCode, D),
2325                association_id: fidl::new_empty!(u16, D),
2326                capability_info: fidl::new_empty!(u16, D),
2327                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
2328            }
2329        }
2330
2331        #[inline]
2332        unsafe fn decode(
2333            &mut self,
2334            decoder: &mut fidl::encoding::Decoder<'_, D>,
2335            offset: usize,
2336            _depth: fidl::encoding::Depth,
2337        ) -> fidl::Result<()> {
2338            decoder.debug_check_bounds::<Self>(offset);
2339            // Verify that padding bytes are zero.
2340            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2341            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2342            let mask = 0xffff000000000000u64;
2343            let maskedval = padval & mask;
2344            if maskedval != 0 {
2345                return Err(fidl::Error::NonZeroPadding {
2346                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2347                });
2348            }
2349            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2350            fidl::decode!(
2351                AssociateResultCode,
2352                D,
2353                &mut self.result_code,
2354                decoder,
2355                offset + 8,
2356                _depth
2357            )?;
2358            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 12, _depth)?;
2359            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 14, _depth)?;
2360            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 16, _depth)?;
2361            Ok(())
2362        }
2363    }
2364
2365    impl fidl::encoding::ValueTypeMarker for AuthenticateIndication {
2366        type Borrowed<'a> = &'a Self;
2367        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2368            value
2369        }
2370    }
2371
2372    unsafe impl fidl::encoding::TypeMarker for AuthenticateIndication {
2373        type Owned = Self;
2374
2375        #[inline(always)]
2376        fn inline_align(_context: fidl::encoding::Context) -> usize {
2377            4
2378        }
2379
2380        #[inline(always)]
2381        fn inline_size(_context: fidl::encoding::Context) -> usize {
2382            12
2383        }
2384    }
2385
2386    unsafe impl<D: fidl::encoding::ResourceDialect>
2387        fidl::encoding::Encode<AuthenticateIndication, D> for &AuthenticateIndication
2388    {
2389        #[inline]
2390        unsafe fn encode(
2391            self,
2392            encoder: &mut fidl::encoding::Encoder<'_, D>,
2393            offset: usize,
2394            _depth: fidl::encoding::Depth,
2395        ) -> fidl::Result<()> {
2396            encoder.debug_check_bounds::<AuthenticateIndication>(offset);
2397            // Delegate to tuple encoding.
2398            fidl::encoding::Encode::<AuthenticateIndication, D>::encode(
2399                (
2400                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2401                        &self.peer_sta_address,
2402                    ),
2403                    <AuthenticationTypes as fidl::encoding::ValueTypeMarker>::borrow(
2404                        &self.auth_type,
2405                    ),
2406                ),
2407                encoder,
2408                offset,
2409                _depth,
2410            )
2411        }
2412    }
2413    unsafe impl<
2414        D: fidl::encoding::ResourceDialect,
2415        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2416        T1: fidl::encoding::Encode<AuthenticationTypes, D>,
2417    > fidl::encoding::Encode<AuthenticateIndication, D> for (T0, T1)
2418    {
2419        #[inline]
2420        unsafe fn encode(
2421            self,
2422            encoder: &mut fidl::encoding::Encoder<'_, D>,
2423            offset: usize,
2424            depth: fidl::encoding::Depth,
2425        ) -> fidl::Result<()> {
2426            encoder.debug_check_bounds::<AuthenticateIndication>(offset);
2427            // Zero out padding regions. There's no need to apply masks
2428            // because the unmasked parts will be overwritten by fields.
2429            unsafe {
2430                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
2431                (ptr as *mut u32).write_unaligned(0);
2432            }
2433            // Write the fields.
2434            self.0.encode(encoder, offset + 0, depth)?;
2435            self.1.encode(encoder, offset + 8, depth)?;
2436            Ok(())
2437        }
2438    }
2439
2440    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2441        for AuthenticateIndication
2442    {
2443        #[inline(always)]
2444        fn new_empty() -> Self {
2445            Self {
2446                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2447                auth_type: fidl::new_empty!(AuthenticationTypes, D),
2448            }
2449        }
2450
2451        #[inline]
2452        unsafe fn decode(
2453            &mut self,
2454            decoder: &mut fidl::encoding::Decoder<'_, D>,
2455            offset: usize,
2456            _depth: fidl::encoding::Depth,
2457        ) -> fidl::Result<()> {
2458            decoder.debug_check_bounds::<Self>(offset);
2459            // Verify that padding bytes are zero.
2460            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
2461            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2462            let mask = 0xffff0000u32;
2463            let maskedval = padval & mask;
2464            if maskedval != 0 {
2465                return Err(fidl::Error::NonZeroPadding {
2466                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
2467                });
2468            }
2469            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2470            fidl::decode!(
2471                AuthenticationTypes,
2472                D,
2473                &mut self.auth_type,
2474                decoder,
2475                offset + 8,
2476                _depth
2477            )?;
2478            Ok(())
2479        }
2480    }
2481
2482    impl fidl::encoding::ValueTypeMarker for AuthenticateResponse {
2483        type Borrowed<'a> = &'a Self;
2484        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2485            value
2486        }
2487    }
2488
2489    unsafe impl fidl::encoding::TypeMarker for AuthenticateResponse {
2490        type Owned = Self;
2491
2492        #[inline(always)]
2493        fn inline_align(_context: fidl::encoding::Context) -> usize {
2494            4
2495        }
2496
2497        #[inline(always)]
2498        fn inline_size(_context: fidl::encoding::Context) -> usize {
2499            12
2500        }
2501    }
2502
2503    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AuthenticateResponse, D>
2504        for &AuthenticateResponse
2505    {
2506        #[inline]
2507        unsafe fn encode(
2508            self,
2509            encoder: &mut fidl::encoding::Encoder<'_, D>,
2510            offset: usize,
2511            _depth: fidl::encoding::Depth,
2512        ) -> fidl::Result<()> {
2513            encoder.debug_check_bounds::<AuthenticateResponse>(offset);
2514            // Delegate to tuple encoding.
2515            fidl::encoding::Encode::<AuthenticateResponse, D>::encode(
2516                (
2517                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2518                        &self.peer_sta_address,
2519                    ),
2520                    <AuthenticateResultCode as fidl::encoding::ValueTypeMarker>::borrow(
2521                        &self.result_code,
2522                    ),
2523                ),
2524                encoder,
2525                offset,
2526                _depth,
2527            )
2528        }
2529    }
2530    unsafe impl<
2531        D: fidl::encoding::ResourceDialect,
2532        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2533        T1: fidl::encoding::Encode<AuthenticateResultCode, D>,
2534    > fidl::encoding::Encode<AuthenticateResponse, D> for (T0, T1)
2535    {
2536        #[inline]
2537        unsafe fn encode(
2538            self,
2539            encoder: &mut fidl::encoding::Encoder<'_, D>,
2540            offset: usize,
2541            depth: fidl::encoding::Depth,
2542        ) -> fidl::Result<()> {
2543            encoder.debug_check_bounds::<AuthenticateResponse>(offset);
2544            // Zero out padding regions. There's no need to apply masks
2545            // because the unmasked parts will be overwritten by fields.
2546            unsafe {
2547                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
2548                (ptr as *mut u32).write_unaligned(0);
2549            }
2550            // Write the fields.
2551            self.0.encode(encoder, offset + 0, depth)?;
2552            self.1.encode(encoder, offset + 8, depth)?;
2553            Ok(())
2554        }
2555    }
2556
2557    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AuthenticateResponse {
2558        #[inline(always)]
2559        fn new_empty() -> Self {
2560            Self {
2561                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2562                result_code: fidl::new_empty!(AuthenticateResultCode, D),
2563            }
2564        }
2565
2566        #[inline]
2567        unsafe fn decode(
2568            &mut self,
2569            decoder: &mut fidl::encoding::Decoder<'_, D>,
2570            offset: usize,
2571            _depth: fidl::encoding::Depth,
2572        ) -> fidl::Result<()> {
2573            decoder.debug_check_bounds::<Self>(offset);
2574            // Verify that padding bytes are zero.
2575            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
2576            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2577            let mask = 0xffff0000u32;
2578            let maskedval = padval & mask;
2579            if maskedval != 0 {
2580                return Err(fidl::Error::NonZeroPadding {
2581                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
2582                });
2583            }
2584            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2585            fidl::decode!(
2586                AuthenticateResultCode,
2587                D,
2588                &mut self.result_code,
2589                decoder,
2590                offset + 8,
2591                _depth
2592            )?;
2593            Ok(())
2594        }
2595    }
2596
2597    impl fidl::encoding::ValueTypeMarker for BandCapability {
2598        type Borrowed<'a> = &'a Self;
2599        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2600            value
2601        }
2602    }
2603
2604    unsafe impl fidl::encoding::TypeMarker for BandCapability {
2605        type Owned = Self;
2606
2607        #[inline(always)]
2608        fn inline_align(_context: fidl::encoding::Context) -> usize {
2609            8
2610        }
2611
2612        #[inline(always)]
2613        fn inline_size(_context: fidl::encoding::Context) -> usize {
2614            56
2615        }
2616    }
2617
2618    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandCapability, D>
2619        for &BandCapability
2620    {
2621        #[inline]
2622        unsafe fn encode(
2623            self,
2624            encoder: &mut fidl::encoding::Encoder<'_, D>,
2625            offset: usize,
2626            _depth: fidl::encoding::Depth,
2627        ) -> fidl::Result<()> {
2628            encoder.debug_check_bounds::<BandCapability>(offset);
2629            // Delegate to tuple encoding.
2630            fidl::encoding::Encode::<BandCapability, D>::encode(
2631                (
2632                    <fidl_fuchsia_wlan_ieee80211__common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow(&self.band),
2633                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::ValueTypeMarker>::borrow(&self.basic_rates),
2634                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.ht_cap),
2635                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_cap),
2636                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.operating_channels),
2637                ),
2638                encoder, offset, _depth
2639            )
2640        }
2641    }
2642    unsafe impl<
2643        D: fidl::encoding::ResourceDialect,
2644        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::WlanBand, D>,
2645        T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 12>, D>,
2646        T2: fidl::encoding::Encode<
2647                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
2648                D,
2649            >,
2650        T3: fidl::encoding::Encode<
2651                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
2652                D,
2653            >,
2654        T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 256>, D>,
2655    > fidl::encoding::Encode<BandCapability, D> for (T0, T1, T2, T3, T4)
2656    {
2657        #[inline]
2658        unsafe fn encode(
2659            self,
2660            encoder: &mut fidl::encoding::Encoder<'_, D>,
2661            offset: usize,
2662            depth: fidl::encoding::Depth,
2663        ) -> fidl::Result<()> {
2664            encoder.debug_check_bounds::<BandCapability>(offset);
2665            // Zero out padding regions. There's no need to apply masks
2666            // because the unmasked parts will be overwritten by fields.
2667            unsafe {
2668                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2669                (ptr as *mut u64).write_unaligned(0);
2670            }
2671            // Write the fields.
2672            self.0.encode(encoder, offset + 0, depth)?;
2673            self.1.encode(encoder, offset + 8, depth)?;
2674            self.2.encode(encoder, offset + 24, depth)?;
2675            self.3.encode(encoder, offset + 32, depth)?;
2676            self.4.encode(encoder, offset + 40, depth)?;
2677            Ok(())
2678        }
2679    }
2680
2681    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandCapability {
2682        #[inline(always)]
2683        fn new_empty() -> Self {
2684            Self {
2685                band: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanBand, D),
2686                basic_rates: fidl::new_empty!(fidl::encoding::Vector<u8, 12>, D),
2687                ht_cap: fidl::new_empty!(
2688                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
2689                    D
2690                ),
2691                vht_cap: fidl::new_empty!(
2692                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
2693                    D
2694                ),
2695                operating_channels: fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D),
2696            }
2697        }
2698
2699        #[inline]
2700        unsafe fn decode(
2701            &mut self,
2702            decoder: &mut fidl::encoding::Decoder<'_, D>,
2703            offset: usize,
2704            _depth: fidl::encoding::Depth,
2705        ) -> fidl::Result<()> {
2706            decoder.debug_check_bounds::<Self>(offset);
2707            // Verify that padding bytes are zero.
2708            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2709            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2710            let mask = 0xffffffffffffff00u64;
2711            let maskedval = padval & mask;
2712            if maskedval != 0 {
2713                return Err(fidl::Error::NonZeroPadding {
2714                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2715                });
2716            }
2717            fidl::decode!(
2718                fidl_fuchsia_wlan_ieee80211__common::WlanBand,
2719                D,
2720                &mut self.band,
2721                decoder,
2722                offset + 0,
2723                _depth
2724            )?;
2725            fidl::decode!(fidl::encoding::Vector<u8, 12>, D, &mut self.basic_rates, decoder, offset + 8, _depth)?;
2726            fidl::decode!(
2727                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
2728                D,
2729                &mut self.ht_cap,
2730                decoder,
2731                offset + 24,
2732                _depth
2733            )?;
2734            fidl::decode!(
2735                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
2736                D,
2737                &mut self.vht_cap,
2738                decoder,
2739                offset + 32,
2740                _depth
2741            )?;
2742            fidl::decode!(fidl::encoding::Vector<u8, 256>, D, &mut self.operating_channels, decoder, offset + 40, _depth)?;
2743            Ok(())
2744        }
2745    }
2746
2747    impl fidl::encoding::ValueTypeMarker for CapturedFrameResult {
2748        type Borrowed<'a> = &'a Self;
2749        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2750            value
2751        }
2752    }
2753
2754    unsafe impl fidl::encoding::TypeMarker for CapturedFrameResult {
2755        type Owned = Self;
2756
2757        #[inline(always)]
2758        fn inline_align(_context: fidl::encoding::Context) -> usize {
2759            8
2760        }
2761
2762        #[inline(always)]
2763        fn inline_size(_context: fidl::encoding::Context) -> usize {
2764            16
2765        }
2766    }
2767
2768    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CapturedFrameResult, D>
2769        for &CapturedFrameResult
2770    {
2771        #[inline]
2772        unsafe fn encode(
2773            self,
2774            encoder: &mut fidl::encoding::Encoder<'_, D>,
2775            offset: usize,
2776            _depth: fidl::encoding::Depth,
2777        ) -> fidl::Result<()> {
2778            encoder.debug_check_bounds::<CapturedFrameResult>(offset);
2779            // Delegate to tuple encoding.
2780            fidl::encoding::Encode::<CapturedFrameResult, D>::encode(
2781                (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
2782                    &self.frame,
2783                ),),
2784                encoder,
2785                offset,
2786                _depth,
2787            )
2788        }
2789    }
2790    unsafe impl<
2791        D: fidl::encoding::ResourceDialect,
2792        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2793    > fidl::encoding::Encode<CapturedFrameResult, D> for (T0,)
2794    {
2795        #[inline]
2796        unsafe fn encode(
2797            self,
2798            encoder: &mut fidl::encoding::Encoder<'_, D>,
2799            offset: usize,
2800            depth: fidl::encoding::Depth,
2801        ) -> fidl::Result<()> {
2802            encoder.debug_check_bounds::<CapturedFrameResult>(offset);
2803            // Zero out padding regions. There's no need to apply masks
2804            // because the unmasked parts will be overwritten by fields.
2805            // Write the fields.
2806            self.0.encode(encoder, offset + 0, depth)?;
2807            Ok(())
2808        }
2809    }
2810
2811    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CapturedFrameResult {
2812        #[inline(always)]
2813        fn new_empty() -> Self {
2814            Self { frame: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
2815        }
2816
2817        #[inline]
2818        unsafe fn decode(
2819            &mut self,
2820            decoder: &mut fidl::encoding::Decoder<'_, D>,
2821            offset: usize,
2822            _depth: fidl::encoding::Depth,
2823        ) -> fidl::Result<()> {
2824            decoder.debug_check_bounds::<Self>(offset);
2825            // Verify that padding bytes are zero.
2826            fidl::decode!(
2827                fidl::encoding::UnboundedVector<u8>,
2828                D,
2829                &mut self.frame,
2830                decoder,
2831                offset + 0,
2832                _depth
2833            )?;
2834            Ok(())
2835        }
2836    }
2837
2838    impl fidl::encoding::ValueTypeMarker for ConnectConfirm {
2839        type Borrowed<'a> = &'a Self;
2840        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2841            value
2842        }
2843    }
2844
2845    unsafe impl fidl::encoding::TypeMarker for ConnectConfirm {
2846        type Owned = Self;
2847
2848        #[inline(always)]
2849        fn inline_align(_context: fidl::encoding::Context) -> usize {
2850            8
2851        }
2852
2853        #[inline(always)]
2854        fn inline_size(_context: fidl::encoding::Context) -> usize {
2855            32
2856        }
2857    }
2858
2859    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectConfirm, D>
2860        for &ConnectConfirm
2861    {
2862        #[inline]
2863        unsafe fn encode(
2864            self,
2865            encoder: &mut fidl::encoding::Encoder<'_, D>,
2866            offset: usize,
2867            _depth: fidl::encoding::Depth,
2868        ) -> fidl::Result<()> {
2869            encoder.debug_check_bounds::<ConnectConfirm>(offset);
2870            // Delegate to tuple encoding.
2871            fidl::encoding::Encode::<ConnectConfirm, D>::encode(
2872                (
2873                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
2874                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
2875                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
2876                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
2877                ),
2878                encoder, offset, _depth
2879            )
2880        }
2881    }
2882    unsafe impl<
2883        D: fidl::encoding::ResourceDialect,
2884        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2885        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
2886        T2: fidl::encoding::Encode<u16, D>,
2887        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2888    > fidl::encoding::Encode<ConnectConfirm, D> for (T0, T1, T2, T3)
2889    {
2890        #[inline]
2891        unsafe fn encode(
2892            self,
2893            encoder: &mut fidl::encoding::Encoder<'_, D>,
2894            offset: usize,
2895            depth: fidl::encoding::Depth,
2896        ) -> fidl::Result<()> {
2897            encoder.debug_check_bounds::<ConnectConfirm>(offset);
2898            // Zero out padding regions. There's no need to apply masks
2899            // because the unmasked parts will be overwritten by fields.
2900            unsafe {
2901                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2902                (ptr as *mut u64).write_unaligned(0);
2903            }
2904            // Write the fields.
2905            self.0.encode(encoder, offset + 0, depth)?;
2906            self.1.encode(encoder, offset + 6, depth)?;
2907            self.2.encode(encoder, offset + 8, depth)?;
2908            self.3.encode(encoder, offset + 16, depth)?;
2909            Ok(())
2910        }
2911    }
2912
2913    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectConfirm {
2914        #[inline(always)]
2915        fn new_empty() -> Self {
2916            Self {
2917                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2918                result_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
2919                association_id: fidl::new_empty!(u16, D),
2920                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
2921            }
2922        }
2923
2924        #[inline]
2925        unsafe fn decode(
2926            &mut self,
2927            decoder: &mut fidl::encoding::Decoder<'_, D>,
2928            offset: usize,
2929            _depth: fidl::encoding::Depth,
2930        ) -> fidl::Result<()> {
2931            decoder.debug_check_bounds::<Self>(offset);
2932            // Verify that padding bytes are zero.
2933            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2934            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2935            let mask = 0xffffffffffff0000u64;
2936            let maskedval = padval & mask;
2937            if maskedval != 0 {
2938                return Err(fidl::Error::NonZeroPadding {
2939                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2940                });
2941            }
2942            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2943            fidl::decode!(
2944                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
2945                D,
2946                &mut self.result_code,
2947                decoder,
2948                offset + 6,
2949                _depth
2950            )?;
2951            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 8, _depth)?;
2952            fidl::decode!(
2953                fidl::encoding::UnboundedVector<u8>,
2954                D,
2955                &mut self.association_ies,
2956                decoder,
2957                offset + 16,
2958                _depth
2959            )?;
2960            Ok(())
2961        }
2962    }
2963
2964    impl fidl::encoding::ValueTypeMarker for ConnectRequest {
2965        type Borrowed<'a> = &'a Self;
2966        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2967            value
2968        }
2969    }
2970
2971    unsafe impl fidl::encoding::TypeMarker for ConnectRequest {
2972        type Owned = Self;
2973
2974        #[inline(always)]
2975        fn inline_align(_context: fidl::encoding::Context) -> usize {
2976            8
2977        }
2978
2979        #[inline(always)]
2980        fn inline_size(_context: fidl::encoding::Context) -> usize {
2981            104
2982        }
2983    }
2984
2985    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectRequest, D>
2986        for &ConnectRequest
2987    {
2988        #[inline]
2989        unsafe fn encode(
2990            self,
2991            encoder: &mut fidl::encoding::Encoder<'_, D>,
2992            offset: usize,
2993            _depth: fidl::encoding::Depth,
2994        ) -> fidl::Result<()> {
2995            encoder.debug_check_bounds::<ConnectRequest>(offset);
2996            // Delegate to tuple encoding.
2997            fidl::encoding::Encode::<ConnectRequest, D>::encode(
2998                (
2999                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
3000                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.connect_failure_timeout),
3001                    <AuthenticationTypes as fidl::encoding::ValueTypeMarker>::borrow(&self.auth_type),
3002                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.sae_password),
3003                    <fidl::encoding::Boxed<SetKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.wep_key),
3004                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow(&self.security_ie),
3005                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_internal__common::OwePublicKey> as fidl::encoding::ValueTypeMarker>::borrow(&self.owe_public_key),
3006                ),
3007                encoder, offset, _depth
3008            )
3009        }
3010    }
3011    unsafe impl<
3012        D: fidl::encoding::ResourceDialect,
3013        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
3014        T1: fidl::encoding::Encode<u32, D>,
3015        T2: fidl::encoding::Encode<AuthenticationTypes, D>,
3016        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
3017        T4: fidl::encoding::Encode<fidl::encoding::Boxed<SetKeyDescriptor>, D>,
3018        T5: fidl::encoding::Encode<fidl::encoding::Vector<u8, 257>, D>,
3019        T6: fidl::encoding::Encode<
3020                fidl::encoding::Boxed<fidl_fuchsia_wlan_internal__common::OwePublicKey>,
3021                D,
3022            >,
3023    > fidl::encoding::Encode<ConnectRequest, D> for (T0, T1, T2, T3, T4, T5, T6)
3024    {
3025        #[inline]
3026        unsafe fn encode(
3027            self,
3028            encoder: &mut fidl::encoding::Encoder<'_, D>,
3029            offset: usize,
3030            depth: fidl::encoding::Depth,
3031        ) -> fidl::Result<()> {
3032            encoder.debug_check_bounds::<ConnectRequest>(offset);
3033            // Zero out padding regions. There's no need to apply masks
3034            // because the unmasked parts will be overwritten by fields.
3035            // Write the fields.
3036            self.0.encode(encoder, offset + 0, depth)?;
3037            self.1.encode(encoder, offset + 48, depth)?;
3038            self.2.encode(encoder, offset + 52, depth)?;
3039            self.3.encode(encoder, offset + 56, depth)?;
3040            self.4.encode(encoder, offset + 72, depth)?;
3041            self.5.encode(encoder, offset + 80, depth)?;
3042            self.6.encode(encoder, offset + 96, depth)?;
3043            Ok(())
3044        }
3045    }
3046
3047    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectRequest {
3048        #[inline(always)]
3049        fn new_empty() -> Self {
3050            Self {
3051                selected_bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
3052                connect_failure_timeout: fidl::new_empty!(u32, D),
3053                auth_type: fidl::new_empty!(AuthenticationTypes, D),
3054                sae_password: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
3055                wep_key: fidl::new_empty!(fidl::encoding::Boxed<SetKeyDescriptor>, D),
3056                security_ie: fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D),
3057                owe_public_key: fidl::new_empty!(
3058                    fidl::encoding::Boxed<fidl_fuchsia_wlan_internal__common::OwePublicKey>,
3059                    D
3060                ),
3061            }
3062        }
3063
3064        #[inline]
3065        unsafe fn decode(
3066            &mut self,
3067            decoder: &mut fidl::encoding::Decoder<'_, D>,
3068            offset: usize,
3069            _depth: fidl::encoding::Depth,
3070        ) -> fidl::Result<()> {
3071            decoder.debug_check_bounds::<Self>(offset);
3072            // Verify that padding bytes are zero.
3073            fidl::decode!(
3074                fidl_fuchsia_wlan_common__common::BssDescription,
3075                D,
3076                &mut self.selected_bss,
3077                decoder,
3078                offset + 0,
3079                _depth
3080            )?;
3081            fidl::decode!(u32, D, &mut self.connect_failure_timeout, decoder, offset + 48, _depth)?;
3082            fidl::decode!(
3083                AuthenticationTypes,
3084                D,
3085                &mut self.auth_type,
3086                decoder,
3087                offset + 52,
3088                _depth
3089            )?;
3090            fidl::decode!(
3091                fidl::encoding::UnboundedVector<u8>,
3092                D,
3093                &mut self.sae_password,
3094                decoder,
3095                offset + 56,
3096                _depth
3097            )?;
3098            fidl::decode!(
3099                fidl::encoding::Boxed<SetKeyDescriptor>,
3100                D,
3101                &mut self.wep_key,
3102                decoder,
3103                offset + 72,
3104                _depth
3105            )?;
3106            fidl::decode!(fidl::encoding::Vector<u8, 257>, D, &mut self.security_ie, decoder, offset + 80, _depth)?;
3107            fidl::decode!(
3108                fidl::encoding::Boxed<fidl_fuchsia_wlan_internal__common::OwePublicKey>,
3109                D,
3110                &mut self.owe_public_key,
3111                decoder,
3112                offset + 96,
3113                _depth
3114            )?;
3115            Ok(())
3116        }
3117    }
3118
3119    impl fidl::encoding::ValueTypeMarker for Country {
3120        type Borrowed<'a> = &'a Self;
3121        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3122            value
3123        }
3124    }
3125
3126    unsafe impl fidl::encoding::TypeMarker for Country {
3127        type Owned = Self;
3128
3129        #[inline(always)]
3130        fn inline_align(_context: fidl::encoding::Context) -> usize {
3131            1
3132        }
3133
3134        #[inline(always)]
3135        fn inline_size(_context: fidl::encoding::Context) -> usize {
3136            3
3137        }
3138        #[inline(always)]
3139        fn encode_is_copy() -> bool {
3140            true
3141        }
3142
3143        #[inline(always)]
3144        fn decode_is_copy() -> bool {
3145            true
3146        }
3147    }
3148
3149    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Country, D> for &Country {
3150        #[inline]
3151        unsafe fn encode(
3152            self,
3153            encoder: &mut fidl::encoding::Encoder<'_, D>,
3154            offset: usize,
3155            _depth: fidl::encoding::Depth,
3156        ) -> fidl::Result<()> {
3157            encoder.debug_check_bounds::<Country>(offset);
3158            unsafe {
3159                // Copy the object into the buffer.
3160                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3161                (buf_ptr as *mut Country).write_unaligned((self as *const Country).read());
3162                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3163                // done second because the memcpy will write garbage to these bytes.
3164            }
3165            Ok(())
3166        }
3167    }
3168    unsafe impl<
3169        D: fidl::encoding::ResourceDialect,
3170        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 2>, D>,
3171        T1: fidl::encoding::Encode<u8, D>,
3172    > fidl::encoding::Encode<Country, D> for (T0, T1)
3173    {
3174        #[inline]
3175        unsafe fn encode(
3176            self,
3177            encoder: &mut fidl::encoding::Encoder<'_, D>,
3178            offset: usize,
3179            depth: fidl::encoding::Depth,
3180        ) -> fidl::Result<()> {
3181            encoder.debug_check_bounds::<Country>(offset);
3182            // Zero out padding regions. There's no need to apply masks
3183            // because the unmasked parts will be overwritten by fields.
3184            // Write the fields.
3185            self.0.encode(encoder, offset + 0, depth)?;
3186            self.1.encode(encoder, offset + 2, depth)?;
3187            Ok(())
3188        }
3189    }
3190
3191    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Country {
3192        #[inline(always)]
3193        fn new_empty() -> Self {
3194            Self {
3195                alpha2: fidl::new_empty!(fidl::encoding::Array<u8, 2>, D),
3196                suffix: fidl::new_empty!(u8, D),
3197            }
3198        }
3199
3200        #[inline]
3201        unsafe fn decode(
3202            &mut self,
3203            decoder: &mut fidl::encoding::Decoder<'_, D>,
3204            offset: usize,
3205            _depth: fidl::encoding::Depth,
3206        ) -> fidl::Result<()> {
3207            decoder.debug_check_bounds::<Self>(offset);
3208            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3209            // Verify that padding bytes are zero.
3210            // Copy from the buffer into the object.
3211            unsafe {
3212                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 3);
3213            }
3214            Ok(())
3215        }
3216    }
3217
3218    impl fidl::encoding::ValueTypeMarker for DeauthenticateConfirm {
3219        type Borrowed<'a> = &'a Self;
3220        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3221            value
3222        }
3223    }
3224
3225    unsafe impl fidl::encoding::TypeMarker for DeauthenticateConfirm {
3226        type Owned = Self;
3227
3228        #[inline(always)]
3229        fn inline_align(_context: fidl::encoding::Context) -> usize {
3230            1
3231        }
3232
3233        #[inline(always)]
3234        fn inline_size(_context: fidl::encoding::Context) -> usize {
3235            6
3236        }
3237        #[inline(always)]
3238        fn encode_is_copy() -> bool {
3239            true
3240        }
3241
3242        #[inline(always)]
3243        fn decode_is_copy() -> bool {
3244            true
3245        }
3246    }
3247
3248    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeauthenticateConfirm, D>
3249        for &DeauthenticateConfirm
3250    {
3251        #[inline]
3252        unsafe fn encode(
3253            self,
3254            encoder: &mut fidl::encoding::Encoder<'_, D>,
3255            offset: usize,
3256            _depth: fidl::encoding::Depth,
3257        ) -> fidl::Result<()> {
3258            encoder.debug_check_bounds::<DeauthenticateConfirm>(offset);
3259            unsafe {
3260                // Copy the object into the buffer.
3261                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3262                (buf_ptr as *mut DeauthenticateConfirm)
3263                    .write_unaligned((self as *const DeauthenticateConfirm).read());
3264                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3265                // done second because the memcpy will write garbage to these bytes.
3266            }
3267            Ok(())
3268        }
3269    }
3270    unsafe impl<
3271        D: fidl::encoding::ResourceDialect,
3272        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3273    > fidl::encoding::Encode<DeauthenticateConfirm, D> for (T0,)
3274    {
3275        #[inline]
3276        unsafe fn encode(
3277            self,
3278            encoder: &mut fidl::encoding::Encoder<'_, D>,
3279            offset: usize,
3280            depth: fidl::encoding::Depth,
3281        ) -> fidl::Result<()> {
3282            encoder.debug_check_bounds::<DeauthenticateConfirm>(offset);
3283            // Zero out padding regions. There's no need to apply masks
3284            // because the unmasked parts will be overwritten by fields.
3285            // Write the fields.
3286            self.0.encode(encoder, offset + 0, depth)?;
3287            Ok(())
3288        }
3289    }
3290
3291    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeauthenticateConfirm {
3292        #[inline(always)]
3293        fn new_empty() -> Self {
3294            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
3295        }
3296
3297        #[inline]
3298        unsafe fn decode(
3299            &mut self,
3300            decoder: &mut fidl::encoding::Decoder<'_, D>,
3301            offset: usize,
3302            _depth: fidl::encoding::Depth,
3303        ) -> fidl::Result<()> {
3304            decoder.debug_check_bounds::<Self>(offset);
3305            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3306            // Verify that padding bytes are zero.
3307            // Copy from the buffer into the object.
3308            unsafe {
3309                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
3310            }
3311            Ok(())
3312        }
3313    }
3314
3315    impl fidl::encoding::ValueTypeMarker for DeauthenticateIndication {
3316        type Borrowed<'a> = &'a Self;
3317        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3318            value
3319        }
3320    }
3321
3322    unsafe impl fidl::encoding::TypeMarker for DeauthenticateIndication {
3323        type Owned = Self;
3324
3325        #[inline(always)]
3326        fn inline_align(_context: fidl::encoding::Context) -> usize {
3327            2
3328        }
3329
3330        #[inline(always)]
3331        fn inline_size(_context: fidl::encoding::Context) -> usize {
3332            10
3333        }
3334    }
3335
3336    unsafe impl<D: fidl::encoding::ResourceDialect>
3337        fidl::encoding::Encode<DeauthenticateIndication, D> for &DeauthenticateIndication
3338    {
3339        #[inline]
3340        unsafe fn encode(
3341            self,
3342            encoder: &mut fidl::encoding::Encoder<'_, D>,
3343            offset: usize,
3344            _depth: fidl::encoding::Depth,
3345        ) -> fidl::Result<()> {
3346            encoder.debug_check_bounds::<DeauthenticateIndication>(offset);
3347            // Delegate to tuple encoding.
3348            fidl::encoding::Encode::<DeauthenticateIndication, D>::encode(
3349                (
3350                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3351                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3352                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.locally_initiated),
3353                ),
3354                encoder, offset, _depth
3355            )
3356        }
3357    }
3358    unsafe impl<
3359        D: fidl::encoding::ResourceDialect,
3360        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3361        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
3362        T2: fidl::encoding::Encode<bool, D>,
3363    > fidl::encoding::Encode<DeauthenticateIndication, D> for (T0, T1, T2)
3364    {
3365        #[inline]
3366        unsafe fn encode(
3367            self,
3368            encoder: &mut fidl::encoding::Encoder<'_, D>,
3369            offset: usize,
3370            depth: fidl::encoding::Depth,
3371        ) -> fidl::Result<()> {
3372            encoder.debug_check_bounds::<DeauthenticateIndication>(offset);
3373            // Zero out padding regions. There's no need to apply masks
3374            // because the unmasked parts will be overwritten by fields.
3375            unsafe {
3376                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3377                (ptr as *mut u16).write_unaligned(0);
3378            }
3379            // Write the fields.
3380            self.0.encode(encoder, offset + 0, depth)?;
3381            self.1.encode(encoder, offset + 6, depth)?;
3382            self.2.encode(encoder, offset + 8, depth)?;
3383            Ok(())
3384        }
3385    }
3386
3387    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3388        for DeauthenticateIndication
3389    {
3390        #[inline(always)]
3391        fn new_empty() -> Self {
3392            Self {
3393                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3394                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
3395                locally_initiated: fidl::new_empty!(bool, D),
3396            }
3397        }
3398
3399        #[inline]
3400        unsafe fn decode(
3401            &mut self,
3402            decoder: &mut fidl::encoding::Decoder<'_, D>,
3403            offset: usize,
3404            _depth: fidl::encoding::Depth,
3405        ) -> fidl::Result<()> {
3406            decoder.debug_check_bounds::<Self>(offset);
3407            // Verify that padding bytes are zero.
3408            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
3409            let padval = unsafe { (ptr as *const u16).read_unaligned() };
3410            let mask = 0xff00u16;
3411            let maskedval = padval & mask;
3412            if maskedval != 0 {
3413                return Err(fidl::Error::NonZeroPadding {
3414                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
3415                });
3416            }
3417            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
3418            fidl::decode!(
3419                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
3420                D,
3421                &mut self.reason_code,
3422                decoder,
3423                offset + 6,
3424                _depth
3425            )?;
3426            fidl::decode!(bool, D, &mut self.locally_initiated, decoder, offset + 8, _depth)?;
3427            Ok(())
3428        }
3429    }
3430
3431    impl fidl::encoding::ValueTypeMarker for DeauthenticateRequest {
3432        type Borrowed<'a> = &'a Self;
3433        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3434            value
3435        }
3436    }
3437
3438    unsafe impl fidl::encoding::TypeMarker for DeauthenticateRequest {
3439        type Owned = Self;
3440
3441        #[inline(always)]
3442        fn inline_align(_context: fidl::encoding::Context) -> usize {
3443            2
3444        }
3445
3446        #[inline(always)]
3447        fn inline_size(_context: fidl::encoding::Context) -> usize {
3448            8
3449        }
3450    }
3451
3452    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeauthenticateRequest, D>
3453        for &DeauthenticateRequest
3454    {
3455        #[inline]
3456        unsafe fn encode(
3457            self,
3458            encoder: &mut fidl::encoding::Encoder<'_, D>,
3459            offset: usize,
3460            _depth: fidl::encoding::Depth,
3461        ) -> fidl::Result<()> {
3462            encoder.debug_check_bounds::<DeauthenticateRequest>(offset);
3463            // Delegate to tuple encoding.
3464            fidl::encoding::Encode::<DeauthenticateRequest, D>::encode(
3465                (
3466                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3467                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3468                ),
3469                encoder, offset, _depth
3470            )
3471        }
3472    }
3473    unsafe impl<
3474        D: fidl::encoding::ResourceDialect,
3475        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3476        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
3477    > fidl::encoding::Encode<DeauthenticateRequest, D> for (T0, T1)
3478    {
3479        #[inline]
3480        unsafe fn encode(
3481            self,
3482            encoder: &mut fidl::encoding::Encoder<'_, D>,
3483            offset: usize,
3484            depth: fidl::encoding::Depth,
3485        ) -> fidl::Result<()> {
3486            encoder.debug_check_bounds::<DeauthenticateRequest>(offset);
3487            // Zero out padding regions. There's no need to apply masks
3488            // because the unmasked parts will be overwritten by fields.
3489            // Write the fields.
3490            self.0.encode(encoder, offset + 0, depth)?;
3491            self.1.encode(encoder, offset + 6, depth)?;
3492            Ok(())
3493        }
3494    }
3495
3496    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeauthenticateRequest {
3497        #[inline(always)]
3498        fn new_empty() -> Self {
3499            Self {
3500                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3501                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
3502            }
3503        }
3504
3505        #[inline]
3506        unsafe fn decode(
3507            &mut self,
3508            decoder: &mut fidl::encoding::Decoder<'_, D>,
3509            offset: usize,
3510            _depth: fidl::encoding::Depth,
3511        ) -> fidl::Result<()> {
3512            decoder.debug_check_bounds::<Self>(offset);
3513            // Verify that padding bytes are zero.
3514            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
3515            fidl::decode!(
3516                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
3517                D,
3518                &mut self.reason_code,
3519                decoder,
3520                offset + 6,
3521                _depth
3522            )?;
3523            Ok(())
3524        }
3525    }
3526
3527    impl fidl::encoding::ValueTypeMarker for DeleteKeyDescriptor {
3528        type Borrowed<'a> = &'a Self;
3529        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3530            value
3531        }
3532    }
3533
3534    unsafe impl fidl::encoding::TypeMarker for DeleteKeyDescriptor {
3535        type Owned = Self;
3536
3537        #[inline(always)]
3538        fn inline_align(_context: fidl::encoding::Context) -> usize {
3539            4
3540        }
3541
3542        #[inline(always)]
3543        fn inline_size(_context: fidl::encoding::Context) -> usize {
3544            16
3545        }
3546    }
3547
3548    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeleteKeyDescriptor, D>
3549        for &DeleteKeyDescriptor
3550    {
3551        #[inline]
3552        unsafe fn encode(
3553            self,
3554            encoder: &mut fidl::encoding::Encoder<'_, D>,
3555            offset: usize,
3556            _depth: fidl::encoding::Depth,
3557        ) -> fidl::Result<()> {
3558            encoder.debug_check_bounds::<DeleteKeyDescriptor>(offset);
3559            // Delegate to tuple encoding.
3560            fidl::encoding::Encode::<DeleteKeyDescriptor, D>::encode(
3561                (
3562                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.key_id),
3563                    <KeyType as fidl::encoding::ValueTypeMarker>::borrow(&self.key_type),
3564                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
3565                        &self.address,
3566                    ),
3567                ),
3568                encoder,
3569                offset,
3570                _depth,
3571            )
3572        }
3573    }
3574    unsafe impl<
3575        D: fidl::encoding::ResourceDialect,
3576        T0: fidl::encoding::Encode<u16, D>,
3577        T1: fidl::encoding::Encode<KeyType, D>,
3578        T2: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3579    > fidl::encoding::Encode<DeleteKeyDescriptor, D> for (T0, T1, T2)
3580    {
3581        #[inline]
3582        unsafe fn encode(
3583            self,
3584            encoder: &mut fidl::encoding::Encoder<'_, D>,
3585            offset: usize,
3586            depth: fidl::encoding::Depth,
3587        ) -> fidl::Result<()> {
3588            encoder.debug_check_bounds::<DeleteKeyDescriptor>(offset);
3589            // Zero out padding regions. There's no need to apply masks
3590            // because the unmasked parts will be overwritten by fields.
3591            unsafe {
3592                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3593                (ptr as *mut u32).write_unaligned(0);
3594            }
3595            unsafe {
3596                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(12);
3597                (ptr as *mut u32).write_unaligned(0);
3598            }
3599            // Write the fields.
3600            self.0.encode(encoder, offset + 0, depth)?;
3601            self.1.encode(encoder, offset + 4, depth)?;
3602            self.2.encode(encoder, offset + 8, depth)?;
3603            Ok(())
3604        }
3605    }
3606
3607    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeleteKeyDescriptor {
3608        #[inline(always)]
3609        fn new_empty() -> Self {
3610            Self {
3611                key_id: fidl::new_empty!(u16, D),
3612                key_type: fidl::new_empty!(KeyType, D),
3613                address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3614            }
3615        }
3616
3617        #[inline]
3618        unsafe fn decode(
3619            &mut self,
3620            decoder: &mut fidl::encoding::Decoder<'_, D>,
3621            offset: usize,
3622            _depth: fidl::encoding::Depth,
3623        ) -> fidl::Result<()> {
3624            decoder.debug_check_bounds::<Self>(offset);
3625            // Verify that padding bytes are zero.
3626            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3627            let padval = unsafe { (ptr as *const u32).read_unaligned() };
3628            let mask = 0xffff0000u32;
3629            let maskedval = padval & mask;
3630            if maskedval != 0 {
3631                return Err(fidl::Error::NonZeroPadding {
3632                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3633                });
3634            }
3635            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(12) };
3636            let padval = unsafe { (ptr as *const u32).read_unaligned() };
3637            let mask = 0xffff0000u32;
3638            let maskedval = padval & mask;
3639            if maskedval != 0 {
3640                return Err(fidl::Error::NonZeroPadding {
3641                    padding_start: offset + 12 + ((mask as u64).trailing_zeros() / 8) as usize,
3642                });
3643            }
3644            fidl::decode!(u16, D, &mut self.key_id, decoder, offset + 0, _depth)?;
3645            fidl::decode!(KeyType, D, &mut self.key_type, decoder, offset + 4, _depth)?;
3646            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.address, decoder, offset + 8, _depth)?;
3647            Ok(())
3648        }
3649    }
3650
3651    impl fidl::encoding::ValueTypeMarker for DeleteKeysRequest {
3652        type Borrowed<'a> = &'a Self;
3653        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3654            value
3655        }
3656    }
3657
3658    unsafe impl fidl::encoding::TypeMarker for DeleteKeysRequest {
3659        type Owned = Self;
3660
3661        #[inline(always)]
3662        fn inline_align(_context: fidl::encoding::Context) -> usize {
3663            8
3664        }
3665
3666        #[inline(always)]
3667        fn inline_size(_context: fidl::encoding::Context) -> usize {
3668            16
3669        }
3670    }
3671
3672    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeleteKeysRequest, D>
3673        for &DeleteKeysRequest
3674    {
3675        #[inline]
3676        unsafe fn encode(
3677            self,
3678            encoder: &mut fidl::encoding::Encoder<'_, D>,
3679            offset: usize,
3680            _depth: fidl::encoding::Depth,
3681        ) -> fidl::Result<()> {
3682            encoder.debug_check_bounds::<DeleteKeysRequest>(offset);
3683            // Delegate to tuple encoding.
3684            fidl::encoding::Encode::<DeleteKeysRequest, D>::encode(
3685                (
3686                    <fidl::encoding::UnboundedVector<DeleteKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.keylist),
3687                ),
3688                encoder, offset, _depth
3689            )
3690        }
3691    }
3692    unsafe impl<
3693        D: fidl::encoding::ResourceDialect,
3694        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<DeleteKeyDescriptor>, D>,
3695    > fidl::encoding::Encode<DeleteKeysRequest, D> for (T0,)
3696    {
3697        #[inline]
3698        unsafe fn encode(
3699            self,
3700            encoder: &mut fidl::encoding::Encoder<'_, D>,
3701            offset: usize,
3702            depth: fidl::encoding::Depth,
3703        ) -> fidl::Result<()> {
3704            encoder.debug_check_bounds::<DeleteKeysRequest>(offset);
3705            // Zero out padding regions. There's no need to apply masks
3706            // because the unmasked parts will be overwritten by fields.
3707            // Write the fields.
3708            self.0.encode(encoder, offset + 0, depth)?;
3709            Ok(())
3710        }
3711    }
3712
3713    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeleteKeysRequest {
3714        #[inline(always)]
3715        fn new_empty() -> Self {
3716            Self {
3717                keylist: fidl::new_empty!(fidl::encoding::UnboundedVector<DeleteKeyDescriptor>, D),
3718            }
3719        }
3720
3721        #[inline]
3722        unsafe fn decode(
3723            &mut self,
3724            decoder: &mut fidl::encoding::Decoder<'_, D>,
3725            offset: usize,
3726            _depth: fidl::encoding::Depth,
3727        ) -> fidl::Result<()> {
3728            decoder.debug_check_bounds::<Self>(offset);
3729            // Verify that padding bytes are zero.
3730            fidl::decode!(
3731                fidl::encoding::UnboundedVector<DeleteKeyDescriptor>,
3732                D,
3733                &mut self.keylist,
3734                decoder,
3735                offset + 0,
3736                _depth
3737            )?;
3738            Ok(())
3739        }
3740    }
3741
3742    impl fidl::encoding::ValueTypeMarker for DeviceInfo {
3743        type Borrowed<'a> = &'a Self;
3744        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3745            value
3746        }
3747    }
3748
3749    unsafe impl fidl::encoding::TypeMarker for DeviceInfo {
3750        type Owned = Self;
3751
3752        #[inline(always)]
3753        fn inline_align(_context: fidl::encoding::Context) -> usize {
3754            8
3755        }
3756
3757        #[inline(always)]
3758        fn inline_size(_context: fidl::encoding::Context) -> usize {
3759            40
3760        }
3761    }
3762
3763    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceInfo, D>
3764        for &DeviceInfo
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            // Delegate to tuple encoding.
3775            fidl::encoding::Encode::<DeviceInfo, D>::encode(
3776                (
3777                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.sta_addr),
3778                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.factory_addr),
3779                    <fidl_fuchsia_wlan_common__common::WlanMacRole as fidl::encoding::ValueTypeMarker>::borrow(&self.role),
3780                    <fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::ValueTypeMarker>::borrow(&self.bands),
3781                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.softmac_hardware_capability),
3782                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.qos_capable),
3783                ),
3784                encoder, offset, _depth
3785            )
3786        }
3787    }
3788    unsafe impl<
3789        D: fidl::encoding::ResourceDialect,
3790        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3791        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3792        T2: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::WlanMacRole, D>,
3793        T3: fidl::encoding::Encode<fidl::encoding::Vector<BandCapability, 16>, D>,
3794        T4: fidl::encoding::Encode<u32, D>,
3795        T5: fidl::encoding::Encode<bool, D>,
3796    > fidl::encoding::Encode<DeviceInfo, D> for (T0, T1, T2, T3, T4, T5)
3797    {
3798        #[inline]
3799        unsafe fn encode(
3800            self,
3801            encoder: &mut fidl::encoding::Encoder<'_, D>,
3802            offset: usize,
3803            depth: fidl::encoding::Depth,
3804        ) -> fidl::Result<()> {
3805            encoder.debug_check_bounds::<DeviceInfo>(offset);
3806            // Zero out padding regions. There's no need to apply masks
3807            // because the unmasked parts will be overwritten by fields.
3808            unsafe {
3809                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
3810                (ptr as *mut u64).write_unaligned(0);
3811            }
3812            // Write the fields.
3813            self.0.encode(encoder, offset + 0, depth)?;
3814            self.1.encode(encoder, offset + 6, depth)?;
3815            self.2.encode(encoder, offset + 12, depth)?;
3816            self.3.encode(encoder, offset + 16, depth)?;
3817            self.4.encode(encoder, offset + 32, depth)?;
3818            self.5.encode(encoder, offset + 36, depth)?;
3819            Ok(())
3820        }
3821    }
3822
3823    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceInfo {
3824        #[inline(always)]
3825        fn new_empty() -> Self {
3826            Self {
3827                sta_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3828                factory_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3829                role: fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanMacRole, D),
3830                bands: fidl::new_empty!(fidl::encoding::Vector<BandCapability, 16>, D),
3831                softmac_hardware_capability: fidl::new_empty!(u32, D),
3832                qos_capable: fidl::new_empty!(bool, D),
3833            }
3834        }
3835
3836        #[inline]
3837        unsafe fn decode(
3838            &mut self,
3839            decoder: &mut fidl::encoding::Decoder<'_, D>,
3840            offset: usize,
3841            _depth: fidl::encoding::Depth,
3842        ) -> fidl::Result<()> {
3843            decoder.debug_check_bounds::<Self>(offset);
3844            // Verify that padding bytes are zero.
3845            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
3846            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3847            let mask = 0xffffff0000000000u64;
3848            let maskedval = padval & mask;
3849            if maskedval != 0 {
3850                return Err(fidl::Error::NonZeroPadding {
3851                    padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
3852                });
3853            }
3854            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.sta_addr, decoder, offset + 0, _depth)?;
3855            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.factory_addr, decoder, offset + 6, _depth)?;
3856            fidl::decode!(
3857                fidl_fuchsia_wlan_common__common::WlanMacRole,
3858                D,
3859                &mut self.role,
3860                decoder,
3861                offset + 12,
3862                _depth
3863            )?;
3864            fidl::decode!(fidl::encoding::Vector<BandCapability, 16>, D, &mut self.bands, decoder, offset + 16, _depth)?;
3865            fidl::decode!(
3866                u32,
3867                D,
3868                &mut self.softmac_hardware_capability,
3869                decoder,
3870                offset + 32,
3871                _depth
3872            )?;
3873            fidl::decode!(bool, D, &mut self.qos_capable, decoder, offset + 36, _depth)?;
3874            Ok(())
3875        }
3876    }
3877
3878    impl fidl::encoding::ValueTypeMarker for DisassociateConfirm {
3879        type Borrowed<'a> = &'a Self;
3880        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3881            value
3882        }
3883    }
3884
3885    unsafe impl fidl::encoding::TypeMarker for DisassociateConfirm {
3886        type Owned = Self;
3887
3888        #[inline(always)]
3889        fn inline_align(_context: fidl::encoding::Context) -> usize {
3890            4
3891        }
3892
3893        #[inline(always)]
3894        fn inline_size(_context: fidl::encoding::Context) -> usize {
3895            4
3896        }
3897        #[inline(always)]
3898        fn encode_is_copy() -> bool {
3899            true
3900        }
3901
3902        #[inline(always)]
3903        fn decode_is_copy() -> bool {
3904            true
3905        }
3906    }
3907
3908    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisassociateConfirm, D>
3909        for &DisassociateConfirm
3910    {
3911        #[inline]
3912        unsafe fn encode(
3913            self,
3914            encoder: &mut fidl::encoding::Encoder<'_, D>,
3915            offset: usize,
3916            _depth: fidl::encoding::Depth,
3917        ) -> fidl::Result<()> {
3918            encoder.debug_check_bounds::<DisassociateConfirm>(offset);
3919            unsafe {
3920                // Copy the object into the buffer.
3921                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3922                (buf_ptr as *mut DisassociateConfirm)
3923                    .write_unaligned((self as *const DisassociateConfirm).read());
3924                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3925                // done second because the memcpy will write garbage to these bytes.
3926            }
3927            Ok(())
3928        }
3929    }
3930    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
3931        fidl::encoding::Encode<DisassociateConfirm, D> for (T0,)
3932    {
3933        #[inline]
3934        unsafe fn encode(
3935            self,
3936            encoder: &mut fidl::encoding::Encoder<'_, D>,
3937            offset: usize,
3938            depth: fidl::encoding::Depth,
3939        ) -> fidl::Result<()> {
3940            encoder.debug_check_bounds::<DisassociateConfirm>(offset);
3941            // Zero out padding regions. There's no need to apply masks
3942            // because the unmasked parts will be overwritten by fields.
3943            // Write the fields.
3944            self.0.encode(encoder, offset + 0, depth)?;
3945            Ok(())
3946        }
3947    }
3948
3949    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisassociateConfirm {
3950        #[inline(always)]
3951        fn new_empty() -> Self {
3952            Self { status: fidl::new_empty!(i32, D) }
3953        }
3954
3955        #[inline]
3956        unsafe fn decode(
3957            &mut self,
3958            decoder: &mut fidl::encoding::Decoder<'_, D>,
3959            offset: usize,
3960            _depth: fidl::encoding::Depth,
3961        ) -> fidl::Result<()> {
3962            decoder.debug_check_bounds::<Self>(offset);
3963            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3964            // Verify that padding bytes are zero.
3965            // Copy from the buffer into the object.
3966            unsafe {
3967                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
3968            }
3969            Ok(())
3970        }
3971    }
3972
3973    impl fidl::encoding::ValueTypeMarker for DisassociateIndication {
3974        type Borrowed<'a> = &'a Self;
3975        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3976            value
3977        }
3978    }
3979
3980    unsafe impl fidl::encoding::TypeMarker for DisassociateIndication {
3981        type Owned = Self;
3982
3983        #[inline(always)]
3984        fn inline_align(_context: fidl::encoding::Context) -> usize {
3985            2
3986        }
3987
3988        #[inline(always)]
3989        fn inline_size(_context: fidl::encoding::Context) -> usize {
3990            10
3991        }
3992    }
3993
3994    unsafe impl<D: fidl::encoding::ResourceDialect>
3995        fidl::encoding::Encode<DisassociateIndication, D> for &DisassociateIndication
3996    {
3997        #[inline]
3998        unsafe fn encode(
3999            self,
4000            encoder: &mut fidl::encoding::Encoder<'_, D>,
4001            offset: usize,
4002            _depth: fidl::encoding::Depth,
4003        ) -> fidl::Result<()> {
4004            encoder.debug_check_bounds::<DisassociateIndication>(offset);
4005            // Delegate to tuple encoding.
4006            fidl::encoding::Encode::<DisassociateIndication, D>::encode(
4007                (
4008                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
4009                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
4010                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.locally_initiated),
4011                ),
4012                encoder, offset, _depth
4013            )
4014        }
4015    }
4016    unsafe impl<
4017        D: fidl::encoding::ResourceDialect,
4018        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4019        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
4020        T2: fidl::encoding::Encode<bool, D>,
4021    > fidl::encoding::Encode<DisassociateIndication, D> for (T0, T1, T2)
4022    {
4023        #[inline]
4024        unsafe fn encode(
4025            self,
4026            encoder: &mut fidl::encoding::Encoder<'_, D>,
4027            offset: usize,
4028            depth: fidl::encoding::Depth,
4029        ) -> fidl::Result<()> {
4030            encoder.debug_check_bounds::<DisassociateIndication>(offset);
4031            // Zero out padding regions. There's no need to apply masks
4032            // because the unmasked parts will be overwritten by fields.
4033            unsafe {
4034                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4035                (ptr as *mut u16).write_unaligned(0);
4036            }
4037            // Write the fields.
4038            self.0.encode(encoder, offset + 0, depth)?;
4039            self.1.encode(encoder, offset + 6, depth)?;
4040            self.2.encode(encoder, offset + 8, depth)?;
4041            Ok(())
4042        }
4043    }
4044
4045    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4046        for DisassociateIndication
4047    {
4048        #[inline(always)]
4049        fn new_empty() -> Self {
4050            Self {
4051                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4052                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
4053                locally_initiated: fidl::new_empty!(bool, D),
4054            }
4055        }
4056
4057        #[inline]
4058        unsafe fn decode(
4059            &mut self,
4060            decoder: &mut fidl::encoding::Decoder<'_, D>,
4061            offset: usize,
4062            _depth: fidl::encoding::Depth,
4063        ) -> fidl::Result<()> {
4064            decoder.debug_check_bounds::<Self>(offset);
4065            // Verify that padding bytes are zero.
4066            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4067            let padval = unsafe { (ptr as *const u16).read_unaligned() };
4068            let mask = 0xff00u16;
4069            let maskedval = padval & mask;
4070            if maskedval != 0 {
4071                return Err(fidl::Error::NonZeroPadding {
4072                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4073                });
4074            }
4075            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
4076            fidl::decode!(
4077                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
4078                D,
4079                &mut self.reason_code,
4080                decoder,
4081                offset + 6,
4082                _depth
4083            )?;
4084            fidl::decode!(bool, D, &mut self.locally_initiated, decoder, offset + 8, _depth)?;
4085            Ok(())
4086        }
4087    }
4088
4089    impl fidl::encoding::ValueTypeMarker for DisassociateRequest {
4090        type Borrowed<'a> = &'a Self;
4091        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4092            value
4093        }
4094    }
4095
4096    unsafe impl fidl::encoding::TypeMarker for DisassociateRequest {
4097        type Owned = Self;
4098
4099        #[inline(always)]
4100        fn inline_align(_context: fidl::encoding::Context) -> usize {
4101            2
4102        }
4103
4104        #[inline(always)]
4105        fn inline_size(_context: fidl::encoding::Context) -> usize {
4106            8
4107        }
4108    }
4109
4110    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisassociateRequest, D>
4111        for &DisassociateRequest
4112    {
4113        #[inline]
4114        unsafe fn encode(
4115            self,
4116            encoder: &mut fidl::encoding::Encoder<'_, D>,
4117            offset: usize,
4118            _depth: fidl::encoding::Depth,
4119        ) -> fidl::Result<()> {
4120            encoder.debug_check_bounds::<DisassociateRequest>(offset);
4121            // Delegate to tuple encoding.
4122            fidl::encoding::Encode::<DisassociateRequest, D>::encode(
4123                (
4124                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
4125                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
4126                ),
4127                encoder, offset, _depth
4128            )
4129        }
4130    }
4131    unsafe impl<
4132        D: fidl::encoding::ResourceDialect,
4133        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4134        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
4135    > fidl::encoding::Encode<DisassociateRequest, D> for (T0, T1)
4136    {
4137        #[inline]
4138        unsafe fn encode(
4139            self,
4140            encoder: &mut fidl::encoding::Encoder<'_, D>,
4141            offset: usize,
4142            depth: fidl::encoding::Depth,
4143        ) -> fidl::Result<()> {
4144            encoder.debug_check_bounds::<DisassociateRequest>(offset);
4145            // Zero out padding regions. There's no need to apply masks
4146            // because the unmasked parts will be overwritten by fields.
4147            // Write the fields.
4148            self.0.encode(encoder, offset + 0, depth)?;
4149            self.1.encode(encoder, offset + 6, depth)?;
4150            Ok(())
4151        }
4152    }
4153
4154    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisassociateRequest {
4155        #[inline(always)]
4156        fn new_empty() -> Self {
4157            Self {
4158                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4159                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
4160            }
4161        }
4162
4163        #[inline]
4164        unsafe fn decode(
4165            &mut self,
4166            decoder: &mut fidl::encoding::Decoder<'_, D>,
4167            offset: usize,
4168            _depth: fidl::encoding::Depth,
4169        ) -> fidl::Result<()> {
4170            decoder.debug_check_bounds::<Self>(offset);
4171            // Verify that padding bytes are zero.
4172            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
4173            fidl::decode!(
4174                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
4175                D,
4176                &mut self.reason_code,
4177                decoder,
4178                offset + 6,
4179                _depth
4180            )?;
4181            Ok(())
4182        }
4183    }
4184
4185    impl fidl::encoding::ValueTypeMarker for EapolConfirm {
4186        type Borrowed<'a> = &'a Self;
4187        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4188            value
4189        }
4190    }
4191
4192    unsafe impl fidl::encoding::TypeMarker for EapolConfirm {
4193        type Owned = Self;
4194
4195        #[inline(always)]
4196        fn inline_align(_context: fidl::encoding::Context) -> usize {
4197            4
4198        }
4199
4200        #[inline(always)]
4201        fn inline_size(_context: fidl::encoding::Context) -> usize {
4202            12
4203        }
4204    }
4205
4206    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolConfirm, D>
4207        for &EapolConfirm
4208    {
4209        #[inline]
4210        unsafe fn encode(
4211            self,
4212            encoder: &mut fidl::encoding::Encoder<'_, D>,
4213            offset: usize,
4214            _depth: fidl::encoding::Depth,
4215        ) -> fidl::Result<()> {
4216            encoder.debug_check_bounds::<EapolConfirm>(offset);
4217            // Delegate to tuple encoding.
4218            fidl::encoding::Encode::<EapolConfirm, D>::encode(
4219                (
4220                    <EapolResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
4221                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
4222                        &self.dst_addr,
4223                    ),
4224                ),
4225                encoder,
4226                offset,
4227                _depth,
4228            )
4229        }
4230    }
4231    unsafe impl<
4232        D: fidl::encoding::ResourceDialect,
4233        T0: fidl::encoding::Encode<EapolResultCode, D>,
4234        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4235    > fidl::encoding::Encode<EapolConfirm, D> for (T0, T1)
4236    {
4237        #[inline]
4238        unsafe fn encode(
4239            self,
4240            encoder: &mut fidl::encoding::Encoder<'_, D>,
4241            offset: usize,
4242            depth: fidl::encoding::Depth,
4243        ) -> fidl::Result<()> {
4244            encoder.debug_check_bounds::<EapolConfirm>(offset);
4245            // Zero out padding regions. There's no need to apply masks
4246            // because the unmasked parts will be overwritten by fields.
4247            unsafe {
4248                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4249                (ptr as *mut u32).write_unaligned(0);
4250            }
4251            // Write the fields.
4252            self.0.encode(encoder, offset + 0, depth)?;
4253            self.1.encode(encoder, offset + 4, depth)?;
4254            Ok(())
4255        }
4256    }
4257
4258    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolConfirm {
4259        #[inline(always)]
4260        fn new_empty() -> Self {
4261            Self {
4262                result_code: fidl::new_empty!(EapolResultCode, D),
4263                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4264            }
4265        }
4266
4267        #[inline]
4268        unsafe fn decode(
4269            &mut self,
4270            decoder: &mut fidl::encoding::Decoder<'_, D>,
4271            offset: usize,
4272            _depth: fidl::encoding::Depth,
4273        ) -> fidl::Result<()> {
4274            decoder.debug_check_bounds::<Self>(offset);
4275            // Verify that padding bytes are zero.
4276            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4277            let padval = unsafe { (ptr as *const u32).read_unaligned() };
4278            let mask = 0xffff0000u32;
4279            let maskedval = padval & mask;
4280            if maskedval != 0 {
4281                return Err(fidl::Error::NonZeroPadding {
4282                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4283                });
4284            }
4285            fidl::decode!(EapolResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
4286            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 4, _depth)?;
4287            Ok(())
4288        }
4289    }
4290
4291    impl fidl::encoding::ValueTypeMarker for EapolIndication {
4292        type Borrowed<'a> = &'a Self;
4293        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4294            value
4295        }
4296    }
4297
4298    unsafe impl fidl::encoding::TypeMarker for EapolIndication {
4299        type Owned = Self;
4300
4301        #[inline(always)]
4302        fn inline_align(_context: fidl::encoding::Context) -> usize {
4303            8
4304        }
4305
4306        #[inline(always)]
4307        fn inline_size(_context: fidl::encoding::Context) -> usize {
4308            32
4309        }
4310    }
4311
4312    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolIndication, D>
4313        for &EapolIndication
4314    {
4315        #[inline]
4316        unsafe fn encode(
4317            self,
4318            encoder: &mut fidl::encoding::Encoder<'_, D>,
4319            offset: usize,
4320            _depth: fidl::encoding::Depth,
4321        ) -> fidl::Result<()> {
4322            encoder.debug_check_bounds::<EapolIndication>(offset);
4323            // Delegate to tuple encoding.
4324            fidl::encoding::Encode::<EapolIndication, D>::encode(
4325                (
4326                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.src_addr),
4327                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.dst_addr),
4328                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4329                ),
4330                encoder, offset, _depth
4331            )
4332        }
4333    }
4334    unsafe impl<
4335        D: fidl::encoding::ResourceDialect,
4336        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4337        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4338        T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4339    > fidl::encoding::Encode<EapolIndication, D> for (T0, T1, T2)
4340    {
4341        #[inline]
4342        unsafe fn encode(
4343            self,
4344            encoder: &mut fidl::encoding::Encoder<'_, D>,
4345            offset: usize,
4346            depth: fidl::encoding::Depth,
4347        ) -> fidl::Result<()> {
4348            encoder.debug_check_bounds::<EapolIndication>(offset);
4349            // Zero out padding regions. There's no need to apply masks
4350            // because the unmasked parts will be overwritten by fields.
4351            unsafe {
4352                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4353                (ptr as *mut u64).write_unaligned(0);
4354            }
4355            // Write the fields.
4356            self.0.encode(encoder, offset + 0, depth)?;
4357            self.1.encode(encoder, offset + 6, depth)?;
4358            self.2.encode(encoder, offset + 16, depth)?;
4359            Ok(())
4360        }
4361    }
4362
4363    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolIndication {
4364        #[inline(always)]
4365        fn new_empty() -> Self {
4366            Self {
4367                src_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4368                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4369                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4370            }
4371        }
4372
4373        #[inline]
4374        unsafe fn decode(
4375            &mut self,
4376            decoder: &mut fidl::encoding::Decoder<'_, D>,
4377            offset: usize,
4378            _depth: fidl::encoding::Depth,
4379        ) -> fidl::Result<()> {
4380            decoder.debug_check_bounds::<Self>(offset);
4381            // Verify that padding bytes are zero.
4382            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4383            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4384            let mask = 0xffffffff00000000u64;
4385            let maskedval = padval & mask;
4386            if maskedval != 0 {
4387                return Err(fidl::Error::NonZeroPadding {
4388                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4389                });
4390            }
4391            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.src_addr, decoder, offset + 0, _depth)?;
4392            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 6, _depth)?;
4393            fidl::decode!(
4394                fidl::encoding::UnboundedVector<u8>,
4395                D,
4396                &mut self.data,
4397                decoder,
4398                offset + 16,
4399                _depth
4400            )?;
4401            Ok(())
4402        }
4403    }
4404
4405    impl fidl::encoding::ValueTypeMarker for EapolRequest {
4406        type Borrowed<'a> = &'a Self;
4407        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4408            value
4409        }
4410    }
4411
4412    unsafe impl fidl::encoding::TypeMarker for EapolRequest {
4413        type Owned = Self;
4414
4415        #[inline(always)]
4416        fn inline_align(_context: fidl::encoding::Context) -> usize {
4417            8
4418        }
4419
4420        #[inline(always)]
4421        fn inline_size(_context: fidl::encoding::Context) -> usize {
4422            32
4423        }
4424    }
4425
4426    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolRequest, D>
4427        for &EapolRequest
4428    {
4429        #[inline]
4430        unsafe fn encode(
4431            self,
4432            encoder: &mut fidl::encoding::Encoder<'_, D>,
4433            offset: usize,
4434            _depth: fidl::encoding::Depth,
4435        ) -> fidl::Result<()> {
4436            encoder.debug_check_bounds::<EapolRequest>(offset);
4437            // Delegate to tuple encoding.
4438            fidl::encoding::Encode::<EapolRequest, D>::encode(
4439                (
4440                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.src_addr),
4441                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.dst_addr),
4442                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4443                ),
4444                encoder, offset, _depth
4445            )
4446        }
4447    }
4448    unsafe impl<
4449        D: fidl::encoding::ResourceDialect,
4450        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4451        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4452        T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4453    > fidl::encoding::Encode<EapolRequest, D> for (T0, T1, T2)
4454    {
4455        #[inline]
4456        unsafe fn encode(
4457            self,
4458            encoder: &mut fidl::encoding::Encoder<'_, D>,
4459            offset: usize,
4460            depth: fidl::encoding::Depth,
4461        ) -> fidl::Result<()> {
4462            encoder.debug_check_bounds::<EapolRequest>(offset);
4463            // Zero out padding regions. There's no need to apply masks
4464            // because the unmasked parts will be overwritten by fields.
4465            unsafe {
4466                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4467                (ptr as *mut u64).write_unaligned(0);
4468            }
4469            // Write the fields.
4470            self.0.encode(encoder, offset + 0, depth)?;
4471            self.1.encode(encoder, offset + 6, depth)?;
4472            self.2.encode(encoder, offset + 16, depth)?;
4473            Ok(())
4474        }
4475    }
4476
4477    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolRequest {
4478        #[inline(always)]
4479        fn new_empty() -> Self {
4480            Self {
4481                src_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4482                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4483                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4484            }
4485        }
4486
4487        #[inline]
4488        unsafe fn decode(
4489            &mut self,
4490            decoder: &mut fidl::encoding::Decoder<'_, D>,
4491            offset: usize,
4492            _depth: fidl::encoding::Depth,
4493        ) -> fidl::Result<()> {
4494            decoder.debug_check_bounds::<Self>(offset);
4495            // Verify that padding bytes are zero.
4496            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4497            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4498            let mask = 0xffffffff00000000u64;
4499            let maskedval = padval & mask;
4500            if maskedval != 0 {
4501                return Err(fidl::Error::NonZeroPadding {
4502                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4503                });
4504            }
4505            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.src_addr, decoder, offset + 0, _depth)?;
4506            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 6, _depth)?;
4507            fidl::decode!(
4508                fidl::encoding::UnboundedVector<u8>,
4509                D,
4510                &mut self.data,
4511                decoder,
4512                offset + 16,
4513                _depth
4514            )?;
4515            Ok(())
4516        }
4517    }
4518
4519    impl fidl::encoding::ValueTypeMarker for MlmeGetApfPacketFilterEnabledResponse {
4520        type Borrowed<'a> = &'a Self;
4521        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4522            value
4523        }
4524    }
4525
4526    unsafe impl fidl::encoding::TypeMarker for MlmeGetApfPacketFilterEnabledResponse {
4527        type Owned = Self;
4528
4529        #[inline(always)]
4530        fn inline_align(_context: fidl::encoding::Context) -> usize {
4531            1
4532        }
4533
4534        #[inline(always)]
4535        fn inline_size(_context: fidl::encoding::Context) -> usize {
4536            1
4537        }
4538    }
4539
4540    unsafe impl<D: fidl::encoding::ResourceDialect>
4541        fidl::encoding::Encode<MlmeGetApfPacketFilterEnabledResponse, D>
4542        for &MlmeGetApfPacketFilterEnabledResponse
4543    {
4544        #[inline]
4545        unsafe fn encode(
4546            self,
4547            encoder: &mut fidl::encoding::Encoder<'_, D>,
4548            offset: usize,
4549            _depth: fidl::encoding::Depth,
4550        ) -> fidl::Result<()> {
4551            encoder.debug_check_bounds::<MlmeGetApfPacketFilterEnabledResponse>(offset);
4552            // Delegate to tuple encoding.
4553            fidl::encoding::Encode::<MlmeGetApfPacketFilterEnabledResponse, D>::encode(
4554                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enabled),),
4555                encoder,
4556                offset,
4557                _depth,
4558            )
4559        }
4560    }
4561    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
4562        fidl::encoding::Encode<MlmeGetApfPacketFilterEnabledResponse, D> for (T0,)
4563    {
4564        #[inline]
4565        unsafe fn encode(
4566            self,
4567            encoder: &mut fidl::encoding::Encoder<'_, D>,
4568            offset: usize,
4569            depth: fidl::encoding::Depth,
4570        ) -> fidl::Result<()> {
4571            encoder.debug_check_bounds::<MlmeGetApfPacketFilterEnabledResponse>(offset);
4572            // Zero out padding regions. There's no need to apply masks
4573            // because the unmasked parts will be overwritten by fields.
4574            // Write the fields.
4575            self.0.encode(encoder, offset + 0, depth)?;
4576            Ok(())
4577        }
4578    }
4579
4580    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4581        for MlmeGetApfPacketFilterEnabledResponse
4582    {
4583        #[inline(always)]
4584        fn new_empty() -> Self {
4585            Self { enabled: fidl::new_empty!(bool, D) }
4586        }
4587
4588        #[inline]
4589        unsafe fn decode(
4590            &mut self,
4591            decoder: &mut fidl::encoding::Decoder<'_, D>,
4592            offset: usize,
4593            _depth: fidl::encoding::Depth,
4594        ) -> fidl::Result<()> {
4595            decoder.debug_check_bounds::<Self>(offset);
4596            // Verify that padding bytes are zero.
4597            fidl::decode!(bool, D, &mut self.enabled, decoder, offset + 0, _depth)?;
4598            Ok(())
4599        }
4600    }
4601
4602    impl fidl::encoding::ValueTypeMarker for MlmeGetSignalReportResponse {
4603        type Borrowed<'a> = &'a Self;
4604        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4605            value
4606        }
4607    }
4608
4609    unsafe impl fidl::encoding::TypeMarker for MlmeGetSignalReportResponse {
4610        type Owned = Self;
4611
4612        #[inline(always)]
4613        fn inline_align(_context: fidl::encoding::Context) -> usize {
4614            8
4615        }
4616
4617        #[inline(always)]
4618        fn inline_size(_context: fidl::encoding::Context) -> usize {
4619            16
4620        }
4621    }
4622
4623    unsafe impl<D: fidl::encoding::ResourceDialect>
4624        fidl::encoding::Encode<MlmeGetSignalReportResponse, D> for &MlmeGetSignalReportResponse
4625    {
4626        #[inline]
4627        unsafe fn encode(
4628            self,
4629            encoder: &mut fidl::encoding::Encoder<'_, D>,
4630            offset: usize,
4631            _depth: fidl::encoding::Depth,
4632        ) -> fidl::Result<()> {
4633            encoder.debug_check_bounds::<MlmeGetSignalReportResponse>(offset);
4634            // Delegate to tuple encoding.
4635            fidl::encoding::Encode::<MlmeGetSignalReportResponse, D>::encode(
4636                (
4637                    <fidl_fuchsia_wlan_stats__common::SignalReport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
4638                ),
4639                encoder, offset, _depth
4640            )
4641        }
4642    }
4643    unsafe impl<
4644        D: fidl::encoding::ResourceDialect,
4645        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::SignalReport, D>,
4646    > fidl::encoding::Encode<MlmeGetSignalReportResponse, D> for (T0,)
4647    {
4648        #[inline]
4649        unsafe fn encode(
4650            self,
4651            encoder: &mut fidl::encoding::Encoder<'_, D>,
4652            offset: usize,
4653            depth: fidl::encoding::Depth,
4654        ) -> fidl::Result<()> {
4655            encoder.debug_check_bounds::<MlmeGetSignalReportResponse>(offset);
4656            // Zero out padding regions. There's no need to apply masks
4657            // because the unmasked parts will be overwritten by fields.
4658            // Write the fields.
4659            self.0.encode(encoder, offset + 0, depth)?;
4660            Ok(())
4661        }
4662    }
4663
4664    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4665        for MlmeGetSignalReportResponse
4666    {
4667        #[inline(always)]
4668        fn new_empty() -> Self {
4669            Self { resp: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::SignalReport, D) }
4670        }
4671
4672        #[inline]
4673        unsafe fn decode(
4674            &mut self,
4675            decoder: &mut fidl::encoding::Decoder<'_, D>,
4676            offset: usize,
4677            _depth: fidl::encoding::Depth,
4678        ) -> fidl::Result<()> {
4679            decoder.debug_check_bounds::<Self>(offset);
4680            // Verify that padding bytes are zero.
4681            fidl::decode!(
4682                fidl_fuchsia_wlan_stats__common::SignalReport,
4683                D,
4684                &mut self.resp,
4685                decoder,
4686                offset + 0,
4687                _depth
4688            )?;
4689            Ok(())
4690        }
4691    }
4692
4693    impl fidl::encoding::ValueTypeMarker for MlmeQueryTelemetrySupportResponse {
4694        type Borrowed<'a> = &'a Self;
4695        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4696            value
4697        }
4698    }
4699
4700    unsafe impl fidl::encoding::TypeMarker for MlmeQueryTelemetrySupportResponse {
4701        type Owned = Self;
4702
4703        #[inline(always)]
4704        fn inline_align(_context: fidl::encoding::Context) -> usize {
4705            8
4706        }
4707
4708        #[inline(always)]
4709        fn inline_size(_context: fidl::encoding::Context) -> usize {
4710            16
4711        }
4712    }
4713
4714    unsafe impl<D: fidl::encoding::ResourceDialect>
4715        fidl::encoding::Encode<MlmeQueryTelemetrySupportResponse, D>
4716        for &MlmeQueryTelemetrySupportResponse
4717    {
4718        #[inline]
4719        unsafe fn encode(
4720            self,
4721            encoder: &mut fidl::encoding::Encoder<'_, D>,
4722            offset: usize,
4723            _depth: fidl::encoding::Depth,
4724        ) -> fidl::Result<()> {
4725            encoder.debug_check_bounds::<MlmeQueryTelemetrySupportResponse>(offset);
4726            // Delegate to tuple encoding.
4727            fidl::encoding::Encode::<MlmeQueryTelemetrySupportResponse, D>::encode(
4728                (
4729                    <fidl_fuchsia_wlan_stats__common::TelemetrySupport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
4730                ),
4731                encoder, offset, _depth
4732            )
4733        }
4734    }
4735    unsafe impl<
4736        D: fidl::encoding::ResourceDialect,
4737        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::TelemetrySupport, D>,
4738    > fidl::encoding::Encode<MlmeQueryTelemetrySupportResponse, D> for (T0,)
4739    {
4740        #[inline]
4741        unsafe fn encode(
4742            self,
4743            encoder: &mut fidl::encoding::Encoder<'_, D>,
4744            offset: usize,
4745            depth: fidl::encoding::Depth,
4746        ) -> fidl::Result<()> {
4747            encoder.debug_check_bounds::<MlmeQueryTelemetrySupportResponse>(offset);
4748            // Zero out padding regions. There's no need to apply masks
4749            // because the unmasked parts will be overwritten by fields.
4750            // Write the fields.
4751            self.0.encode(encoder, offset + 0, depth)?;
4752            Ok(())
4753        }
4754    }
4755
4756    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4757        for MlmeQueryTelemetrySupportResponse
4758    {
4759        #[inline(always)]
4760        fn new_empty() -> Self {
4761            Self { resp: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::TelemetrySupport, D) }
4762        }
4763
4764        #[inline]
4765        unsafe fn decode(
4766            &mut self,
4767            decoder: &mut fidl::encoding::Decoder<'_, D>,
4768            offset: usize,
4769            _depth: fidl::encoding::Depth,
4770        ) -> fidl::Result<()> {
4771            decoder.debug_check_bounds::<Self>(offset);
4772            // Verify that padding bytes are zero.
4773            fidl::decode!(
4774                fidl_fuchsia_wlan_stats__common::TelemetrySupport,
4775                D,
4776                &mut self.resp,
4777                decoder,
4778                offset + 0,
4779                _depth
4780            )?;
4781            Ok(())
4782        }
4783    }
4784
4785    impl fidl::encoding::ValueTypeMarker for MlmeReadApfPacketFilterDataResponse {
4786        type Borrowed<'a> = &'a Self;
4787        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4788            value
4789        }
4790    }
4791
4792    unsafe impl fidl::encoding::TypeMarker for MlmeReadApfPacketFilterDataResponse {
4793        type Owned = Self;
4794
4795        #[inline(always)]
4796        fn inline_align(_context: fidl::encoding::Context) -> usize {
4797            8
4798        }
4799
4800        #[inline(always)]
4801        fn inline_size(_context: fidl::encoding::Context) -> usize {
4802            16
4803        }
4804    }
4805
4806    unsafe impl<D: fidl::encoding::ResourceDialect>
4807        fidl::encoding::Encode<MlmeReadApfPacketFilterDataResponse, D>
4808        for &MlmeReadApfPacketFilterDataResponse
4809    {
4810        #[inline]
4811        unsafe fn encode(
4812            self,
4813            encoder: &mut fidl::encoding::Encoder<'_, D>,
4814            offset: usize,
4815            _depth: fidl::encoding::Depth,
4816        ) -> fidl::Result<()> {
4817            encoder.debug_check_bounds::<MlmeReadApfPacketFilterDataResponse>(offset);
4818            // Delegate to tuple encoding.
4819            fidl::encoding::Encode::<MlmeReadApfPacketFilterDataResponse, D>::encode(
4820                (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
4821                    &self.memory,
4822                ),),
4823                encoder,
4824                offset,
4825                _depth,
4826            )
4827        }
4828    }
4829    unsafe impl<
4830        D: fidl::encoding::ResourceDialect,
4831        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4832    > fidl::encoding::Encode<MlmeReadApfPacketFilterDataResponse, D> for (T0,)
4833    {
4834        #[inline]
4835        unsafe fn encode(
4836            self,
4837            encoder: &mut fidl::encoding::Encoder<'_, D>,
4838            offset: usize,
4839            depth: fidl::encoding::Depth,
4840        ) -> fidl::Result<()> {
4841            encoder.debug_check_bounds::<MlmeReadApfPacketFilterDataResponse>(offset);
4842            // Zero out padding regions. There's no need to apply masks
4843            // because the unmasked parts will be overwritten by fields.
4844            // Write the fields.
4845            self.0.encode(encoder, offset + 0, depth)?;
4846            Ok(())
4847        }
4848    }
4849
4850    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4851        for MlmeReadApfPacketFilterDataResponse
4852    {
4853        #[inline(always)]
4854        fn new_empty() -> Self {
4855            Self { memory: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
4856        }
4857
4858        #[inline]
4859        unsafe fn decode(
4860            &mut self,
4861            decoder: &mut fidl::encoding::Decoder<'_, D>,
4862            offset: usize,
4863            _depth: fidl::encoding::Depth,
4864        ) -> fidl::Result<()> {
4865            decoder.debug_check_bounds::<Self>(offset);
4866            // Verify that padding bytes are zero.
4867            fidl::decode!(
4868                fidl::encoding::UnboundedVector<u8>,
4869                D,
4870                &mut self.memory,
4871                decoder,
4872                offset + 0,
4873                _depth
4874            )?;
4875            Ok(())
4876        }
4877    }
4878
4879    impl fidl::encoding::ValueTypeMarker for MinstrelListResponse {
4880        type Borrowed<'a> = &'a Self;
4881        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4882            value
4883        }
4884    }
4885
4886    unsafe impl fidl::encoding::TypeMarker for MinstrelListResponse {
4887        type Owned = Self;
4888
4889        #[inline(always)]
4890        fn inline_align(_context: fidl::encoding::Context) -> usize {
4891            8
4892        }
4893
4894        #[inline(always)]
4895        fn inline_size(_context: fidl::encoding::Context) -> usize {
4896            16
4897        }
4898    }
4899
4900    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelListResponse, D>
4901        for &MinstrelListResponse
4902    {
4903        #[inline]
4904        unsafe fn encode(
4905            self,
4906            encoder: &mut fidl::encoding::Encoder<'_, D>,
4907            offset: usize,
4908            _depth: fidl::encoding::Depth,
4909        ) -> fidl::Result<()> {
4910            encoder.debug_check_bounds::<MinstrelListResponse>(offset);
4911            // Delegate to tuple encoding.
4912            fidl::encoding::Encode::<MinstrelListResponse, D>::encode(
4913                (
4914                    <fidl_fuchsia_wlan_minstrel__common::Peers as fidl::encoding::ValueTypeMarker>::borrow(&self.peers),
4915                ),
4916                encoder, offset, _depth
4917            )
4918        }
4919    }
4920    unsafe impl<
4921        D: fidl::encoding::ResourceDialect,
4922        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_minstrel__common::Peers, D>,
4923    > fidl::encoding::Encode<MinstrelListResponse, D> for (T0,)
4924    {
4925        #[inline]
4926        unsafe fn encode(
4927            self,
4928            encoder: &mut fidl::encoding::Encoder<'_, D>,
4929            offset: usize,
4930            depth: fidl::encoding::Depth,
4931        ) -> fidl::Result<()> {
4932            encoder.debug_check_bounds::<MinstrelListResponse>(offset);
4933            // Zero out padding regions. There's no need to apply masks
4934            // because the unmasked parts will be overwritten by fields.
4935            // Write the fields.
4936            self.0.encode(encoder, offset + 0, depth)?;
4937            Ok(())
4938        }
4939    }
4940
4941    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelListResponse {
4942        #[inline(always)]
4943        fn new_empty() -> Self {
4944            Self { peers: fidl::new_empty!(fidl_fuchsia_wlan_minstrel__common::Peers, D) }
4945        }
4946
4947        #[inline]
4948        unsafe fn decode(
4949            &mut self,
4950            decoder: &mut fidl::encoding::Decoder<'_, D>,
4951            offset: usize,
4952            _depth: fidl::encoding::Depth,
4953        ) -> fidl::Result<()> {
4954            decoder.debug_check_bounds::<Self>(offset);
4955            // Verify that padding bytes are zero.
4956            fidl::decode!(
4957                fidl_fuchsia_wlan_minstrel__common::Peers,
4958                D,
4959                &mut self.peers,
4960                decoder,
4961                offset + 0,
4962                _depth
4963            )?;
4964            Ok(())
4965        }
4966    }
4967
4968    impl fidl::encoding::ValueTypeMarker for MinstrelStatsRequest {
4969        type Borrowed<'a> = &'a Self;
4970        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4971            value
4972        }
4973    }
4974
4975    unsafe impl fidl::encoding::TypeMarker for MinstrelStatsRequest {
4976        type Owned = Self;
4977
4978        #[inline(always)]
4979        fn inline_align(_context: fidl::encoding::Context) -> usize {
4980            1
4981        }
4982
4983        #[inline(always)]
4984        fn inline_size(_context: fidl::encoding::Context) -> usize {
4985            6
4986        }
4987        #[inline(always)]
4988        fn encode_is_copy() -> bool {
4989            true
4990        }
4991
4992        #[inline(always)]
4993        fn decode_is_copy() -> bool {
4994            true
4995        }
4996    }
4997
4998    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelStatsRequest, D>
4999        for &MinstrelStatsRequest
5000    {
5001        #[inline]
5002        unsafe fn encode(
5003            self,
5004            encoder: &mut fidl::encoding::Encoder<'_, D>,
5005            offset: usize,
5006            _depth: fidl::encoding::Depth,
5007        ) -> fidl::Result<()> {
5008            encoder.debug_check_bounds::<MinstrelStatsRequest>(offset);
5009            unsafe {
5010                // Copy the object into the buffer.
5011                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5012                (buf_ptr as *mut MinstrelStatsRequest)
5013                    .write_unaligned((self as *const MinstrelStatsRequest).read());
5014                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
5015                // done second because the memcpy will write garbage to these bytes.
5016            }
5017            Ok(())
5018        }
5019    }
5020    unsafe impl<
5021        D: fidl::encoding::ResourceDialect,
5022        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
5023    > fidl::encoding::Encode<MinstrelStatsRequest, D> for (T0,)
5024    {
5025        #[inline]
5026        unsafe fn encode(
5027            self,
5028            encoder: &mut fidl::encoding::Encoder<'_, D>,
5029            offset: usize,
5030            depth: fidl::encoding::Depth,
5031        ) -> fidl::Result<()> {
5032            encoder.debug_check_bounds::<MinstrelStatsRequest>(offset);
5033            // Zero out padding regions. There's no need to apply masks
5034            // because the unmasked parts will be overwritten by fields.
5035            // Write the fields.
5036            self.0.encode(encoder, offset + 0, depth)?;
5037            Ok(())
5038        }
5039    }
5040
5041    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelStatsRequest {
5042        #[inline(always)]
5043        fn new_empty() -> Self {
5044            Self { peer_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
5045        }
5046
5047        #[inline]
5048        unsafe fn decode(
5049            &mut self,
5050            decoder: &mut fidl::encoding::Decoder<'_, D>,
5051            offset: usize,
5052            _depth: fidl::encoding::Depth,
5053        ) -> fidl::Result<()> {
5054            decoder.debug_check_bounds::<Self>(offset);
5055            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5056            // Verify that padding bytes are zero.
5057            // Copy from the buffer into the object.
5058            unsafe {
5059                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
5060            }
5061            Ok(())
5062        }
5063    }
5064
5065    impl fidl::encoding::ValueTypeMarker for MinstrelStatsResponse {
5066        type Borrowed<'a> = &'a Self;
5067        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5068            value
5069        }
5070    }
5071
5072    unsafe impl fidl::encoding::TypeMarker for MinstrelStatsResponse {
5073        type Owned = Self;
5074
5075        #[inline(always)]
5076        fn inline_align(_context: fidl::encoding::Context) -> usize {
5077            8
5078        }
5079
5080        #[inline(always)]
5081        fn inline_size(_context: fidl::encoding::Context) -> usize {
5082            8
5083        }
5084    }
5085
5086    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelStatsResponse, D>
5087        for &MinstrelStatsResponse
5088    {
5089        #[inline]
5090        unsafe fn encode(
5091            self,
5092            encoder: &mut fidl::encoding::Encoder<'_, D>,
5093            offset: usize,
5094            _depth: fidl::encoding::Depth,
5095        ) -> fidl::Result<()> {
5096            encoder.debug_check_bounds::<MinstrelStatsResponse>(offset);
5097            // Delegate to tuple encoding.
5098            fidl::encoding::Encode::<MinstrelStatsResponse, D>::encode(
5099                (
5100                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer),
5101                ),
5102                encoder, offset, _depth
5103            )
5104        }
5105    }
5106    unsafe impl<
5107        D: fidl::encoding::ResourceDialect,
5108        T0: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer>, D>,
5109    > fidl::encoding::Encode<MinstrelStatsResponse, D> for (T0,)
5110    {
5111        #[inline]
5112        unsafe fn encode(
5113            self,
5114            encoder: &mut fidl::encoding::Encoder<'_, D>,
5115            offset: usize,
5116            depth: fidl::encoding::Depth,
5117        ) -> fidl::Result<()> {
5118            encoder.debug_check_bounds::<MinstrelStatsResponse>(offset);
5119            // Zero out padding regions. There's no need to apply masks
5120            // because the unmasked parts will be overwritten by fields.
5121            // Write the fields.
5122            self.0.encode(encoder, offset + 0, depth)?;
5123            Ok(())
5124        }
5125    }
5126
5127    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelStatsResponse {
5128        #[inline(always)]
5129        fn new_empty() -> Self {
5130            Self {
5131                peer: fidl::new_empty!(
5132                    fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer>,
5133                    D
5134                ),
5135            }
5136        }
5137
5138        #[inline]
5139        unsafe fn decode(
5140            &mut self,
5141            decoder: &mut fidl::encoding::Decoder<'_, D>,
5142            offset: usize,
5143            _depth: fidl::encoding::Depth,
5144        ) -> fidl::Result<()> {
5145            decoder.debug_check_bounds::<Self>(offset);
5146            // Verify that padding bytes are zero.
5147            fidl::decode!(
5148                fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer>,
5149                D,
5150                &mut self.peer,
5151                decoder,
5152                offset + 0,
5153                _depth
5154            )?;
5155            Ok(())
5156        }
5157    }
5158
5159    impl fidl::encoding::ValueTypeMarker for MlmeAssociateIndRequest {
5160        type Borrowed<'a> = &'a Self;
5161        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5162            value
5163        }
5164    }
5165
5166    unsafe impl fidl::encoding::TypeMarker for MlmeAssociateIndRequest {
5167        type Owned = Self;
5168
5169        #[inline(always)]
5170        fn inline_align(_context: fidl::encoding::Context) -> usize {
5171            8
5172        }
5173
5174        #[inline(always)]
5175        fn inline_size(_context: fidl::encoding::Context) -> usize {
5176            64
5177        }
5178    }
5179
5180    unsafe impl<D: fidl::encoding::ResourceDialect>
5181        fidl::encoding::Encode<MlmeAssociateIndRequest, D> for &MlmeAssociateIndRequest
5182    {
5183        #[inline]
5184        unsafe fn encode(
5185            self,
5186            encoder: &mut fidl::encoding::Encoder<'_, D>,
5187            offset: usize,
5188            _depth: fidl::encoding::Depth,
5189        ) -> fidl::Result<()> {
5190            encoder.debug_check_bounds::<MlmeAssociateIndRequest>(offset);
5191            // Delegate to tuple encoding.
5192            fidl::encoding::Encode::<MlmeAssociateIndRequest, D>::encode(
5193                (<AssociateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5194                encoder,
5195                offset,
5196                _depth,
5197            )
5198        }
5199    }
5200    unsafe impl<
5201        D: fidl::encoding::ResourceDialect,
5202        T0: fidl::encoding::Encode<AssociateIndication, D>,
5203    > fidl::encoding::Encode<MlmeAssociateIndRequest, D> for (T0,)
5204    {
5205        #[inline]
5206        unsafe fn encode(
5207            self,
5208            encoder: &mut fidl::encoding::Encoder<'_, D>,
5209            offset: usize,
5210            depth: fidl::encoding::Depth,
5211        ) -> fidl::Result<()> {
5212            encoder.debug_check_bounds::<MlmeAssociateIndRequest>(offset);
5213            // Zero out padding regions. There's no need to apply masks
5214            // because the unmasked parts will be overwritten by fields.
5215            // Write the fields.
5216            self.0.encode(encoder, offset + 0, depth)?;
5217            Ok(())
5218        }
5219    }
5220
5221    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5222        for MlmeAssociateIndRequest
5223    {
5224        #[inline(always)]
5225        fn new_empty() -> Self {
5226            Self { ind: fidl::new_empty!(AssociateIndication, D) }
5227        }
5228
5229        #[inline]
5230        unsafe fn decode(
5231            &mut self,
5232            decoder: &mut fidl::encoding::Decoder<'_, D>,
5233            offset: usize,
5234            _depth: fidl::encoding::Depth,
5235        ) -> fidl::Result<()> {
5236            decoder.debug_check_bounds::<Self>(offset);
5237            // Verify that padding bytes are zero.
5238            fidl::decode!(AssociateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5239            Ok(())
5240        }
5241    }
5242
5243    impl fidl::encoding::ValueTypeMarker for MlmeAssociateRespRequest {
5244        type Borrowed<'a> = &'a Self;
5245        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5246            value
5247        }
5248    }
5249
5250    unsafe impl fidl::encoding::TypeMarker for MlmeAssociateRespRequest {
5251        type Owned = Self;
5252
5253        #[inline(always)]
5254        fn inline_align(_context: fidl::encoding::Context) -> usize {
5255            8
5256        }
5257
5258        #[inline(always)]
5259        fn inline_size(_context: fidl::encoding::Context) -> usize {
5260            32
5261        }
5262    }
5263
5264    unsafe impl<D: fidl::encoding::ResourceDialect>
5265        fidl::encoding::Encode<MlmeAssociateRespRequest, D> for &MlmeAssociateRespRequest
5266    {
5267        #[inline]
5268        unsafe fn encode(
5269            self,
5270            encoder: &mut fidl::encoding::Encoder<'_, D>,
5271            offset: usize,
5272            _depth: fidl::encoding::Depth,
5273        ) -> fidl::Result<()> {
5274            encoder.debug_check_bounds::<MlmeAssociateRespRequest>(offset);
5275            // Delegate to tuple encoding.
5276            fidl::encoding::Encode::<MlmeAssociateRespRequest, D>::encode(
5277                (<AssociateResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5278                encoder,
5279                offset,
5280                _depth,
5281            )
5282        }
5283    }
5284    unsafe impl<
5285        D: fidl::encoding::ResourceDialect,
5286        T0: fidl::encoding::Encode<AssociateResponse, D>,
5287    > fidl::encoding::Encode<MlmeAssociateRespRequest, D> for (T0,)
5288    {
5289        #[inline]
5290        unsafe fn encode(
5291            self,
5292            encoder: &mut fidl::encoding::Encoder<'_, D>,
5293            offset: usize,
5294            depth: fidl::encoding::Depth,
5295        ) -> fidl::Result<()> {
5296            encoder.debug_check_bounds::<MlmeAssociateRespRequest>(offset);
5297            // Zero out padding regions. There's no need to apply masks
5298            // because the unmasked parts will be overwritten by fields.
5299            // Write the fields.
5300            self.0.encode(encoder, offset + 0, depth)?;
5301            Ok(())
5302        }
5303    }
5304
5305    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5306        for MlmeAssociateRespRequest
5307    {
5308        #[inline(always)]
5309        fn new_empty() -> Self {
5310            Self { resp: fidl::new_empty!(AssociateResponse, D) }
5311        }
5312
5313        #[inline]
5314        unsafe fn decode(
5315            &mut self,
5316            decoder: &mut fidl::encoding::Decoder<'_, D>,
5317            offset: usize,
5318            _depth: fidl::encoding::Depth,
5319        ) -> fidl::Result<()> {
5320            decoder.debug_check_bounds::<Self>(offset);
5321            // Verify that padding bytes are zero.
5322            fidl::decode!(AssociateResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
5323            Ok(())
5324        }
5325    }
5326
5327    impl fidl::encoding::ValueTypeMarker for MlmeAuthenticateIndRequest {
5328        type Borrowed<'a> = &'a Self;
5329        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5330            value
5331        }
5332    }
5333
5334    unsafe impl fidl::encoding::TypeMarker for MlmeAuthenticateIndRequest {
5335        type Owned = Self;
5336
5337        #[inline(always)]
5338        fn inline_align(_context: fidl::encoding::Context) -> usize {
5339            4
5340        }
5341
5342        #[inline(always)]
5343        fn inline_size(_context: fidl::encoding::Context) -> usize {
5344            12
5345        }
5346    }
5347
5348    unsafe impl<D: fidl::encoding::ResourceDialect>
5349        fidl::encoding::Encode<MlmeAuthenticateIndRequest, D> for &MlmeAuthenticateIndRequest
5350    {
5351        #[inline]
5352        unsafe fn encode(
5353            self,
5354            encoder: &mut fidl::encoding::Encoder<'_, D>,
5355            offset: usize,
5356            _depth: fidl::encoding::Depth,
5357        ) -> fidl::Result<()> {
5358            encoder.debug_check_bounds::<MlmeAuthenticateIndRequest>(offset);
5359            // Delegate to tuple encoding.
5360            fidl::encoding::Encode::<MlmeAuthenticateIndRequest, D>::encode(
5361                (<AuthenticateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5362                encoder,
5363                offset,
5364                _depth,
5365            )
5366        }
5367    }
5368    unsafe impl<
5369        D: fidl::encoding::ResourceDialect,
5370        T0: fidl::encoding::Encode<AuthenticateIndication, D>,
5371    > fidl::encoding::Encode<MlmeAuthenticateIndRequest, D> for (T0,)
5372    {
5373        #[inline]
5374        unsafe fn encode(
5375            self,
5376            encoder: &mut fidl::encoding::Encoder<'_, D>,
5377            offset: usize,
5378            depth: fidl::encoding::Depth,
5379        ) -> fidl::Result<()> {
5380            encoder.debug_check_bounds::<MlmeAuthenticateIndRequest>(offset);
5381            // Zero out padding regions. There's no need to apply masks
5382            // because the unmasked parts will be overwritten by fields.
5383            // Write the fields.
5384            self.0.encode(encoder, offset + 0, depth)?;
5385            Ok(())
5386        }
5387    }
5388
5389    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5390        for MlmeAuthenticateIndRequest
5391    {
5392        #[inline(always)]
5393        fn new_empty() -> Self {
5394            Self { ind: fidl::new_empty!(AuthenticateIndication, D) }
5395        }
5396
5397        #[inline]
5398        unsafe fn decode(
5399            &mut self,
5400            decoder: &mut fidl::encoding::Decoder<'_, D>,
5401            offset: usize,
5402            _depth: fidl::encoding::Depth,
5403        ) -> fidl::Result<()> {
5404            decoder.debug_check_bounds::<Self>(offset);
5405            // Verify that padding bytes are zero.
5406            fidl::decode!(AuthenticateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5407            Ok(())
5408        }
5409    }
5410
5411    impl fidl::encoding::ValueTypeMarker for MlmeAuthenticateRespRequest {
5412        type Borrowed<'a> = &'a Self;
5413        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5414            value
5415        }
5416    }
5417
5418    unsafe impl fidl::encoding::TypeMarker for MlmeAuthenticateRespRequest {
5419        type Owned = Self;
5420
5421        #[inline(always)]
5422        fn inline_align(_context: fidl::encoding::Context) -> usize {
5423            4
5424        }
5425
5426        #[inline(always)]
5427        fn inline_size(_context: fidl::encoding::Context) -> usize {
5428            12
5429        }
5430    }
5431
5432    unsafe impl<D: fidl::encoding::ResourceDialect>
5433        fidl::encoding::Encode<MlmeAuthenticateRespRequest, D> for &MlmeAuthenticateRespRequest
5434    {
5435        #[inline]
5436        unsafe fn encode(
5437            self,
5438            encoder: &mut fidl::encoding::Encoder<'_, D>,
5439            offset: usize,
5440            _depth: fidl::encoding::Depth,
5441        ) -> fidl::Result<()> {
5442            encoder.debug_check_bounds::<MlmeAuthenticateRespRequest>(offset);
5443            // Delegate to tuple encoding.
5444            fidl::encoding::Encode::<MlmeAuthenticateRespRequest, D>::encode(
5445                (<AuthenticateResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5446                encoder,
5447                offset,
5448                _depth,
5449            )
5450        }
5451    }
5452    unsafe impl<
5453        D: fidl::encoding::ResourceDialect,
5454        T0: fidl::encoding::Encode<AuthenticateResponse, D>,
5455    > fidl::encoding::Encode<MlmeAuthenticateRespRequest, D> for (T0,)
5456    {
5457        #[inline]
5458        unsafe fn encode(
5459            self,
5460            encoder: &mut fidl::encoding::Encoder<'_, D>,
5461            offset: usize,
5462            depth: fidl::encoding::Depth,
5463        ) -> fidl::Result<()> {
5464            encoder.debug_check_bounds::<MlmeAuthenticateRespRequest>(offset);
5465            // Zero out padding regions. There's no need to apply masks
5466            // because the unmasked parts will be overwritten by fields.
5467            // Write the fields.
5468            self.0.encode(encoder, offset + 0, depth)?;
5469            Ok(())
5470        }
5471    }
5472
5473    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5474        for MlmeAuthenticateRespRequest
5475    {
5476        #[inline(always)]
5477        fn new_empty() -> Self {
5478            Self { resp: fidl::new_empty!(AuthenticateResponse, D) }
5479        }
5480
5481        #[inline]
5482        unsafe fn decode(
5483            &mut self,
5484            decoder: &mut fidl::encoding::Decoder<'_, D>,
5485            offset: usize,
5486            _depth: fidl::encoding::Depth,
5487        ) -> fidl::Result<()> {
5488            decoder.debug_check_bounds::<Self>(offset);
5489            // Verify that padding bytes are zero.
5490            fidl::decode!(AuthenticateResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
5491            Ok(())
5492        }
5493    }
5494
5495    impl fidl::encoding::ValueTypeMarker for MlmeConnectConfRequest {
5496        type Borrowed<'a> = &'a Self;
5497        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5498            value
5499        }
5500    }
5501
5502    unsafe impl fidl::encoding::TypeMarker for MlmeConnectConfRequest {
5503        type Owned = Self;
5504
5505        #[inline(always)]
5506        fn inline_align(_context: fidl::encoding::Context) -> usize {
5507            8
5508        }
5509
5510        #[inline(always)]
5511        fn inline_size(_context: fidl::encoding::Context) -> usize {
5512            32
5513        }
5514    }
5515
5516    unsafe impl<D: fidl::encoding::ResourceDialect>
5517        fidl::encoding::Encode<MlmeConnectConfRequest, D> for &MlmeConnectConfRequest
5518    {
5519        #[inline]
5520        unsafe fn encode(
5521            self,
5522            encoder: &mut fidl::encoding::Encoder<'_, D>,
5523            offset: usize,
5524            _depth: fidl::encoding::Depth,
5525        ) -> fidl::Result<()> {
5526            encoder.debug_check_bounds::<MlmeConnectConfRequest>(offset);
5527            // Delegate to tuple encoding.
5528            fidl::encoding::Encode::<MlmeConnectConfRequest, D>::encode(
5529                (<ConnectConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5530                encoder,
5531                offset,
5532                _depth,
5533            )
5534        }
5535    }
5536    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ConnectConfirm, D>>
5537        fidl::encoding::Encode<MlmeConnectConfRequest, D> for (T0,)
5538    {
5539        #[inline]
5540        unsafe fn encode(
5541            self,
5542            encoder: &mut fidl::encoding::Encoder<'_, D>,
5543            offset: usize,
5544            depth: fidl::encoding::Depth,
5545        ) -> fidl::Result<()> {
5546            encoder.debug_check_bounds::<MlmeConnectConfRequest>(offset);
5547            // Zero out padding regions. There's no need to apply masks
5548            // because the unmasked parts will be overwritten by fields.
5549            // Write the fields.
5550            self.0.encode(encoder, offset + 0, depth)?;
5551            Ok(())
5552        }
5553    }
5554
5555    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5556        for MlmeConnectConfRequest
5557    {
5558        #[inline(always)]
5559        fn new_empty() -> Self {
5560            Self { resp: fidl::new_empty!(ConnectConfirm, D) }
5561        }
5562
5563        #[inline]
5564        unsafe fn decode(
5565            &mut self,
5566            decoder: &mut fidl::encoding::Decoder<'_, D>,
5567            offset: usize,
5568            _depth: fidl::encoding::Depth,
5569        ) -> fidl::Result<()> {
5570            decoder.debug_check_bounds::<Self>(offset);
5571            // Verify that padding bytes are zero.
5572            fidl::decode!(ConnectConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
5573            Ok(())
5574        }
5575    }
5576
5577    impl fidl::encoding::ValueTypeMarker for MlmeConnectReqRequest {
5578        type Borrowed<'a> = &'a Self;
5579        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5580            value
5581        }
5582    }
5583
5584    unsafe impl fidl::encoding::TypeMarker for MlmeConnectReqRequest {
5585        type Owned = Self;
5586
5587        #[inline(always)]
5588        fn inline_align(_context: fidl::encoding::Context) -> usize {
5589            8
5590        }
5591
5592        #[inline(always)]
5593        fn inline_size(_context: fidl::encoding::Context) -> usize {
5594            104
5595        }
5596    }
5597
5598    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeConnectReqRequest, D>
5599        for &MlmeConnectReqRequest
5600    {
5601        #[inline]
5602        unsafe fn encode(
5603            self,
5604            encoder: &mut fidl::encoding::Encoder<'_, D>,
5605            offset: usize,
5606            _depth: fidl::encoding::Depth,
5607        ) -> fidl::Result<()> {
5608            encoder.debug_check_bounds::<MlmeConnectReqRequest>(offset);
5609            // Delegate to tuple encoding.
5610            fidl::encoding::Encode::<MlmeConnectReqRequest, D>::encode(
5611                (<ConnectRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5612                encoder,
5613                offset,
5614                _depth,
5615            )
5616        }
5617    }
5618    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ConnectRequest, D>>
5619        fidl::encoding::Encode<MlmeConnectReqRequest, D> for (T0,)
5620    {
5621        #[inline]
5622        unsafe fn encode(
5623            self,
5624            encoder: &mut fidl::encoding::Encoder<'_, D>,
5625            offset: usize,
5626            depth: fidl::encoding::Depth,
5627        ) -> fidl::Result<()> {
5628            encoder.debug_check_bounds::<MlmeConnectReqRequest>(offset);
5629            // Zero out padding regions. There's no need to apply masks
5630            // because the unmasked parts will be overwritten by fields.
5631            // Write the fields.
5632            self.0.encode(encoder, offset + 0, depth)?;
5633            Ok(())
5634        }
5635    }
5636
5637    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeConnectReqRequest {
5638        #[inline(always)]
5639        fn new_empty() -> Self {
5640            Self { req: fidl::new_empty!(ConnectRequest, D) }
5641        }
5642
5643        #[inline]
5644        unsafe fn decode(
5645            &mut self,
5646            decoder: &mut fidl::encoding::Decoder<'_, D>,
5647            offset: usize,
5648            _depth: fidl::encoding::Depth,
5649        ) -> fidl::Result<()> {
5650            decoder.debug_check_bounds::<Self>(offset);
5651            // Verify that padding bytes are zero.
5652            fidl::decode!(ConnectRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5653            Ok(())
5654        }
5655    }
5656
5657    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateConfRequest {
5658        type Borrowed<'a> = &'a Self;
5659        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5660            value
5661        }
5662    }
5663
5664    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateConfRequest {
5665        type Owned = Self;
5666
5667        #[inline(always)]
5668        fn inline_align(_context: fidl::encoding::Context) -> usize {
5669            1
5670        }
5671
5672        #[inline(always)]
5673        fn inline_size(_context: fidl::encoding::Context) -> usize {
5674            6
5675        }
5676        #[inline(always)]
5677        fn encode_is_copy() -> bool {
5678            true
5679        }
5680
5681        #[inline(always)]
5682        fn decode_is_copy() -> bool {
5683            true
5684        }
5685    }
5686
5687    unsafe impl<D: fidl::encoding::ResourceDialect>
5688        fidl::encoding::Encode<MlmeDeauthenticateConfRequest, D>
5689        for &MlmeDeauthenticateConfRequest
5690    {
5691        #[inline]
5692        unsafe fn encode(
5693            self,
5694            encoder: &mut fidl::encoding::Encoder<'_, D>,
5695            offset: usize,
5696            _depth: fidl::encoding::Depth,
5697        ) -> fidl::Result<()> {
5698            encoder.debug_check_bounds::<MlmeDeauthenticateConfRequest>(offset);
5699            unsafe {
5700                // Copy the object into the buffer.
5701                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5702                (buf_ptr as *mut MlmeDeauthenticateConfRequest)
5703                    .write_unaligned((self as *const MlmeDeauthenticateConfRequest).read());
5704                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
5705                // done second because the memcpy will write garbage to these bytes.
5706            }
5707            Ok(())
5708        }
5709    }
5710    unsafe impl<
5711        D: fidl::encoding::ResourceDialect,
5712        T0: fidl::encoding::Encode<DeauthenticateConfirm, D>,
5713    > fidl::encoding::Encode<MlmeDeauthenticateConfRequest, D> for (T0,)
5714    {
5715        #[inline]
5716        unsafe fn encode(
5717            self,
5718            encoder: &mut fidl::encoding::Encoder<'_, D>,
5719            offset: usize,
5720            depth: fidl::encoding::Depth,
5721        ) -> fidl::Result<()> {
5722            encoder.debug_check_bounds::<MlmeDeauthenticateConfRequest>(offset);
5723            // Zero out padding regions. There's no need to apply masks
5724            // because the unmasked parts will be overwritten by fields.
5725            // Write the fields.
5726            self.0.encode(encoder, offset + 0, depth)?;
5727            Ok(())
5728        }
5729    }
5730
5731    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5732        for MlmeDeauthenticateConfRequest
5733    {
5734        #[inline(always)]
5735        fn new_empty() -> Self {
5736            Self { resp: fidl::new_empty!(DeauthenticateConfirm, D) }
5737        }
5738
5739        #[inline]
5740        unsafe fn decode(
5741            &mut self,
5742            decoder: &mut fidl::encoding::Decoder<'_, D>,
5743            offset: usize,
5744            _depth: fidl::encoding::Depth,
5745        ) -> fidl::Result<()> {
5746            decoder.debug_check_bounds::<Self>(offset);
5747            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5748            // Verify that padding bytes are zero.
5749            // Copy from the buffer into the object.
5750            unsafe {
5751                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
5752            }
5753            Ok(())
5754        }
5755    }
5756
5757    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateIndRequest {
5758        type Borrowed<'a> = &'a Self;
5759        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5760            value
5761        }
5762    }
5763
5764    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateIndRequest {
5765        type Owned = Self;
5766
5767        #[inline(always)]
5768        fn inline_align(_context: fidl::encoding::Context) -> usize {
5769            2
5770        }
5771
5772        #[inline(always)]
5773        fn inline_size(_context: fidl::encoding::Context) -> usize {
5774            10
5775        }
5776    }
5777
5778    unsafe impl<D: fidl::encoding::ResourceDialect>
5779        fidl::encoding::Encode<MlmeDeauthenticateIndRequest, D> for &MlmeDeauthenticateIndRequest
5780    {
5781        #[inline]
5782        unsafe fn encode(
5783            self,
5784            encoder: &mut fidl::encoding::Encoder<'_, D>,
5785            offset: usize,
5786            _depth: fidl::encoding::Depth,
5787        ) -> fidl::Result<()> {
5788            encoder.debug_check_bounds::<MlmeDeauthenticateIndRequest>(offset);
5789            // Delegate to tuple encoding.
5790            fidl::encoding::Encode::<MlmeDeauthenticateIndRequest, D>::encode(
5791                (<DeauthenticateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5792                encoder,
5793                offset,
5794                _depth,
5795            )
5796        }
5797    }
5798    unsafe impl<
5799        D: fidl::encoding::ResourceDialect,
5800        T0: fidl::encoding::Encode<DeauthenticateIndication, D>,
5801    > fidl::encoding::Encode<MlmeDeauthenticateIndRequest, D> for (T0,)
5802    {
5803        #[inline]
5804        unsafe fn encode(
5805            self,
5806            encoder: &mut fidl::encoding::Encoder<'_, D>,
5807            offset: usize,
5808            depth: fidl::encoding::Depth,
5809        ) -> fidl::Result<()> {
5810            encoder.debug_check_bounds::<MlmeDeauthenticateIndRequest>(offset);
5811            // Zero out padding regions. There's no need to apply masks
5812            // because the unmasked parts will be overwritten by fields.
5813            // Write the fields.
5814            self.0.encode(encoder, offset + 0, depth)?;
5815            Ok(())
5816        }
5817    }
5818
5819    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5820        for MlmeDeauthenticateIndRequest
5821    {
5822        #[inline(always)]
5823        fn new_empty() -> Self {
5824            Self { ind: fidl::new_empty!(DeauthenticateIndication, D) }
5825        }
5826
5827        #[inline]
5828        unsafe fn decode(
5829            &mut self,
5830            decoder: &mut fidl::encoding::Decoder<'_, D>,
5831            offset: usize,
5832            _depth: fidl::encoding::Depth,
5833        ) -> fidl::Result<()> {
5834            decoder.debug_check_bounds::<Self>(offset);
5835            // Verify that padding bytes are zero.
5836            fidl::decode!(DeauthenticateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5837            Ok(())
5838        }
5839    }
5840
5841    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateReqRequest {
5842        type Borrowed<'a> = &'a Self;
5843        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5844            value
5845        }
5846    }
5847
5848    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateReqRequest {
5849        type Owned = Self;
5850
5851        #[inline(always)]
5852        fn inline_align(_context: fidl::encoding::Context) -> usize {
5853            2
5854        }
5855
5856        #[inline(always)]
5857        fn inline_size(_context: fidl::encoding::Context) -> usize {
5858            8
5859        }
5860    }
5861
5862    unsafe impl<D: fidl::encoding::ResourceDialect>
5863        fidl::encoding::Encode<MlmeDeauthenticateReqRequest, D> for &MlmeDeauthenticateReqRequest
5864    {
5865        #[inline]
5866        unsafe fn encode(
5867            self,
5868            encoder: &mut fidl::encoding::Encoder<'_, D>,
5869            offset: usize,
5870            _depth: fidl::encoding::Depth,
5871        ) -> fidl::Result<()> {
5872            encoder.debug_check_bounds::<MlmeDeauthenticateReqRequest>(offset);
5873            // Delegate to tuple encoding.
5874            fidl::encoding::Encode::<MlmeDeauthenticateReqRequest, D>::encode(
5875                (<DeauthenticateRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5876                encoder,
5877                offset,
5878                _depth,
5879            )
5880        }
5881    }
5882    unsafe impl<
5883        D: fidl::encoding::ResourceDialect,
5884        T0: fidl::encoding::Encode<DeauthenticateRequest, D>,
5885    > fidl::encoding::Encode<MlmeDeauthenticateReqRequest, D> for (T0,)
5886    {
5887        #[inline]
5888        unsafe fn encode(
5889            self,
5890            encoder: &mut fidl::encoding::Encoder<'_, D>,
5891            offset: usize,
5892            depth: fidl::encoding::Depth,
5893        ) -> fidl::Result<()> {
5894            encoder.debug_check_bounds::<MlmeDeauthenticateReqRequest>(offset);
5895            // Zero out padding regions. There's no need to apply masks
5896            // because the unmasked parts will be overwritten by fields.
5897            // Write the fields.
5898            self.0.encode(encoder, offset + 0, depth)?;
5899            Ok(())
5900        }
5901    }
5902
5903    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5904        for MlmeDeauthenticateReqRequest
5905    {
5906        #[inline(always)]
5907        fn new_empty() -> Self {
5908            Self { req: fidl::new_empty!(DeauthenticateRequest, D) }
5909        }
5910
5911        #[inline]
5912        unsafe fn decode(
5913            &mut self,
5914            decoder: &mut fidl::encoding::Decoder<'_, D>,
5915            offset: usize,
5916            _depth: fidl::encoding::Depth,
5917        ) -> fidl::Result<()> {
5918            decoder.debug_check_bounds::<Self>(offset);
5919            // Verify that padding bytes are zero.
5920            fidl::decode!(DeauthenticateRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5921            Ok(())
5922        }
5923    }
5924
5925    impl fidl::encoding::ValueTypeMarker for MlmeDeleteKeysReqRequest {
5926        type Borrowed<'a> = &'a Self;
5927        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5928            value
5929        }
5930    }
5931
5932    unsafe impl fidl::encoding::TypeMarker for MlmeDeleteKeysReqRequest {
5933        type Owned = Self;
5934
5935        #[inline(always)]
5936        fn inline_align(_context: fidl::encoding::Context) -> usize {
5937            8
5938        }
5939
5940        #[inline(always)]
5941        fn inline_size(_context: fidl::encoding::Context) -> usize {
5942            16
5943        }
5944    }
5945
5946    unsafe impl<D: fidl::encoding::ResourceDialect>
5947        fidl::encoding::Encode<MlmeDeleteKeysReqRequest, D> for &MlmeDeleteKeysReqRequest
5948    {
5949        #[inline]
5950        unsafe fn encode(
5951            self,
5952            encoder: &mut fidl::encoding::Encoder<'_, D>,
5953            offset: usize,
5954            _depth: fidl::encoding::Depth,
5955        ) -> fidl::Result<()> {
5956            encoder.debug_check_bounds::<MlmeDeleteKeysReqRequest>(offset);
5957            // Delegate to tuple encoding.
5958            fidl::encoding::Encode::<MlmeDeleteKeysReqRequest, D>::encode(
5959                (<DeleteKeysRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5960                encoder,
5961                offset,
5962                _depth,
5963            )
5964        }
5965    }
5966    unsafe impl<
5967        D: fidl::encoding::ResourceDialect,
5968        T0: fidl::encoding::Encode<DeleteKeysRequest, D>,
5969    > fidl::encoding::Encode<MlmeDeleteKeysReqRequest, D> for (T0,)
5970    {
5971        #[inline]
5972        unsafe fn encode(
5973            self,
5974            encoder: &mut fidl::encoding::Encoder<'_, D>,
5975            offset: usize,
5976            depth: fidl::encoding::Depth,
5977        ) -> fidl::Result<()> {
5978            encoder.debug_check_bounds::<MlmeDeleteKeysReqRequest>(offset);
5979            // Zero out padding regions. There's no need to apply masks
5980            // because the unmasked parts will be overwritten by fields.
5981            // Write the fields.
5982            self.0.encode(encoder, offset + 0, depth)?;
5983            Ok(())
5984        }
5985    }
5986
5987    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5988        for MlmeDeleteKeysReqRequest
5989    {
5990        #[inline(always)]
5991        fn new_empty() -> Self {
5992            Self { req: fidl::new_empty!(DeleteKeysRequest, D) }
5993        }
5994
5995        #[inline]
5996        unsafe fn decode(
5997            &mut self,
5998            decoder: &mut fidl::encoding::Decoder<'_, D>,
5999            offset: usize,
6000            _depth: fidl::encoding::Depth,
6001        ) -> fidl::Result<()> {
6002            decoder.debug_check_bounds::<Self>(offset);
6003            // Verify that padding bytes are zero.
6004            fidl::decode!(DeleteKeysRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6005            Ok(())
6006        }
6007    }
6008
6009    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateConfRequest {
6010        type Borrowed<'a> = &'a Self;
6011        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6012            value
6013        }
6014    }
6015
6016    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateConfRequest {
6017        type Owned = Self;
6018
6019        #[inline(always)]
6020        fn inline_align(_context: fidl::encoding::Context) -> usize {
6021            4
6022        }
6023
6024        #[inline(always)]
6025        fn inline_size(_context: fidl::encoding::Context) -> usize {
6026            4
6027        }
6028        #[inline(always)]
6029        fn encode_is_copy() -> bool {
6030            true
6031        }
6032
6033        #[inline(always)]
6034        fn decode_is_copy() -> bool {
6035            true
6036        }
6037    }
6038
6039    unsafe impl<D: fidl::encoding::ResourceDialect>
6040        fidl::encoding::Encode<MlmeDisassociateConfRequest, D> for &MlmeDisassociateConfRequest
6041    {
6042        #[inline]
6043        unsafe fn encode(
6044            self,
6045            encoder: &mut fidl::encoding::Encoder<'_, D>,
6046            offset: usize,
6047            _depth: fidl::encoding::Depth,
6048        ) -> fidl::Result<()> {
6049            encoder.debug_check_bounds::<MlmeDisassociateConfRequest>(offset);
6050            unsafe {
6051                // Copy the object into the buffer.
6052                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
6053                (buf_ptr as *mut MlmeDisassociateConfRequest)
6054                    .write_unaligned((self as *const MlmeDisassociateConfRequest).read());
6055                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
6056                // done second because the memcpy will write garbage to these bytes.
6057            }
6058            Ok(())
6059        }
6060    }
6061    unsafe impl<
6062        D: fidl::encoding::ResourceDialect,
6063        T0: fidl::encoding::Encode<DisassociateConfirm, D>,
6064    > fidl::encoding::Encode<MlmeDisassociateConfRequest, D> for (T0,)
6065    {
6066        #[inline]
6067        unsafe fn encode(
6068            self,
6069            encoder: &mut fidl::encoding::Encoder<'_, D>,
6070            offset: usize,
6071            depth: fidl::encoding::Depth,
6072        ) -> fidl::Result<()> {
6073            encoder.debug_check_bounds::<MlmeDisassociateConfRequest>(offset);
6074            // Zero out padding regions. There's no need to apply masks
6075            // because the unmasked parts will be overwritten by fields.
6076            // Write the fields.
6077            self.0.encode(encoder, offset + 0, depth)?;
6078            Ok(())
6079        }
6080    }
6081
6082    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6083        for MlmeDisassociateConfRequest
6084    {
6085        #[inline(always)]
6086        fn new_empty() -> Self {
6087            Self { resp: fidl::new_empty!(DisassociateConfirm, D) }
6088        }
6089
6090        #[inline]
6091        unsafe fn decode(
6092            &mut self,
6093            decoder: &mut fidl::encoding::Decoder<'_, D>,
6094            offset: usize,
6095            _depth: fidl::encoding::Depth,
6096        ) -> fidl::Result<()> {
6097            decoder.debug_check_bounds::<Self>(offset);
6098            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
6099            // Verify that padding bytes are zero.
6100            // Copy from the buffer into the object.
6101            unsafe {
6102                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
6103            }
6104            Ok(())
6105        }
6106    }
6107
6108    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateIndRequest {
6109        type Borrowed<'a> = &'a Self;
6110        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6111            value
6112        }
6113    }
6114
6115    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateIndRequest {
6116        type Owned = Self;
6117
6118        #[inline(always)]
6119        fn inline_align(_context: fidl::encoding::Context) -> usize {
6120            2
6121        }
6122
6123        #[inline(always)]
6124        fn inline_size(_context: fidl::encoding::Context) -> usize {
6125            10
6126        }
6127    }
6128
6129    unsafe impl<D: fidl::encoding::ResourceDialect>
6130        fidl::encoding::Encode<MlmeDisassociateIndRequest, D> for &MlmeDisassociateIndRequest
6131    {
6132        #[inline]
6133        unsafe fn encode(
6134            self,
6135            encoder: &mut fidl::encoding::Encoder<'_, D>,
6136            offset: usize,
6137            _depth: fidl::encoding::Depth,
6138        ) -> fidl::Result<()> {
6139            encoder.debug_check_bounds::<MlmeDisassociateIndRequest>(offset);
6140            // Delegate to tuple encoding.
6141            fidl::encoding::Encode::<MlmeDisassociateIndRequest, D>::encode(
6142                (<DisassociateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
6143                encoder,
6144                offset,
6145                _depth,
6146            )
6147        }
6148    }
6149    unsafe impl<
6150        D: fidl::encoding::ResourceDialect,
6151        T0: fidl::encoding::Encode<DisassociateIndication, D>,
6152    > fidl::encoding::Encode<MlmeDisassociateIndRequest, D> for (T0,)
6153    {
6154        #[inline]
6155        unsafe fn encode(
6156            self,
6157            encoder: &mut fidl::encoding::Encoder<'_, D>,
6158            offset: usize,
6159            depth: fidl::encoding::Depth,
6160        ) -> fidl::Result<()> {
6161            encoder.debug_check_bounds::<MlmeDisassociateIndRequest>(offset);
6162            // Zero out padding regions. There's no need to apply masks
6163            // because the unmasked parts will be overwritten by fields.
6164            // Write the fields.
6165            self.0.encode(encoder, offset + 0, depth)?;
6166            Ok(())
6167        }
6168    }
6169
6170    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6171        for MlmeDisassociateIndRequest
6172    {
6173        #[inline(always)]
6174        fn new_empty() -> Self {
6175            Self { ind: fidl::new_empty!(DisassociateIndication, D) }
6176        }
6177
6178        #[inline]
6179        unsafe fn decode(
6180            &mut self,
6181            decoder: &mut fidl::encoding::Decoder<'_, D>,
6182            offset: usize,
6183            _depth: fidl::encoding::Depth,
6184        ) -> fidl::Result<()> {
6185            decoder.debug_check_bounds::<Self>(offset);
6186            // Verify that padding bytes are zero.
6187            fidl::decode!(DisassociateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
6188            Ok(())
6189        }
6190    }
6191
6192    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateReqRequest {
6193        type Borrowed<'a> = &'a Self;
6194        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6195            value
6196        }
6197    }
6198
6199    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateReqRequest {
6200        type Owned = Self;
6201
6202        #[inline(always)]
6203        fn inline_align(_context: fidl::encoding::Context) -> usize {
6204            2
6205        }
6206
6207        #[inline(always)]
6208        fn inline_size(_context: fidl::encoding::Context) -> usize {
6209            8
6210        }
6211    }
6212
6213    unsafe impl<D: fidl::encoding::ResourceDialect>
6214        fidl::encoding::Encode<MlmeDisassociateReqRequest, D> for &MlmeDisassociateReqRequest
6215    {
6216        #[inline]
6217        unsafe fn encode(
6218            self,
6219            encoder: &mut fidl::encoding::Encoder<'_, D>,
6220            offset: usize,
6221            _depth: fidl::encoding::Depth,
6222        ) -> fidl::Result<()> {
6223            encoder.debug_check_bounds::<MlmeDisassociateReqRequest>(offset);
6224            // Delegate to tuple encoding.
6225            fidl::encoding::Encode::<MlmeDisassociateReqRequest, D>::encode(
6226                (<DisassociateRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6227                encoder,
6228                offset,
6229                _depth,
6230            )
6231        }
6232    }
6233    unsafe impl<
6234        D: fidl::encoding::ResourceDialect,
6235        T0: fidl::encoding::Encode<DisassociateRequest, D>,
6236    > fidl::encoding::Encode<MlmeDisassociateReqRequest, D> for (T0,)
6237    {
6238        #[inline]
6239        unsafe fn encode(
6240            self,
6241            encoder: &mut fidl::encoding::Encoder<'_, D>,
6242            offset: usize,
6243            depth: fidl::encoding::Depth,
6244        ) -> fidl::Result<()> {
6245            encoder.debug_check_bounds::<MlmeDisassociateReqRequest>(offset);
6246            // Zero out padding regions. There's no need to apply masks
6247            // because the unmasked parts will be overwritten by fields.
6248            // Write the fields.
6249            self.0.encode(encoder, offset + 0, depth)?;
6250            Ok(())
6251        }
6252    }
6253
6254    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6255        for MlmeDisassociateReqRequest
6256    {
6257        #[inline(always)]
6258        fn new_empty() -> Self {
6259            Self { req: fidl::new_empty!(DisassociateRequest, D) }
6260        }
6261
6262        #[inline]
6263        unsafe fn decode(
6264            &mut self,
6265            decoder: &mut fidl::encoding::Decoder<'_, D>,
6266            offset: usize,
6267            _depth: fidl::encoding::Depth,
6268        ) -> fidl::Result<()> {
6269            decoder.debug_check_bounds::<Self>(offset);
6270            // Verify that padding bytes are zero.
6271            fidl::decode!(DisassociateRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6272            Ok(())
6273        }
6274    }
6275
6276    impl fidl::encoding::ValueTypeMarker for MlmeEapolConfRequest {
6277        type Borrowed<'a> = &'a Self;
6278        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6279            value
6280        }
6281    }
6282
6283    unsafe impl fidl::encoding::TypeMarker for MlmeEapolConfRequest {
6284        type Owned = Self;
6285
6286        #[inline(always)]
6287        fn inline_align(_context: fidl::encoding::Context) -> usize {
6288            4
6289        }
6290
6291        #[inline(always)]
6292        fn inline_size(_context: fidl::encoding::Context) -> usize {
6293            12
6294        }
6295    }
6296
6297    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolConfRequest, D>
6298        for &MlmeEapolConfRequest
6299    {
6300        #[inline]
6301        unsafe fn encode(
6302            self,
6303            encoder: &mut fidl::encoding::Encoder<'_, D>,
6304            offset: usize,
6305            _depth: fidl::encoding::Depth,
6306        ) -> fidl::Result<()> {
6307            encoder.debug_check_bounds::<MlmeEapolConfRequest>(offset);
6308            // Delegate to tuple encoding.
6309            fidl::encoding::Encode::<MlmeEapolConfRequest, D>::encode(
6310                (<EapolConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6311                encoder,
6312                offset,
6313                _depth,
6314            )
6315        }
6316    }
6317    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolConfirm, D>>
6318        fidl::encoding::Encode<MlmeEapolConfRequest, D> for (T0,)
6319    {
6320        #[inline]
6321        unsafe fn encode(
6322            self,
6323            encoder: &mut fidl::encoding::Encoder<'_, D>,
6324            offset: usize,
6325            depth: fidl::encoding::Depth,
6326        ) -> fidl::Result<()> {
6327            encoder.debug_check_bounds::<MlmeEapolConfRequest>(offset);
6328            // Zero out padding regions. There's no need to apply masks
6329            // because the unmasked parts will be overwritten by fields.
6330            // Write the fields.
6331            self.0.encode(encoder, offset + 0, depth)?;
6332            Ok(())
6333        }
6334    }
6335
6336    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolConfRequest {
6337        #[inline(always)]
6338        fn new_empty() -> Self {
6339            Self { resp: fidl::new_empty!(EapolConfirm, D) }
6340        }
6341
6342        #[inline]
6343        unsafe fn decode(
6344            &mut self,
6345            decoder: &mut fidl::encoding::Decoder<'_, D>,
6346            offset: usize,
6347            _depth: fidl::encoding::Depth,
6348        ) -> fidl::Result<()> {
6349            decoder.debug_check_bounds::<Self>(offset);
6350            // Verify that padding bytes are zero.
6351            fidl::decode!(EapolConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
6352            Ok(())
6353        }
6354    }
6355
6356    impl fidl::encoding::ValueTypeMarker for MlmeEapolIndRequest {
6357        type Borrowed<'a> = &'a Self;
6358        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6359            value
6360        }
6361    }
6362
6363    unsafe impl fidl::encoding::TypeMarker for MlmeEapolIndRequest {
6364        type Owned = Self;
6365
6366        #[inline(always)]
6367        fn inline_align(_context: fidl::encoding::Context) -> usize {
6368            8
6369        }
6370
6371        #[inline(always)]
6372        fn inline_size(_context: fidl::encoding::Context) -> usize {
6373            32
6374        }
6375    }
6376
6377    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolIndRequest, D>
6378        for &MlmeEapolIndRequest
6379    {
6380        #[inline]
6381        unsafe fn encode(
6382            self,
6383            encoder: &mut fidl::encoding::Encoder<'_, D>,
6384            offset: usize,
6385            _depth: fidl::encoding::Depth,
6386        ) -> fidl::Result<()> {
6387            encoder.debug_check_bounds::<MlmeEapolIndRequest>(offset);
6388            // Delegate to tuple encoding.
6389            fidl::encoding::Encode::<MlmeEapolIndRequest, D>::encode(
6390                (<EapolIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
6391                encoder,
6392                offset,
6393                _depth,
6394            )
6395        }
6396    }
6397    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolIndication, D>>
6398        fidl::encoding::Encode<MlmeEapolIndRequest, D> for (T0,)
6399    {
6400        #[inline]
6401        unsafe fn encode(
6402            self,
6403            encoder: &mut fidl::encoding::Encoder<'_, D>,
6404            offset: usize,
6405            depth: fidl::encoding::Depth,
6406        ) -> fidl::Result<()> {
6407            encoder.debug_check_bounds::<MlmeEapolIndRequest>(offset);
6408            // Zero out padding regions. There's no need to apply masks
6409            // because the unmasked parts will be overwritten by fields.
6410            // Write the fields.
6411            self.0.encode(encoder, offset + 0, depth)?;
6412            Ok(())
6413        }
6414    }
6415
6416    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolIndRequest {
6417        #[inline(always)]
6418        fn new_empty() -> Self {
6419            Self { ind: fidl::new_empty!(EapolIndication, D) }
6420        }
6421
6422        #[inline]
6423        unsafe fn decode(
6424            &mut self,
6425            decoder: &mut fidl::encoding::Decoder<'_, D>,
6426            offset: usize,
6427            _depth: fidl::encoding::Depth,
6428        ) -> fidl::Result<()> {
6429            decoder.debug_check_bounds::<Self>(offset);
6430            // Verify that padding bytes are zero.
6431            fidl::decode!(EapolIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
6432            Ok(())
6433        }
6434    }
6435
6436    impl fidl::encoding::ValueTypeMarker for MlmeEapolReqRequest {
6437        type Borrowed<'a> = &'a Self;
6438        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6439            value
6440        }
6441    }
6442
6443    unsafe impl fidl::encoding::TypeMarker for MlmeEapolReqRequest {
6444        type Owned = Self;
6445
6446        #[inline(always)]
6447        fn inline_align(_context: fidl::encoding::Context) -> usize {
6448            8
6449        }
6450
6451        #[inline(always)]
6452        fn inline_size(_context: fidl::encoding::Context) -> usize {
6453            32
6454        }
6455    }
6456
6457    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolReqRequest, D>
6458        for &MlmeEapolReqRequest
6459    {
6460        #[inline]
6461        unsafe fn encode(
6462            self,
6463            encoder: &mut fidl::encoding::Encoder<'_, D>,
6464            offset: usize,
6465            _depth: fidl::encoding::Depth,
6466        ) -> fidl::Result<()> {
6467            encoder.debug_check_bounds::<MlmeEapolReqRequest>(offset);
6468            // Delegate to tuple encoding.
6469            fidl::encoding::Encode::<MlmeEapolReqRequest, D>::encode(
6470                (<EapolRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6471                encoder,
6472                offset,
6473                _depth,
6474            )
6475        }
6476    }
6477    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolRequest, D>>
6478        fidl::encoding::Encode<MlmeEapolReqRequest, D> for (T0,)
6479    {
6480        #[inline]
6481        unsafe fn encode(
6482            self,
6483            encoder: &mut fidl::encoding::Encoder<'_, D>,
6484            offset: usize,
6485            depth: fidl::encoding::Depth,
6486        ) -> fidl::Result<()> {
6487            encoder.debug_check_bounds::<MlmeEapolReqRequest>(offset);
6488            // Zero out padding regions. There's no need to apply masks
6489            // because the unmasked parts will be overwritten by fields.
6490            // Write the fields.
6491            self.0.encode(encoder, offset + 0, depth)?;
6492            Ok(())
6493        }
6494    }
6495
6496    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolReqRequest {
6497        #[inline(always)]
6498        fn new_empty() -> Self {
6499            Self { req: fidl::new_empty!(EapolRequest, D) }
6500        }
6501
6502        #[inline]
6503        unsafe fn decode(
6504            &mut self,
6505            decoder: &mut fidl::encoding::Decoder<'_, D>,
6506            offset: usize,
6507            _depth: fidl::encoding::Depth,
6508        ) -> fidl::Result<()> {
6509            decoder.debug_check_bounds::<Self>(offset);
6510            // Verify that padding bytes are zero.
6511            fidl::decode!(EapolRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6512            Ok(())
6513        }
6514    }
6515
6516    impl fidl::encoding::ValueTypeMarker for MlmeFinalizeAssociationReqRequest {
6517        type Borrowed<'a> = &'a Self;
6518        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6519            value
6520        }
6521    }
6522
6523    unsafe impl fidl::encoding::TypeMarker for MlmeFinalizeAssociationReqRequest {
6524        type Owned = Self;
6525
6526        #[inline(always)]
6527        fn inline_align(_context: fidl::encoding::Context) -> usize {
6528            8
6529        }
6530
6531        #[inline(always)]
6532        fn inline_size(_context: fidl::encoding::Context) -> usize {
6533            56
6534        }
6535    }
6536
6537    unsafe impl<D: fidl::encoding::ResourceDialect>
6538        fidl::encoding::Encode<MlmeFinalizeAssociationReqRequest, D>
6539        for &MlmeFinalizeAssociationReqRequest
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::<MlmeFinalizeAssociationReqRequest>(offset);
6549            // Delegate to tuple encoding.
6550            fidl::encoding::Encode::<MlmeFinalizeAssociationReqRequest, D>::encode(
6551                (<NegotiatedCapabilities as fidl::encoding::ValueTypeMarker>::borrow(
6552                    &self.negotiated_capabilities,
6553                ),),
6554                encoder,
6555                offset,
6556                _depth,
6557            )
6558        }
6559    }
6560    unsafe impl<
6561        D: fidl::encoding::ResourceDialect,
6562        T0: fidl::encoding::Encode<NegotiatedCapabilities, D>,
6563    > fidl::encoding::Encode<MlmeFinalizeAssociationReqRequest, D> for (T0,)
6564    {
6565        #[inline]
6566        unsafe fn encode(
6567            self,
6568            encoder: &mut fidl::encoding::Encoder<'_, D>,
6569            offset: usize,
6570            depth: fidl::encoding::Depth,
6571        ) -> fidl::Result<()> {
6572            encoder.debug_check_bounds::<MlmeFinalizeAssociationReqRequest>(offset);
6573            // Zero out padding regions. There's no need to apply masks
6574            // because the unmasked parts will be overwritten by fields.
6575            // Write the fields.
6576            self.0.encode(encoder, offset + 0, depth)?;
6577            Ok(())
6578        }
6579    }
6580
6581    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6582        for MlmeFinalizeAssociationReqRequest
6583    {
6584        #[inline(always)]
6585        fn new_empty() -> Self {
6586            Self { negotiated_capabilities: fidl::new_empty!(NegotiatedCapabilities, D) }
6587        }
6588
6589        #[inline]
6590        unsafe fn decode(
6591            &mut self,
6592            decoder: &mut fidl::encoding::Decoder<'_, D>,
6593            offset: usize,
6594            _depth: fidl::encoding::Depth,
6595        ) -> fidl::Result<()> {
6596            decoder.debug_check_bounds::<Self>(offset);
6597            // Verify that padding bytes are zero.
6598            fidl::decode!(
6599                NegotiatedCapabilities,
6600                D,
6601                &mut self.negotiated_capabilities,
6602                decoder,
6603                offset + 0,
6604                _depth
6605            )?;
6606            Ok(())
6607        }
6608    }
6609
6610    impl fidl::encoding::ValueTypeMarker for MlmeGetIfaceHistogramStatsResponse {
6611        type Borrowed<'a> = &'a Self;
6612        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6613            value
6614        }
6615    }
6616
6617    unsafe impl fidl::encoding::TypeMarker for MlmeGetIfaceHistogramStatsResponse {
6618        type Owned = Self;
6619
6620        #[inline(always)]
6621        fn inline_align(_context: fidl::encoding::Context) -> usize {
6622            8
6623        }
6624
6625        #[inline(always)]
6626        fn inline_size(_context: fidl::encoding::Context) -> usize {
6627            16
6628        }
6629    }
6630
6631    unsafe impl<D: fidl::encoding::ResourceDialect>
6632        fidl::encoding::Encode<MlmeGetIfaceHistogramStatsResponse, D>
6633        for &MlmeGetIfaceHistogramStatsResponse
6634    {
6635        #[inline]
6636        unsafe fn encode(
6637            self,
6638            encoder: &mut fidl::encoding::Encoder<'_, D>,
6639            offset: usize,
6640            _depth: fidl::encoding::Depth,
6641        ) -> fidl::Result<()> {
6642            encoder.debug_check_bounds::<MlmeGetIfaceHistogramStatsResponse>(offset);
6643            // Delegate to tuple encoding.
6644            fidl::encoding::Encode::<MlmeGetIfaceHistogramStatsResponse, D>::encode(
6645                (<GetIfaceHistogramStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(
6646                    &self.resp,
6647                ),),
6648                encoder,
6649                offset,
6650                _depth,
6651            )
6652        }
6653    }
6654    unsafe impl<
6655        D: fidl::encoding::ResourceDialect,
6656        T0: fidl::encoding::Encode<GetIfaceHistogramStatsResponse, D>,
6657    > fidl::encoding::Encode<MlmeGetIfaceHistogramStatsResponse, D> for (T0,)
6658    {
6659        #[inline]
6660        unsafe fn encode(
6661            self,
6662            encoder: &mut fidl::encoding::Encoder<'_, D>,
6663            offset: usize,
6664            depth: fidl::encoding::Depth,
6665        ) -> fidl::Result<()> {
6666            encoder.debug_check_bounds::<MlmeGetIfaceHistogramStatsResponse>(offset);
6667            // Zero out padding regions. There's no need to apply masks
6668            // because the unmasked parts will be overwritten by fields.
6669            // Write the fields.
6670            self.0.encode(encoder, offset + 0, depth)?;
6671            Ok(())
6672        }
6673    }
6674
6675    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6676        for MlmeGetIfaceHistogramStatsResponse
6677    {
6678        #[inline(always)]
6679        fn new_empty() -> Self {
6680            Self { resp: fidl::new_empty!(GetIfaceHistogramStatsResponse, D) }
6681        }
6682
6683        #[inline]
6684        unsafe fn decode(
6685            &mut self,
6686            decoder: &mut fidl::encoding::Decoder<'_, D>,
6687            offset: usize,
6688            _depth: fidl::encoding::Depth,
6689        ) -> fidl::Result<()> {
6690            decoder.debug_check_bounds::<Self>(offset);
6691            // Verify that padding bytes are zero.
6692            fidl::decode!(
6693                GetIfaceHistogramStatsResponse,
6694                D,
6695                &mut self.resp,
6696                decoder,
6697                offset + 0,
6698                _depth
6699            )?;
6700            Ok(())
6701        }
6702    }
6703
6704    impl fidl::encoding::ValueTypeMarker for MlmeGetIfaceStatsResponse {
6705        type Borrowed<'a> = &'a Self;
6706        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6707            value
6708        }
6709    }
6710
6711    unsafe impl fidl::encoding::TypeMarker for MlmeGetIfaceStatsResponse {
6712        type Owned = Self;
6713
6714        #[inline(always)]
6715        fn inline_align(_context: fidl::encoding::Context) -> usize {
6716            8
6717        }
6718
6719        #[inline(always)]
6720        fn inline_size(_context: fidl::encoding::Context) -> usize {
6721            16
6722        }
6723    }
6724
6725    unsafe impl<D: fidl::encoding::ResourceDialect>
6726        fidl::encoding::Encode<MlmeGetIfaceStatsResponse, D> for &MlmeGetIfaceStatsResponse
6727    {
6728        #[inline]
6729        unsafe fn encode(
6730            self,
6731            encoder: &mut fidl::encoding::Encoder<'_, D>,
6732            offset: usize,
6733            _depth: fidl::encoding::Depth,
6734        ) -> fidl::Result<()> {
6735            encoder.debug_check_bounds::<MlmeGetIfaceStatsResponse>(offset);
6736            // Delegate to tuple encoding.
6737            fidl::encoding::Encode::<MlmeGetIfaceStatsResponse, D>::encode(
6738                (<GetIfaceStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6739                encoder,
6740                offset,
6741                _depth,
6742            )
6743        }
6744    }
6745    unsafe impl<
6746        D: fidl::encoding::ResourceDialect,
6747        T0: fidl::encoding::Encode<GetIfaceStatsResponse, D>,
6748    > fidl::encoding::Encode<MlmeGetIfaceStatsResponse, D> for (T0,)
6749    {
6750        #[inline]
6751        unsafe fn encode(
6752            self,
6753            encoder: &mut fidl::encoding::Encoder<'_, D>,
6754            offset: usize,
6755            depth: fidl::encoding::Depth,
6756        ) -> fidl::Result<()> {
6757            encoder.debug_check_bounds::<MlmeGetIfaceStatsResponse>(offset);
6758            // Zero out padding regions. There's no need to apply masks
6759            // because the unmasked parts will be overwritten by fields.
6760            // Write the fields.
6761            self.0.encode(encoder, offset + 0, depth)?;
6762            Ok(())
6763        }
6764    }
6765
6766    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6767        for MlmeGetIfaceStatsResponse
6768    {
6769        #[inline(always)]
6770        fn new_empty() -> Self {
6771            Self { resp: fidl::new_empty!(GetIfaceStatsResponse, D) }
6772        }
6773
6774        #[inline]
6775        unsafe fn decode(
6776            &mut self,
6777            decoder: &mut fidl::encoding::Decoder<'_, D>,
6778            offset: usize,
6779            _depth: fidl::encoding::Depth,
6780        ) -> fidl::Result<()> {
6781            decoder.debug_check_bounds::<Self>(offset);
6782            // Verify that padding bytes are zero.
6783            fidl::decode!(GetIfaceStatsResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
6784            Ok(())
6785        }
6786    }
6787
6788    impl fidl::encoding::ValueTypeMarker for MlmeGetMinstrelStatsRequest {
6789        type Borrowed<'a> = &'a Self;
6790        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6791            value
6792        }
6793    }
6794
6795    unsafe impl fidl::encoding::TypeMarker for MlmeGetMinstrelStatsRequest {
6796        type Owned = Self;
6797
6798        #[inline(always)]
6799        fn inline_align(_context: fidl::encoding::Context) -> usize {
6800            1
6801        }
6802
6803        #[inline(always)]
6804        fn inline_size(_context: fidl::encoding::Context) -> usize {
6805            6
6806        }
6807        #[inline(always)]
6808        fn encode_is_copy() -> bool {
6809            true
6810        }
6811
6812        #[inline(always)]
6813        fn decode_is_copy() -> bool {
6814            true
6815        }
6816    }
6817
6818    unsafe impl<D: fidl::encoding::ResourceDialect>
6819        fidl::encoding::Encode<MlmeGetMinstrelStatsRequest, D> for &MlmeGetMinstrelStatsRequest
6820    {
6821        #[inline]
6822        unsafe fn encode(
6823            self,
6824            encoder: &mut fidl::encoding::Encoder<'_, D>,
6825            offset: usize,
6826            _depth: fidl::encoding::Depth,
6827        ) -> fidl::Result<()> {
6828            encoder.debug_check_bounds::<MlmeGetMinstrelStatsRequest>(offset);
6829            unsafe {
6830                // Copy the object into the buffer.
6831                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
6832                (buf_ptr as *mut MlmeGetMinstrelStatsRequest)
6833                    .write_unaligned((self as *const MlmeGetMinstrelStatsRequest).read());
6834                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
6835                // done second because the memcpy will write garbage to these bytes.
6836            }
6837            Ok(())
6838        }
6839    }
6840    unsafe impl<
6841        D: fidl::encoding::ResourceDialect,
6842        T0: fidl::encoding::Encode<MinstrelStatsRequest, D>,
6843    > fidl::encoding::Encode<MlmeGetMinstrelStatsRequest, D> for (T0,)
6844    {
6845        #[inline]
6846        unsafe fn encode(
6847            self,
6848            encoder: &mut fidl::encoding::Encoder<'_, D>,
6849            offset: usize,
6850            depth: fidl::encoding::Depth,
6851        ) -> fidl::Result<()> {
6852            encoder.debug_check_bounds::<MlmeGetMinstrelStatsRequest>(offset);
6853            // Zero out padding regions. There's no need to apply masks
6854            // because the unmasked parts will be overwritten by fields.
6855            // Write the fields.
6856            self.0.encode(encoder, offset + 0, depth)?;
6857            Ok(())
6858        }
6859    }
6860
6861    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6862        for MlmeGetMinstrelStatsRequest
6863    {
6864        #[inline(always)]
6865        fn new_empty() -> Self {
6866            Self { req: fidl::new_empty!(MinstrelStatsRequest, D) }
6867        }
6868
6869        #[inline]
6870        unsafe fn decode(
6871            &mut self,
6872            decoder: &mut fidl::encoding::Decoder<'_, D>,
6873            offset: usize,
6874            _depth: fidl::encoding::Depth,
6875        ) -> fidl::Result<()> {
6876            decoder.debug_check_bounds::<Self>(offset);
6877            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
6878            // Verify that padding bytes are zero.
6879            // Copy from the buffer into the object.
6880            unsafe {
6881                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
6882            }
6883            Ok(())
6884        }
6885    }
6886
6887    impl fidl::encoding::ValueTypeMarker for MlmeGetMinstrelStatsResponse {
6888        type Borrowed<'a> = &'a Self;
6889        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6890            value
6891        }
6892    }
6893
6894    unsafe impl fidl::encoding::TypeMarker for MlmeGetMinstrelStatsResponse {
6895        type Owned = Self;
6896
6897        #[inline(always)]
6898        fn inline_align(_context: fidl::encoding::Context) -> usize {
6899            8
6900        }
6901
6902        #[inline(always)]
6903        fn inline_size(_context: fidl::encoding::Context) -> usize {
6904            8
6905        }
6906    }
6907
6908    unsafe impl<D: fidl::encoding::ResourceDialect>
6909        fidl::encoding::Encode<MlmeGetMinstrelStatsResponse, D> for &MlmeGetMinstrelStatsResponse
6910    {
6911        #[inline]
6912        unsafe fn encode(
6913            self,
6914            encoder: &mut fidl::encoding::Encoder<'_, D>,
6915            offset: usize,
6916            _depth: fidl::encoding::Depth,
6917        ) -> fidl::Result<()> {
6918            encoder.debug_check_bounds::<MlmeGetMinstrelStatsResponse>(offset);
6919            // Delegate to tuple encoding.
6920            fidl::encoding::Encode::<MlmeGetMinstrelStatsResponse, D>::encode(
6921                (<MinstrelStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6922                encoder,
6923                offset,
6924                _depth,
6925            )
6926        }
6927    }
6928    unsafe impl<
6929        D: fidl::encoding::ResourceDialect,
6930        T0: fidl::encoding::Encode<MinstrelStatsResponse, D>,
6931    > fidl::encoding::Encode<MlmeGetMinstrelStatsResponse, D> for (T0,)
6932    {
6933        #[inline]
6934        unsafe fn encode(
6935            self,
6936            encoder: &mut fidl::encoding::Encoder<'_, D>,
6937            offset: usize,
6938            depth: fidl::encoding::Depth,
6939        ) -> fidl::Result<()> {
6940            encoder.debug_check_bounds::<MlmeGetMinstrelStatsResponse>(offset);
6941            // Zero out padding regions. There's no need to apply masks
6942            // because the unmasked parts will be overwritten by fields.
6943            // Write the fields.
6944            self.0.encode(encoder, offset + 0, depth)?;
6945            Ok(())
6946        }
6947    }
6948
6949    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6950        for MlmeGetMinstrelStatsResponse
6951    {
6952        #[inline(always)]
6953        fn new_empty() -> Self {
6954            Self { resp: fidl::new_empty!(MinstrelStatsResponse, D) }
6955        }
6956
6957        #[inline]
6958        unsafe fn decode(
6959            &mut self,
6960            decoder: &mut fidl::encoding::Decoder<'_, D>,
6961            offset: usize,
6962            _depth: fidl::encoding::Depth,
6963        ) -> fidl::Result<()> {
6964            decoder.debug_check_bounds::<Self>(offset);
6965            // Verify that padding bytes are zero.
6966            fidl::decode!(MinstrelStatsResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
6967            Ok(())
6968        }
6969    }
6970
6971    impl fidl::encoding::ValueTypeMarker for MlmeInstallApfPacketFilterRequest {
6972        type Borrowed<'a> = &'a Self;
6973        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6974            value
6975        }
6976    }
6977
6978    unsafe impl fidl::encoding::TypeMarker for MlmeInstallApfPacketFilterRequest {
6979        type Owned = Self;
6980
6981        #[inline(always)]
6982        fn inline_align(_context: fidl::encoding::Context) -> usize {
6983            8
6984        }
6985
6986        #[inline(always)]
6987        fn inline_size(_context: fidl::encoding::Context) -> usize {
6988            16
6989        }
6990    }
6991
6992    unsafe impl<D: fidl::encoding::ResourceDialect>
6993        fidl::encoding::Encode<MlmeInstallApfPacketFilterRequest, D>
6994        for &MlmeInstallApfPacketFilterRequest
6995    {
6996        #[inline]
6997        unsafe fn encode(
6998            self,
6999            encoder: &mut fidl::encoding::Encoder<'_, D>,
7000            offset: usize,
7001            _depth: fidl::encoding::Depth,
7002        ) -> fidl::Result<()> {
7003            encoder.debug_check_bounds::<MlmeInstallApfPacketFilterRequest>(offset);
7004            // Delegate to tuple encoding.
7005            fidl::encoding::Encode::<MlmeInstallApfPacketFilterRequest, D>::encode(
7006                (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
7007                    &self.program,
7008                ),),
7009                encoder,
7010                offset,
7011                _depth,
7012            )
7013        }
7014    }
7015    unsafe impl<
7016        D: fidl::encoding::ResourceDialect,
7017        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
7018    > fidl::encoding::Encode<MlmeInstallApfPacketFilterRequest, D> for (T0,)
7019    {
7020        #[inline]
7021        unsafe fn encode(
7022            self,
7023            encoder: &mut fidl::encoding::Encoder<'_, D>,
7024            offset: usize,
7025            depth: fidl::encoding::Depth,
7026        ) -> fidl::Result<()> {
7027            encoder.debug_check_bounds::<MlmeInstallApfPacketFilterRequest>(offset);
7028            // Zero out padding regions. There's no need to apply masks
7029            // because the unmasked parts will be overwritten by fields.
7030            // Write the fields.
7031            self.0.encode(encoder, offset + 0, depth)?;
7032            Ok(())
7033        }
7034    }
7035
7036    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7037        for MlmeInstallApfPacketFilterRequest
7038    {
7039        #[inline(always)]
7040        fn new_empty() -> Self {
7041            Self { program: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
7042        }
7043
7044        #[inline]
7045        unsafe fn decode(
7046            &mut self,
7047            decoder: &mut fidl::encoding::Decoder<'_, D>,
7048            offset: usize,
7049            _depth: fidl::encoding::Depth,
7050        ) -> fidl::Result<()> {
7051            decoder.debug_check_bounds::<Self>(offset);
7052            // Verify that padding bytes are zero.
7053            fidl::decode!(
7054                fidl::encoding::UnboundedVector<u8>,
7055                D,
7056                &mut self.program,
7057                decoder,
7058                offset + 0,
7059                _depth
7060            )?;
7061            Ok(())
7062        }
7063    }
7064
7065    impl fidl::encoding::ValueTypeMarker for MlmeListMinstrelPeersResponse {
7066        type Borrowed<'a> = &'a Self;
7067        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7068            value
7069        }
7070    }
7071
7072    unsafe impl fidl::encoding::TypeMarker for MlmeListMinstrelPeersResponse {
7073        type Owned = Self;
7074
7075        #[inline(always)]
7076        fn inline_align(_context: fidl::encoding::Context) -> usize {
7077            8
7078        }
7079
7080        #[inline(always)]
7081        fn inline_size(_context: fidl::encoding::Context) -> usize {
7082            16
7083        }
7084    }
7085
7086    unsafe impl<D: fidl::encoding::ResourceDialect>
7087        fidl::encoding::Encode<MlmeListMinstrelPeersResponse, D>
7088        for &MlmeListMinstrelPeersResponse
7089    {
7090        #[inline]
7091        unsafe fn encode(
7092            self,
7093            encoder: &mut fidl::encoding::Encoder<'_, D>,
7094            offset: usize,
7095            _depth: fidl::encoding::Depth,
7096        ) -> fidl::Result<()> {
7097            encoder.debug_check_bounds::<MlmeListMinstrelPeersResponse>(offset);
7098            // Delegate to tuple encoding.
7099            fidl::encoding::Encode::<MlmeListMinstrelPeersResponse, D>::encode(
7100                (<MinstrelListResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
7101                encoder,
7102                offset,
7103                _depth,
7104            )
7105        }
7106    }
7107    unsafe impl<
7108        D: fidl::encoding::ResourceDialect,
7109        T0: fidl::encoding::Encode<MinstrelListResponse, D>,
7110    > fidl::encoding::Encode<MlmeListMinstrelPeersResponse, D> for (T0,)
7111    {
7112        #[inline]
7113        unsafe fn encode(
7114            self,
7115            encoder: &mut fidl::encoding::Encoder<'_, D>,
7116            offset: usize,
7117            depth: fidl::encoding::Depth,
7118        ) -> fidl::Result<()> {
7119            encoder.debug_check_bounds::<MlmeListMinstrelPeersResponse>(offset);
7120            // Zero out padding regions. There's no need to apply masks
7121            // because the unmasked parts will be overwritten by fields.
7122            // Write the fields.
7123            self.0.encode(encoder, offset + 0, depth)?;
7124            Ok(())
7125        }
7126    }
7127
7128    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7129        for MlmeListMinstrelPeersResponse
7130    {
7131        #[inline(always)]
7132        fn new_empty() -> Self {
7133            Self { resp: fidl::new_empty!(MinstrelListResponse, D) }
7134        }
7135
7136        #[inline]
7137        unsafe fn decode(
7138            &mut self,
7139            decoder: &mut fidl::encoding::Decoder<'_, D>,
7140            offset: usize,
7141            _depth: fidl::encoding::Depth,
7142        ) -> fidl::Result<()> {
7143            decoder.debug_check_bounds::<Self>(offset);
7144            // Verify that padding bytes are zero.
7145            fidl::decode!(MinstrelListResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
7146            Ok(())
7147        }
7148    }
7149
7150    impl fidl::encoding::ValueTypeMarker for MlmeOnChannelSwitchedRequest {
7151        type Borrowed<'a> = &'a Self;
7152        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7153            value
7154        }
7155    }
7156
7157    unsafe impl fidl::encoding::TypeMarker for MlmeOnChannelSwitchedRequest {
7158        type Owned = Self;
7159
7160        #[inline(always)]
7161        fn inline_align(_context: fidl::encoding::Context) -> usize {
7162            1
7163        }
7164
7165        #[inline(always)]
7166        fn inline_size(_context: fidl::encoding::Context) -> usize {
7167            1
7168        }
7169    }
7170
7171    unsafe impl<D: fidl::encoding::ResourceDialect>
7172        fidl::encoding::Encode<MlmeOnChannelSwitchedRequest, D> for &MlmeOnChannelSwitchedRequest
7173    {
7174        #[inline]
7175        unsafe fn encode(
7176            self,
7177            encoder: &mut fidl::encoding::Encoder<'_, D>,
7178            offset: usize,
7179            _depth: fidl::encoding::Depth,
7180        ) -> fidl::Result<()> {
7181            encoder.debug_check_bounds::<MlmeOnChannelSwitchedRequest>(offset);
7182            // Delegate to tuple encoding.
7183            fidl::encoding::Encode::<MlmeOnChannelSwitchedRequest, D>::encode(
7184                (
7185                    <fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),
7186                ),
7187                encoder, offset, _depth
7188            )
7189        }
7190    }
7191    unsafe impl<
7192        D: fidl::encoding::ResourceDialect,
7193        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo, D>,
7194    > fidl::encoding::Encode<MlmeOnChannelSwitchedRequest, D> for (T0,)
7195    {
7196        #[inline]
7197        unsafe fn encode(
7198            self,
7199            encoder: &mut fidl::encoding::Encoder<'_, D>,
7200            offset: usize,
7201            depth: fidl::encoding::Depth,
7202        ) -> fidl::Result<()> {
7203            encoder.debug_check_bounds::<MlmeOnChannelSwitchedRequest>(offset);
7204            // Zero out padding regions. There's no need to apply masks
7205            // because the unmasked parts will be overwritten by fields.
7206            // Write the fields.
7207            self.0.encode(encoder, offset + 0, depth)?;
7208            Ok(())
7209        }
7210    }
7211
7212    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7213        for MlmeOnChannelSwitchedRequest
7214    {
7215        #[inline(always)]
7216        fn new_empty() -> Self {
7217            Self {
7218                info: fidl::new_empty!(fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo, D),
7219            }
7220        }
7221
7222        #[inline]
7223        unsafe fn decode(
7224            &mut self,
7225            decoder: &mut fidl::encoding::Decoder<'_, D>,
7226            offset: usize,
7227            _depth: fidl::encoding::Depth,
7228        ) -> fidl::Result<()> {
7229            decoder.debug_check_bounds::<Self>(offset);
7230            // Verify that padding bytes are zero.
7231            fidl::decode!(
7232                fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo,
7233                D,
7234                &mut self.info,
7235                decoder,
7236                offset + 0,
7237                _depth
7238            )?;
7239            Ok(())
7240        }
7241    }
7242
7243    impl fidl::encoding::ValueTypeMarker for MlmeOnPmkAvailableRequest {
7244        type Borrowed<'a> = &'a Self;
7245        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7246            value
7247        }
7248    }
7249
7250    unsafe impl fidl::encoding::TypeMarker for MlmeOnPmkAvailableRequest {
7251        type Owned = Self;
7252
7253        #[inline(always)]
7254        fn inline_align(_context: fidl::encoding::Context) -> usize {
7255            8
7256        }
7257
7258        #[inline(always)]
7259        fn inline_size(_context: fidl::encoding::Context) -> usize {
7260            32
7261        }
7262    }
7263
7264    unsafe impl<D: fidl::encoding::ResourceDialect>
7265        fidl::encoding::Encode<MlmeOnPmkAvailableRequest, D> for &MlmeOnPmkAvailableRequest
7266    {
7267        #[inline]
7268        unsafe fn encode(
7269            self,
7270            encoder: &mut fidl::encoding::Encoder<'_, D>,
7271            offset: usize,
7272            _depth: fidl::encoding::Depth,
7273        ) -> fidl::Result<()> {
7274            encoder.debug_check_bounds::<MlmeOnPmkAvailableRequest>(offset);
7275            // Delegate to tuple encoding.
7276            fidl::encoding::Encode::<MlmeOnPmkAvailableRequest, D>::encode(
7277                (<PmkInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
7278                encoder,
7279                offset,
7280                _depth,
7281            )
7282        }
7283    }
7284    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<PmkInfo, D>>
7285        fidl::encoding::Encode<MlmeOnPmkAvailableRequest, D> for (T0,)
7286    {
7287        #[inline]
7288        unsafe fn encode(
7289            self,
7290            encoder: &mut fidl::encoding::Encoder<'_, D>,
7291            offset: usize,
7292            depth: fidl::encoding::Depth,
7293        ) -> fidl::Result<()> {
7294            encoder.debug_check_bounds::<MlmeOnPmkAvailableRequest>(offset);
7295            // Zero out padding regions. There's no need to apply masks
7296            // because the unmasked parts will be overwritten by fields.
7297            // Write the fields.
7298            self.0.encode(encoder, offset + 0, depth)?;
7299            Ok(())
7300        }
7301    }
7302
7303    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7304        for MlmeOnPmkAvailableRequest
7305    {
7306        #[inline(always)]
7307        fn new_empty() -> Self {
7308            Self { info: fidl::new_empty!(PmkInfo, D) }
7309        }
7310
7311        #[inline]
7312        unsafe fn decode(
7313            &mut self,
7314            decoder: &mut fidl::encoding::Decoder<'_, D>,
7315            offset: usize,
7316            _depth: fidl::encoding::Depth,
7317        ) -> fidl::Result<()> {
7318            decoder.debug_check_bounds::<Self>(offset);
7319            // Verify that padding bytes are zero.
7320            fidl::decode!(PmkInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
7321            Ok(())
7322        }
7323    }
7324
7325    impl fidl::encoding::ValueTypeMarker for MlmeOnSaeFrameRxRequest {
7326        type Borrowed<'a> = &'a Self;
7327        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7328            value
7329        }
7330    }
7331
7332    unsafe impl fidl::encoding::TypeMarker for MlmeOnSaeFrameRxRequest {
7333        type Owned = Self;
7334
7335        #[inline(always)]
7336        fn inline_align(_context: fidl::encoding::Context) -> usize {
7337            8
7338        }
7339
7340        #[inline(always)]
7341        fn inline_size(_context: fidl::encoding::Context) -> usize {
7342            32
7343        }
7344    }
7345
7346    unsafe impl<D: fidl::encoding::ResourceDialect>
7347        fidl::encoding::Encode<MlmeOnSaeFrameRxRequest, D> for &MlmeOnSaeFrameRxRequest
7348    {
7349        #[inline]
7350        unsafe fn encode(
7351            self,
7352            encoder: &mut fidl::encoding::Encoder<'_, D>,
7353            offset: usize,
7354            _depth: fidl::encoding::Depth,
7355        ) -> fidl::Result<()> {
7356            encoder.debug_check_bounds::<MlmeOnSaeFrameRxRequest>(offset);
7357            // Delegate to tuple encoding.
7358            fidl::encoding::Encode::<MlmeOnSaeFrameRxRequest, D>::encode(
7359                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
7360                encoder,
7361                offset,
7362                _depth,
7363            )
7364        }
7365    }
7366    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
7367        fidl::encoding::Encode<MlmeOnSaeFrameRxRequest, D> for (T0,)
7368    {
7369        #[inline]
7370        unsafe fn encode(
7371            self,
7372            encoder: &mut fidl::encoding::Encoder<'_, D>,
7373            offset: usize,
7374            depth: fidl::encoding::Depth,
7375        ) -> fidl::Result<()> {
7376            encoder.debug_check_bounds::<MlmeOnSaeFrameRxRequest>(offset);
7377            // Zero out padding regions. There's no need to apply masks
7378            // because the unmasked parts will be overwritten by fields.
7379            // Write the fields.
7380            self.0.encode(encoder, offset + 0, depth)?;
7381            Ok(())
7382        }
7383    }
7384
7385    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7386        for MlmeOnSaeFrameRxRequest
7387    {
7388        #[inline(always)]
7389        fn new_empty() -> Self {
7390            Self { frame: fidl::new_empty!(SaeFrame, D) }
7391        }
7392
7393        #[inline]
7394        unsafe fn decode(
7395            &mut self,
7396            decoder: &mut fidl::encoding::Decoder<'_, D>,
7397            offset: usize,
7398            _depth: fidl::encoding::Depth,
7399        ) -> fidl::Result<()> {
7400            decoder.debug_check_bounds::<Self>(offset);
7401            // Verify that padding bytes are zero.
7402            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
7403            Ok(())
7404        }
7405    }
7406
7407    impl fidl::encoding::ValueTypeMarker for MlmeOnSaeHandshakeIndRequest {
7408        type Borrowed<'a> = &'a Self;
7409        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7410            value
7411        }
7412    }
7413
7414    unsafe impl fidl::encoding::TypeMarker for MlmeOnSaeHandshakeIndRequest {
7415        type Owned = Self;
7416
7417        #[inline(always)]
7418        fn inline_align(_context: fidl::encoding::Context) -> usize {
7419            1
7420        }
7421
7422        #[inline(always)]
7423        fn inline_size(_context: fidl::encoding::Context) -> usize {
7424            6
7425        }
7426        #[inline(always)]
7427        fn encode_is_copy() -> bool {
7428            true
7429        }
7430
7431        #[inline(always)]
7432        fn decode_is_copy() -> bool {
7433            true
7434        }
7435    }
7436
7437    unsafe impl<D: fidl::encoding::ResourceDialect>
7438        fidl::encoding::Encode<MlmeOnSaeHandshakeIndRequest, D> for &MlmeOnSaeHandshakeIndRequest
7439    {
7440        #[inline]
7441        unsafe fn encode(
7442            self,
7443            encoder: &mut fidl::encoding::Encoder<'_, D>,
7444            offset: usize,
7445            _depth: fidl::encoding::Depth,
7446        ) -> fidl::Result<()> {
7447            encoder.debug_check_bounds::<MlmeOnSaeHandshakeIndRequest>(offset);
7448            unsafe {
7449                // Copy the object into the buffer.
7450                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7451                (buf_ptr as *mut MlmeOnSaeHandshakeIndRequest)
7452                    .write_unaligned((self as *const MlmeOnSaeHandshakeIndRequest).read());
7453                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7454                // done second because the memcpy will write garbage to these bytes.
7455            }
7456            Ok(())
7457        }
7458    }
7459    unsafe impl<
7460        D: fidl::encoding::ResourceDialect,
7461        T0: fidl::encoding::Encode<SaeHandshakeIndication, D>,
7462    > fidl::encoding::Encode<MlmeOnSaeHandshakeIndRequest, D> for (T0,)
7463    {
7464        #[inline]
7465        unsafe fn encode(
7466            self,
7467            encoder: &mut fidl::encoding::Encoder<'_, D>,
7468            offset: usize,
7469            depth: fidl::encoding::Depth,
7470        ) -> fidl::Result<()> {
7471            encoder.debug_check_bounds::<MlmeOnSaeHandshakeIndRequest>(offset);
7472            // Zero out padding regions. There's no need to apply masks
7473            // because the unmasked parts will be overwritten by fields.
7474            // Write the fields.
7475            self.0.encode(encoder, offset + 0, depth)?;
7476            Ok(())
7477        }
7478    }
7479
7480    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7481        for MlmeOnSaeHandshakeIndRequest
7482    {
7483        #[inline(always)]
7484        fn new_empty() -> Self {
7485            Self { ind: fidl::new_empty!(SaeHandshakeIndication, D) }
7486        }
7487
7488        #[inline]
7489        unsafe fn decode(
7490            &mut self,
7491            decoder: &mut fidl::encoding::Decoder<'_, D>,
7492            offset: usize,
7493            _depth: fidl::encoding::Depth,
7494        ) -> fidl::Result<()> {
7495            decoder.debug_check_bounds::<Self>(offset);
7496            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7497            // Verify that padding bytes are zero.
7498            // Copy from the buffer into the object.
7499            unsafe {
7500                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
7501            }
7502            Ok(())
7503        }
7504    }
7505
7506    impl fidl::encoding::ValueTypeMarker for MlmeOnScanEndRequest {
7507        type Borrowed<'a> = &'a Self;
7508        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7509            value
7510        }
7511    }
7512
7513    unsafe impl fidl::encoding::TypeMarker for MlmeOnScanEndRequest {
7514        type Owned = Self;
7515
7516        #[inline(always)]
7517        fn inline_align(_context: fidl::encoding::Context) -> usize {
7518            8
7519        }
7520
7521        #[inline(always)]
7522        fn inline_size(_context: fidl::encoding::Context) -> usize {
7523            16
7524        }
7525    }
7526
7527    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeOnScanEndRequest, D>
7528        for &MlmeOnScanEndRequest
7529    {
7530        #[inline]
7531        unsafe fn encode(
7532            self,
7533            encoder: &mut fidl::encoding::Encoder<'_, D>,
7534            offset: usize,
7535            _depth: fidl::encoding::Depth,
7536        ) -> fidl::Result<()> {
7537            encoder.debug_check_bounds::<MlmeOnScanEndRequest>(offset);
7538            // Delegate to tuple encoding.
7539            fidl::encoding::Encode::<MlmeOnScanEndRequest, D>::encode(
7540                (<ScanEnd as fidl::encoding::ValueTypeMarker>::borrow(&self.end),),
7541                encoder,
7542                offset,
7543                _depth,
7544            )
7545        }
7546    }
7547    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanEnd, D>>
7548        fidl::encoding::Encode<MlmeOnScanEndRequest, D> for (T0,)
7549    {
7550        #[inline]
7551        unsafe fn encode(
7552            self,
7553            encoder: &mut fidl::encoding::Encoder<'_, D>,
7554            offset: usize,
7555            depth: fidl::encoding::Depth,
7556        ) -> fidl::Result<()> {
7557            encoder.debug_check_bounds::<MlmeOnScanEndRequest>(offset);
7558            // Zero out padding regions. There's no need to apply masks
7559            // because the unmasked parts will be overwritten by fields.
7560            // Write the fields.
7561            self.0.encode(encoder, offset + 0, depth)?;
7562            Ok(())
7563        }
7564    }
7565
7566    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeOnScanEndRequest {
7567        #[inline(always)]
7568        fn new_empty() -> Self {
7569            Self { end: fidl::new_empty!(ScanEnd, D) }
7570        }
7571
7572        #[inline]
7573        unsafe fn decode(
7574            &mut self,
7575            decoder: &mut fidl::encoding::Decoder<'_, D>,
7576            offset: usize,
7577            _depth: fidl::encoding::Depth,
7578        ) -> fidl::Result<()> {
7579            decoder.debug_check_bounds::<Self>(offset);
7580            // Verify that padding bytes are zero.
7581            fidl::decode!(ScanEnd, D, &mut self.end, decoder, offset + 0, _depth)?;
7582            Ok(())
7583        }
7584    }
7585
7586    impl fidl::encoding::ValueTypeMarker for MlmeOnScanResultRequest {
7587        type Borrowed<'a> = &'a Self;
7588        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7589            value
7590        }
7591    }
7592
7593    unsafe impl fidl::encoding::TypeMarker for MlmeOnScanResultRequest {
7594        type Owned = Self;
7595
7596        #[inline(always)]
7597        fn inline_align(_context: fidl::encoding::Context) -> usize {
7598            8
7599        }
7600
7601        #[inline(always)]
7602        fn inline_size(_context: fidl::encoding::Context) -> usize {
7603            64
7604        }
7605    }
7606
7607    unsafe impl<D: fidl::encoding::ResourceDialect>
7608        fidl::encoding::Encode<MlmeOnScanResultRequest, D> for &MlmeOnScanResultRequest
7609    {
7610        #[inline]
7611        unsafe fn encode(
7612            self,
7613            encoder: &mut fidl::encoding::Encoder<'_, D>,
7614            offset: usize,
7615            _depth: fidl::encoding::Depth,
7616        ) -> fidl::Result<()> {
7617            encoder.debug_check_bounds::<MlmeOnScanResultRequest>(offset);
7618            // Delegate to tuple encoding.
7619            fidl::encoding::Encode::<MlmeOnScanResultRequest, D>::encode(
7620                (<ScanResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),),
7621                encoder,
7622                offset,
7623                _depth,
7624            )
7625        }
7626    }
7627    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanResult, D>>
7628        fidl::encoding::Encode<MlmeOnScanResultRequest, D> for (T0,)
7629    {
7630        #[inline]
7631        unsafe fn encode(
7632            self,
7633            encoder: &mut fidl::encoding::Encoder<'_, D>,
7634            offset: usize,
7635            depth: fidl::encoding::Depth,
7636        ) -> fidl::Result<()> {
7637            encoder.debug_check_bounds::<MlmeOnScanResultRequest>(offset);
7638            // Zero out padding regions. There's no need to apply masks
7639            // because the unmasked parts will be overwritten by fields.
7640            // Write the fields.
7641            self.0.encode(encoder, offset + 0, depth)?;
7642            Ok(())
7643        }
7644    }
7645
7646    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7647        for MlmeOnScanResultRequest
7648    {
7649        #[inline(always)]
7650        fn new_empty() -> Self {
7651            Self { result: fidl::new_empty!(ScanResult, D) }
7652        }
7653
7654        #[inline]
7655        unsafe fn decode(
7656            &mut self,
7657            decoder: &mut fidl::encoding::Decoder<'_, D>,
7658            offset: usize,
7659            _depth: fidl::encoding::Depth,
7660        ) -> fidl::Result<()> {
7661            decoder.debug_check_bounds::<Self>(offset);
7662            // Verify that padding bytes are zero.
7663            fidl::decode!(ScanResult, D, &mut self.result, decoder, offset + 0, _depth)?;
7664            Ok(())
7665        }
7666    }
7667
7668    impl fidl::encoding::ValueTypeMarker for MlmeOnWmmStatusRespRequest {
7669        type Borrowed<'a> = &'a Self;
7670        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7671            value
7672        }
7673    }
7674
7675    unsafe impl fidl::encoding::TypeMarker for MlmeOnWmmStatusRespRequest {
7676        type Owned = Self;
7677
7678        #[inline(always)]
7679        fn inline_align(_context: fidl::encoding::Context) -> usize {
7680            4
7681        }
7682
7683        #[inline(always)]
7684        fn inline_size(_context: fidl::encoding::Context) -> usize {
7685            40
7686        }
7687    }
7688
7689    unsafe impl<D: fidl::encoding::ResourceDialect>
7690        fidl::encoding::Encode<MlmeOnWmmStatusRespRequest, D> for &MlmeOnWmmStatusRespRequest
7691    {
7692        #[inline]
7693        unsafe fn encode(
7694            self,
7695            encoder: &mut fidl::encoding::Encoder<'_, D>,
7696            offset: usize,
7697            _depth: fidl::encoding::Depth,
7698        ) -> fidl::Result<()> {
7699            encoder.debug_check_bounds::<MlmeOnWmmStatusRespRequest>(offset);
7700            // Delegate to tuple encoding.
7701            fidl::encoding::Encode::<MlmeOnWmmStatusRespRequest, D>::encode(
7702                (
7703                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
7704                    <fidl_fuchsia_wlan_internal__common::WmmStatusResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
7705                ),
7706                encoder, offset, _depth
7707            )
7708        }
7709    }
7710    unsafe impl<
7711        D: fidl::encoding::ResourceDialect,
7712        T0: fidl::encoding::Encode<i32, D>,
7713        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_internal__common::WmmStatusResponse, D>,
7714    > fidl::encoding::Encode<MlmeOnWmmStatusRespRequest, D> for (T0, T1)
7715    {
7716        #[inline]
7717        unsafe fn encode(
7718            self,
7719            encoder: &mut fidl::encoding::Encoder<'_, D>,
7720            offset: usize,
7721            depth: fidl::encoding::Depth,
7722        ) -> fidl::Result<()> {
7723            encoder.debug_check_bounds::<MlmeOnWmmStatusRespRequest>(offset);
7724            // Zero out padding regions. There's no need to apply masks
7725            // because the unmasked parts will be overwritten by fields.
7726            unsafe {
7727                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(36);
7728                (ptr as *mut u32).write_unaligned(0);
7729            }
7730            // Write the fields.
7731            self.0.encode(encoder, offset + 0, depth)?;
7732            self.1.encode(encoder, offset + 4, depth)?;
7733            Ok(())
7734        }
7735    }
7736
7737    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7738        for MlmeOnWmmStatusRespRequest
7739    {
7740        #[inline(always)]
7741        fn new_empty() -> Self {
7742            Self {
7743                status: fidl::new_empty!(i32, D),
7744                resp: fidl::new_empty!(fidl_fuchsia_wlan_internal__common::WmmStatusResponse, D),
7745            }
7746        }
7747
7748        #[inline]
7749        unsafe fn decode(
7750            &mut self,
7751            decoder: &mut fidl::encoding::Decoder<'_, D>,
7752            offset: usize,
7753            _depth: fidl::encoding::Depth,
7754        ) -> fidl::Result<()> {
7755            decoder.debug_check_bounds::<Self>(offset);
7756            // Verify that padding bytes are zero.
7757            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(36) };
7758            let padval = unsafe { (ptr as *const u32).read_unaligned() };
7759            let mask = 0xffff0000u32;
7760            let maskedval = padval & mask;
7761            if maskedval != 0 {
7762                return Err(fidl::Error::NonZeroPadding {
7763                    padding_start: offset + 36 + ((mask as u64).trailing_zeros() / 8) as usize,
7764                });
7765            }
7766            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
7767            fidl::decode!(
7768                fidl_fuchsia_wlan_internal__common::WmmStatusResponse,
7769                D,
7770                &mut self.resp,
7771                decoder,
7772                offset + 4,
7773                _depth
7774            )?;
7775            Ok(())
7776        }
7777    }
7778
7779    impl fidl::encoding::ValueTypeMarker for MlmeQueryDeviceInfoResponse {
7780        type Borrowed<'a> = &'a Self;
7781        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7782            value
7783        }
7784    }
7785
7786    unsafe impl fidl::encoding::TypeMarker for MlmeQueryDeviceInfoResponse {
7787        type Owned = Self;
7788
7789        #[inline(always)]
7790        fn inline_align(_context: fidl::encoding::Context) -> usize {
7791            8
7792        }
7793
7794        #[inline(always)]
7795        fn inline_size(_context: fidl::encoding::Context) -> usize {
7796            40
7797        }
7798    }
7799
7800    unsafe impl<D: fidl::encoding::ResourceDialect>
7801        fidl::encoding::Encode<MlmeQueryDeviceInfoResponse, D> for &MlmeQueryDeviceInfoResponse
7802    {
7803        #[inline]
7804        unsafe fn encode(
7805            self,
7806            encoder: &mut fidl::encoding::Encoder<'_, D>,
7807            offset: usize,
7808            _depth: fidl::encoding::Depth,
7809        ) -> fidl::Result<()> {
7810            encoder.debug_check_bounds::<MlmeQueryDeviceInfoResponse>(offset);
7811            // Delegate to tuple encoding.
7812            fidl::encoding::Encode::<MlmeQueryDeviceInfoResponse, D>::encode(
7813                (<DeviceInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
7814                encoder,
7815                offset,
7816                _depth,
7817            )
7818        }
7819    }
7820    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<DeviceInfo, D>>
7821        fidl::encoding::Encode<MlmeQueryDeviceInfoResponse, D> for (T0,)
7822    {
7823        #[inline]
7824        unsafe fn encode(
7825            self,
7826            encoder: &mut fidl::encoding::Encoder<'_, D>,
7827            offset: usize,
7828            depth: fidl::encoding::Depth,
7829        ) -> fidl::Result<()> {
7830            encoder.debug_check_bounds::<MlmeQueryDeviceInfoResponse>(offset);
7831            // Zero out padding regions. There's no need to apply masks
7832            // because the unmasked parts will be overwritten by fields.
7833            // Write the fields.
7834            self.0.encode(encoder, offset + 0, depth)?;
7835            Ok(())
7836        }
7837    }
7838
7839    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7840        for MlmeQueryDeviceInfoResponse
7841    {
7842        #[inline(always)]
7843        fn new_empty() -> Self {
7844            Self { info: fidl::new_empty!(DeviceInfo, D) }
7845        }
7846
7847        #[inline]
7848        unsafe fn decode(
7849            &mut self,
7850            decoder: &mut fidl::encoding::Decoder<'_, D>,
7851            offset: usize,
7852            _depth: fidl::encoding::Depth,
7853        ) -> fidl::Result<()> {
7854            decoder.debug_check_bounds::<Self>(offset);
7855            // Verify that padding bytes are zero.
7856            fidl::decode!(DeviceInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
7857            Ok(())
7858        }
7859    }
7860
7861    impl fidl::encoding::ValueTypeMarker for MlmeReconnectReqRequest {
7862        type Borrowed<'a> = &'a Self;
7863        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7864            value
7865        }
7866    }
7867
7868    unsafe impl fidl::encoding::TypeMarker for MlmeReconnectReqRequest {
7869        type Owned = Self;
7870
7871        #[inline(always)]
7872        fn inline_align(_context: fidl::encoding::Context) -> usize {
7873            1
7874        }
7875
7876        #[inline(always)]
7877        fn inline_size(_context: fidl::encoding::Context) -> usize {
7878            6
7879        }
7880        #[inline(always)]
7881        fn encode_is_copy() -> bool {
7882            true
7883        }
7884
7885        #[inline(always)]
7886        fn decode_is_copy() -> bool {
7887            true
7888        }
7889    }
7890
7891    unsafe impl<D: fidl::encoding::ResourceDialect>
7892        fidl::encoding::Encode<MlmeReconnectReqRequest, D> for &MlmeReconnectReqRequest
7893    {
7894        #[inline]
7895        unsafe fn encode(
7896            self,
7897            encoder: &mut fidl::encoding::Encoder<'_, D>,
7898            offset: usize,
7899            _depth: fidl::encoding::Depth,
7900        ) -> fidl::Result<()> {
7901            encoder.debug_check_bounds::<MlmeReconnectReqRequest>(offset);
7902            unsafe {
7903                // Copy the object into the buffer.
7904                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7905                (buf_ptr as *mut MlmeReconnectReqRequest)
7906                    .write_unaligned((self as *const MlmeReconnectReqRequest).read());
7907                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7908                // done second because the memcpy will write garbage to these bytes.
7909            }
7910            Ok(())
7911        }
7912    }
7913    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ReconnectRequest, D>>
7914        fidl::encoding::Encode<MlmeReconnectReqRequest, D> for (T0,)
7915    {
7916        #[inline]
7917        unsafe fn encode(
7918            self,
7919            encoder: &mut fidl::encoding::Encoder<'_, D>,
7920            offset: usize,
7921            depth: fidl::encoding::Depth,
7922        ) -> fidl::Result<()> {
7923            encoder.debug_check_bounds::<MlmeReconnectReqRequest>(offset);
7924            // Zero out padding regions. There's no need to apply masks
7925            // because the unmasked parts will be overwritten by fields.
7926            // Write the fields.
7927            self.0.encode(encoder, offset + 0, depth)?;
7928            Ok(())
7929        }
7930    }
7931
7932    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7933        for MlmeReconnectReqRequest
7934    {
7935        #[inline(always)]
7936        fn new_empty() -> Self {
7937            Self { req: fidl::new_empty!(ReconnectRequest, D) }
7938        }
7939
7940        #[inline]
7941        unsafe fn decode(
7942            &mut self,
7943            decoder: &mut fidl::encoding::Decoder<'_, D>,
7944            offset: usize,
7945            _depth: fidl::encoding::Depth,
7946        ) -> fidl::Result<()> {
7947            decoder.debug_check_bounds::<Self>(offset);
7948            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7949            // Verify that padding bytes are zero.
7950            // Copy from the buffer into the object.
7951            unsafe {
7952                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
7953            }
7954            Ok(())
7955        }
7956    }
7957
7958    impl fidl::encoding::ValueTypeMarker for MlmeRelayCapturedFrameRequest {
7959        type Borrowed<'a> = &'a Self;
7960        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7961            value
7962        }
7963    }
7964
7965    unsafe impl fidl::encoding::TypeMarker for MlmeRelayCapturedFrameRequest {
7966        type Owned = Self;
7967
7968        #[inline(always)]
7969        fn inline_align(_context: fidl::encoding::Context) -> usize {
7970            8
7971        }
7972
7973        #[inline(always)]
7974        fn inline_size(_context: fidl::encoding::Context) -> usize {
7975            16
7976        }
7977    }
7978
7979    unsafe impl<D: fidl::encoding::ResourceDialect>
7980        fidl::encoding::Encode<MlmeRelayCapturedFrameRequest, D>
7981        for &MlmeRelayCapturedFrameRequest
7982    {
7983        #[inline]
7984        unsafe fn encode(
7985            self,
7986            encoder: &mut fidl::encoding::Encoder<'_, D>,
7987            offset: usize,
7988            _depth: fidl::encoding::Depth,
7989        ) -> fidl::Result<()> {
7990            encoder.debug_check_bounds::<MlmeRelayCapturedFrameRequest>(offset);
7991            // Delegate to tuple encoding.
7992            fidl::encoding::Encode::<MlmeRelayCapturedFrameRequest, D>::encode(
7993                (<CapturedFrameResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),),
7994                encoder,
7995                offset,
7996                _depth,
7997            )
7998        }
7999    }
8000    unsafe impl<
8001        D: fidl::encoding::ResourceDialect,
8002        T0: fidl::encoding::Encode<CapturedFrameResult, D>,
8003    > fidl::encoding::Encode<MlmeRelayCapturedFrameRequest, D> for (T0,)
8004    {
8005        #[inline]
8006        unsafe fn encode(
8007            self,
8008            encoder: &mut fidl::encoding::Encoder<'_, D>,
8009            offset: usize,
8010            depth: fidl::encoding::Depth,
8011        ) -> fidl::Result<()> {
8012            encoder.debug_check_bounds::<MlmeRelayCapturedFrameRequest>(offset);
8013            // Zero out padding regions. There's no need to apply masks
8014            // because the unmasked parts will be overwritten by fields.
8015            // Write the fields.
8016            self.0.encode(encoder, offset + 0, depth)?;
8017            Ok(())
8018        }
8019    }
8020
8021    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8022        for MlmeRelayCapturedFrameRequest
8023    {
8024        #[inline(always)]
8025        fn new_empty() -> Self {
8026            Self { result: fidl::new_empty!(CapturedFrameResult, D) }
8027        }
8028
8029        #[inline]
8030        unsafe fn decode(
8031            &mut self,
8032            decoder: &mut fidl::encoding::Decoder<'_, D>,
8033            offset: usize,
8034            _depth: fidl::encoding::Depth,
8035        ) -> fidl::Result<()> {
8036            decoder.debug_check_bounds::<Self>(offset);
8037            // Verify that padding bytes are zero.
8038            fidl::decode!(CapturedFrameResult, D, &mut self.result, decoder, offset + 0, _depth)?;
8039            Ok(())
8040        }
8041    }
8042
8043    impl fidl::encoding::ValueTypeMarker for MlmeResetReqRequest {
8044        type Borrowed<'a> = &'a Self;
8045        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8046            value
8047        }
8048    }
8049
8050    unsafe impl fidl::encoding::TypeMarker for MlmeResetReqRequest {
8051        type Owned = Self;
8052
8053        #[inline(always)]
8054        fn inline_align(_context: fidl::encoding::Context) -> usize {
8055            1
8056        }
8057
8058        #[inline(always)]
8059        fn inline_size(_context: fidl::encoding::Context) -> usize {
8060            7
8061        }
8062    }
8063
8064    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeResetReqRequest, D>
8065        for &MlmeResetReqRequest
8066    {
8067        #[inline]
8068        unsafe fn encode(
8069            self,
8070            encoder: &mut fidl::encoding::Encoder<'_, D>,
8071            offset: usize,
8072            _depth: fidl::encoding::Depth,
8073        ) -> fidl::Result<()> {
8074            encoder.debug_check_bounds::<MlmeResetReqRequest>(offset);
8075            // Delegate to tuple encoding.
8076            fidl::encoding::Encode::<MlmeResetReqRequest, D>::encode(
8077                (<ResetRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8078                encoder,
8079                offset,
8080                _depth,
8081            )
8082        }
8083    }
8084    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ResetRequest, D>>
8085        fidl::encoding::Encode<MlmeResetReqRequest, D> for (T0,)
8086    {
8087        #[inline]
8088        unsafe fn encode(
8089            self,
8090            encoder: &mut fidl::encoding::Encoder<'_, D>,
8091            offset: usize,
8092            depth: fidl::encoding::Depth,
8093        ) -> fidl::Result<()> {
8094            encoder.debug_check_bounds::<MlmeResetReqRequest>(offset);
8095            // Zero out padding regions. There's no need to apply masks
8096            // because the unmasked parts will be overwritten by fields.
8097            // Write the fields.
8098            self.0.encode(encoder, offset + 0, depth)?;
8099            Ok(())
8100        }
8101    }
8102
8103    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeResetReqRequest {
8104        #[inline(always)]
8105        fn new_empty() -> Self {
8106            Self { req: fidl::new_empty!(ResetRequest, D) }
8107        }
8108
8109        #[inline]
8110        unsafe fn decode(
8111            &mut self,
8112            decoder: &mut fidl::encoding::Decoder<'_, D>,
8113            offset: usize,
8114            _depth: fidl::encoding::Depth,
8115        ) -> fidl::Result<()> {
8116            decoder.debug_check_bounds::<Self>(offset);
8117            // Verify that padding bytes are zero.
8118            fidl::decode!(ResetRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8119            Ok(())
8120        }
8121    }
8122
8123    impl fidl::encoding::ValueTypeMarker for MlmeRoamConfRequest {
8124        type Borrowed<'a> = &'a Self;
8125        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8126            value
8127        }
8128    }
8129
8130    unsafe impl fidl::encoding::TypeMarker for MlmeRoamConfRequest {
8131        type Owned = Self;
8132
8133        #[inline(always)]
8134        fn inline_align(_context: fidl::encoding::Context) -> usize {
8135            8
8136        }
8137
8138        #[inline(always)]
8139        fn inline_size(_context: fidl::encoding::Context) -> usize {
8140            32
8141        }
8142    }
8143
8144    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeRoamConfRequest, D>
8145        for &MlmeRoamConfRequest
8146    {
8147        #[inline]
8148        unsafe fn encode(
8149            self,
8150            encoder: &mut fidl::encoding::Encoder<'_, D>,
8151            offset: usize,
8152            _depth: fidl::encoding::Depth,
8153        ) -> fidl::Result<()> {
8154            encoder.debug_check_bounds::<MlmeRoamConfRequest>(offset);
8155            // Delegate to tuple encoding.
8156            fidl::encoding::Encode::<MlmeRoamConfRequest, D>::encode(
8157                (<RoamConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.conf),),
8158                encoder,
8159                offset,
8160                _depth,
8161            )
8162        }
8163    }
8164    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RoamConfirm, D>>
8165        fidl::encoding::Encode<MlmeRoamConfRequest, D> for (T0,)
8166    {
8167        #[inline]
8168        unsafe fn encode(
8169            self,
8170            encoder: &mut fidl::encoding::Encoder<'_, D>,
8171            offset: usize,
8172            depth: fidl::encoding::Depth,
8173        ) -> fidl::Result<()> {
8174            encoder.debug_check_bounds::<MlmeRoamConfRequest>(offset);
8175            // Zero out padding regions. There's no need to apply masks
8176            // because the unmasked parts will be overwritten by fields.
8177            // Write the fields.
8178            self.0.encode(encoder, offset + 0, depth)?;
8179            Ok(())
8180        }
8181    }
8182
8183    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeRoamConfRequest {
8184        #[inline(always)]
8185        fn new_empty() -> Self {
8186            Self { conf: fidl::new_empty!(RoamConfirm, D) }
8187        }
8188
8189        #[inline]
8190        unsafe fn decode(
8191            &mut self,
8192            decoder: &mut fidl::encoding::Decoder<'_, D>,
8193            offset: usize,
8194            _depth: fidl::encoding::Depth,
8195        ) -> fidl::Result<()> {
8196            decoder.debug_check_bounds::<Self>(offset);
8197            // Verify that padding bytes are zero.
8198            fidl::decode!(RoamConfirm, D, &mut self.conf, decoder, offset + 0, _depth)?;
8199            Ok(())
8200        }
8201    }
8202
8203    impl fidl::encoding::ValueTypeMarker for MlmeRoamReqRequest {
8204        type Borrowed<'a> = &'a Self;
8205        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8206            value
8207        }
8208    }
8209
8210    unsafe impl fidl::encoding::TypeMarker for MlmeRoamReqRequest {
8211        type Owned = Self;
8212
8213        #[inline(always)]
8214        fn inline_align(_context: fidl::encoding::Context) -> usize {
8215            8
8216        }
8217
8218        #[inline(always)]
8219        fn inline_size(_context: fidl::encoding::Context) -> usize {
8220            48
8221        }
8222    }
8223
8224    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeRoamReqRequest, D>
8225        for &MlmeRoamReqRequest
8226    {
8227        #[inline]
8228        unsafe fn encode(
8229            self,
8230            encoder: &mut fidl::encoding::Encoder<'_, D>,
8231            offset: usize,
8232            _depth: fidl::encoding::Depth,
8233        ) -> fidl::Result<()> {
8234            encoder.debug_check_bounds::<MlmeRoamReqRequest>(offset);
8235            // Delegate to tuple encoding.
8236            fidl::encoding::Encode::<MlmeRoamReqRequest, D>::encode(
8237                (<RoamRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8238                encoder,
8239                offset,
8240                _depth,
8241            )
8242        }
8243    }
8244    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RoamRequest, D>>
8245        fidl::encoding::Encode<MlmeRoamReqRequest, D> for (T0,)
8246    {
8247        #[inline]
8248        unsafe fn encode(
8249            self,
8250            encoder: &mut fidl::encoding::Encoder<'_, D>,
8251            offset: usize,
8252            depth: fidl::encoding::Depth,
8253        ) -> fidl::Result<()> {
8254            encoder.debug_check_bounds::<MlmeRoamReqRequest>(offset);
8255            // Zero out padding regions. There's no need to apply masks
8256            // because the unmasked parts will be overwritten by fields.
8257            // Write the fields.
8258            self.0.encode(encoder, offset + 0, depth)?;
8259            Ok(())
8260        }
8261    }
8262
8263    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeRoamReqRequest {
8264        #[inline(always)]
8265        fn new_empty() -> Self {
8266            Self { req: fidl::new_empty!(RoamRequest, D) }
8267        }
8268
8269        #[inline]
8270        unsafe fn decode(
8271            &mut self,
8272            decoder: &mut fidl::encoding::Decoder<'_, D>,
8273            offset: usize,
8274            _depth: fidl::encoding::Depth,
8275        ) -> fidl::Result<()> {
8276            decoder.debug_check_bounds::<Self>(offset);
8277            // Verify that padding bytes are zero.
8278            fidl::decode!(RoamRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8279            Ok(())
8280        }
8281    }
8282
8283    impl fidl::encoding::ValueTypeMarker for MlmeRoamResultIndRequest {
8284        type Borrowed<'a> = &'a Self;
8285        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8286            value
8287        }
8288    }
8289
8290    unsafe impl fidl::encoding::TypeMarker for MlmeRoamResultIndRequest {
8291        type Owned = Self;
8292
8293        #[inline(always)]
8294        fn inline_align(_context: fidl::encoding::Context) -> usize {
8295            8
8296        }
8297
8298        #[inline(always)]
8299        fn inline_size(_context: fidl::encoding::Context) -> usize {
8300            32
8301        }
8302    }
8303
8304    unsafe impl<D: fidl::encoding::ResourceDialect>
8305        fidl::encoding::Encode<MlmeRoamResultIndRequest, D> for &MlmeRoamResultIndRequest
8306    {
8307        #[inline]
8308        unsafe fn encode(
8309            self,
8310            encoder: &mut fidl::encoding::Encoder<'_, D>,
8311            offset: usize,
8312            _depth: fidl::encoding::Depth,
8313        ) -> fidl::Result<()> {
8314            encoder.debug_check_bounds::<MlmeRoamResultIndRequest>(offset);
8315            // Delegate to tuple encoding.
8316            fidl::encoding::Encode::<MlmeRoamResultIndRequest, D>::encode(
8317                (<RoamResultIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
8318                encoder,
8319                offset,
8320                _depth,
8321            )
8322        }
8323    }
8324    unsafe impl<
8325        D: fidl::encoding::ResourceDialect,
8326        T0: fidl::encoding::Encode<RoamResultIndication, D>,
8327    > fidl::encoding::Encode<MlmeRoamResultIndRequest, D> for (T0,)
8328    {
8329        #[inline]
8330        unsafe fn encode(
8331            self,
8332            encoder: &mut fidl::encoding::Encoder<'_, D>,
8333            offset: usize,
8334            depth: fidl::encoding::Depth,
8335        ) -> fidl::Result<()> {
8336            encoder.debug_check_bounds::<MlmeRoamResultIndRequest>(offset);
8337            // Zero out padding regions. There's no need to apply masks
8338            // because the unmasked parts will be overwritten by fields.
8339            // Write the fields.
8340            self.0.encode(encoder, offset + 0, depth)?;
8341            Ok(())
8342        }
8343    }
8344
8345    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8346        for MlmeRoamResultIndRequest
8347    {
8348        #[inline(always)]
8349        fn new_empty() -> Self {
8350            Self { ind: fidl::new_empty!(RoamResultIndication, D) }
8351        }
8352
8353        #[inline]
8354        unsafe fn decode(
8355            &mut self,
8356            decoder: &mut fidl::encoding::Decoder<'_, D>,
8357            offset: usize,
8358            _depth: fidl::encoding::Depth,
8359        ) -> fidl::Result<()> {
8360            decoder.debug_check_bounds::<Self>(offset);
8361            // Verify that padding bytes are zero.
8362            fidl::decode!(RoamResultIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
8363            Ok(())
8364        }
8365    }
8366
8367    impl fidl::encoding::ValueTypeMarker for MlmeRoamStartIndRequest {
8368        type Borrowed<'a> = &'a Self;
8369        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8370            value
8371        }
8372    }
8373
8374    unsafe impl fidl::encoding::TypeMarker for MlmeRoamStartIndRequest {
8375        type Owned = Self;
8376
8377        #[inline(always)]
8378        fn inline_align(_context: fidl::encoding::Context) -> usize {
8379            8
8380        }
8381
8382        #[inline(always)]
8383        fn inline_size(_context: fidl::encoding::Context) -> usize {
8384            64
8385        }
8386    }
8387
8388    unsafe impl<D: fidl::encoding::ResourceDialect>
8389        fidl::encoding::Encode<MlmeRoamStartIndRequest, D> for &MlmeRoamStartIndRequest
8390    {
8391        #[inline]
8392        unsafe fn encode(
8393            self,
8394            encoder: &mut fidl::encoding::Encoder<'_, D>,
8395            offset: usize,
8396            _depth: fidl::encoding::Depth,
8397        ) -> fidl::Result<()> {
8398            encoder.debug_check_bounds::<MlmeRoamStartIndRequest>(offset);
8399            // Delegate to tuple encoding.
8400            fidl::encoding::Encode::<MlmeRoamStartIndRequest, D>::encode(
8401                (<RoamStartIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
8402                encoder,
8403                offset,
8404                _depth,
8405            )
8406        }
8407    }
8408    unsafe impl<
8409        D: fidl::encoding::ResourceDialect,
8410        T0: fidl::encoding::Encode<RoamStartIndication, D>,
8411    > fidl::encoding::Encode<MlmeRoamStartIndRequest, D> for (T0,)
8412    {
8413        #[inline]
8414        unsafe fn encode(
8415            self,
8416            encoder: &mut fidl::encoding::Encoder<'_, D>,
8417            offset: usize,
8418            depth: fidl::encoding::Depth,
8419        ) -> fidl::Result<()> {
8420            encoder.debug_check_bounds::<MlmeRoamStartIndRequest>(offset);
8421            // Zero out padding regions. There's no need to apply masks
8422            // because the unmasked parts will be overwritten by fields.
8423            // Write the fields.
8424            self.0.encode(encoder, offset + 0, depth)?;
8425            Ok(())
8426        }
8427    }
8428
8429    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8430        for MlmeRoamStartIndRequest
8431    {
8432        #[inline(always)]
8433        fn new_empty() -> Self {
8434            Self { ind: fidl::new_empty!(RoamStartIndication, D) }
8435        }
8436
8437        #[inline]
8438        unsafe fn decode(
8439            &mut self,
8440            decoder: &mut fidl::encoding::Decoder<'_, D>,
8441            offset: usize,
8442            _depth: fidl::encoding::Depth,
8443        ) -> fidl::Result<()> {
8444            decoder.debug_check_bounds::<Self>(offset);
8445            // Verify that padding bytes are zero.
8446            fidl::decode!(RoamStartIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
8447            Ok(())
8448        }
8449    }
8450
8451    impl fidl::encoding::ValueTypeMarker for MlmeSaeFrameTxRequest {
8452        type Borrowed<'a> = &'a Self;
8453        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8454            value
8455        }
8456    }
8457
8458    unsafe impl fidl::encoding::TypeMarker for MlmeSaeFrameTxRequest {
8459        type Owned = Self;
8460
8461        #[inline(always)]
8462        fn inline_align(_context: fidl::encoding::Context) -> usize {
8463            8
8464        }
8465
8466        #[inline(always)]
8467        fn inline_size(_context: fidl::encoding::Context) -> usize {
8468            32
8469        }
8470    }
8471
8472    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeSaeFrameTxRequest, D>
8473        for &MlmeSaeFrameTxRequest
8474    {
8475        #[inline]
8476        unsafe fn encode(
8477            self,
8478            encoder: &mut fidl::encoding::Encoder<'_, D>,
8479            offset: usize,
8480            _depth: fidl::encoding::Depth,
8481        ) -> fidl::Result<()> {
8482            encoder.debug_check_bounds::<MlmeSaeFrameTxRequest>(offset);
8483            // Delegate to tuple encoding.
8484            fidl::encoding::Encode::<MlmeSaeFrameTxRequest, D>::encode(
8485                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
8486                encoder,
8487                offset,
8488                _depth,
8489            )
8490        }
8491    }
8492    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
8493        fidl::encoding::Encode<MlmeSaeFrameTxRequest, D> for (T0,)
8494    {
8495        #[inline]
8496        unsafe fn encode(
8497            self,
8498            encoder: &mut fidl::encoding::Encoder<'_, D>,
8499            offset: usize,
8500            depth: fidl::encoding::Depth,
8501        ) -> fidl::Result<()> {
8502            encoder.debug_check_bounds::<MlmeSaeFrameTxRequest>(offset);
8503            // Zero out padding regions. There's no need to apply masks
8504            // because the unmasked parts will be overwritten by fields.
8505            // Write the fields.
8506            self.0.encode(encoder, offset + 0, depth)?;
8507            Ok(())
8508        }
8509    }
8510
8511    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeSaeFrameTxRequest {
8512        #[inline(always)]
8513        fn new_empty() -> Self {
8514            Self { frame: fidl::new_empty!(SaeFrame, D) }
8515        }
8516
8517        #[inline]
8518        unsafe fn decode(
8519            &mut self,
8520            decoder: &mut fidl::encoding::Decoder<'_, D>,
8521            offset: usize,
8522            _depth: fidl::encoding::Depth,
8523        ) -> fidl::Result<()> {
8524            decoder.debug_check_bounds::<Self>(offset);
8525            // Verify that padding bytes are zero.
8526            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
8527            Ok(())
8528        }
8529    }
8530
8531    impl fidl::encoding::ValueTypeMarker for MlmeSaeHandshakeRespRequest {
8532        type Borrowed<'a> = &'a Self;
8533        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8534            value
8535        }
8536    }
8537
8538    unsafe impl fidl::encoding::TypeMarker for MlmeSaeHandshakeRespRequest {
8539        type Owned = Self;
8540
8541        #[inline(always)]
8542        fn inline_align(_context: fidl::encoding::Context) -> usize {
8543            2
8544        }
8545
8546        #[inline(always)]
8547        fn inline_size(_context: fidl::encoding::Context) -> usize {
8548            8
8549        }
8550    }
8551
8552    unsafe impl<D: fidl::encoding::ResourceDialect>
8553        fidl::encoding::Encode<MlmeSaeHandshakeRespRequest, D> for &MlmeSaeHandshakeRespRequest
8554    {
8555        #[inline]
8556        unsafe fn encode(
8557            self,
8558            encoder: &mut fidl::encoding::Encoder<'_, D>,
8559            offset: usize,
8560            _depth: fidl::encoding::Depth,
8561        ) -> fidl::Result<()> {
8562            encoder.debug_check_bounds::<MlmeSaeHandshakeRespRequest>(offset);
8563            // Delegate to tuple encoding.
8564            fidl::encoding::Encode::<MlmeSaeHandshakeRespRequest, D>::encode(
8565                (<SaeHandshakeResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
8566                encoder,
8567                offset,
8568                _depth,
8569            )
8570        }
8571    }
8572    unsafe impl<
8573        D: fidl::encoding::ResourceDialect,
8574        T0: fidl::encoding::Encode<SaeHandshakeResponse, D>,
8575    > fidl::encoding::Encode<MlmeSaeHandshakeRespRequest, D> for (T0,)
8576    {
8577        #[inline]
8578        unsafe fn encode(
8579            self,
8580            encoder: &mut fidl::encoding::Encoder<'_, D>,
8581            offset: usize,
8582            depth: fidl::encoding::Depth,
8583        ) -> fidl::Result<()> {
8584            encoder.debug_check_bounds::<MlmeSaeHandshakeRespRequest>(offset);
8585            // Zero out padding regions. There's no need to apply masks
8586            // because the unmasked parts will be overwritten by fields.
8587            // Write the fields.
8588            self.0.encode(encoder, offset + 0, depth)?;
8589            Ok(())
8590        }
8591    }
8592
8593    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8594        for MlmeSaeHandshakeRespRequest
8595    {
8596        #[inline(always)]
8597        fn new_empty() -> Self {
8598            Self { resp: fidl::new_empty!(SaeHandshakeResponse, D) }
8599        }
8600
8601        #[inline]
8602        unsafe fn decode(
8603            &mut self,
8604            decoder: &mut fidl::encoding::Decoder<'_, D>,
8605            offset: usize,
8606            _depth: fidl::encoding::Depth,
8607        ) -> fidl::Result<()> {
8608            decoder.debug_check_bounds::<Self>(offset);
8609            // Verify that padding bytes are zero.
8610            fidl::decode!(SaeHandshakeResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
8611            Ok(())
8612        }
8613    }
8614
8615    impl fidl::encoding::ValueTypeMarker for MlmeSetApfPacketFilterEnabledRequest {
8616        type Borrowed<'a> = &'a Self;
8617        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8618            value
8619        }
8620    }
8621
8622    unsafe impl fidl::encoding::TypeMarker for MlmeSetApfPacketFilterEnabledRequest {
8623        type Owned = Self;
8624
8625        #[inline(always)]
8626        fn inline_align(_context: fidl::encoding::Context) -> usize {
8627            1
8628        }
8629
8630        #[inline(always)]
8631        fn inline_size(_context: fidl::encoding::Context) -> usize {
8632            1
8633        }
8634    }
8635
8636    unsafe impl<D: fidl::encoding::ResourceDialect>
8637        fidl::encoding::Encode<MlmeSetApfPacketFilterEnabledRequest, D>
8638        for &MlmeSetApfPacketFilterEnabledRequest
8639    {
8640        #[inline]
8641        unsafe fn encode(
8642            self,
8643            encoder: &mut fidl::encoding::Encoder<'_, D>,
8644            offset: usize,
8645            _depth: fidl::encoding::Depth,
8646        ) -> fidl::Result<()> {
8647            encoder.debug_check_bounds::<MlmeSetApfPacketFilterEnabledRequest>(offset);
8648            // Delegate to tuple encoding.
8649            fidl::encoding::Encode::<MlmeSetApfPacketFilterEnabledRequest, D>::encode(
8650                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enabled),),
8651                encoder,
8652                offset,
8653                _depth,
8654            )
8655        }
8656    }
8657    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
8658        fidl::encoding::Encode<MlmeSetApfPacketFilterEnabledRequest, D> for (T0,)
8659    {
8660        #[inline]
8661        unsafe fn encode(
8662            self,
8663            encoder: &mut fidl::encoding::Encoder<'_, D>,
8664            offset: usize,
8665            depth: fidl::encoding::Depth,
8666        ) -> fidl::Result<()> {
8667            encoder.debug_check_bounds::<MlmeSetApfPacketFilterEnabledRequest>(offset);
8668            // Zero out padding regions. There's no need to apply masks
8669            // because the unmasked parts will be overwritten by fields.
8670            // Write the fields.
8671            self.0.encode(encoder, offset + 0, depth)?;
8672            Ok(())
8673        }
8674    }
8675
8676    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8677        for MlmeSetApfPacketFilterEnabledRequest
8678    {
8679        #[inline(always)]
8680        fn new_empty() -> Self {
8681            Self { enabled: fidl::new_empty!(bool, D) }
8682        }
8683
8684        #[inline]
8685        unsafe fn decode(
8686            &mut self,
8687            decoder: &mut fidl::encoding::Decoder<'_, D>,
8688            offset: usize,
8689            _depth: fidl::encoding::Depth,
8690        ) -> fidl::Result<()> {
8691            decoder.debug_check_bounds::<Self>(offset);
8692            // Verify that padding bytes are zero.
8693            fidl::decode!(bool, D, &mut self.enabled, decoder, offset + 0, _depth)?;
8694            Ok(())
8695        }
8696    }
8697
8698    impl fidl::encoding::ValueTypeMarker for MlmeSetControlledPortRequest {
8699        type Borrowed<'a> = &'a Self;
8700        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8701            value
8702        }
8703    }
8704
8705    unsafe impl fidl::encoding::TypeMarker for MlmeSetControlledPortRequest {
8706        type Owned = Self;
8707
8708        #[inline(always)]
8709        fn inline_align(_context: fidl::encoding::Context) -> usize {
8710            4
8711        }
8712
8713        #[inline(always)]
8714        fn inline_size(_context: fidl::encoding::Context) -> usize {
8715            12
8716        }
8717    }
8718
8719    unsafe impl<D: fidl::encoding::ResourceDialect>
8720        fidl::encoding::Encode<MlmeSetControlledPortRequest, D> for &MlmeSetControlledPortRequest
8721    {
8722        #[inline]
8723        unsafe fn encode(
8724            self,
8725            encoder: &mut fidl::encoding::Encoder<'_, D>,
8726            offset: usize,
8727            _depth: fidl::encoding::Depth,
8728        ) -> fidl::Result<()> {
8729            encoder.debug_check_bounds::<MlmeSetControlledPortRequest>(offset);
8730            // Delegate to tuple encoding.
8731            fidl::encoding::Encode::<MlmeSetControlledPortRequest, D>::encode(
8732                (<SetControlledPortRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8733                encoder,
8734                offset,
8735                _depth,
8736            )
8737        }
8738    }
8739    unsafe impl<
8740        D: fidl::encoding::ResourceDialect,
8741        T0: fidl::encoding::Encode<SetControlledPortRequest, D>,
8742    > fidl::encoding::Encode<MlmeSetControlledPortRequest, D> for (T0,)
8743    {
8744        #[inline]
8745        unsafe fn encode(
8746            self,
8747            encoder: &mut fidl::encoding::Encoder<'_, D>,
8748            offset: usize,
8749            depth: fidl::encoding::Depth,
8750        ) -> fidl::Result<()> {
8751            encoder.debug_check_bounds::<MlmeSetControlledPortRequest>(offset);
8752            // Zero out padding regions. There's no need to apply masks
8753            // because the unmasked parts will be overwritten by fields.
8754            // Write the fields.
8755            self.0.encode(encoder, offset + 0, depth)?;
8756            Ok(())
8757        }
8758    }
8759
8760    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8761        for MlmeSetControlledPortRequest
8762    {
8763        #[inline(always)]
8764        fn new_empty() -> Self {
8765            Self { req: fidl::new_empty!(SetControlledPortRequest, D) }
8766        }
8767
8768        #[inline]
8769        unsafe fn decode(
8770            &mut self,
8771            decoder: &mut fidl::encoding::Decoder<'_, D>,
8772            offset: usize,
8773            _depth: fidl::encoding::Depth,
8774        ) -> fidl::Result<()> {
8775            decoder.debug_check_bounds::<Self>(offset);
8776            // Verify that padding bytes are zero.
8777            fidl::decode!(SetControlledPortRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8778            Ok(())
8779        }
8780    }
8781
8782    impl fidl::encoding::ValueTypeMarker for MlmeSetKeysConfRequest {
8783        type Borrowed<'a> = &'a Self;
8784        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8785            value
8786        }
8787    }
8788
8789    unsafe impl fidl::encoding::TypeMarker for MlmeSetKeysConfRequest {
8790        type Owned = Self;
8791
8792        #[inline(always)]
8793        fn inline_align(_context: fidl::encoding::Context) -> usize {
8794            8
8795        }
8796
8797        #[inline(always)]
8798        fn inline_size(_context: fidl::encoding::Context) -> usize {
8799            16
8800        }
8801    }
8802
8803    unsafe impl<D: fidl::encoding::ResourceDialect>
8804        fidl::encoding::Encode<MlmeSetKeysConfRequest, D> for &MlmeSetKeysConfRequest
8805    {
8806        #[inline]
8807        unsafe fn encode(
8808            self,
8809            encoder: &mut fidl::encoding::Encoder<'_, D>,
8810            offset: usize,
8811            _depth: fidl::encoding::Depth,
8812        ) -> fidl::Result<()> {
8813            encoder.debug_check_bounds::<MlmeSetKeysConfRequest>(offset);
8814            // Delegate to tuple encoding.
8815            fidl::encoding::Encode::<MlmeSetKeysConfRequest, D>::encode(
8816                (<SetKeysConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.conf),),
8817                encoder,
8818                offset,
8819                _depth,
8820            )
8821        }
8822    }
8823    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SetKeysConfirm, D>>
8824        fidl::encoding::Encode<MlmeSetKeysConfRequest, D> for (T0,)
8825    {
8826        #[inline]
8827        unsafe fn encode(
8828            self,
8829            encoder: &mut fidl::encoding::Encoder<'_, D>,
8830            offset: usize,
8831            depth: fidl::encoding::Depth,
8832        ) -> fidl::Result<()> {
8833            encoder.debug_check_bounds::<MlmeSetKeysConfRequest>(offset);
8834            // Zero out padding regions. There's no need to apply masks
8835            // because the unmasked parts will be overwritten by fields.
8836            // Write the fields.
8837            self.0.encode(encoder, offset + 0, depth)?;
8838            Ok(())
8839        }
8840    }
8841
8842    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8843        for MlmeSetKeysConfRequest
8844    {
8845        #[inline(always)]
8846        fn new_empty() -> Self {
8847            Self { conf: fidl::new_empty!(SetKeysConfirm, D) }
8848        }
8849
8850        #[inline]
8851        unsafe fn decode(
8852            &mut self,
8853            decoder: &mut fidl::encoding::Decoder<'_, D>,
8854            offset: usize,
8855            _depth: fidl::encoding::Depth,
8856        ) -> fidl::Result<()> {
8857            decoder.debug_check_bounds::<Self>(offset);
8858            // Verify that padding bytes are zero.
8859            fidl::decode!(SetKeysConfirm, D, &mut self.conf, decoder, offset + 0, _depth)?;
8860            Ok(())
8861        }
8862    }
8863
8864    impl fidl::encoding::ValueTypeMarker for MlmeSetKeysReqRequest {
8865        type Borrowed<'a> = &'a Self;
8866        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8867            value
8868        }
8869    }
8870
8871    unsafe impl fidl::encoding::TypeMarker for MlmeSetKeysReqRequest {
8872        type Owned = Self;
8873
8874        #[inline(always)]
8875        fn inline_align(_context: fidl::encoding::Context) -> usize {
8876            8
8877        }
8878
8879        #[inline(always)]
8880        fn inline_size(_context: fidl::encoding::Context) -> usize {
8881            16
8882        }
8883    }
8884
8885    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeSetKeysReqRequest, D>
8886        for &MlmeSetKeysReqRequest
8887    {
8888        #[inline]
8889        unsafe fn encode(
8890            self,
8891            encoder: &mut fidl::encoding::Encoder<'_, D>,
8892            offset: usize,
8893            _depth: fidl::encoding::Depth,
8894        ) -> fidl::Result<()> {
8895            encoder.debug_check_bounds::<MlmeSetKeysReqRequest>(offset);
8896            // Delegate to tuple encoding.
8897            fidl::encoding::Encode::<MlmeSetKeysReqRequest, D>::encode(
8898                (<SetKeysRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8899                encoder,
8900                offset,
8901                _depth,
8902            )
8903        }
8904    }
8905    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SetKeysRequest, D>>
8906        fidl::encoding::Encode<MlmeSetKeysReqRequest, D> for (T0,)
8907    {
8908        #[inline]
8909        unsafe fn encode(
8910            self,
8911            encoder: &mut fidl::encoding::Encoder<'_, D>,
8912            offset: usize,
8913            depth: fidl::encoding::Depth,
8914        ) -> fidl::Result<()> {
8915            encoder.debug_check_bounds::<MlmeSetKeysReqRequest>(offset);
8916            // Zero out padding regions. There's no need to apply masks
8917            // because the unmasked parts will be overwritten by fields.
8918            // Write the fields.
8919            self.0.encode(encoder, offset + 0, depth)?;
8920            Ok(())
8921        }
8922    }
8923
8924    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeSetKeysReqRequest {
8925        #[inline(always)]
8926        fn new_empty() -> Self {
8927            Self { req: fidl::new_empty!(SetKeysRequest, D) }
8928        }
8929
8930        #[inline]
8931        unsafe fn decode(
8932            &mut self,
8933            decoder: &mut fidl::encoding::Decoder<'_, D>,
8934            offset: usize,
8935            _depth: fidl::encoding::Depth,
8936        ) -> fidl::Result<()> {
8937            decoder.debug_check_bounds::<Self>(offset);
8938            // Verify that padding bytes are zero.
8939            fidl::decode!(SetKeysRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8940            Ok(())
8941        }
8942    }
8943
8944    impl fidl::encoding::ValueTypeMarker for MlmeSetMacAddressRequest {
8945        type Borrowed<'a> = &'a Self;
8946        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8947            value
8948        }
8949    }
8950
8951    unsafe impl fidl::encoding::TypeMarker for MlmeSetMacAddressRequest {
8952        type Owned = Self;
8953
8954        #[inline(always)]
8955        fn inline_align(_context: fidl::encoding::Context) -> usize {
8956            1
8957        }
8958
8959        #[inline(always)]
8960        fn inline_size(_context: fidl::encoding::Context) -> usize {
8961            6
8962        }
8963        #[inline(always)]
8964        fn encode_is_copy() -> bool {
8965            true
8966        }
8967
8968        #[inline(always)]
8969        fn decode_is_copy() -> bool {
8970            true
8971        }
8972    }
8973
8974    unsafe impl<D: fidl::encoding::ResourceDialect>
8975        fidl::encoding::Encode<MlmeSetMacAddressRequest, D> for &MlmeSetMacAddressRequest
8976    {
8977        #[inline]
8978        unsafe fn encode(
8979            self,
8980            encoder: &mut fidl::encoding::Encoder<'_, D>,
8981            offset: usize,
8982            _depth: fidl::encoding::Depth,
8983        ) -> fidl::Result<()> {
8984            encoder.debug_check_bounds::<MlmeSetMacAddressRequest>(offset);
8985            unsafe {
8986                // Copy the object into the buffer.
8987                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
8988                (buf_ptr as *mut MlmeSetMacAddressRequest)
8989                    .write_unaligned((self as *const MlmeSetMacAddressRequest).read());
8990                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
8991                // done second because the memcpy will write garbage to these bytes.
8992            }
8993            Ok(())
8994        }
8995    }
8996    unsafe impl<
8997        D: fidl::encoding::ResourceDialect,
8998        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
8999    > fidl::encoding::Encode<MlmeSetMacAddressRequest, D> for (T0,)
9000    {
9001        #[inline]
9002        unsafe fn encode(
9003            self,
9004            encoder: &mut fidl::encoding::Encoder<'_, D>,
9005            offset: usize,
9006            depth: fidl::encoding::Depth,
9007        ) -> fidl::Result<()> {
9008            encoder.debug_check_bounds::<MlmeSetMacAddressRequest>(offset);
9009            // Zero out padding regions. There's no need to apply masks
9010            // because the unmasked parts will be overwritten by fields.
9011            // Write the fields.
9012            self.0.encode(encoder, offset + 0, depth)?;
9013            Ok(())
9014        }
9015    }
9016
9017    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9018        for MlmeSetMacAddressRequest
9019    {
9020        #[inline(always)]
9021        fn new_empty() -> Self {
9022            Self { mac_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
9023        }
9024
9025        #[inline]
9026        unsafe fn decode(
9027            &mut self,
9028            decoder: &mut fidl::encoding::Decoder<'_, D>,
9029            offset: usize,
9030            _depth: fidl::encoding::Depth,
9031        ) -> fidl::Result<()> {
9032            decoder.debug_check_bounds::<Self>(offset);
9033            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
9034            // Verify that padding bytes are zero.
9035            // Copy from the buffer into the object.
9036            unsafe {
9037                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
9038            }
9039            Ok(())
9040        }
9041    }
9042
9043    impl fidl::encoding::ValueTypeMarker for MlmeSignalReportRequest {
9044        type Borrowed<'a> = &'a Self;
9045        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9046            value
9047        }
9048    }
9049
9050    unsafe impl fidl::encoding::TypeMarker for MlmeSignalReportRequest {
9051        type Owned = Self;
9052
9053        #[inline(always)]
9054        fn inline_align(_context: fidl::encoding::Context) -> usize {
9055            1
9056        }
9057
9058        #[inline(always)]
9059        fn inline_size(_context: fidl::encoding::Context) -> usize {
9060            2
9061        }
9062    }
9063
9064    unsafe impl<D: fidl::encoding::ResourceDialect>
9065        fidl::encoding::Encode<MlmeSignalReportRequest, D> for &MlmeSignalReportRequest
9066    {
9067        #[inline]
9068        unsafe fn encode(
9069            self,
9070            encoder: &mut fidl::encoding::Encoder<'_, D>,
9071            offset: usize,
9072            _depth: fidl::encoding::Depth,
9073        ) -> fidl::Result<()> {
9074            encoder.debug_check_bounds::<MlmeSignalReportRequest>(offset);
9075            // Delegate to tuple encoding.
9076            fidl::encoding::Encode::<MlmeSignalReportRequest, D>::encode(
9077                (
9078                    <fidl_fuchsia_wlan_internal__common::SignalReportIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),
9079                ),
9080                encoder, offset, _depth
9081            )
9082        }
9083    }
9084    unsafe impl<
9085        D: fidl::encoding::ResourceDialect,
9086        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal__common::SignalReportIndication, D>,
9087    > fidl::encoding::Encode<MlmeSignalReportRequest, D> for (T0,)
9088    {
9089        #[inline]
9090        unsafe fn encode(
9091            self,
9092            encoder: &mut fidl::encoding::Encoder<'_, D>,
9093            offset: usize,
9094            depth: fidl::encoding::Depth,
9095        ) -> fidl::Result<()> {
9096            encoder.debug_check_bounds::<MlmeSignalReportRequest>(offset);
9097            // Zero out padding regions. There's no need to apply masks
9098            // because the unmasked parts will be overwritten by fields.
9099            // Write the fields.
9100            self.0.encode(encoder, offset + 0, depth)?;
9101            Ok(())
9102        }
9103    }
9104
9105    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9106        for MlmeSignalReportRequest
9107    {
9108        #[inline(always)]
9109        fn new_empty() -> Self {
9110            Self {
9111                ind: fidl::new_empty!(
9112                    fidl_fuchsia_wlan_internal__common::SignalReportIndication,
9113                    D
9114                ),
9115            }
9116        }
9117
9118        #[inline]
9119        unsafe fn decode(
9120            &mut self,
9121            decoder: &mut fidl::encoding::Decoder<'_, D>,
9122            offset: usize,
9123            _depth: fidl::encoding::Depth,
9124        ) -> fidl::Result<()> {
9125            decoder.debug_check_bounds::<Self>(offset);
9126            // Verify that padding bytes are zero.
9127            fidl::decode!(
9128                fidl_fuchsia_wlan_internal__common::SignalReportIndication,
9129                D,
9130                &mut self.ind,
9131                decoder,
9132                offset + 0,
9133                _depth
9134            )?;
9135            Ok(())
9136        }
9137    }
9138
9139    impl fidl::encoding::ValueTypeMarker for MlmeStartCaptureFramesRequest {
9140        type Borrowed<'a> = &'a Self;
9141        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9142            value
9143        }
9144    }
9145
9146    unsafe impl fidl::encoding::TypeMarker for MlmeStartCaptureFramesRequest {
9147        type Owned = Self;
9148
9149        #[inline(always)]
9150        fn inline_align(_context: fidl::encoding::Context) -> usize {
9151            4
9152        }
9153
9154        #[inline(always)]
9155        fn inline_size(_context: fidl::encoding::Context) -> usize {
9156            4
9157        }
9158    }
9159
9160    unsafe impl<D: fidl::encoding::ResourceDialect>
9161        fidl::encoding::Encode<MlmeStartCaptureFramesRequest, D>
9162        for &MlmeStartCaptureFramesRequest
9163    {
9164        #[inline]
9165        unsafe fn encode(
9166            self,
9167            encoder: &mut fidl::encoding::Encoder<'_, D>,
9168            offset: usize,
9169            _depth: fidl::encoding::Depth,
9170        ) -> fidl::Result<()> {
9171            encoder.debug_check_bounds::<MlmeStartCaptureFramesRequest>(offset);
9172            // Delegate to tuple encoding.
9173            fidl::encoding::Encode::<MlmeStartCaptureFramesRequest, D>::encode(
9174                (<StartCaptureFramesRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9175                encoder,
9176                offset,
9177                _depth,
9178            )
9179        }
9180    }
9181    unsafe impl<
9182        D: fidl::encoding::ResourceDialect,
9183        T0: fidl::encoding::Encode<StartCaptureFramesRequest, D>,
9184    > fidl::encoding::Encode<MlmeStartCaptureFramesRequest, D> for (T0,)
9185    {
9186        #[inline]
9187        unsafe fn encode(
9188            self,
9189            encoder: &mut fidl::encoding::Encoder<'_, D>,
9190            offset: usize,
9191            depth: fidl::encoding::Depth,
9192        ) -> fidl::Result<()> {
9193            encoder.debug_check_bounds::<MlmeStartCaptureFramesRequest>(offset);
9194            // Zero out padding regions. There's no need to apply masks
9195            // because the unmasked parts will be overwritten by fields.
9196            // Write the fields.
9197            self.0.encode(encoder, offset + 0, depth)?;
9198            Ok(())
9199        }
9200    }
9201
9202    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9203        for MlmeStartCaptureFramesRequest
9204    {
9205        #[inline(always)]
9206        fn new_empty() -> Self {
9207            Self { req: fidl::new_empty!(StartCaptureFramesRequest, D) }
9208        }
9209
9210        #[inline]
9211        unsafe fn decode(
9212            &mut self,
9213            decoder: &mut fidl::encoding::Decoder<'_, D>,
9214            offset: usize,
9215            _depth: fidl::encoding::Depth,
9216        ) -> fidl::Result<()> {
9217            decoder.debug_check_bounds::<Self>(offset);
9218            // Verify that padding bytes are zero.
9219            fidl::decode!(
9220                StartCaptureFramesRequest,
9221                D,
9222                &mut self.req,
9223                decoder,
9224                offset + 0,
9225                _depth
9226            )?;
9227            Ok(())
9228        }
9229    }
9230
9231    impl fidl::encoding::ValueTypeMarker for MlmeStartCaptureFramesResponse {
9232        type Borrowed<'a> = &'a Self;
9233        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9234            value
9235        }
9236    }
9237
9238    unsafe impl fidl::encoding::TypeMarker for MlmeStartCaptureFramesResponse {
9239        type Owned = Self;
9240
9241        #[inline(always)]
9242        fn inline_align(_context: fidl::encoding::Context) -> usize {
9243            4
9244        }
9245
9246        #[inline(always)]
9247        fn inline_size(_context: fidl::encoding::Context) -> usize {
9248            8
9249        }
9250    }
9251
9252    unsafe impl<D: fidl::encoding::ResourceDialect>
9253        fidl::encoding::Encode<MlmeStartCaptureFramesResponse, D>
9254        for &MlmeStartCaptureFramesResponse
9255    {
9256        #[inline]
9257        unsafe fn encode(
9258            self,
9259            encoder: &mut fidl::encoding::Encoder<'_, D>,
9260            offset: usize,
9261            _depth: fidl::encoding::Depth,
9262        ) -> fidl::Result<()> {
9263            encoder.debug_check_bounds::<MlmeStartCaptureFramesResponse>(offset);
9264            // Delegate to tuple encoding.
9265            fidl::encoding::Encode::<MlmeStartCaptureFramesResponse, D>::encode(
9266                (<StartCaptureFramesResponse as fidl::encoding::ValueTypeMarker>::borrow(
9267                    &self.resp,
9268                ),),
9269                encoder,
9270                offset,
9271                _depth,
9272            )
9273        }
9274    }
9275    unsafe impl<
9276        D: fidl::encoding::ResourceDialect,
9277        T0: fidl::encoding::Encode<StartCaptureFramesResponse, D>,
9278    > fidl::encoding::Encode<MlmeStartCaptureFramesResponse, D> for (T0,)
9279    {
9280        #[inline]
9281        unsafe fn encode(
9282            self,
9283            encoder: &mut fidl::encoding::Encoder<'_, D>,
9284            offset: usize,
9285            depth: fidl::encoding::Depth,
9286        ) -> fidl::Result<()> {
9287            encoder.debug_check_bounds::<MlmeStartCaptureFramesResponse>(offset);
9288            // Zero out padding regions. There's no need to apply masks
9289            // because the unmasked parts will be overwritten by fields.
9290            // Write the fields.
9291            self.0.encode(encoder, offset + 0, depth)?;
9292            Ok(())
9293        }
9294    }
9295
9296    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9297        for MlmeStartCaptureFramesResponse
9298    {
9299        #[inline(always)]
9300        fn new_empty() -> Self {
9301            Self { resp: fidl::new_empty!(StartCaptureFramesResponse, D) }
9302        }
9303
9304        #[inline]
9305        unsafe fn decode(
9306            &mut self,
9307            decoder: &mut fidl::encoding::Decoder<'_, D>,
9308            offset: usize,
9309            _depth: fidl::encoding::Depth,
9310        ) -> fidl::Result<()> {
9311            decoder.debug_check_bounds::<Self>(offset);
9312            // Verify that padding bytes are zero.
9313            fidl::decode!(
9314                StartCaptureFramesResponse,
9315                D,
9316                &mut self.resp,
9317                decoder,
9318                offset + 0,
9319                _depth
9320            )?;
9321            Ok(())
9322        }
9323    }
9324
9325    impl fidl::encoding::ValueTypeMarker for MlmeStartConfRequest {
9326        type Borrowed<'a> = &'a Self;
9327        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9328            value
9329        }
9330    }
9331
9332    unsafe impl fidl::encoding::TypeMarker for MlmeStartConfRequest {
9333        type Owned = Self;
9334
9335        #[inline(always)]
9336        fn inline_align(_context: fidl::encoding::Context) -> usize {
9337            4
9338        }
9339
9340        #[inline(always)]
9341        fn inline_size(_context: fidl::encoding::Context) -> usize {
9342            4
9343        }
9344    }
9345
9346    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartConfRequest, D>
9347        for &MlmeStartConfRequest
9348    {
9349        #[inline]
9350        unsafe fn encode(
9351            self,
9352            encoder: &mut fidl::encoding::Encoder<'_, D>,
9353            offset: usize,
9354            _depth: fidl::encoding::Depth,
9355        ) -> fidl::Result<()> {
9356            encoder.debug_check_bounds::<MlmeStartConfRequest>(offset);
9357            // Delegate to tuple encoding.
9358            fidl::encoding::Encode::<MlmeStartConfRequest, D>::encode(
9359                (<StartConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
9360                encoder,
9361                offset,
9362                _depth,
9363            )
9364        }
9365    }
9366    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartConfirm, D>>
9367        fidl::encoding::Encode<MlmeStartConfRequest, D> for (T0,)
9368    {
9369        #[inline]
9370        unsafe fn encode(
9371            self,
9372            encoder: &mut fidl::encoding::Encoder<'_, D>,
9373            offset: usize,
9374            depth: fidl::encoding::Depth,
9375        ) -> fidl::Result<()> {
9376            encoder.debug_check_bounds::<MlmeStartConfRequest>(offset);
9377            // Zero out padding regions. There's no need to apply masks
9378            // because the unmasked parts will be overwritten by fields.
9379            // Write the fields.
9380            self.0.encode(encoder, offset + 0, depth)?;
9381            Ok(())
9382        }
9383    }
9384
9385    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartConfRequest {
9386        #[inline(always)]
9387        fn new_empty() -> Self {
9388            Self { resp: fidl::new_empty!(StartConfirm, D) }
9389        }
9390
9391        #[inline]
9392        unsafe fn decode(
9393            &mut self,
9394            decoder: &mut fidl::encoding::Decoder<'_, D>,
9395            offset: usize,
9396            _depth: fidl::encoding::Depth,
9397        ) -> fidl::Result<()> {
9398            decoder.debug_check_bounds::<Self>(offset);
9399            // Verify that padding bytes are zero.
9400            fidl::decode!(StartConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
9401            Ok(())
9402        }
9403    }
9404
9405    impl fidl::encoding::ValueTypeMarker for MlmeStartReqRequest {
9406        type Borrowed<'a> = &'a Self;
9407        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9408            value
9409        }
9410    }
9411
9412    unsafe impl fidl::encoding::TypeMarker for MlmeStartReqRequest {
9413        type Owned = Self;
9414
9415        #[inline(always)]
9416        fn inline_align(_context: fidl::encoding::Context) -> usize {
9417            8
9418        }
9419
9420        #[inline(always)]
9421        fn inline_size(_context: fidl::encoding::Context) -> usize {
9422            96
9423        }
9424    }
9425
9426    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartReqRequest, D>
9427        for &MlmeStartReqRequest
9428    {
9429        #[inline]
9430        unsafe fn encode(
9431            self,
9432            encoder: &mut fidl::encoding::Encoder<'_, D>,
9433            offset: usize,
9434            _depth: fidl::encoding::Depth,
9435        ) -> fidl::Result<()> {
9436            encoder.debug_check_bounds::<MlmeStartReqRequest>(offset);
9437            // Delegate to tuple encoding.
9438            fidl::encoding::Encode::<MlmeStartReqRequest, D>::encode(
9439                (<StartRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9440                encoder,
9441                offset,
9442                _depth,
9443            )
9444        }
9445    }
9446    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartRequest, D>>
9447        fidl::encoding::Encode<MlmeStartReqRequest, D> for (T0,)
9448    {
9449        #[inline]
9450        unsafe fn encode(
9451            self,
9452            encoder: &mut fidl::encoding::Encoder<'_, D>,
9453            offset: usize,
9454            depth: fidl::encoding::Depth,
9455        ) -> fidl::Result<()> {
9456            encoder.debug_check_bounds::<MlmeStartReqRequest>(offset);
9457            // Zero out padding regions. There's no need to apply masks
9458            // because the unmasked parts will be overwritten by fields.
9459            // Write the fields.
9460            self.0.encode(encoder, offset + 0, depth)?;
9461            Ok(())
9462        }
9463    }
9464
9465    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartReqRequest {
9466        #[inline(always)]
9467        fn new_empty() -> Self {
9468            Self { req: fidl::new_empty!(StartRequest, D) }
9469        }
9470
9471        #[inline]
9472        unsafe fn decode(
9473            &mut self,
9474            decoder: &mut fidl::encoding::Decoder<'_, D>,
9475            offset: usize,
9476            _depth: fidl::encoding::Depth,
9477        ) -> fidl::Result<()> {
9478            decoder.debug_check_bounds::<Self>(offset);
9479            // Verify that padding bytes are zero.
9480            fidl::decode!(StartRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9481            Ok(())
9482        }
9483    }
9484
9485    impl fidl::encoding::ValueTypeMarker for MlmeStartScanRequest {
9486        type Borrowed<'a> = &'a Self;
9487        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9488            value
9489        }
9490    }
9491
9492    unsafe impl fidl::encoding::TypeMarker for MlmeStartScanRequest {
9493        type Owned = Self;
9494
9495        #[inline(always)]
9496        fn inline_align(_context: fidl::encoding::Context) -> usize {
9497            8
9498        }
9499
9500        #[inline(always)]
9501        fn inline_size(_context: fidl::encoding::Context) -> usize {
9502            64
9503        }
9504    }
9505
9506    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartScanRequest, D>
9507        for &MlmeStartScanRequest
9508    {
9509        #[inline]
9510        unsafe fn encode(
9511            self,
9512            encoder: &mut fidl::encoding::Encoder<'_, D>,
9513            offset: usize,
9514            _depth: fidl::encoding::Depth,
9515        ) -> fidl::Result<()> {
9516            encoder.debug_check_bounds::<MlmeStartScanRequest>(offset);
9517            // Delegate to tuple encoding.
9518            fidl::encoding::Encode::<MlmeStartScanRequest, D>::encode(
9519                (<ScanRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9520                encoder,
9521                offset,
9522                _depth,
9523            )
9524        }
9525    }
9526    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanRequest, D>>
9527        fidl::encoding::Encode<MlmeStartScanRequest, D> for (T0,)
9528    {
9529        #[inline]
9530        unsafe fn encode(
9531            self,
9532            encoder: &mut fidl::encoding::Encoder<'_, D>,
9533            offset: usize,
9534            depth: fidl::encoding::Depth,
9535        ) -> fidl::Result<()> {
9536            encoder.debug_check_bounds::<MlmeStartScanRequest>(offset);
9537            // Zero out padding regions. There's no need to apply masks
9538            // because the unmasked parts will be overwritten by fields.
9539            // Write the fields.
9540            self.0.encode(encoder, offset + 0, depth)?;
9541            Ok(())
9542        }
9543    }
9544
9545    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartScanRequest {
9546        #[inline(always)]
9547        fn new_empty() -> Self {
9548            Self { req: fidl::new_empty!(ScanRequest, D) }
9549        }
9550
9551        #[inline]
9552        unsafe fn decode(
9553            &mut self,
9554            decoder: &mut fidl::encoding::Decoder<'_, D>,
9555            offset: usize,
9556            _depth: fidl::encoding::Depth,
9557        ) -> fidl::Result<()> {
9558            decoder.debug_check_bounds::<Self>(offset);
9559            // Verify that padding bytes are zero.
9560            fidl::decode!(ScanRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9561            Ok(())
9562        }
9563    }
9564
9565    impl fidl::encoding::ValueTypeMarker for MlmeStopConfRequest {
9566        type Borrowed<'a> = &'a Self;
9567        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9568            value
9569        }
9570    }
9571
9572    unsafe impl fidl::encoding::TypeMarker for MlmeStopConfRequest {
9573        type Owned = Self;
9574
9575        #[inline(always)]
9576        fn inline_align(_context: fidl::encoding::Context) -> usize {
9577            4
9578        }
9579
9580        #[inline(always)]
9581        fn inline_size(_context: fidl::encoding::Context) -> usize {
9582            4
9583        }
9584    }
9585
9586    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStopConfRequest, D>
9587        for &MlmeStopConfRequest
9588    {
9589        #[inline]
9590        unsafe fn encode(
9591            self,
9592            encoder: &mut fidl::encoding::Encoder<'_, D>,
9593            offset: usize,
9594            _depth: fidl::encoding::Depth,
9595        ) -> fidl::Result<()> {
9596            encoder.debug_check_bounds::<MlmeStopConfRequest>(offset);
9597            // Delegate to tuple encoding.
9598            fidl::encoding::Encode::<MlmeStopConfRequest, D>::encode(
9599                (<StopConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
9600                encoder,
9601                offset,
9602                _depth,
9603            )
9604        }
9605    }
9606    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopConfirm, D>>
9607        fidl::encoding::Encode<MlmeStopConfRequest, D> for (T0,)
9608    {
9609        #[inline]
9610        unsafe fn encode(
9611            self,
9612            encoder: &mut fidl::encoding::Encoder<'_, D>,
9613            offset: usize,
9614            depth: fidl::encoding::Depth,
9615        ) -> fidl::Result<()> {
9616            encoder.debug_check_bounds::<MlmeStopConfRequest>(offset);
9617            // Zero out padding regions. There's no need to apply masks
9618            // because the unmasked parts will be overwritten by fields.
9619            // Write the fields.
9620            self.0.encode(encoder, offset + 0, depth)?;
9621            Ok(())
9622        }
9623    }
9624
9625    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStopConfRequest {
9626        #[inline(always)]
9627        fn new_empty() -> Self {
9628            Self { resp: fidl::new_empty!(StopConfirm, D) }
9629        }
9630
9631        #[inline]
9632        unsafe fn decode(
9633            &mut self,
9634            decoder: &mut fidl::encoding::Decoder<'_, D>,
9635            offset: usize,
9636            _depth: fidl::encoding::Depth,
9637        ) -> fidl::Result<()> {
9638            decoder.debug_check_bounds::<Self>(offset);
9639            // Verify that padding bytes are zero.
9640            fidl::decode!(StopConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
9641            Ok(())
9642        }
9643    }
9644
9645    impl fidl::encoding::ValueTypeMarker for MlmeStopReqRequest {
9646        type Borrowed<'a> = &'a Self;
9647        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9648            value
9649        }
9650    }
9651
9652    unsafe impl fidl::encoding::TypeMarker for MlmeStopReqRequest {
9653        type Owned = Self;
9654
9655        #[inline(always)]
9656        fn inline_align(_context: fidl::encoding::Context) -> usize {
9657            8
9658        }
9659
9660        #[inline(always)]
9661        fn inline_size(_context: fidl::encoding::Context) -> usize {
9662            16
9663        }
9664    }
9665
9666    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStopReqRequest, D>
9667        for &MlmeStopReqRequest
9668    {
9669        #[inline]
9670        unsafe fn encode(
9671            self,
9672            encoder: &mut fidl::encoding::Encoder<'_, D>,
9673            offset: usize,
9674            _depth: fidl::encoding::Depth,
9675        ) -> fidl::Result<()> {
9676            encoder.debug_check_bounds::<MlmeStopReqRequest>(offset);
9677            // Delegate to tuple encoding.
9678            fidl::encoding::Encode::<MlmeStopReqRequest, D>::encode(
9679                (<StopRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9680                encoder,
9681                offset,
9682                _depth,
9683            )
9684        }
9685    }
9686    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopRequest, D>>
9687        fidl::encoding::Encode<MlmeStopReqRequest, D> for (T0,)
9688    {
9689        #[inline]
9690        unsafe fn encode(
9691            self,
9692            encoder: &mut fidl::encoding::Encoder<'_, D>,
9693            offset: usize,
9694            depth: fidl::encoding::Depth,
9695        ) -> fidl::Result<()> {
9696            encoder.debug_check_bounds::<MlmeStopReqRequest>(offset);
9697            // Zero out padding regions. There's no need to apply masks
9698            // because the unmasked parts will be overwritten by fields.
9699            // Write the fields.
9700            self.0.encode(encoder, offset + 0, depth)?;
9701            Ok(())
9702        }
9703    }
9704
9705    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStopReqRequest {
9706        #[inline(always)]
9707        fn new_empty() -> Self {
9708            Self { req: fidl::new_empty!(StopRequest, D) }
9709        }
9710
9711        #[inline]
9712        unsafe fn decode(
9713            &mut self,
9714            decoder: &mut fidl::encoding::Decoder<'_, D>,
9715            offset: usize,
9716            _depth: fidl::encoding::Depth,
9717        ) -> fidl::Result<()> {
9718            decoder.debug_check_bounds::<Self>(offset);
9719            // Verify that padding bytes are zero.
9720            fidl::decode!(StopRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9721            Ok(())
9722        }
9723    }
9724
9725    impl fidl::encoding::ValueTypeMarker for NegotiatedCapabilities {
9726        type Borrowed<'a> = &'a Self;
9727        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9728            value
9729        }
9730    }
9731
9732    unsafe impl fidl::encoding::TypeMarker for NegotiatedCapabilities {
9733        type Owned = Self;
9734
9735        #[inline(always)]
9736        fn inline_align(_context: fidl::encoding::Context) -> usize {
9737            8
9738        }
9739
9740        #[inline(always)]
9741        fn inline_size(_context: fidl::encoding::Context) -> usize {
9742            56
9743        }
9744    }
9745
9746    unsafe impl<D: fidl::encoding::ResourceDialect>
9747        fidl::encoding::Encode<NegotiatedCapabilities, D> for &NegotiatedCapabilities
9748    {
9749        #[inline]
9750        unsafe fn encode(
9751            self,
9752            encoder: &mut fidl::encoding::Encoder<'_, D>,
9753            offset: usize,
9754            _depth: fidl::encoding::Depth,
9755        ) -> fidl::Result<()> {
9756            encoder.debug_check_bounds::<NegotiatedCapabilities>(offset);
9757            // Delegate to tuple encoding.
9758            fidl::encoding::Encode::<NegotiatedCapabilities, D>::encode(
9759                (
9760                    <fidl_fuchsia_wlan_ieee80211__common::WlanChannel as fidl::encoding::ValueTypeMarker>::borrow(&self.channel),
9761                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
9762                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
9763                    <fidl::encoding::Boxed<WmmParameter> as fidl::encoding::ValueTypeMarker>::borrow(&self.wmm_param),
9764                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.ht_cap),
9765                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_cap),
9766                ),
9767                encoder, offset, _depth
9768            )
9769        }
9770    }
9771    unsafe impl<
9772        D: fidl::encoding::ResourceDialect,
9773        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::WlanChannel, D>,
9774        T1: fidl::encoding::Encode<u16, D>,
9775        T2: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
9776        T3: fidl::encoding::Encode<fidl::encoding::Boxed<WmmParameter>, D>,
9777        T4: fidl::encoding::Encode<
9778                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
9779                D,
9780            >,
9781        T5: fidl::encoding::Encode<
9782                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
9783                D,
9784            >,
9785    > fidl::encoding::Encode<NegotiatedCapabilities, D> for (T0, T1, T2, T3, T4, T5)
9786    {
9787        #[inline]
9788        unsafe fn encode(
9789            self,
9790            encoder: &mut fidl::encoding::Encoder<'_, D>,
9791            offset: usize,
9792            depth: fidl::encoding::Depth,
9793        ) -> fidl::Result<()> {
9794            encoder.debug_check_bounds::<NegotiatedCapabilities>(offset);
9795            // Zero out padding regions. There's no need to apply masks
9796            // because the unmasked parts will be overwritten by fields.
9797            unsafe {
9798                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
9799                (ptr as *mut u64).write_unaligned(0);
9800            }
9801            // Write the fields.
9802            self.0.encode(encoder, offset + 0, depth)?;
9803            self.1.encode(encoder, offset + 12, depth)?;
9804            self.2.encode(encoder, offset + 16, depth)?;
9805            self.3.encode(encoder, offset + 32, depth)?;
9806            self.4.encode(encoder, offset + 40, depth)?;
9807            self.5.encode(encoder, offset + 48, depth)?;
9808            Ok(())
9809        }
9810    }
9811
9812    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9813        for NegotiatedCapabilities
9814    {
9815        #[inline(always)]
9816        fn new_empty() -> Self {
9817            Self {
9818                channel: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanChannel, D),
9819                capability_info: fidl::new_empty!(u16, D),
9820                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
9821                wmm_param: fidl::new_empty!(fidl::encoding::Boxed<WmmParameter>, D),
9822                ht_cap: fidl::new_empty!(
9823                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
9824                    D
9825                ),
9826                vht_cap: fidl::new_empty!(
9827                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
9828                    D
9829                ),
9830            }
9831        }
9832
9833        #[inline]
9834        unsafe fn decode(
9835            &mut self,
9836            decoder: &mut fidl::encoding::Decoder<'_, D>,
9837            offset: usize,
9838            _depth: fidl::encoding::Depth,
9839        ) -> fidl::Result<()> {
9840            decoder.debug_check_bounds::<Self>(offset);
9841            // Verify that padding bytes are zero.
9842            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
9843            let padval = unsafe { (ptr as *const u64).read_unaligned() };
9844            let mask = 0xffff000000000000u64;
9845            let maskedval = padval & mask;
9846            if maskedval != 0 {
9847                return Err(fidl::Error::NonZeroPadding {
9848                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
9849                });
9850            }
9851            fidl::decode!(
9852                fidl_fuchsia_wlan_ieee80211__common::WlanChannel,
9853                D,
9854                &mut self.channel,
9855                decoder,
9856                offset + 0,
9857                _depth
9858            )?;
9859            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 12, _depth)?;
9860            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 16, _depth)?;
9861            fidl::decode!(
9862                fidl::encoding::Boxed<WmmParameter>,
9863                D,
9864                &mut self.wmm_param,
9865                decoder,
9866                offset + 32,
9867                _depth
9868            )?;
9869            fidl::decode!(
9870                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
9871                D,
9872                &mut self.ht_cap,
9873                decoder,
9874                offset + 40,
9875                _depth
9876            )?;
9877            fidl::decode!(
9878                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
9879                D,
9880                &mut self.vht_cap,
9881                decoder,
9882                offset + 48,
9883                _depth
9884            )?;
9885            Ok(())
9886        }
9887    }
9888
9889    impl fidl::encoding::ValueTypeMarker for PmkInfo {
9890        type Borrowed<'a> = &'a Self;
9891        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9892            value
9893        }
9894    }
9895
9896    unsafe impl fidl::encoding::TypeMarker for PmkInfo {
9897        type Owned = Self;
9898
9899        #[inline(always)]
9900        fn inline_align(_context: fidl::encoding::Context) -> usize {
9901            8
9902        }
9903
9904        #[inline(always)]
9905        fn inline_size(_context: fidl::encoding::Context) -> usize {
9906            32
9907        }
9908    }
9909
9910    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PmkInfo, D> for &PmkInfo {
9911        #[inline]
9912        unsafe fn encode(
9913            self,
9914            encoder: &mut fidl::encoding::Encoder<'_, D>,
9915            offset: usize,
9916            _depth: fidl::encoding::Depth,
9917        ) -> fidl::Result<()> {
9918            encoder.debug_check_bounds::<PmkInfo>(offset);
9919            // Delegate to tuple encoding.
9920            fidl::encoding::Encode::<PmkInfo, D>::encode(
9921                (
9922                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.pmk),
9923                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.pmkid),
9924                ),
9925                encoder, offset, _depth
9926            )
9927        }
9928    }
9929    unsafe impl<
9930        D: fidl::encoding::ResourceDialect,
9931        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
9932        T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
9933    > fidl::encoding::Encode<PmkInfo, D> for (T0, T1)
9934    {
9935        #[inline]
9936        unsafe fn encode(
9937            self,
9938            encoder: &mut fidl::encoding::Encoder<'_, D>,
9939            offset: usize,
9940            depth: fidl::encoding::Depth,
9941        ) -> fidl::Result<()> {
9942            encoder.debug_check_bounds::<PmkInfo>(offset);
9943            // Zero out padding regions. There's no need to apply masks
9944            // because the unmasked parts will be overwritten by fields.
9945            // Write the fields.
9946            self.0.encode(encoder, offset + 0, depth)?;
9947            self.1.encode(encoder, offset + 16, depth)?;
9948            Ok(())
9949        }
9950    }
9951
9952    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PmkInfo {
9953        #[inline(always)]
9954        fn new_empty() -> Self {
9955            Self {
9956                pmk: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
9957                pmkid: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
9958            }
9959        }
9960
9961        #[inline]
9962        unsafe fn decode(
9963            &mut self,
9964            decoder: &mut fidl::encoding::Decoder<'_, D>,
9965            offset: usize,
9966            _depth: fidl::encoding::Depth,
9967        ) -> fidl::Result<()> {
9968            decoder.debug_check_bounds::<Self>(offset);
9969            // Verify that padding bytes are zero.
9970            fidl::decode!(
9971                fidl::encoding::UnboundedVector<u8>,
9972                D,
9973                &mut self.pmk,
9974                decoder,
9975                offset + 0,
9976                _depth
9977            )?;
9978            fidl::decode!(
9979                fidl::encoding::UnboundedVector<u8>,
9980                D,
9981                &mut self.pmkid,
9982                decoder,
9983                offset + 16,
9984                _depth
9985            )?;
9986            Ok(())
9987        }
9988    }
9989
9990    impl fidl::encoding::ValueTypeMarker for ReconnectRequest {
9991        type Borrowed<'a> = &'a Self;
9992        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9993            value
9994        }
9995    }
9996
9997    unsafe impl fidl::encoding::TypeMarker for ReconnectRequest {
9998        type Owned = Self;
9999
10000        #[inline(always)]
10001        fn inline_align(_context: fidl::encoding::Context) -> usize {
10002            1
10003        }
10004
10005        #[inline(always)]
10006        fn inline_size(_context: fidl::encoding::Context) -> usize {
10007            6
10008        }
10009        #[inline(always)]
10010        fn encode_is_copy() -> bool {
10011            true
10012        }
10013
10014        #[inline(always)]
10015        fn decode_is_copy() -> bool {
10016            true
10017        }
10018    }
10019
10020    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ReconnectRequest, D>
10021        for &ReconnectRequest
10022    {
10023        #[inline]
10024        unsafe fn encode(
10025            self,
10026            encoder: &mut fidl::encoding::Encoder<'_, D>,
10027            offset: usize,
10028            _depth: fidl::encoding::Depth,
10029        ) -> fidl::Result<()> {
10030            encoder.debug_check_bounds::<ReconnectRequest>(offset);
10031            unsafe {
10032                // Copy the object into the buffer.
10033                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
10034                (buf_ptr as *mut ReconnectRequest)
10035                    .write_unaligned((self as *const ReconnectRequest).read());
10036                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
10037                // done second because the memcpy will write garbage to these bytes.
10038            }
10039            Ok(())
10040        }
10041    }
10042    unsafe impl<
10043        D: fidl::encoding::ResourceDialect,
10044        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10045    > fidl::encoding::Encode<ReconnectRequest, D> for (T0,)
10046    {
10047        #[inline]
10048        unsafe fn encode(
10049            self,
10050            encoder: &mut fidl::encoding::Encoder<'_, D>,
10051            offset: usize,
10052            depth: fidl::encoding::Depth,
10053        ) -> fidl::Result<()> {
10054            encoder.debug_check_bounds::<ReconnectRequest>(offset);
10055            // Zero out padding regions. There's no need to apply masks
10056            // because the unmasked parts will be overwritten by fields.
10057            // Write the fields.
10058            self.0.encode(encoder, offset + 0, depth)?;
10059            Ok(())
10060        }
10061    }
10062
10063    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ReconnectRequest {
10064        #[inline(always)]
10065        fn new_empty() -> Self {
10066            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
10067        }
10068
10069        #[inline]
10070        unsafe fn decode(
10071            &mut self,
10072            decoder: &mut fidl::encoding::Decoder<'_, D>,
10073            offset: usize,
10074            _depth: fidl::encoding::Depth,
10075        ) -> fidl::Result<()> {
10076            decoder.debug_check_bounds::<Self>(offset);
10077            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
10078            // Verify that padding bytes are zero.
10079            // Copy from the buffer into the object.
10080            unsafe {
10081                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
10082            }
10083            Ok(())
10084        }
10085    }
10086
10087    impl fidl::encoding::ValueTypeMarker for ResetRequest {
10088        type Borrowed<'a> = &'a Self;
10089        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10090            value
10091        }
10092    }
10093
10094    unsafe impl fidl::encoding::TypeMarker for ResetRequest {
10095        type Owned = Self;
10096
10097        #[inline(always)]
10098        fn inline_align(_context: fidl::encoding::Context) -> usize {
10099            1
10100        }
10101
10102        #[inline(always)]
10103        fn inline_size(_context: fidl::encoding::Context) -> usize {
10104            7
10105        }
10106    }
10107
10108    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResetRequest, D>
10109        for &ResetRequest
10110    {
10111        #[inline]
10112        unsafe fn encode(
10113            self,
10114            encoder: &mut fidl::encoding::Encoder<'_, D>,
10115            offset: usize,
10116            _depth: fidl::encoding::Depth,
10117        ) -> fidl::Result<()> {
10118            encoder.debug_check_bounds::<ResetRequest>(offset);
10119            // Delegate to tuple encoding.
10120            fidl::encoding::Encode::<ResetRequest, D>::encode(
10121                (
10122                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
10123                        &self.sta_address,
10124                    ),
10125                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.set_default_mib),
10126                ),
10127                encoder,
10128                offset,
10129                _depth,
10130            )
10131        }
10132    }
10133    unsafe impl<
10134        D: fidl::encoding::ResourceDialect,
10135        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10136        T1: fidl::encoding::Encode<bool, D>,
10137    > fidl::encoding::Encode<ResetRequest, D> for (T0, T1)
10138    {
10139        #[inline]
10140        unsafe fn encode(
10141            self,
10142            encoder: &mut fidl::encoding::Encoder<'_, D>,
10143            offset: usize,
10144            depth: fidl::encoding::Depth,
10145        ) -> fidl::Result<()> {
10146            encoder.debug_check_bounds::<ResetRequest>(offset);
10147            // Zero out padding regions. There's no need to apply masks
10148            // because the unmasked parts will be overwritten by fields.
10149            // Write the fields.
10150            self.0.encode(encoder, offset + 0, depth)?;
10151            self.1.encode(encoder, offset + 6, depth)?;
10152            Ok(())
10153        }
10154    }
10155
10156    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResetRequest {
10157        #[inline(always)]
10158        fn new_empty() -> Self {
10159            Self {
10160                sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10161                set_default_mib: fidl::new_empty!(bool, D),
10162            }
10163        }
10164
10165        #[inline]
10166        unsafe fn decode(
10167            &mut self,
10168            decoder: &mut fidl::encoding::Decoder<'_, D>,
10169            offset: usize,
10170            _depth: fidl::encoding::Depth,
10171        ) -> fidl::Result<()> {
10172            decoder.debug_check_bounds::<Self>(offset);
10173            // Verify that padding bytes are zero.
10174            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.sta_address, decoder, offset + 0, _depth)?;
10175            fidl::decode!(bool, D, &mut self.set_default_mib, decoder, offset + 6, _depth)?;
10176            Ok(())
10177        }
10178    }
10179
10180    impl fidl::encoding::ValueTypeMarker for RoamConfirm {
10181        type Borrowed<'a> = &'a Self;
10182        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10183            value
10184        }
10185    }
10186
10187    unsafe impl fidl::encoding::TypeMarker for RoamConfirm {
10188        type Owned = Self;
10189
10190        #[inline(always)]
10191        fn inline_align(_context: fidl::encoding::Context) -> usize {
10192            8
10193        }
10194
10195        #[inline(always)]
10196        fn inline_size(_context: fidl::encoding::Context) -> usize {
10197            32
10198        }
10199    }
10200
10201    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamConfirm, D>
10202        for &RoamConfirm
10203    {
10204        #[inline]
10205        unsafe fn encode(
10206            self,
10207            encoder: &mut fidl::encoding::Encoder<'_, D>,
10208            offset: usize,
10209            _depth: fidl::encoding::Depth,
10210        ) -> fidl::Result<()> {
10211            encoder.debug_check_bounds::<RoamConfirm>(offset);
10212            // Delegate to tuple encoding.
10213            fidl::encoding::Encode::<RoamConfirm, D>::encode(
10214                (
10215                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
10216                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10217                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
10218                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.target_bss_authenticated),
10219                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
10220                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
10221                ),
10222                encoder, offset, _depth
10223            )
10224        }
10225    }
10226    unsafe impl<
10227        D: fidl::encoding::ResourceDialect,
10228        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10229        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
10230        T2: fidl::encoding::Encode<bool, D>,
10231        T3: fidl::encoding::Encode<bool, D>,
10232        T4: fidl::encoding::Encode<u16, D>,
10233        T5: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10234    > fidl::encoding::Encode<RoamConfirm, D> for (T0, T1, T2, T3, T4, T5)
10235    {
10236        #[inline]
10237        unsafe fn encode(
10238            self,
10239            encoder: &mut fidl::encoding::Encoder<'_, D>,
10240            offset: usize,
10241            depth: fidl::encoding::Depth,
10242        ) -> fidl::Result<()> {
10243            encoder.debug_check_bounds::<RoamConfirm>(offset);
10244            // Zero out padding regions. There's no need to apply masks
10245            // because the unmasked parts will be overwritten by fields.
10246            unsafe {
10247                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10248                (ptr as *mut u64).write_unaligned(0);
10249            }
10250            // Write the fields.
10251            self.0.encode(encoder, offset + 0, depth)?;
10252            self.1.encode(encoder, offset + 6, depth)?;
10253            self.2.encode(encoder, offset + 8, depth)?;
10254            self.3.encode(encoder, offset + 9, depth)?;
10255            self.4.encode(encoder, offset + 10, depth)?;
10256            self.5.encode(encoder, offset + 16, depth)?;
10257            Ok(())
10258        }
10259    }
10260
10261    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamConfirm {
10262        #[inline(always)]
10263        fn new_empty() -> Self {
10264            Self {
10265                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10266                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
10267                original_association_maintained: fidl::new_empty!(bool, D),
10268                target_bss_authenticated: fidl::new_empty!(bool, D),
10269                association_id: fidl::new_empty!(u16, D),
10270                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10271            }
10272        }
10273
10274        #[inline]
10275        unsafe fn decode(
10276            &mut self,
10277            decoder: &mut fidl::encoding::Decoder<'_, D>,
10278            offset: usize,
10279            _depth: fidl::encoding::Depth,
10280        ) -> fidl::Result<()> {
10281            decoder.debug_check_bounds::<Self>(offset);
10282            // Verify that padding bytes are zero.
10283            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10284            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10285            let mask = 0xffffffff00000000u64;
10286            let maskedval = padval & mask;
10287            if maskedval != 0 {
10288                return Err(fidl::Error::NonZeroPadding {
10289                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10290                });
10291            }
10292            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
10293            fidl::decode!(
10294                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10295                D,
10296                &mut self.status_code,
10297                decoder,
10298                offset + 6,
10299                _depth
10300            )?;
10301            fidl::decode!(
10302                bool,
10303                D,
10304                &mut self.original_association_maintained,
10305                decoder,
10306                offset + 8,
10307                _depth
10308            )?;
10309            fidl::decode!(
10310                bool,
10311                D,
10312                &mut self.target_bss_authenticated,
10313                decoder,
10314                offset + 9,
10315                _depth
10316            )?;
10317            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 10, _depth)?;
10318            fidl::decode!(
10319                fidl::encoding::UnboundedVector<u8>,
10320                D,
10321                &mut self.association_ies,
10322                decoder,
10323                offset + 16,
10324                _depth
10325            )?;
10326            Ok(())
10327        }
10328    }
10329
10330    impl fidl::encoding::ValueTypeMarker for RoamRequest {
10331        type Borrowed<'a> = &'a Self;
10332        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10333            value
10334        }
10335    }
10336
10337    unsafe impl fidl::encoding::TypeMarker for RoamRequest {
10338        type Owned = Self;
10339
10340        #[inline(always)]
10341        fn inline_align(_context: fidl::encoding::Context) -> usize {
10342            8
10343        }
10344
10345        #[inline(always)]
10346        fn inline_size(_context: fidl::encoding::Context) -> usize {
10347            48
10348        }
10349    }
10350
10351    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamRequest, D>
10352        for &RoamRequest
10353    {
10354        #[inline]
10355        unsafe fn encode(
10356            self,
10357            encoder: &mut fidl::encoding::Encoder<'_, D>,
10358            offset: usize,
10359            _depth: fidl::encoding::Depth,
10360        ) -> fidl::Result<()> {
10361            encoder.debug_check_bounds::<RoamRequest>(offset);
10362            // Delegate to tuple encoding.
10363            fidl::encoding::Encode::<RoamRequest, D>::encode(
10364                (
10365                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
10366                ),
10367                encoder, offset, _depth
10368            )
10369        }
10370    }
10371    unsafe impl<
10372        D: fidl::encoding::ResourceDialect,
10373        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
10374    > fidl::encoding::Encode<RoamRequest, D> for (T0,)
10375    {
10376        #[inline]
10377        unsafe fn encode(
10378            self,
10379            encoder: &mut fidl::encoding::Encoder<'_, D>,
10380            offset: usize,
10381            depth: fidl::encoding::Depth,
10382        ) -> fidl::Result<()> {
10383            encoder.debug_check_bounds::<RoamRequest>(offset);
10384            // Zero out padding regions. There's no need to apply masks
10385            // because the unmasked parts will be overwritten by fields.
10386            // Write the fields.
10387            self.0.encode(encoder, offset + 0, depth)?;
10388            Ok(())
10389        }
10390    }
10391
10392    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamRequest {
10393        #[inline(always)]
10394        fn new_empty() -> Self {
10395            Self {
10396                selected_bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
10397            }
10398        }
10399
10400        #[inline]
10401        unsafe fn decode(
10402            &mut self,
10403            decoder: &mut fidl::encoding::Decoder<'_, D>,
10404            offset: usize,
10405            _depth: fidl::encoding::Depth,
10406        ) -> fidl::Result<()> {
10407            decoder.debug_check_bounds::<Self>(offset);
10408            // Verify that padding bytes are zero.
10409            fidl::decode!(
10410                fidl_fuchsia_wlan_common__common::BssDescription,
10411                D,
10412                &mut self.selected_bss,
10413                decoder,
10414                offset + 0,
10415                _depth
10416            )?;
10417            Ok(())
10418        }
10419    }
10420
10421    impl fidl::encoding::ValueTypeMarker for RoamResultIndication {
10422        type Borrowed<'a> = &'a Self;
10423        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10424            value
10425        }
10426    }
10427
10428    unsafe impl fidl::encoding::TypeMarker for RoamResultIndication {
10429        type Owned = Self;
10430
10431        #[inline(always)]
10432        fn inline_align(_context: fidl::encoding::Context) -> usize {
10433            8
10434        }
10435
10436        #[inline(always)]
10437        fn inline_size(_context: fidl::encoding::Context) -> usize {
10438            32
10439        }
10440    }
10441
10442    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamResultIndication, D>
10443        for &RoamResultIndication
10444    {
10445        #[inline]
10446        unsafe fn encode(
10447            self,
10448            encoder: &mut fidl::encoding::Encoder<'_, D>,
10449            offset: usize,
10450            _depth: fidl::encoding::Depth,
10451        ) -> fidl::Result<()> {
10452            encoder.debug_check_bounds::<RoamResultIndication>(offset);
10453            // Delegate to tuple encoding.
10454            fidl::encoding::Encode::<RoamResultIndication, D>::encode(
10455                (
10456                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
10457                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10458                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
10459                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.target_bss_authenticated),
10460                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
10461                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
10462                ),
10463                encoder, offset, _depth
10464            )
10465        }
10466    }
10467    unsafe impl<
10468        D: fidl::encoding::ResourceDialect,
10469        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10470        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
10471        T2: fidl::encoding::Encode<bool, D>,
10472        T3: fidl::encoding::Encode<bool, D>,
10473        T4: fidl::encoding::Encode<u16, D>,
10474        T5: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10475    > fidl::encoding::Encode<RoamResultIndication, D> for (T0, T1, T2, T3, T4, T5)
10476    {
10477        #[inline]
10478        unsafe fn encode(
10479            self,
10480            encoder: &mut fidl::encoding::Encoder<'_, D>,
10481            offset: usize,
10482            depth: fidl::encoding::Depth,
10483        ) -> fidl::Result<()> {
10484            encoder.debug_check_bounds::<RoamResultIndication>(offset);
10485            // Zero out padding regions. There's no need to apply masks
10486            // because the unmasked parts will be overwritten by fields.
10487            unsafe {
10488                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10489                (ptr as *mut u64).write_unaligned(0);
10490            }
10491            // Write the fields.
10492            self.0.encode(encoder, offset + 0, depth)?;
10493            self.1.encode(encoder, offset + 6, depth)?;
10494            self.2.encode(encoder, offset + 8, depth)?;
10495            self.3.encode(encoder, offset + 9, depth)?;
10496            self.4.encode(encoder, offset + 10, depth)?;
10497            self.5.encode(encoder, offset + 16, depth)?;
10498            Ok(())
10499        }
10500    }
10501
10502    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamResultIndication {
10503        #[inline(always)]
10504        fn new_empty() -> Self {
10505            Self {
10506                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10507                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
10508                original_association_maintained: fidl::new_empty!(bool, D),
10509                target_bss_authenticated: fidl::new_empty!(bool, D),
10510                association_id: fidl::new_empty!(u16, D),
10511                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10512            }
10513        }
10514
10515        #[inline]
10516        unsafe fn decode(
10517            &mut self,
10518            decoder: &mut fidl::encoding::Decoder<'_, D>,
10519            offset: usize,
10520            _depth: fidl::encoding::Depth,
10521        ) -> fidl::Result<()> {
10522            decoder.debug_check_bounds::<Self>(offset);
10523            // Verify that padding bytes are zero.
10524            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10525            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10526            let mask = 0xffffffff00000000u64;
10527            let maskedval = padval & mask;
10528            if maskedval != 0 {
10529                return Err(fidl::Error::NonZeroPadding {
10530                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10531                });
10532            }
10533            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
10534            fidl::decode!(
10535                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10536                D,
10537                &mut self.status_code,
10538                decoder,
10539                offset + 6,
10540                _depth
10541            )?;
10542            fidl::decode!(
10543                bool,
10544                D,
10545                &mut self.original_association_maintained,
10546                decoder,
10547                offset + 8,
10548                _depth
10549            )?;
10550            fidl::decode!(
10551                bool,
10552                D,
10553                &mut self.target_bss_authenticated,
10554                decoder,
10555                offset + 9,
10556                _depth
10557            )?;
10558            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 10, _depth)?;
10559            fidl::decode!(
10560                fidl::encoding::UnboundedVector<u8>,
10561                D,
10562                &mut self.association_ies,
10563                decoder,
10564                offset + 16,
10565                _depth
10566            )?;
10567            Ok(())
10568        }
10569    }
10570
10571    impl fidl::encoding::ValueTypeMarker for RoamStartIndication {
10572        type Borrowed<'a> = &'a Self;
10573        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10574            value
10575        }
10576    }
10577
10578    unsafe impl fidl::encoding::TypeMarker for RoamStartIndication {
10579        type Owned = Self;
10580
10581        #[inline(always)]
10582        fn inline_align(_context: fidl::encoding::Context) -> usize {
10583            8
10584        }
10585
10586        #[inline(always)]
10587        fn inline_size(_context: fidl::encoding::Context) -> usize {
10588            64
10589        }
10590    }
10591
10592    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamStartIndication, D>
10593        for &RoamStartIndication
10594    {
10595        #[inline]
10596        unsafe fn encode(
10597            self,
10598            encoder: &mut fidl::encoding::Encoder<'_, D>,
10599            offset: usize,
10600            _depth: fidl::encoding::Depth,
10601        ) -> fidl::Result<()> {
10602            encoder.debug_check_bounds::<RoamStartIndication>(offset);
10603            // Delegate to tuple encoding.
10604            fidl::encoding::Encode::<RoamStartIndication, D>::encode(
10605                (
10606                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
10607                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
10608                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
10609                ),
10610                encoder, offset, _depth
10611            )
10612        }
10613    }
10614    unsafe impl<
10615        D: fidl::encoding::ResourceDialect,
10616        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10617        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
10618        T2: fidl::encoding::Encode<bool, D>,
10619    > fidl::encoding::Encode<RoamStartIndication, D> for (T0, T1, T2)
10620    {
10621        #[inline]
10622        unsafe fn encode(
10623            self,
10624            encoder: &mut fidl::encoding::Encoder<'_, D>,
10625            offset: usize,
10626            depth: fidl::encoding::Depth,
10627        ) -> fidl::Result<()> {
10628            encoder.debug_check_bounds::<RoamStartIndication>(offset);
10629            // Zero out padding regions. There's no need to apply masks
10630            // because the unmasked parts will be overwritten by fields.
10631            unsafe {
10632                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
10633                (ptr as *mut u64).write_unaligned(0);
10634            }
10635            unsafe {
10636                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
10637                (ptr as *mut u64).write_unaligned(0);
10638            }
10639            // Write the fields.
10640            self.0.encode(encoder, offset + 0, depth)?;
10641            self.1.encode(encoder, offset + 8, depth)?;
10642            self.2.encode(encoder, offset + 56, depth)?;
10643            Ok(())
10644        }
10645    }
10646
10647    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamStartIndication {
10648        #[inline(always)]
10649        fn new_empty() -> Self {
10650            Self {
10651                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10652                selected_bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
10653                original_association_maintained: fidl::new_empty!(bool, D),
10654            }
10655        }
10656
10657        #[inline]
10658        unsafe fn decode(
10659            &mut self,
10660            decoder: &mut fidl::encoding::Decoder<'_, D>,
10661            offset: usize,
10662            _depth: fidl::encoding::Depth,
10663        ) -> fidl::Result<()> {
10664            decoder.debug_check_bounds::<Self>(offset);
10665            // Verify that padding bytes are zero.
10666            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
10667            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10668            let mask = 0xffff000000000000u64;
10669            let maskedval = padval & mask;
10670            if maskedval != 0 {
10671                return Err(fidl::Error::NonZeroPadding {
10672                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
10673                });
10674            }
10675            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
10676            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10677            let mask = 0xffffffffffffff00u64;
10678            let maskedval = padval & mask;
10679            if maskedval != 0 {
10680                return Err(fidl::Error::NonZeroPadding {
10681                    padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
10682                });
10683            }
10684            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
10685            fidl::decode!(
10686                fidl_fuchsia_wlan_common__common::BssDescription,
10687                D,
10688                &mut self.selected_bss,
10689                decoder,
10690                offset + 8,
10691                _depth
10692            )?;
10693            fidl::decode!(
10694                bool,
10695                D,
10696                &mut self.original_association_maintained,
10697                decoder,
10698                offset + 56,
10699                _depth
10700            )?;
10701            Ok(())
10702        }
10703    }
10704
10705    impl fidl::encoding::ValueTypeMarker for SaeFrame {
10706        type Borrowed<'a> = &'a Self;
10707        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10708            value
10709        }
10710    }
10711
10712    unsafe impl fidl::encoding::TypeMarker for SaeFrame {
10713        type Owned = Self;
10714
10715        #[inline(always)]
10716        fn inline_align(_context: fidl::encoding::Context) -> usize {
10717            8
10718        }
10719
10720        #[inline(always)]
10721        fn inline_size(_context: fidl::encoding::Context) -> usize {
10722            32
10723        }
10724    }
10725
10726    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFrame, D> for &SaeFrame {
10727        #[inline]
10728        unsafe fn encode(
10729            self,
10730            encoder: &mut fidl::encoding::Encoder<'_, D>,
10731            offset: usize,
10732            _depth: fidl::encoding::Depth,
10733        ) -> fidl::Result<()> {
10734            encoder.debug_check_bounds::<SaeFrame>(offset);
10735            // Delegate to tuple encoding.
10736            fidl::encoding::Encode::<SaeFrame, D>::encode(
10737                (
10738                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
10739                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10740                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.seq_num),
10741                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.sae_fields),
10742                ),
10743                encoder, offset, _depth
10744            )
10745        }
10746    }
10747    unsafe impl<
10748        D: fidl::encoding::ResourceDialect,
10749        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10750        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
10751        T2: fidl::encoding::Encode<u16, D>,
10752        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10753    > fidl::encoding::Encode<SaeFrame, D> for (T0, T1, T2, T3)
10754    {
10755        #[inline]
10756        unsafe fn encode(
10757            self,
10758            encoder: &mut fidl::encoding::Encoder<'_, D>,
10759            offset: usize,
10760            depth: fidl::encoding::Depth,
10761        ) -> fidl::Result<()> {
10762            encoder.debug_check_bounds::<SaeFrame>(offset);
10763            // Zero out padding regions. There's no need to apply masks
10764            // because the unmasked parts will be overwritten by fields.
10765            unsafe {
10766                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10767                (ptr as *mut u64).write_unaligned(0);
10768            }
10769            // Write the fields.
10770            self.0.encode(encoder, offset + 0, depth)?;
10771            self.1.encode(encoder, offset + 6, depth)?;
10772            self.2.encode(encoder, offset + 8, depth)?;
10773            self.3.encode(encoder, offset + 16, depth)?;
10774            Ok(())
10775        }
10776    }
10777
10778    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFrame {
10779        #[inline(always)]
10780        fn new_empty() -> Self {
10781            Self {
10782                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10783                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
10784                seq_num: fidl::new_empty!(u16, D),
10785                sae_fields: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10786            }
10787        }
10788
10789        #[inline]
10790        unsafe fn decode(
10791            &mut self,
10792            decoder: &mut fidl::encoding::Decoder<'_, D>,
10793            offset: usize,
10794            _depth: fidl::encoding::Depth,
10795        ) -> fidl::Result<()> {
10796            decoder.debug_check_bounds::<Self>(offset);
10797            // Verify that padding bytes are zero.
10798            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10799            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10800            let mask = 0xffffffffffff0000u64;
10801            let maskedval = padval & mask;
10802            if maskedval != 0 {
10803                return Err(fidl::Error::NonZeroPadding {
10804                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10805                });
10806            }
10807            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
10808            fidl::decode!(
10809                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10810                D,
10811                &mut self.status_code,
10812                decoder,
10813                offset + 6,
10814                _depth
10815            )?;
10816            fidl::decode!(u16, D, &mut self.seq_num, decoder, offset + 8, _depth)?;
10817            fidl::decode!(
10818                fidl::encoding::UnboundedVector<u8>,
10819                D,
10820                &mut self.sae_fields,
10821                decoder,
10822                offset + 16,
10823                _depth
10824            )?;
10825            Ok(())
10826        }
10827    }
10828
10829    impl fidl::encoding::ValueTypeMarker for SaeHandshakeIndication {
10830        type Borrowed<'a> = &'a Self;
10831        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10832            value
10833        }
10834    }
10835
10836    unsafe impl fidl::encoding::TypeMarker for SaeHandshakeIndication {
10837        type Owned = Self;
10838
10839        #[inline(always)]
10840        fn inline_align(_context: fidl::encoding::Context) -> usize {
10841            1
10842        }
10843
10844        #[inline(always)]
10845        fn inline_size(_context: fidl::encoding::Context) -> usize {
10846            6
10847        }
10848        #[inline(always)]
10849        fn encode_is_copy() -> bool {
10850            true
10851        }
10852
10853        #[inline(always)]
10854        fn decode_is_copy() -> bool {
10855            true
10856        }
10857    }
10858
10859    unsafe impl<D: fidl::encoding::ResourceDialect>
10860        fidl::encoding::Encode<SaeHandshakeIndication, D> for &SaeHandshakeIndication
10861    {
10862        #[inline]
10863        unsafe fn encode(
10864            self,
10865            encoder: &mut fidl::encoding::Encoder<'_, D>,
10866            offset: usize,
10867            _depth: fidl::encoding::Depth,
10868        ) -> fidl::Result<()> {
10869            encoder.debug_check_bounds::<SaeHandshakeIndication>(offset);
10870            unsafe {
10871                // Copy the object into the buffer.
10872                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
10873                (buf_ptr as *mut SaeHandshakeIndication)
10874                    .write_unaligned((self as *const SaeHandshakeIndication).read());
10875                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
10876                // done second because the memcpy will write garbage to these bytes.
10877            }
10878            Ok(())
10879        }
10880    }
10881    unsafe impl<
10882        D: fidl::encoding::ResourceDialect,
10883        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10884    > fidl::encoding::Encode<SaeHandshakeIndication, D> for (T0,)
10885    {
10886        #[inline]
10887        unsafe fn encode(
10888            self,
10889            encoder: &mut fidl::encoding::Encoder<'_, D>,
10890            offset: usize,
10891            depth: fidl::encoding::Depth,
10892        ) -> fidl::Result<()> {
10893            encoder.debug_check_bounds::<SaeHandshakeIndication>(offset);
10894            // Zero out padding regions. There's no need to apply masks
10895            // because the unmasked parts will be overwritten by fields.
10896            // Write the fields.
10897            self.0.encode(encoder, offset + 0, depth)?;
10898            Ok(())
10899        }
10900    }
10901
10902    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10903        for SaeHandshakeIndication
10904    {
10905        #[inline(always)]
10906        fn new_empty() -> Self {
10907            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
10908        }
10909
10910        #[inline]
10911        unsafe fn decode(
10912            &mut self,
10913            decoder: &mut fidl::encoding::Decoder<'_, D>,
10914            offset: usize,
10915            _depth: fidl::encoding::Depth,
10916        ) -> fidl::Result<()> {
10917            decoder.debug_check_bounds::<Self>(offset);
10918            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
10919            // Verify that padding bytes are zero.
10920            // Copy from the buffer into the object.
10921            unsafe {
10922                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
10923            }
10924            Ok(())
10925        }
10926    }
10927
10928    impl fidl::encoding::ValueTypeMarker for SaeHandshakeResponse {
10929        type Borrowed<'a> = &'a Self;
10930        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10931            value
10932        }
10933    }
10934
10935    unsafe impl fidl::encoding::TypeMarker for SaeHandshakeResponse {
10936        type Owned = Self;
10937
10938        #[inline(always)]
10939        fn inline_align(_context: fidl::encoding::Context) -> usize {
10940            2
10941        }
10942
10943        #[inline(always)]
10944        fn inline_size(_context: fidl::encoding::Context) -> usize {
10945            8
10946        }
10947    }
10948
10949    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeHandshakeResponse, D>
10950        for &SaeHandshakeResponse
10951    {
10952        #[inline]
10953        unsafe fn encode(
10954            self,
10955            encoder: &mut fidl::encoding::Encoder<'_, D>,
10956            offset: usize,
10957            _depth: fidl::encoding::Depth,
10958        ) -> fidl::Result<()> {
10959            encoder.debug_check_bounds::<SaeHandshakeResponse>(offset);
10960            // Delegate to tuple encoding.
10961            fidl::encoding::Encode::<SaeHandshakeResponse, D>::encode(
10962                (
10963                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
10964                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10965                ),
10966                encoder, offset, _depth
10967            )
10968        }
10969    }
10970    unsafe impl<
10971        D: fidl::encoding::ResourceDialect,
10972        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10973        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
10974    > fidl::encoding::Encode<SaeHandshakeResponse, D> for (T0, T1)
10975    {
10976        #[inline]
10977        unsafe fn encode(
10978            self,
10979            encoder: &mut fidl::encoding::Encoder<'_, D>,
10980            offset: usize,
10981            depth: fidl::encoding::Depth,
10982        ) -> fidl::Result<()> {
10983            encoder.debug_check_bounds::<SaeHandshakeResponse>(offset);
10984            // Zero out padding regions. There's no need to apply masks
10985            // because the unmasked parts will be overwritten by fields.
10986            // Write the fields.
10987            self.0.encode(encoder, offset + 0, depth)?;
10988            self.1.encode(encoder, offset + 6, depth)?;
10989            Ok(())
10990        }
10991    }
10992
10993    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeHandshakeResponse {
10994        #[inline(always)]
10995        fn new_empty() -> Self {
10996            Self {
10997                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10998                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
10999            }
11000        }
11001
11002        #[inline]
11003        unsafe fn decode(
11004            &mut self,
11005            decoder: &mut fidl::encoding::Decoder<'_, D>,
11006            offset: usize,
11007            _depth: fidl::encoding::Depth,
11008        ) -> fidl::Result<()> {
11009            decoder.debug_check_bounds::<Self>(offset);
11010            // Verify that padding bytes are zero.
11011            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
11012            fidl::decode!(
11013                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
11014                D,
11015                &mut self.status_code,
11016                decoder,
11017                offset + 6,
11018                _depth
11019            )?;
11020            Ok(())
11021        }
11022    }
11023
11024    impl fidl::encoding::ValueTypeMarker for ScanEnd {
11025        type Borrowed<'a> = &'a Self;
11026        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11027            value
11028        }
11029    }
11030
11031    unsafe impl fidl::encoding::TypeMarker for ScanEnd {
11032        type Owned = Self;
11033
11034        #[inline(always)]
11035        fn inline_align(_context: fidl::encoding::Context) -> usize {
11036            8
11037        }
11038
11039        #[inline(always)]
11040        fn inline_size(_context: fidl::encoding::Context) -> usize {
11041            16
11042        }
11043    }
11044
11045    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanEnd, D> for &ScanEnd {
11046        #[inline]
11047        unsafe fn encode(
11048            self,
11049            encoder: &mut fidl::encoding::Encoder<'_, D>,
11050            offset: usize,
11051            _depth: fidl::encoding::Depth,
11052        ) -> fidl::Result<()> {
11053            encoder.debug_check_bounds::<ScanEnd>(offset);
11054            // Delegate to tuple encoding.
11055            fidl::encoding::Encode::<ScanEnd, D>::encode(
11056                (
11057                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
11058                    <ScanResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.code),
11059                ),
11060                encoder,
11061                offset,
11062                _depth,
11063            )
11064        }
11065    }
11066    unsafe impl<
11067        D: fidl::encoding::ResourceDialect,
11068        T0: fidl::encoding::Encode<u64, D>,
11069        T1: fidl::encoding::Encode<ScanResultCode, D>,
11070    > fidl::encoding::Encode<ScanEnd, D> for (T0, T1)
11071    {
11072        #[inline]
11073        unsafe fn encode(
11074            self,
11075            encoder: &mut fidl::encoding::Encoder<'_, D>,
11076            offset: usize,
11077            depth: fidl::encoding::Depth,
11078        ) -> fidl::Result<()> {
11079            encoder.debug_check_bounds::<ScanEnd>(offset);
11080            // Zero out padding regions. There's no need to apply masks
11081            // because the unmasked parts will be overwritten by fields.
11082            unsafe {
11083                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
11084                (ptr as *mut u64).write_unaligned(0);
11085            }
11086            // Write the fields.
11087            self.0.encode(encoder, offset + 0, depth)?;
11088            self.1.encode(encoder, offset + 8, depth)?;
11089            Ok(())
11090        }
11091    }
11092
11093    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanEnd {
11094        #[inline(always)]
11095        fn new_empty() -> Self {
11096            Self { txn_id: fidl::new_empty!(u64, D), code: fidl::new_empty!(ScanResultCode, D) }
11097        }
11098
11099        #[inline]
11100        unsafe fn decode(
11101            &mut self,
11102            decoder: &mut fidl::encoding::Decoder<'_, D>,
11103            offset: usize,
11104            _depth: fidl::encoding::Depth,
11105        ) -> fidl::Result<()> {
11106            decoder.debug_check_bounds::<Self>(offset);
11107            // Verify that padding bytes are zero.
11108            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
11109            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11110            let mask = 0xffffffff00000000u64;
11111            let maskedval = padval & mask;
11112            if maskedval != 0 {
11113                return Err(fidl::Error::NonZeroPadding {
11114                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
11115                });
11116            }
11117            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
11118            fidl::decode!(ScanResultCode, D, &mut self.code, decoder, offset + 8, _depth)?;
11119            Ok(())
11120        }
11121    }
11122
11123    impl fidl::encoding::ValueTypeMarker for ScanRequest {
11124        type Borrowed<'a> = &'a Self;
11125        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11126            value
11127        }
11128    }
11129
11130    unsafe impl fidl::encoding::TypeMarker for ScanRequest {
11131        type Owned = Self;
11132
11133        #[inline(always)]
11134        fn inline_align(_context: fidl::encoding::Context) -> usize {
11135            8
11136        }
11137
11138        #[inline(always)]
11139        fn inline_size(_context: fidl::encoding::Context) -> usize {
11140            64
11141        }
11142    }
11143
11144    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanRequest, D>
11145        for &ScanRequest
11146    {
11147        #[inline]
11148        unsafe fn encode(
11149            self,
11150            encoder: &mut fidl::encoding::Encoder<'_, D>,
11151            offset: usize,
11152            _depth: fidl::encoding::Depth,
11153        ) -> fidl::Result<()> {
11154            encoder.debug_check_bounds::<ScanRequest>(offset);
11155            // Delegate to tuple encoding.
11156            fidl::encoding::Encode::<ScanRequest, D>::encode(
11157                (
11158                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
11159                    <ScanTypes as fidl::encoding::ValueTypeMarker>::borrow(&self.scan_type),
11160                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.channel_list),
11161                    <fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid_list),
11162                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.probe_delay),
11163                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.min_channel_time),
11164                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.max_channel_time),
11165                ),
11166                encoder, offset, _depth
11167            )
11168        }
11169    }
11170    unsafe impl<
11171        D: fidl::encoding::ResourceDialect,
11172        T0: fidl::encoding::Encode<u64, D>,
11173        T1: fidl::encoding::Encode<ScanTypes, D>,
11174        T2: fidl::encoding::Encode<fidl::encoding::Vector<u8, 256>, D>,
11175        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>,
11176        T4: fidl::encoding::Encode<u32, D>,
11177        T5: fidl::encoding::Encode<u32, D>,
11178        T6: fidl::encoding::Encode<u32, D>,
11179    > fidl::encoding::Encode<ScanRequest, D> for (T0, T1, T2, T3, T4, T5, T6)
11180    {
11181        #[inline]
11182        unsafe fn encode(
11183            self,
11184            encoder: &mut fidl::encoding::Encoder<'_, D>,
11185            offset: usize,
11186            depth: fidl::encoding::Depth,
11187        ) -> fidl::Result<()> {
11188            encoder.debug_check_bounds::<ScanRequest>(offset);
11189            // Zero out padding regions. There's no need to apply masks
11190            // because the unmasked parts will be overwritten by fields.
11191            unsafe {
11192                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
11193                (ptr as *mut u64).write_unaligned(0);
11194            }
11195            unsafe {
11196                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
11197                (ptr as *mut u64).write_unaligned(0);
11198            }
11199            // Write the fields.
11200            self.0.encode(encoder, offset + 0, depth)?;
11201            self.1.encode(encoder, offset + 8, depth)?;
11202            self.2.encode(encoder, offset + 16, depth)?;
11203            self.3.encode(encoder, offset + 32, depth)?;
11204            self.4.encode(encoder, offset + 48, depth)?;
11205            self.5.encode(encoder, offset + 52, depth)?;
11206            self.6.encode(encoder, offset + 56, depth)?;
11207            Ok(())
11208        }
11209    }
11210
11211    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanRequest {
11212        #[inline(always)]
11213        fn new_empty() -> Self {
11214            Self {
11215                txn_id: fidl::new_empty!(u64, D),
11216                scan_type: fidl::new_empty!(ScanTypes, D),
11217                channel_list: fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D),
11218                ssid_list: fidl::new_empty!(
11219                    fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
11220                    D
11221                ),
11222                probe_delay: fidl::new_empty!(u32, D),
11223                min_channel_time: fidl::new_empty!(u32, D),
11224                max_channel_time: fidl::new_empty!(u32, D),
11225            }
11226        }
11227
11228        #[inline]
11229        unsafe fn decode(
11230            &mut self,
11231            decoder: &mut fidl::encoding::Decoder<'_, D>,
11232            offset: usize,
11233            _depth: fidl::encoding::Depth,
11234        ) -> fidl::Result<()> {
11235            decoder.debug_check_bounds::<Self>(offset);
11236            // Verify that padding bytes are zero.
11237            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
11238            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11239            let mask = 0xffffffff00000000u64;
11240            let maskedval = padval & mask;
11241            if maskedval != 0 {
11242                return Err(fidl::Error::NonZeroPadding {
11243                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
11244                });
11245            }
11246            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
11247            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11248            let mask = 0xffffffff00000000u64;
11249            let maskedval = padval & mask;
11250            if maskedval != 0 {
11251                return Err(fidl::Error::NonZeroPadding {
11252                    padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
11253                });
11254            }
11255            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
11256            fidl::decode!(ScanTypes, D, &mut self.scan_type, decoder, offset + 8, _depth)?;
11257            fidl::decode!(fidl::encoding::Vector<u8, 256>, D, &mut self.channel_list, decoder, offset + 16, _depth)?;
11258            fidl::decode!(
11259                fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
11260                D,
11261                &mut self.ssid_list,
11262                decoder,
11263                offset + 32,
11264                _depth
11265            )?;
11266            fidl::decode!(u32, D, &mut self.probe_delay, decoder, offset + 48, _depth)?;
11267            fidl::decode!(u32, D, &mut self.min_channel_time, decoder, offset + 52, _depth)?;
11268            fidl::decode!(u32, D, &mut self.max_channel_time, decoder, offset + 56, _depth)?;
11269            Ok(())
11270        }
11271    }
11272
11273    impl fidl::encoding::ValueTypeMarker for ScanResult {
11274        type Borrowed<'a> = &'a Self;
11275        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11276            value
11277        }
11278    }
11279
11280    unsafe impl fidl::encoding::TypeMarker for ScanResult {
11281        type Owned = Self;
11282
11283        #[inline(always)]
11284        fn inline_align(_context: fidl::encoding::Context) -> usize {
11285            8
11286        }
11287
11288        #[inline(always)]
11289        fn inline_size(_context: fidl::encoding::Context) -> usize {
11290            64
11291        }
11292    }
11293
11294    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanResult, D>
11295        for &ScanResult
11296    {
11297        #[inline]
11298        unsafe fn encode(
11299            self,
11300            encoder: &mut fidl::encoding::Encoder<'_, D>,
11301            offset: usize,
11302            _depth: fidl::encoding::Depth,
11303        ) -> fidl::Result<()> {
11304            encoder.debug_check_bounds::<ScanResult>(offset);
11305            // Delegate to tuple encoding.
11306            fidl::encoding::Encode::<ScanResult, D>::encode(
11307                (
11308                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
11309                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timestamp_nanos),
11310                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.bss),
11311                ),
11312                encoder, offset, _depth
11313            )
11314        }
11315    }
11316    unsafe impl<
11317        D: fidl::encoding::ResourceDialect,
11318        T0: fidl::encoding::Encode<u64, D>,
11319        T1: fidl::encoding::Encode<i64, D>,
11320        T2: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
11321    > fidl::encoding::Encode<ScanResult, D> for (T0, T1, T2)
11322    {
11323        #[inline]
11324        unsafe fn encode(
11325            self,
11326            encoder: &mut fidl::encoding::Encoder<'_, D>,
11327            offset: usize,
11328            depth: fidl::encoding::Depth,
11329        ) -> fidl::Result<()> {
11330            encoder.debug_check_bounds::<ScanResult>(offset);
11331            // Zero out padding regions. There's no need to apply masks
11332            // because the unmasked parts will be overwritten by fields.
11333            // Write the fields.
11334            self.0.encode(encoder, offset + 0, depth)?;
11335            self.1.encode(encoder, offset + 8, depth)?;
11336            self.2.encode(encoder, offset + 16, depth)?;
11337            Ok(())
11338        }
11339    }
11340
11341    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanResult {
11342        #[inline(always)]
11343        fn new_empty() -> Self {
11344            Self {
11345                txn_id: fidl::new_empty!(u64, D),
11346                timestamp_nanos: fidl::new_empty!(i64, D),
11347                bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
11348            }
11349        }
11350
11351        #[inline]
11352        unsafe fn decode(
11353            &mut self,
11354            decoder: &mut fidl::encoding::Decoder<'_, D>,
11355            offset: usize,
11356            _depth: fidl::encoding::Depth,
11357        ) -> fidl::Result<()> {
11358            decoder.debug_check_bounds::<Self>(offset);
11359            // Verify that padding bytes are zero.
11360            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
11361            fidl::decode!(i64, D, &mut self.timestamp_nanos, decoder, offset + 8, _depth)?;
11362            fidl::decode!(
11363                fidl_fuchsia_wlan_common__common::BssDescription,
11364                D,
11365                &mut self.bss,
11366                decoder,
11367                offset + 16,
11368                _depth
11369            )?;
11370            Ok(())
11371        }
11372    }
11373
11374    impl fidl::encoding::ValueTypeMarker for SetControlledPortRequest {
11375        type Borrowed<'a> = &'a Self;
11376        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11377            value
11378        }
11379    }
11380
11381    unsafe impl fidl::encoding::TypeMarker for SetControlledPortRequest {
11382        type Owned = Self;
11383
11384        #[inline(always)]
11385        fn inline_align(_context: fidl::encoding::Context) -> usize {
11386            4
11387        }
11388
11389        #[inline(always)]
11390        fn inline_size(_context: fidl::encoding::Context) -> usize {
11391            12
11392        }
11393    }
11394
11395    unsafe impl<D: fidl::encoding::ResourceDialect>
11396        fidl::encoding::Encode<SetControlledPortRequest, D> for &SetControlledPortRequest
11397    {
11398        #[inline]
11399        unsafe fn encode(
11400            self,
11401            encoder: &mut fidl::encoding::Encoder<'_, D>,
11402            offset: usize,
11403            _depth: fidl::encoding::Depth,
11404        ) -> fidl::Result<()> {
11405            encoder.debug_check_bounds::<SetControlledPortRequest>(offset);
11406            // Delegate to tuple encoding.
11407            fidl::encoding::Encode::<SetControlledPortRequest, D>::encode(
11408                (
11409                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
11410                        &self.peer_sta_address,
11411                    ),
11412                    <ControlledPortState as fidl::encoding::ValueTypeMarker>::borrow(&self.state),
11413                ),
11414                encoder,
11415                offset,
11416                _depth,
11417            )
11418        }
11419    }
11420    unsafe impl<
11421        D: fidl::encoding::ResourceDialect,
11422        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11423        T1: fidl::encoding::Encode<ControlledPortState, D>,
11424    > fidl::encoding::Encode<SetControlledPortRequest, D> for (T0, T1)
11425    {
11426        #[inline]
11427        unsafe fn encode(
11428            self,
11429            encoder: &mut fidl::encoding::Encoder<'_, D>,
11430            offset: usize,
11431            depth: fidl::encoding::Depth,
11432        ) -> fidl::Result<()> {
11433            encoder.debug_check_bounds::<SetControlledPortRequest>(offset);
11434            // Zero out padding regions. There's no need to apply masks
11435            // because the unmasked parts will be overwritten by fields.
11436            unsafe {
11437                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
11438                (ptr as *mut u32).write_unaligned(0);
11439            }
11440            // Write the fields.
11441            self.0.encode(encoder, offset + 0, depth)?;
11442            self.1.encode(encoder, offset + 8, depth)?;
11443            Ok(())
11444        }
11445    }
11446
11447    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11448        for SetControlledPortRequest
11449    {
11450        #[inline(always)]
11451        fn new_empty() -> Self {
11452            Self {
11453                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11454                state: fidl::new_empty!(ControlledPortState, D),
11455            }
11456        }
11457
11458        #[inline]
11459        unsafe fn decode(
11460            &mut self,
11461            decoder: &mut fidl::encoding::Decoder<'_, D>,
11462            offset: usize,
11463            _depth: fidl::encoding::Depth,
11464        ) -> fidl::Result<()> {
11465            decoder.debug_check_bounds::<Self>(offset);
11466            // Verify that padding bytes are zero.
11467            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
11468            let padval = unsafe { (ptr as *const u32).read_unaligned() };
11469            let mask = 0xffff0000u32;
11470            let maskedval = padval & mask;
11471            if maskedval != 0 {
11472                return Err(fidl::Error::NonZeroPadding {
11473                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
11474                });
11475            }
11476            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
11477            fidl::decode!(ControlledPortState, D, &mut self.state, decoder, offset + 8, _depth)?;
11478            Ok(())
11479        }
11480    }
11481
11482    impl fidl::encoding::ValueTypeMarker for SetKeyDescriptor {
11483        type Borrowed<'a> = &'a Self;
11484        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11485            value
11486        }
11487    }
11488
11489    unsafe impl fidl::encoding::TypeMarker for SetKeyDescriptor {
11490        type Owned = Self;
11491
11492        #[inline(always)]
11493        fn inline_align(_context: fidl::encoding::Context) -> usize {
11494            8
11495        }
11496
11497        #[inline(always)]
11498        fn inline_size(_context: fidl::encoding::Context) -> usize {
11499            48
11500        }
11501    }
11502
11503    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeyDescriptor, D>
11504        for &SetKeyDescriptor
11505    {
11506        #[inline]
11507        unsafe fn encode(
11508            self,
11509            encoder: &mut fidl::encoding::Encoder<'_, D>,
11510            offset: usize,
11511            _depth: fidl::encoding::Depth,
11512        ) -> fidl::Result<()> {
11513            encoder.debug_check_bounds::<SetKeyDescriptor>(offset);
11514            // Delegate to tuple encoding.
11515            fidl::encoding::Encode::<SetKeyDescriptor, D>::encode(
11516                (
11517                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
11518                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.key_id),
11519                    <KeyType as fidl::encoding::ValueTypeMarker>::borrow(&self.key_type),
11520                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.address),
11521                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.rsc),
11522                    <fidl::encoding::Array<u8, 3> as fidl::encoding::ValueTypeMarker>::borrow(&self.cipher_suite_oui),
11523                    <fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType as fidl::encoding::ValueTypeMarker>::borrow(&self.cipher_suite_type),
11524                ),
11525                encoder, offset, _depth
11526            )
11527        }
11528    }
11529    unsafe impl<
11530        D: fidl::encoding::ResourceDialect,
11531        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
11532        T1: fidl::encoding::Encode<u16, D>,
11533        T2: fidl::encoding::Encode<KeyType, D>,
11534        T3: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11535        T4: fidl::encoding::Encode<u64, D>,
11536        T5: fidl::encoding::Encode<fidl::encoding::Array<u8, 3>, D>,
11537        T6: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType, D>,
11538    > fidl::encoding::Encode<SetKeyDescriptor, D> for (T0, T1, T2, T3, T4, T5, T6)
11539    {
11540        #[inline]
11541        unsafe fn encode(
11542            self,
11543            encoder: &mut fidl::encoding::Encoder<'_, D>,
11544            offset: usize,
11545            depth: fidl::encoding::Depth,
11546        ) -> fidl::Result<()> {
11547            encoder.debug_check_bounds::<SetKeyDescriptor>(offset);
11548            // Zero out padding regions. There's no need to apply masks
11549            // because the unmasked parts will be overwritten by fields.
11550            unsafe {
11551                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
11552                (ptr as *mut u64).write_unaligned(0);
11553            }
11554            unsafe {
11555                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
11556                (ptr as *mut u64).write_unaligned(0);
11557            }
11558            unsafe {
11559                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(40);
11560                (ptr as *mut u64).write_unaligned(0);
11561            }
11562            // Write the fields.
11563            self.0.encode(encoder, offset + 0, depth)?;
11564            self.1.encode(encoder, offset + 16, depth)?;
11565            self.2.encode(encoder, offset + 20, depth)?;
11566            self.3.encode(encoder, offset + 24, depth)?;
11567            self.4.encode(encoder, offset + 32, depth)?;
11568            self.5.encode(encoder, offset + 40, depth)?;
11569            self.6.encode(encoder, offset + 44, depth)?;
11570            Ok(())
11571        }
11572    }
11573
11574    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeyDescriptor {
11575        #[inline(always)]
11576        fn new_empty() -> Self {
11577            Self {
11578                key: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
11579                key_id: fidl::new_empty!(u16, D),
11580                key_type: fidl::new_empty!(KeyType, D),
11581                address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11582                rsc: fidl::new_empty!(u64, D),
11583                cipher_suite_oui: fidl::new_empty!(fidl::encoding::Array<u8, 3>, D),
11584                cipher_suite_type: fidl::new_empty!(
11585                    fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
11586                    D
11587                ),
11588            }
11589        }
11590
11591        #[inline]
11592        unsafe fn decode(
11593            &mut self,
11594            decoder: &mut fidl::encoding::Decoder<'_, D>,
11595            offset: usize,
11596            _depth: fidl::encoding::Depth,
11597        ) -> fidl::Result<()> {
11598            decoder.debug_check_bounds::<Self>(offset);
11599            // Verify that padding bytes are zero.
11600            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
11601            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11602            let mask = 0xffff0000u64;
11603            let maskedval = padval & mask;
11604            if maskedval != 0 {
11605                return Err(fidl::Error::NonZeroPadding {
11606                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
11607                });
11608            }
11609            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
11610            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11611            let mask = 0xffff000000000000u64;
11612            let maskedval = padval & mask;
11613            if maskedval != 0 {
11614                return Err(fidl::Error::NonZeroPadding {
11615                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
11616                });
11617            }
11618            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(40) };
11619            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11620            let mask = 0xff000000u64;
11621            let maskedval = padval & mask;
11622            if maskedval != 0 {
11623                return Err(fidl::Error::NonZeroPadding {
11624                    padding_start: offset + 40 + ((mask as u64).trailing_zeros() / 8) as usize,
11625                });
11626            }
11627            fidl::decode!(
11628                fidl::encoding::UnboundedVector<u8>,
11629                D,
11630                &mut self.key,
11631                decoder,
11632                offset + 0,
11633                _depth
11634            )?;
11635            fidl::decode!(u16, D, &mut self.key_id, decoder, offset + 16, _depth)?;
11636            fidl::decode!(KeyType, D, &mut self.key_type, decoder, offset + 20, _depth)?;
11637            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.address, decoder, offset + 24, _depth)?;
11638            fidl::decode!(u64, D, &mut self.rsc, decoder, offset + 32, _depth)?;
11639            fidl::decode!(fidl::encoding::Array<u8, 3>, D, &mut self.cipher_suite_oui, decoder, offset + 40, _depth)?;
11640            fidl::decode!(
11641                fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
11642                D,
11643                &mut self.cipher_suite_type,
11644                decoder,
11645                offset + 44,
11646                _depth
11647            )?;
11648            Ok(())
11649        }
11650    }
11651
11652    impl fidl::encoding::ValueTypeMarker for SetKeyResult {
11653        type Borrowed<'a> = &'a Self;
11654        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11655            value
11656        }
11657    }
11658
11659    unsafe impl fidl::encoding::TypeMarker for SetKeyResult {
11660        type Owned = Self;
11661
11662        #[inline(always)]
11663        fn inline_align(_context: fidl::encoding::Context) -> usize {
11664            4
11665        }
11666
11667        #[inline(always)]
11668        fn inline_size(_context: fidl::encoding::Context) -> usize {
11669            8
11670        }
11671    }
11672
11673    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeyResult, D>
11674        for &SetKeyResult
11675    {
11676        #[inline]
11677        unsafe fn encode(
11678            self,
11679            encoder: &mut fidl::encoding::Encoder<'_, D>,
11680            offset: usize,
11681            _depth: fidl::encoding::Depth,
11682        ) -> fidl::Result<()> {
11683            encoder.debug_check_bounds::<SetKeyResult>(offset);
11684            unsafe {
11685                // Copy the object into the buffer.
11686                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
11687                (buf_ptr as *mut SetKeyResult)
11688                    .write_unaligned((self as *const SetKeyResult).read());
11689                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
11690                // done second because the memcpy will write garbage to these bytes.
11691                let padding_ptr = buf_ptr.offset(0) as *mut u32;
11692                let padding_mask = 0xffff0000u32;
11693                padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
11694            }
11695            Ok(())
11696        }
11697    }
11698    unsafe impl<
11699        D: fidl::encoding::ResourceDialect,
11700        T0: fidl::encoding::Encode<u16, D>,
11701        T1: fidl::encoding::Encode<i32, D>,
11702    > fidl::encoding::Encode<SetKeyResult, D> for (T0, T1)
11703    {
11704        #[inline]
11705        unsafe fn encode(
11706            self,
11707            encoder: &mut fidl::encoding::Encoder<'_, D>,
11708            offset: usize,
11709            depth: fidl::encoding::Depth,
11710        ) -> fidl::Result<()> {
11711            encoder.debug_check_bounds::<SetKeyResult>(offset);
11712            // Zero out padding regions. There's no need to apply masks
11713            // because the unmasked parts will be overwritten by fields.
11714            unsafe {
11715                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
11716                (ptr as *mut u32).write_unaligned(0);
11717            }
11718            // Write the fields.
11719            self.0.encode(encoder, offset + 0, depth)?;
11720            self.1.encode(encoder, offset + 4, depth)?;
11721            Ok(())
11722        }
11723    }
11724
11725    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeyResult {
11726        #[inline(always)]
11727        fn new_empty() -> Self {
11728            Self { key_id: fidl::new_empty!(u16, D), status: fidl::new_empty!(i32, D) }
11729        }
11730
11731        #[inline]
11732        unsafe fn decode(
11733            &mut self,
11734            decoder: &mut fidl::encoding::Decoder<'_, D>,
11735            offset: usize,
11736            _depth: fidl::encoding::Depth,
11737        ) -> fidl::Result<()> {
11738            decoder.debug_check_bounds::<Self>(offset);
11739            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
11740            // Verify that padding bytes are zero.
11741            let ptr = unsafe { buf_ptr.offset(0) };
11742            let padval = unsafe { (ptr as *const u32).read_unaligned() };
11743            let mask = 0xffff0000u32;
11744            let maskedval = padval & mask;
11745            if maskedval != 0 {
11746                return Err(fidl::Error::NonZeroPadding {
11747                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
11748                });
11749            }
11750            // Copy from the buffer into the object.
11751            unsafe {
11752                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
11753            }
11754            Ok(())
11755        }
11756    }
11757
11758    impl fidl::encoding::ValueTypeMarker for SetKeysConfirm {
11759        type Borrowed<'a> = &'a Self;
11760        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11761            value
11762        }
11763    }
11764
11765    unsafe impl fidl::encoding::TypeMarker for SetKeysConfirm {
11766        type Owned = Self;
11767
11768        #[inline(always)]
11769        fn inline_align(_context: fidl::encoding::Context) -> usize {
11770            8
11771        }
11772
11773        #[inline(always)]
11774        fn inline_size(_context: fidl::encoding::Context) -> usize {
11775            16
11776        }
11777    }
11778
11779    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeysConfirm, D>
11780        for &SetKeysConfirm
11781    {
11782        #[inline]
11783        unsafe fn encode(
11784            self,
11785            encoder: &mut fidl::encoding::Encoder<'_, D>,
11786            offset: usize,
11787            _depth: fidl::encoding::Depth,
11788        ) -> fidl::Result<()> {
11789            encoder.debug_check_bounds::<SetKeysConfirm>(offset);
11790            // Delegate to tuple encoding.
11791            fidl::encoding::Encode::<SetKeysConfirm, D>::encode(
11792                (
11793                    <fidl::encoding::UnboundedVector<SetKeyResult> as fidl::encoding::ValueTypeMarker>::borrow(&self.results),
11794                ),
11795                encoder, offset, _depth
11796            )
11797        }
11798    }
11799    unsafe impl<
11800        D: fidl::encoding::ResourceDialect,
11801        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<SetKeyResult>, D>,
11802    > fidl::encoding::Encode<SetKeysConfirm, D> for (T0,)
11803    {
11804        #[inline]
11805        unsafe fn encode(
11806            self,
11807            encoder: &mut fidl::encoding::Encoder<'_, D>,
11808            offset: usize,
11809            depth: fidl::encoding::Depth,
11810        ) -> fidl::Result<()> {
11811            encoder.debug_check_bounds::<SetKeysConfirm>(offset);
11812            // Zero out padding regions. There's no need to apply masks
11813            // because the unmasked parts will be overwritten by fields.
11814            // Write the fields.
11815            self.0.encode(encoder, offset + 0, depth)?;
11816            Ok(())
11817        }
11818    }
11819
11820    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeysConfirm {
11821        #[inline(always)]
11822        fn new_empty() -> Self {
11823            Self { results: fidl::new_empty!(fidl::encoding::UnboundedVector<SetKeyResult>, D) }
11824        }
11825
11826        #[inline]
11827        unsafe fn decode(
11828            &mut self,
11829            decoder: &mut fidl::encoding::Decoder<'_, D>,
11830            offset: usize,
11831            _depth: fidl::encoding::Depth,
11832        ) -> fidl::Result<()> {
11833            decoder.debug_check_bounds::<Self>(offset);
11834            // Verify that padding bytes are zero.
11835            fidl::decode!(
11836                fidl::encoding::UnboundedVector<SetKeyResult>,
11837                D,
11838                &mut self.results,
11839                decoder,
11840                offset + 0,
11841                _depth
11842            )?;
11843            Ok(())
11844        }
11845    }
11846
11847    impl fidl::encoding::ValueTypeMarker for SetKeysRequest {
11848        type Borrowed<'a> = &'a Self;
11849        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11850            value
11851        }
11852    }
11853
11854    unsafe impl fidl::encoding::TypeMarker for SetKeysRequest {
11855        type Owned = Self;
11856
11857        #[inline(always)]
11858        fn inline_align(_context: fidl::encoding::Context) -> usize {
11859            8
11860        }
11861
11862        #[inline(always)]
11863        fn inline_size(_context: fidl::encoding::Context) -> usize {
11864            16
11865        }
11866    }
11867
11868    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeysRequest, D>
11869        for &SetKeysRequest
11870    {
11871        #[inline]
11872        unsafe fn encode(
11873            self,
11874            encoder: &mut fidl::encoding::Encoder<'_, D>,
11875            offset: usize,
11876            _depth: fidl::encoding::Depth,
11877        ) -> fidl::Result<()> {
11878            encoder.debug_check_bounds::<SetKeysRequest>(offset);
11879            // Delegate to tuple encoding.
11880            fidl::encoding::Encode::<SetKeysRequest, D>::encode(
11881                (
11882                    <fidl::encoding::UnboundedVector<SetKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.keylist),
11883                ),
11884                encoder, offset, _depth
11885            )
11886        }
11887    }
11888    unsafe impl<
11889        D: fidl::encoding::ResourceDialect,
11890        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<SetKeyDescriptor>, D>,
11891    > fidl::encoding::Encode<SetKeysRequest, D> for (T0,)
11892    {
11893        #[inline]
11894        unsafe fn encode(
11895            self,
11896            encoder: &mut fidl::encoding::Encoder<'_, D>,
11897            offset: usize,
11898            depth: fidl::encoding::Depth,
11899        ) -> fidl::Result<()> {
11900            encoder.debug_check_bounds::<SetKeysRequest>(offset);
11901            // Zero out padding regions. There's no need to apply masks
11902            // because the unmasked parts will be overwritten by fields.
11903            // Write the fields.
11904            self.0.encode(encoder, offset + 0, depth)?;
11905            Ok(())
11906        }
11907    }
11908
11909    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeysRequest {
11910        #[inline(always)]
11911        fn new_empty() -> Self {
11912            Self { keylist: fidl::new_empty!(fidl::encoding::UnboundedVector<SetKeyDescriptor>, D) }
11913        }
11914
11915        #[inline]
11916        unsafe fn decode(
11917            &mut self,
11918            decoder: &mut fidl::encoding::Decoder<'_, D>,
11919            offset: usize,
11920            _depth: fidl::encoding::Depth,
11921        ) -> fidl::Result<()> {
11922            decoder.debug_check_bounds::<Self>(offset);
11923            // Verify that padding bytes are zero.
11924            fidl::decode!(
11925                fidl::encoding::UnboundedVector<SetKeyDescriptor>,
11926                D,
11927                &mut self.keylist,
11928                decoder,
11929                offset + 0,
11930                _depth
11931            )?;
11932            Ok(())
11933        }
11934    }
11935
11936    impl fidl::encoding::ValueTypeMarker for StartCaptureFramesRequest {
11937        type Borrowed<'a> = &'a Self;
11938        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11939            value
11940        }
11941    }
11942
11943    unsafe impl fidl::encoding::TypeMarker for StartCaptureFramesRequest {
11944        type Owned = Self;
11945
11946        #[inline(always)]
11947        fn inline_align(_context: fidl::encoding::Context) -> usize {
11948            4
11949        }
11950
11951        #[inline(always)]
11952        fn inline_size(_context: fidl::encoding::Context) -> usize {
11953            4
11954        }
11955    }
11956
11957    unsafe impl<D: fidl::encoding::ResourceDialect>
11958        fidl::encoding::Encode<StartCaptureFramesRequest, D> for &StartCaptureFramesRequest
11959    {
11960        #[inline]
11961        unsafe fn encode(
11962            self,
11963            encoder: &mut fidl::encoding::Encoder<'_, D>,
11964            offset: usize,
11965            _depth: fidl::encoding::Depth,
11966        ) -> fidl::Result<()> {
11967            encoder.debug_check_bounds::<StartCaptureFramesRequest>(offset);
11968            // Delegate to tuple encoding.
11969            fidl::encoding::Encode::<StartCaptureFramesRequest, D>::encode(
11970                (<MgmtFrameCaptureFlags as fidl::encoding::ValueTypeMarker>::borrow(
11971                    &self.mgmt_frame_flags,
11972                ),),
11973                encoder,
11974                offset,
11975                _depth,
11976            )
11977        }
11978    }
11979    unsafe impl<
11980        D: fidl::encoding::ResourceDialect,
11981        T0: fidl::encoding::Encode<MgmtFrameCaptureFlags, D>,
11982    > fidl::encoding::Encode<StartCaptureFramesRequest, D> for (T0,)
11983    {
11984        #[inline]
11985        unsafe fn encode(
11986            self,
11987            encoder: &mut fidl::encoding::Encoder<'_, D>,
11988            offset: usize,
11989            depth: fidl::encoding::Depth,
11990        ) -> fidl::Result<()> {
11991            encoder.debug_check_bounds::<StartCaptureFramesRequest>(offset);
11992            // Zero out padding regions. There's no need to apply masks
11993            // because the unmasked parts will be overwritten by fields.
11994            // Write the fields.
11995            self.0.encode(encoder, offset + 0, depth)?;
11996            Ok(())
11997        }
11998    }
11999
12000    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12001        for StartCaptureFramesRequest
12002    {
12003        #[inline(always)]
12004        fn new_empty() -> Self {
12005            Self { mgmt_frame_flags: fidl::new_empty!(MgmtFrameCaptureFlags, D) }
12006        }
12007
12008        #[inline]
12009        unsafe fn decode(
12010            &mut self,
12011            decoder: &mut fidl::encoding::Decoder<'_, D>,
12012            offset: usize,
12013            _depth: fidl::encoding::Depth,
12014        ) -> fidl::Result<()> {
12015            decoder.debug_check_bounds::<Self>(offset);
12016            // Verify that padding bytes are zero.
12017            fidl::decode!(
12018                MgmtFrameCaptureFlags,
12019                D,
12020                &mut self.mgmt_frame_flags,
12021                decoder,
12022                offset + 0,
12023                _depth
12024            )?;
12025            Ok(())
12026        }
12027    }
12028
12029    impl fidl::encoding::ValueTypeMarker for StartCaptureFramesResponse {
12030        type Borrowed<'a> = &'a Self;
12031        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12032            value
12033        }
12034    }
12035
12036    unsafe impl fidl::encoding::TypeMarker for StartCaptureFramesResponse {
12037        type Owned = Self;
12038
12039        #[inline(always)]
12040        fn inline_align(_context: fidl::encoding::Context) -> usize {
12041            4
12042        }
12043
12044        #[inline(always)]
12045        fn inline_size(_context: fidl::encoding::Context) -> usize {
12046            8
12047        }
12048    }
12049
12050    unsafe impl<D: fidl::encoding::ResourceDialect>
12051        fidl::encoding::Encode<StartCaptureFramesResponse, D> for &StartCaptureFramesResponse
12052    {
12053        #[inline]
12054        unsafe fn encode(
12055            self,
12056            encoder: &mut fidl::encoding::Encoder<'_, D>,
12057            offset: usize,
12058            _depth: fidl::encoding::Depth,
12059        ) -> fidl::Result<()> {
12060            encoder.debug_check_bounds::<StartCaptureFramesResponse>(offset);
12061            // Delegate to tuple encoding.
12062            fidl::encoding::Encode::<StartCaptureFramesResponse, D>::encode(
12063                (
12064                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
12065                    <MgmtFrameCaptureFlags as fidl::encoding::ValueTypeMarker>::borrow(
12066                        &self.supported_mgmt_frames,
12067                    ),
12068                ),
12069                encoder,
12070                offset,
12071                _depth,
12072            )
12073        }
12074    }
12075    unsafe impl<
12076        D: fidl::encoding::ResourceDialect,
12077        T0: fidl::encoding::Encode<i32, D>,
12078        T1: fidl::encoding::Encode<MgmtFrameCaptureFlags, D>,
12079    > fidl::encoding::Encode<StartCaptureFramesResponse, D> for (T0, T1)
12080    {
12081        #[inline]
12082        unsafe fn encode(
12083            self,
12084            encoder: &mut fidl::encoding::Encoder<'_, D>,
12085            offset: usize,
12086            depth: fidl::encoding::Depth,
12087        ) -> fidl::Result<()> {
12088            encoder.debug_check_bounds::<StartCaptureFramesResponse>(offset);
12089            // Zero out padding regions. There's no need to apply masks
12090            // because the unmasked parts will be overwritten by fields.
12091            // Write the fields.
12092            self.0.encode(encoder, offset + 0, depth)?;
12093            self.1.encode(encoder, offset + 4, depth)?;
12094            Ok(())
12095        }
12096    }
12097
12098    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12099        for StartCaptureFramesResponse
12100    {
12101        #[inline(always)]
12102        fn new_empty() -> Self {
12103            Self {
12104                status: fidl::new_empty!(i32, D),
12105                supported_mgmt_frames: fidl::new_empty!(MgmtFrameCaptureFlags, D),
12106            }
12107        }
12108
12109        #[inline]
12110        unsafe fn decode(
12111            &mut self,
12112            decoder: &mut fidl::encoding::Decoder<'_, D>,
12113            offset: usize,
12114            _depth: fidl::encoding::Depth,
12115        ) -> fidl::Result<()> {
12116            decoder.debug_check_bounds::<Self>(offset);
12117            // Verify that padding bytes are zero.
12118            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
12119            fidl::decode!(
12120                MgmtFrameCaptureFlags,
12121                D,
12122                &mut self.supported_mgmt_frames,
12123                decoder,
12124                offset + 4,
12125                _depth
12126            )?;
12127            Ok(())
12128        }
12129    }
12130
12131    impl fidl::encoding::ValueTypeMarker for StartConfirm {
12132        type Borrowed<'a> = &'a Self;
12133        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12134            value
12135        }
12136    }
12137
12138    unsafe impl fidl::encoding::TypeMarker for StartConfirm {
12139        type Owned = Self;
12140
12141        #[inline(always)]
12142        fn inline_align(_context: fidl::encoding::Context) -> usize {
12143            4
12144        }
12145
12146        #[inline(always)]
12147        fn inline_size(_context: fidl::encoding::Context) -> usize {
12148            4
12149        }
12150    }
12151
12152    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartConfirm, D>
12153        for &StartConfirm
12154    {
12155        #[inline]
12156        unsafe fn encode(
12157            self,
12158            encoder: &mut fidl::encoding::Encoder<'_, D>,
12159            offset: usize,
12160            _depth: fidl::encoding::Depth,
12161        ) -> fidl::Result<()> {
12162            encoder.debug_check_bounds::<StartConfirm>(offset);
12163            // Delegate to tuple encoding.
12164            fidl::encoding::Encode::<StartConfirm, D>::encode(
12165                (<StartResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),),
12166                encoder,
12167                offset,
12168                _depth,
12169            )
12170        }
12171    }
12172    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartResultCode, D>>
12173        fidl::encoding::Encode<StartConfirm, D> for (T0,)
12174    {
12175        #[inline]
12176        unsafe fn encode(
12177            self,
12178            encoder: &mut fidl::encoding::Encoder<'_, D>,
12179            offset: usize,
12180            depth: fidl::encoding::Depth,
12181        ) -> fidl::Result<()> {
12182            encoder.debug_check_bounds::<StartConfirm>(offset);
12183            // Zero out padding regions. There's no need to apply masks
12184            // because the unmasked parts will be overwritten by fields.
12185            // Write the fields.
12186            self.0.encode(encoder, offset + 0, depth)?;
12187            Ok(())
12188        }
12189    }
12190
12191    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartConfirm {
12192        #[inline(always)]
12193        fn new_empty() -> Self {
12194            Self { result_code: fidl::new_empty!(StartResultCode, D) }
12195        }
12196
12197        #[inline]
12198        unsafe fn decode(
12199            &mut self,
12200            decoder: &mut fidl::encoding::Decoder<'_, D>,
12201            offset: usize,
12202            _depth: fidl::encoding::Depth,
12203        ) -> fidl::Result<()> {
12204            decoder.debug_check_bounds::<Self>(offset);
12205            // Verify that padding bytes are zero.
12206            fidl::decode!(StartResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
12207            Ok(())
12208        }
12209    }
12210
12211    impl fidl::encoding::ValueTypeMarker for StartRequest {
12212        type Borrowed<'a> = &'a Self;
12213        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12214            value
12215        }
12216    }
12217
12218    unsafe impl fidl::encoding::TypeMarker for StartRequest {
12219        type Owned = Self;
12220
12221        #[inline(always)]
12222        fn inline_align(_context: fidl::encoding::Context) -> usize {
12223            8
12224        }
12225
12226        #[inline(always)]
12227        fn inline_size(_context: fidl::encoding::Context) -> usize {
12228            96
12229        }
12230    }
12231
12232    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartRequest, D>
12233        for &StartRequest
12234    {
12235        #[inline]
12236        unsafe fn encode(
12237            self,
12238            encoder: &mut fidl::encoding::Encoder<'_, D>,
12239            offset: usize,
12240            _depth: fidl::encoding::Depth,
12241        ) -> fidl::Result<()> {
12242            encoder.debug_check_bounds::<StartRequest>(offset);
12243            // Delegate to tuple encoding.
12244            fidl::encoding::Encode::<StartRequest, D>::encode(
12245                (
12246                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid),
12247                    <fidl_fuchsia_wlan_common__common::BssType as fidl::encoding::ValueTypeMarker>::borrow(&self.bss_type),
12248                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.beacon_period),
12249                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.dtim_period),
12250                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.channel),
12251                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
12252                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
12253                    <Country as fidl::encoding::ValueTypeMarker>::borrow(&self.country),
12254                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.mesh_id),
12255                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>> as fidl::encoding::ValueTypeMarker>::borrow(&self.rsne),
12256                    <fidl_fuchsia_wlan_common__common::WlanPhyType as fidl::encoding::ValueTypeMarker>::borrow(&self.phy),
12257                    <fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth as fidl::encoding::ValueTypeMarker>::borrow(&self.channel_bandwidth),
12258                ),
12259                encoder, offset, _depth
12260            )
12261        }
12262    }
12263    unsafe impl<
12264        D: fidl::encoding::ResourceDialect,
12265        T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
12266        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssType, D>,
12267        T2: fidl::encoding::Encode<u16, D>,
12268        T3: fidl::encoding::Encode<u8, D>,
12269        T4: fidl::encoding::Encode<u8, D>,
12270        T5: fidl::encoding::Encode<u16, D>,
12271        T6: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
12272        T7: fidl::encoding::Encode<Country, D>,
12273        T8: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
12274        T9: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>, D>,
12275        T10: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::WlanPhyType, D>,
12276        T11: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth, D>,
12277    > fidl::encoding::Encode<StartRequest, D>
12278        for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
12279    {
12280        #[inline]
12281        unsafe fn encode(
12282            self,
12283            encoder: &mut fidl::encoding::Encoder<'_, D>,
12284            offset: usize,
12285            depth: fidl::encoding::Depth,
12286        ) -> fidl::Result<()> {
12287            encoder.debug_check_bounds::<StartRequest>(offset);
12288            // Zero out padding regions. There's no need to apply masks
12289            // because the unmasked parts will be overwritten by fields.
12290            unsafe {
12291                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
12292                (ptr as *mut u64).write_unaligned(0);
12293            }
12294            unsafe {
12295                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(48);
12296                (ptr as *mut u64).write_unaligned(0);
12297            }
12298            // Write the fields.
12299            self.0.encode(encoder, offset + 0, depth)?;
12300            self.1.encode(encoder, offset + 16, depth)?;
12301            self.2.encode(encoder, offset + 20, depth)?;
12302            self.3.encode(encoder, offset + 22, depth)?;
12303            self.4.encode(encoder, offset + 23, depth)?;
12304            self.5.encode(encoder, offset + 24, depth)?;
12305            self.6.encode(encoder, offset + 32, depth)?;
12306            self.7.encode(encoder, offset + 48, depth)?;
12307            self.8.encode(encoder, offset + 56, depth)?;
12308            self.9.encode(encoder, offset + 72, depth)?;
12309            self.10.encode(encoder, offset + 88, depth)?;
12310            self.11.encode(encoder, offset + 92, depth)?;
12311            Ok(())
12312        }
12313    }
12314
12315    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartRequest {
12316        #[inline(always)]
12317        fn new_empty() -> Self {
12318            Self {
12319                ssid: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
12320                bss_type: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssType, D),
12321                beacon_period: fidl::new_empty!(u16, D),
12322                dtim_period: fidl::new_empty!(u8, D),
12323                channel: fidl::new_empty!(u8, D),
12324                capability_info: fidl::new_empty!(u16, D),
12325                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
12326                country: fidl::new_empty!(Country, D),
12327                mesh_id: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
12328                rsne: fidl::new_empty!(
12329                    fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
12330                    D
12331                ),
12332                phy: fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanPhyType, D),
12333                channel_bandwidth: fidl::new_empty!(
12334                    fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth,
12335                    D
12336                ),
12337            }
12338        }
12339
12340        #[inline]
12341        unsafe fn decode(
12342            &mut self,
12343            decoder: &mut fidl::encoding::Decoder<'_, D>,
12344            offset: usize,
12345            _depth: fidl::encoding::Depth,
12346        ) -> fidl::Result<()> {
12347            decoder.debug_check_bounds::<Self>(offset);
12348            // Verify that padding bytes are zero.
12349            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
12350            let padval = unsafe { (ptr as *const u64).read_unaligned() };
12351            let mask = 0xffffffffffff0000u64;
12352            let maskedval = padval & mask;
12353            if maskedval != 0 {
12354                return Err(fidl::Error::NonZeroPadding {
12355                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
12356                });
12357            }
12358            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(48) };
12359            let padval = unsafe { (ptr as *const u64).read_unaligned() };
12360            let mask = 0xffffffffff000000u64;
12361            let maskedval = padval & mask;
12362            if maskedval != 0 {
12363                return Err(fidl::Error::NonZeroPadding {
12364                    padding_start: offset + 48 + ((mask as u64).trailing_zeros() / 8) as usize,
12365                });
12366            }
12367            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.ssid, decoder, offset + 0, _depth)?;
12368            fidl::decode!(
12369                fidl_fuchsia_wlan_common__common::BssType,
12370                D,
12371                &mut self.bss_type,
12372                decoder,
12373                offset + 16,
12374                _depth
12375            )?;
12376            fidl::decode!(u16, D, &mut self.beacon_period, decoder, offset + 20, _depth)?;
12377            fidl::decode!(u8, D, &mut self.dtim_period, decoder, offset + 22, _depth)?;
12378            fidl::decode!(u8, D, &mut self.channel, decoder, offset + 23, _depth)?;
12379            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 24, _depth)?;
12380            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 32, _depth)?;
12381            fidl::decode!(Country, D, &mut self.country, decoder, offset + 48, _depth)?;
12382            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.mesh_id, decoder, offset + 56, _depth)?;
12383            fidl::decode!(
12384                fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
12385                D,
12386                &mut self.rsne,
12387                decoder,
12388                offset + 72,
12389                _depth
12390            )?;
12391            fidl::decode!(
12392                fidl_fuchsia_wlan_common__common::WlanPhyType,
12393                D,
12394                &mut self.phy,
12395                decoder,
12396                offset + 88,
12397                _depth
12398            )?;
12399            fidl::decode!(
12400                fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth,
12401                D,
12402                &mut self.channel_bandwidth,
12403                decoder,
12404                offset + 92,
12405                _depth
12406            )?;
12407            Ok(())
12408        }
12409    }
12410
12411    impl fidl::encoding::ValueTypeMarker for StopConfirm {
12412        type Borrowed<'a> = &'a Self;
12413        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12414            value
12415        }
12416    }
12417
12418    unsafe impl fidl::encoding::TypeMarker for StopConfirm {
12419        type Owned = Self;
12420
12421        #[inline(always)]
12422        fn inline_align(_context: fidl::encoding::Context) -> usize {
12423            4
12424        }
12425
12426        #[inline(always)]
12427        fn inline_size(_context: fidl::encoding::Context) -> usize {
12428            4
12429        }
12430    }
12431
12432    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopConfirm, D>
12433        for &StopConfirm
12434    {
12435        #[inline]
12436        unsafe fn encode(
12437            self,
12438            encoder: &mut fidl::encoding::Encoder<'_, D>,
12439            offset: usize,
12440            _depth: fidl::encoding::Depth,
12441        ) -> fidl::Result<()> {
12442            encoder.debug_check_bounds::<StopConfirm>(offset);
12443            // Delegate to tuple encoding.
12444            fidl::encoding::Encode::<StopConfirm, D>::encode(
12445                (<StopResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),),
12446                encoder,
12447                offset,
12448                _depth,
12449            )
12450        }
12451    }
12452    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopResultCode, D>>
12453        fidl::encoding::Encode<StopConfirm, D> for (T0,)
12454    {
12455        #[inline]
12456        unsafe fn encode(
12457            self,
12458            encoder: &mut fidl::encoding::Encoder<'_, D>,
12459            offset: usize,
12460            depth: fidl::encoding::Depth,
12461        ) -> fidl::Result<()> {
12462            encoder.debug_check_bounds::<StopConfirm>(offset);
12463            // Zero out padding regions. There's no need to apply masks
12464            // because the unmasked parts will be overwritten by fields.
12465            // Write the fields.
12466            self.0.encode(encoder, offset + 0, depth)?;
12467            Ok(())
12468        }
12469    }
12470
12471    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopConfirm {
12472        #[inline(always)]
12473        fn new_empty() -> Self {
12474            Self { result_code: fidl::new_empty!(StopResultCode, D) }
12475        }
12476
12477        #[inline]
12478        unsafe fn decode(
12479            &mut self,
12480            decoder: &mut fidl::encoding::Decoder<'_, D>,
12481            offset: usize,
12482            _depth: fidl::encoding::Depth,
12483        ) -> fidl::Result<()> {
12484            decoder.debug_check_bounds::<Self>(offset);
12485            // Verify that padding bytes are zero.
12486            fidl::decode!(StopResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
12487            Ok(())
12488        }
12489    }
12490
12491    impl fidl::encoding::ValueTypeMarker for StopRequest {
12492        type Borrowed<'a> = &'a Self;
12493        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12494            value
12495        }
12496    }
12497
12498    unsafe impl fidl::encoding::TypeMarker for StopRequest {
12499        type Owned = Self;
12500
12501        #[inline(always)]
12502        fn inline_align(_context: fidl::encoding::Context) -> usize {
12503            8
12504        }
12505
12506        #[inline(always)]
12507        fn inline_size(_context: fidl::encoding::Context) -> usize {
12508            16
12509        }
12510    }
12511
12512    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopRequest, D>
12513        for &StopRequest
12514    {
12515        #[inline]
12516        unsafe fn encode(
12517            self,
12518            encoder: &mut fidl::encoding::Encoder<'_, D>,
12519            offset: usize,
12520            _depth: fidl::encoding::Depth,
12521        ) -> fidl::Result<()> {
12522            encoder.debug_check_bounds::<StopRequest>(offset);
12523            // Delegate to tuple encoding.
12524            fidl::encoding::Encode::<StopRequest, D>::encode(
12525                (<fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(
12526                    &self.ssid,
12527                ),),
12528                encoder,
12529                offset,
12530                _depth,
12531            )
12532        }
12533    }
12534    unsafe impl<
12535        D: fidl::encoding::ResourceDialect,
12536        T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
12537    > fidl::encoding::Encode<StopRequest, D> for (T0,)
12538    {
12539        #[inline]
12540        unsafe fn encode(
12541            self,
12542            encoder: &mut fidl::encoding::Encoder<'_, D>,
12543            offset: usize,
12544            depth: fidl::encoding::Depth,
12545        ) -> fidl::Result<()> {
12546            encoder.debug_check_bounds::<StopRequest>(offset);
12547            // Zero out padding regions. There's no need to apply masks
12548            // because the unmasked parts will be overwritten by fields.
12549            // Write the fields.
12550            self.0.encode(encoder, offset + 0, depth)?;
12551            Ok(())
12552        }
12553    }
12554
12555    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopRequest {
12556        #[inline(always)]
12557        fn new_empty() -> Self {
12558            Self { ssid: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D) }
12559        }
12560
12561        #[inline]
12562        unsafe fn decode(
12563            &mut self,
12564            decoder: &mut fidl::encoding::Decoder<'_, D>,
12565            offset: usize,
12566            _depth: fidl::encoding::Depth,
12567        ) -> fidl::Result<()> {
12568            decoder.debug_check_bounds::<Self>(offset);
12569            // Verify that padding bytes are zero.
12570            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.ssid, decoder, offset + 0, _depth)?;
12571            Ok(())
12572        }
12573    }
12574
12575    impl fidl::encoding::ValueTypeMarker for WmmParameter {
12576        type Borrowed<'a> = &'a Self;
12577        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12578            value
12579        }
12580    }
12581
12582    unsafe impl fidl::encoding::TypeMarker for WmmParameter {
12583        type Owned = Self;
12584
12585        #[inline(always)]
12586        fn inline_align(_context: fidl::encoding::Context) -> usize {
12587            1
12588        }
12589
12590        #[inline(always)]
12591        fn inline_size(_context: fidl::encoding::Context) -> usize {
12592            18
12593        }
12594        #[inline(always)]
12595        fn encode_is_copy() -> bool {
12596            true
12597        }
12598
12599        #[inline(always)]
12600        fn decode_is_copy() -> bool {
12601            true
12602        }
12603    }
12604
12605    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WmmParameter, D>
12606        for &WmmParameter
12607    {
12608        #[inline]
12609        unsafe fn encode(
12610            self,
12611            encoder: &mut fidl::encoding::Encoder<'_, D>,
12612            offset: usize,
12613            _depth: fidl::encoding::Depth,
12614        ) -> fidl::Result<()> {
12615            encoder.debug_check_bounds::<WmmParameter>(offset);
12616            unsafe {
12617                // Copy the object into the buffer.
12618                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
12619                (buf_ptr as *mut WmmParameter)
12620                    .write_unaligned((self as *const WmmParameter).read());
12621                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
12622                // done second because the memcpy will write garbage to these bytes.
12623            }
12624            Ok(())
12625        }
12626    }
12627    unsafe impl<
12628        D: fidl::encoding::ResourceDialect,
12629        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 18>, D>,
12630    > fidl::encoding::Encode<WmmParameter, D> for (T0,)
12631    {
12632        #[inline]
12633        unsafe fn encode(
12634            self,
12635            encoder: &mut fidl::encoding::Encoder<'_, D>,
12636            offset: usize,
12637            depth: fidl::encoding::Depth,
12638        ) -> fidl::Result<()> {
12639            encoder.debug_check_bounds::<WmmParameter>(offset);
12640            // Zero out padding regions. There's no need to apply masks
12641            // because the unmasked parts will be overwritten by fields.
12642            // Write the fields.
12643            self.0.encode(encoder, offset + 0, depth)?;
12644            Ok(())
12645        }
12646    }
12647
12648    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WmmParameter {
12649        #[inline(always)]
12650        fn new_empty() -> Self {
12651            Self { bytes: fidl::new_empty!(fidl::encoding::Array<u8, 18>, D) }
12652        }
12653
12654        #[inline]
12655        unsafe fn decode(
12656            &mut self,
12657            decoder: &mut fidl::encoding::Decoder<'_, D>,
12658            offset: usize,
12659            _depth: fidl::encoding::Depth,
12660        ) -> fidl::Result<()> {
12661            decoder.debug_check_bounds::<Self>(offset);
12662            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
12663            // Verify that padding bytes are zero.
12664            // Copy from the buffer into the object.
12665            unsafe {
12666                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 18);
12667            }
12668            Ok(())
12669        }
12670    }
12671
12672    impl fidl::encoding::ValueTypeMarker for GetIfaceHistogramStatsResponse {
12673        type Borrowed<'a> = &'a Self;
12674        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12675            value
12676        }
12677    }
12678
12679    unsafe impl fidl::encoding::TypeMarker for GetIfaceHistogramStatsResponse {
12680        type Owned = Self;
12681
12682        #[inline(always)]
12683        fn inline_align(_context: fidl::encoding::Context) -> usize {
12684            8
12685        }
12686
12687        #[inline(always)]
12688        fn inline_size(_context: fidl::encoding::Context) -> usize {
12689            16
12690        }
12691    }
12692
12693    unsafe impl<D: fidl::encoding::ResourceDialect>
12694        fidl::encoding::Encode<GetIfaceHistogramStatsResponse, D>
12695        for &GetIfaceHistogramStatsResponse
12696    {
12697        #[inline]
12698        unsafe fn encode(
12699            self,
12700            encoder: &mut fidl::encoding::Encoder<'_, D>,
12701            offset: usize,
12702            _depth: fidl::encoding::Depth,
12703        ) -> fidl::Result<()> {
12704            encoder.debug_check_bounds::<GetIfaceHistogramStatsResponse>(offset);
12705            encoder.write_num::<u64>(self.ordinal(), offset);
12706            match self {
12707            GetIfaceHistogramStatsResponse::Stats(ref val) => {
12708                fidl::encoding::encode_in_envelope::<fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D>(
12709                    <fidl_fuchsia_wlan_stats__common::IfaceHistogramStats as fidl::encoding::ValueTypeMarker>::borrow(val),
12710                    encoder, offset + 8, _depth
12711                )
12712            }
12713            GetIfaceHistogramStatsResponse::ErrorStatus(ref val) => {
12714                fidl::encoding::encode_in_envelope::<i32, D>(
12715                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
12716                    encoder, offset + 8, _depth
12717                )
12718            }
12719        }
12720        }
12721    }
12722
12723    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12724        for GetIfaceHistogramStatsResponse
12725    {
12726        #[inline(always)]
12727        fn new_empty() -> Self {
12728            Self::Stats(fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D))
12729        }
12730
12731        #[inline]
12732        unsafe fn decode(
12733            &mut self,
12734            decoder: &mut fidl::encoding::Decoder<'_, D>,
12735            offset: usize,
12736            mut depth: fidl::encoding::Depth,
12737        ) -> fidl::Result<()> {
12738            decoder.debug_check_bounds::<Self>(offset);
12739            #[allow(unused_variables)]
12740            let next_out_of_line = decoder.next_out_of_line();
12741            let handles_before = decoder.remaining_handles();
12742            let (ordinal, inlined, num_bytes, num_handles) =
12743                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12744
12745            let member_inline_size = match ordinal {
12746            1 => <fidl_fuchsia_wlan_stats__common::IfaceHistogramStats as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12747            2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12748            _ => return Err(fidl::Error::UnknownUnionTag),
12749        };
12750
12751            if inlined != (member_inline_size <= 4) {
12752                return Err(fidl::Error::InvalidInlineBitInEnvelope);
12753            }
12754            let _inner_offset;
12755            if inlined {
12756                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
12757                _inner_offset = offset + 8;
12758            } else {
12759                depth.increment()?;
12760                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12761            }
12762            match ordinal {
12763                1 => {
12764                    #[allow(irrefutable_let_patterns)]
12765                    if let GetIfaceHistogramStatsResponse::Stats(_) = self {
12766                        // Do nothing, read the value into the object
12767                    } else {
12768                        // Initialize `self` to the right variant
12769                        *self = GetIfaceHistogramStatsResponse::Stats(fidl::new_empty!(
12770                            fidl_fuchsia_wlan_stats__common::IfaceHistogramStats,
12771                            D
12772                        ));
12773                    }
12774                    #[allow(irrefutable_let_patterns)]
12775                    if let GetIfaceHistogramStatsResponse::Stats(ref mut val) = self {
12776                        fidl::decode!(
12777                            fidl_fuchsia_wlan_stats__common::IfaceHistogramStats,
12778                            D,
12779                            val,
12780                            decoder,
12781                            _inner_offset,
12782                            depth
12783                        )?;
12784                    } else {
12785                        unreachable!()
12786                    }
12787                }
12788                2 => {
12789                    #[allow(irrefutable_let_patterns)]
12790                    if let GetIfaceHistogramStatsResponse::ErrorStatus(_) = self {
12791                        // Do nothing, read the value into the object
12792                    } else {
12793                        // Initialize `self` to the right variant
12794                        *self =
12795                            GetIfaceHistogramStatsResponse::ErrorStatus(fidl::new_empty!(i32, D));
12796                    }
12797                    #[allow(irrefutable_let_patterns)]
12798                    if let GetIfaceHistogramStatsResponse::ErrorStatus(ref mut val) = self {
12799                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
12800                    } else {
12801                        unreachable!()
12802                    }
12803                }
12804                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12805            }
12806            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12807                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12808            }
12809            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12810                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12811            }
12812            Ok(())
12813        }
12814    }
12815
12816    impl fidl::encoding::ValueTypeMarker for GetIfaceStatsResponse {
12817        type Borrowed<'a> = &'a Self;
12818        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12819            value
12820        }
12821    }
12822
12823    unsafe impl fidl::encoding::TypeMarker for GetIfaceStatsResponse {
12824        type Owned = Self;
12825
12826        #[inline(always)]
12827        fn inline_align(_context: fidl::encoding::Context) -> usize {
12828            8
12829        }
12830
12831        #[inline(always)]
12832        fn inline_size(_context: fidl::encoding::Context) -> usize {
12833            16
12834        }
12835    }
12836
12837    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<GetIfaceStatsResponse, D>
12838        for &GetIfaceStatsResponse
12839    {
12840        #[inline]
12841        unsafe fn encode(
12842            self,
12843            encoder: &mut fidl::encoding::Encoder<'_, D>,
12844            offset: usize,
12845            _depth: fidl::encoding::Depth,
12846        ) -> fidl::Result<()> {
12847            encoder.debug_check_bounds::<GetIfaceStatsResponse>(offset);
12848            encoder.write_num::<u64>(self.ordinal(), offset);
12849            match self {
12850            GetIfaceStatsResponse::Stats(ref val) => {
12851                fidl::encoding::encode_in_envelope::<fidl_fuchsia_wlan_stats__common::IfaceStats, D>(
12852                    <fidl_fuchsia_wlan_stats__common::IfaceStats as fidl::encoding::ValueTypeMarker>::borrow(val),
12853                    encoder, offset + 8, _depth
12854                )
12855            }
12856            GetIfaceStatsResponse::ErrorStatus(ref val) => {
12857                fidl::encoding::encode_in_envelope::<i32, D>(
12858                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
12859                    encoder, offset + 8, _depth
12860                )
12861            }
12862        }
12863        }
12864    }
12865
12866    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GetIfaceStatsResponse {
12867        #[inline(always)]
12868        fn new_empty() -> Self {
12869            Self::Stats(fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceStats, D))
12870        }
12871
12872        #[inline]
12873        unsafe fn decode(
12874            &mut self,
12875            decoder: &mut fidl::encoding::Decoder<'_, D>,
12876            offset: usize,
12877            mut depth: fidl::encoding::Depth,
12878        ) -> fidl::Result<()> {
12879            decoder.debug_check_bounds::<Self>(offset);
12880            #[allow(unused_variables)]
12881            let next_out_of_line = decoder.next_out_of_line();
12882            let handles_before = decoder.remaining_handles();
12883            let (ordinal, inlined, num_bytes, num_handles) =
12884                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12885
12886            let member_inline_size = match ordinal {
12887            1 => <fidl_fuchsia_wlan_stats__common::IfaceStats as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12888            2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12889            _ => return Err(fidl::Error::UnknownUnionTag),
12890        };
12891
12892            if inlined != (member_inline_size <= 4) {
12893                return Err(fidl::Error::InvalidInlineBitInEnvelope);
12894            }
12895            let _inner_offset;
12896            if inlined {
12897                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
12898                _inner_offset = offset + 8;
12899            } else {
12900                depth.increment()?;
12901                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12902            }
12903            match ordinal {
12904                1 => {
12905                    #[allow(irrefutable_let_patterns)]
12906                    if let GetIfaceStatsResponse::Stats(_) = self {
12907                        // Do nothing, read the value into the object
12908                    } else {
12909                        // Initialize `self` to the right variant
12910                        *self = GetIfaceStatsResponse::Stats(fidl::new_empty!(
12911                            fidl_fuchsia_wlan_stats__common::IfaceStats,
12912                            D
12913                        ));
12914                    }
12915                    #[allow(irrefutable_let_patterns)]
12916                    if let GetIfaceStatsResponse::Stats(ref mut val) = self {
12917                        fidl::decode!(
12918                            fidl_fuchsia_wlan_stats__common::IfaceStats,
12919                            D,
12920                            val,
12921                            decoder,
12922                            _inner_offset,
12923                            depth
12924                        )?;
12925                    } else {
12926                        unreachable!()
12927                    }
12928                }
12929                2 => {
12930                    #[allow(irrefutable_let_patterns)]
12931                    if let GetIfaceStatsResponse::ErrorStatus(_) = self {
12932                        // Do nothing, read the value into the object
12933                    } else {
12934                        // Initialize `self` to the right variant
12935                        *self = GetIfaceStatsResponse::ErrorStatus(fidl::new_empty!(i32, D));
12936                    }
12937                    #[allow(irrefutable_let_patterns)]
12938                    if let GetIfaceStatsResponse::ErrorStatus(ref mut val) = self {
12939                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
12940                    } else {
12941                        unreachable!()
12942                    }
12943                }
12944                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12945            }
12946            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12947                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12948            }
12949            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12950                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12951            }
12952            Ok(())
12953        }
12954    }
12955}