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}
425
426impl fidl::Persistable for ConnectRequest {}
427
428#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
429#[repr(C)]
430pub struct Country {
431    pub alpha2: [u8; 2],
432    pub suffix: u8,
433}
434
435impl fidl::Persistable for Country {}
436
437#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
438#[repr(C)]
439pub struct DeauthenticateConfirm {
440    pub peer_sta_address: [u8; 6],
441}
442
443impl fidl::Persistable for DeauthenticateConfirm {}
444
445#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
446pub struct DeauthenticateIndication {
447    pub peer_sta_address: [u8; 6],
448    pub reason_code: fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
449    /// locally_initiated is true if deauth is initiated from the device,
450    /// and is false if it's initiated remotely (e.g. due to deauth frame)
451    pub locally_initiated: bool,
452}
453
454impl fidl::Persistable for DeauthenticateIndication {}
455
456#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
457pub struct DeauthenticateRequest {
458    pub peer_sta_address: [u8; 6],
459    pub reason_code: fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
460}
461
462impl fidl::Persistable for DeauthenticateRequest {}
463
464#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
465pub struct DeleteKeyDescriptor {
466    pub key_id: u16,
467    pub key_type: KeyType,
468    pub address: [u8; 6],
469}
470
471impl fidl::Persistable for DeleteKeyDescriptor {}
472
473#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
474pub struct DeleteKeysRequest {
475    pub keylist: Vec<DeleteKeyDescriptor>,
476}
477
478impl fidl::Persistable for DeleteKeysRequest {}
479
480#[derive(Clone, Debug, PartialEq)]
481pub struct DeviceInfo {
482    pub sta_addr: [u8; 6],
483    pub role: fidl_fuchsia_wlan_common__common::WlanMacRole,
484    pub bands: Vec<BandCapability>,
485    pub softmac_hardware_capability: u32,
486    pub qos_capable: bool,
487}
488
489impl fidl::Persistable for DeviceInfo {}
490
491#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
492#[repr(C)]
493pub struct DisassociateConfirm {
494    pub status: i32,
495}
496
497impl fidl::Persistable for DisassociateConfirm {}
498
499#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
500pub struct DisassociateIndication {
501    pub peer_sta_address: [u8; 6],
502    pub reason_code: fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
503    /// locally_initiated is true if diassoc is initiated from the device,
504    /// and is false if it's initiated remotely (e.g. due to disassoc frame)
505    pub locally_initiated: bool,
506}
507
508impl fidl::Persistable for DisassociateIndication {}
509
510#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
511pub struct DisassociateRequest {
512    pub peer_sta_address: [u8; 6],
513    pub reason_code: fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
514}
515
516impl fidl::Persistable for DisassociateRequest {}
517
518#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
519pub struct EapolConfirm {
520    pub result_code: EapolResultCode,
521    /// This value corresponds to the dst_addr in the EapolRequest we're confirming.
522    /// IEEE 802.11-2016 does not include this field, but we need it to disambiguate
523    /// if multiple EAPoL handshakes are ongoing.
524    pub dst_addr: [u8; 6],
525}
526
527impl fidl::Persistable for EapolConfirm {}
528
529#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
530pub struct EapolIndication {
531    pub src_addr: [u8; 6],
532    pub dst_addr: [u8; 6],
533    pub data: Vec<u8>,
534}
535
536impl fidl::Persistable for EapolIndication {}
537
538#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
539pub struct EapolRequest {
540    pub src_addr: [u8; 6],
541    pub dst_addr: [u8; 6],
542    pub data: Vec<u8>,
543}
544
545impl fidl::Persistable for EapolRequest {}
546
547#[derive(Clone, Debug, PartialEq)]
548pub struct MlmeQueryTelemetrySupportResponse {
549    pub resp: fidl_fuchsia_wlan_stats__common::TelemetrySupport,
550}
551
552impl fidl::Persistable for MlmeQueryTelemetrySupportResponse {}
553
554#[derive(Clone, Debug, PartialEq)]
555pub struct MinstrelListResponse {
556    pub peers: fidl_fuchsia_wlan_minstrel__common::Peers,
557}
558
559impl fidl::Persistable for MinstrelListResponse {}
560
561#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
562#[repr(C)]
563pub struct MinstrelStatsRequest {
564    pub peer_addr: [u8; 6],
565}
566
567impl fidl::Persistable for MinstrelStatsRequest {}
568
569#[derive(Clone, Debug, PartialEq)]
570pub struct MinstrelStatsResponse {
571    pub peer: Option<Box<fidl_fuchsia_wlan_minstrel__common::Peer>>,
572}
573
574impl fidl::Persistable for MinstrelStatsResponse {}
575
576#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
577pub struct MlmeAssociateIndRequest {
578    pub ind: AssociateIndication,
579}
580
581impl fidl::Persistable for MlmeAssociateIndRequest {}
582
583#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
584pub struct MlmeAssociateRespRequest {
585    pub resp: AssociateResponse,
586}
587
588impl fidl::Persistable for MlmeAssociateRespRequest {}
589
590#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
591pub struct MlmeAuthenticateIndRequest {
592    pub ind: AuthenticateIndication,
593}
594
595impl fidl::Persistable for MlmeAuthenticateIndRequest {}
596
597#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
598pub struct MlmeAuthenticateRespRequest {
599    pub resp: AuthenticateResponse,
600}
601
602impl fidl::Persistable for MlmeAuthenticateRespRequest {}
603
604#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
605pub struct MlmeConnectConfRequest {
606    pub resp: ConnectConfirm,
607}
608
609impl fidl::Persistable for MlmeConnectConfRequest {}
610
611#[derive(Clone, Debug, PartialEq)]
612pub struct MlmeConnectReqRequest {
613    pub req: ConnectRequest,
614}
615
616impl fidl::Persistable for MlmeConnectReqRequest {}
617
618#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
619#[repr(C)]
620pub struct MlmeDeauthenticateConfRequest {
621    pub resp: DeauthenticateConfirm,
622}
623
624impl fidl::Persistable for MlmeDeauthenticateConfRequest {}
625
626#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
627pub struct MlmeDeauthenticateIndRequest {
628    pub ind: DeauthenticateIndication,
629}
630
631impl fidl::Persistable for MlmeDeauthenticateIndRequest {}
632
633#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
634pub struct MlmeDeauthenticateReqRequest {
635    pub req: DeauthenticateRequest,
636}
637
638impl fidl::Persistable for MlmeDeauthenticateReqRequest {}
639
640#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
641pub struct MlmeDeleteKeysReqRequest {
642    pub req: DeleteKeysRequest,
643}
644
645impl fidl::Persistable for MlmeDeleteKeysReqRequest {}
646
647#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
648#[repr(C)]
649pub struct MlmeDisassociateConfRequest {
650    pub resp: DisassociateConfirm,
651}
652
653impl fidl::Persistable for MlmeDisassociateConfRequest {}
654
655#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
656pub struct MlmeDisassociateIndRequest {
657    pub ind: DisassociateIndication,
658}
659
660impl fidl::Persistable for MlmeDisassociateIndRequest {}
661
662#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
663pub struct MlmeDisassociateReqRequest {
664    pub req: DisassociateRequest,
665}
666
667impl fidl::Persistable for MlmeDisassociateReqRequest {}
668
669#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
670pub struct MlmeEapolConfRequest {
671    pub resp: EapolConfirm,
672}
673
674impl fidl::Persistable for MlmeEapolConfRequest {}
675
676#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
677pub struct MlmeEapolIndRequest {
678    pub ind: EapolIndication,
679}
680
681impl fidl::Persistable for MlmeEapolIndRequest {}
682
683#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
684pub struct MlmeEapolReqRequest {
685    pub req: EapolRequest,
686}
687
688impl fidl::Persistable for MlmeEapolReqRequest {}
689
690#[derive(Clone, Debug, PartialEq)]
691pub struct MlmeFinalizeAssociationReqRequest {
692    pub negotiated_capabilities: NegotiatedCapabilities,
693}
694
695impl fidl::Persistable for MlmeFinalizeAssociationReqRequest {}
696
697#[derive(Clone, Debug, PartialEq)]
698pub struct MlmeGetIfaceHistogramStatsResponse {
699    pub resp: GetIfaceHistogramStatsResponse,
700}
701
702impl fidl::Persistable for MlmeGetIfaceHistogramStatsResponse {}
703
704#[derive(Clone, Debug, PartialEq)]
705pub struct MlmeGetIfaceStatsResponse {
706    pub resp: GetIfaceStatsResponse,
707}
708
709impl fidl::Persistable for MlmeGetIfaceStatsResponse {}
710
711#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
712#[repr(C)]
713pub struct MlmeGetMinstrelStatsRequest {
714    pub req: MinstrelStatsRequest,
715}
716
717impl fidl::Persistable for MlmeGetMinstrelStatsRequest {}
718
719#[derive(Clone, Debug, PartialEq)]
720pub struct MlmeGetMinstrelStatsResponse {
721    pub resp: MinstrelStatsResponse,
722}
723
724impl fidl::Persistable for MlmeGetMinstrelStatsResponse {}
725
726#[derive(Clone, Debug, PartialEq)]
727pub struct MlmeListMinstrelPeersResponse {
728    pub resp: MinstrelListResponse,
729}
730
731impl fidl::Persistable for MlmeListMinstrelPeersResponse {}
732
733#[derive(Clone, Debug, PartialEq)]
734pub struct MlmeOnChannelSwitchedRequest {
735    pub info: fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo,
736}
737
738impl fidl::Persistable for MlmeOnChannelSwitchedRequest {}
739
740#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
741pub struct MlmeOnPmkAvailableRequest {
742    pub info: PmkInfo,
743}
744
745impl fidl::Persistable for MlmeOnPmkAvailableRequest {}
746
747#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
748pub struct MlmeOnSaeFrameRxRequest {
749    pub frame: SaeFrame,
750}
751
752impl fidl::Persistable for MlmeOnSaeFrameRxRequest {}
753
754#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
755#[repr(C)]
756pub struct MlmeOnSaeHandshakeIndRequest {
757    pub ind: SaeHandshakeIndication,
758}
759
760impl fidl::Persistable for MlmeOnSaeHandshakeIndRequest {}
761
762#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
763pub struct MlmeOnScanEndRequest {
764    pub end: ScanEnd,
765}
766
767impl fidl::Persistable for MlmeOnScanEndRequest {}
768
769#[derive(Clone, Debug, PartialEq)]
770pub struct MlmeOnScanResultRequest {
771    pub result: ScanResult,
772}
773
774impl fidl::Persistable for MlmeOnScanResultRequest {}
775
776#[derive(Clone, Debug, PartialEq)]
777pub struct MlmeOnWmmStatusRespRequest {
778    pub status: i32,
779    pub resp: fidl_fuchsia_wlan_internal__common::WmmStatusResponse,
780}
781
782impl fidl::Persistable for MlmeOnWmmStatusRespRequest {}
783
784#[derive(Clone, Debug, PartialEq)]
785pub struct MlmeQueryDeviceInfoResponse {
786    pub info: DeviceInfo,
787}
788
789impl fidl::Persistable for MlmeQueryDeviceInfoResponse {}
790
791#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
792#[repr(C)]
793pub struct MlmeReconnectReqRequest {
794    pub req: ReconnectRequest,
795}
796
797impl fidl::Persistable for MlmeReconnectReqRequest {}
798
799#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
800pub struct MlmeRelayCapturedFrameRequest {
801    pub result: CapturedFrameResult,
802}
803
804impl fidl::Persistable for MlmeRelayCapturedFrameRequest {}
805
806#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
807pub struct MlmeResetReqRequest {
808    pub req: ResetRequest,
809}
810
811impl fidl::Persistable for MlmeResetReqRequest {}
812
813#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
814pub struct MlmeRoamConfRequest {
815    pub conf: RoamConfirm,
816}
817
818impl fidl::Persistable for MlmeRoamConfRequest {}
819
820#[derive(Clone, Debug, PartialEq)]
821pub struct MlmeRoamReqRequest {
822    pub req: RoamRequest,
823}
824
825impl fidl::Persistable for MlmeRoamReqRequest {}
826
827#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
828pub struct MlmeRoamResultIndRequest {
829    pub ind: RoamResultIndication,
830}
831
832impl fidl::Persistable for MlmeRoamResultIndRequest {}
833
834#[derive(Clone, Debug, PartialEq)]
835pub struct MlmeRoamStartIndRequest {
836    pub ind: RoamStartIndication,
837}
838
839impl fidl::Persistable for MlmeRoamStartIndRequest {}
840
841#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
842pub struct MlmeSaeFrameTxRequest {
843    pub frame: SaeFrame,
844}
845
846impl fidl::Persistable for MlmeSaeFrameTxRequest {}
847
848#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
849pub struct MlmeSaeHandshakeRespRequest {
850    pub resp: SaeHandshakeResponse,
851}
852
853impl fidl::Persistable for MlmeSaeHandshakeRespRequest {}
854
855#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
856pub struct MlmeSetControlledPortRequest {
857    pub req: SetControlledPortRequest,
858}
859
860impl fidl::Persistable for MlmeSetControlledPortRequest {}
861
862#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
863pub struct MlmeSetKeysConfRequest {
864    pub conf: SetKeysConfirm,
865}
866
867impl fidl::Persistable for MlmeSetKeysConfRequest {}
868
869#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
870pub struct MlmeSetKeysReqRequest {
871    pub req: SetKeysRequest,
872}
873
874impl fidl::Persistable for MlmeSetKeysReqRequest {}
875
876#[derive(Clone, Debug, PartialEq)]
877pub struct MlmeSignalReportRequest {
878    pub ind: fidl_fuchsia_wlan_internal__common::SignalReportIndication,
879}
880
881impl fidl::Persistable for MlmeSignalReportRequest {}
882
883#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
884pub struct MlmeStartCaptureFramesRequest {
885    pub req: StartCaptureFramesRequest,
886}
887
888impl fidl::Persistable for MlmeStartCaptureFramesRequest {}
889
890#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
891pub struct MlmeStartCaptureFramesResponse {
892    pub resp: StartCaptureFramesResponse,
893}
894
895impl fidl::Persistable for MlmeStartCaptureFramesResponse {}
896
897#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
898pub struct MlmeStartConfRequest {
899    pub resp: StartConfirm,
900}
901
902impl fidl::Persistable for MlmeStartConfRequest {}
903
904#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
905pub struct MlmeStartReqRequest {
906    pub req: StartRequest,
907}
908
909impl fidl::Persistable for MlmeStartReqRequest {}
910
911#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
912pub struct MlmeStartScanRequest {
913    pub req: ScanRequest,
914}
915
916impl fidl::Persistable for MlmeStartScanRequest {}
917
918#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
919pub struct MlmeStopConfRequest {
920    pub resp: StopConfirm,
921}
922
923impl fidl::Persistable for MlmeStopConfRequest {}
924
925#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
926pub struct MlmeStopReqRequest {
927    pub req: StopRequest,
928}
929
930impl fidl::Persistable for MlmeStopReqRequest {}
931
932/// Non-IEEE custom structure to inform a SoftMAC device about the association negotiation outcome.
933#[derive(Clone, Debug, PartialEq)]
934pub struct NegotiatedCapabilities {
935    pub channel: fidl_fuchsia_wlan_common__common::WlanChannel,
936    pub capability_info: u16,
937    pub rates: Vec<u8>,
938    pub wmm_param: Option<Box<WmmParameter>>,
939    pub ht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>>,
940    pub vht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>>,
941}
942
943impl fidl::Persistable for NegotiatedCapabilities {}
944
945#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
946pub struct PmkInfo {
947    pub pmk: Vec<u8>,
948    pub pmkid: Vec<u8>,
949}
950
951impl fidl::Persistable for PmkInfo {}
952
953#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
954#[repr(C)]
955pub struct ReconnectRequest {
956    pub peer_sta_address: [u8; 6],
957}
958
959impl fidl::Persistable for ReconnectRequest {}
960
961#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
962pub struct ResetRequest {
963    pub sta_address: [u8; 6],
964    pub set_default_mib: bool,
965}
966
967impl fidl::Persistable for ResetRequest {}
968
969/// Result of an SME-initiated roam attempt.
970#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
971pub struct RoamConfirm {
972    pub selected_bssid: [u8; 6],
973    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
974    /// Whether the original BSS association has been maintained through the roam attempt.
975    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
976    /// success then this field must be set to false; a roam failure typically incurs disassociation
977    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
978    pub original_association_maintained: bool,
979    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
980    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
981    /// This allows higher layers to decide how to clean up connection state after a failed roam
982    /// attempt.
983    pub target_bss_authenticated: bool,
984    pub association_id: u16,
985    pub association_ies: Vec<u8>,
986}
987
988impl fidl::Persistable for RoamConfirm {}
989
990#[derive(Clone, Debug, PartialEq)]
991pub struct RoamRequest {
992    pub selected_bss: fidl_fuchsia_wlan_common__common::BssDescription,
993}
994
995impl fidl::Persistable for RoamRequest {}
996
997/// Result of a fullmac-initiated roam attempt.
998#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
999pub struct RoamResultIndication {
1000    pub selected_bssid: [u8; 6],
1001    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
1002    /// Whether the original BSS association has been maintained through the roam attempt.
1003    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1004    /// success then this field must be set to false; a roam failure typically incurs disassociation
1005    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1006    pub original_association_maintained: bool,
1007    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1008    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1009    /// This allows higher layers to decide how to clean up connection state after a failed roam
1010    /// attempt.
1011    pub target_bss_authenticated: bool,
1012    pub association_id: u16,
1013    pub association_ies: Vec<u8>,
1014}
1015
1016impl fidl::Persistable for RoamResultIndication {}
1017
1018/// In-progress fullmac-initiated roam attempt details.
1019#[derive(Clone, Debug, PartialEq)]
1020pub struct RoamStartIndication {
1021    pub selected_bssid: [u8; 6],
1022    pub selected_bss: fidl_fuchsia_wlan_common__common::BssDescription,
1023    /// Whether the original BSS association has been maintained at the start of a roam attempt.
1024    /// 802.11 dictates that a STA can only be associated with a single BSS, so a roam attempt
1025    /// typically incurs disassociation at the start of the roam attempt. However, 802.11 also
1026    /// provides a mechanism (i.e. Fast BSS Transition) that allows a device to maintain
1027    /// association with the original BSS while establishing authentication with the target BSS, in
1028    /// order to avoid losing the original association if authentication with the target BSS fails.
1029    pub original_association_maintained: bool,
1030}
1031
1032impl fidl::Persistable for RoamStartIndication {}
1033
1034#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1035pub struct SaeFrame {
1036    pub peer_sta_address: [u8; 6],
1037    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
1038    pub seq_num: u16,
1039    pub sae_fields: Vec<u8>,
1040}
1041
1042impl fidl::Persistable for SaeFrame {}
1043
1044#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1045#[repr(C)]
1046pub struct SaeHandshakeIndication {
1047    pub peer_sta_address: [u8; 6],
1048}
1049
1050impl fidl::Persistable for SaeHandshakeIndication {}
1051
1052#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1053pub struct SaeHandshakeResponse {
1054    pub peer_sta_address: [u8; 6],
1055    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
1056}
1057
1058impl fidl::Persistable for SaeHandshakeResponse {}
1059
1060#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1061pub struct ScanEnd {
1062    pub txn_id: u64,
1063    pub code: ScanResultCode,
1064}
1065
1066impl fidl::Persistable for ScanEnd {}
1067
1068#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1069pub struct ScanRequest {
1070    pub txn_id: u64,
1071    pub scan_type: ScanTypes,
1072    /// List of channels to scan on. An empty list of channels will cause a
1073    /// scan request to immediately return a ScanEnd with code INVALID_ARGS.
1074    ///
1075    /// Invalid channel numbers will be silently ignored. The validity of a channel
1076    /// number depends on the current regulatory region, and MLME does not control
1077    /// or know this setting.
1078    pub channel_list: Vec<u8>,
1079    /// List of SSIDs to scan for. An empty list of ssids is the same as specifying
1080    /// a list containing only the wildcard SSID.
1081    ///
1082    /// There is no limit on the number of SSIDs specified. A large number of
1083    /// SSIDs may result in extended scan times because of hardware limitations on
1084    /// the number of SSIDs permitted per scan request and the technical limitation
1085    /// in IEEE 802.11-2016 that limits the number of SSIDs in a single Probe Request
1086    /// frame to ieee80211.SSID_LIST_MAX SSIDs.
1087    pub ssid_list: Vec<Vec<u8>>,
1088    pub probe_delay: u32,
1089    pub min_channel_time: u32,
1090    pub max_channel_time: u32,
1091}
1092
1093impl fidl::Persistable for ScanRequest {}
1094
1095#[derive(Clone, Debug, PartialEq)]
1096pub struct ScanResult {
1097    pub txn_id: u64,
1098    pub timestamp_nanos: i64,
1099    pub bss: fidl_fuchsia_wlan_common__common::BssDescription,
1100}
1101
1102impl fidl::Persistable for ScanResult {}
1103
1104#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1105pub struct SetControlledPortRequest {
1106    pub peer_sta_address: [u8; 6],
1107    pub state: ControlledPortState,
1108}
1109
1110impl fidl::Persistable for SetControlledPortRequest {}
1111
1112#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1113pub struct SetKeyDescriptor {
1114    pub key: Vec<u8>,
1115    pub key_id: u16,
1116    pub key_type: KeyType,
1117    pub address: [u8; 6],
1118    pub rsc: u64,
1119    pub cipher_suite_oui: [u8; 3],
1120    pub cipher_suite_type: fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
1121}
1122
1123impl fidl::Persistable for SetKeyDescriptor {}
1124
1125#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1126#[repr(C)]
1127pub struct SetKeyResult {
1128    pub key_id: u16,
1129    pub status: i32,
1130}
1131
1132impl fidl::Persistable for SetKeyResult {}
1133
1134#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1135pub struct SetKeysConfirm {
1136    pub results: Vec<SetKeyResult>,
1137}
1138
1139impl fidl::Persistable for SetKeysConfirm {}
1140
1141#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1142pub struct SetKeysRequest {
1143    pub keylist: Vec<SetKeyDescriptor>,
1144}
1145
1146impl fidl::Persistable for SetKeysRequest {}
1147
1148#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1149pub struct StartCaptureFramesRequest {
1150    pub mgmt_frame_flags: MgmtFrameCaptureFlags,
1151}
1152
1153impl fidl::Persistable for StartCaptureFramesRequest {}
1154
1155#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1156pub struct StartCaptureFramesResponse {
1157    pub status: i32,
1158    pub supported_mgmt_frames: MgmtFrameCaptureFlags,
1159}
1160
1161impl fidl::Persistable for StartCaptureFramesResponse {}
1162
1163#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1164pub struct StartConfirm {
1165    pub result_code: StartResultCode,
1166}
1167
1168impl fidl::Persistable for StartConfirm {}
1169
1170#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1171pub struct StartRequest {
1172    pub ssid: Vec<u8>,
1173    pub bss_type: fidl_fuchsia_wlan_common__common::BssType,
1174    pub beacon_period: u16,
1175    pub dtim_period: u8,
1176    pub channel: u8,
1177    pub capability_info: u16,
1178    pub rates: Vec<u8>,
1179    pub country: Country,
1180    pub mesh_id: Vec<u8>,
1181    pub rsne: Option<Vec<u8>>,
1182    pub phy: fidl_fuchsia_wlan_common__common::WlanPhyType,
1183    pub channel_bandwidth: fidl_fuchsia_wlan_common__common::ChannelBandwidth,
1184}
1185
1186impl fidl::Persistable for StartRequest {}
1187
1188#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1189pub struct StopConfirm {
1190    pub result_code: StopResultCode,
1191}
1192
1193impl fidl::Persistable for StopConfirm {}
1194
1195#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1196pub struct StopRequest {
1197    pub ssid: Vec<u8>,
1198}
1199
1200impl fidl::Persistable for StopRequest {}
1201
1202#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1203#[repr(C)]
1204pub struct WmmParameter {
1205    pub bytes: [u8; 18],
1206}
1207
1208impl fidl::Persistable for WmmParameter {}
1209
1210#[derive(Clone, Debug, PartialEq)]
1211pub enum GetIfaceHistogramStatsResponse {
1212    Stats(fidl_fuchsia_wlan_stats__common::IfaceHistogramStats),
1213    ErrorStatus(i32),
1214}
1215
1216impl GetIfaceHistogramStatsResponse {
1217    #[inline]
1218    pub fn ordinal(&self) -> u64 {
1219        match *self {
1220            Self::Stats(_) => 1,
1221            Self::ErrorStatus(_) => 2,
1222        }
1223    }
1224}
1225
1226impl fidl::Persistable for GetIfaceHistogramStatsResponse {}
1227
1228#[derive(Clone, Debug, PartialEq)]
1229pub enum GetIfaceStatsResponse {
1230    Stats(fidl_fuchsia_wlan_stats__common::IfaceStats),
1231    ErrorStatus(i32),
1232}
1233
1234impl GetIfaceStatsResponse {
1235    #[inline]
1236    pub fn ordinal(&self) -> u64 {
1237        match *self {
1238            Self::Stats(_) => 1,
1239            Self::ErrorStatus(_) => 2,
1240        }
1241    }
1242}
1243
1244impl fidl::Persistable for GetIfaceStatsResponse {}
1245
1246pub mod connector_ordinals {
1247    pub const CONNECT: u64 = 0x42131859717af962;
1248}
1249
1250pub mod mlme_ordinals {
1251    pub const START_SCAN: u64 = 0x342cc5ec6a957479;
1252    pub const ON_SCAN_RESULT: u64 = 0x681af7466a75074d;
1253    pub const ON_SCAN_END: u64 = 0x7f2702d253e7ca59;
1254    pub const CONNECT_REQ: u64 = 0x31153dc85f8f64c;
1255    pub const CONNECT_CONF: u64 = 0x77b27623279b981e;
1256    pub const RECONNECT_REQ: u64 = 0x74e0f1bd758b6b78;
1257    pub const ROAM_REQ: u64 = 0x3ba163eadf7dba45;
1258    pub const ROAM_CONF: u64 = 0x3f608034faa054bc;
1259    pub const ROAM_START_IND: u64 = 0x270a1ec78672d094;
1260    pub const ROAM_RESULT_IND: u64 = 0x26d074364fc84865;
1261    pub const AUTHENTICATE_IND: u64 = 0x460f49ae891adbe9;
1262    pub const AUTHENTICATE_RESP: u64 = 0x26108aade2fdd2f4;
1263    pub const DEAUTHENTICATE_REQ: u64 = 0x228983b200de5d12;
1264    pub const DEAUTHENTICATE_CONF: u64 = 0x3b44debc21b88c8c;
1265    pub const DEAUTHENTICATE_IND: u64 = 0x7ee0889b326da1d7;
1266    pub const ASSOCIATE_IND: u64 = 0x6a86f20e3063dd63;
1267    pub const ASSOCIATE_RESP: u64 = 0x70244dbd652ed6d9;
1268    pub const DISASSOCIATE_REQ: u64 = 0x5765807f1387d764;
1269    pub const DISASSOCIATE_CONF: u64 = 0x61345fbce732a28d;
1270    pub const DISASSOCIATE_IND: u64 = 0x77ac0ebf387c1f35;
1271    pub const RESET_REQ: u64 = 0x780b98c58a286b9f;
1272    pub const START_REQ: u64 = 0x5d95885f8053654;
1273    pub const START_CONF: u64 = 0x15ea6cdf3b8382b3;
1274    pub const STOP_REQ: u64 = 0x27b9a2ab04a2c79f;
1275    pub const STOP_CONF: u64 = 0x50b426ef4a84a2df;
1276    pub const SET_KEYS_REQ: u64 = 0x6b30a07fd3a11a79;
1277    pub const SET_KEYS_CONF: u64 = 0x5bafb3a8d4039380;
1278    pub const DELETE_KEYS_REQ: u64 = 0x1e3524d20d190c8f;
1279    pub const EAPOL_REQ: u64 = 0xc3c096924704d4;
1280    pub const EAPOL_CONF: u64 = 0x6ffa21f4ee73ce64;
1281    pub const SIGNAL_REPORT: u64 = 0x48f32a876aa53d8f;
1282    pub const EAPOL_IND: u64 = 0x7038dca46a3142fc;
1283    pub const SET_CONTROLLED_PORT: u64 = 0x4e47065668890c8d;
1284    pub const QUERY_DEVICE_INFO: u64 = 0x6ee3e7f63f2b7bc0;
1285    pub const QUERY_TELEMETRY_SUPPORT: u64 = 0x1598879b70332c99;
1286    pub const GET_IFACE_STATS: u64 = 0xede1a8342d1b211;
1287    pub const GET_IFACE_HISTOGRAM_STATS: u64 = 0x1979c9d3449f8675;
1288    pub const LIST_MINSTREL_PEERS: u64 = 0x4ac5d1e66fe1ffd5;
1289    pub const GET_MINSTREL_STATS: u64 = 0x2f688b1245323f4b;
1290    pub const START_CAPTURE_FRAMES: u64 = 0x23b369ed5749ee69;
1291    pub const STOP_CAPTURE_FRAMES: u64 = 0x2f1aebbc68bf7c54;
1292    pub const RELAY_CAPTURED_FRAME: u64 = 0x6f00a6f3cff9b1f5;
1293    pub const ON_CHANNEL_SWITCHED: u64 = 0x581750594e4c0c1;
1294    pub const ON_PMK_AVAILABLE: u64 = 0x1314fc2c79643f90;
1295    pub const ON_SAE_HANDSHAKE_IND: u64 = 0x6308b10e18986d7e;
1296    pub const SAE_HANDSHAKE_RESP: u64 = 0x28477bd2f7a5ab0c;
1297    pub const SAE_FRAME_TX: u64 = 0x7700c0d536733d8c;
1298    pub const ON_SAE_FRAME_RX: u64 = 0x4ebf51c86ef5f3cd;
1299    pub const WMM_STATUS_REQ: u64 = 0xef4851f6088fede;
1300    pub const ON_WMM_STATUS_RESP: u64 = 0x53f056b432e7b5cb;
1301    pub const FINALIZE_ASSOCIATION_REQ: u64 = 0x7aea59787cfd385a;
1302}
1303
1304mod internal {
1305    use super::*;
1306    unsafe impl fidl::encoding::TypeMarker for MgmtFrameCaptureFlags {
1307        type Owned = Self;
1308
1309        #[inline(always)]
1310        fn inline_align(_context: fidl::encoding::Context) -> usize {
1311            4
1312        }
1313
1314        #[inline(always)]
1315        fn inline_size(_context: fidl::encoding::Context) -> usize {
1316            4
1317        }
1318    }
1319
1320    impl fidl::encoding::ValueTypeMarker for MgmtFrameCaptureFlags {
1321        type Borrowed<'a> = Self;
1322        #[inline(always)]
1323        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1324            *value
1325        }
1326    }
1327
1328    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1329        for MgmtFrameCaptureFlags
1330    {
1331        #[inline]
1332        unsafe fn encode(
1333            self,
1334            encoder: &mut fidl::encoding::Encoder<'_, D>,
1335            offset: usize,
1336            _depth: fidl::encoding::Depth,
1337        ) -> fidl::Result<()> {
1338            encoder.debug_check_bounds::<Self>(offset);
1339            if self.bits() & Self::all().bits() != self.bits() {
1340                return Err(fidl::Error::InvalidBitsValue);
1341            }
1342            encoder.write_num(self.bits(), offset);
1343            Ok(())
1344        }
1345    }
1346
1347    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MgmtFrameCaptureFlags {
1348        #[inline(always)]
1349        fn new_empty() -> Self {
1350            Self::empty()
1351        }
1352
1353        #[inline]
1354        unsafe fn decode(
1355            &mut self,
1356            decoder: &mut fidl::encoding::Decoder<'_, D>,
1357            offset: usize,
1358            _depth: fidl::encoding::Depth,
1359        ) -> fidl::Result<()> {
1360            decoder.debug_check_bounds::<Self>(offset);
1361            let prim = decoder.read_num::<u32>(offset);
1362            *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
1363            Ok(())
1364        }
1365    }
1366    unsafe impl fidl::encoding::TypeMarker for AssociateResultCode {
1367        type Owned = Self;
1368
1369        #[inline(always)]
1370        fn inline_align(_context: fidl::encoding::Context) -> usize {
1371            std::mem::align_of::<u32>()
1372        }
1373
1374        #[inline(always)]
1375        fn inline_size(_context: fidl::encoding::Context) -> usize {
1376            std::mem::size_of::<u32>()
1377        }
1378
1379        #[inline(always)]
1380        fn encode_is_copy() -> bool {
1381            true
1382        }
1383
1384        #[inline(always)]
1385        fn decode_is_copy() -> bool {
1386            false
1387        }
1388    }
1389
1390    impl fidl::encoding::ValueTypeMarker for AssociateResultCode {
1391        type Borrowed<'a> = Self;
1392        #[inline(always)]
1393        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1394            *value
1395        }
1396    }
1397
1398    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1399        for AssociateResultCode
1400    {
1401        #[inline]
1402        unsafe fn encode(
1403            self,
1404            encoder: &mut fidl::encoding::Encoder<'_, D>,
1405            offset: usize,
1406            _depth: fidl::encoding::Depth,
1407        ) -> fidl::Result<()> {
1408            encoder.debug_check_bounds::<Self>(offset);
1409            encoder.write_num(self.into_primitive(), offset);
1410            Ok(())
1411        }
1412    }
1413
1414    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateResultCode {
1415        #[inline(always)]
1416        fn new_empty() -> Self {
1417            Self::Success
1418        }
1419
1420        #[inline]
1421        unsafe fn decode(
1422            &mut self,
1423            decoder: &mut fidl::encoding::Decoder<'_, D>,
1424            offset: usize,
1425            _depth: fidl::encoding::Depth,
1426        ) -> fidl::Result<()> {
1427            decoder.debug_check_bounds::<Self>(offset);
1428            let prim = decoder.read_num::<u32>(offset);
1429
1430            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1431            Ok(())
1432        }
1433    }
1434    unsafe impl fidl::encoding::TypeMarker for AuthenticateResultCode {
1435        type Owned = Self;
1436
1437        #[inline(always)]
1438        fn inline_align(_context: fidl::encoding::Context) -> usize {
1439            std::mem::align_of::<u32>()
1440        }
1441
1442        #[inline(always)]
1443        fn inline_size(_context: fidl::encoding::Context) -> usize {
1444            std::mem::size_of::<u32>()
1445        }
1446
1447        #[inline(always)]
1448        fn encode_is_copy() -> bool {
1449            true
1450        }
1451
1452        #[inline(always)]
1453        fn decode_is_copy() -> bool {
1454            false
1455        }
1456    }
1457
1458    impl fidl::encoding::ValueTypeMarker for AuthenticateResultCode {
1459        type Borrowed<'a> = Self;
1460        #[inline(always)]
1461        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1462            *value
1463        }
1464    }
1465
1466    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1467        for AuthenticateResultCode
1468    {
1469        #[inline]
1470        unsafe fn encode(
1471            self,
1472            encoder: &mut fidl::encoding::Encoder<'_, D>,
1473            offset: usize,
1474            _depth: fidl::encoding::Depth,
1475        ) -> fidl::Result<()> {
1476            encoder.debug_check_bounds::<Self>(offset);
1477            encoder.write_num(self.into_primitive(), offset);
1478            Ok(())
1479        }
1480    }
1481
1482    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1483        for AuthenticateResultCode
1484    {
1485        #[inline(always)]
1486        fn new_empty() -> Self {
1487            Self::Success
1488        }
1489
1490        #[inline]
1491        unsafe fn decode(
1492            &mut self,
1493            decoder: &mut fidl::encoding::Decoder<'_, D>,
1494            offset: usize,
1495            _depth: fidl::encoding::Depth,
1496        ) -> fidl::Result<()> {
1497            decoder.debug_check_bounds::<Self>(offset);
1498            let prim = decoder.read_num::<u32>(offset);
1499
1500            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1501            Ok(())
1502        }
1503    }
1504    unsafe impl fidl::encoding::TypeMarker for AuthenticationTypes {
1505        type Owned = Self;
1506
1507        #[inline(always)]
1508        fn inline_align(_context: fidl::encoding::Context) -> usize {
1509            std::mem::align_of::<u32>()
1510        }
1511
1512        #[inline(always)]
1513        fn inline_size(_context: fidl::encoding::Context) -> usize {
1514            std::mem::size_of::<u32>()
1515        }
1516
1517        #[inline(always)]
1518        fn encode_is_copy() -> bool {
1519            true
1520        }
1521
1522        #[inline(always)]
1523        fn decode_is_copy() -> bool {
1524            false
1525        }
1526    }
1527
1528    impl fidl::encoding::ValueTypeMarker for AuthenticationTypes {
1529        type Borrowed<'a> = Self;
1530        #[inline(always)]
1531        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1532            *value
1533        }
1534    }
1535
1536    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1537        for AuthenticationTypes
1538    {
1539        #[inline]
1540        unsafe fn encode(
1541            self,
1542            encoder: &mut fidl::encoding::Encoder<'_, D>,
1543            offset: usize,
1544            _depth: fidl::encoding::Depth,
1545        ) -> fidl::Result<()> {
1546            encoder.debug_check_bounds::<Self>(offset);
1547            encoder.write_num(self.into_primitive(), offset);
1548            Ok(())
1549        }
1550    }
1551
1552    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AuthenticationTypes {
1553        #[inline(always)]
1554        fn new_empty() -> Self {
1555            Self::OpenSystem
1556        }
1557
1558        #[inline]
1559        unsafe fn decode(
1560            &mut self,
1561            decoder: &mut fidl::encoding::Decoder<'_, D>,
1562            offset: usize,
1563            _depth: fidl::encoding::Depth,
1564        ) -> fidl::Result<()> {
1565            decoder.debug_check_bounds::<Self>(offset);
1566            let prim = decoder.read_num::<u32>(offset);
1567
1568            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1569            Ok(())
1570        }
1571    }
1572    unsafe impl fidl::encoding::TypeMarker for ControlledPortState {
1573        type Owned = Self;
1574
1575        #[inline(always)]
1576        fn inline_align(_context: fidl::encoding::Context) -> usize {
1577            std::mem::align_of::<u32>()
1578        }
1579
1580        #[inline(always)]
1581        fn inline_size(_context: fidl::encoding::Context) -> usize {
1582            std::mem::size_of::<u32>()
1583        }
1584
1585        #[inline(always)]
1586        fn encode_is_copy() -> bool {
1587            true
1588        }
1589
1590        #[inline(always)]
1591        fn decode_is_copy() -> bool {
1592            false
1593        }
1594    }
1595
1596    impl fidl::encoding::ValueTypeMarker for ControlledPortState {
1597        type Borrowed<'a> = Self;
1598        #[inline(always)]
1599        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1600            *value
1601        }
1602    }
1603
1604    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1605        for ControlledPortState
1606    {
1607        #[inline]
1608        unsafe fn encode(
1609            self,
1610            encoder: &mut fidl::encoding::Encoder<'_, D>,
1611            offset: usize,
1612            _depth: fidl::encoding::Depth,
1613        ) -> fidl::Result<()> {
1614            encoder.debug_check_bounds::<Self>(offset);
1615            encoder.write_num(self.into_primitive(), offset);
1616            Ok(())
1617        }
1618    }
1619
1620    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlledPortState {
1621        #[inline(always)]
1622        fn new_empty() -> Self {
1623            Self::Closed
1624        }
1625
1626        #[inline]
1627        unsafe fn decode(
1628            &mut self,
1629            decoder: &mut fidl::encoding::Decoder<'_, D>,
1630            offset: usize,
1631            _depth: fidl::encoding::Depth,
1632        ) -> fidl::Result<()> {
1633            decoder.debug_check_bounds::<Self>(offset);
1634            let prim = decoder.read_num::<u32>(offset);
1635
1636            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1637            Ok(())
1638        }
1639    }
1640    unsafe impl fidl::encoding::TypeMarker for EapolResultCode {
1641        type Owned = Self;
1642
1643        #[inline(always)]
1644        fn inline_align(_context: fidl::encoding::Context) -> usize {
1645            std::mem::align_of::<u32>()
1646        }
1647
1648        #[inline(always)]
1649        fn inline_size(_context: fidl::encoding::Context) -> usize {
1650            std::mem::size_of::<u32>()
1651        }
1652
1653        #[inline(always)]
1654        fn encode_is_copy() -> bool {
1655            true
1656        }
1657
1658        #[inline(always)]
1659        fn decode_is_copy() -> bool {
1660            false
1661        }
1662    }
1663
1664    impl fidl::encoding::ValueTypeMarker for EapolResultCode {
1665        type Borrowed<'a> = Self;
1666        #[inline(always)]
1667        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1668            *value
1669        }
1670    }
1671
1672    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1673        for EapolResultCode
1674    {
1675        #[inline]
1676        unsafe fn encode(
1677            self,
1678            encoder: &mut fidl::encoding::Encoder<'_, D>,
1679            offset: usize,
1680            _depth: fidl::encoding::Depth,
1681        ) -> fidl::Result<()> {
1682            encoder.debug_check_bounds::<Self>(offset);
1683            encoder.write_num(self.into_primitive(), offset);
1684            Ok(())
1685        }
1686    }
1687
1688    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolResultCode {
1689        #[inline(always)]
1690        fn new_empty() -> Self {
1691            Self::Success
1692        }
1693
1694        #[inline]
1695        unsafe fn decode(
1696            &mut self,
1697            decoder: &mut fidl::encoding::Decoder<'_, D>,
1698            offset: usize,
1699            _depth: fidl::encoding::Depth,
1700        ) -> fidl::Result<()> {
1701            decoder.debug_check_bounds::<Self>(offset);
1702            let prim = decoder.read_num::<u32>(offset);
1703
1704            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1705            Ok(())
1706        }
1707    }
1708    unsafe impl fidl::encoding::TypeMarker for KeyType {
1709        type Owned = Self;
1710
1711        #[inline(always)]
1712        fn inline_align(_context: fidl::encoding::Context) -> usize {
1713            std::mem::align_of::<u32>()
1714        }
1715
1716        #[inline(always)]
1717        fn inline_size(_context: fidl::encoding::Context) -> usize {
1718            std::mem::size_of::<u32>()
1719        }
1720
1721        #[inline(always)]
1722        fn encode_is_copy() -> bool {
1723            true
1724        }
1725
1726        #[inline(always)]
1727        fn decode_is_copy() -> bool {
1728            false
1729        }
1730    }
1731
1732    impl fidl::encoding::ValueTypeMarker for KeyType {
1733        type Borrowed<'a> = Self;
1734        #[inline(always)]
1735        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1736            *value
1737        }
1738    }
1739
1740    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for KeyType {
1741        #[inline]
1742        unsafe fn encode(
1743            self,
1744            encoder: &mut fidl::encoding::Encoder<'_, D>,
1745            offset: usize,
1746            _depth: fidl::encoding::Depth,
1747        ) -> fidl::Result<()> {
1748            encoder.debug_check_bounds::<Self>(offset);
1749            encoder.write_num(self.into_primitive(), offset);
1750            Ok(())
1751        }
1752    }
1753
1754    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for KeyType {
1755        #[inline(always)]
1756        fn new_empty() -> Self {
1757            Self::Group
1758        }
1759
1760        #[inline]
1761        unsafe fn decode(
1762            &mut self,
1763            decoder: &mut fidl::encoding::Decoder<'_, D>,
1764            offset: usize,
1765            _depth: fidl::encoding::Depth,
1766        ) -> fidl::Result<()> {
1767            decoder.debug_check_bounds::<Self>(offset);
1768            let prim = decoder.read_num::<u32>(offset);
1769
1770            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1771            Ok(())
1772        }
1773    }
1774    unsafe impl fidl::encoding::TypeMarker for ScanResultCode {
1775        type Owned = Self;
1776
1777        #[inline(always)]
1778        fn inline_align(_context: fidl::encoding::Context) -> usize {
1779            std::mem::align_of::<u32>()
1780        }
1781
1782        #[inline(always)]
1783        fn inline_size(_context: fidl::encoding::Context) -> usize {
1784            std::mem::size_of::<u32>()
1785        }
1786
1787        #[inline(always)]
1788        fn encode_is_copy() -> bool {
1789            true
1790        }
1791
1792        #[inline(always)]
1793        fn decode_is_copy() -> bool {
1794            false
1795        }
1796    }
1797
1798    impl fidl::encoding::ValueTypeMarker for ScanResultCode {
1799        type Borrowed<'a> = Self;
1800        #[inline(always)]
1801        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1802            *value
1803        }
1804    }
1805
1806    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanResultCode {
1807        #[inline]
1808        unsafe fn encode(
1809            self,
1810            encoder: &mut fidl::encoding::Encoder<'_, D>,
1811            offset: usize,
1812            _depth: fidl::encoding::Depth,
1813        ) -> fidl::Result<()> {
1814            encoder.debug_check_bounds::<Self>(offset);
1815            encoder.write_num(self.into_primitive(), offset);
1816            Ok(())
1817        }
1818    }
1819
1820    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanResultCode {
1821        #[inline(always)]
1822        fn new_empty() -> Self {
1823            Self::Success
1824        }
1825
1826        #[inline]
1827        unsafe fn decode(
1828            &mut self,
1829            decoder: &mut fidl::encoding::Decoder<'_, D>,
1830            offset: usize,
1831            _depth: fidl::encoding::Depth,
1832        ) -> fidl::Result<()> {
1833            decoder.debug_check_bounds::<Self>(offset);
1834            let prim = decoder.read_num::<u32>(offset);
1835
1836            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1837            Ok(())
1838        }
1839    }
1840    unsafe impl fidl::encoding::TypeMarker for ScanTypes {
1841        type Owned = Self;
1842
1843        #[inline(always)]
1844        fn inline_align(_context: fidl::encoding::Context) -> usize {
1845            std::mem::align_of::<u32>()
1846        }
1847
1848        #[inline(always)]
1849        fn inline_size(_context: fidl::encoding::Context) -> usize {
1850            std::mem::size_of::<u32>()
1851        }
1852
1853        #[inline(always)]
1854        fn encode_is_copy() -> bool {
1855            true
1856        }
1857
1858        #[inline(always)]
1859        fn decode_is_copy() -> bool {
1860            false
1861        }
1862    }
1863
1864    impl fidl::encoding::ValueTypeMarker for ScanTypes {
1865        type Borrowed<'a> = Self;
1866        #[inline(always)]
1867        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1868            *value
1869        }
1870    }
1871
1872    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanTypes {
1873        #[inline]
1874        unsafe fn encode(
1875            self,
1876            encoder: &mut fidl::encoding::Encoder<'_, D>,
1877            offset: usize,
1878            _depth: fidl::encoding::Depth,
1879        ) -> fidl::Result<()> {
1880            encoder.debug_check_bounds::<Self>(offset);
1881            encoder.write_num(self.into_primitive(), offset);
1882            Ok(())
1883        }
1884    }
1885
1886    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanTypes {
1887        #[inline(always)]
1888        fn new_empty() -> Self {
1889            Self::Active
1890        }
1891
1892        #[inline]
1893        unsafe fn decode(
1894            &mut self,
1895            decoder: &mut fidl::encoding::Decoder<'_, D>,
1896            offset: usize,
1897            _depth: fidl::encoding::Depth,
1898        ) -> fidl::Result<()> {
1899            decoder.debug_check_bounds::<Self>(offset);
1900            let prim = decoder.read_num::<u32>(offset);
1901
1902            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1903            Ok(())
1904        }
1905    }
1906    unsafe impl fidl::encoding::TypeMarker for StartResultCode {
1907        type Owned = Self;
1908
1909        #[inline(always)]
1910        fn inline_align(_context: fidl::encoding::Context) -> usize {
1911            std::mem::align_of::<u32>()
1912        }
1913
1914        #[inline(always)]
1915        fn inline_size(_context: fidl::encoding::Context) -> usize {
1916            std::mem::size_of::<u32>()
1917        }
1918
1919        #[inline(always)]
1920        fn encode_is_copy() -> bool {
1921            true
1922        }
1923
1924        #[inline(always)]
1925        fn decode_is_copy() -> bool {
1926            false
1927        }
1928    }
1929
1930    impl fidl::encoding::ValueTypeMarker for StartResultCode {
1931        type Borrowed<'a> = Self;
1932        #[inline(always)]
1933        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1934            *value
1935        }
1936    }
1937
1938    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1939        for StartResultCode
1940    {
1941        #[inline]
1942        unsafe fn encode(
1943            self,
1944            encoder: &mut fidl::encoding::Encoder<'_, D>,
1945            offset: usize,
1946            _depth: fidl::encoding::Depth,
1947        ) -> fidl::Result<()> {
1948            encoder.debug_check_bounds::<Self>(offset);
1949            encoder.write_num(self.into_primitive(), offset);
1950            Ok(())
1951        }
1952    }
1953
1954    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartResultCode {
1955        #[inline(always)]
1956        fn new_empty() -> Self {
1957            Self::Success
1958        }
1959
1960        #[inline]
1961        unsafe fn decode(
1962            &mut self,
1963            decoder: &mut fidl::encoding::Decoder<'_, D>,
1964            offset: usize,
1965            _depth: fidl::encoding::Depth,
1966        ) -> fidl::Result<()> {
1967            decoder.debug_check_bounds::<Self>(offset);
1968            let prim = decoder.read_num::<u32>(offset);
1969
1970            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1971            Ok(())
1972        }
1973    }
1974    unsafe impl fidl::encoding::TypeMarker for StopResultCode {
1975        type Owned = Self;
1976
1977        #[inline(always)]
1978        fn inline_align(_context: fidl::encoding::Context) -> usize {
1979            std::mem::align_of::<u32>()
1980        }
1981
1982        #[inline(always)]
1983        fn inline_size(_context: fidl::encoding::Context) -> usize {
1984            std::mem::size_of::<u32>()
1985        }
1986
1987        #[inline(always)]
1988        fn encode_is_copy() -> bool {
1989            true
1990        }
1991
1992        #[inline(always)]
1993        fn decode_is_copy() -> bool {
1994            false
1995        }
1996    }
1997
1998    impl fidl::encoding::ValueTypeMarker for StopResultCode {
1999        type Borrowed<'a> = Self;
2000        #[inline(always)]
2001        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2002            *value
2003        }
2004    }
2005
2006    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StopResultCode {
2007        #[inline]
2008        unsafe fn encode(
2009            self,
2010            encoder: &mut fidl::encoding::Encoder<'_, D>,
2011            offset: usize,
2012            _depth: fidl::encoding::Depth,
2013        ) -> fidl::Result<()> {
2014            encoder.debug_check_bounds::<Self>(offset);
2015            encoder.write_num(self.into_primitive(), offset);
2016            Ok(())
2017        }
2018    }
2019
2020    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopResultCode {
2021        #[inline(always)]
2022        fn new_empty() -> Self {
2023            Self::Success
2024        }
2025
2026        #[inline]
2027        unsafe fn decode(
2028            &mut self,
2029            decoder: &mut fidl::encoding::Decoder<'_, D>,
2030            offset: usize,
2031            _depth: fidl::encoding::Depth,
2032        ) -> fidl::Result<()> {
2033            decoder.debug_check_bounds::<Self>(offset);
2034            let prim = decoder.read_num::<u32>(offset);
2035
2036            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2037            Ok(())
2038        }
2039    }
2040
2041    impl fidl::encoding::ValueTypeMarker for AssociateIndication {
2042        type Borrowed<'a> = &'a Self;
2043        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2044            value
2045        }
2046    }
2047
2048    unsafe impl fidl::encoding::TypeMarker for AssociateIndication {
2049        type Owned = Self;
2050
2051        #[inline(always)]
2052        fn inline_align(_context: fidl::encoding::Context) -> usize {
2053            8
2054        }
2055
2056        #[inline(always)]
2057        fn inline_size(_context: fidl::encoding::Context) -> usize {
2058            64
2059        }
2060    }
2061
2062    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AssociateIndication, D>
2063        for &AssociateIndication
2064    {
2065        #[inline]
2066        unsafe fn encode(
2067            self,
2068            encoder: &mut fidl::encoding::Encoder<'_, D>,
2069            offset: usize,
2070            _depth: fidl::encoding::Depth,
2071        ) -> fidl::Result<()> {
2072            encoder.debug_check_bounds::<AssociateIndication>(offset);
2073            // Delegate to tuple encoding.
2074            fidl::encoding::Encode::<AssociateIndication, D>::encode(
2075                (
2076                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
2077                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
2078                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.listen_interval),
2079                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid),
2080                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
2081                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>> as fidl::encoding::ValueTypeMarker>::borrow(&self.rsne),
2082                ),
2083                encoder, offset, _depth
2084            )
2085        }
2086    }
2087    unsafe impl<
2088            D: fidl::encoding::ResourceDialect,
2089            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2090            T1: fidl::encoding::Encode<u16, D>,
2091            T2: fidl::encoding::Encode<u16, D>,
2092            T3: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>, D>,
2093            T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
2094            T5: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>, D>,
2095        > fidl::encoding::Encode<AssociateIndication, D> for (T0, T1, T2, T3, T4, T5)
2096    {
2097        #[inline]
2098        unsafe fn encode(
2099            self,
2100            encoder: &mut fidl::encoding::Encoder<'_, D>,
2101            offset: usize,
2102            depth: fidl::encoding::Depth,
2103        ) -> fidl::Result<()> {
2104            encoder.debug_check_bounds::<AssociateIndication>(offset);
2105            // Zero out padding regions. There's no need to apply masks
2106            // because the unmasked parts will be overwritten by fields.
2107            unsafe {
2108                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2109                (ptr as *mut u64).write_unaligned(0);
2110            }
2111            // Write the fields.
2112            self.0.encode(encoder, offset + 0, depth)?;
2113            self.1.encode(encoder, offset + 6, depth)?;
2114            self.2.encode(encoder, offset + 8, depth)?;
2115            self.3.encode(encoder, offset + 16, depth)?;
2116            self.4.encode(encoder, offset + 32, depth)?;
2117            self.5.encode(encoder, offset + 48, depth)?;
2118            Ok(())
2119        }
2120    }
2121
2122    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateIndication {
2123        #[inline(always)]
2124        fn new_empty() -> Self {
2125            Self {
2126                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2127                capability_info: fidl::new_empty!(u16, D),
2128                listen_interval: fidl::new_empty!(u16, D),
2129                ssid: fidl::new_empty!(fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>, D),
2130                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
2131                rsne: fidl::new_empty!(
2132                    fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
2133                    D
2134                ),
2135            }
2136        }
2137
2138        #[inline]
2139        unsafe fn decode(
2140            &mut self,
2141            decoder: &mut fidl::encoding::Decoder<'_, D>,
2142            offset: usize,
2143            _depth: fidl::encoding::Depth,
2144        ) -> fidl::Result<()> {
2145            decoder.debug_check_bounds::<Self>(offset);
2146            // Verify that padding bytes are zero.
2147            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2148            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2149            let mask = 0xffffffffffff0000u64;
2150            let maskedval = padval & mask;
2151            if maskedval != 0 {
2152                return Err(fidl::Error::NonZeroPadding {
2153                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2154                });
2155            }
2156            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2157            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 6, _depth)?;
2158            fidl::decode!(u16, D, &mut self.listen_interval, decoder, offset + 8, _depth)?;
2159            fidl::decode!(
2160                fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>,
2161                D,
2162                &mut self.ssid,
2163                decoder,
2164                offset + 16,
2165                _depth
2166            )?;
2167            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 32, _depth)?;
2168            fidl::decode!(
2169                fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
2170                D,
2171                &mut self.rsne,
2172                decoder,
2173                offset + 48,
2174                _depth
2175            )?;
2176            Ok(())
2177        }
2178    }
2179
2180    impl fidl::encoding::ValueTypeMarker for AssociateResponse {
2181        type Borrowed<'a> = &'a Self;
2182        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2183            value
2184        }
2185    }
2186
2187    unsafe impl fidl::encoding::TypeMarker for AssociateResponse {
2188        type Owned = Self;
2189
2190        #[inline(always)]
2191        fn inline_align(_context: fidl::encoding::Context) -> usize {
2192            8
2193        }
2194
2195        #[inline(always)]
2196        fn inline_size(_context: fidl::encoding::Context) -> usize {
2197            32
2198        }
2199    }
2200
2201    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AssociateResponse, D>
2202        for &AssociateResponse
2203    {
2204        #[inline]
2205        unsafe fn encode(
2206            self,
2207            encoder: &mut fidl::encoding::Encoder<'_, D>,
2208            offset: usize,
2209            _depth: fidl::encoding::Depth,
2210        ) -> fidl::Result<()> {
2211            encoder.debug_check_bounds::<AssociateResponse>(offset);
2212            // Delegate to tuple encoding.
2213            fidl::encoding::Encode::<AssociateResponse, D>::encode(
2214                (
2215                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2216                        &self.peer_sta_address,
2217                    ),
2218                    <AssociateResultCode as fidl::encoding::ValueTypeMarker>::borrow(
2219                        &self.result_code,
2220                    ),
2221                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
2222                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
2223                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(
2224                        &self.rates,
2225                    ),
2226                ),
2227                encoder,
2228                offset,
2229                _depth,
2230            )
2231        }
2232    }
2233    unsafe impl<
2234            D: fidl::encoding::ResourceDialect,
2235            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2236            T1: fidl::encoding::Encode<AssociateResultCode, D>,
2237            T2: fidl::encoding::Encode<u16, D>,
2238            T3: fidl::encoding::Encode<u16, D>,
2239            T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
2240        > fidl::encoding::Encode<AssociateResponse, D> for (T0, T1, T2, T3, T4)
2241    {
2242        #[inline]
2243        unsafe fn encode(
2244            self,
2245            encoder: &mut fidl::encoding::Encoder<'_, D>,
2246            offset: usize,
2247            depth: fidl::encoding::Depth,
2248        ) -> fidl::Result<()> {
2249            encoder.debug_check_bounds::<AssociateResponse>(offset);
2250            // Zero out padding regions. There's no need to apply masks
2251            // because the unmasked parts will be overwritten by fields.
2252            unsafe {
2253                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2254                (ptr as *mut u64).write_unaligned(0);
2255            }
2256            // Write the fields.
2257            self.0.encode(encoder, offset + 0, depth)?;
2258            self.1.encode(encoder, offset + 8, depth)?;
2259            self.2.encode(encoder, offset + 12, depth)?;
2260            self.3.encode(encoder, offset + 14, depth)?;
2261            self.4.encode(encoder, offset + 16, depth)?;
2262            Ok(())
2263        }
2264    }
2265
2266    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateResponse {
2267        #[inline(always)]
2268        fn new_empty() -> Self {
2269            Self {
2270                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2271                result_code: fidl::new_empty!(AssociateResultCode, D),
2272                association_id: fidl::new_empty!(u16, D),
2273                capability_info: fidl::new_empty!(u16, D),
2274                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
2275            }
2276        }
2277
2278        #[inline]
2279        unsafe fn decode(
2280            &mut self,
2281            decoder: &mut fidl::encoding::Decoder<'_, D>,
2282            offset: usize,
2283            _depth: fidl::encoding::Depth,
2284        ) -> fidl::Result<()> {
2285            decoder.debug_check_bounds::<Self>(offset);
2286            // Verify that padding bytes are zero.
2287            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2288            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2289            let mask = 0xffff000000000000u64;
2290            let maskedval = padval & mask;
2291            if maskedval != 0 {
2292                return Err(fidl::Error::NonZeroPadding {
2293                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2294                });
2295            }
2296            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2297            fidl::decode!(
2298                AssociateResultCode,
2299                D,
2300                &mut self.result_code,
2301                decoder,
2302                offset + 8,
2303                _depth
2304            )?;
2305            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 12, _depth)?;
2306            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 14, _depth)?;
2307            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 16, _depth)?;
2308            Ok(())
2309        }
2310    }
2311
2312    impl fidl::encoding::ValueTypeMarker for AuthenticateIndication {
2313        type Borrowed<'a> = &'a Self;
2314        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2315            value
2316        }
2317    }
2318
2319    unsafe impl fidl::encoding::TypeMarker for AuthenticateIndication {
2320        type Owned = Self;
2321
2322        #[inline(always)]
2323        fn inline_align(_context: fidl::encoding::Context) -> usize {
2324            4
2325        }
2326
2327        #[inline(always)]
2328        fn inline_size(_context: fidl::encoding::Context) -> usize {
2329            12
2330        }
2331    }
2332
2333    unsafe impl<D: fidl::encoding::ResourceDialect>
2334        fidl::encoding::Encode<AuthenticateIndication, D> for &AuthenticateIndication
2335    {
2336        #[inline]
2337        unsafe fn encode(
2338            self,
2339            encoder: &mut fidl::encoding::Encoder<'_, D>,
2340            offset: usize,
2341            _depth: fidl::encoding::Depth,
2342        ) -> fidl::Result<()> {
2343            encoder.debug_check_bounds::<AuthenticateIndication>(offset);
2344            // Delegate to tuple encoding.
2345            fidl::encoding::Encode::<AuthenticateIndication, D>::encode(
2346                (
2347                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2348                        &self.peer_sta_address,
2349                    ),
2350                    <AuthenticationTypes as fidl::encoding::ValueTypeMarker>::borrow(
2351                        &self.auth_type,
2352                    ),
2353                ),
2354                encoder,
2355                offset,
2356                _depth,
2357            )
2358        }
2359    }
2360    unsafe impl<
2361            D: fidl::encoding::ResourceDialect,
2362            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2363            T1: fidl::encoding::Encode<AuthenticationTypes, D>,
2364        > fidl::encoding::Encode<AuthenticateIndication, D> for (T0, T1)
2365    {
2366        #[inline]
2367        unsafe fn encode(
2368            self,
2369            encoder: &mut fidl::encoding::Encoder<'_, D>,
2370            offset: usize,
2371            depth: fidl::encoding::Depth,
2372        ) -> fidl::Result<()> {
2373            encoder.debug_check_bounds::<AuthenticateIndication>(offset);
2374            // Zero out padding regions. There's no need to apply masks
2375            // because the unmasked parts will be overwritten by fields.
2376            unsafe {
2377                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
2378                (ptr as *mut u32).write_unaligned(0);
2379            }
2380            // Write the fields.
2381            self.0.encode(encoder, offset + 0, depth)?;
2382            self.1.encode(encoder, offset + 8, depth)?;
2383            Ok(())
2384        }
2385    }
2386
2387    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2388        for AuthenticateIndication
2389    {
2390        #[inline(always)]
2391        fn new_empty() -> Self {
2392            Self {
2393                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2394                auth_type: fidl::new_empty!(AuthenticationTypes, D),
2395            }
2396        }
2397
2398        #[inline]
2399        unsafe fn decode(
2400            &mut self,
2401            decoder: &mut fidl::encoding::Decoder<'_, D>,
2402            offset: usize,
2403            _depth: fidl::encoding::Depth,
2404        ) -> fidl::Result<()> {
2405            decoder.debug_check_bounds::<Self>(offset);
2406            // Verify that padding bytes are zero.
2407            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
2408            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2409            let mask = 0xffff0000u32;
2410            let maskedval = padval & mask;
2411            if maskedval != 0 {
2412                return Err(fidl::Error::NonZeroPadding {
2413                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
2414                });
2415            }
2416            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2417            fidl::decode!(
2418                AuthenticationTypes,
2419                D,
2420                &mut self.auth_type,
2421                decoder,
2422                offset + 8,
2423                _depth
2424            )?;
2425            Ok(())
2426        }
2427    }
2428
2429    impl fidl::encoding::ValueTypeMarker for AuthenticateResponse {
2430        type Borrowed<'a> = &'a Self;
2431        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2432            value
2433        }
2434    }
2435
2436    unsafe impl fidl::encoding::TypeMarker for AuthenticateResponse {
2437        type Owned = Self;
2438
2439        #[inline(always)]
2440        fn inline_align(_context: fidl::encoding::Context) -> usize {
2441            4
2442        }
2443
2444        #[inline(always)]
2445        fn inline_size(_context: fidl::encoding::Context) -> usize {
2446            12
2447        }
2448    }
2449
2450    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AuthenticateResponse, D>
2451        for &AuthenticateResponse
2452    {
2453        #[inline]
2454        unsafe fn encode(
2455            self,
2456            encoder: &mut fidl::encoding::Encoder<'_, D>,
2457            offset: usize,
2458            _depth: fidl::encoding::Depth,
2459        ) -> fidl::Result<()> {
2460            encoder.debug_check_bounds::<AuthenticateResponse>(offset);
2461            // Delegate to tuple encoding.
2462            fidl::encoding::Encode::<AuthenticateResponse, D>::encode(
2463                (
2464                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2465                        &self.peer_sta_address,
2466                    ),
2467                    <AuthenticateResultCode as fidl::encoding::ValueTypeMarker>::borrow(
2468                        &self.result_code,
2469                    ),
2470                ),
2471                encoder,
2472                offset,
2473                _depth,
2474            )
2475        }
2476    }
2477    unsafe impl<
2478            D: fidl::encoding::ResourceDialect,
2479            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2480            T1: fidl::encoding::Encode<AuthenticateResultCode, D>,
2481        > fidl::encoding::Encode<AuthenticateResponse, D> for (T0, T1)
2482    {
2483        #[inline]
2484        unsafe fn encode(
2485            self,
2486            encoder: &mut fidl::encoding::Encoder<'_, D>,
2487            offset: usize,
2488            depth: fidl::encoding::Depth,
2489        ) -> fidl::Result<()> {
2490            encoder.debug_check_bounds::<AuthenticateResponse>(offset);
2491            // Zero out padding regions. There's no need to apply masks
2492            // because the unmasked parts will be overwritten by fields.
2493            unsafe {
2494                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
2495                (ptr as *mut u32).write_unaligned(0);
2496            }
2497            // Write the fields.
2498            self.0.encode(encoder, offset + 0, depth)?;
2499            self.1.encode(encoder, offset + 8, depth)?;
2500            Ok(())
2501        }
2502    }
2503
2504    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AuthenticateResponse {
2505        #[inline(always)]
2506        fn new_empty() -> Self {
2507            Self {
2508                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2509                result_code: fidl::new_empty!(AuthenticateResultCode, D),
2510            }
2511        }
2512
2513        #[inline]
2514        unsafe fn decode(
2515            &mut self,
2516            decoder: &mut fidl::encoding::Decoder<'_, D>,
2517            offset: usize,
2518            _depth: fidl::encoding::Depth,
2519        ) -> fidl::Result<()> {
2520            decoder.debug_check_bounds::<Self>(offset);
2521            // Verify that padding bytes are zero.
2522            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
2523            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2524            let mask = 0xffff0000u32;
2525            let maskedval = padval & mask;
2526            if maskedval != 0 {
2527                return Err(fidl::Error::NonZeroPadding {
2528                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
2529                });
2530            }
2531            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2532            fidl::decode!(
2533                AuthenticateResultCode,
2534                D,
2535                &mut self.result_code,
2536                decoder,
2537                offset + 8,
2538                _depth
2539            )?;
2540            Ok(())
2541        }
2542    }
2543
2544    impl fidl::encoding::ValueTypeMarker for BandCapability {
2545        type Borrowed<'a> = &'a Self;
2546        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2547            value
2548        }
2549    }
2550
2551    unsafe impl fidl::encoding::TypeMarker for BandCapability {
2552        type Owned = Self;
2553
2554        #[inline(always)]
2555        fn inline_align(_context: fidl::encoding::Context) -> usize {
2556            8
2557        }
2558
2559        #[inline(always)]
2560        fn inline_size(_context: fidl::encoding::Context) -> usize {
2561            56
2562        }
2563    }
2564
2565    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandCapability, D>
2566        for &BandCapability
2567    {
2568        #[inline]
2569        unsafe fn encode(
2570            self,
2571            encoder: &mut fidl::encoding::Encoder<'_, D>,
2572            offset: usize,
2573            _depth: fidl::encoding::Depth,
2574        ) -> fidl::Result<()> {
2575            encoder.debug_check_bounds::<BandCapability>(offset);
2576            // Delegate to tuple encoding.
2577            fidl::encoding::Encode::<BandCapability, D>::encode(
2578                (
2579                    <fidl_fuchsia_wlan_ieee80211__common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow(&self.band),
2580                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::ValueTypeMarker>::borrow(&self.basic_rates),
2581                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.ht_cap),
2582                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_cap),
2583                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.operating_channels),
2584                ),
2585                encoder, offset, _depth
2586            )
2587        }
2588    }
2589    unsafe impl<
2590            D: fidl::encoding::ResourceDialect,
2591            T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::WlanBand, D>,
2592            T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 12>, D>,
2593            T2: fidl::encoding::Encode<
2594                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
2595                D,
2596            >,
2597            T3: fidl::encoding::Encode<
2598                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
2599                D,
2600            >,
2601            T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 256>, D>,
2602        > fidl::encoding::Encode<BandCapability, D> for (T0, T1, T2, T3, T4)
2603    {
2604        #[inline]
2605        unsafe fn encode(
2606            self,
2607            encoder: &mut fidl::encoding::Encoder<'_, D>,
2608            offset: usize,
2609            depth: fidl::encoding::Depth,
2610        ) -> fidl::Result<()> {
2611            encoder.debug_check_bounds::<BandCapability>(offset);
2612            // Zero out padding regions. There's no need to apply masks
2613            // because the unmasked parts will be overwritten by fields.
2614            unsafe {
2615                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2616                (ptr as *mut u64).write_unaligned(0);
2617            }
2618            // Write the fields.
2619            self.0.encode(encoder, offset + 0, depth)?;
2620            self.1.encode(encoder, offset + 8, depth)?;
2621            self.2.encode(encoder, offset + 24, depth)?;
2622            self.3.encode(encoder, offset + 32, depth)?;
2623            self.4.encode(encoder, offset + 40, depth)?;
2624            Ok(())
2625        }
2626    }
2627
2628    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandCapability {
2629        #[inline(always)]
2630        fn new_empty() -> Self {
2631            Self {
2632                band: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanBand, D),
2633                basic_rates: fidl::new_empty!(fidl::encoding::Vector<u8, 12>, D),
2634                ht_cap: fidl::new_empty!(
2635                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
2636                    D
2637                ),
2638                vht_cap: fidl::new_empty!(
2639                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
2640                    D
2641                ),
2642                operating_channels: fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D),
2643            }
2644        }
2645
2646        #[inline]
2647        unsafe fn decode(
2648            &mut self,
2649            decoder: &mut fidl::encoding::Decoder<'_, D>,
2650            offset: usize,
2651            _depth: fidl::encoding::Depth,
2652        ) -> fidl::Result<()> {
2653            decoder.debug_check_bounds::<Self>(offset);
2654            // Verify that padding bytes are zero.
2655            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2656            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2657            let mask = 0xffffffffffffff00u64;
2658            let maskedval = padval & mask;
2659            if maskedval != 0 {
2660                return Err(fidl::Error::NonZeroPadding {
2661                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2662                });
2663            }
2664            fidl::decode!(
2665                fidl_fuchsia_wlan_ieee80211__common::WlanBand,
2666                D,
2667                &mut self.band,
2668                decoder,
2669                offset + 0,
2670                _depth
2671            )?;
2672            fidl::decode!(fidl::encoding::Vector<u8, 12>, D, &mut self.basic_rates, decoder, offset + 8, _depth)?;
2673            fidl::decode!(
2674                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
2675                D,
2676                &mut self.ht_cap,
2677                decoder,
2678                offset + 24,
2679                _depth
2680            )?;
2681            fidl::decode!(
2682                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
2683                D,
2684                &mut self.vht_cap,
2685                decoder,
2686                offset + 32,
2687                _depth
2688            )?;
2689            fidl::decode!(fidl::encoding::Vector<u8, 256>, D, &mut self.operating_channels, decoder, offset + 40, _depth)?;
2690            Ok(())
2691        }
2692    }
2693
2694    impl fidl::encoding::ValueTypeMarker for CapturedFrameResult {
2695        type Borrowed<'a> = &'a Self;
2696        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2697            value
2698        }
2699    }
2700
2701    unsafe impl fidl::encoding::TypeMarker for CapturedFrameResult {
2702        type Owned = Self;
2703
2704        #[inline(always)]
2705        fn inline_align(_context: fidl::encoding::Context) -> usize {
2706            8
2707        }
2708
2709        #[inline(always)]
2710        fn inline_size(_context: fidl::encoding::Context) -> usize {
2711            16
2712        }
2713    }
2714
2715    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CapturedFrameResult, D>
2716        for &CapturedFrameResult
2717    {
2718        #[inline]
2719        unsafe fn encode(
2720            self,
2721            encoder: &mut fidl::encoding::Encoder<'_, D>,
2722            offset: usize,
2723            _depth: fidl::encoding::Depth,
2724        ) -> fidl::Result<()> {
2725            encoder.debug_check_bounds::<CapturedFrameResult>(offset);
2726            // Delegate to tuple encoding.
2727            fidl::encoding::Encode::<CapturedFrameResult, D>::encode(
2728                (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
2729                    &self.frame,
2730                ),),
2731                encoder,
2732                offset,
2733                _depth,
2734            )
2735        }
2736    }
2737    unsafe impl<
2738            D: fidl::encoding::ResourceDialect,
2739            T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2740        > fidl::encoding::Encode<CapturedFrameResult, D> for (T0,)
2741    {
2742        #[inline]
2743        unsafe fn encode(
2744            self,
2745            encoder: &mut fidl::encoding::Encoder<'_, D>,
2746            offset: usize,
2747            depth: fidl::encoding::Depth,
2748        ) -> fidl::Result<()> {
2749            encoder.debug_check_bounds::<CapturedFrameResult>(offset);
2750            // Zero out padding regions. There's no need to apply masks
2751            // because the unmasked parts will be overwritten by fields.
2752            // Write the fields.
2753            self.0.encode(encoder, offset + 0, depth)?;
2754            Ok(())
2755        }
2756    }
2757
2758    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CapturedFrameResult {
2759        #[inline(always)]
2760        fn new_empty() -> Self {
2761            Self { frame: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
2762        }
2763
2764        #[inline]
2765        unsafe fn decode(
2766            &mut self,
2767            decoder: &mut fidl::encoding::Decoder<'_, D>,
2768            offset: usize,
2769            _depth: fidl::encoding::Depth,
2770        ) -> fidl::Result<()> {
2771            decoder.debug_check_bounds::<Self>(offset);
2772            // Verify that padding bytes are zero.
2773            fidl::decode!(
2774                fidl::encoding::UnboundedVector<u8>,
2775                D,
2776                &mut self.frame,
2777                decoder,
2778                offset + 0,
2779                _depth
2780            )?;
2781            Ok(())
2782        }
2783    }
2784
2785    impl fidl::encoding::ValueTypeMarker for ConnectConfirm {
2786        type Borrowed<'a> = &'a Self;
2787        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2788            value
2789        }
2790    }
2791
2792    unsafe impl fidl::encoding::TypeMarker for ConnectConfirm {
2793        type Owned = Self;
2794
2795        #[inline(always)]
2796        fn inline_align(_context: fidl::encoding::Context) -> usize {
2797            8
2798        }
2799
2800        #[inline(always)]
2801        fn inline_size(_context: fidl::encoding::Context) -> usize {
2802            32
2803        }
2804    }
2805
2806    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectConfirm, D>
2807        for &ConnectConfirm
2808    {
2809        #[inline]
2810        unsafe fn encode(
2811            self,
2812            encoder: &mut fidl::encoding::Encoder<'_, D>,
2813            offset: usize,
2814            _depth: fidl::encoding::Depth,
2815        ) -> fidl::Result<()> {
2816            encoder.debug_check_bounds::<ConnectConfirm>(offset);
2817            // Delegate to tuple encoding.
2818            fidl::encoding::Encode::<ConnectConfirm, D>::encode(
2819                (
2820                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
2821                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
2822                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
2823                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
2824                ),
2825                encoder, offset, _depth
2826            )
2827        }
2828    }
2829    unsafe impl<
2830            D: fidl::encoding::ResourceDialect,
2831            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2832            T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
2833            T2: fidl::encoding::Encode<u16, D>,
2834            T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2835        > fidl::encoding::Encode<ConnectConfirm, D> for (T0, T1, T2, T3)
2836    {
2837        #[inline]
2838        unsafe fn encode(
2839            self,
2840            encoder: &mut fidl::encoding::Encoder<'_, D>,
2841            offset: usize,
2842            depth: fidl::encoding::Depth,
2843        ) -> fidl::Result<()> {
2844            encoder.debug_check_bounds::<ConnectConfirm>(offset);
2845            // Zero out padding regions. There's no need to apply masks
2846            // because the unmasked parts will be overwritten by fields.
2847            unsafe {
2848                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2849                (ptr as *mut u64).write_unaligned(0);
2850            }
2851            // Write the fields.
2852            self.0.encode(encoder, offset + 0, depth)?;
2853            self.1.encode(encoder, offset + 6, depth)?;
2854            self.2.encode(encoder, offset + 8, depth)?;
2855            self.3.encode(encoder, offset + 16, depth)?;
2856            Ok(())
2857        }
2858    }
2859
2860    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectConfirm {
2861        #[inline(always)]
2862        fn new_empty() -> Self {
2863            Self {
2864                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2865                result_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
2866                association_id: fidl::new_empty!(u16, D),
2867                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
2868            }
2869        }
2870
2871        #[inline]
2872        unsafe fn decode(
2873            &mut self,
2874            decoder: &mut fidl::encoding::Decoder<'_, D>,
2875            offset: usize,
2876            _depth: fidl::encoding::Depth,
2877        ) -> fidl::Result<()> {
2878            decoder.debug_check_bounds::<Self>(offset);
2879            // Verify that padding bytes are zero.
2880            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2881            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2882            let mask = 0xffffffffffff0000u64;
2883            let maskedval = padval & mask;
2884            if maskedval != 0 {
2885                return Err(fidl::Error::NonZeroPadding {
2886                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2887                });
2888            }
2889            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2890            fidl::decode!(
2891                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
2892                D,
2893                &mut self.result_code,
2894                decoder,
2895                offset + 6,
2896                _depth
2897            )?;
2898            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 8, _depth)?;
2899            fidl::decode!(
2900                fidl::encoding::UnboundedVector<u8>,
2901                D,
2902                &mut self.association_ies,
2903                decoder,
2904                offset + 16,
2905                _depth
2906            )?;
2907            Ok(())
2908        }
2909    }
2910
2911    impl fidl::encoding::ValueTypeMarker for ConnectRequest {
2912        type Borrowed<'a> = &'a Self;
2913        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2914            value
2915        }
2916    }
2917
2918    unsafe impl fidl::encoding::TypeMarker for ConnectRequest {
2919        type Owned = Self;
2920
2921        #[inline(always)]
2922        fn inline_align(_context: fidl::encoding::Context) -> usize {
2923            8
2924        }
2925
2926        #[inline(always)]
2927        fn inline_size(_context: fidl::encoding::Context) -> usize {
2928            96
2929        }
2930    }
2931
2932    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectRequest, D>
2933        for &ConnectRequest
2934    {
2935        #[inline]
2936        unsafe fn encode(
2937            self,
2938            encoder: &mut fidl::encoding::Encoder<'_, D>,
2939            offset: usize,
2940            _depth: fidl::encoding::Depth,
2941        ) -> fidl::Result<()> {
2942            encoder.debug_check_bounds::<ConnectRequest>(offset);
2943            // Delegate to tuple encoding.
2944            fidl::encoding::Encode::<ConnectRequest, D>::encode(
2945                (
2946                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
2947                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.connect_failure_timeout),
2948                    <AuthenticationTypes as fidl::encoding::ValueTypeMarker>::borrow(&self.auth_type),
2949                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.sae_password),
2950                    <fidl::encoding::Boxed<SetKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.wep_key),
2951                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow(&self.security_ie),
2952                ),
2953                encoder, offset, _depth
2954            )
2955        }
2956    }
2957    unsafe impl<
2958            D: fidl::encoding::ResourceDialect,
2959            T0: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
2960            T1: fidl::encoding::Encode<u32, D>,
2961            T2: fidl::encoding::Encode<AuthenticationTypes, D>,
2962            T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2963            T4: fidl::encoding::Encode<fidl::encoding::Boxed<SetKeyDescriptor>, D>,
2964            T5: fidl::encoding::Encode<fidl::encoding::Vector<u8, 257>, D>,
2965        > fidl::encoding::Encode<ConnectRequest, D> for (T0, T1, T2, T3, T4, T5)
2966    {
2967        #[inline]
2968        unsafe fn encode(
2969            self,
2970            encoder: &mut fidl::encoding::Encoder<'_, D>,
2971            offset: usize,
2972            depth: fidl::encoding::Depth,
2973        ) -> fidl::Result<()> {
2974            encoder.debug_check_bounds::<ConnectRequest>(offset);
2975            // Zero out padding regions. There's no need to apply masks
2976            // because the unmasked parts will be overwritten by fields.
2977            // Write the fields.
2978            self.0.encode(encoder, offset + 0, depth)?;
2979            self.1.encode(encoder, offset + 48, depth)?;
2980            self.2.encode(encoder, offset + 52, depth)?;
2981            self.3.encode(encoder, offset + 56, depth)?;
2982            self.4.encode(encoder, offset + 72, depth)?;
2983            self.5.encode(encoder, offset + 80, depth)?;
2984            Ok(())
2985        }
2986    }
2987
2988    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectRequest {
2989        #[inline(always)]
2990        fn new_empty() -> Self {
2991            Self {
2992                selected_bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
2993                connect_failure_timeout: fidl::new_empty!(u32, D),
2994                auth_type: fidl::new_empty!(AuthenticationTypes, D),
2995                sae_password: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
2996                wep_key: fidl::new_empty!(fidl::encoding::Boxed<SetKeyDescriptor>, D),
2997                security_ie: fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D),
2998            }
2999        }
3000
3001        #[inline]
3002        unsafe fn decode(
3003            &mut self,
3004            decoder: &mut fidl::encoding::Decoder<'_, D>,
3005            offset: usize,
3006            _depth: fidl::encoding::Depth,
3007        ) -> fidl::Result<()> {
3008            decoder.debug_check_bounds::<Self>(offset);
3009            // Verify that padding bytes are zero.
3010            fidl::decode!(
3011                fidl_fuchsia_wlan_common__common::BssDescription,
3012                D,
3013                &mut self.selected_bss,
3014                decoder,
3015                offset + 0,
3016                _depth
3017            )?;
3018            fidl::decode!(u32, D, &mut self.connect_failure_timeout, decoder, offset + 48, _depth)?;
3019            fidl::decode!(
3020                AuthenticationTypes,
3021                D,
3022                &mut self.auth_type,
3023                decoder,
3024                offset + 52,
3025                _depth
3026            )?;
3027            fidl::decode!(
3028                fidl::encoding::UnboundedVector<u8>,
3029                D,
3030                &mut self.sae_password,
3031                decoder,
3032                offset + 56,
3033                _depth
3034            )?;
3035            fidl::decode!(
3036                fidl::encoding::Boxed<SetKeyDescriptor>,
3037                D,
3038                &mut self.wep_key,
3039                decoder,
3040                offset + 72,
3041                _depth
3042            )?;
3043            fidl::decode!(fidl::encoding::Vector<u8, 257>, D, &mut self.security_ie, decoder, offset + 80, _depth)?;
3044            Ok(())
3045        }
3046    }
3047
3048    impl fidl::encoding::ValueTypeMarker for Country {
3049        type Borrowed<'a> = &'a Self;
3050        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3051            value
3052        }
3053    }
3054
3055    unsafe impl fidl::encoding::TypeMarker for Country {
3056        type Owned = Self;
3057
3058        #[inline(always)]
3059        fn inline_align(_context: fidl::encoding::Context) -> usize {
3060            1
3061        }
3062
3063        #[inline(always)]
3064        fn inline_size(_context: fidl::encoding::Context) -> usize {
3065            3
3066        }
3067        #[inline(always)]
3068        fn encode_is_copy() -> bool {
3069            true
3070        }
3071
3072        #[inline(always)]
3073        fn decode_is_copy() -> bool {
3074            true
3075        }
3076    }
3077
3078    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Country, D> for &Country {
3079        #[inline]
3080        unsafe fn encode(
3081            self,
3082            encoder: &mut fidl::encoding::Encoder<'_, D>,
3083            offset: usize,
3084            _depth: fidl::encoding::Depth,
3085        ) -> fidl::Result<()> {
3086            encoder.debug_check_bounds::<Country>(offset);
3087            unsafe {
3088                // Copy the object into the buffer.
3089                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3090                (buf_ptr as *mut Country).write_unaligned((self as *const Country).read());
3091                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3092                // done second because the memcpy will write garbage to these bytes.
3093            }
3094            Ok(())
3095        }
3096    }
3097    unsafe impl<
3098            D: fidl::encoding::ResourceDialect,
3099            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 2>, D>,
3100            T1: fidl::encoding::Encode<u8, D>,
3101        > fidl::encoding::Encode<Country, D> for (T0, T1)
3102    {
3103        #[inline]
3104        unsafe fn encode(
3105            self,
3106            encoder: &mut fidl::encoding::Encoder<'_, D>,
3107            offset: usize,
3108            depth: fidl::encoding::Depth,
3109        ) -> fidl::Result<()> {
3110            encoder.debug_check_bounds::<Country>(offset);
3111            // Zero out padding regions. There's no need to apply masks
3112            // because the unmasked parts will be overwritten by fields.
3113            // Write the fields.
3114            self.0.encode(encoder, offset + 0, depth)?;
3115            self.1.encode(encoder, offset + 2, depth)?;
3116            Ok(())
3117        }
3118    }
3119
3120    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Country {
3121        #[inline(always)]
3122        fn new_empty() -> Self {
3123            Self {
3124                alpha2: fidl::new_empty!(fidl::encoding::Array<u8, 2>, D),
3125                suffix: fidl::new_empty!(u8, D),
3126            }
3127        }
3128
3129        #[inline]
3130        unsafe fn decode(
3131            &mut self,
3132            decoder: &mut fidl::encoding::Decoder<'_, D>,
3133            offset: usize,
3134            _depth: fidl::encoding::Depth,
3135        ) -> fidl::Result<()> {
3136            decoder.debug_check_bounds::<Self>(offset);
3137            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3138            // Verify that padding bytes are zero.
3139            // Copy from the buffer into the object.
3140            unsafe {
3141                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 3);
3142            }
3143            Ok(())
3144        }
3145    }
3146
3147    impl fidl::encoding::ValueTypeMarker for DeauthenticateConfirm {
3148        type Borrowed<'a> = &'a Self;
3149        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3150            value
3151        }
3152    }
3153
3154    unsafe impl fidl::encoding::TypeMarker for DeauthenticateConfirm {
3155        type Owned = Self;
3156
3157        #[inline(always)]
3158        fn inline_align(_context: fidl::encoding::Context) -> usize {
3159            1
3160        }
3161
3162        #[inline(always)]
3163        fn inline_size(_context: fidl::encoding::Context) -> usize {
3164            6
3165        }
3166        #[inline(always)]
3167        fn encode_is_copy() -> bool {
3168            true
3169        }
3170
3171        #[inline(always)]
3172        fn decode_is_copy() -> bool {
3173            true
3174        }
3175    }
3176
3177    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeauthenticateConfirm, D>
3178        for &DeauthenticateConfirm
3179    {
3180        #[inline]
3181        unsafe fn encode(
3182            self,
3183            encoder: &mut fidl::encoding::Encoder<'_, D>,
3184            offset: usize,
3185            _depth: fidl::encoding::Depth,
3186        ) -> fidl::Result<()> {
3187            encoder.debug_check_bounds::<DeauthenticateConfirm>(offset);
3188            unsafe {
3189                // Copy the object into the buffer.
3190                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3191                (buf_ptr as *mut DeauthenticateConfirm)
3192                    .write_unaligned((self as *const DeauthenticateConfirm).read());
3193                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3194                // done second because the memcpy will write garbage to these bytes.
3195            }
3196            Ok(())
3197        }
3198    }
3199    unsafe impl<
3200            D: fidl::encoding::ResourceDialect,
3201            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3202        > fidl::encoding::Encode<DeauthenticateConfirm, D> for (T0,)
3203    {
3204        #[inline]
3205        unsafe fn encode(
3206            self,
3207            encoder: &mut fidl::encoding::Encoder<'_, D>,
3208            offset: usize,
3209            depth: fidl::encoding::Depth,
3210        ) -> fidl::Result<()> {
3211            encoder.debug_check_bounds::<DeauthenticateConfirm>(offset);
3212            // Zero out padding regions. There's no need to apply masks
3213            // because the unmasked parts will be overwritten by fields.
3214            // Write the fields.
3215            self.0.encode(encoder, offset + 0, depth)?;
3216            Ok(())
3217        }
3218    }
3219
3220    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeauthenticateConfirm {
3221        #[inline(always)]
3222        fn new_empty() -> Self {
3223            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
3224        }
3225
3226        #[inline]
3227        unsafe fn decode(
3228            &mut self,
3229            decoder: &mut fidl::encoding::Decoder<'_, D>,
3230            offset: usize,
3231            _depth: fidl::encoding::Depth,
3232        ) -> fidl::Result<()> {
3233            decoder.debug_check_bounds::<Self>(offset);
3234            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3235            // Verify that padding bytes are zero.
3236            // Copy from the buffer into the object.
3237            unsafe {
3238                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
3239            }
3240            Ok(())
3241        }
3242    }
3243
3244    impl fidl::encoding::ValueTypeMarker for DeauthenticateIndication {
3245        type Borrowed<'a> = &'a Self;
3246        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3247            value
3248        }
3249    }
3250
3251    unsafe impl fidl::encoding::TypeMarker for DeauthenticateIndication {
3252        type Owned = Self;
3253
3254        #[inline(always)]
3255        fn inline_align(_context: fidl::encoding::Context) -> usize {
3256            2
3257        }
3258
3259        #[inline(always)]
3260        fn inline_size(_context: fidl::encoding::Context) -> usize {
3261            10
3262        }
3263    }
3264
3265    unsafe impl<D: fidl::encoding::ResourceDialect>
3266        fidl::encoding::Encode<DeauthenticateIndication, D> for &DeauthenticateIndication
3267    {
3268        #[inline]
3269        unsafe fn encode(
3270            self,
3271            encoder: &mut fidl::encoding::Encoder<'_, D>,
3272            offset: usize,
3273            _depth: fidl::encoding::Depth,
3274        ) -> fidl::Result<()> {
3275            encoder.debug_check_bounds::<DeauthenticateIndication>(offset);
3276            // Delegate to tuple encoding.
3277            fidl::encoding::Encode::<DeauthenticateIndication, D>::encode(
3278                (
3279                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3280                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3281                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.locally_initiated),
3282                ),
3283                encoder, offset, _depth
3284            )
3285        }
3286    }
3287    unsafe impl<
3288            D: fidl::encoding::ResourceDialect,
3289            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3290            T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
3291            T2: fidl::encoding::Encode<bool, D>,
3292        > fidl::encoding::Encode<DeauthenticateIndication, D> for (T0, T1, T2)
3293    {
3294        #[inline]
3295        unsafe fn encode(
3296            self,
3297            encoder: &mut fidl::encoding::Encoder<'_, D>,
3298            offset: usize,
3299            depth: fidl::encoding::Depth,
3300        ) -> fidl::Result<()> {
3301            encoder.debug_check_bounds::<DeauthenticateIndication>(offset);
3302            // Zero out padding regions. There's no need to apply masks
3303            // because the unmasked parts will be overwritten by fields.
3304            unsafe {
3305                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3306                (ptr as *mut u16).write_unaligned(0);
3307            }
3308            // Write the fields.
3309            self.0.encode(encoder, offset + 0, depth)?;
3310            self.1.encode(encoder, offset + 6, depth)?;
3311            self.2.encode(encoder, offset + 8, depth)?;
3312            Ok(())
3313        }
3314    }
3315
3316    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3317        for DeauthenticateIndication
3318    {
3319        #[inline(always)]
3320        fn new_empty() -> Self {
3321            Self {
3322                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3323                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
3324                locally_initiated: fidl::new_empty!(bool, D),
3325            }
3326        }
3327
3328        #[inline]
3329        unsafe fn decode(
3330            &mut self,
3331            decoder: &mut fidl::encoding::Decoder<'_, D>,
3332            offset: usize,
3333            _depth: fidl::encoding::Depth,
3334        ) -> fidl::Result<()> {
3335            decoder.debug_check_bounds::<Self>(offset);
3336            // Verify that padding bytes are zero.
3337            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
3338            let padval = unsafe { (ptr as *const u16).read_unaligned() };
3339            let mask = 0xff00u16;
3340            let maskedval = padval & mask;
3341            if maskedval != 0 {
3342                return Err(fidl::Error::NonZeroPadding {
3343                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
3344                });
3345            }
3346            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
3347            fidl::decode!(
3348                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
3349                D,
3350                &mut self.reason_code,
3351                decoder,
3352                offset + 6,
3353                _depth
3354            )?;
3355            fidl::decode!(bool, D, &mut self.locally_initiated, decoder, offset + 8, _depth)?;
3356            Ok(())
3357        }
3358    }
3359
3360    impl fidl::encoding::ValueTypeMarker for DeauthenticateRequest {
3361        type Borrowed<'a> = &'a Self;
3362        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3363            value
3364        }
3365    }
3366
3367    unsafe impl fidl::encoding::TypeMarker for DeauthenticateRequest {
3368        type Owned = Self;
3369
3370        #[inline(always)]
3371        fn inline_align(_context: fidl::encoding::Context) -> usize {
3372            2
3373        }
3374
3375        #[inline(always)]
3376        fn inline_size(_context: fidl::encoding::Context) -> usize {
3377            8
3378        }
3379    }
3380
3381    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeauthenticateRequest, D>
3382        for &DeauthenticateRequest
3383    {
3384        #[inline]
3385        unsafe fn encode(
3386            self,
3387            encoder: &mut fidl::encoding::Encoder<'_, D>,
3388            offset: usize,
3389            _depth: fidl::encoding::Depth,
3390        ) -> fidl::Result<()> {
3391            encoder.debug_check_bounds::<DeauthenticateRequest>(offset);
3392            // Delegate to tuple encoding.
3393            fidl::encoding::Encode::<DeauthenticateRequest, D>::encode(
3394                (
3395                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3396                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3397                ),
3398                encoder, offset, _depth
3399            )
3400        }
3401    }
3402    unsafe impl<
3403            D: fidl::encoding::ResourceDialect,
3404            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3405            T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
3406        > fidl::encoding::Encode<DeauthenticateRequest, D> for (T0, T1)
3407    {
3408        #[inline]
3409        unsafe fn encode(
3410            self,
3411            encoder: &mut fidl::encoding::Encoder<'_, D>,
3412            offset: usize,
3413            depth: fidl::encoding::Depth,
3414        ) -> fidl::Result<()> {
3415            encoder.debug_check_bounds::<DeauthenticateRequest>(offset);
3416            // Zero out padding regions. There's no need to apply masks
3417            // because the unmasked parts will be overwritten by fields.
3418            // Write the fields.
3419            self.0.encode(encoder, offset + 0, depth)?;
3420            self.1.encode(encoder, offset + 6, depth)?;
3421            Ok(())
3422        }
3423    }
3424
3425    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeauthenticateRequest {
3426        #[inline(always)]
3427        fn new_empty() -> Self {
3428            Self {
3429                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3430                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
3431            }
3432        }
3433
3434        #[inline]
3435        unsafe fn decode(
3436            &mut self,
3437            decoder: &mut fidl::encoding::Decoder<'_, D>,
3438            offset: usize,
3439            _depth: fidl::encoding::Depth,
3440        ) -> fidl::Result<()> {
3441            decoder.debug_check_bounds::<Self>(offset);
3442            // Verify that padding bytes are zero.
3443            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
3444            fidl::decode!(
3445                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
3446                D,
3447                &mut self.reason_code,
3448                decoder,
3449                offset + 6,
3450                _depth
3451            )?;
3452            Ok(())
3453        }
3454    }
3455
3456    impl fidl::encoding::ValueTypeMarker for DeleteKeyDescriptor {
3457        type Borrowed<'a> = &'a Self;
3458        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3459            value
3460        }
3461    }
3462
3463    unsafe impl fidl::encoding::TypeMarker for DeleteKeyDescriptor {
3464        type Owned = Self;
3465
3466        #[inline(always)]
3467        fn inline_align(_context: fidl::encoding::Context) -> usize {
3468            4
3469        }
3470
3471        #[inline(always)]
3472        fn inline_size(_context: fidl::encoding::Context) -> usize {
3473            16
3474        }
3475    }
3476
3477    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeleteKeyDescriptor, D>
3478        for &DeleteKeyDescriptor
3479    {
3480        #[inline]
3481        unsafe fn encode(
3482            self,
3483            encoder: &mut fidl::encoding::Encoder<'_, D>,
3484            offset: usize,
3485            _depth: fidl::encoding::Depth,
3486        ) -> fidl::Result<()> {
3487            encoder.debug_check_bounds::<DeleteKeyDescriptor>(offset);
3488            // Delegate to tuple encoding.
3489            fidl::encoding::Encode::<DeleteKeyDescriptor, D>::encode(
3490                (
3491                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.key_id),
3492                    <KeyType as fidl::encoding::ValueTypeMarker>::borrow(&self.key_type),
3493                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
3494                        &self.address,
3495                    ),
3496                ),
3497                encoder,
3498                offset,
3499                _depth,
3500            )
3501        }
3502    }
3503    unsafe impl<
3504            D: fidl::encoding::ResourceDialect,
3505            T0: fidl::encoding::Encode<u16, D>,
3506            T1: fidl::encoding::Encode<KeyType, D>,
3507            T2: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3508        > fidl::encoding::Encode<DeleteKeyDescriptor, D> for (T0, T1, T2)
3509    {
3510        #[inline]
3511        unsafe fn encode(
3512            self,
3513            encoder: &mut fidl::encoding::Encoder<'_, D>,
3514            offset: usize,
3515            depth: fidl::encoding::Depth,
3516        ) -> fidl::Result<()> {
3517            encoder.debug_check_bounds::<DeleteKeyDescriptor>(offset);
3518            // Zero out padding regions. There's no need to apply masks
3519            // because the unmasked parts will be overwritten by fields.
3520            unsafe {
3521                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3522                (ptr as *mut u32).write_unaligned(0);
3523            }
3524            unsafe {
3525                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(12);
3526                (ptr as *mut u32).write_unaligned(0);
3527            }
3528            // Write the fields.
3529            self.0.encode(encoder, offset + 0, depth)?;
3530            self.1.encode(encoder, offset + 4, depth)?;
3531            self.2.encode(encoder, offset + 8, depth)?;
3532            Ok(())
3533        }
3534    }
3535
3536    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeleteKeyDescriptor {
3537        #[inline(always)]
3538        fn new_empty() -> Self {
3539            Self {
3540                key_id: fidl::new_empty!(u16, D),
3541                key_type: fidl::new_empty!(KeyType, D),
3542                address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3543            }
3544        }
3545
3546        #[inline]
3547        unsafe fn decode(
3548            &mut self,
3549            decoder: &mut fidl::encoding::Decoder<'_, D>,
3550            offset: usize,
3551            _depth: fidl::encoding::Depth,
3552        ) -> fidl::Result<()> {
3553            decoder.debug_check_bounds::<Self>(offset);
3554            // Verify that padding bytes are zero.
3555            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3556            let padval = unsafe { (ptr as *const u32).read_unaligned() };
3557            let mask = 0xffff0000u32;
3558            let maskedval = padval & mask;
3559            if maskedval != 0 {
3560                return Err(fidl::Error::NonZeroPadding {
3561                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3562                });
3563            }
3564            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(12) };
3565            let padval = unsafe { (ptr as *const u32).read_unaligned() };
3566            let mask = 0xffff0000u32;
3567            let maskedval = padval & mask;
3568            if maskedval != 0 {
3569                return Err(fidl::Error::NonZeroPadding {
3570                    padding_start: offset + 12 + ((mask as u64).trailing_zeros() / 8) as usize,
3571                });
3572            }
3573            fidl::decode!(u16, D, &mut self.key_id, decoder, offset + 0, _depth)?;
3574            fidl::decode!(KeyType, D, &mut self.key_type, decoder, offset + 4, _depth)?;
3575            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.address, decoder, offset + 8, _depth)?;
3576            Ok(())
3577        }
3578    }
3579
3580    impl fidl::encoding::ValueTypeMarker for DeleteKeysRequest {
3581        type Borrowed<'a> = &'a Self;
3582        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3583            value
3584        }
3585    }
3586
3587    unsafe impl fidl::encoding::TypeMarker for DeleteKeysRequest {
3588        type Owned = Self;
3589
3590        #[inline(always)]
3591        fn inline_align(_context: fidl::encoding::Context) -> usize {
3592            8
3593        }
3594
3595        #[inline(always)]
3596        fn inline_size(_context: fidl::encoding::Context) -> usize {
3597            16
3598        }
3599    }
3600
3601    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeleteKeysRequest, D>
3602        for &DeleteKeysRequest
3603    {
3604        #[inline]
3605        unsafe fn encode(
3606            self,
3607            encoder: &mut fidl::encoding::Encoder<'_, D>,
3608            offset: usize,
3609            _depth: fidl::encoding::Depth,
3610        ) -> fidl::Result<()> {
3611            encoder.debug_check_bounds::<DeleteKeysRequest>(offset);
3612            // Delegate to tuple encoding.
3613            fidl::encoding::Encode::<DeleteKeysRequest, D>::encode(
3614                (
3615                    <fidl::encoding::UnboundedVector<DeleteKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.keylist),
3616                ),
3617                encoder, offset, _depth
3618            )
3619        }
3620    }
3621    unsafe impl<
3622            D: fidl::encoding::ResourceDialect,
3623            T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<DeleteKeyDescriptor>, D>,
3624        > fidl::encoding::Encode<DeleteKeysRequest, D> for (T0,)
3625    {
3626        #[inline]
3627        unsafe fn encode(
3628            self,
3629            encoder: &mut fidl::encoding::Encoder<'_, D>,
3630            offset: usize,
3631            depth: fidl::encoding::Depth,
3632        ) -> fidl::Result<()> {
3633            encoder.debug_check_bounds::<DeleteKeysRequest>(offset);
3634            // Zero out padding regions. There's no need to apply masks
3635            // because the unmasked parts will be overwritten by fields.
3636            // Write the fields.
3637            self.0.encode(encoder, offset + 0, depth)?;
3638            Ok(())
3639        }
3640    }
3641
3642    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeleteKeysRequest {
3643        #[inline(always)]
3644        fn new_empty() -> Self {
3645            Self {
3646                keylist: fidl::new_empty!(fidl::encoding::UnboundedVector<DeleteKeyDescriptor>, D),
3647            }
3648        }
3649
3650        #[inline]
3651        unsafe fn decode(
3652            &mut self,
3653            decoder: &mut fidl::encoding::Decoder<'_, D>,
3654            offset: usize,
3655            _depth: fidl::encoding::Depth,
3656        ) -> fidl::Result<()> {
3657            decoder.debug_check_bounds::<Self>(offset);
3658            // Verify that padding bytes are zero.
3659            fidl::decode!(
3660                fidl::encoding::UnboundedVector<DeleteKeyDescriptor>,
3661                D,
3662                &mut self.keylist,
3663                decoder,
3664                offset + 0,
3665                _depth
3666            )?;
3667            Ok(())
3668        }
3669    }
3670
3671    impl fidl::encoding::ValueTypeMarker for DeviceInfo {
3672        type Borrowed<'a> = &'a Self;
3673        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3674            value
3675        }
3676    }
3677
3678    unsafe impl fidl::encoding::TypeMarker for DeviceInfo {
3679        type Owned = Self;
3680
3681        #[inline(always)]
3682        fn inline_align(_context: fidl::encoding::Context) -> usize {
3683            8
3684        }
3685
3686        #[inline(always)]
3687        fn inline_size(_context: fidl::encoding::Context) -> usize {
3688            40
3689        }
3690    }
3691
3692    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceInfo, D>
3693        for &DeviceInfo
3694    {
3695        #[inline]
3696        unsafe fn encode(
3697            self,
3698            encoder: &mut fidl::encoding::Encoder<'_, D>,
3699            offset: usize,
3700            _depth: fidl::encoding::Depth,
3701        ) -> fidl::Result<()> {
3702            encoder.debug_check_bounds::<DeviceInfo>(offset);
3703            // Delegate to tuple encoding.
3704            fidl::encoding::Encode::<DeviceInfo, D>::encode(
3705                (
3706                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.sta_addr),
3707                    <fidl_fuchsia_wlan_common__common::WlanMacRole as fidl::encoding::ValueTypeMarker>::borrow(&self.role),
3708                    <fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::ValueTypeMarker>::borrow(&self.bands),
3709                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.softmac_hardware_capability),
3710                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.qos_capable),
3711                ),
3712                encoder, offset, _depth
3713            )
3714        }
3715    }
3716    unsafe impl<
3717            D: fidl::encoding::ResourceDialect,
3718            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3719            T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::WlanMacRole, D>,
3720            T2: fidl::encoding::Encode<fidl::encoding::Vector<BandCapability, 16>, D>,
3721            T3: fidl::encoding::Encode<u32, D>,
3722            T4: fidl::encoding::Encode<bool, D>,
3723        > fidl::encoding::Encode<DeviceInfo, D> for (T0, T1, T2, T3, T4)
3724    {
3725        #[inline]
3726        unsafe fn encode(
3727            self,
3728            encoder: &mut fidl::encoding::Encoder<'_, D>,
3729            offset: usize,
3730            depth: fidl::encoding::Depth,
3731        ) -> fidl::Result<()> {
3732            encoder.debug_check_bounds::<DeviceInfo>(offset);
3733            // Zero out padding regions. There's no need to apply masks
3734            // because the unmasked parts will be overwritten by fields.
3735            unsafe {
3736                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3737                (ptr as *mut u64).write_unaligned(0);
3738            }
3739            unsafe {
3740                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3741                (ptr as *mut u64).write_unaligned(0);
3742            }
3743            unsafe {
3744                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
3745                (ptr as *mut u64).write_unaligned(0);
3746            }
3747            // Write the fields.
3748            self.0.encode(encoder, offset + 0, depth)?;
3749            self.1.encode(encoder, offset + 8, depth)?;
3750            self.2.encode(encoder, offset + 16, depth)?;
3751            self.3.encode(encoder, offset + 32, depth)?;
3752            self.4.encode(encoder, offset + 36, depth)?;
3753            Ok(())
3754        }
3755    }
3756
3757    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceInfo {
3758        #[inline(always)]
3759        fn new_empty() -> Self {
3760            Self {
3761                sta_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3762                role: fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanMacRole, D),
3763                bands: fidl::new_empty!(fidl::encoding::Vector<BandCapability, 16>, D),
3764                softmac_hardware_capability: fidl::new_empty!(u32, D),
3765                qos_capable: fidl::new_empty!(bool, D),
3766            }
3767        }
3768
3769        #[inline]
3770        unsafe fn decode(
3771            &mut self,
3772            decoder: &mut fidl::encoding::Decoder<'_, D>,
3773            offset: usize,
3774            _depth: fidl::encoding::Depth,
3775        ) -> fidl::Result<()> {
3776            decoder.debug_check_bounds::<Self>(offset);
3777            // Verify that padding bytes are zero.
3778            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3779            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3780            let mask = 0xffff000000000000u64;
3781            let maskedval = padval & mask;
3782            if maskedval != 0 {
3783                return Err(fidl::Error::NonZeroPadding {
3784                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3785                });
3786            }
3787            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
3788            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3789            let mask = 0xffffffff00000000u64;
3790            let maskedval = padval & mask;
3791            if maskedval != 0 {
3792                return Err(fidl::Error::NonZeroPadding {
3793                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
3794                });
3795            }
3796            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
3797            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3798            let mask = 0xffffff0000000000u64;
3799            let maskedval = padval & mask;
3800            if maskedval != 0 {
3801                return Err(fidl::Error::NonZeroPadding {
3802                    padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
3803                });
3804            }
3805            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.sta_addr, decoder, offset + 0, _depth)?;
3806            fidl::decode!(
3807                fidl_fuchsia_wlan_common__common::WlanMacRole,
3808                D,
3809                &mut self.role,
3810                decoder,
3811                offset + 8,
3812                _depth
3813            )?;
3814            fidl::decode!(fidl::encoding::Vector<BandCapability, 16>, D, &mut self.bands, decoder, offset + 16, _depth)?;
3815            fidl::decode!(
3816                u32,
3817                D,
3818                &mut self.softmac_hardware_capability,
3819                decoder,
3820                offset + 32,
3821                _depth
3822            )?;
3823            fidl::decode!(bool, D, &mut self.qos_capable, decoder, offset + 36, _depth)?;
3824            Ok(())
3825        }
3826    }
3827
3828    impl fidl::encoding::ValueTypeMarker for DisassociateConfirm {
3829        type Borrowed<'a> = &'a Self;
3830        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3831            value
3832        }
3833    }
3834
3835    unsafe impl fidl::encoding::TypeMarker for DisassociateConfirm {
3836        type Owned = Self;
3837
3838        #[inline(always)]
3839        fn inline_align(_context: fidl::encoding::Context) -> usize {
3840            4
3841        }
3842
3843        #[inline(always)]
3844        fn inline_size(_context: fidl::encoding::Context) -> usize {
3845            4
3846        }
3847        #[inline(always)]
3848        fn encode_is_copy() -> bool {
3849            true
3850        }
3851
3852        #[inline(always)]
3853        fn decode_is_copy() -> bool {
3854            true
3855        }
3856    }
3857
3858    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisassociateConfirm, D>
3859        for &DisassociateConfirm
3860    {
3861        #[inline]
3862        unsafe fn encode(
3863            self,
3864            encoder: &mut fidl::encoding::Encoder<'_, D>,
3865            offset: usize,
3866            _depth: fidl::encoding::Depth,
3867        ) -> fidl::Result<()> {
3868            encoder.debug_check_bounds::<DisassociateConfirm>(offset);
3869            unsafe {
3870                // Copy the object into the buffer.
3871                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3872                (buf_ptr as *mut DisassociateConfirm)
3873                    .write_unaligned((self as *const DisassociateConfirm).read());
3874                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3875                // done second because the memcpy will write garbage to these bytes.
3876            }
3877            Ok(())
3878        }
3879    }
3880    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
3881        fidl::encoding::Encode<DisassociateConfirm, D> for (T0,)
3882    {
3883        #[inline]
3884        unsafe fn encode(
3885            self,
3886            encoder: &mut fidl::encoding::Encoder<'_, D>,
3887            offset: usize,
3888            depth: fidl::encoding::Depth,
3889        ) -> fidl::Result<()> {
3890            encoder.debug_check_bounds::<DisassociateConfirm>(offset);
3891            // Zero out padding regions. There's no need to apply masks
3892            // because the unmasked parts will be overwritten by fields.
3893            // Write the fields.
3894            self.0.encode(encoder, offset + 0, depth)?;
3895            Ok(())
3896        }
3897    }
3898
3899    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisassociateConfirm {
3900        #[inline(always)]
3901        fn new_empty() -> Self {
3902            Self { status: fidl::new_empty!(i32, D) }
3903        }
3904
3905        #[inline]
3906        unsafe fn decode(
3907            &mut self,
3908            decoder: &mut fidl::encoding::Decoder<'_, D>,
3909            offset: usize,
3910            _depth: fidl::encoding::Depth,
3911        ) -> fidl::Result<()> {
3912            decoder.debug_check_bounds::<Self>(offset);
3913            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3914            // Verify that padding bytes are zero.
3915            // Copy from the buffer into the object.
3916            unsafe {
3917                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
3918            }
3919            Ok(())
3920        }
3921    }
3922
3923    impl fidl::encoding::ValueTypeMarker for DisassociateIndication {
3924        type Borrowed<'a> = &'a Self;
3925        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3926            value
3927        }
3928    }
3929
3930    unsafe impl fidl::encoding::TypeMarker for DisassociateIndication {
3931        type Owned = Self;
3932
3933        #[inline(always)]
3934        fn inline_align(_context: fidl::encoding::Context) -> usize {
3935            2
3936        }
3937
3938        #[inline(always)]
3939        fn inline_size(_context: fidl::encoding::Context) -> usize {
3940            10
3941        }
3942    }
3943
3944    unsafe impl<D: fidl::encoding::ResourceDialect>
3945        fidl::encoding::Encode<DisassociateIndication, D> for &DisassociateIndication
3946    {
3947        #[inline]
3948        unsafe fn encode(
3949            self,
3950            encoder: &mut fidl::encoding::Encoder<'_, D>,
3951            offset: usize,
3952            _depth: fidl::encoding::Depth,
3953        ) -> fidl::Result<()> {
3954            encoder.debug_check_bounds::<DisassociateIndication>(offset);
3955            // Delegate to tuple encoding.
3956            fidl::encoding::Encode::<DisassociateIndication, D>::encode(
3957                (
3958                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3959                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3960                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.locally_initiated),
3961                ),
3962                encoder, offset, _depth
3963            )
3964        }
3965    }
3966    unsafe impl<
3967            D: fidl::encoding::ResourceDialect,
3968            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3969            T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
3970            T2: fidl::encoding::Encode<bool, D>,
3971        > fidl::encoding::Encode<DisassociateIndication, D> for (T0, T1, T2)
3972    {
3973        #[inline]
3974        unsafe fn encode(
3975            self,
3976            encoder: &mut fidl::encoding::Encoder<'_, D>,
3977            offset: usize,
3978            depth: fidl::encoding::Depth,
3979        ) -> fidl::Result<()> {
3980            encoder.debug_check_bounds::<DisassociateIndication>(offset);
3981            // Zero out padding regions. There's no need to apply masks
3982            // because the unmasked parts will be overwritten by fields.
3983            unsafe {
3984                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3985                (ptr as *mut u16).write_unaligned(0);
3986            }
3987            // Write the fields.
3988            self.0.encode(encoder, offset + 0, depth)?;
3989            self.1.encode(encoder, offset + 6, depth)?;
3990            self.2.encode(encoder, offset + 8, depth)?;
3991            Ok(())
3992        }
3993    }
3994
3995    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3996        for DisassociateIndication
3997    {
3998        #[inline(always)]
3999        fn new_empty() -> Self {
4000            Self {
4001                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4002                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
4003                locally_initiated: fidl::new_empty!(bool, D),
4004            }
4005        }
4006
4007        #[inline]
4008        unsafe fn decode(
4009            &mut self,
4010            decoder: &mut fidl::encoding::Decoder<'_, D>,
4011            offset: usize,
4012            _depth: fidl::encoding::Depth,
4013        ) -> fidl::Result<()> {
4014            decoder.debug_check_bounds::<Self>(offset);
4015            // Verify that padding bytes are zero.
4016            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4017            let padval = unsafe { (ptr as *const u16).read_unaligned() };
4018            let mask = 0xff00u16;
4019            let maskedval = padval & mask;
4020            if maskedval != 0 {
4021                return Err(fidl::Error::NonZeroPadding {
4022                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4023                });
4024            }
4025            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
4026            fidl::decode!(
4027                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
4028                D,
4029                &mut self.reason_code,
4030                decoder,
4031                offset + 6,
4032                _depth
4033            )?;
4034            fidl::decode!(bool, D, &mut self.locally_initiated, decoder, offset + 8, _depth)?;
4035            Ok(())
4036        }
4037    }
4038
4039    impl fidl::encoding::ValueTypeMarker for DisassociateRequest {
4040        type Borrowed<'a> = &'a Self;
4041        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4042            value
4043        }
4044    }
4045
4046    unsafe impl fidl::encoding::TypeMarker for DisassociateRequest {
4047        type Owned = Self;
4048
4049        #[inline(always)]
4050        fn inline_align(_context: fidl::encoding::Context) -> usize {
4051            2
4052        }
4053
4054        #[inline(always)]
4055        fn inline_size(_context: fidl::encoding::Context) -> usize {
4056            8
4057        }
4058    }
4059
4060    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisassociateRequest, D>
4061        for &DisassociateRequest
4062    {
4063        #[inline]
4064        unsafe fn encode(
4065            self,
4066            encoder: &mut fidl::encoding::Encoder<'_, D>,
4067            offset: usize,
4068            _depth: fidl::encoding::Depth,
4069        ) -> fidl::Result<()> {
4070            encoder.debug_check_bounds::<DisassociateRequest>(offset);
4071            // Delegate to tuple encoding.
4072            fidl::encoding::Encode::<DisassociateRequest, D>::encode(
4073                (
4074                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
4075                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
4076                ),
4077                encoder, offset, _depth
4078            )
4079        }
4080    }
4081    unsafe impl<
4082            D: fidl::encoding::ResourceDialect,
4083            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4084            T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
4085        > fidl::encoding::Encode<DisassociateRequest, D> for (T0, T1)
4086    {
4087        #[inline]
4088        unsafe fn encode(
4089            self,
4090            encoder: &mut fidl::encoding::Encoder<'_, D>,
4091            offset: usize,
4092            depth: fidl::encoding::Depth,
4093        ) -> fidl::Result<()> {
4094            encoder.debug_check_bounds::<DisassociateRequest>(offset);
4095            // Zero out padding regions. There's no need to apply masks
4096            // because the unmasked parts will be overwritten by fields.
4097            // Write the fields.
4098            self.0.encode(encoder, offset + 0, depth)?;
4099            self.1.encode(encoder, offset + 6, depth)?;
4100            Ok(())
4101        }
4102    }
4103
4104    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisassociateRequest {
4105        #[inline(always)]
4106        fn new_empty() -> Self {
4107            Self {
4108                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4109                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
4110            }
4111        }
4112
4113        #[inline]
4114        unsafe fn decode(
4115            &mut self,
4116            decoder: &mut fidl::encoding::Decoder<'_, D>,
4117            offset: usize,
4118            _depth: fidl::encoding::Depth,
4119        ) -> fidl::Result<()> {
4120            decoder.debug_check_bounds::<Self>(offset);
4121            // Verify that padding bytes are zero.
4122            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
4123            fidl::decode!(
4124                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
4125                D,
4126                &mut self.reason_code,
4127                decoder,
4128                offset + 6,
4129                _depth
4130            )?;
4131            Ok(())
4132        }
4133    }
4134
4135    impl fidl::encoding::ValueTypeMarker for EapolConfirm {
4136        type Borrowed<'a> = &'a Self;
4137        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4138            value
4139        }
4140    }
4141
4142    unsafe impl fidl::encoding::TypeMarker for EapolConfirm {
4143        type Owned = Self;
4144
4145        #[inline(always)]
4146        fn inline_align(_context: fidl::encoding::Context) -> usize {
4147            4
4148        }
4149
4150        #[inline(always)]
4151        fn inline_size(_context: fidl::encoding::Context) -> usize {
4152            12
4153        }
4154    }
4155
4156    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolConfirm, D>
4157        for &EapolConfirm
4158    {
4159        #[inline]
4160        unsafe fn encode(
4161            self,
4162            encoder: &mut fidl::encoding::Encoder<'_, D>,
4163            offset: usize,
4164            _depth: fidl::encoding::Depth,
4165        ) -> fidl::Result<()> {
4166            encoder.debug_check_bounds::<EapolConfirm>(offset);
4167            // Delegate to tuple encoding.
4168            fidl::encoding::Encode::<EapolConfirm, D>::encode(
4169                (
4170                    <EapolResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
4171                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
4172                        &self.dst_addr,
4173                    ),
4174                ),
4175                encoder,
4176                offset,
4177                _depth,
4178            )
4179        }
4180    }
4181    unsafe impl<
4182            D: fidl::encoding::ResourceDialect,
4183            T0: fidl::encoding::Encode<EapolResultCode, D>,
4184            T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4185        > fidl::encoding::Encode<EapolConfirm, D> for (T0, T1)
4186    {
4187        #[inline]
4188        unsafe fn encode(
4189            self,
4190            encoder: &mut fidl::encoding::Encoder<'_, D>,
4191            offset: usize,
4192            depth: fidl::encoding::Depth,
4193        ) -> fidl::Result<()> {
4194            encoder.debug_check_bounds::<EapolConfirm>(offset);
4195            // Zero out padding regions. There's no need to apply masks
4196            // because the unmasked parts will be overwritten by fields.
4197            unsafe {
4198                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4199                (ptr as *mut u32).write_unaligned(0);
4200            }
4201            // Write the fields.
4202            self.0.encode(encoder, offset + 0, depth)?;
4203            self.1.encode(encoder, offset + 4, depth)?;
4204            Ok(())
4205        }
4206    }
4207
4208    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolConfirm {
4209        #[inline(always)]
4210        fn new_empty() -> Self {
4211            Self {
4212                result_code: fidl::new_empty!(EapolResultCode, D),
4213                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4214            }
4215        }
4216
4217        #[inline]
4218        unsafe fn decode(
4219            &mut self,
4220            decoder: &mut fidl::encoding::Decoder<'_, D>,
4221            offset: usize,
4222            _depth: fidl::encoding::Depth,
4223        ) -> fidl::Result<()> {
4224            decoder.debug_check_bounds::<Self>(offset);
4225            // Verify that padding bytes are zero.
4226            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4227            let padval = unsafe { (ptr as *const u32).read_unaligned() };
4228            let mask = 0xffff0000u32;
4229            let maskedval = padval & mask;
4230            if maskedval != 0 {
4231                return Err(fidl::Error::NonZeroPadding {
4232                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4233                });
4234            }
4235            fidl::decode!(EapolResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
4236            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 4, _depth)?;
4237            Ok(())
4238        }
4239    }
4240
4241    impl fidl::encoding::ValueTypeMarker for EapolIndication {
4242        type Borrowed<'a> = &'a Self;
4243        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4244            value
4245        }
4246    }
4247
4248    unsafe impl fidl::encoding::TypeMarker for EapolIndication {
4249        type Owned = Self;
4250
4251        #[inline(always)]
4252        fn inline_align(_context: fidl::encoding::Context) -> usize {
4253            8
4254        }
4255
4256        #[inline(always)]
4257        fn inline_size(_context: fidl::encoding::Context) -> usize {
4258            32
4259        }
4260    }
4261
4262    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolIndication, D>
4263        for &EapolIndication
4264    {
4265        #[inline]
4266        unsafe fn encode(
4267            self,
4268            encoder: &mut fidl::encoding::Encoder<'_, D>,
4269            offset: usize,
4270            _depth: fidl::encoding::Depth,
4271        ) -> fidl::Result<()> {
4272            encoder.debug_check_bounds::<EapolIndication>(offset);
4273            // Delegate to tuple encoding.
4274            fidl::encoding::Encode::<EapolIndication, D>::encode(
4275                (
4276                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.src_addr),
4277                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.dst_addr),
4278                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4279                ),
4280                encoder, offset, _depth
4281            )
4282        }
4283    }
4284    unsafe impl<
4285            D: fidl::encoding::ResourceDialect,
4286            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4287            T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4288            T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4289        > fidl::encoding::Encode<EapolIndication, D> for (T0, T1, T2)
4290    {
4291        #[inline]
4292        unsafe fn encode(
4293            self,
4294            encoder: &mut fidl::encoding::Encoder<'_, D>,
4295            offset: usize,
4296            depth: fidl::encoding::Depth,
4297        ) -> fidl::Result<()> {
4298            encoder.debug_check_bounds::<EapolIndication>(offset);
4299            // Zero out padding regions. There's no need to apply masks
4300            // because the unmasked parts will be overwritten by fields.
4301            unsafe {
4302                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4303                (ptr as *mut u64).write_unaligned(0);
4304            }
4305            // Write the fields.
4306            self.0.encode(encoder, offset + 0, depth)?;
4307            self.1.encode(encoder, offset + 6, depth)?;
4308            self.2.encode(encoder, offset + 16, depth)?;
4309            Ok(())
4310        }
4311    }
4312
4313    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolIndication {
4314        #[inline(always)]
4315        fn new_empty() -> Self {
4316            Self {
4317                src_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4318                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4319                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4320            }
4321        }
4322
4323        #[inline]
4324        unsafe fn decode(
4325            &mut self,
4326            decoder: &mut fidl::encoding::Decoder<'_, D>,
4327            offset: usize,
4328            _depth: fidl::encoding::Depth,
4329        ) -> fidl::Result<()> {
4330            decoder.debug_check_bounds::<Self>(offset);
4331            // Verify that padding bytes are zero.
4332            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4333            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4334            let mask = 0xffffffff00000000u64;
4335            let maskedval = padval & mask;
4336            if maskedval != 0 {
4337                return Err(fidl::Error::NonZeroPadding {
4338                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4339                });
4340            }
4341            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.src_addr, decoder, offset + 0, _depth)?;
4342            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 6, _depth)?;
4343            fidl::decode!(
4344                fidl::encoding::UnboundedVector<u8>,
4345                D,
4346                &mut self.data,
4347                decoder,
4348                offset + 16,
4349                _depth
4350            )?;
4351            Ok(())
4352        }
4353    }
4354
4355    impl fidl::encoding::ValueTypeMarker for EapolRequest {
4356        type Borrowed<'a> = &'a Self;
4357        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4358            value
4359        }
4360    }
4361
4362    unsafe impl fidl::encoding::TypeMarker for EapolRequest {
4363        type Owned = Self;
4364
4365        #[inline(always)]
4366        fn inline_align(_context: fidl::encoding::Context) -> usize {
4367            8
4368        }
4369
4370        #[inline(always)]
4371        fn inline_size(_context: fidl::encoding::Context) -> usize {
4372            32
4373        }
4374    }
4375
4376    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolRequest, D>
4377        for &EapolRequest
4378    {
4379        #[inline]
4380        unsafe fn encode(
4381            self,
4382            encoder: &mut fidl::encoding::Encoder<'_, D>,
4383            offset: usize,
4384            _depth: fidl::encoding::Depth,
4385        ) -> fidl::Result<()> {
4386            encoder.debug_check_bounds::<EapolRequest>(offset);
4387            // Delegate to tuple encoding.
4388            fidl::encoding::Encode::<EapolRequest, D>::encode(
4389                (
4390                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.src_addr),
4391                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.dst_addr),
4392                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4393                ),
4394                encoder, offset, _depth
4395            )
4396        }
4397    }
4398    unsafe impl<
4399            D: fidl::encoding::ResourceDialect,
4400            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4401            T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4402            T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4403        > fidl::encoding::Encode<EapolRequest, D> for (T0, T1, T2)
4404    {
4405        #[inline]
4406        unsafe fn encode(
4407            self,
4408            encoder: &mut fidl::encoding::Encoder<'_, D>,
4409            offset: usize,
4410            depth: fidl::encoding::Depth,
4411        ) -> fidl::Result<()> {
4412            encoder.debug_check_bounds::<EapolRequest>(offset);
4413            // Zero out padding regions. There's no need to apply masks
4414            // because the unmasked parts will be overwritten by fields.
4415            unsafe {
4416                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4417                (ptr as *mut u64).write_unaligned(0);
4418            }
4419            // Write the fields.
4420            self.0.encode(encoder, offset + 0, depth)?;
4421            self.1.encode(encoder, offset + 6, depth)?;
4422            self.2.encode(encoder, offset + 16, depth)?;
4423            Ok(())
4424        }
4425    }
4426
4427    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolRequest {
4428        #[inline(always)]
4429        fn new_empty() -> Self {
4430            Self {
4431                src_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4432                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4433                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4434            }
4435        }
4436
4437        #[inline]
4438        unsafe fn decode(
4439            &mut self,
4440            decoder: &mut fidl::encoding::Decoder<'_, D>,
4441            offset: usize,
4442            _depth: fidl::encoding::Depth,
4443        ) -> fidl::Result<()> {
4444            decoder.debug_check_bounds::<Self>(offset);
4445            // Verify that padding bytes are zero.
4446            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4447            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4448            let mask = 0xffffffff00000000u64;
4449            let maskedval = padval & mask;
4450            if maskedval != 0 {
4451                return Err(fidl::Error::NonZeroPadding {
4452                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4453                });
4454            }
4455            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.src_addr, decoder, offset + 0, _depth)?;
4456            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 6, _depth)?;
4457            fidl::decode!(
4458                fidl::encoding::UnboundedVector<u8>,
4459                D,
4460                &mut self.data,
4461                decoder,
4462                offset + 16,
4463                _depth
4464            )?;
4465            Ok(())
4466        }
4467    }
4468
4469    impl fidl::encoding::ValueTypeMarker for MlmeQueryTelemetrySupportResponse {
4470        type Borrowed<'a> = &'a Self;
4471        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4472            value
4473        }
4474    }
4475
4476    unsafe impl fidl::encoding::TypeMarker for MlmeQueryTelemetrySupportResponse {
4477        type Owned = Self;
4478
4479        #[inline(always)]
4480        fn inline_align(_context: fidl::encoding::Context) -> usize {
4481            8
4482        }
4483
4484        #[inline(always)]
4485        fn inline_size(_context: fidl::encoding::Context) -> usize {
4486            16
4487        }
4488    }
4489
4490    unsafe impl<D: fidl::encoding::ResourceDialect>
4491        fidl::encoding::Encode<MlmeQueryTelemetrySupportResponse, D>
4492        for &MlmeQueryTelemetrySupportResponse
4493    {
4494        #[inline]
4495        unsafe fn encode(
4496            self,
4497            encoder: &mut fidl::encoding::Encoder<'_, D>,
4498            offset: usize,
4499            _depth: fidl::encoding::Depth,
4500        ) -> fidl::Result<()> {
4501            encoder.debug_check_bounds::<MlmeQueryTelemetrySupportResponse>(offset);
4502            // Delegate to tuple encoding.
4503            fidl::encoding::Encode::<MlmeQueryTelemetrySupportResponse, D>::encode(
4504                (
4505                    <fidl_fuchsia_wlan_stats__common::TelemetrySupport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
4506                ),
4507                encoder, offset, _depth
4508            )
4509        }
4510    }
4511    unsafe impl<
4512            D: fidl::encoding::ResourceDialect,
4513            T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::TelemetrySupport, D>,
4514        > fidl::encoding::Encode<MlmeQueryTelemetrySupportResponse, D> for (T0,)
4515    {
4516        #[inline]
4517        unsafe fn encode(
4518            self,
4519            encoder: &mut fidl::encoding::Encoder<'_, D>,
4520            offset: usize,
4521            depth: fidl::encoding::Depth,
4522        ) -> fidl::Result<()> {
4523            encoder.debug_check_bounds::<MlmeQueryTelemetrySupportResponse>(offset);
4524            // Zero out padding regions. There's no need to apply masks
4525            // because the unmasked parts will be overwritten by fields.
4526            // Write the fields.
4527            self.0.encode(encoder, offset + 0, depth)?;
4528            Ok(())
4529        }
4530    }
4531
4532    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4533        for MlmeQueryTelemetrySupportResponse
4534    {
4535        #[inline(always)]
4536        fn new_empty() -> Self {
4537            Self { resp: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::TelemetrySupport, D) }
4538        }
4539
4540        #[inline]
4541        unsafe fn decode(
4542            &mut self,
4543            decoder: &mut fidl::encoding::Decoder<'_, D>,
4544            offset: usize,
4545            _depth: fidl::encoding::Depth,
4546        ) -> fidl::Result<()> {
4547            decoder.debug_check_bounds::<Self>(offset);
4548            // Verify that padding bytes are zero.
4549            fidl::decode!(
4550                fidl_fuchsia_wlan_stats__common::TelemetrySupport,
4551                D,
4552                &mut self.resp,
4553                decoder,
4554                offset + 0,
4555                _depth
4556            )?;
4557            Ok(())
4558        }
4559    }
4560
4561    impl fidl::encoding::ValueTypeMarker for MinstrelListResponse {
4562        type Borrowed<'a> = &'a Self;
4563        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4564            value
4565        }
4566    }
4567
4568    unsafe impl fidl::encoding::TypeMarker for MinstrelListResponse {
4569        type Owned = Self;
4570
4571        #[inline(always)]
4572        fn inline_align(_context: fidl::encoding::Context) -> usize {
4573            8
4574        }
4575
4576        #[inline(always)]
4577        fn inline_size(_context: fidl::encoding::Context) -> usize {
4578            16
4579        }
4580    }
4581
4582    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelListResponse, D>
4583        for &MinstrelListResponse
4584    {
4585        #[inline]
4586        unsafe fn encode(
4587            self,
4588            encoder: &mut fidl::encoding::Encoder<'_, D>,
4589            offset: usize,
4590            _depth: fidl::encoding::Depth,
4591        ) -> fidl::Result<()> {
4592            encoder.debug_check_bounds::<MinstrelListResponse>(offset);
4593            // Delegate to tuple encoding.
4594            fidl::encoding::Encode::<MinstrelListResponse, D>::encode(
4595                (
4596                    <fidl_fuchsia_wlan_minstrel__common::Peers as fidl::encoding::ValueTypeMarker>::borrow(&self.peers),
4597                ),
4598                encoder, offset, _depth
4599            )
4600        }
4601    }
4602    unsafe impl<
4603            D: fidl::encoding::ResourceDialect,
4604            T0: fidl::encoding::Encode<fidl_fuchsia_wlan_minstrel__common::Peers, D>,
4605        > fidl::encoding::Encode<MinstrelListResponse, D> for (T0,)
4606    {
4607        #[inline]
4608        unsafe fn encode(
4609            self,
4610            encoder: &mut fidl::encoding::Encoder<'_, D>,
4611            offset: usize,
4612            depth: fidl::encoding::Depth,
4613        ) -> fidl::Result<()> {
4614            encoder.debug_check_bounds::<MinstrelListResponse>(offset);
4615            // Zero out padding regions. There's no need to apply masks
4616            // because the unmasked parts will be overwritten by fields.
4617            // Write the fields.
4618            self.0.encode(encoder, offset + 0, depth)?;
4619            Ok(())
4620        }
4621    }
4622
4623    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelListResponse {
4624        #[inline(always)]
4625        fn new_empty() -> Self {
4626            Self { peers: fidl::new_empty!(fidl_fuchsia_wlan_minstrel__common::Peers, D) }
4627        }
4628
4629        #[inline]
4630        unsafe fn decode(
4631            &mut self,
4632            decoder: &mut fidl::encoding::Decoder<'_, D>,
4633            offset: usize,
4634            _depth: fidl::encoding::Depth,
4635        ) -> fidl::Result<()> {
4636            decoder.debug_check_bounds::<Self>(offset);
4637            // Verify that padding bytes are zero.
4638            fidl::decode!(
4639                fidl_fuchsia_wlan_minstrel__common::Peers,
4640                D,
4641                &mut self.peers,
4642                decoder,
4643                offset + 0,
4644                _depth
4645            )?;
4646            Ok(())
4647        }
4648    }
4649
4650    impl fidl::encoding::ValueTypeMarker for MinstrelStatsRequest {
4651        type Borrowed<'a> = &'a Self;
4652        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4653            value
4654        }
4655    }
4656
4657    unsafe impl fidl::encoding::TypeMarker for MinstrelStatsRequest {
4658        type Owned = Self;
4659
4660        #[inline(always)]
4661        fn inline_align(_context: fidl::encoding::Context) -> usize {
4662            1
4663        }
4664
4665        #[inline(always)]
4666        fn inline_size(_context: fidl::encoding::Context) -> usize {
4667            6
4668        }
4669        #[inline(always)]
4670        fn encode_is_copy() -> bool {
4671            true
4672        }
4673
4674        #[inline(always)]
4675        fn decode_is_copy() -> bool {
4676            true
4677        }
4678    }
4679
4680    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelStatsRequest, D>
4681        for &MinstrelStatsRequest
4682    {
4683        #[inline]
4684        unsafe fn encode(
4685            self,
4686            encoder: &mut fidl::encoding::Encoder<'_, D>,
4687            offset: usize,
4688            _depth: fidl::encoding::Depth,
4689        ) -> fidl::Result<()> {
4690            encoder.debug_check_bounds::<MinstrelStatsRequest>(offset);
4691            unsafe {
4692                // Copy the object into the buffer.
4693                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
4694                (buf_ptr as *mut MinstrelStatsRequest)
4695                    .write_unaligned((self as *const MinstrelStatsRequest).read());
4696                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
4697                // done second because the memcpy will write garbage to these bytes.
4698            }
4699            Ok(())
4700        }
4701    }
4702    unsafe impl<
4703            D: fidl::encoding::ResourceDialect,
4704            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4705        > fidl::encoding::Encode<MinstrelStatsRequest, D> for (T0,)
4706    {
4707        #[inline]
4708        unsafe fn encode(
4709            self,
4710            encoder: &mut fidl::encoding::Encoder<'_, D>,
4711            offset: usize,
4712            depth: fidl::encoding::Depth,
4713        ) -> fidl::Result<()> {
4714            encoder.debug_check_bounds::<MinstrelStatsRequest>(offset);
4715            // Zero out padding regions. There's no need to apply masks
4716            // because the unmasked parts will be overwritten by fields.
4717            // Write the fields.
4718            self.0.encode(encoder, offset + 0, depth)?;
4719            Ok(())
4720        }
4721    }
4722
4723    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelStatsRequest {
4724        #[inline(always)]
4725        fn new_empty() -> Self {
4726            Self { peer_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
4727        }
4728
4729        #[inline]
4730        unsafe fn decode(
4731            &mut self,
4732            decoder: &mut fidl::encoding::Decoder<'_, D>,
4733            offset: usize,
4734            _depth: fidl::encoding::Depth,
4735        ) -> fidl::Result<()> {
4736            decoder.debug_check_bounds::<Self>(offset);
4737            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
4738            // Verify that padding bytes are zero.
4739            // Copy from the buffer into the object.
4740            unsafe {
4741                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
4742            }
4743            Ok(())
4744        }
4745    }
4746
4747    impl fidl::encoding::ValueTypeMarker for MinstrelStatsResponse {
4748        type Borrowed<'a> = &'a Self;
4749        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4750            value
4751        }
4752    }
4753
4754    unsafe impl fidl::encoding::TypeMarker for MinstrelStatsResponse {
4755        type Owned = Self;
4756
4757        #[inline(always)]
4758        fn inline_align(_context: fidl::encoding::Context) -> usize {
4759            8
4760        }
4761
4762        #[inline(always)]
4763        fn inline_size(_context: fidl::encoding::Context) -> usize {
4764            8
4765        }
4766    }
4767
4768    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelStatsResponse, D>
4769        for &MinstrelStatsResponse
4770    {
4771        #[inline]
4772        unsafe fn encode(
4773            self,
4774            encoder: &mut fidl::encoding::Encoder<'_, D>,
4775            offset: usize,
4776            _depth: fidl::encoding::Depth,
4777        ) -> fidl::Result<()> {
4778            encoder.debug_check_bounds::<MinstrelStatsResponse>(offset);
4779            // Delegate to tuple encoding.
4780            fidl::encoding::Encode::<MinstrelStatsResponse, D>::encode(
4781                (
4782                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer),
4783                ),
4784                encoder, offset, _depth
4785            )
4786        }
4787    }
4788    unsafe impl<
4789            D: fidl::encoding::ResourceDialect,
4790            T0: fidl::encoding::Encode<
4791                fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer>,
4792                D,
4793            >,
4794        > fidl::encoding::Encode<MinstrelStatsResponse, D> for (T0,)
4795    {
4796        #[inline]
4797        unsafe fn encode(
4798            self,
4799            encoder: &mut fidl::encoding::Encoder<'_, D>,
4800            offset: usize,
4801            depth: fidl::encoding::Depth,
4802        ) -> fidl::Result<()> {
4803            encoder.debug_check_bounds::<MinstrelStatsResponse>(offset);
4804            // Zero out padding regions. There's no need to apply masks
4805            // because the unmasked parts will be overwritten by fields.
4806            // Write the fields.
4807            self.0.encode(encoder, offset + 0, depth)?;
4808            Ok(())
4809        }
4810    }
4811
4812    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelStatsResponse {
4813        #[inline(always)]
4814        fn new_empty() -> Self {
4815            Self {
4816                peer: fidl::new_empty!(
4817                    fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer>,
4818                    D
4819                ),
4820            }
4821        }
4822
4823        #[inline]
4824        unsafe fn decode(
4825            &mut self,
4826            decoder: &mut fidl::encoding::Decoder<'_, D>,
4827            offset: usize,
4828            _depth: fidl::encoding::Depth,
4829        ) -> fidl::Result<()> {
4830            decoder.debug_check_bounds::<Self>(offset);
4831            // Verify that padding bytes are zero.
4832            fidl::decode!(
4833                fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer>,
4834                D,
4835                &mut self.peer,
4836                decoder,
4837                offset + 0,
4838                _depth
4839            )?;
4840            Ok(())
4841        }
4842    }
4843
4844    impl fidl::encoding::ValueTypeMarker for MlmeAssociateIndRequest {
4845        type Borrowed<'a> = &'a Self;
4846        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4847            value
4848        }
4849    }
4850
4851    unsafe impl fidl::encoding::TypeMarker for MlmeAssociateIndRequest {
4852        type Owned = Self;
4853
4854        #[inline(always)]
4855        fn inline_align(_context: fidl::encoding::Context) -> usize {
4856            8
4857        }
4858
4859        #[inline(always)]
4860        fn inline_size(_context: fidl::encoding::Context) -> usize {
4861            64
4862        }
4863    }
4864
4865    unsafe impl<D: fidl::encoding::ResourceDialect>
4866        fidl::encoding::Encode<MlmeAssociateIndRequest, D> for &MlmeAssociateIndRequest
4867    {
4868        #[inline]
4869        unsafe fn encode(
4870            self,
4871            encoder: &mut fidl::encoding::Encoder<'_, D>,
4872            offset: usize,
4873            _depth: fidl::encoding::Depth,
4874        ) -> fidl::Result<()> {
4875            encoder.debug_check_bounds::<MlmeAssociateIndRequest>(offset);
4876            // Delegate to tuple encoding.
4877            fidl::encoding::Encode::<MlmeAssociateIndRequest, D>::encode(
4878                (<AssociateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
4879                encoder,
4880                offset,
4881                _depth,
4882            )
4883        }
4884    }
4885    unsafe impl<
4886            D: fidl::encoding::ResourceDialect,
4887            T0: fidl::encoding::Encode<AssociateIndication, D>,
4888        > fidl::encoding::Encode<MlmeAssociateIndRequest, D> for (T0,)
4889    {
4890        #[inline]
4891        unsafe fn encode(
4892            self,
4893            encoder: &mut fidl::encoding::Encoder<'_, D>,
4894            offset: usize,
4895            depth: fidl::encoding::Depth,
4896        ) -> fidl::Result<()> {
4897            encoder.debug_check_bounds::<MlmeAssociateIndRequest>(offset);
4898            // Zero out padding regions. There's no need to apply masks
4899            // because the unmasked parts will be overwritten by fields.
4900            // Write the fields.
4901            self.0.encode(encoder, offset + 0, depth)?;
4902            Ok(())
4903        }
4904    }
4905
4906    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4907        for MlmeAssociateIndRequest
4908    {
4909        #[inline(always)]
4910        fn new_empty() -> Self {
4911            Self { ind: fidl::new_empty!(AssociateIndication, D) }
4912        }
4913
4914        #[inline]
4915        unsafe fn decode(
4916            &mut self,
4917            decoder: &mut fidl::encoding::Decoder<'_, D>,
4918            offset: usize,
4919            _depth: fidl::encoding::Depth,
4920        ) -> fidl::Result<()> {
4921            decoder.debug_check_bounds::<Self>(offset);
4922            // Verify that padding bytes are zero.
4923            fidl::decode!(AssociateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
4924            Ok(())
4925        }
4926    }
4927
4928    impl fidl::encoding::ValueTypeMarker for MlmeAssociateRespRequest {
4929        type Borrowed<'a> = &'a Self;
4930        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4931            value
4932        }
4933    }
4934
4935    unsafe impl fidl::encoding::TypeMarker for MlmeAssociateRespRequest {
4936        type Owned = Self;
4937
4938        #[inline(always)]
4939        fn inline_align(_context: fidl::encoding::Context) -> usize {
4940            8
4941        }
4942
4943        #[inline(always)]
4944        fn inline_size(_context: fidl::encoding::Context) -> usize {
4945            32
4946        }
4947    }
4948
4949    unsafe impl<D: fidl::encoding::ResourceDialect>
4950        fidl::encoding::Encode<MlmeAssociateRespRequest, D> for &MlmeAssociateRespRequest
4951    {
4952        #[inline]
4953        unsafe fn encode(
4954            self,
4955            encoder: &mut fidl::encoding::Encoder<'_, D>,
4956            offset: usize,
4957            _depth: fidl::encoding::Depth,
4958        ) -> fidl::Result<()> {
4959            encoder.debug_check_bounds::<MlmeAssociateRespRequest>(offset);
4960            // Delegate to tuple encoding.
4961            fidl::encoding::Encode::<MlmeAssociateRespRequest, D>::encode(
4962                (<AssociateResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
4963                encoder,
4964                offset,
4965                _depth,
4966            )
4967        }
4968    }
4969    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<AssociateResponse, D>>
4970        fidl::encoding::Encode<MlmeAssociateRespRequest, D> for (T0,)
4971    {
4972        #[inline]
4973        unsafe fn encode(
4974            self,
4975            encoder: &mut fidl::encoding::Encoder<'_, D>,
4976            offset: usize,
4977            depth: fidl::encoding::Depth,
4978        ) -> fidl::Result<()> {
4979            encoder.debug_check_bounds::<MlmeAssociateRespRequest>(offset);
4980            // Zero out padding regions. There's no need to apply masks
4981            // because the unmasked parts will be overwritten by fields.
4982            // Write the fields.
4983            self.0.encode(encoder, offset + 0, depth)?;
4984            Ok(())
4985        }
4986    }
4987
4988    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4989        for MlmeAssociateRespRequest
4990    {
4991        #[inline(always)]
4992        fn new_empty() -> Self {
4993            Self { resp: fidl::new_empty!(AssociateResponse, D) }
4994        }
4995
4996        #[inline]
4997        unsafe fn decode(
4998            &mut self,
4999            decoder: &mut fidl::encoding::Decoder<'_, D>,
5000            offset: usize,
5001            _depth: fidl::encoding::Depth,
5002        ) -> fidl::Result<()> {
5003            decoder.debug_check_bounds::<Self>(offset);
5004            // Verify that padding bytes are zero.
5005            fidl::decode!(AssociateResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
5006            Ok(())
5007        }
5008    }
5009
5010    impl fidl::encoding::ValueTypeMarker for MlmeAuthenticateIndRequest {
5011        type Borrowed<'a> = &'a Self;
5012        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5013            value
5014        }
5015    }
5016
5017    unsafe impl fidl::encoding::TypeMarker for MlmeAuthenticateIndRequest {
5018        type Owned = Self;
5019
5020        #[inline(always)]
5021        fn inline_align(_context: fidl::encoding::Context) -> usize {
5022            4
5023        }
5024
5025        #[inline(always)]
5026        fn inline_size(_context: fidl::encoding::Context) -> usize {
5027            12
5028        }
5029    }
5030
5031    unsafe impl<D: fidl::encoding::ResourceDialect>
5032        fidl::encoding::Encode<MlmeAuthenticateIndRequest, D> for &MlmeAuthenticateIndRequest
5033    {
5034        #[inline]
5035        unsafe fn encode(
5036            self,
5037            encoder: &mut fidl::encoding::Encoder<'_, D>,
5038            offset: usize,
5039            _depth: fidl::encoding::Depth,
5040        ) -> fidl::Result<()> {
5041            encoder.debug_check_bounds::<MlmeAuthenticateIndRequest>(offset);
5042            // Delegate to tuple encoding.
5043            fidl::encoding::Encode::<MlmeAuthenticateIndRequest, D>::encode(
5044                (<AuthenticateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5045                encoder,
5046                offset,
5047                _depth,
5048            )
5049        }
5050    }
5051    unsafe impl<
5052            D: fidl::encoding::ResourceDialect,
5053            T0: fidl::encoding::Encode<AuthenticateIndication, D>,
5054        > fidl::encoding::Encode<MlmeAuthenticateIndRequest, D> for (T0,)
5055    {
5056        #[inline]
5057        unsafe fn encode(
5058            self,
5059            encoder: &mut fidl::encoding::Encoder<'_, D>,
5060            offset: usize,
5061            depth: fidl::encoding::Depth,
5062        ) -> fidl::Result<()> {
5063            encoder.debug_check_bounds::<MlmeAuthenticateIndRequest>(offset);
5064            // Zero out padding regions. There's no need to apply masks
5065            // because the unmasked parts will be overwritten by fields.
5066            // Write the fields.
5067            self.0.encode(encoder, offset + 0, depth)?;
5068            Ok(())
5069        }
5070    }
5071
5072    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5073        for MlmeAuthenticateIndRequest
5074    {
5075        #[inline(always)]
5076        fn new_empty() -> Self {
5077            Self { ind: fidl::new_empty!(AuthenticateIndication, D) }
5078        }
5079
5080        #[inline]
5081        unsafe fn decode(
5082            &mut self,
5083            decoder: &mut fidl::encoding::Decoder<'_, D>,
5084            offset: usize,
5085            _depth: fidl::encoding::Depth,
5086        ) -> fidl::Result<()> {
5087            decoder.debug_check_bounds::<Self>(offset);
5088            // Verify that padding bytes are zero.
5089            fidl::decode!(AuthenticateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5090            Ok(())
5091        }
5092    }
5093
5094    impl fidl::encoding::ValueTypeMarker for MlmeAuthenticateRespRequest {
5095        type Borrowed<'a> = &'a Self;
5096        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5097            value
5098        }
5099    }
5100
5101    unsafe impl fidl::encoding::TypeMarker for MlmeAuthenticateRespRequest {
5102        type Owned = Self;
5103
5104        #[inline(always)]
5105        fn inline_align(_context: fidl::encoding::Context) -> usize {
5106            4
5107        }
5108
5109        #[inline(always)]
5110        fn inline_size(_context: fidl::encoding::Context) -> usize {
5111            12
5112        }
5113    }
5114
5115    unsafe impl<D: fidl::encoding::ResourceDialect>
5116        fidl::encoding::Encode<MlmeAuthenticateRespRequest, D> for &MlmeAuthenticateRespRequest
5117    {
5118        #[inline]
5119        unsafe fn encode(
5120            self,
5121            encoder: &mut fidl::encoding::Encoder<'_, D>,
5122            offset: usize,
5123            _depth: fidl::encoding::Depth,
5124        ) -> fidl::Result<()> {
5125            encoder.debug_check_bounds::<MlmeAuthenticateRespRequest>(offset);
5126            // Delegate to tuple encoding.
5127            fidl::encoding::Encode::<MlmeAuthenticateRespRequest, D>::encode(
5128                (<AuthenticateResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5129                encoder,
5130                offset,
5131                _depth,
5132            )
5133        }
5134    }
5135    unsafe impl<
5136            D: fidl::encoding::ResourceDialect,
5137            T0: fidl::encoding::Encode<AuthenticateResponse, D>,
5138        > fidl::encoding::Encode<MlmeAuthenticateRespRequest, D> for (T0,)
5139    {
5140        #[inline]
5141        unsafe fn encode(
5142            self,
5143            encoder: &mut fidl::encoding::Encoder<'_, D>,
5144            offset: usize,
5145            depth: fidl::encoding::Depth,
5146        ) -> fidl::Result<()> {
5147            encoder.debug_check_bounds::<MlmeAuthenticateRespRequest>(offset);
5148            // Zero out padding regions. There's no need to apply masks
5149            // because the unmasked parts will be overwritten by fields.
5150            // Write the fields.
5151            self.0.encode(encoder, offset + 0, depth)?;
5152            Ok(())
5153        }
5154    }
5155
5156    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5157        for MlmeAuthenticateRespRequest
5158    {
5159        #[inline(always)]
5160        fn new_empty() -> Self {
5161            Self { resp: fidl::new_empty!(AuthenticateResponse, D) }
5162        }
5163
5164        #[inline]
5165        unsafe fn decode(
5166            &mut self,
5167            decoder: &mut fidl::encoding::Decoder<'_, D>,
5168            offset: usize,
5169            _depth: fidl::encoding::Depth,
5170        ) -> fidl::Result<()> {
5171            decoder.debug_check_bounds::<Self>(offset);
5172            // Verify that padding bytes are zero.
5173            fidl::decode!(AuthenticateResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
5174            Ok(())
5175        }
5176    }
5177
5178    impl fidl::encoding::ValueTypeMarker for MlmeConnectConfRequest {
5179        type Borrowed<'a> = &'a Self;
5180        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5181            value
5182        }
5183    }
5184
5185    unsafe impl fidl::encoding::TypeMarker for MlmeConnectConfRequest {
5186        type Owned = Self;
5187
5188        #[inline(always)]
5189        fn inline_align(_context: fidl::encoding::Context) -> usize {
5190            8
5191        }
5192
5193        #[inline(always)]
5194        fn inline_size(_context: fidl::encoding::Context) -> usize {
5195            32
5196        }
5197    }
5198
5199    unsafe impl<D: fidl::encoding::ResourceDialect>
5200        fidl::encoding::Encode<MlmeConnectConfRequest, D> for &MlmeConnectConfRequest
5201    {
5202        #[inline]
5203        unsafe fn encode(
5204            self,
5205            encoder: &mut fidl::encoding::Encoder<'_, D>,
5206            offset: usize,
5207            _depth: fidl::encoding::Depth,
5208        ) -> fidl::Result<()> {
5209            encoder.debug_check_bounds::<MlmeConnectConfRequest>(offset);
5210            // Delegate to tuple encoding.
5211            fidl::encoding::Encode::<MlmeConnectConfRequest, D>::encode(
5212                (<ConnectConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5213                encoder,
5214                offset,
5215                _depth,
5216            )
5217        }
5218    }
5219    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ConnectConfirm, D>>
5220        fidl::encoding::Encode<MlmeConnectConfRequest, D> for (T0,)
5221    {
5222        #[inline]
5223        unsafe fn encode(
5224            self,
5225            encoder: &mut fidl::encoding::Encoder<'_, D>,
5226            offset: usize,
5227            depth: fidl::encoding::Depth,
5228        ) -> fidl::Result<()> {
5229            encoder.debug_check_bounds::<MlmeConnectConfRequest>(offset);
5230            // Zero out padding regions. There's no need to apply masks
5231            // because the unmasked parts will be overwritten by fields.
5232            // Write the fields.
5233            self.0.encode(encoder, offset + 0, depth)?;
5234            Ok(())
5235        }
5236    }
5237
5238    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5239        for MlmeConnectConfRequest
5240    {
5241        #[inline(always)]
5242        fn new_empty() -> Self {
5243            Self { resp: fidl::new_empty!(ConnectConfirm, D) }
5244        }
5245
5246        #[inline]
5247        unsafe fn decode(
5248            &mut self,
5249            decoder: &mut fidl::encoding::Decoder<'_, D>,
5250            offset: usize,
5251            _depth: fidl::encoding::Depth,
5252        ) -> fidl::Result<()> {
5253            decoder.debug_check_bounds::<Self>(offset);
5254            // Verify that padding bytes are zero.
5255            fidl::decode!(ConnectConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
5256            Ok(())
5257        }
5258    }
5259
5260    impl fidl::encoding::ValueTypeMarker for MlmeConnectReqRequest {
5261        type Borrowed<'a> = &'a Self;
5262        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5263            value
5264        }
5265    }
5266
5267    unsafe impl fidl::encoding::TypeMarker for MlmeConnectReqRequest {
5268        type Owned = Self;
5269
5270        #[inline(always)]
5271        fn inline_align(_context: fidl::encoding::Context) -> usize {
5272            8
5273        }
5274
5275        #[inline(always)]
5276        fn inline_size(_context: fidl::encoding::Context) -> usize {
5277            96
5278        }
5279    }
5280
5281    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeConnectReqRequest, D>
5282        for &MlmeConnectReqRequest
5283    {
5284        #[inline]
5285        unsafe fn encode(
5286            self,
5287            encoder: &mut fidl::encoding::Encoder<'_, D>,
5288            offset: usize,
5289            _depth: fidl::encoding::Depth,
5290        ) -> fidl::Result<()> {
5291            encoder.debug_check_bounds::<MlmeConnectReqRequest>(offset);
5292            // Delegate to tuple encoding.
5293            fidl::encoding::Encode::<MlmeConnectReqRequest, D>::encode(
5294                (<ConnectRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5295                encoder,
5296                offset,
5297                _depth,
5298            )
5299        }
5300    }
5301    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ConnectRequest, D>>
5302        fidl::encoding::Encode<MlmeConnectReqRequest, D> for (T0,)
5303    {
5304        #[inline]
5305        unsafe fn encode(
5306            self,
5307            encoder: &mut fidl::encoding::Encoder<'_, D>,
5308            offset: usize,
5309            depth: fidl::encoding::Depth,
5310        ) -> fidl::Result<()> {
5311            encoder.debug_check_bounds::<MlmeConnectReqRequest>(offset);
5312            // Zero out padding regions. There's no need to apply masks
5313            // because the unmasked parts will be overwritten by fields.
5314            // Write the fields.
5315            self.0.encode(encoder, offset + 0, depth)?;
5316            Ok(())
5317        }
5318    }
5319
5320    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeConnectReqRequest {
5321        #[inline(always)]
5322        fn new_empty() -> Self {
5323            Self { req: fidl::new_empty!(ConnectRequest, D) }
5324        }
5325
5326        #[inline]
5327        unsafe fn decode(
5328            &mut self,
5329            decoder: &mut fidl::encoding::Decoder<'_, D>,
5330            offset: usize,
5331            _depth: fidl::encoding::Depth,
5332        ) -> fidl::Result<()> {
5333            decoder.debug_check_bounds::<Self>(offset);
5334            // Verify that padding bytes are zero.
5335            fidl::decode!(ConnectRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5336            Ok(())
5337        }
5338    }
5339
5340    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateConfRequest {
5341        type Borrowed<'a> = &'a Self;
5342        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5343            value
5344        }
5345    }
5346
5347    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateConfRequest {
5348        type Owned = Self;
5349
5350        #[inline(always)]
5351        fn inline_align(_context: fidl::encoding::Context) -> usize {
5352            1
5353        }
5354
5355        #[inline(always)]
5356        fn inline_size(_context: fidl::encoding::Context) -> usize {
5357            6
5358        }
5359        #[inline(always)]
5360        fn encode_is_copy() -> bool {
5361            true
5362        }
5363
5364        #[inline(always)]
5365        fn decode_is_copy() -> bool {
5366            true
5367        }
5368    }
5369
5370    unsafe impl<D: fidl::encoding::ResourceDialect>
5371        fidl::encoding::Encode<MlmeDeauthenticateConfRequest, D>
5372        for &MlmeDeauthenticateConfRequest
5373    {
5374        #[inline]
5375        unsafe fn encode(
5376            self,
5377            encoder: &mut fidl::encoding::Encoder<'_, D>,
5378            offset: usize,
5379            _depth: fidl::encoding::Depth,
5380        ) -> fidl::Result<()> {
5381            encoder.debug_check_bounds::<MlmeDeauthenticateConfRequest>(offset);
5382            unsafe {
5383                // Copy the object into the buffer.
5384                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5385                (buf_ptr as *mut MlmeDeauthenticateConfRequest)
5386                    .write_unaligned((self as *const MlmeDeauthenticateConfRequest).read());
5387                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
5388                // done second because the memcpy will write garbage to these bytes.
5389            }
5390            Ok(())
5391        }
5392    }
5393    unsafe impl<
5394            D: fidl::encoding::ResourceDialect,
5395            T0: fidl::encoding::Encode<DeauthenticateConfirm, D>,
5396        > fidl::encoding::Encode<MlmeDeauthenticateConfRequest, D> for (T0,)
5397    {
5398        #[inline]
5399        unsafe fn encode(
5400            self,
5401            encoder: &mut fidl::encoding::Encoder<'_, D>,
5402            offset: usize,
5403            depth: fidl::encoding::Depth,
5404        ) -> fidl::Result<()> {
5405            encoder.debug_check_bounds::<MlmeDeauthenticateConfRequest>(offset);
5406            // Zero out padding regions. There's no need to apply masks
5407            // because the unmasked parts will be overwritten by fields.
5408            // Write the fields.
5409            self.0.encode(encoder, offset + 0, depth)?;
5410            Ok(())
5411        }
5412    }
5413
5414    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5415        for MlmeDeauthenticateConfRequest
5416    {
5417        #[inline(always)]
5418        fn new_empty() -> Self {
5419            Self { resp: fidl::new_empty!(DeauthenticateConfirm, D) }
5420        }
5421
5422        #[inline]
5423        unsafe fn decode(
5424            &mut self,
5425            decoder: &mut fidl::encoding::Decoder<'_, D>,
5426            offset: usize,
5427            _depth: fidl::encoding::Depth,
5428        ) -> fidl::Result<()> {
5429            decoder.debug_check_bounds::<Self>(offset);
5430            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5431            // Verify that padding bytes are zero.
5432            // Copy from the buffer into the object.
5433            unsafe {
5434                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
5435            }
5436            Ok(())
5437        }
5438    }
5439
5440    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateIndRequest {
5441        type Borrowed<'a> = &'a Self;
5442        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5443            value
5444        }
5445    }
5446
5447    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateIndRequest {
5448        type Owned = Self;
5449
5450        #[inline(always)]
5451        fn inline_align(_context: fidl::encoding::Context) -> usize {
5452            2
5453        }
5454
5455        #[inline(always)]
5456        fn inline_size(_context: fidl::encoding::Context) -> usize {
5457            10
5458        }
5459    }
5460
5461    unsafe impl<D: fidl::encoding::ResourceDialect>
5462        fidl::encoding::Encode<MlmeDeauthenticateIndRequest, D> for &MlmeDeauthenticateIndRequest
5463    {
5464        #[inline]
5465        unsafe fn encode(
5466            self,
5467            encoder: &mut fidl::encoding::Encoder<'_, D>,
5468            offset: usize,
5469            _depth: fidl::encoding::Depth,
5470        ) -> fidl::Result<()> {
5471            encoder.debug_check_bounds::<MlmeDeauthenticateIndRequest>(offset);
5472            // Delegate to tuple encoding.
5473            fidl::encoding::Encode::<MlmeDeauthenticateIndRequest, D>::encode(
5474                (<DeauthenticateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5475                encoder,
5476                offset,
5477                _depth,
5478            )
5479        }
5480    }
5481    unsafe impl<
5482            D: fidl::encoding::ResourceDialect,
5483            T0: fidl::encoding::Encode<DeauthenticateIndication, D>,
5484        > fidl::encoding::Encode<MlmeDeauthenticateIndRequest, D> for (T0,)
5485    {
5486        #[inline]
5487        unsafe fn encode(
5488            self,
5489            encoder: &mut fidl::encoding::Encoder<'_, D>,
5490            offset: usize,
5491            depth: fidl::encoding::Depth,
5492        ) -> fidl::Result<()> {
5493            encoder.debug_check_bounds::<MlmeDeauthenticateIndRequest>(offset);
5494            // Zero out padding regions. There's no need to apply masks
5495            // because the unmasked parts will be overwritten by fields.
5496            // Write the fields.
5497            self.0.encode(encoder, offset + 0, depth)?;
5498            Ok(())
5499        }
5500    }
5501
5502    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5503        for MlmeDeauthenticateIndRequest
5504    {
5505        #[inline(always)]
5506        fn new_empty() -> Self {
5507            Self { ind: fidl::new_empty!(DeauthenticateIndication, D) }
5508        }
5509
5510        #[inline]
5511        unsafe fn decode(
5512            &mut self,
5513            decoder: &mut fidl::encoding::Decoder<'_, D>,
5514            offset: usize,
5515            _depth: fidl::encoding::Depth,
5516        ) -> fidl::Result<()> {
5517            decoder.debug_check_bounds::<Self>(offset);
5518            // Verify that padding bytes are zero.
5519            fidl::decode!(DeauthenticateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5520            Ok(())
5521        }
5522    }
5523
5524    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateReqRequest {
5525        type Borrowed<'a> = &'a Self;
5526        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5527            value
5528        }
5529    }
5530
5531    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateReqRequest {
5532        type Owned = Self;
5533
5534        #[inline(always)]
5535        fn inline_align(_context: fidl::encoding::Context) -> usize {
5536            2
5537        }
5538
5539        #[inline(always)]
5540        fn inline_size(_context: fidl::encoding::Context) -> usize {
5541            8
5542        }
5543    }
5544
5545    unsafe impl<D: fidl::encoding::ResourceDialect>
5546        fidl::encoding::Encode<MlmeDeauthenticateReqRequest, D> for &MlmeDeauthenticateReqRequest
5547    {
5548        #[inline]
5549        unsafe fn encode(
5550            self,
5551            encoder: &mut fidl::encoding::Encoder<'_, D>,
5552            offset: usize,
5553            _depth: fidl::encoding::Depth,
5554        ) -> fidl::Result<()> {
5555            encoder.debug_check_bounds::<MlmeDeauthenticateReqRequest>(offset);
5556            // Delegate to tuple encoding.
5557            fidl::encoding::Encode::<MlmeDeauthenticateReqRequest, D>::encode(
5558                (<DeauthenticateRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5559                encoder,
5560                offset,
5561                _depth,
5562            )
5563        }
5564    }
5565    unsafe impl<
5566            D: fidl::encoding::ResourceDialect,
5567            T0: fidl::encoding::Encode<DeauthenticateRequest, D>,
5568        > fidl::encoding::Encode<MlmeDeauthenticateReqRequest, D> for (T0,)
5569    {
5570        #[inline]
5571        unsafe fn encode(
5572            self,
5573            encoder: &mut fidl::encoding::Encoder<'_, D>,
5574            offset: usize,
5575            depth: fidl::encoding::Depth,
5576        ) -> fidl::Result<()> {
5577            encoder.debug_check_bounds::<MlmeDeauthenticateReqRequest>(offset);
5578            // Zero out padding regions. There's no need to apply masks
5579            // because the unmasked parts will be overwritten by fields.
5580            // Write the fields.
5581            self.0.encode(encoder, offset + 0, depth)?;
5582            Ok(())
5583        }
5584    }
5585
5586    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5587        for MlmeDeauthenticateReqRequest
5588    {
5589        #[inline(always)]
5590        fn new_empty() -> Self {
5591            Self { req: fidl::new_empty!(DeauthenticateRequest, D) }
5592        }
5593
5594        #[inline]
5595        unsafe fn decode(
5596            &mut self,
5597            decoder: &mut fidl::encoding::Decoder<'_, D>,
5598            offset: usize,
5599            _depth: fidl::encoding::Depth,
5600        ) -> fidl::Result<()> {
5601            decoder.debug_check_bounds::<Self>(offset);
5602            // Verify that padding bytes are zero.
5603            fidl::decode!(DeauthenticateRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5604            Ok(())
5605        }
5606    }
5607
5608    impl fidl::encoding::ValueTypeMarker for MlmeDeleteKeysReqRequest {
5609        type Borrowed<'a> = &'a Self;
5610        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5611            value
5612        }
5613    }
5614
5615    unsafe impl fidl::encoding::TypeMarker for MlmeDeleteKeysReqRequest {
5616        type Owned = Self;
5617
5618        #[inline(always)]
5619        fn inline_align(_context: fidl::encoding::Context) -> usize {
5620            8
5621        }
5622
5623        #[inline(always)]
5624        fn inline_size(_context: fidl::encoding::Context) -> usize {
5625            16
5626        }
5627    }
5628
5629    unsafe impl<D: fidl::encoding::ResourceDialect>
5630        fidl::encoding::Encode<MlmeDeleteKeysReqRequest, D> for &MlmeDeleteKeysReqRequest
5631    {
5632        #[inline]
5633        unsafe fn encode(
5634            self,
5635            encoder: &mut fidl::encoding::Encoder<'_, D>,
5636            offset: usize,
5637            _depth: fidl::encoding::Depth,
5638        ) -> fidl::Result<()> {
5639            encoder.debug_check_bounds::<MlmeDeleteKeysReqRequest>(offset);
5640            // Delegate to tuple encoding.
5641            fidl::encoding::Encode::<MlmeDeleteKeysReqRequest, D>::encode(
5642                (<DeleteKeysRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5643                encoder,
5644                offset,
5645                _depth,
5646            )
5647        }
5648    }
5649    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<DeleteKeysRequest, D>>
5650        fidl::encoding::Encode<MlmeDeleteKeysReqRequest, D> for (T0,)
5651    {
5652        #[inline]
5653        unsafe fn encode(
5654            self,
5655            encoder: &mut fidl::encoding::Encoder<'_, D>,
5656            offset: usize,
5657            depth: fidl::encoding::Depth,
5658        ) -> fidl::Result<()> {
5659            encoder.debug_check_bounds::<MlmeDeleteKeysReqRequest>(offset);
5660            // Zero out padding regions. There's no need to apply masks
5661            // because the unmasked parts will be overwritten by fields.
5662            // Write the fields.
5663            self.0.encode(encoder, offset + 0, depth)?;
5664            Ok(())
5665        }
5666    }
5667
5668    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5669        for MlmeDeleteKeysReqRequest
5670    {
5671        #[inline(always)]
5672        fn new_empty() -> Self {
5673            Self { req: fidl::new_empty!(DeleteKeysRequest, D) }
5674        }
5675
5676        #[inline]
5677        unsafe fn decode(
5678            &mut self,
5679            decoder: &mut fidl::encoding::Decoder<'_, D>,
5680            offset: usize,
5681            _depth: fidl::encoding::Depth,
5682        ) -> fidl::Result<()> {
5683            decoder.debug_check_bounds::<Self>(offset);
5684            // Verify that padding bytes are zero.
5685            fidl::decode!(DeleteKeysRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5686            Ok(())
5687        }
5688    }
5689
5690    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateConfRequest {
5691        type Borrowed<'a> = &'a Self;
5692        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5693            value
5694        }
5695    }
5696
5697    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateConfRequest {
5698        type Owned = Self;
5699
5700        #[inline(always)]
5701        fn inline_align(_context: fidl::encoding::Context) -> usize {
5702            4
5703        }
5704
5705        #[inline(always)]
5706        fn inline_size(_context: fidl::encoding::Context) -> usize {
5707            4
5708        }
5709        #[inline(always)]
5710        fn encode_is_copy() -> bool {
5711            true
5712        }
5713
5714        #[inline(always)]
5715        fn decode_is_copy() -> bool {
5716            true
5717        }
5718    }
5719
5720    unsafe impl<D: fidl::encoding::ResourceDialect>
5721        fidl::encoding::Encode<MlmeDisassociateConfRequest, D> for &MlmeDisassociateConfRequest
5722    {
5723        #[inline]
5724        unsafe fn encode(
5725            self,
5726            encoder: &mut fidl::encoding::Encoder<'_, D>,
5727            offset: usize,
5728            _depth: fidl::encoding::Depth,
5729        ) -> fidl::Result<()> {
5730            encoder.debug_check_bounds::<MlmeDisassociateConfRequest>(offset);
5731            unsafe {
5732                // Copy the object into the buffer.
5733                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5734                (buf_ptr as *mut MlmeDisassociateConfRequest)
5735                    .write_unaligned((self as *const MlmeDisassociateConfRequest).read());
5736                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
5737                // done second because the memcpy will write garbage to these bytes.
5738            }
5739            Ok(())
5740        }
5741    }
5742    unsafe impl<
5743            D: fidl::encoding::ResourceDialect,
5744            T0: fidl::encoding::Encode<DisassociateConfirm, D>,
5745        > fidl::encoding::Encode<MlmeDisassociateConfRequest, D> for (T0,)
5746    {
5747        #[inline]
5748        unsafe fn encode(
5749            self,
5750            encoder: &mut fidl::encoding::Encoder<'_, D>,
5751            offset: usize,
5752            depth: fidl::encoding::Depth,
5753        ) -> fidl::Result<()> {
5754            encoder.debug_check_bounds::<MlmeDisassociateConfRequest>(offset);
5755            // Zero out padding regions. There's no need to apply masks
5756            // because the unmasked parts will be overwritten by fields.
5757            // Write the fields.
5758            self.0.encode(encoder, offset + 0, depth)?;
5759            Ok(())
5760        }
5761    }
5762
5763    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5764        for MlmeDisassociateConfRequest
5765    {
5766        #[inline(always)]
5767        fn new_empty() -> Self {
5768            Self { resp: fidl::new_empty!(DisassociateConfirm, D) }
5769        }
5770
5771        #[inline]
5772        unsafe fn decode(
5773            &mut self,
5774            decoder: &mut fidl::encoding::Decoder<'_, D>,
5775            offset: usize,
5776            _depth: fidl::encoding::Depth,
5777        ) -> fidl::Result<()> {
5778            decoder.debug_check_bounds::<Self>(offset);
5779            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5780            // Verify that padding bytes are zero.
5781            // Copy from the buffer into the object.
5782            unsafe {
5783                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
5784            }
5785            Ok(())
5786        }
5787    }
5788
5789    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateIndRequest {
5790        type Borrowed<'a> = &'a Self;
5791        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5792            value
5793        }
5794    }
5795
5796    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateIndRequest {
5797        type Owned = Self;
5798
5799        #[inline(always)]
5800        fn inline_align(_context: fidl::encoding::Context) -> usize {
5801            2
5802        }
5803
5804        #[inline(always)]
5805        fn inline_size(_context: fidl::encoding::Context) -> usize {
5806            10
5807        }
5808    }
5809
5810    unsafe impl<D: fidl::encoding::ResourceDialect>
5811        fidl::encoding::Encode<MlmeDisassociateIndRequest, D> for &MlmeDisassociateIndRequest
5812    {
5813        #[inline]
5814        unsafe fn encode(
5815            self,
5816            encoder: &mut fidl::encoding::Encoder<'_, D>,
5817            offset: usize,
5818            _depth: fidl::encoding::Depth,
5819        ) -> fidl::Result<()> {
5820            encoder.debug_check_bounds::<MlmeDisassociateIndRequest>(offset);
5821            // Delegate to tuple encoding.
5822            fidl::encoding::Encode::<MlmeDisassociateIndRequest, D>::encode(
5823                (<DisassociateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5824                encoder,
5825                offset,
5826                _depth,
5827            )
5828        }
5829    }
5830    unsafe impl<
5831            D: fidl::encoding::ResourceDialect,
5832            T0: fidl::encoding::Encode<DisassociateIndication, D>,
5833        > fidl::encoding::Encode<MlmeDisassociateIndRequest, D> for (T0,)
5834    {
5835        #[inline]
5836        unsafe fn encode(
5837            self,
5838            encoder: &mut fidl::encoding::Encoder<'_, D>,
5839            offset: usize,
5840            depth: fidl::encoding::Depth,
5841        ) -> fidl::Result<()> {
5842            encoder.debug_check_bounds::<MlmeDisassociateIndRequest>(offset);
5843            // Zero out padding regions. There's no need to apply masks
5844            // because the unmasked parts will be overwritten by fields.
5845            // Write the fields.
5846            self.0.encode(encoder, offset + 0, depth)?;
5847            Ok(())
5848        }
5849    }
5850
5851    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5852        for MlmeDisassociateIndRequest
5853    {
5854        #[inline(always)]
5855        fn new_empty() -> Self {
5856            Self { ind: fidl::new_empty!(DisassociateIndication, D) }
5857        }
5858
5859        #[inline]
5860        unsafe fn decode(
5861            &mut self,
5862            decoder: &mut fidl::encoding::Decoder<'_, D>,
5863            offset: usize,
5864            _depth: fidl::encoding::Depth,
5865        ) -> fidl::Result<()> {
5866            decoder.debug_check_bounds::<Self>(offset);
5867            // Verify that padding bytes are zero.
5868            fidl::decode!(DisassociateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5869            Ok(())
5870        }
5871    }
5872
5873    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateReqRequest {
5874        type Borrowed<'a> = &'a Self;
5875        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5876            value
5877        }
5878    }
5879
5880    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateReqRequest {
5881        type Owned = Self;
5882
5883        #[inline(always)]
5884        fn inline_align(_context: fidl::encoding::Context) -> usize {
5885            2
5886        }
5887
5888        #[inline(always)]
5889        fn inline_size(_context: fidl::encoding::Context) -> usize {
5890            8
5891        }
5892    }
5893
5894    unsafe impl<D: fidl::encoding::ResourceDialect>
5895        fidl::encoding::Encode<MlmeDisassociateReqRequest, D> for &MlmeDisassociateReqRequest
5896    {
5897        #[inline]
5898        unsafe fn encode(
5899            self,
5900            encoder: &mut fidl::encoding::Encoder<'_, D>,
5901            offset: usize,
5902            _depth: fidl::encoding::Depth,
5903        ) -> fidl::Result<()> {
5904            encoder.debug_check_bounds::<MlmeDisassociateReqRequest>(offset);
5905            // Delegate to tuple encoding.
5906            fidl::encoding::Encode::<MlmeDisassociateReqRequest, D>::encode(
5907                (<DisassociateRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5908                encoder,
5909                offset,
5910                _depth,
5911            )
5912        }
5913    }
5914    unsafe impl<
5915            D: fidl::encoding::ResourceDialect,
5916            T0: fidl::encoding::Encode<DisassociateRequest, D>,
5917        > fidl::encoding::Encode<MlmeDisassociateReqRequest, D> for (T0,)
5918    {
5919        #[inline]
5920        unsafe fn encode(
5921            self,
5922            encoder: &mut fidl::encoding::Encoder<'_, D>,
5923            offset: usize,
5924            depth: fidl::encoding::Depth,
5925        ) -> fidl::Result<()> {
5926            encoder.debug_check_bounds::<MlmeDisassociateReqRequest>(offset);
5927            // Zero out padding regions. There's no need to apply masks
5928            // because the unmasked parts will be overwritten by fields.
5929            // Write the fields.
5930            self.0.encode(encoder, offset + 0, depth)?;
5931            Ok(())
5932        }
5933    }
5934
5935    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5936        for MlmeDisassociateReqRequest
5937    {
5938        #[inline(always)]
5939        fn new_empty() -> Self {
5940            Self { req: fidl::new_empty!(DisassociateRequest, D) }
5941        }
5942
5943        #[inline]
5944        unsafe fn decode(
5945            &mut self,
5946            decoder: &mut fidl::encoding::Decoder<'_, D>,
5947            offset: usize,
5948            _depth: fidl::encoding::Depth,
5949        ) -> fidl::Result<()> {
5950            decoder.debug_check_bounds::<Self>(offset);
5951            // Verify that padding bytes are zero.
5952            fidl::decode!(DisassociateRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5953            Ok(())
5954        }
5955    }
5956
5957    impl fidl::encoding::ValueTypeMarker for MlmeEapolConfRequest {
5958        type Borrowed<'a> = &'a Self;
5959        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5960            value
5961        }
5962    }
5963
5964    unsafe impl fidl::encoding::TypeMarker for MlmeEapolConfRequest {
5965        type Owned = Self;
5966
5967        #[inline(always)]
5968        fn inline_align(_context: fidl::encoding::Context) -> usize {
5969            4
5970        }
5971
5972        #[inline(always)]
5973        fn inline_size(_context: fidl::encoding::Context) -> usize {
5974            12
5975        }
5976    }
5977
5978    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolConfRequest, D>
5979        for &MlmeEapolConfRequest
5980    {
5981        #[inline]
5982        unsafe fn encode(
5983            self,
5984            encoder: &mut fidl::encoding::Encoder<'_, D>,
5985            offset: usize,
5986            _depth: fidl::encoding::Depth,
5987        ) -> fidl::Result<()> {
5988            encoder.debug_check_bounds::<MlmeEapolConfRequest>(offset);
5989            // Delegate to tuple encoding.
5990            fidl::encoding::Encode::<MlmeEapolConfRequest, D>::encode(
5991                (<EapolConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5992                encoder,
5993                offset,
5994                _depth,
5995            )
5996        }
5997    }
5998    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolConfirm, D>>
5999        fidl::encoding::Encode<MlmeEapolConfRequest, D> for (T0,)
6000    {
6001        #[inline]
6002        unsafe fn encode(
6003            self,
6004            encoder: &mut fidl::encoding::Encoder<'_, D>,
6005            offset: usize,
6006            depth: fidl::encoding::Depth,
6007        ) -> fidl::Result<()> {
6008            encoder.debug_check_bounds::<MlmeEapolConfRequest>(offset);
6009            // Zero out padding regions. There's no need to apply masks
6010            // because the unmasked parts will be overwritten by fields.
6011            // Write the fields.
6012            self.0.encode(encoder, offset + 0, depth)?;
6013            Ok(())
6014        }
6015    }
6016
6017    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolConfRequest {
6018        #[inline(always)]
6019        fn new_empty() -> Self {
6020            Self { resp: fidl::new_empty!(EapolConfirm, D) }
6021        }
6022
6023        #[inline]
6024        unsafe fn decode(
6025            &mut self,
6026            decoder: &mut fidl::encoding::Decoder<'_, D>,
6027            offset: usize,
6028            _depth: fidl::encoding::Depth,
6029        ) -> fidl::Result<()> {
6030            decoder.debug_check_bounds::<Self>(offset);
6031            // Verify that padding bytes are zero.
6032            fidl::decode!(EapolConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
6033            Ok(())
6034        }
6035    }
6036
6037    impl fidl::encoding::ValueTypeMarker for MlmeEapolIndRequest {
6038        type Borrowed<'a> = &'a Self;
6039        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6040            value
6041        }
6042    }
6043
6044    unsafe impl fidl::encoding::TypeMarker for MlmeEapolIndRequest {
6045        type Owned = Self;
6046
6047        #[inline(always)]
6048        fn inline_align(_context: fidl::encoding::Context) -> usize {
6049            8
6050        }
6051
6052        #[inline(always)]
6053        fn inline_size(_context: fidl::encoding::Context) -> usize {
6054            32
6055        }
6056    }
6057
6058    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolIndRequest, D>
6059        for &MlmeEapolIndRequest
6060    {
6061        #[inline]
6062        unsafe fn encode(
6063            self,
6064            encoder: &mut fidl::encoding::Encoder<'_, D>,
6065            offset: usize,
6066            _depth: fidl::encoding::Depth,
6067        ) -> fidl::Result<()> {
6068            encoder.debug_check_bounds::<MlmeEapolIndRequest>(offset);
6069            // Delegate to tuple encoding.
6070            fidl::encoding::Encode::<MlmeEapolIndRequest, D>::encode(
6071                (<EapolIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
6072                encoder,
6073                offset,
6074                _depth,
6075            )
6076        }
6077    }
6078    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolIndication, D>>
6079        fidl::encoding::Encode<MlmeEapolIndRequest, D> for (T0,)
6080    {
6081        #[inline]
6082        unsafe fn encode(
6083            self,
6084            encoder: &mut fidl::encoding::Encoder<'_, D>,
6085            offset: usize,
6086            depth: fidl::encoding::Depth,
6087        ) -> fidl::Result<()> {
6088            encoder.debug_check_bounds::<MlmeEapolIndRequest>(offset);
6089            // Zero out padding regions. There's no need to apply masks
6090            // because the unmasked parts will be overwritten by fields.
6091            // Write the fields.
6092            self.0.encode(encoder, offset + 0, depth)?;
6093            Ok(())
6094        }
6095    }
6096
6097    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolIndRequest {
6098        #[inline(always)]
6099        fn new_empty() -> Self {
6100            Self { ind: fidl::new_empty!(EapolIndication, D) }
6101        }
6102
6103        #[inline]
6104        unsafe fn decode(
6105            &mut self,
6106            decoder: &mut fidl::encoding::Decoder<'_, D>,
6107            offset: usize,
6108            _depth: fidl::encoding::Depth,
6109        ) -> fidl::Result<()> {
6110            decoder.debug_check_bounds::<Self>(offset);
6111            // Verify that padding bytes are zero.
6112            fidl::decode!(EapolIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
6113            Ok(())
6114        }
6115    }
6116
6117    impl fidl::encoding::ValueTypeMarker for MlmeEapolReqRequest {
6118        type Borrowed<'a> = &'a Self;
6119        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6120            value
6121        }
6122    }
6123
6124    unsafe impl fidl::encoding::TypeMarker for MlmeEapolReqRequest {
6125        type Owned = Self;
6126
6127        #[inline(always)]
6128        fn inline_align(_context: fidl::encoding::Context) -> usize {
6129            8
6130        }
6131
6132        #[inline(always)]
6133        fn inline_size(_context: fidl::encoding::Context) -> usize {
6134            32
6135        }
6136    }
6137
6138    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolReqRequest, D>
6139        for &MlmeEapolReqRequest
6140    {
6141        #[inline]
6142        unsafe fn encode(
6143            self,
6144            encoder: &mut fidl::encoding::Encoder<'_, D>,
6145            offset: usize,
6146            _depth: fidl::encoding::Depth,
6147        ) -> fidl::Result<()> {
6148            encoder.debug_check_bounds::<MlmeEapolReqRequest>(offset);
6149            // Delegate to tuple encoding.
6150            fidl::encoding::Encode::<MlmeEapolReqRequest, D>::encode(
6151                (<EapolRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6152                encoder,
6153                offset,
6154                _depth,
6155            )
6156        }
6157    }
6158    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolRequest, D>>
6159        fidl::encoding::Encode<MlmeEapolReqRequest, D> for (T0,)
6160    {
6161        #[inline]
6162        unsafe fn encode(
6163            self,
6164            encoder: &mut fidl::encoding::Encoder<'_, D>,
6165            offset: usize,
6166            depth: fidl::encoding::Depth,
6167        ) -> fidl::Result<()> {
6168            encoder.debug_check_bounds::<MlmeEapolReqRequest>(offset);
6169            // Zero out padding regions. There's no need to apply masks
6170            // because the unmasked parts will be overwritten by fields.
6171            // Write the fields.
6172            self.0.encode(encoder, offset + 0, depth)?;
6173            Ok(())
6174        }
6175    }
6176
6177    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolReqRequest {
6178        #[inline(always)]
6179        fn new_empty() -> Self {
6180            Self { req: fidl::new_empty!(EapolRequest, D) }
6181        }
6182
6183        #[inline]
6184        unsafe fn decode(
6185            &mut self,
6186            decoder: &mut fidl::encoding::Decoder<'_, D>,
6187            offset: usize,
6188            _depth: fidl::encoding::Depth,
6189        ) -> fidl::Result<()> {
6190            decoder.debug_check_bounds::<Self>(offset);
6191            // Verify that padding bytes are zero.
6192            fidl::decode!(EapolRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6193            Ok(())
6194        }
6195    }
6196
6197    impl fidl::encoding::ValueTypeMarker for MlmeFinalizeAssociationReqRequest {
6198        type Borrowed<'a> = &'a Self;
6199        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6200            value
6201        }
6202    }
6203
6204    unsafe impl fidl::encoding::TypeMarker for MlmeFinalizeAssociationReqRequest {
6205        type Owned = Self;
6206
6207        #[inline(always)]
6208        fn inline_align(_context: fidl::encoding::Context) -> usize {
6209            8
6210        }
6211
6212        #[inline(always)]
6213        fn inline_size(_context: fidl::encoding::Context) -> usize {
6214            56
6215        }
6216    }
6217
6218    unsafe impl<D: fidl::encoding::ResourceDialect>
6219        fidl::encoding::Encode<MlmeFinalizeAssociationReqRequest, D>
6220        for &MlmeFinalizeAssociationReqRequest
6221    {
6222        #[inline]
6223        unsafe fn encode(
6224            self,
6225            encoder: &mut fidl::encoding::Encoder<'_, D>,
6226            offset: usize,
6227            _depth: fidl::encoding::Depth,
6228        ) -> fidl::Result<()> {
6229            encoder.debug_check_bounds::<MlmeFinalizeAssociationReqRequest>(offset);
6230            // Delegate to tuple encoding.
6231            fidl::encoding::Encode::<MlmeFinalizeAssociationReqRequest, D>::encode(
6232                (<NegotiatedCapabilities as fidl::encoding::ValueTypeMarker>::borrow(
6233                    &self.negotiated_capabilities,
6234                ),),
6235                encoder,
6236                offset,
6237                _depth,
6238            )
6239        }
6240    }
6241    unsafe impl<
6242            D: fidl::encoding::ResourceDialect,
6243            T0: fidl::encoding::Encode<NegotiatedCapabilities, D>,
6244        > fidl::encoding::Encode<MlmeFinalizeAssociationReqRequest, D> for (T0,)
6245    {
6246        #[inline]
6247        unsafe fn encode(
6248            self,
6249            encoder: &mut fidl::encoding::Encoder<'_, D>,
6250            offset: usize,
6251            depth: fidl::encoding::Depth,
6252        ) -> fidl::Result<()> {
6253            encoder.debug_check_bounds::<MlmeFinalizeAssociationReqRequest>(offset);
6254            // Zero out padding regions. There's no need to apply masks
6255            // because the unmasked parts will be overwritten by fields.
6256            // Write the fields.
6257            self.0.encode(encoder, offset + 0, depth)?;
6258            Ok(())
6259        }
6260    }
6261
6262    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6263        for MlmeFinalizeAssociationReqRequest
6264    {
6265        #[inline(always)]
6266        fn new_empty() -> Self {
6267            Self { negotiated_capabilities: fidl::new_empty!(NegotiatedCapabilities, D) }
6268        }
6269
6270        #[inline]
6271        unsafe fn decode(
6272            &mut self,
6273            decoder: &mut fidl::encoding::Decoder<'_, D>,
6274            offset: usize,
6275            _depth: fidl::encoding::Depth,
6276        ) -> fidl::Result<()> {
6277            decoder.debug_check_bounds::<Self>(offset);
6278            // Verify that padding bytes are zero.
6279            fidl::decode!(
6280                NegotiatedCapabilities,
6281                D,
6282                &mut self.negotiated_capabilities,
6283                decoder,
6284                offset + 0,
6285                _depth
6286            )?;
6287            Ok(())
6288        }
6289    }
6290
6291    impl fidl::encoding::ValueTypeMarker for MlmeGetIfaceHistogramStatsResponse {
6292        type Borrowed<'a> = &'a Self;
6293        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6294            value
6295        }
6296    }
6297
6298    unsafe impl fidl::encoding::TypeMarker for MlmeGetIfaceHistogramStatsResponse {
6299        type Owned = Self;
6300
6301        #[inline(always)]
6302        fn inline_align(_context: fidl::encoding::Context) -> usize {
6303            8
6304        }
6305
6306        #[inline(always)]
6307        fn inline_size(_context: fidl::encoding::Context) -> usize {
6308            16
6309        }
6310    }
6311
6312    unsafe impl<D: fidl::encoding::ResourceDialect>
6313        fidl::encoding::Encode<MlmeGetIfaceHistogramStatsResponse, D>
6314        for &MlmeGetIfaceHistogramStatsResponse
6315    {
6316        #[inline]
6317        unsafe fn encode(
6318            self,
6319            encoder: &mut fidl::encoding::Encoder<'_, D>,
6320            offset: usize,
6321            _depth: fidl::encoding::Depth,
6322        ) -> fidl::Result<()> {
6323            encoder.debug_check_bounds::<MlmeGetIfaceHistogramStatsResponse>(offset);
6324            // Delegate to tuple encoding.
6325            fidl::encoding::Encode::<MlmeGetIfaceHistogramStatsResponse, D>::encode(
6326                (<GetIfaceHistogramStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(
6327                    &self.resp,
6328                ),),
6329                encoder,
6330                offset,
6331                _depth,
6332            )
6333        }
6334    }
6335    unsafe impl<
6336            D: fidl::encoding::ResourceDialect,
6337            T0: fidl::encoding::Encode<GetIfaceHistogramStatsResponse, D>,
6338        > fidl::encoding::Encode<MlmeGetIfaceHistogramStatsResponse, D> for (T0,)
6339    {
6340        #[inline]
6341        unsafe fn encode(
6342            self,
6343            encoder: &mut fidl::encoding::Encoder<'_, D>,
6344            offset: usize,
6345            depth: fidl::encoding::Depth,
6346        ) -> fidl::Result<()> {
6347            encoder.debug_check_bounds::<MlmeGetIfaceHistogramStatsResponse>(offset);
6348            // Zero out padding regions. There's no need to apply masks
6349            // because the unmasked parts will be overwritten by fields.
6350            // Write the fields.
6351            self.0.encode(encoder, offset + 0, depth)?;
6352            Ok(())
6353        }
6354    }
6355
6356    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6357        for MlmeGetIfaceHistogramStatsResponse
6358    {
6359        #[inline(always)]
6360        fn new_empty() -> Self {
6361            Self { resp: fidl::new_empty!(GetIfaceHistogramStatsResponse, D) }
6362        }
6363
6364        #[inline]
6365        unsafe fn decode(
6366            &mut self,
6367            decoder: &mut fidl::encoding::Decoder<'_, D>,
6368            offset: usize,
6369            _depth: fidl::encoding::Depth,
6370        ) -> fidl::Result<()> {
6371            decoder.debug_check_bounds::<Self>(offset);
6372            // Verify that padding bytes are zero.
6373            fidl::decode!(
6374                GetIfaceHistogramStatsResponse,
6375                D,
6376                &mut self.resp,
6377                decoder,
6378                offset + 0,
6379                _depth
6380            )?;
6381            Ok(())
6382        }
6383    }
6384
6385    impl fidl::encoding::ValueTypeMarker for MlmeGetIfaceStatsResponse {
6386        type Borrowed<'a> = &'a Self;
6387        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6388            value
6389        }
6390    }
6391
6392    unsafe impl fidl::encoding::TypeMarker for MlmeGetIfaceStatsResponse {
6393        type Owned = Self;
6394
6395        #[inline(always)]
6396        fn inline_align(_context: fidl::encoding::Context) -> usize {
6397            8
6398        }
6399
6400        #[inline(always)]
6401        fn inline_size(_context: fidl::encoding::Context) -> usize {
6402            16
6403        }
6404    }
6405
6406    unsafe impl<D: fidl::encoding::ResourceDialect>
6407        fidl::encoding::Encode<MlmeGetIfaceStatsResponse, D> for &MlmeGetIfaceStatsResponse
6408    {
6409        #[inline]
6410        unsafe fn encode(
6411            self,
6412            encoder: &mut fidl::encoding::Encoder<'_, D>,
6413            offset: usize,
6414            _depth: fidl::encoding::Depth,
6415        ) -> fidl::Result<()> {
6416            encoder.debug_check_bounds::<MlmeGetIfaceStatsResponse>(offset);
6417            // Delegate to tuple encoding.
6418            fidl::encoding::Encode::<MlmeGetIfaceStatsResponse, D>::encode(
6419                (<GetIfaceStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6420                encoder,
6421                offset,
6422                _depth,
6423            )
6424        }
6425    }
6426    unsafe impl<
6427            D: fidl::encoding::ResourceDialect,
6428            T0: fidl::encoding::Encode<GetIfaceStatsResponse, D>,
6429        > fidl::encoding::Encode<MlmeGetIfaceStatsResponse, D> for (T0,)
6430    {
6431        #[inline]
6432        unsafe fn encode(
6433            self,
6434            encoder: &mut fidl::encoding::Encoder<'_, D>,
6435            offset: usize,
6436            depth: fidl::encoding::Depth,
6437        ) -> fidl::Result<()> {
6438            encoder.debug_check_bounds::<MlmeGetIfaceStatsResponse>(offset);
6439            // Zero out padding regions. There's no need to apply masks
6440            // because the unmasked parts will be overwritten by fields.
6441            // Write the fields.
6442            self.0.encode(encoder, offset + 0, depth)?;
6443            Ok(())
6444        }
6445    }
6446
6447    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6448        for MlmeGetIfaceStatsResponse
6449    {
6450        #[inline(always)]
6451        fn new_empty() -> Self {
6452            Self { resp: fidl::new_empty!(GetIfaceStatsResponse, D) }
6453        }
6454
6455        #[inline]
6456        unsafe fn decode(
6457            &mut self,
6458            decoder: &mut fidl::encoding::Decoder<'_, D>,
6459            offset: usize,
6460            _depth: fidl::encoding::Depth,
6461        ) -> fidl::Result<()> {
6462            decoder.debug_check_bounds::<Self>(offset);
6463            // Verify that padding bytes are zero.
6464            fidl::decode!(GetIfaceStatsResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
6465            Ok(())
6466        }
6467    }
6468
6469    impl fidl::encoding::ValueTypeMarker for MlmeGetMinstrelStatsRequest {
6470        type Borrowed<'a> = &'a Self;
6471        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6472            value
6473        }
6474    }
6475
6476    unsafe impl fidl::encoding::TypeMarker for MlmeGetMinstrelStatsRequest {
6477        type Owned = Self;
6478
6479        #[inline(always)]
6480        fn inline_align(_context: fidl::encoding::Context) -> usize {
6481            1
6482        }
6483
6484        #[inline(always)]
6485        fn inline_size(_context: fidl::encoding::Context) -> usize {
6486            6
6487        }
6488        #[inline(always)]
6489        fn encode_is_copy() -> bool {
6490            true
6491        }
6492
6493        #[inline(always)]
6494        fn decode_is_copy() -> bool {
6495            true
6496        }
6497    }
6498
6499    unsafe impl<D: fidl::encoding::ResourceDialect>
6500        fidl::encoding::Encode<MlmeGetMinstrelStatsRequest, D> for &MlmeGetMinstrelStatsRequest
6501    {
6502        #[inline]
6503        unsafe fn encode(
6504            self,
6505            encoder: &mut fidl::encoding::Encoder<'_, D>,
6506            offset: usize,
6507            _depth: fidl::encoding::Depth,
6508        ) -> fidl::Result<()> {
6509            encoder.debug_check_bounds::<MlmeGetMinstrelStatsRequest>(offset);
6510            unsafe {
6511                // Copy the object into the buffer.
6512                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
6513                (buf_ptr as *mut MlmeGetMinstrelStatsRequest)
6514                    .write_unaligned((self as *const MlmeGetMinstrelStatsRequest).read());
6515                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
6516                // done second because the memcpy will write garbage to these bytes.
6517            }
6518            Ok(())
6519        }
6520    }
6521    unsafe impl<
6522            D: fidl::encoding::ResourceDialect,
6523            T0: fidl::encoding::Encode<MinstrelStatsRequest, D>,
6524        > fidl::encoding::Encode<MlmeGetMinstrelStatsRequest, D> for (T0,)
6525    {
6526        #[inline]
6527        unsafe fn encode(
6528            self,
6529            encoder: &mut fidl::encoding::Encoder<'_, D>,
6530            offset: usize,
6531            depth: fidl::encoding::Depth,
6532        ) -> fidl::Result<()> {
6533            encoder.debug_check_bounds::<MlmeGetMinstrelStatsRequest>(offset);
6534            // Zero out padding regions. There's no need to apply masks
6535            // because the unmasked parts will be overwritten by fields.
6536            // Write the fields.
6537            self.0.encode(encoder, offset + 0, depth)?;
6538            Ok(())
6539        }
6540    }
6541
6542    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6543        for MlmeGetMinstrelStatsRequest
6544    {
6545        #[inline(always)]
6546        fn new_empty() -> Self {
6547            Self { req: fidl::new_empty!(MinstrelStatsRequest, D) }
6548        }
6549
6550        #[inline]
6551        unsafe fn decode(
6552            &mut self,
6553            decoder: &mut fidl::encoding::Decoder<'_, D>,
6554            offset: usize,
6555            _depth: fidl::encoding::Depth,
6556        ) -> fidl::Result<()> {
6557            decoder.debug_check_bounds::<Self>(offset);
6558            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
6559            // Verify that padding bytes are zero.
6560            // Copy from the buffer into the object.
6561            unsafe {
6562                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
6563            }
6564            Ok(())
6565        }
6566    }
6567
6568    impl fidl::encoding::ValueTypeMarker for MlmeGetMinstrelStatsResponse {
6569        type Borrowed<'a> = &'a Self;
6570        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6571            value
6572        }
6573    }
6574
6575    unsafe impl fidl::encoding::TypeMarker for MlmeGetMinstrelStatsResponse {
6576        type Owned = Self;
6577
6578        #[inline(always)]
6579        fn inline_align(_context: fidl::encoding::Context) -> usize {
6580            8
6581        }
6582
6583        #[inline(always)]
6584        fn inline_size(_context: fidl::encoding::Context) -> usize {
6585            8
6586        }
6587    }
6588
6589    unsafe impl<D: fidl::encoding::ResourceDialect>
6590        fidl::encoding::Encode<MlmeGetMinstrelStatsResponse, D> for &MlmeGetMinstrelStatsResponse
6591    {
6592        #[inline]
6593        unsafe fn encode(
6594            self,
6595            encoder: &mut fidl::encoding::Encoder<'_, D>,
6596            offset: usize,
6597            _depth: fidl::encoding::Depth,
6598        ) -> fidl::Result<()> {
6599            encoder.debug_check_bounds::<MlmeGetMinstrelStatsResponse>(offset);
6600            // Delegate to tuple encoding.
6601            fidl::encoding::Encode::<MlmeGetMinstrelStatsResponse, D>::encode(
6602                (<MinstrelStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6603                encoder,
6604                offset,
6605                _depth,
6606            )
6607        }
6608    }
6609    unsafe impl<
6610            D: fidl::encoding::ResourceDialect,
6611            T0: fidl::encoding::Encode<MinstrelStatsResponse, D>,
6612        > fidl::encoding::Encode<MlmeGetMinstrelStatsResponse, D> for (T0,)
6613    {
6614        #[inline]
6615        unsafe fn encode(
6616            self,
6617            encoder: &mut fidl::encoding::Encoder<'_, D>,
6618            offset: usize,
6619            depth: fidl::encoding::Depth,
6620        ) -> fidl::Result<()> {
6621            encoder.debug_check_bounds::<MlmeGetMinstrelStatsResponse>(offset);
6622            // Zero out padding regions. There's no need to apply masks
6623            // because the unmasked parts will be overwritten by fields.
6624            // Write the fields.
6625            self.0.encode(encoder, offset + 0, depth)?;
6626            Ok(())
6627        }
6628    }
6629
6630    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6631        for MlmeGetMinstrelStatsResponse
6632    {
6633        #[inline(always)]
6634        fn new_empty() -> Self {
6635            Self { resp: fidl::new_empty!(MinstrelStatsResponse, D) }
6636        }
6637
6638        #[inline]
6639        unsafe fn decode(
6640            &mut self,
6641            decoder: &mut fidl::encoding::Decoder<'_, D>,
6642            offset: usize,
6643            _depth: fidl::encoding::Depth,
6644        ) -> fidl::Result<()> {
6645            decoder.debug_check_bounds::<Self>(offset);
6646            // Verify that padding bytes are zero.
6647            fidl::decode!(MinstrelStatsResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
6648            Ok(())
6649        }
6650    }
6651
6652    impl fidl::encoding::ValueTypeMarker for MlmeListMinstrelPeersResponse {
6653        type Borrowed<'a> = &'a Self;
6654        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6655            value
6656        }
6657    }
6658
6659    unsafe impl fidl::encoding::TypeMarker for MlmeListMinstrelPeersResponse {
6660        type Owned = Self;
6661
6662        #[inline(always)]
6663        fn inline_align(_context: fidl::encoding::Context) -> usize {
6664            8
6665        }
6666
6667        #[inline(always)]
6668        fn inline_size(_context: fidl::encoding::Context) -> usize {
6669            16
6670        }
6671    }
6672
6673    unsafe impl<D: fidl::encoding::ResourceDialect>
6674        fidl::encoding::Encode<MlmeListMinstrelPeersResponse, D>
6675        for &MlmeListMinstrelPeersResponse
6676    {
6677        #[inline]
6678        unsafe fn encode(
6679            self,
6680            encoder: &mut fidl::encoding::Encoder<'_, D>,
6681            offset: usize,
6682            _depth: fidl::encoding::Depth,
6683        ) -> fidl::Result<()> {
6684            encoder.debug_check_bounds::<MlmeListMinstrelPeersResponse>(offset);
6685            // Delegate to tuple encoding.
6686            fidl::encoding::Encode::<MlmeListMinstrelPeersResponse, D>::encode(
6687                (<MinstrelListResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6688                encoder,
6689                offset,
6690                _depth,
6691            )
6692        }
6693    }
6694    unsafe impl<
6695            D: fidl::encoding::ResourceDialect,
6696            T0: fidl::encoding::Encode<MinstrelListResponse, D>,
6697        > fidl::encoding::Encode<MlmeListMinstrelPeersResponse, D> for (T0,)
6698    {
6699        #[inline]
6700        unsafe fn encode(
6701            self,
6702            encoder: &mut fidl::encoding::Encoder<'_, D>,
6703            offset: usize,
6704            depth: fidl::encoding::Depth,
6705        ) -> fidl::Result<()> {
6706            encoder.debug_check_bounds::<MlmeListMinstrelPeersResponse>(offset);
6707            // Zero out padding regions. There's no need to apply masks
6708            // because the unmasked parts will be overwritten by fields.
6709            // Write the fields.
6710            self.0.encode(encoder, offset + 0, depth)?;
6711            Ok(())
6712        }
6713    }
6714
6715    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6716        for MlmeListMinstrelPeersResponse
6717    {
6718        #[inline(always)]
6719        fn new_empty() -> Self {
6720            Self { resp: fidl::new_empty!(MinstrelListResponse, D) }
6721        }
6722
6723        #[inline]
6724        unsafe fn decode(
6725            &mut self,
6726            decoder: &mut fidl::encoding::Decoder<'_, D>,
6727            offset: usize,
6728            _depth: fidl::encoding::Depth,
6729        ) -> fidl::Result<()> {
6730            decoder.debug_check_bounds::<Self>(offset);
6731            // Verify that padding bytes are zero.
6732            fidl::decode!(MinstrelListResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
6733            Ok(())
6734        }
6735    }
6736
6737    impl fidl::encoding::ValueTypeMarker for MlmeOnChannelSwitchedRequest {
6738        type Borrowed<'a> = &'a Self;
6739        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6740            value
6741        }
6742    }
6743
6744    unsafe impl fidl::encoding::TypeMarker for MlmeOnChannelSwitchedRequest {
6745        type Owned = Self;
6746
6747        #[inline(always)]
6748        fn inline_align(_context: fidl::encoding::Context) -> usize {
6749            1
6750        }
6751
6752        #[inline(always)]
6753        fn inline_size(_context: fidl::encoding::Context) -> usize {
6754            1
6755        }
6756    }
6757
6758    unsafe impl<D: fidl::encoding::ResourceDialect>
6759        fidl::encoding::Encode<MlmeOnChannelSwitchedRequest, D> for &MlmeOnChannelSwitchedRequest
6760    {
6761        #[inline]
6762        unsafe fn encode(
6763            self,
6764            encoder: &mut fidl::encoding::Encoder<'_, D>,
6765            offset: usize,
6766            _depth: fidl::encoding::Depth,
6767        ) -> fidl::Result<()> {
6768            encoder.debug_check_bounds::<MlmeOnChannelSwitchedRequest>(offset);
6769            // Delegate to tuple encoding.
6770            fidl::encoding::Encode::<MlmeOnChannelSwitchedRequest, D>::encode(
6771                (
6772                    <fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),
6773                ),
6774                encoder, offset, _depth
6775            )
6776        }
6777    }
6778    unsafe impl<
6779            D: fidl::encoding::ResourceDialect,
6780            T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo, D>,
6781        > fidl::encoding::Encode<MlmeOnChannelSwitchedRequest, D> for (T0,)
6782    {
6783        #[inline]
6784        unsafe fn encode(
6785            self,
6786            encoder: &mut fidl::encoding::Encoder<'_, D>,
6787            offset: usize,
6788            depth: fidl::encoding::Depth,
6789        ) -> fidl::Result<()> {
6790            encoder.debug_check_bounds::<MlmeOnChannelSwitchedRequest>(offset);
6791            // Zero out padding regions. There's no need to apply masks
6792            // because the unmasked parts will be overwritten by fields.
6793            // Write the fields.
6794            self.0.encode(encoder, offset + 0, depth)?;
6795            Ok(())
6796        }
6797    }
6798
6799    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6800        for MlmeOnChannelSwitchedRequest
6801    {
6802        #[inline(always)]
6803        fn new_empty() -> Self {
6804            Self {
6805                info: fidl::new_empty!(fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo, D),
6806            }
6807        }
6808
6809        #[inline]
6810        unsafe fn decode(
6811            &mut self,
6812            decoder: &mut fidl::encoding::Decoder<'_, D>,
6813            offset: usize,
6814            _depth: fidl::encoding::Depth,
6815        ) -> fidl::Result<()> {
6816            decoder.debug_check_bounds::<Self>(offset);
6817            // Verify that padding bytes are zero.
6818            fidl::decode!(
6819                fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo,
6820                D,
6821                &mut self.info,
6822                decoder,
6823                offset + 0,
6824                _depth
6825            )?;
6826            Ok(())
6827        }
6828    }
6829
6830    impl fidl::encoding::ValueTypeMarker for MlmeOnPmkAvailableRequest {
6831        type Borrowed<'a> = &'a Self;
6832        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6833            value
6834        }
6835    }
6836
6837    unsafe impl fidl::encoding::TypeMarker for MlmeOnPmkAvailableRequest {
6838        type Owned = Self;
6839
6840        #[inline(always)]
6841        fn inline_align(_context: fidl::encoding::Context) -> usize {
6842            8
6843        }
6844
6845        #[inline(always)]
6846        fn inline_size(_context: fidl::encoding::Context) -> usize {
6847            32
6848        }
6849    }
6850
6851    unsafe impl<D: fidl::encoding::ResourceDialect>
6852        fidl::encoding::Encode<MlmeOnPmkAvailableRequest, D> for &MlmeOnPmkAvailableRequest
6853    {
6854        #[inline]
6855        unsafe fn encode(
6856            self,
6857            encoder: &mut fidl::encoding::Encoder<'_, D>,
6858            offset: usize,
6859            _depth: fidl::encoding::Depth,
6860        ) -> fidl::Result<()> {
6861            encoder.debug_check_bounds::<MlmeOnPmkAvailableRequest>(offset);
6862            // Delegate to tuple encoding.
6863            fidl::encoding::Encode::<MlmeOnPmkAvailableRequest, D>::encode(
6864                (<PmkInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
6865                encoder,
6866                offset,
6867                _depth,
6868            )
6869        }
6870    }
6871    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<PmkInfo, D>>
6872        fidl::encoding::Encode<MlmeOnPmkAvailableRequest, D> for (T0,)
6873    {
6874        #[inline]
6875        unsafe fn encode(
6876            self,
6877            encoder: &mut fidl::encoding::Encoder<'_, D>,
6878            offset: usize,
6879            depth: fidl::encoding::Depth,
6880        ) -> fidl::Result<()> {
6881            encoder.debug_check_bounds::<MlmeOnPmkAvailableRequest>(offset);
6882            // Zero out padding regions. There's no need to apply masks
6883            // because the unmasked parts will be overwritten by fields.
6884            // Write the fields.
6885            self.0.encode(encoder, offset + 0, depth)?;
6886            Ok(())
6887        }
6888    }
6889
6890    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6891        for MlmeOnPmkAvailableRequest
6892    {
6893        #[inline(always)]
6894        fn new_empty() -> Self {
6895            Self { info: fidl::new_empty!(PmkInfo, D) }
6896        }
6897
6898        #[inline]
6899        unsafe fn decode(
6900            &mut self,
6901            decoder: &mut fidl::encoding::Decoder<'_, D>,
6902            offset: usize,
6903            _depth: fidl::encoding::Depth,
6904        ) -> fidl::Result<()> {
6905            decoder.debug_check_bounds::<Self>(offset);
6906            // Verify that padding bytes are zero.
6907            fidl::decode!(PmkInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
6908            Ok(())
6909        }
6910    }
6911
6912    impl fidl::encoding::ValueTypeMarker for MlmeOnSaeFrameRxRequest {
6913        type Borrowed<'a> = &'a Self;
6914        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6915            value
6916        }
6917    }
6918
6919    unsafe impl fidl::encoding::TypeMarker for MlmeOnSaeFrameRxRequest {
6920        type Owned = Self;
6921
6922        #[inline(always)]
6923        fn inline_align(_context: fidl::encoding::Context) -> usize {
6924            8
6925        }
6926
6927        #[inline(always)]
6928        fn inline_size(_context: fidl::encoding::Context) -> usize {
6929            32
6930        }
6931    }
6932
6933    unsafe impl<D: fidl::encoding::ResourceDialect>
6934        fidl::encoding::Encode<MlmeOnSaeFrameRxRequest, D> for &MlmeOnSaeFrameRxRequest
6935    {
6936        #[inline]
6937        unsafe fn encode(
6938            self,
6939            encoder: &mut fidl::encoding::Encoder<'_, D>,
6940            offset: usize,
6941            _depth: fidl::encoding::Depth,
6942        ) -> fidl::Result<()> {
6943            encoder.debug_check_bounds::<MlmeOnSaeFrameRxRequest>(offset);
6944            // Delegate to tuple encoding.
6945            fidl::encoding::Encode::<MlmeOnSaeFrameRxRequest, D>::encode(
6946                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
6947                encoder,
6948                offset,
6949                _depth,
6950            )
6951        }
6952    }
6953    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
6954        fidl::encoding::Encode<MlmeOnSaeFrameRxRequest, D> for (T0,)
6955    {
6956        #[inline]
6957        unsafe fn encode(
6958            self,
6959            encoder: &mut fidl::encoding::Encoder<'_, D>,
6960            offset: usize,
6961            depth: fidl::encoding::Depth,
6962        ) -> fidl::Result<()> {
6963            encoder.debug_check_bounds::<MlmeOnSaeFrameRxRequest>(offset);
6964            // Zero out padding regions. There's no need to apply masks
6965            // because the unmasked parts will be overwritten by fields.
6966            // Write the fields.
6967            self.0.encode(encoder, offset + 0, depth)?;
6968            Ok(())
6969        }
6970    }
6971
6972    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6973        for MlmeOnSaeFrameRxRequest
6974    {
6975        #[inline(always)]
6976        fn new_empty() -> Self {
6977            Self { frame: fidl::new_empty!(SaeFrame, D) }
6978        }
6979
6980        #[inline]
6981        unsafe fn decode(
6982            &mut self,
6983            decoder: &mut fidl::encoding::Decoder<'_, D>,
6984            offset: usize,
6985            _depth: fidl::encoding::Depth,
6986        ) -> fidl::Result<()> {
6987            decoder.debug_check_bounds::<Self>(offset);
6988            // Verify that padding bytes are zero.
6989            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
6990            Ok(())
6991        }
6992    }
6993
6994    impl fidl::encoding::ValueTypeMarker for MlmeOnSaeHandshakeIndRequest {
6995        type Borrowed<'a> = &'a Self;
6996        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6997            value
6998        }
6999    }
7000
7001    unsafe impl fidl::encoding::TypeMarker for MlmeOnSaeHandshakeIndRequest {
7002        type Owned = Self;
7003
7004        #[inline(always)]
7005        fn inline_align(_context: fidl::encoding::Context) -> usize {
7006            1
7007        }
7008
7009        #[inline(always)]
7010        fn inline_size(_context: fidl::encoding::Context) -> usize {
7011            6
7012        }
7013        #[inline(always)]
7014        fn encode_is_copy() -> bool {
7015            true
7016        }
7017
7018        #[inline(always)]
7019        fn decode_is_copy() -> bool {
7020            true
7021        }
7022    }
7023
7024    unsafe impl<D: fidl::encoding::ResourceDialect>
7025        fidl::encoding::Encode<MlmeOnSaeHandshakeIndRequest, D> for &MlmeOnSaeHandshakeIndRequest
7026    {
7027        #[inline]
7028        unsafe fn encode(
7029            self,
7030            encoder: &mut fidl::encoding::Encoder<'_, D>,
7031            offset: usize,
7032            _depth: fidl::encoding::Depth,
7033        ) -> fidl::Result<()> {
7034            encoder.debug_check_bounds::<MlmeOnSaeHandshakeIndRequest>(offset);
7035            unsafe {
7036                // Copy the object into the buffer.
7037                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7038                (buf_ptr as *mut MlmeOnSaeHandshakeIndRequest)
7039                    .write_unaligned((self as *const MlmeOnSaeHandshakeIndRequest).read());
7040                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7041                // done second because the memcpy will write garbage to these bytes.
7042            }
7043            Ok(())
7044        }
7045    }
7046    unsafe impl<
7047            D: fidl::encoding::ResourceDialect,
7048            T0: fidl::encoding::Encode<SaeHandshakeIndication, D>,
7049        > fidl::encoding::Encode<MlmeOnSaeHandshakeIndRequest, D> for (T0,)
7050    {
7051        #[inline]
7052        unsafe fn encode(
7053            self,
7054            encoder: &mut fidl::encoding::Encoder<'_, D>,
7055            offset: usize,
7056            depth: fidl::encoding::Depth,
7057        ) -> fidl::Result<()> {
7058            encoder.debug_check_bounds::<MlmeOnSaeHandshakeIndRequest>(offset);
7059            // Zero out padding regions. There's no need to apply masks
7060            // because the unmasked parts will be overwritten by fields.
7061            // Write the fields.
7062            self.0.encode(encoder, offset + 0, depth)?;
7063            Ok(())
7064        }
7065    }
7066
7067    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7068        for MlmeOnSaeHandshakeIndRequest
7069    {
7070        #[inline(always)]
7071        fn new_empty() -> Self {
7072            Self { ind: fidl::new_empty!(SaeHandshakeIndication, D) }
7073        }
7074
7075        #[inline]
7076        unsafe fn decode(
7077            &mut self,
7078            decoder: &mut fidl::encoding::Decoder<'_, D>,
7079            offset: usize,
7080            _depth: fidl::encoding::Depth,
7081        ) -> fidl::Result<()> {
7082            decoder.debug_check_bounds::<Self>(offset);
7083            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7084            // Verify that padding bytes are zero.
7085            // Copy from the buffer into the object.
7086            unsafe {
7087                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
7088            }
7089            Ok(())
7090        }
7091    }
7092
7093    impl fidl::encoding::ValueTypeMarker for MlmeOnScanEndRequest {
7094        type Borrowed<'a> = &'a Self;
7095        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7096            value
7097        }
7098    }
7099
7100    unsafe impl fidl::encoding::TypeMarker for MlmeOnScanEndRequest {
7101        type Owned = Self;
7102
7103        #[inline(always)]
7104        fn inline_align(_context: fidl::encoding::Context) -> usize {
7105            8
7106        }
7107
7108        #[inline(always)]
7109        fn inline_size(_context: fidl::encoding::Context) -> usize {
7110            16
7111        }
7112    }
7113
7114    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeOnScanEndRequest, D>
7115        for &MlmeOnScanEndRequest
7116    {
7117        #[inline]
7118        unsafe fn encode(
7119            self,
7120            encoder: &mut fidl::encoding::Encoder<'_, D>,
7121            offset: usize,
7122            _depth: fidl::encoding::Depth,
7123        ) -> fidl::Result<()> {
7124            encoder.debug_check_bounds::<MlmeOnScanEndRequest>(offset);
7125            // Delegate to tuple encoding.
7126            fidl::encoding::Encode::<MlmeOnScanEndRequest, D>::encode(
7127                (<ScanEnd as fidl::encoding::ValueTypeMarker>::borrow(&self.end),),
7128                encoder,
7129                offset,
7130                _depth,
7131            )
7132        }
7133    }
7134    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanEnd, D>>
7135        fidl::encoding::Encode<MlmeOnScanEndRequest, D> for (T0,)
7136    {
7137        #[inline]
7138        unsafe fn encode(
7139            self,
7140            encoder: &mut fidl::encoding::Encoder<'_, D>,
7141            offset: usize,
7142            depth: fidl::encoding::Depth,
7143        ) -> fidl::Result<()> {
7144            encoder.debug_check_bounds::<MlmeOnScanEndRequest>(offset);
7145            // Zero out padding regions. There's no need to apply masks
7146            // because the unmasked parts will be overwritten by fields.
7147            // Write the fields.
7148            self.0.encode(encoder, offset + 0, depth)?;
7149            Ok(())
7150        }
7151    }
7152
7153    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeOnScanEndRequest {
7154        #[inline(always)]
7155        fn new_empty() -> Self {
7156            Self { end: fidl::new_empty!(ScanEnd, D) }
7157        }
7158
7159        #[inline]
7160        unsafe fn decode(
7161            &mut self,
7162            decoder: &mut fidl::encoding::Decoder<'_, D>,
7163            offset: usize,
7164            _depth: fidl::encoding::Depth,
7165        ) -> fidl::Result<()> {
7166            decoder.debug_check_bounds::<Self>(offset);
7167            // Verify that padding bytes are zero.
7168            fidl::decode!(ScanEnd, D, &mut self.end, decoder, offset + 0, _depth)?;
7169            Ok(())
7170        }
7171    }
7172
7173    impl fidl::encoding::ValueTypeMarker for MlmeOnScanResultRequest {
7174        type Borrowed<'a> = &'a Self;
7175        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7176            value
7177        }
7178    }
7179
7180    unsafe impl fidl::encoding::TypeMarker for MlmeOnScanResultRequest {
7181        type Owned = Self;
7182
7183        #[inline(always)]
7184        fn inline_align(_context: fidl::encoding::Context) -> usize {
7185            8
7186        }
7187
7188        #[inline(always)]
7189        fn inline_size(_context: fidl::encoding::Context) -> usize {
7190            64
7191        }
7192    }
7193
7194    unsafe impl<D: fidl::encoding::ResourceDialect>
7195        fidl::encoding::Encode<MlmeOnScanResultRequest, D> for &MlmeOnScanResultRequest
7196    {
7197        #[inline]
7198        unsafe fn encode(
7199            self,
7200            encoder: &mut fidl::encoding::Encoder<'_, D>,
7201            offset: usize,
7202            _depth: fidl::encoding::Depth,
7203        ) -> fidl::Result<()> {
7204            encoder.debug_check_bounds::<MlmeOnScanResultRequest>(offset);
7205            // Delegate to tuple encoding.
7206            fidl::encoding::Encode::<MlmeOnScanResultRequest, D>::encode(
7207                (<ScanResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),),
7208                encoder,
7209                offset,
7210                _depth,
7211            )
7212        }
7213    }
7214    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanResult, D>>
7215        fidl::encoding::Encode<MlmeOnScanResultRequest, D> for (T0,)
7216    {
7217        #[inline]
7218        unsafe fn encode(
7219            self,
7220            encoder: &mut fidl::encoding::Encoder<'_, D>,
7221            offset: usize,
7222            depth: fidl::encoding::Depth,
7223        ) -> fidl::Result<()> {
7224            encoder.debug_check_bounds::<MlmeOnScanResultRequest>(offset);
7225            // Zero out padding regions. There's no need to apply masks
7226            // because the unmasked parts will be overwritten by fields.
7227            // Write the fields.
7228            self.0.encode(encoder, offset + 0, depth)?;
7229            Ok(())
7230        }
7231    }
7232
7233    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7234        for MlmeOnScanResultRequest
7235    {
7236        #[inline(always)]
7237        fn new_empty() -> Self {
7238            Self { result: fidl::new_empty!(ScanResult, D) }
7239        }
7240
7241        #[inline]
7242        unsafe fn decode(
7243            &mut self,
7244            decoder: &mut fidl::encoding::Decoder<'_, D>,
7245            offset: usize,
7246            _depth: fidl::encoding::Depth,
7247        ) -> fidl::Result<()> {
7248            decoder.debug_check_bounds::<Self>(offset);
7249            // Verify that padding bytes are zero.
7250            fidl::decode!(ScanResult, D, &mut self.result, decoder, offset + 0, _depth)?;
7251            Ok(())
7252        }
7253    }
7254
7255    impl fidl::encoding::ValueTypeMarker for MlmeOnWmmStatusRespRequest {
7256        type Borrowed<'a> = &'a Self;
7257        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7258            value
7259        }
7260    }
7261
7262    unsafe impl fidl::encoding::TypeMarker for MlmeOnWmmStatusRespRequest {
7263        type Owned = Self;
7264
7265        #[inline(always)]
7266        fn inline_align(_context: fidl::encoding::Context) -> usize {
7267            4
7268        }
7269
7270        #[inline(always)]
7271        fn inline_size(_context: fidl::encoding::Context) -> usize {
7272            40
7273        }
7274    }
7275
7276    unsafe impl<D: fidl::encoding::ResourceDialect>
7277        fidl::encoding::Encode<MlmeOnWmmStatusRespRequest, D> for &MlmeOnWmmStatusRespRequest
7278    {
7279        #[inline]
7280        unsafe fn encode(
7281            self,
7282            encoder: &mut fidl::encoding::Encoder<'_, D>,
7283            offset: usize,
7284            _depth: fidl::encoding::Depth,
7285        ) -> fidl::Result<()> {
7286            encoder.debug_check_bounds::<MlmeOnWmmStatusRespRequest>(offset);
7287            // Delegate to tuple encoding.
7288            fidl::encoding::Encode::<MlmeOnWmmStatusRespRequest, D>::encode(
7289                (
7290                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
7291                    <fidl_fuchsia_wlan_internal__common::WmmStatusResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
7292                ),
7293                encoder, offset, _depth
7294            )
7295        }
7296    }
7297    unsafe impl<
7298            D: fidl::encoding::ResourceDialect,
7299            T0: fidl::encoding::Encode<i32, D>,
7300            T1: fidl::encoding::Encode<fidl_fuchsia_wlan_internal__common::WmmStatusResponse, D>,
7301        > fidl::encoding::Encode<MlmeOnWmmStatusRespRequest, D> for (T0, T1)
7302    {
7303        #[inline]
7304        unsafe fn encode(
7305            self,
7306            encoder: &mut fidl::encoding::Encoder<'_, D>,
7307            offset: usize,
7308            depth: fidl::encoding::Depth,
7309        ) -> fidl::Result<()> {
7310            encoder.debug_check_bounds::<MlmeOnWmmStatusRespRequest>(offset);
7311            // Zero out padding regions. There's no need to apply masks
7312            // because the unmasked parts will be overwritten by fields.
7313            unsafe {
7314                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(36);
7315                (ptr as *mut u32).write_unaligned(0);
7316            }
7317            // Write the fields.
7318            self.0.encode(encoder, offset + 0, depth)?;
7319            self.1.encode(encoder, offset + 4, depth)?;
7320            Ok(())
7321        }
7322    }
7323
7324    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7325        for MlmeOnWmmStatusRespRequest
7326    {
7327        #[inline(always)]
7328        fn new_empty() -> Self {
7329            Self {
7330                status: fidl::new_empty!(i32, D),
7331                resp: fidl::new_empty!(fidl_fuchsia_wlan_internal__common::WmmStatusResponse, D),
7332            }
7333        }
7334
7335        #[inline]
7336        unsafe fn decode(
7337            &mut self,
7338            decoder: &mut fidl::encoding::Decoder<'_, D>,
7339            offset: usize,
7340            _depth: fidl::encoding::Depth,
7341        ) -> fidl::Result<()> {
7342            decoder.debug_check_bounds::<Self>(offset);
7343            // Verify that padding bytes are zero.
7344            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(36) };
7345            let padval = unsafe { (ptr as *const u32).read_unaligned() };
7346            let mask = 0xffff0000u32;
7347            let maskedval = padval & mask;
7348            if maskedval != 0 {
7349                return Err(fidl::Error::NonZeroPadding {
7350                    padding_start: offset + 36 + ((mask as u64).trailing_zeros() / 8) as usize,
7351                });
7352            }
7353            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
7354            fidl::decode!(
7355                fidl_fuchsia_wlan_internal__common::WmmStatusResponse,
7356                D,
7357                &mut self.resp,
7358                decoder,
7359                offset + 4,
7360                _depth
7361            )?;
7362            Ok(())
7363        }
7364    }
7365
7366    impl fidl::encoding::ValueTypeMarker for MlmeQueryDeviceInfoResponse {
7367        type Borrowed<'a> = &'a Self;
7368        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7369            value
7370        }
7371    }
7372
7373    unsafe impl fidl::encoding::TypeMarker for MlmeQueryDeviceInfoResponse {
7374        type Owned = Self;
7375
7376        #[inline(always)]
7377        fn inline_align(_context: fidl::encoding::Context) -> usize {
7378            8
7379        }
7380
7381        #[inline(always)]
7382        fn inline_size(_context: fidl::encoding::Context) -> usize {
7383            40
7384        }
7385    }
7386
7387    unsafe impl<D: fidl::encoding::ResourceDialect>
7388        fidl::encoding::Encode<MlmeQueryDeviceInfoResponse, D> for &MlmeQueryDeviceInfoResponse
7389    {
7390        #[inline]
7391        unsafe fn encode(
7392            self,
7393            encoder: &mut fidl::encoding::Encoder<'_, D>,
7394            offset: usize,
7395            _depth: fidl::encoding::Depth,
7396        ) -> fidl::Result<()> {
7397            encoder.debug_check_bounds::<MlmeQueryDeviceInfoResponse>(offset);
7398            // Delegate to tuple encoding.
7399            fidl::encoding::Encode::<MlmeQueryDeviceInfoResponse, D>::encode(
7400                (<DeviceInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
7401                encoder,
7402                offset,
7403                _depth,
7404            )
7405        }
7406    }
7407    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<DeviceInfo, D>>
7408        fidl::encoding::Encode<MlmeQueryDeviceInfoResponse, D> for (T0,)
7409    {
7410        #[inline]
7411        unsafe fn encode(
7412            self,
7413            encoder: &mut fidl::encoding::Encoder<'_, D>,
7414            offset: usize,
7415            depth: fidl::encoding::Depth,
7416        ) -> fidl::Result<()> {
7417            encoder.debug_check_bounds::<MlmeQueryDeviceInfoResponse>(offset);
7418            // Zero out padding regions. There's no need to apply masks
7419            // because the unmasked parts will be overwritten by fields.
7420            // Write the fields.
7421            self.0.encode(encoder, offset + 0, depth)?;
7422            Ok(())
7423        }
7424    }
7425
7426    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7427        for MlmeQueryDeviceInfoResponse
7428    {
7429        #[inline(always)]
7430        fn new_empty() -> Self {
7431            Self { info: fidl::new_empty!(DeviceInfo, D) }
7432        }
7433
7434        #[inline]
7435        unsafe fn decode(
7436            &mut self,
7437            decoder: &mut fidl::encoding::Decoder<'_, D>,
7438            offset: usize,
7439            _depth: fidl::encoding::Depth,
7440        ) -> fidl::Result<()> {
7441            decoder.debug_check_bounds::<Self>(offset);
7442            // Verify that padding bytes are zero.
7443            fidl::decode!(DeviceInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
7444            Ok(())
7445        }
7446    }
7447
7448    impl fidl::encoding::ValueTypeMarker for MlmeReconnectReqRequest {
7449        type Borrowed<'a> = &'a Self;
7450        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7451            value
7452        }
7453    }
7454
7455    unsafe impl fidl::encoding::TypeMarker for MlmeReconnectReqRequest {
7456        type Owned = Self;
7457
7458        #[inline(always)]
7459        fn inline_align(_context: fidl::encoding::Context) -> usize {
7460            1
7461        }
7462
7463        #[inline(always)]
7464        fn inline_size(_context: fidl::encoding::Context) -> usize {
7465            6
7466        }
7467        #[inline(always)]
7468        fn encode_is_copy() -> bool {
7469            true
7470        }
7471
7472        #[inline(always)]
7473        fn decode_is_copy() -> bool {
7474            true
7475        }
7476    }
7477
7478    unsafe impl<D: fidl::encoding::ResourceDialect>
7479        fidl::encoding::Encode<MlmeReconnectReqRequest, D> for &MlmeReconnectReqRequest
7480    {
7481        #[inline]
7482        unsafe fn encode(
7483            self,
7484            encoder: &mut fidl::encoding::Encoder<'_, D>,
7485            offset: usize,
7486            _depth: fidl::encoding::Depth,
7487        ) -> fidl::Result<()> {
7488            encoder.debug_check_bounds::<MlmeReconnectReqRequest>(offset);
7489            unsafe {
7490                // Copy the object into the buffer.
7491                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7492                (buf_ptr as *mut MlmeReconnectReqRequest)
7493                    .write_unaligned((self as *const MlmeReconnectReqRequest).read());
7494                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7495                // done second because the memcpy will write garbage to these bytes.
7496            }
7497            Ok(())
7498        }
7499    }
7500    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ReconnectRequest, D>>
7501        fidl::encoding::Encode<MlmeReconnectReqRequest, D> for (T0,)
7502    {
7503        #[inline]
7504        unsafe fn encode(
7505            self,
7506            encoder: &mut fidl::encoding::Encoder<'_, D>,
7507            offset: usize,
7508            depth: fidl::encoding::Depth,
7509        ) -> fidl::Result<()> {
7510            encoder.debug_check_bounds::<MlmeReconnectReqRequest>(offset);
7511            // Zero out padding regions. There's no need to apply masks
7512            // because the unmasked parts will be overwritten by fields.
7513            // Write the fields.
7514            self.0.encode(encoder, offset + 0, depth)?;
7515            Ok(())
7516        }
7517    }
7518
7519    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7520        for MlmeReconnectReqRequest
7521    {
7522        #[inline(always)]
7523        fn new_empty() -> Self {
7524            Self { req: fidl::new_empty!(ReconnectRequest, D) }
7525        }
7526
7527        #[inline]
7528        unsafe fn decode(
7529            &mut self,
7530            decoder: &mut fidl::encoding::Decoder<'_, D>,
7531            offset: usize,
7532            _depth: fidl::encoding::Depth,
7533        ) -> fidl::Result<()> {
7534            decoder.debug_check_bounds::<Self>(offset);
7535            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7536            // Verify that padding bytes are zero.
7537            // Copy from the buffer into the object.
7538            unsafe {
7539                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
7540            }
7541            Ok(())
7542        }
7543    }
7544
7545    impl fidl::encoding::ValueTypeMarker for MlmeRelayCapturedFrameRequest {
7546        type Borrowed<'a> = &'a Self;
7547        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7548            value
7549        }
7550    }
7551
7552    unsafe impl fidl::encoding::TypeMarker for MlmeRelayCapturedFrameRequest {
7553        type Owned = Self;
7554
7555        #[inline(always)]
7556        fn inline_align(_context: fidl::encoding::Context) -> usize {
7557            8
7558        }
7559
7560        #[inline(always)]
7561        fn inline_size(_context: fidl::encoding::Context) -> usize {
7562            16
7563        }
7564    }
7565
7566    unsafe impl<D: fidl::encoding::ResourceDialect>
7567        fidl::encoding::Encode<MlmeRelayCapturedFrameRequest, D>
7568        for &MlmeRelayCapturedFrameRequest
7569    {
7570        #[inline]
7571        unsafe fn encode(
7572            self,
7573            encoder: &mut fidl::encoding::Encoder<'_, D>,
7574            offset: usize,
7575            _depth: fidl::encoding::Depth,
7576        ) -> fidl::Result<()> {
7577            encoder.debug_check_bounds::<MlmeRelayCapturedFrameRequest>(offset);
7578            // Delegate to tuple encoding.
7579            fidl::encoding::Encode::<MlmeRelayCapturedFrameRequest, D>::encode(
7580                (<CapturedFrameResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),),
7581                encoder,
7582                offset,
7583                _depth,
7584            )
7585        }
7586    }
7587    unsafe impl<
7588            D: fidl::encoding::ResourceDialect,
7589            T0: fidl::encoding::Encode<CapturedFrameResult, D>,
7590        > fidl::encoding::Encode<MlmeRelayCapturedFrameRequest, D> for (T0,)
7591    {
7592        #[inline]
7593        unsafe fn encode(
7594            self,
7595            encoder: &mut fidl::encoding::Encoder<'_, D>,
7596            offset: usize,
7597            depth: fidl::encoding::Depth,
7598        ) -> fidl::Result<()> {
7599            encoder.debug_check_bounds::<MlmeRelayCapturedFrameRequest>(offset);
7600            // Zero out padding regions. There's no need to apply masks
7601            // because the unmasked parts will be overwritten by fields.
7602            // Write the fields.
7603            self.0.encode(encoder, offset + 0, depth)?;
7604            Ok(())
7605        }
7606    }
7607
7608    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7609        for MlmeRelayCapturedFrameRequest
7610    {
7611        #[inline(always)]
7612        fn new_empty() -> Self {
7613            Self { result: fidl::new_empty!(CapturedFrameResult, D) }
7614        }
7615
7616        #[inline]
7617        unsafe fn decode(
7618            &mut self,
7619            decoder: &mut fidl::encoding::Decoder<'_, D>,
7620            offset: usize,
7621            _depth: fidl::encoding::Depth,
7622        ) -> fidl::Result<()> {
7623            decoder.debug_check_bounds::<Self>(offset);
7624            // Verify that padding bytes are zero.
7625            fidl::decode!(CapturedFrameResult, D, &mut self.result, decoder, offset + 0, _depth)?;
7626            Ok(())
7627        }
7628    }
7629
7630    impl fidl::encoding::ValueTypeMarker for MlmeResetReqRequest {
7631        type Borrowed<'a> = &'a Self;
7632        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7633            value
7634        }
7635    }
7636
7637    unsafe impl fidl::encoding::TypeMarker for MlmeResetReqRequest {
7638        type Owned = Self;
7639
7640        #[inline(always)]
7641        fn inline_align(_context: fidl::encoding::Context) -> usize {
7642            1
7643        }
7644
7645        #[inline(always)]
7646        fn inline_size(_context: fidl::encoding::Context) -> usize {
7647            7
7648        }
7649    }
7650
7651    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeResetReqRequest, D>
7652        for &MlmeResetReqRequest
7653    {
7654        #[inline]
7655        unsafe fn encode(
7656            self,
7657            encoder: &mut fidl::encoding::Encoder<'_, D>,
7658            offset: usize,
7659            _depth: fidl::encoding::Depth,
7660        ) -> fidl::Result<()> {
7661            encoder.debug_check_bounds::<MlmeResetReqRequest>(offset);
7662            // Delegate to tuple encoding.
7663            fidl::encoding::Encode::<MlmeResetReqRequest, D>::encode(
7664                (<ResetRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
7665                encoder,
7666                offset,
7667                _depth,
7668            )
7669        }
7670    }
7671    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ResetRequest, D>>
7672        fidl::encoding::Encode<MlmeResetReqRequest, D> for (T0,)
7673    {
7674        #[inline]
7675        unsafe fn encode(
7676            self,
7677            encoder: &mut fidl::encoding::Encoder<'_, D>,
7678            offset: usize,
7679            depth: fidl::encoding::Depth,
7680        ) -> fidl::Result<()> {
7681            encoder.debug_check_bounds::<MlmeResetReqRequest>(offset);
7682            // Zero out padding regions. There's no need to apply masks
7683            // because the unmasked parts will be overwritten by fields.
7684            // Write the fields.
7685            self.0.encode(encoder, offset + 0, depth)?;
7686            Ok(())
7687        }
7688    }
7689
7690    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeResetReqRequest {
7691        #[inline(always)]
7692        fn new_empty() -> Self {
7693            Self { req: fidl::new_empty!(ResetRequest, D) }
7694        }
7695
7696        #[inline]
7697        unsafe fn decode(
7698            &mut self,
7699            decoder: &mut fidl::encoding::Decoder<'_, D>,
7700            offset: usize,
7701            _depth: fidl::encoding::Depth,
7702        ) -> fidl::Result<()> {
7703            decoder.debug_check_bounds::<Self>(offset);
7704            // Verify that padding bytes are zero.
7705            fidl::decode!(ResetRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
7706            Ok(())
7707        }
7708    }
7709
7710    impl fidl::encoding::ValueTypeMarker for MlmeRoamConfRequest {
7711        type Borrowed<'a> = &'a Self;
7712        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7713            value
7714        }
7715    }
7716
7717    unsafe impl fidl::encoding::TypeMarker for MlmeRoamConfRequest {
7718        type Owned = Self;
7719
7720        #[inline(always)]
7721        fn inline_align(_context: fidl::encoding::Context) -> usize {
7722            8
7723        }
7724
7725        #[inline(always)]
7726        fn inline_size(_context: fidl::encoding::Context) -> usize {
7727            32
7728        }
7729    }
7730
7731    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeRoamConfRequest, D>
7732        for &MlmeRoamConfRequest
7733    {
7734        #[inline]
7735        unsafe fn encode(
7736            self,
7737            encoder: &mut fidl::encoding::Encoder<'_, D>,
7738            offset: usize,
7739            _depth: fidl::encoding::Depth,
7740        ) -> fidl::Result<()> {
7741            encoder.debug_check_bounds::<MlmeRoamConfRequest>(offset);
7742            // Delegate to tuple encoding.
7743            fidl::encoding::Encode::<MlmeRoamConfRequest, D>::encode(
7744                (<RoamConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.conf),),
7745                encoder,
7746                offset,
7747                _depth,
7748            )
7749        }
7750    }
7751    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RoamConfirm, D>>
7752        fidl::encoding::Encode<MlmeRoamConfRequest, D> for (T0,)
7753    {
7754        #[inline]
7755        unsafe fn encode(
7756            self,
7757            encoder: &mut fidl::encoding::Encoder<'_, D>,
7758            offset: usize,
7759            depth: fidl::encoding::Depth,
7760        ) -> fidl::Result<()> {
7761            encoder.debug_check_bounds::<MlmeRoamConfRequest>(offset);
7762            // Zero out padding regions. There's no need to apply masks
7763            // because the unmasked parts will be overwritten by fields.
7764            // Write the fields.
7765            self.0.encode(encoder, offset + 0, depth)?;
7766            Ok(())
7767        }
7768    }
7769
7770    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeRoamConfRequest {
7771        #[inline(always)]
7772        fn new_empty() -> Self {
7773            Self { conf: fidl::new_empty!(RoamConfirm, D) }
7774        }
7775
7776        #[inline]
7777        unsafe fn decode(
7778            &mut self,
7779            decoder: &mut fidl::encoding::Decoder<'_, D>,
7780            offset: usize,
7781            _depth: fidl::encoding::Depth,
7782        ) -> fidl::Result<()> {
7783            decoder.debug_check_bounds::<Self>(offset);
7784            // Verify that padding bytes are zero.
7785            fidl::decode!(RoamConfirm, D, &mut self.conf, decoder, offset + 0, _depth)?;
7786            Ok(())
7787        }
7788    }
7789
7790    impl fidl::encoding::ValueTypeMarker for MlmeRoamReqRequest {
7791        type Borrowed<'a> = &'a Self;
7792        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7793            value
7794        }
7795    }
7796
7797    unsafe impl fidl::encoding::TypeMarker for MlmeRoamReqRequest {
7798        type Owned = Self;
7799
7800        #[inline(always)]
7801        fn inline_align(_context: fidl::encoding::Context) -> usize {
7802            8
7803        }
7804
7805        #[inline(always)]
7806        fn inline_size(_context: fidl::encoding::Context) -> usize {
7807            48
7808        }
7809    }
7810
7811    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeRoamReqRequest, D>
7812        for &MlmeRoamReqRequest
7813    {
7814        #[inline]
7815        unsafe fn encode(
7816            self,
7817            encoder: &mut fidl::encoding::Encoder<'_, D>,
7818            offset: usize,
7819            _depth: fidl::encoding::Depth,
7820        ) -> fidl::Result<()> {
7821            encoder.debug_check_bounds::<MlmeRoamReqRequest>(offset);
7822            // Delegate to tuple encoding.
7823            fidl::encoding::Encode::<MlmeRoamReqRequest, D>::encode(
7824                (<RoamRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
7825                encoder,
7826                offset,
7827                _depth,
7828            )
7829        }
7830    }
7831    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RoamRequest, D>>
7832        fidl::encoding::Encode<MlmeRoamReqRequest, D> for (T0,)
7833    {
7834        #[inline]
7835        unsafe fn encode(
7836            self,
7837            encoder: &mut fidl::encoding::Encoder<'_, D>,
7838            offset: usize,
7839            depth: fidl::encoding::Depth,
7840        ) -> fidl::Result<()> {
7841            encoder.debug_check_bounds::<MlmeRoamReqRequest>(offset);
7842            // Zero out padding regions. There's no need to apply masks
7843            // because the unmasked parts will be overwritten by fields.
7844            // Write the fields.
7845            self.0.encode(encoder, offset + 0, depth)?;
7846            Ok(())
7847        }
7848    }
7849
7850    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeRoamReqRequest {
7851        #[inline(always)]
7852        fn new_empty() -> Self {
7853            Self { req: fidl::new_empty!(RoamRequest, D) }
7854        }
7855
7856        #[inline]
7857        unsafe fn decode(
7858            &mut self,
7859            decoder: &mut fidl::encoding::Decoder<'_, D>,
7860            offset: usize,
7861            _depth: fidl::encoding::Depth,
7862        ) -> fidl::Result<()> {
7863            decoder.debug_check_bounds::<Self>(offset);
7864            // Verify that padding bytes are zero.
7865            fidl::decode!(RoamRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
7866            Ok(())
7867        }
7868    }
7869
7870    impl fidl::encoding::ValueTypeMarker for MlmeRoamResultIndRequest {
7871        type Borrowed<'a> = &'a Self;
7872        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7873            value
7874        }
7875    }
7876
7877    unsafe impl fidl::encoding::TypeMarker for MlmeRoamResultIndRequest {
7878        type Owned = Self;
7879
7880        #[inline(always)]
7881        fn inline_align(_context: fidl::encoding::Context) -> usize {
7882            8
7883        }
7884
7885        #[inline(always)]
7886        fn inline_size(_context: fidl::encoding::Context) -> usize {
7887            32
7888        }
7889    }
7890
7891    unsafe impl<D: fidl::encoding::ResourceDialect>
7892        fidl::encoding::Encode<MlmeRoamResultIndRequest, D> for &MlmeRoamResultIndRequest
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::<MlmeRoamResultIndRequest>(offset);
7902            // Delegate to tuple encoding.
7903            fidl::encoding::Encode::<MlmeRoamResultIndRequest, D>::encode(
7904                (<RoamResultIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
7905                encoder,
7906                offset,
7907                _depth,
7908            )
7909        }
7910    }
7911    unsafe impl<
7912            D: fidl::encoding::ResourceDialect,
7913            T0: fidl::encoding::Encode<RoamResultIndication, D>,
7914        > fidl::encoding::Encode<MlmeRoamResultIndRequest, 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::<MlmeRoamResultIndRequest>(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 MlmeRoamResultIndRequest
7934    {
7935        #[inline(always)]
7936        fn new_empty() -> Self {
7937            Self { ind: fidl::new_empty!(RoamResultIndication, 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            // Verify that padding bytes are zero.
7949            fidl::decode!(RoamResultIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
7950            Ok(())
7951        }
7952    }
7953
7954    impl fidl::encoding::ValueTypeMarker for MlmeRoamStartIndRequest {
7955        type Borrowed<'a> = &'a Self;
7956        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7957            value
7958        }
7959    }
7960
7961    unsafe impl fidl::encoding::TypeMarker for MlmeRoamStartIndRequest {
7962        type Owned = Self;
7963
7964        #[inline(always)]
7965        fn inline_align(_context: fidl::encoding::Context) -> usize {
7966            8
7967        }
7968
7969        #[inline(always)]
7970        fn inline_size(_context: fidl::encoding::Context) -> usize {
7971            64
7972        }
7973    }
7974
7975    unsafe impl<D: fidl::encoding::ResourceDialect>
7976        fidl::encoding::Encode<MlmeRoamStartIndRequest, D> for &MlmeRoamStartIndRequest
7977    {
7978        #[inline]
7979        unsafe fn encode(
7980            self,
7981            encoder: &mut fidl::encoding::Encoder<'_, D>,
7982            offset: usize,
7983            _depth: fidl::encoding::Depth,
7984        ) -> fidl::Result<()> {
7985            encoder.debug_check_bounds::<MlmeRoamStartIndRequest>(offset);
7986            // Delegate to tuple encoding.
7987            fidl::encoding::Encode::<MlmeRoamStartIndRequest, D>::encode(
7988                (<RoamStartIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
7989                encoder,
7990                offset,
7991                _depth,
7992            )
7993        }
7994    }
7995    unsafe impl<
7996            D: fidl::encoding::ResourceDialect,
7997            T0: fidl::encoding::Encode<RoamStartIndication, D>,
7998        > fidl::encoding::Encode<MlmeRoamStartIndRequest, D> for (T0,)
7999    {
8000        #[inline]
8001        unsafe fn encode(
8002            self,
8003            encoder: &mut fidl::encoding::Encoder<'_, D>,
8004            offset: usize,
8005            depth: fidl::encoding::Depth,
8006        ) -> fidl::Result<()> {
8007            encoder.debug_check_bounds::<MlmeRoamStartIndRequest>(offset);
8008            // Zero out padding regions. There's no need to apply masks
8009            // because the unmasked parts will be overwritten by fields.
8010            // Write the fields.
8011            self.0.encode(encoder, offset + 0, depth)?;
8012            Ok(())
8013        }
8014    }
8015
8016    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8017        for MlmeRoamStartIndRequest
8018    {
8019        #[inline(always)]
8020        fn new_empty() -> Self {
8021            Self { ind: fidl::new_empty!(RoamStartIndication, D) }
8022        }
8023
8024        #[inline]
8025        unsafe fn decode(
8026            &mut self,
8027            decoder: &mut fidl::encoding::Decoder<'_, D>,
8028            offset: usize,
8029            _depth: fidl::encoding::Depth,
8030        ) -> fidl::Result<()> {
8031            decoder.debug_check_bounds::<Self>(offset);
8032            // Verify that padding bytes are zero.
8033            fidl::decode!(RoamStartIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
8034            Ok(())
8035        }
8036    }
8037
8038    impl fidl::encoding::ValueTypeMarker for MlmeSaeFrameTxRequest {
8039        type Borrowed<'a> = &'a Self;
8040        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8041            value
8042        }
8043    }
8044
8045    unsafe impl fidl::encoding::TypeMarker for MlmeSaeFrameTxRequest {
8046        type Owned = Self;
8047
8048        #[inline(always)]
8049        fn inline_align(_context: fidl::encoding::Context) -> usize {
8050            8
8051        }
8052
8053        #[inline(always)]
8054        fn inline_size(_context: fidl::encoding::Context) -> usize {
8055            32
8056        }
8057    }
8058
8059    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeSaeFrameTxRequest, D>
8060        for &MlmeSaeFrameTxRequest
8061    {
8062        #[inline]
8063        unsafe fn encode(
8064            self,
8065            encoder: &mut fidl::encoding::Encoder<'_, D>,
8066            offset: usize,
8067            _depth: fidl::encoding::Depth,
8068        ) -> fidl::Result<()> {
8069            encoder.debug_check_bounds::<MlmeSaeFrameTxRequest>(offset);
8070            // Delegate to tuple encoding.
8071            fidl::encoding::Encode::<MlmeSaeFrameTxRequest, D>::encode(
8072                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
8073                encoder,
8074                offset,
8075                _depth,
8076            )
8077        }
8078    }
8079    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
8080        fidl::encoding::Encode<MlmeSaeFrameTxRequest, D> for (T0,)
8081    {
8082        #[inline]
8083        unsafe fn encode(
8084            self,
8085            encoder: &mut fidl::encoding::Encoder<'_, D>,
8086            offset: usize,
8087            depth: fidl::encoding::Depth,
8088        ) -> fidl::Result<()> {
8089            encoder.debug_check_bounds::<MlmeSaeFrameTxRequest>(offset);
8090            // Zero out padding regions. There's no need to apply masks
8091            // because the unmasked parts will be overwritten by fields.
8092            // Write the fields.
8093            self.0.encode(encoder, offset + 0, depth)?;
8094            Ok(())
8095        }
8096    }
8097
8098    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeSaeFrameTxRequest {
8099        #[inline(always)]
8100        fn new_empty() -> Self {
8101            Self { frame: fidl::new_empty!(SaeFrame, D) }
8102        }
8103
8104        #[inline]
8105        unsafe fn decode(
8106            &mut self,
8107            decoder: &mut fidl::encoding::Decoder<'_, D>,
8108            offset: usize,
8109            _depth: fidl::encoding::Depth,
8110        ) -> fidl::Result<()> {
8111            decoder.debug_check_bounds::<Self>(offset);
8112            // Verify that padding bytes are zero.
8113            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
8114            Ok(())
8115        }
8116    }
8117
8118    impl fidl::encoding::ValueTypeMarker for MlmeSaeHandshakeRespRequest {
8119        type Borrowed<'a> = &'a Self;
8120        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8121            value
8122        }
8123    }
8124
8125    unsafe impl fidl::encoding::TypeMarker for MlmeSaeHandshakeRespRequest {
8126        type Owned = Self;
8127
8128        #[inline(always)]
8129        fn inline_align(_context: fidl::encoding::Context) -> usize {
8130            2
8131        }
8132
8133        #[inline(always)]
8134        fn inline_size(_context: fidl::encoding::Context) -> usize {
8135            8
8136        }
8137    }
8138
8139    unsafe impl<D: fidl::encoding::ResourceDialect>
8140        fidl::encoding::Encode<MlmeSaeHandshakeRespRequest, D> for &MlmeSaeHandshakeRespRequest
8141    {
8142        #[inline]
8143        unsafe fn encode(
8144            self,
8145            encoder: &mut fidl::encoding::Encoder<'_, D>,
8146            offset: usize,
8147            _depth: fidl::encoding::Depth,
8148        ) -> fidl::Result<()> {
8149            encoder.debug_check_bounds::<MlmeSaeHandshakeRespRequest>(offset);
8150            // Delegate to tuple encoding.
8151            fidl::encoding::Encode::<MlmeSaeHandshakeRespRequest, D>::encode(
8152                (<SaeHandshakeResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
8153                encoder,
8154                offset,
8155                _depth,
8156            )
8157        }
8158    }
8159    unsafe impl<
8160            D: fidl::encoding::ResourceDialect,
8161            T0: fidl::encoding::Encode<SaeHandshakeResponse, D>,
8162        > fidl::encoding::Encode<MlmeSaeHandshakeRespRequest, D> for (T0,)
8163    {
8164        #[inline]
8165        unsafe fn encode(
8166            self,
8167            encoder: &mut fidl::encoding::Encoder<'_, D>,
8168            offset: usize,
8169            depth: fidl::encoding::Depth,
8170        ) -> fidl::Result<()> {
8171            encoder.debug_check_bounds::<MlmeSaeHandshakeRespRequest>(offset);
8172            // Zero out padding regions. There's no need to apply masks
8173            // because the unmasked parts will be overwritten by fields.
8174            // Write the fields.
8175            self.0.encode(encoder, offset + 0, depth)?;
8176            Ok(())
8177        }
8178    }
8179
8180    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8181        for MlmeSaeHandshakeRespRequest
8182    {
8183        #[inline(always)]
8184        fn new_empty() -> Self {
8185            Self { resp: fidl::new_empty!(SaeHandshakeResponse, D) }
8186        }
8187
8188        #[inline]
8189        unsafe fn decode(
8190            &mut self,
8191            decoder: &mut fidl::encoding::Decoder<'_, D>,
8192            offset: usize,
8193            _depth: fidl::encoding::Depth,
8194        ) -> fidl::Result<()> {
8195            decoder.debug_check_bounds::<Self>(offset);
8196            // Verify that padding bytes are zero.
8197            fidl::decode!(SaeHandshakeResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
8198            Ok(())
8199        }
8200    }
8201
8202    impl fidl::encoding::ValueTypeMarker for MlmeSetControlledPortRequest {
8203        type Borrowed<'a> = &'a Self;
8204        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8205            value
8206        }
8207    }
8208
8209    unsafe impl fidl::encoding::TypeMarker for MlmeSetControlledPortRequest {
8210        type Owned = Self;
8211
8212        #[inline(always)]
8213        fn inline_align(_context: fidl::encoding::Context) -> usize {
8214            4
8215        }
8216
8217        #[inline(always)]
8218        fn inline_size(_context: fidl::encoding::Context) -> usize {
8219            12
8220        }
8221    }
8222
8223    unsafe impl<D: fidl::encoding::ResourceDialect>
8224        fidl::encoding::Encode<MlmeSetControlledPortRequest, D> for &MlmeSetControlledPortRequest
8225    {
8226        #[inline]
8227        unsafe fn encode(
8228            self,
8229            encoder: &mut fidl::encoding::Encoder<'_, D>,
8230            offset: usize,
8231            _depth: fidl::encoding::Depth,
8232        ) -> fidl::Result<()> {
8233            encoder.debug_check_bounds::<MlmeSetControlledPortRequest>(offset);
8234            // Delegate to tuple encoding.
8235            fidl::encoding::Encode::<MlmeSetControlledPortRequest, D>::encode(
8236                (<SetControlledPortRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8237                encoder,
8238                offset,
8239                _depth,
8240            )
8241        }
8242    }
8243    unsafe impl<
8244            D: fidl::encoding::ResourceDialect,
8245            T0: fidl::encoding::Encode<SetControlledPortRequest, D>,
8246        > fidl::encoding::Encode<MlmeSetControlledPortRequest, D> for (T0,)
8247    {
8248        #[inline]
8249        unsafe fn encode(
8250            self,
8251            encoder: &mut fidl::encoding::Encoder<'_, D>,
8252            offset: usize,
8253            depth: fidl::encoding::Depth,
8254        ) -> fidl::Result<()> {
8255            encoder.debug_check_bounds::<MlmeSetControlledPortRequest>(offset);
8256            // Zero out padding regions. There's no need to apply masks
8257            // because the unmasked parts will be overwritten by fields.
8258            // Write the fields.
8259            self.0.encode(encoder, offset + 0, depth)?;
8260            Ok(())
8261        }
8262    }
8263
8264    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8265        for MlmeSetControlledPortRequest
8266    {
8267        #[inline(always)]
8268        fn new_empty() -> Self {
8269            Self { req: fidl::new_empty!(SetControlledPortRequest, D) }
8270        }
8271
8272        #[inline]
8273        unsafe fn decode(
8274            &mut self,
8275            decoder: &mut fidl::encoding::Decoder<'_, D>,
8276            offset: usize,
8277            _depth: fidl::encoding::Depth,
8278        ) -> fidl::Result<()> {
8279            decoder.debug_check_bounds::<Self>(offset);
8280            // Verify that padding bytes are zero.
8281            fidl::decode!(SetControlledPortRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8282            Ok(())
8283        }
8284    }
8285
8286    impl fidl::encoding::ValueTypeMarker for MlmeSetKeysConfRequest {
8287        type Borrowed<'a> = &'a Self;
8288        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8289            value
8290        }
8291    }
8292
8293    unsafe impl fidl::encoding::TypeMarker for MlmeSetKeysConfRequest {
8294        type Owned = Self;
8295
8296        #[inline(always)]
8297        fn inline_align(_context: fidl::encoding::Context) -> usize {
8298            8
8299        }
8300
8301        #[inline(always)]
8302        fn inline_size(_context: fidl::encoding::Context) -> usize {
8303            16
8304        }
8305    }
8306
8307    unsafe impl<D: fidl::encoding::ResourceDialect>
8308        fidl::encoding::Encode<MlmeSetKeysConfRequest, D> for &MlmeSetKeysConfRequest
8309    {
8310        #[inline]
8311        unsafe fn encode(
8312            self,
8313            encoder: &mut fidl::encoding::Encoder<'_, D>,
8314            offset: usize,
8315            _depth: fidl::encoding::Depth,
8316        ) -> fidl::Result<()> {
8317            encoder.debug_check_bounds::<MlmeSetKeysConfRequest>(offset);
8318            // Delegate to tuple encoding.
8319            fidl::encoding::Encode::<MlmeSetKeysConfRequest, D>::encode(
8320                (<SetKeysConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.conf),),
8321                encoder,
8322                offset,
8323                _depth,
8324            )
8325        }
8326    }
8327    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SetKeysConfirm, D>>
8328        fidl::encoding::Encode<MlmeSetKeysConfRequest, D> for (T0,)
8329    {
8330        #[inline]
8331        unsafe fn encode(
8332            self,
8333            encoder: &mut fidl::encoding::Encoder<'_, D>,
8334            offset: usize,
8335            depth: fidl::encoding::Depth,
8336        ) -> fidl::Result<()> {
8337            encoder.debug_check_bounds::<MlmeSetKeysConfRequest>(offset);
8338            // Zero out padding regions. There's no need to apply masks
8339            // because the unmasked parts will be overwritten by fields.
8340            // Write the fields.
8341            self.0.encode(encoder, offset + 0, depth)?;
8342            Ok(())
8343        }
8344    }
8345
8346    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8347        for MlmeSetKeysConfRequest
8348    {
8349        #[inline(always)]
8350        fn new_empty() -> Self {
8351            Self { conf: fidl::new_empty!(SetKeysConfirm, D) }
8352        }
8353
8354        #[inline]
8355        unsafe fn decode(
8356            &mut self,
8357            decoder: &mut fidl::encoding::Decoder<'_, D>,
8358            offset: usize,
8359            _depth: fidl::encoding::Depth,
8360        ) -> fidl::Result<()> {
8361            decoder.debug_check_bounds::<Self>(offset);
8362            // Verify that padding bytes are zero.
8363            fidl::decode!(SetKeysConfirm, D, &mut self.conf, decoder, offset + 0, _depth)?;
8364            Ok(())
8365        }
8366    }
8367
8368    impl fidl::encoding::ValueTypeMarker for MlmeSetKeysReqRequest {
8369        type Borrowed<'a> = &'a Self;
8370        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8371            value
8372        }
8373    }
8374
8375    unsafe impl fidl::encoding::TypeMarker for MlmeSetKeysReqRequest {
8376        type Owned = Self;
8377
8378        #[inline(always)]
8379        fn inline_align(_context: fidl::encoding::Context) -> usize {
8380            8
8381        }
8382
8383        #[inline(always)]
8384        fn inline_size(_context: fidl::encoding::Context) -> usize {
8385            16
8386        }
8387    }
8388
8389    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeSetKeysReqRequest, D>
8390        for &MlmeSetKeysReqRequest
8391    {
8392        #[inline]
8393        unsafe fn encode(
8394            self,
8395            encoder: &mut fidl::encoding::Encoder<'_, D>,
8396            offset: usize,
8397            _depth: fidl::encoding::Depth,
8398        ) -> fidl::Result<()> {
8399            encoder.debug_check_bounds::<MlmeSetKeysReqRequest>(offset);
8400            // Delegate to tuple encoding.
8401            fidl::encoding::Encode::<MlmeSetKeysReqRequest, D>::encode(
8402                (<SetKeysRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8403                encoder,
8404                offset,
8405                _depth,
8406            )
8407        }
8408    }
8409    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SetKeysRequest, D>>
8410        fidl::encoding::Encode<MlmeSetKeysReqRequest, D> for (T0,)
8411    {
8412        #[inline]
8413        unsafe fn encode(
8414            self,
8415            encoder: &mut fidl::encoding::Encoder<'_, D>,
8416            offset: usize,
8417            depth: fidl::encoding::Depth,
8418        ) -> fidl::Result<()> {
8419            encoder.debug_check_bounds::<MlmeSetKeysReqRequest>(offset);
8420            // Zero out padding regions. There's no need to apply masks
8421            // because the unmasked parts will be overwritten by fields.
8422            // Write the fields.
8423            self.0.encode(encoder, offset + 0, depth)?;
8424            Ok(())
8425        }
8426    }
8427
8428    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeSetKeysReqRequest {
8429        #[inline(always)]
8430        fn new_empty() -> Self {
8431            Self { req: fidl::new_empty!(SetKeysRequest, D) }
8432        }
8433
8434        #[inline]
8435        unsafe fn decode(
8436            &mut self,
8437            decoder: &mut fidl::encoding::Decoder<'_, D>,
8438            offset: usize,
8439            _depth: fidl::encoding::Depth,
8440        ) -> fidl::Result<()> {
8441            decoder.debug_check_bounds::<Self>(offset);
8442            // Verify that padding bytes are zero.
8443            fidl::decode!(SetKeysRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8444            Ok(())
8445        }
8446    }
8447
8448    impl fidl::encoding::ValueTypeMarker for MlmeSignalReportRequest {
8449        type Borrowed<'a> = &'a Self;
8450        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8451            value
8452        }
8453    }
8454
8455    unsafe impl fidl::encoding::TypeMarker for MlmeSignalReportRequest {
8456        type Owned = Self;
8457
8458        #[inline(always)]
8459        fn inline_align(_context: fidl::encoding::Context) -> usize {
8460            1
8461        }
8462
8463        #[inline(always)]
8464        fn inline_size(_context: fidl::encoding::Context) -> usize {
8465            2
8466        }
8467    }
8468
8469    unsafe impl<D: fidl::encoding::ResourceDialect>
8470        fidl::encoding::Encode<MlmeSignalReportRequest, D> for &MlmeSignalReportRequest
8471    {
8472        #[inline]
8473        unsafe fn encode(
8474            self,
8475            encoder: &mut fidl::encoding::Encoder<'_, D>,
8476            offset: usize,
8477            _depth: fidl::encoding::Depth,
8478        ) -> fidl::Result<()> {
8479            encoder.debug_check_bounds::<MlmeSignalReportRequest>(offset);
8480            // Delegate to tuple encoding.
8481            fidl::encoding::Encode::<MlmeSignalReportRequest, D>::encode(
8482                (
8483                    <fidl_fuchsia_wlan_internal__common::SignalReportIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),
8484                ),
8485                encoder, offset, _depth
8486            )
8487        }
8488    }
8489    unsafe impl<
8490            D: fidl::encoding::ResourceDialect,
8491            T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal__common::SignalReportIndication, D>,
8492        > fidl::encoding::Encode<MlmeSignalReportRequest, D> for (T0,)
8493    {
8494        #[inline]
8495        unsafe fn encode(
8496            self,
8497            encoder: &mut fidl::encoding::Encoder<'_, D>,
8498            offset: usize,
8499            depth: fidl::encoding::Depth,
8500        ) -> fidl::Result<()> {
8501            encoder.debug_check_bounds::<MlmeSignalReportRequest>(offset);
8502            // Zero out padding regions. There's no need to apply masks
8503            // because the unmasked parts will be overwritten by fields.
8504            // Write the fields.
8505            self.0.encode(encoder, offset + 0, depth)?;
8506            Ok(())
8507        }
8508    }
8509
8510    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8511        for MlmeSignalReportRequest
8512    {
8513        #[inline(always)]
8514        fn new_empty() -> Self {
8515            Self {
8516                ind: fidl::new_empty!(
8517                    fidl_fuchsia_wlan_internal__common::SignalReportIndication,
8518                    D
8519                ),
8520            }
8521        }
8522
8523        #[inline]
8524        unsafe fn decode(
8525            &mut self,
8526            decoder: &mut fidl::encoding::Decoder<'_, D>,
8527            offset: usize,
8528            _depth: fidl::encoding::Depth,
8529        ) -> fidl::Result<()> {
8530            decoder.debug_check_bounds::<Self>(offset);
8531            // Verify that padding bytes are zero.
8532            fidl::decode!(
8533                fidl_fuchsia_wlan_internal__common::SignalReportIndication,
8534                D,
8535                &mut self.ind,
8536                decoder,
8537                offset + 0,
8538                _depth
8539            )?;
8540            Ok(())
8541        }
8542    }
8543
8544    impl fidl::encoding::ValueTypeMarker for MlmeStartCaptureFramesRequest {
8545        type Borrowed<'a> = &'a Self;
8546        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8547            value
8548        }
8549    }
8550
8551    unsafe impl fidl::encoding::TypeMarker for MlmeStartCaptureFramesRequest {
8552        type Owned = Self;
8553
8554        #[inline(always)]
8555        fn inline_align(_context: fidl::encoding::Context) -> usize {
8556            4
8557        }
8558
8559        #[inline(always)]
8560        fn inline_size(_context: fidl::encoding::Context) -> usize {
8561            4
8562        }
8563    }
8564
8565    unsafe impl<D: fidl::encoding::ResourceDialect>
8566        fidl::encoding::Encode<MlmeStartCaptureFramesRequest, D>
8567        for &MlmeStartCaptureFramesRequest
8568    {
8569        #[inline]
8570        unsafe fn encode(
8571            self,
8572            encoder: &mut fidl::encoding::Encoder<'_, D>,
8573            offset: usize,
8574            _depth: fidl::encoding::Depth,
8575        ) -> fidl::Result<()> {
8576            encoder.debug_check_bounds::<MlmeStartCaptureFramesRequest>(offset);
8577            // Delegate to tuple encoding.
8578            fidl::encoding::Encode::<MlmeStartCaptureFramesRequest, D>::encode(
8579                (<StartCaptureFramesRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8580                encoder,
8581                offset,
8582                _depth,
8583            )
8584        }
8585    }
8586    unsafe impl<
8587            D: fidl::encoding::ResourceDialect,
8588            T0: fidl::encoding::Encode<StartCaptureFramesRequest, D>,
8589        > fidl::encoding::Encode<MlmeStartCaptureFramesRequest, D> for (T0,)
8590    {
8591        #[inline]
8592        unsafe fn encode(
8593            self,
8594            encoder: &mut fidl::encoding::Encoder<'_, D>,
8595            offset: usize,
8596            depth: fidl::encoding::Depth,
8597        ) -> fidl::Result<()> {
8598            encoder.debug_check_bounds::<MlmeStartCaptureFramesRequest>(offset);
8599            // Zero out padding regions. There's no need to apply masks
8600            // because the unmasked parts will be overwritten by fields.
8601            // Write the fields.
8602            self.0.encode(encoder, offset + 0, depth)?;
8603            Ok(())
8604        }
8605    }
8606
8607    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8608        for MlmeStartCaptureFramesRequest
8609    {
8610        #[inline(always)]
8611        fn new_empty() -> Self {
8612            Self { req: fidl::new_empty!(StartCaptureFramesRequest, D) }
8613        }
8614
8615        #[inline]
8616        unsafe fn decode(
8617            &mut self,
8618            decoder: &mut fidl::encoding::Decoder<'_, D>,
8619            offset: usize,
8620            _depth: fidl::encoding::Depth,
8621        ) -> fidl::Result<()> {
8622            decoder.debug_check_bounds::<Self>(offset);
8623            // Verify that padding bytes are zero.
8624            fidl::decode!(
8625                StartCaptureFramesRequest,
8626                D,
8627                &mut self.req,
8628                decoder,
8629                offset + 0,
8630                _depth
8631            )?;
8632            Ok(())
8633        }
8634    }
8635
8636    impl fidl::encoding::ValueTypeMarker for MlmeStartCaptureFramesResponse {
8637        type Borrowed<'a> = &'a Self;
8638        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8639            value
8640        }
8641    }
8642
8643    unsafe impl fidl::encoding::TypeMarker for MlmeStartCaptureFramesResponse {
8644        type Owned = Self;
8645
8646        #[inline(always)]
8647        fn inline_align(_context: fidl::encoding::Context) -> usize {
8648            4
8649        }
8650
8651        #[inline(always)]
8652        fn inline_size(_context: fidl::encoding::Context) -> usize {
8653            8
8654        }
8655    }
8656
8657    unsafe impl<D: fidl::encoding::ResourceDialect>
8658        fidl::encoding::Encode<MlmeStartCaptureFramesResponse, D>
8659        for &MlmeStartCaptureFramesResponse
8660    {
8661        #[inline]
8662        unsafe fn encode(
8663            self,
8664            encoder: &mut fidl::encoding::Encoder<'_, D>,
8665            offset: usize,
8666            _depth: fidl::encoding::Depth,
8667        ) -> fidl::Result<()> {
8668            encoder.debug_check_bounds::<MlmeStartCaptureFramesResponse>(offset);
8669            // Delegate to tuple encoding.
8670            fidl::encoding::Encode::<MlmeStartCaptureFramesResponse, D>::encode(
8671                (<StartCaptureFramesResponse as fidl::encoding::ValueTypeMarker>::borrow(
8672                    &self.resp,
8673                ),),
8674                encoder,
8675                offset,
8676                _depth,
8677            )
8678        }
8679    }
8680    unsafe impl<
8681            D: fidl::encoding::ResourceDialect,
8682            T0: fidl::encoding::Encode<StartCaptureFramesResponse, D>,
8683        > fidl::encoding::Encode<MlmeStartCaptureFramesResponse, D> for (T0,)
8684    {
8685        #[inline]
8686        unsafe fn encode(
8687            self,
8688            encoder: &mut fidl::encoding::Encoder<'_, D>,
8689            offset: usize,
8690            depth: fidl::encoding::Depth,
8691        ) -> fidl::Result<()> {
8692            encoder.debug_check_bounds::<MlmeStartCaptureFramesResponse>(offset);
8693            // Zero out padding regions. There's no need to apply masks
8694            // because the unmasked parts will be overwritten by fields.
8695            // Write the fields.
8696            self.0.encode(encoder, offset + 0, depth)?;
8697            Ok(())
8698        }
8699    }
8700
8701    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8702        for MlmeStartCaptureFramesResponse
8703    {
8704        #[inline(always)]
8705        fn new_empty() -> Self {
8706            Self { resp: fidl::new_empty!(StartCaptureFramesResponse, D) }
8707        }
8708
8709        #[inline]
8710        unsafe fn decode(
8711            &mut self,
8712            decoder: &mut fidl::encoding::Decoder<'_, D>,
8713            offset: usize,
8714            _depth: fidl::encoding::Depth,
8715        ) -> fidl::Result<()> {
8716            decoder.debug_check_bounds::<Self>(offset);
8717            // Verify that padding bytes are zero.
8718            fidl::decode!(
8719                StartCaptureFramesResponse,
8720                D,
8721                &mut self.resp,
8722                decoder,
8723                offset + 0,
8724                _depth
8725            )?;
8726            Ok(())
8727        }
8728    }
8729
8730    impl fidl::encoding::ValueTypeMarker for MlmeStartConfRequest {
8731        type Borrowed<'a> = &'a Self;
8732        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8733            value
8734        }
8735    }
8736
8737    unsafe impl fidl::encoding::TypeMarker for MlmeStartConfRequest {
8738        type Owned = Self;
8739
8740        #[inline(always)]
8741        fn inline_align(_context: fidl::encoding::Context) -> usize {
8742            4
8743        }
8744
8745        #[inline(always)]
8746        fn inline_size(_context: fidl::encoding::Context) -> usize {
8747            4
8748        }
8749    }
8750
8751    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartConfRequest, D>
8752        for &MlmeStartConfRequest
8753    {
8754        #[inline]
8755        unsafe fn encode(
8756            self,
8757            encoder: &mut fidl::encoding::Encoder<'_, D>,
8758            offset: usize,
8759            _depth: fidl::encoding::Depth,
8760        ) -> fidl::Result<()> {
8761            encoder.debug_check_bounds::<MlmeStartConfRequest>(offset);
8762            // Delegate to tuple encoding.
8763            fidl::encoding::Encode::<MlmeStartConfRequest, D>::encode(
8764                (<StartConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
8765                encoder,
8766                offset,
8767                _depth,
8768            )
8769        }
8770    }
8771    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartConfirm, D>>
8772        fidl::encoding::Encode<MlmeStartConfRequest, D> for (T0,)
8773    {
8774        #[inline]
8775        unsafe fn encode(
8776            self,
8777            encoder: &mut fidl::encoding::Encoder<'_, D>,
8778            offset: usize,
8779            depth: fidl::encoding::Depth,
8780        ) -> fidl::Result<()> {
8781            encoder.debug_check_bounds::<MlmeStartConfRequest>(offset);
8782            // Zero out padding regions. There's no need to apply masks
8783            // because the unmasked parts will be overwritten by fields.
8784            // Write the fields.
8785            self.0.encode(encoder, offset + 0, depth)?;
8786            Ok(())
8787        }
8788    }
8789
8790    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartConfRequest {
8791        #[inline(always)]
8792        fn new_empty() -> Self {
8793            Self { resp: fidl::new_empty!(StartConfirm, D) }
8794        }
8795
8796        #[inline]
8797        unsafe fn decode(
8798            &mut self,
8799            decoder: &mut fidl::encoding::Decoder<'_, D>,
8800            offset: usize,
8801            _depth: fidl::encoding::Depth,
8802        ) -> fidl::Result<()> {
8803            decoder.debug_check_bounds::<Self>(offset);
8804            // Verify that padding bytes are zero.
8805            fidl::decode!(StartConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
8806            Ok(())
8807        }
8808    }
8809
8810    impl fidl::encoding::ValueTypeMarker for MlmeStartReqRequest {
8811        type Borrowed<'a> = &'a Self;
8812        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8813            value
8814        }
8815    }
8816
8817    unsafe impl fidl::encoding::TypeMarker for MlmeStartReqRequest {
8818        type Owned = Self;
8819
8820        #[inline(always)]
8821        fn inline_align(_context: fidl::encoding::Context) -> usize {
8822            8
8823        }
8824
8825        #[inline(always)]
8826        fn inline_size(_context: fidl::encoding::Context) -> usize {
8827            96
8828        }
8829    }
8830
8831    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartReqRequest, D>
8832        for &MlmeStartReqRequest
8833    {
8834        #[inline]
8835        unsafe fn encode(
8836            self,
8837            encoder: &mut fidl::encoding::Encoder<'_, D>,
8838            offset: usize,
8839            _depth: fidl::encoding::Depth,
8840        ) -> fidl::Result<()> {
8841            encoder.debug_check_bounds::<MlmeStartReqRequest>(offset);
8842            // Delegate to tuple encoding.
8843            fidl::encoding::Encode::<MlmeStartReqRequest, D>::encode(
8844                (<StartRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8845                encoder,
8846                offset,
8847                _depth,
8848            )
8849        }
8850    }
8851    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartRequest, D>>
8852        fidl::encoding::Encode<MlmeStartReqRequest, D> for (T0,)
8853    {
8854        #[inline]
8855        unsafe fn encode(
8856            self,
8857            encoder: &mut fidl::encoding::Encoder<'_, D>,
8858            offset: usize,
8859            depth: fidl::encoding::Depth,
8860        ) -> fidl::Result<()> {
8861            encoder.debug_check_bounds::<MlmeStartReqRequest>(offset);
8862            // Zero out padding regions. There's no need to apply masks
8863            // because the unmasked parts will be overwritten by fields.
8864            // Write the fields.
8865            self.0.encode(encoder, offset + 0, depth)?;
8866            Ok(())
8867        }
8868    }
8869
8870    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartReqRequest {
8871        #[inline(always)]
8872        fn new_empty() -> Self {
8873            Self { req: fidl::new_empty!(StartRequest, D) }
8874        }
8875
8876        #[inline]
8877        unsafe fn decode(
8878            &mut self,
8879            decoder: &mut fidl::encoding::Decoder<'_, D>,
8880            offset: usize,
8881            _depth: fidl::encoding::Depth,
8882        ) -> fidl::Result<()> {
8883            decoder.debug_check_bounds::<Self>(offset);
8884            // Verify that padding bytes are zero.
8885            fidl::decode!(StartRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8886            Ok(())
8887        }
8888    }
8889
8890    impl fidl::encoding::ValueTypeMarker for MlmeStartScanRequest {
8891        type Borrowed<'a> = &'a Self;
8892        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8893            value
8894        }
8895    }
8896
8897    unsafe impl fidl::encoding::TypeMarker for MlmeStartScanRequest {
8898        type Owned = Self;
8899
8900        #[inline(always)]
8901        fn inline_align(_context: fidl::encoding::Context) -> usize {
8902            8
8903        }
8904
8905        #[inline(always)]
8906        fn inline_size(_context: fidl::encoding::Context) -> usize {
8907            64
8908        }
8909    }
8910
8911    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartScanRequest, D>
8912        for &MlmeStartScanRequest
8913    {
8914        #[inline]
8915        unsafe fn encode(
8916            self,
8917            encoder: &mut fidl::encoding::Encoder<'_, D>,
8918            offset: usize,
8919            _depth: fidl::encoding::Depth,
8920        ) -> fidl::Result<()> {
8921            encoder.debug_check_bounds::<MlmeStartScanRequest>(offset);
8922            // Delegate to tuple encoding.
8923            fidl::encoding::Encode::<MlmeStartScanRequest, D>::encode(
8924                (<ScanRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8925                encoder,
8926                offset,
8927                _depth,
8928            )
8929        }
8930    }
8931    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanRequest, D>>
8932        fidl::encoding::Encode<MlmeStartScanRequest, D> for (T0,)
8933    {
8934        #[inline]
8935        unsafe fn encode(
8936            self,
8937            encoder: &mut fidl::encoding::Encoder<'_, D>,
8938            offset: usize,
8939            depth: fidl::encoding::Depth,
8940        ) -> fidl::Result<()> {
8941            encoder.debug_check_bounds::<MlmeStartScanRequest>(offset);
8942            // Zero out padding regions. There's no need to apply masks
8943            // because the unmasked parts will be overwritten by fields.
8944            // Write the fields.
8945            self.0.encode(encoder, offset + 0, depth)?;
8946            Ok(())
8947        }
8948    }
8949
8950    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartScanRequest {
8951        #[inline(always)]
8952        fn new_empty() -> Self {
8953            Self { req: fidl::new_empty!(ScanRequest, D) }
8954        }
8955
8956        #[inline]
8957        unsafe fn decode(
8958            &mut self,
8959            decoder: &mut fidl::encoding::Decoder<'_, D>,
8960            offset: usize,
8961            _depth: fidl::encoding::Depth,
8962        ) -> fidl::Result<()> {
8963            decoder.debug_check_bounds::<Self>(offset);
8964            // Verify that padding bytes are zero.
8965            fidl::decode!(ScanRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8966            Ok(())
8967        }
8968    }
8969
8970    impl fidl::encoding::ValueTypeMarker for MlmeStopConfRequest {
8971        type Borrowed<'a> = &'a Self;
8972        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8973            value
8974        }
8975    }
8976
8977    unsafe impl fidl::encoding::TypeMarker for MlmeStopConfRequest {
8978        type Owned = Self;
8979
8980        #[inline(always)]
8981        fn inline_align(_context: fidl::encoding::Context) -> usize {
8982            4
8983        }
8984
8985        #[inline(always)]
8986        fn inline_size(_context: fidl::encoding::Context) -> usize {
8987            4
8988        }
8989    }
8990
8991    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStopConfRequest, D>
8992        for &MlmeStopConfRequest
8993    {
8994        #[inline]
8995        unsafe fn encode(
8996            self,
8997            encoder: &mut fidl::encoding::Encoder<'_, D>,
8998            offset: usize,
8999            _depth: fidl::encoding::Depth,
9000        ) -> fidl::Result<()> {
9001            encoder.debug_check_bounds::<MlmeStopConfRequest>(offset);
9002            // Delegate to tuple encoding.
9003            fidl::encoding::Encode::<MlmeStopConfRequest, D>::encode(
9004                (<StopConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
9005                encoder,
9006                offset,
9007                _depth,
9008            )
9009        }
9010    }
9011    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopConfirm, D>>
9012        fidl::encoding::Encode<MlmeStopConfRequest, D> for (T0,)
9013    {
9014        #[inline]
9015        unsafe fn encode(
9016            self,
9017            encoder: &mut fidl::encoding::Encoder<'_, D>,
9018            offset: usize,
9019            depth: fidl::encoding::Depth,
9020        ) -> fidl::Result<()> {
9021            encoder.debug_check_bounds::<MlmeStopConfRequest>(offset);
9022            // Zero out padding regions. There's no need to apply masks
9023            // because the unmasked parts will be overwritten by fields.
9024            // Write the fields.
9025            self.0.encode(encoder, offset + 0, depth)?;
9026            Ok(())
9027        }
9028    }
9029
9030    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStopConfRequest {
9031        #[inline(always)]
9032        fn new_empty() -> Self {
9033            Self { resp: fidl::new_empty!(StopConfirm, D) }
9034        }
9035
9036        #[inline]
9037        unsafe fn decode(
9038            &mut self,
9039            decoder: &mut fidl::encoding::Decoder<'_, D>,
9040            offset: usize,
9041            _depth: fidl::encoding::Depth,
9042        ) -> fidl::Result<()> {
9043            decoder.debug_check_bounds::<Self>(offset);
9044            // Verify that padding bytes are zero.
9045            fidl::decode!(StopConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
9046            Ok(())
9047        }
9048    }
9049
9050    impl fidl::encoding::ValueTypeMarker for MlmeStopReqRequest {
9051        type Borrowed<'a> = &'a Self;
9052        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9053            value
9054        }
9055    }
9056
9057    unsafe impl fidl::encoding::TypeMarker for MlmeStopReqRequest {
9058        type Owned = Self;
9059
9060        #[inline(always)]
9061        fn inline_align(_context: fidl::encoding::Context) -> usize {
9062            8
9063        }
9064
9065        #[inline(always)]
9066        fn inline_size(_context: fidl::encoding::Context) -> usize {
9067            16
9068        }
9069    }
9070
9071    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStopReqRequest, D>
9072        for &MlmeStopReqRequest
9073    {
9074        #[inline]
9075        unsafe fn encode(
9076            self,
9077            encoder: &mut fidl::encoding::Encoder<'_, D>,
9078            offset: usize,
9079            _depth: fidl::encoding::Depth,
9080        ) -> fidl::Result<()> {
9081            encoder.debug_check_bounds::<MlmeStopReqRequest>(offset);
9082            // Delegate to tuple encoding.
9083            fidl::encoding::Encode::<MlmeStopReqRequest, D>::encode(
9084                (<StopRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9085                encoder,
9086                offset,
9087                _depth,
9088            )
9089        }
9090    }
9091    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopRequest, D>>
9092        fidl::encoding::Encode<MlmeStopReqRequest, D> for (T0,)
9093    {
9094        #[inline]
9095        unsafe fn encode(
9096            self,
9097            encoder: &mut fidl::encoding::Encoder<'_, D>,
9098            offset: usize,
9099            depth: fidl::encoding::Depth,
9100        ) -> fidl::Result<()> {
9101            encoder.debug_check_bounds::<MlmeStopReqRequest>(offset);
9102            // Zero out padding regions. There's no need to apply masks
9103            // because the unmasked parts will be overwritten by fields.
9104            // Write the fields.
9105            self.0.encode(encoder, offset + 0, depth)?;
9106            Ok(())
9107        }
9108    }
9109
9110    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStopReqRequest {
9111        #[inline(always)]
9112        fn new_empty() -> Self {
9113            Self { req: fidl::new_empty!(StopRequest, D) }
9114        }
9115
9116        #[inline]
9117        unsafe fn decode(
9118            &mut self,
9119            decoder: &mut fidl::encoding::Decoder<'_, D>,
9120            offset: usize,
9121            _depth: fidl::encoding::Depth,
9122        ) -> fidl::Result<()> {
9123            decoder.debug_check_bounds::<Self>(offset);
9124            // Verify that padding bytes are zero.
9125            fidl::decode!(StopRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9126            Ok(())
9127        }
9128    }
9129
9130    impl fidl::encoding::ValueTypeMarker for NegotiatedCapabilities {
9131        type Borrowed<'a> = &'a Self;
9132        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9133            value
9134        }
9135    }
9136
9137    unsafe impl fidl::encoding::TypeMarker for NegotiatedCapabilities {
9138        type Owned = Self;
9139
9140        #[inline(always)]
9141        fn inline_align(_context: fidl::encoding::Context) -> usize {
9142            8
9143        }
9144
9145        #[inline(always)]
9146        fn inline_size(_context: fidl::encoding::Context) -> usize {
9147            56
9148        }
9149    }
9150
9151    unsafe impl<D: fidl::encoding::ResourceDialect>
9152        fidl::encoding::Encode<NegotiatedCapabilities, D> for &NegotiatedCapabilities
9153    {
9154        #[inline]
9155        unsafe fn encode(
9156            self,
9157            encoder: &mut fidl::encoding::Encoder<'_, D>,
9158            offset: usize,
9159            _depth: fidl::encoding::Depth,
9160        ) -> fidl::Result<()> {
9161            encoder.debug_check_bounds::<NegotiatedCapabilities>(offset);
9162            // Delegate to tuple encoding.
9163            fidl::encoding::Encode::<NegotiatedCapabilities, D>::encode(
9164                (
9165                    <fidl_fuchsia_wlan_common__common::WlanChannel as fidl::encoding::ValueTypeMarker>::borrow(&self.channel),
9166                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
9167                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
9168                    <fidl::encoding::Boxed<WmmParameter> as fidl::encoding::ValueTypeMarker>::borrow(&self.wmm_param),
9169                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.ht_cap),
9170                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_cap),
9171                ),
9172                encoder, offset, _depth
9173            )
9174        }
9175    }
9176    unsafe impl<
9177            D: fidl::encoding::ResourceDialect,
9178            T0: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::WlanChannel, D>,
9179            T1: fidl::encoding::Encode<u16, D>,
9180            T2: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
9181            T3: fidl::encoding::Encode<fidl::encoding::Boxed<WmmParameter>, D>,
9182            T4: fidl::encoding::Encode<
9183                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
9184                D,
9185            >,
9186            T5: fidl::encoding::Encode<
9187                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
9188                D,
9189            >,
9190        > fidl::encoding::Encode<NegotiatedCapabilities, D> for (T0, T1, T2, T3, T4, T5)
9191    {
9192        #[inline]
9193        unsafe fn encode(
9194            self,
9195            encoder: &mut fidl::encoding::Encoder<'_, D>,
9196            offset: usize,
9197            depth: fidl::encoding::Depth,
9198        ) -> fidl::Result<()> {
9199            encoder.debug_check_bounds::<NegotiatedCapabilities>(offset);
9200            // Zero out padding regions. There's no need to apply masks
9201            // because the unmasked parts will be overwritten by fields.
9202            unsafe {
9203                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
9204                (ptr as *mut u64).write_unaligned(0);
9205            }
9206            // Write the fields.
9207            self.0.encode(encoder, offset + 0, depth)?;
9208            self.1.encode(encoder, offset + 12, depth)?;
9209            self.2.encode(encoder, offset + 16, depth)?;
9210            self.3.encode(encoder, offset + 32, depth)?;
9211            self.4.encode(encoder, offset + 40, depth)?;
9212            self.5.encode(encoder, offset + 48, depth)?;
9213            Ok(())
9214        }
9215    }
9216
9217    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9218        for NegotiatedCapabilities
9219    {
9220        #[inline(always)]
9221        fn new_empty() -> Self {
9222            Self {
9223                channel: fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanChannel, D),
9224                capability_info: fidl::new_empty!(u16, D),
9225                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
9226                wmm_param: fidl::new_empty!(fidl::encoding::Boxed<WmmParameter>, D),
9227                ht_cap: fidl::new_empty!(
9228                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
9229                    D
9230                ),
9231                vht_cap: fidl::new_empty!(
9232                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
9233                    D
9234                ),
9235            }
9236        }
9237
9238        #[inline]
9239        unsafe fn decode(
9240            &mut self,
9241            decoder: &mut fidl::encoding::Decoder<'_, D>,
9242            offset: usize,
9243            _depth: fidl::encoding::Depth,
9244        ) -> fidl::Result<()> {
9245            decoder.debug_check_bounds::<Self>(offset);
9246            // Verify that padding bytes are zero.
9247            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
9248            let padval = unsafe { (ptr as *const u64).read_unaligned() };
9249            let mask = 0xffff000000000000u64;
9250            let maskedval = padval & mask;
9251            if maskedval != 0 {
9252                return Err(fidl::Error::NonZeroPadding {
9253                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
9254                });
9255            }
9256            fidl::decode!(
9257                fidl_fuchsia_wlan_common__common::WlanChannel,
9258                D,
9259                &mut self.channel,
9260                decoder,
9261                offset + 0,
9262                _depth
9263            )?;
9264            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 12, _depth)?;
9265            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 16, _depth)?;
9266            fidl::decode!(
9267                fidl::encoding::Boxed<WmmParameter>,
9268                D,
9269                &mut self.wmm_param,
9270                decoder,
9271                offset + 32,
9272                _depth
9273            )?;
9274            fidl::decode!(
9275                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
9276                D,
9277                &mut self.ht_cap,
9278                decoder,
9279                offset + 40,
9280                _depth
9281            )?;
9282            fidl::decode!(
9283                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
9284                D,
9285                &mut self.vht_cap,
9286                decoder,
9287                offset + 48,
9288                _depth
9289            )?;
9290            Ok(())
9291        }
9292    }
9293
9294    impl fidl::encoding::ValueTypeMarker for PmkInfo {
9295        type Borrowed<'a> = &'a Self;
9296        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9297            value
9298        }
9299    }
9300
9301    unsafe impl fidl::encoding::TypeMarker for PmkInfo {
9302        type Owned = Self;
9303
9304        #[inline(always)]
9305        fn inline_align(_context: fidl::encoding::Context) -> usize {
9306            8
9307        }
9308
9309        #[inline(always)]
9310        fn inline_size(_context: fidl::encoding::Context) -> usize {
9311            32
9312        }
9313    }
9314
9315    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PmkInfo, D> for &PmkInfo {
9316        #[inline]
9317        unsafe fn encode(
9318            self,
9319            encoder: &mut fidl::encoding::Encoder<'_, D>,
9320            offset: usize,
9321            _depth: fidl::encoding::Depth,
9322        ) -> fidl::Result<()> {
9323            encoder.debug_check_bounds::<PmkInfo>(offset);
9324            // Delegate to tuple encoding.
9325            fidl::encoding::Encode::<PmkInfo, D>::encode(
9326                (
9327                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.pmk),
9328                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.pmkid),
9329                ),
9330                encoder, offset, _depth
9331            )
9332        }
9333    }
9334    unsafe impl<
9335            D: fidl::encoding::ResourceDialect,
9336            T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
9337            T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
9338        > fidl::encoding::Encode<PmkInfo, D> for (T0, T1)
9339    {
9340        #[inline]
9341        unsafe fn encode(
9342            self,
9343            encoder: &mut fidl::encoding::Encoder<'_, D>,
9344            offset: usize,
9345            depth: fidl::encoding::Depth,
9346        ) -> fidl::Result<()> {
9347            encoder.debug_check_bounds::<PmkInfo>(offset);
9348            // Zero out padding regions. There's no need to apply masks
9349            // because the unmasked parts will be overwritten by fields.
9350            // Write the fields.
9351            self.0.encode(encoder, offset + 0, depth)?;
9352            self.1.encode(encoder, offset + 16, depth)?;
9353            Ok(())
9354        }
9355    }
9356
9357    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PmkInfo {
9358        #[inline(always)]
9359        fn new_empty() -> Self {
9360            Self {
9361                pmk: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
9362                pmkid: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
9363            }
9364        }
9365
9366        #[inline]
9367        unsafe fn decode(
9368            &mut self,
9369            decoder: &mut fidl::encoding::Decoder<'_, D>,
9370            offset: usize,
9371            _depth: fidl::encoding::Depth,
9372        ) -> fidl::Result<()> {
9373            decoder.debug_check_bounds::<Self>(offset);
9374            // Verify that padding bytes are zero.
9375            fidl::decode!(
9376                fidl::encoding::UnboundedVector<u8>,
9377                D,
9378                &mut self.pmk,
9379                decoder,
9380                offset + 0,
9381                _depth
9382            )?;
9383            fidl::decode!(
9384                fidl::encoding::UnboundedVector<u8>,
9385                D,
9386                &mut self.pmkid,
9387                decoder,
9388                offset + 16,
9389                _depth
9390            )?;
9391            Ok(())
9392        }
9393    }
9394
9395    impl fidl::encoding::ValueTypeMarker for ReconnectRequest {
9396        type Borrowed<'a> = &'a Self;
9397        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9398            value
9399        }
9400    }
9401
9402    unsafe impl fidl::encoding::TypeMarker for ReconnectRequest {
9403        type Owned = Self;
9404
9405        #[inline(always)]
9406        fn inline_align(_context: fidl::encoding::Context) -> usize {
9407            1
9408        }
9409
9410        #[inline(always)]
9411        fn inline_size(_context: fidl::encoding::Context) -> usize {
9412            6
9413        }
9414        #[inline(always)]
9415        fn encode_is_copy() -> bool {
9416            true
9417        }
9418
9419        #[inline(always)]
9420        fn decode_is_copy() -> bool {
9421            true
9422        }
9423    }
9424
9425    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ReconnectRequest, D>
9426        for &ReconnectRequest
9427    {
9428        #[inline]
9429        unsafe fn encode(
9430            self,
9431            encoder: &mut fidl::encoding::Encoder<'_, D>,
9432            offset: usize,
9433            _depth: fidl::encoding::Depth,
9434        ) -> fidl::Result<()> {
9435            encoder.debug_check_bounds::<ReconnectRequest>(offset);
9436            unsafe {
9437                // Copy the object into the buffer.
9438                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
9439                (buf_ptr as *mut ReconnectRequest)
9440                    .write_unaligned((self as *const ReconnectRequest).read());
9441                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
9442                // done second because the memcpy will write garbage to these bytes.
9443            }
9444            Ok(())
9445        }
9446    }
9447    unsafe impl<
9448            D: fidl::encoding::ResourceDialect,
9449            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
9450        > fidl::encoding::Encode<ReconnectRequest, D> for (T0,)
9451    {
9452        #[inline]
9453        unsafe fn encode(
9454            self,
9455            encoder: &mut fidl::encoding::Encoder<'_, D>,
9456            offset: usize,
9457            depth: fidl::encoding::Depth,
9458        ) -> fidl::Result<()> {
9459            encoder.debug_check_bounds::<ReconnectRequest>(offset);
9460            // Zero out padding regions. There's no need to apply masks
9461            // because the unmasked parts will be overwritten by fields.
9462            // Write the fields.
9463            self.0.encode(encoder, offset + 0, depth)?;
9464            Ok(())
9465        }
9466    }
9467
9468    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ReconnectRequest {
9469        #[inline(always)]
9470        fn new_empty() -> Self {
9471            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
9472        }
9473
9474        #[inline]
9475        unsafe fn decode(
9476            &mut self,
9477            decoder: &mut fidl::encoding::Decoder<'_, D>,
9478            offset: usize,
9479            _depth: fidl::encoding::Depth,
9480        ) -> fidl::Result<()> {
9481            decoder.debug_check_bounds::<Self>(offset);
9482            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
9483            // Verify that padding bytes are zero.
9484            // Copy from the buffer into the object.
9485            unsafe {
9486                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
9487            }
9488            Ok(())
9489        }
9490    }
9491
9492    impl fidl::encoding::ValueTypeMarker for ResetRequest {
9493        type Borrowed<'a> = &'a Self;
9494        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9495            value
9496        }
9497    }
9498
9499    unsafe impl fidl::encoding::TypeMarker for ResetRequest {
9500        type Owned = Self;
9501
9502        #[inline(always)]
9503        fn inline_align(_context: fidl::encoding::Context) -> usize {
9504            1
9505        }
9506
9507        #[inline(always)]
9508        fn inline_size(_context: fidl::encoding::Context) -> usize {
9509            7
9510        }
9511    }
9512
9513    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResetRequest, D>
9514        for &ResetRequest
9515    {
9516        #[inline]
9517        unsafe fn encode(
9518            self,
9519            encoder: &mut fidl::encoding::Encoder<'_, D>,
9520            offset: usize,
9521            _depth: fidl::encoding::Depth,
9522        ) -> fidl::Result<()> {
9523            encoder.debug_check_bounds::<ResetRequest>(offset);
9524            // Delegate to tuple encoding.
9525            fidl::encoding::Encode::<ResetRequest, D>::encode(
9526                (
9527                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
9528                        &self.sta_address,
9529                    ),
9530                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.set_default_mib),
9531                ),
9532                encoder,
9533                offset,
9534                _depth,
9535            )
9536        }
9537    }
9538    unsafe impl<
9539            D: fidl::encoding::ResourceDialect,
9540            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
9541            T1: fidl::encoding::Encode<bool, D>,
9542        > fidl::encoding::Encode<ResetRequest, D> for (T0, T1)
9543    {
9544        #[inline]
9545        unsafe fn encode(
9546            self,
9547            encoder: &mut fidl::encoding::Encoder<'_, D>,
9548            offset: usize,
9549            depth: fidl::encoding::Depth,
9550        ) -> fidl::Result<()> {
9551            encoder.debug_check_bounds::<ResetRequest>(offset);
9552            // Zero out padding regions. There's no need to apply masks
9553            // because the unmasked parts will be overwritten by fields.
9554            // Write the fields.
9555            self.0.encode(encoder, offset + 0, depth)?;
9556            self.1.encode(encoder, offset + 6, depth)?;
9557            Ok(())
9558        }
9559    }
9560
9561    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResetRequest {
9562        #[inline(always)]
9563        fn new_empty() -> Self {
9564            Self {
9565                sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
9566                set_default_mib: fidl::new_empty!(bool, D),
9567            }
9568        }
9569
9570        #[inline]
9571        unsafe fn decode(
9572            &mut self,
9573            decoder: &mut fidl::encoding::Decoder<'_, D>,
9574            offset: usize,
9575            _depth: fidl::encoding::Depth,
9576        ) -> fidl::Result<()> {
9577            decoder.debug_check_bounds::<Self>(offset);
9578            // Verify that padding bytes are zero.
9579            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.sta_address, decoder, offset + 0, _depth)?;
9580            fidl::decode!(bool, D, &mut self.set_default_mib, decoder, offset + 6, _depth)?;
9581            Ok(())
9582        }
9583    }
9584
9585    impl fidl::encoding::ValueTypeMarker for RoamConfirm {
9586        type Borrowed<'a> = &'a Self;
9587        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9588            value
9589        }
9590    }
9591
9592    unsafe impl fidl::encoding::TypeMarker for RoamConfirm {
9593        type Owned = Self;
9594
9595        #[inline(always)]
9596        fn inline_align(_context: fidl::encoding::Context) -> usize {
9597            8
9598        }
9599
9600        #[inline(always)]
9601        fn inline_size(_context: fidl::encoding::Context) -> usize {
9602            32
9603        }
9604    }
9605
9606    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamConfirm, D>
9607        for &RoamConfirm
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::<RoamConfirm>(offset);
9617            // Delegate to tuple encoding.
9618            fidl::encoding::Encode::<RoamConfirm, D>::encode(
9619                (
9620                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
9621                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
9622                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
9623                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.target_bss_authenticated),
9624                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
9625                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
9626                ),
9627                encoder, offset, _depth
9628            )
9629        }
9630    }
9631    unsafe impl<
9632            D: fidl::encoding::ResourceDialect,
9633            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
9634            T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
9635            T2: fidl::encoding::Encode<bool, D>,
9636            T3: fidl::encoding::Encode<bool, D>,
9637            T4: fidl::encoding::Encode<u16, D>,
9638            T5: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
9639        > fidl::encoding::Encode<RoamConfirm, D> for (T0, T1, T2, T3, T4, T5)
9640    {
9641        #[inline]
9642        unsafe fn encode(
9643            self,
9644            encoder: &mut fidl::encoding::Encoder<'_, D>,
9645            offset: usize,
9646            depth: fidl::encoding::Depth,
9647        ) -> fidl::Result<()> {
9648            encoder.debug_check_bounds::<RoamConfirm>(offset);
9649            // Zero out padding regions. There's no need to apply masks
9650            // because the unmasked parts will be overwritten by fields.
9651            unsafe {
9652                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
9653                (ptr as *mut u64).write_unaligned(0);
9654            }
9655            // Write the fields.
9656            self.0.encode(encoder, offset + 0, depth)?;
9657            self.1.encode(encoder, offset + 6, depth)?;
9658            self.2.encode(encoder, offset + 8, depth)?;
9659            self.3.encode(encoder, offset + 9, depth)?;
9660            self.4.encode(encoder, offset + 10, depth)?;
9661            self.5.encode(encoder, offset + 16, depth)?;
9662            Ok(())
9663        }
9664    }
9665
9666    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamConfirm {
9667        #[inline(always)]
9668        fn new_empty() -> Self {
9669            Self {
9670                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
9671                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
9672                original_association_maintained: fidl::new_empty!(bool, D),
9673                target_bss_authenticated: fidl::new_empty!(bool, D),
9674                association_id: fidl::new_empty!(u16, D),
9675                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
9676            }
9677        }
9678
9679        #[inline]
9680        unsafe fn decode(
9681            &mut self,
9682            decoder: &mut fidl::encoding::Decoder<'_, D>,
9683            offset: usize,
9684            _depth: fidl::encoding::Depth,
9685        ) -> fidl::Result<()> {
9686            decoder.debug_check_bounds::<Self>(offset);
9687            // Verify that padding bytes are zero.
9688            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
9689            let padval = unsafe { (ptr as *const u64).read_unaligned() };
9690            let mask = 0xffffffff00000000u64;
9691            let maskedval = padval & mask;
9692            if maskedval != 0 {
9693                return Err(fidl::Error::NonZeroPadding {
9694                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
9695                });
9696            }
9697            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
9698            fidl::decode!(
9699                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
9700                D,
9701                &mut self.status_code,
9702                decoder,
9703                offset + 6,
9704                _depth
9705            )?;
9706            fidl::decode!(
9707                bool,
9708                D,
9709                &mut self.original_association_maintained,
9710                decoder,
9711                offset + 8,
9712                _depth
9713            )?;
9714            fidl::decode!(
9715                bool,
9716                D,
9717                &mut self.target_bss_authenticated,
9718                decoder,
9719                offset + 9,
9720                _depth
9721            )?;
9722            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 10, _depth)?;
9723            fidl::decode!(
9724                fidl::encoding::UnboundedVector<u8>,
9725                D,
9726                &mut self.association_ies,
9727                decoder,
9728                offset + 16,
9729                _depth
9730            )?;
9731            Ok(())
9732        }
9733    }
9734
9735    impl fidl::encoding::ValueTypeMarker for RoamRequest {
9736        type Borrowed<'a> = &'a Self;
9737        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9738            value
9739        }
9740    }
9741
9742    unsafe impl fidl::encoding::TypeMarker for RoamRequest {
9743        type Owned = Self;
9744
9745        #[inline(always)]
9746        fn inline_align(_context: fidl::encoding::Context) -> usize {
9747            8
9748        }
9749
9750        #[inline(always)]
9751        fn inline_size(_context: fidl::encoding::Context) -> usize {
9752            48
9753        }
9754    }
9755
9756    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamRequest, D>
9757        for &RoamRequest
9758    {
9759        #[inline]
9760        unsafe fn encode(
9761            self,
9762            encoder: &mut fidl::encoding::Encoder<'_, D>,
9763            offset: usize,
9764            _depth: fidl::encoding::Depth,
9765        ) -> fidl::Result<()> {
9766            encoder.debug_check_bounds::<RoamRequest>(offset);
9767            // Delegate to tuple encoding.
9768            fidl::encoding::Encode::<RoamRequest, D>::encode(
9769                (
9770                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
9771                ),
9772                encoder, offset, _depth
9773            )
9774        }
9775    }
9776    unsafe impl<
9777            D: fidl::encoding::ResourceDialect,
9778            T0: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
9779        > fidl::encoding::Encode<RoamRequest, D> for (T0,)
9780    {
9781        #[inline]
9782        unsafe fn encode(
9783            self,
9784            encoder: &mut fidl::encoding::Encoder<'_, D>,
9785            offset: usize,
9786            depth: fidl::encoding::Depth,
9787        ) -> fidl::Result<()> {
9788            encoder.debug_check_bounds::<RoamRequest>(offset);
9789            // Zero out padding regions. There's no need to apply masks
9790            // because the unmasked parts will be overwritten by fields.
9791            // Write the fields.
9792            self.0.encode(encoder, offset + 0, depth)?;
9793            Ok(())
9794        }
9795    }
9796
9797    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamRequest {
9798        #[inline(always)]
9799        fn new_empty() -> Self {
9800            Self {
9801                selected_bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
9802            }
9803        }
9804
9805        #[inline]
9806        unsafe fn decode(
9807            &mut self,
9808            decoder: &mut fidl::encoding::Decoder<'_, D>,
9809            offset: usize,
9810            _depth: fidl::encoding::Depth,
9811        ) -> fidl::Result<()> {
9812            decoder.debug_check_bounds::<Self>(offset);
9813            // Verify that padding bytes are zero.
9814            fidl::decode!(
9815                fidl_fuchsia_wlan_common__common::BssDescription,
9816                D,
9817                &mut self.selected_bss,
9818                decoder,
9819                offset + 0,
9820                _depth
9821            )?;
9822            Ok(())
9823        }
9824    }
9825
9826    impl fidl::encoding::ValueTypeMarker for RoamResultIndication {
9827        type Borrowed<'a> = &'a Self;
9828        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9829            value
9830        }
9831    }
9832
9833    unsafe impl fidl::encoding::TypeMarker for RoamResultIndication {
9834        type Owned = Self;
9835
9836        #[inline(always)]
9837        fn inline_align(_context: fidl::encoding::Context) -> usize {
9838            8
9839        }
9840
9841        #[inline(always)]
9842        fn inline_size(_context: fidl::encoding::Context) -> usize {
9843            32
9844        }
9845    }
9846
9847    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamResultIndication, D>
9848        for &RoamResultIndication
9849    {
9850        #[inline]
9851        unsafe fn encode(
9852            self,
9853            encoder: &mut fidl::encoding::Encoder<'_, D>,
9854            offset: usize,
9855            _depth: fidl::encoding::Depth,
9856        ) -> fidl::Result<()> {
9857            encoder.debug_check_bounds::<RoamResultIndication>(offset);
9858            // Delegate to tuple encoding.
9859            fidl::encoding::Encode::<RoamResultIndication, D>::encode(
9860                (
9861                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
9862                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
9863                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
9864                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.target_bss_authenticated),
9865                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
9866                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
9867                ),
9868                encoder, offset, _depth
9869            )
9870        }
9871    }
9872    unsafe impl<
9873            D: fidl::encoding::ResourceDialect,
9874            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
9875            T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
9876            T2: fidl::encoding::Encode<bool, D>,
9877            T3: fidl::encoding::Encode<bool, D>,
9878            T4: fidl::encoding::Encode<u16, D>,
9879            T5: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
9880        > fidl::encoding::Encode<RoamResultIndication, D> for (T0, T1, T2, T3, T4, T5)
9881    {
9882        #[inline]
9883        unsafe fn encode(
9884            self,
9885            encoder: &mut fidl::encoding::Encoder<'_, D>,
9886            offset: usize,
9887            depth: fidl::encoding::Depth,
9888        ) -> fidl::Result<()> {
9889            encoder.debug_check_bounds::<RoamResultIndication>(offset);
9890            // Zero out padding regions. There's no need to apply masks
9891            // because the unmasked parts will be overwritten by fields.
9892            unsafe {
9893                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
9894                (ptr as *mut u64).write_unaligned(0);
9895            }
9896            // Write the fields.
9897            self.0.encode(encoder, offset + 0, depth)?;
9898            self.1.encode(encoder, offset + 6, depth)?;
9899            self.2.encode(encoder, offset + 8, depth)?;
9900            self.3.encode(encoder, offset + 9, depth)?;
9901            self.4.encode(encoder, offset + 10, depth)?;
9902            self.5.encode(encoder, offset + 16, depth)?;
9903            Ok(())
9904        }
9905    }
9906
9907    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamResultIndication {
9908        #[inline(always)]
9909        fn new_empty() -> Self {
9910            Self {
9911                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
9912                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
9913                original_association_maintained: fidl::new_empty!(bool, D),
9914                target_bss_authenticated: fidl::new_empty!(bool, D),
9915                association_id: fidl::new_empty!(u16, D),
9916                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
9917            }
9918        }
9919
9920        #[inline]
9921        unsafe fn decode(
9922            &mut self,
9923            decoder: &mut fidl::encoding::Decoder<'_, D>,
9924            offset: usize,
9925            _depth: fidl::encoding::Depth,
9926        ) -> fidl::Result<()> {
9927            decoder.debug_check_bounds::<Self>(offset);
9928            // Verify that padding bytes are zero.
9929            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
9930            let padval = unsafe { (ptr as *const u64).read_unaligned() };
9931            let mask = 0xffffffff00000000u64;
9932            let maskedval = padval & mask;
9933            if maskedval != 0 {
9934                return Err(fidl::Error::NonZeroPadding {
9935                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
9936                });
9937            }
9938            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
9939            fidl::decode!(
9940                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
9941                D,
9942                &mut self.status_code,
9943                decoder,
9944                offset + 6,
9945                _depth
9946            )?;
9947            fidl::decode!(
9948                bool,
9949                D,
9950                &mut self.original_association_maintained,
9951                decoder,
9952                offset + 8,
9953                _depth
9954            )?;
9955            fidl::decode!(
9956                bool,
9957                D,
9958                &mut self.target_bss_authenticated,
9959                decoder,
9960                offset + 9,
9961                _depth
9962            )?;
9963            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 10, _depth)?;
9964            fidl::decode!(
9965                fidl::encoding::UnboundedVector<u8>,
9966                D,
9967                &mut self.association_ies,
9968                decoder,
9969                offset + 16,
9970                _depth
9971            )?;
9972            Ok(())
9973        }
9974    }
9975
9976    impl fidl::encoding::ValueTypeMarker for RoamStartIndication {
9977        type Borrowed<'a> = &'a Self;
9978        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9979            value
9980        }
9981    }
9982
9983    unsafe impl fidl::encoding::TypeMarker for RoamStartIndication {
9984        type Owned = Self;
9985
9986        #[inline(always)]
9987        fn inline_align(_context: fidl::encoding::Context) -> usize {
9988            8
9989        }
9990
9991        #[inline(always)]
9992        fn inline_size(_context: fidl::encoding::Context) -> usize {
9993            64
9994        }
9995    }
9996
9997    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamStartIndication, D>
9998        for &RoamStartIndication
9999    {
10000        #[inline]
10001        unsafe fn encode(
10002            self,
10003            encoder: &mut fidl::encoding::Encoder<'_, D>,
10004            offset: usize,
10005            _depth: fidl::encoding::Depth,
10006        ) -> fidl::Result<()> {
10007            encoder.debug_check_bounds::<RoamStartIndication>(offset);
10008            // Delegate to tuple encoding.
10009            fidl::encoding::Encode::<RoamStartIndication, D>::encode(
10010                (
10011                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
10012                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
10013                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
10014                ),
10015                encoder, offset, _depth
10016            )
10017        }
10018    }
10019    unsafe impl<
10020            D: fidl::encoding::ResourceDialect,
10021            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10022            T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
10023            T2: fidl::encoding::Encode<bool, D>,
10024        > fidl::encoding::Encode<RoamStartIndication, D> for (T0, T1, T2)
10025    {
10026        #[inline]
10027        unsafe fn encode(
10028            self,
10029            encoder: &mut fidl::encoding::Encoder<'_, D>,
10030            offset: usize,
10031            depth: fidl::encoding::Depth,
10032        ) -> fidl::Result<()> {
10033            encoder.debug_check_bounds::<RoamStartIndication>(offset);
10034            // Zero out padding regions. There's no need to apply masks
10035            // because the unmasked parts will be overwritten by fields.
10036            unsafe {
10037                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
10038                (ptr as *mut u64).write_unaligned(0);
10039            }
10040            unsafe {
10041                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
10042                (ptr as *mut u64).write_unaligned(0);
10043            }
10044            // Write the fields.
10045            self.0.encode(encoder, offset + 0, depth)?;
10046            self.1.encode(encoder, offset + 8, depth)?;
10047            self.2.encode(encoder, offset + 56, depth)?;
10048            Ok(())
10049        }
10050    }
10051
10052    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamStartIndication {
10053        #[inline(always)]
10054        fn new_empty() -> Self {
10055            Self {
10056                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10057                selected_bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
10058                original_association_maintained: fidl::new_empty!(bool, D),
10059            }
10060        }
10061
10062        #[inline]
10063        unsafe fn decode(
10064            &mut self,
10065            decoder: &mut fidl::encoding::Decoder<'_, D>,
10066            offset: usize,
10067            _depth: fidl::encoding::Depth,
10068        ) -> fidl::Result<()> {
10069            decoder.debug_check_bounds::<Self>(offset);
10070            // Verify that padding bytes are zero.
10071            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
10072            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10073            let mask = 0xffff000000000000u64;
10074            let maskedval = padval & mask;
10075            if maskedval != 0 {
10076                return Err(fidl::Error::NonZeroPadding {
10077                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
10078                });
10079            }
10080            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
10081            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10082            let mask = 0xffffffffffffff00u64;
10083            let maskedval = padval & mask;
10084            if maskedval != 0 {
10085                return Err(fidl::Error::NonZeroPadding {
10086                    padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
10087                });
10088            }
10089            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
10090            fidl::decode!(
10091                fidl_fuchsia_wlan_common__common::BssDescription,
10092                D,
10093                &mut self.selected_bss,
10094                decoder,
10095                offset + 8,
10096                _depth
10097            )?;
10098            fidl::decode!(
10099                bool,
10100                D,
10101                &mut self.original_association_maintained,
10102                decoder,
10103                offset + 56,
10104                _depth
10105            )?;
10106            Ok(())
10107        }
10108    }
10109
10110    impl fidl::encoding::ValueTypeMarker for SaeFrame {
10111        type Borrowed<'a> = &'a Self;
10112        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10113            value
10114        }
10115    }
10116
10117    unsafe impl fidl::encoding::TypeMarker for SaeFrame {
10118        type Owned = Self;
10119
10120        #[inline(always)]
10121        fn inline_align(_context: fidl::encoding::Context) -> usize {
10122            8
10123        }
10124
10125        #[inline(always)]
10126        fn inline_size(_context: fidl::encoding::Context) -> usize {
10127            32
10128        }
10129    }
10130
10131    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFrame, D> for &SaeFrame {
10132        #[inline]
10133        unsafe fn encode(
10134            self,
10135            encoder: &mut fidl::encoding::Encoder<'_, D>,
10136            offset: usize,
10137            _depth: fidl::encoding::Depth,
10138        ) -> fidl::Result<()> {
10139            encoder.debug_check_bounds::<SaeFrame>(offset);
10140            // Delegate to tuple encoding.
10141            fidl::encoding::Encode::<SaeFrame, D>::encode(
10142                (
10143                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
10144                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10145                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.seq_num),
10146                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.sae_fields),
10147                ),
10148                encoder, offset, _depth
10149            )
10150        }
10151    }
10152    unsafe impl<
10153            D: fidl::encoding::ResourceDialect,
10154            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10155            T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
10156            T2: fidl::encoding::Encode<u16, D>,
10157            T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10158        > fidl::encoding::Encode<SaeFrame, D> for (T0, T1, T2, T3)
10159    {
10160        #[inline]
10161        unsafe fn encode(
10162            self,
10163            encoder: &mut fidl::encoding::Encoder<'_, D>,
10164            offset: usize,
10165            depth: fidl::encoding::Depth,
10166        ) -> fidl::Result<()> {
10167            encoder.debug_check_bounds::<SaeFrame>(offset);
10168            // Zero out padding regions. There's no need to apply masks
10169            // because the unmasked parts will be overwritten by fields.
10170            unsafe {
10171                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10172                (ptr as *mut u64).write_unaligned(0);
10173            }
10174            // Write the fields.
10175            self.0.encode(encoder, offset + 0, depth)?;
10176            self.1.encode(encoder, offset + 6, depth)?;
10177            self.2.encode(encoder, offset + 8, depth)?;
10178            self.3.encode(encoder, offset + 16, depth)?;
10179            Ok(())
10180        }
10181    }
10182
10183    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFrame {
10184        #[inline(always)]
10185        fn new_empty() -> Self {
10186            Self {
10187                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10188                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
10189                seq_num: fidl::new_empty!(u16, D),
10190                sae_fields: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10191            }
10192        }
10193
10194        #[inline]
10195        unsafe fn decode(
10196            &mut self,
10197            decoder: &mut fidl::encoding::Decoder<'_, D>,
10198            offset: usize,
10199            _depth: fidl::encoding::Depth,
10200        ) -> fidl::Result<()> {
10201            decoder.debug_check_bounds::<Self>(offset);
10202            // Verify that padding bytes are zero.
10203            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10204            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10205            let mask = 0xffffffffffff0000u64;
10206            let maskedval = padval & mask;
10207            if maskedval != 0 {
10208                return Err(fidl::Error::NonZeroPadding {
10209                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10210                });
10211            }
10212            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
10213            fidl::decode!(
10214                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10215                D,
10216                &mut self.status_code,
10217                decoder,
10218                offset + 6,
10219                _depth
10220            )?;
10221            fidl::decode!(u16, D, &mut self.seq_num, decoder, offset + 8, _depth)?;
10222            fidl::decode!(
10223                fidl::encoding::UnboundedVector<u8>,
10224                D,
10225                &mut self.sae_fields,
10226                decoder,
10227                offset + 16,
10228                _depth
10229            )?;
10230            Ok(())
10231        }
10232    }
10233
10234    impl fidl::encoding::ValueTypeMarker for SaeHandshakeIndication {
10235        type Borrowed<'a> = &'a Self;
10236        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10237            value
10238        }
10239    }
10240
10241    unsafe impl fidl::encoding::TypeMarker for SaeHandshakeIndication {
10242        type Owned = Self;
10243
10244        #[inline(always)]
10245        fn inline_align(_context: fidl::encoding::Context) -> usize {
10246            1
10247        }
10248
10249        #[inline(always)]
10250        fn inline_size(_context: fidl::encoding::Context) -> usize {
10251            6
10252        }
10253        #[inline(always)]
10254        fn encode_is_copy() -> bool {
10255            true
10256        }
10257
10258        #[inline(always)]
10259        fn decode_is_copy() -> bool {
10260            true
10261        }
10262    }
10263
10264    unsafe impl<D: fidl::encoding::ResourceDialect>
10265        fidl::encoding::Encode<SaeHandshakeIndication, D> for &SaeHandshakeIndication
10266    {
10267        #[inline]
10268        unsafe fn encode(
10269            self,
10270            encoder: &mut fidl::encoding::Encoder<'_, D>,
10271            offset: usize,
10272            _depth: fidl::encoding::Depth,
10273        ) -> fidl::Result<()> {
10274            encoder.debug_check_bounds::<SaeHandshakeIndication>(offset);
10275            unsafe {
10276                // Copy the object into the buffer.
10277                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
10278                (buf_ptr as *mut SaeHandshakeIndication)
10279                    .write_unaligned((self as *const SaeHandshakeIndication).read());
10280                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
10281                // done second because the memcpy will write garbage to these bytes.
10282            }
10283            Ok(())
10284        }
10285    }
10286    unsafe impl<
10287            D: fidl::encoding::ResourceDialect,
10288            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10289        > fidl::encoding::Encode<SaeHandshakeIndication, D> for (T0,)
10290    {
10291        #[inline]
10292        unsafe fn encode(
10293            self,
10294            encoder: &mut fidl::encoding::Encoder<'_, D>,
10295            offset: usize,
10296            depth: fidl::encoding::Depth,
10297        ) -> fidl::Result<()> {
10298            encoder.debug_check_bounds::<SaeHandshakeIndication>(offset);
10299            // Zero out padding regions. There's no need to apply masks
10300            // because the unmasked parts will be overwritten by fields.
10301            // Write the fields.
10302            self.0.encode(encoder, offset + 0, depth)?;
10303            Ok(())
10304        }
10305    }
10306
10307    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10308        for SaeHandshakeIndication
10309    {
10310        #[inline(always)]
10311        fn new_empty() -> Self {
10312            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
10313        }
10314
10315        #[inline]
10316        unsafe fn decode(
10317            &mut self,
10318            decoder: &mut fidl::encoding::Decoder<'_, D>,
10319            offset: usize,
10320            _depth: fidl::encoding::Depth,
10321        ) -> fidl::Result<()> {
10322            decoder.debug_check_bounds::<Self>(offset);
10323            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
10324            // Verify that padding bytes are zero.
10325            // Copy from the buffer into the object.
10326            unsafe {
10327                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
10328            }
10329            Ok(())
10330        }
10331    }
10332
10333    impl fidl::encoding::ValueTypeMarker for SaeHandshakeResponse {
10334        type Borrowed<'a> = &'a Self;
10335        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10336            value
10337        }
10338    }
10339
10340    unsafe impl fidl::encoding::TypeMarker for SaeHandshakeResponse {
10341        type Owned = Self;
10342
10343        #[inline(always)]
10344        fn inline_align(_context: fidl::encoding::Context) -> usize {
10345            2
10346        }
10347
10348        #[inline(always)]
10349        fn inline_size(_context: fidl::encoding::Context) -> usize {
10350            8
10351        }
10352    }
10353
10354    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeHandshakeResponse, D>
10355        for &SaeHandshakeResponse
10356    {
10357        #[inline]
10358        unsafe fn encode(
10359            self,
10360            encoder: &mut fidl::encoding::Encoder<'_, D>,
10361            offset: usize,
10362            _depth: fidl::encoding::Depth,
10363        ) -> fidl::Result<()> {
10364            encoder.debug_check_bounds::<SaeHandshakeResponse>(offset);
10365            // Delegate to tuple encoding.
10366            fidl::encoding::Encode::<SaeHandshakeResponse, D>::encode(
10367                (
10368                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
10369                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10370                ),
10371                encoder, offset, _depth
10372            )
10373        }
10374    }
10375    unsafe impl<
10376            D: fidl::encoding::ResourceDialect,
10377            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10378            T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
10379        > fidl::encoding::Encode<SaeHandshakeResponse, D> for (T0, T1)
10380    {
10381        #[inline]
10382        unsafe fn encode(
10383            self,
10384            encoder: &mut fidl::encoding::Encoder<'_, D>,
10385            offset: usize,
10386            depth: fidl::encoding::Depth,
10387        ) -> fidl::Result<()> {
10388            encoder.debug_check_bounds::<SaeHandshakeResponse>(offset);
10389            // Zero out padding regions. There's no need to apply masks
10390            // because the unmasked parts will be overwritten by fields.
10391            // Write the fields.
10392            self.0.encode(encoder, offset + 0, depth)?;
10393            self.1.encode(encoder, offset + 6, depth)?;
10394            Ok(())
10395        }
10396    }
10397
10398    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeHandshakeResponse {
10399        #[inline(always)]
10400        fn new_empty() -> Self {
10401            Self {
10402                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10403                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
10404            }
10405        }
10406
10407        #[inline]
10408        unsafe fn decode(
10409            &mut self,
10410            decoder: &mut fidl::encoding::Decoder<'_, D>,
10411            offset: usize,
10412            _depth: fidl::encoding::Depth,
10413        ) -> fidl::Result<()> {
10414            decoder.debug_check_bounds::<Self>(offset);
10415            // Verify that padding bytes are zero.
10416            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
10417            fidl::decode!(
10418                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10419                D,
10420                &mut self.status_code,
10421                decoder,
10422                offset + 6,
10423                _depth
10424            )?;
10425            Ok(())
10426        }
10427    }
10428
10429    impl fidl::encoding::ValueTypeMarker for ScanEnd {
10430        type Borrowed<'a> = &'a Self;
10431        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10432            value
10433        }
10434    }
10435
10436    unsafe impl fidl::encoding::TypeMarker for ScanEnd {
10437        type Owned = Self;
10438
10439        #[inline(always)]
10440        fn inline_align(_context: fidl::encoding::Context) -> usize {
10441            8
10442        }
10443
10444        #[inline(always)]
10445        fn inline_size(_context: fidl::encoding::Context) -> usize {
10446            16
10447        }
10448    }
10449
10450    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanEnd, D> for &ScanEnd {
10451        #[inline]
10452        unsafe fn encode(
10453            self,
10454            encoder: &mut fidl::encoding::Encoder<'_, D>,
10455            offset: usize,
10456            _depth: fidl::encoding::Depth,
10457        ) -> fidl::Result<()> {
10458            encoder.debug_check_bounds::<ScanEnd>(offset);
10459            // Delegate to tuple encoding.
10460            fidl::encoding::Encode::<ScanEnd, D>::encode(
10461                (
10462                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
10463                    <ScanResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.code),
10464                ),
10465                encoder,
10466                offset,
10467                _depth,
10468            )
10469        }
10470    }
10471    unsafe impl<
10472            D: fidl::encoding::ResourceDialect,
10473            T0: fidl::encoding::Encode<u64, D>,
10474            T1: fidl::encoding::Encode<ScanResultCode, D>,
10475        > fidl::encoding::Encode<ScanEnd, D> for (T0, T1)
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::<ScanEnd>(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 + 8, depth)?;
10494            Ok(())
10495        }
10496    }
10497
10498    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanEnd {
10499        #[inline(always)]
10500        fn new_empty() -> Self {
10501            Self { txn_id: fidl::new_empty!(u64, D), code: fidl::new_empty!(ScanResultCode, D) }
10502        }
10503
10504        #[inline]
10505        unsafe fn decode(
10506            &mut self,
10507            decoder: &mut fidl::encoding::Decoder<'_, D>,
10508            offset: usize,
10509            _depth: fidl::encoding::Depth,
10510        ) -> fidl::Result<()> {
10511            decoder.debug_check_bounds::<Self>(offset);
10512            // Verify that padding bytes are zero.
10513            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10514            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10515            let mask = 0xffffffff00000000u64;
10516            let maskedval = padval & mask;
10517            if maskedval != 0 {
10518                return Err(fidl::Error::NonZeroPadding {
10519                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10520                });
10521            }
10522            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
10523            fidl::decode!(ScanResultCode, D, &mut self.code, decoder, offset + 8, _depth)?;
10524            Ok(())
10525        }
10526    }
10527
10528    impl fidl::encoding::ValueTypeMarker for ScanRequest {
10529        type Borrowed<'a> = &'a Self;
10530        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10531            value
10532        }
10533    }
10534
10535    unsafe impl fidl::encoding::TypeMarker for ScanRequest {
10536        type Owned = Self;
10537
10538        #[inline(always)]
10539        fn inline_align(_context: fidl::encoding::Context) -> usize {
10540            8
10541        }
10542
10543        #[inline(always)]
10544        fn inline_size(_context: fidl::encoding::Context) -> usize {
10545            64
10546        }
10547    }
10548
10549    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanRequest, D>
10550        for &ScanRequest
10551    {
10552        #[inline]
10553        unsafe fn encode(
10554            self,
10555            encoder: &mut fidl::encoding::Encoder<'_, D>,
10556            offset: usize,
10557            _depth: fidl::encoding::Depth,
10558        ) -> fidl::Result<()> {
10559            encoder.debug_check_bounds::<ScanRequest>(offset);
10560            // Delegate to tuple encoding.
10561            fidl::encoding::Encode::<ScanRequest, D>::encode(
10562                (
10563                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
10564                    <ScanTypes as fidl::encoding::ValueTypeMarker>::borrow(&self.scan_type),
10565                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.channel_list),
10566                    <fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid_list),
10567                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.probe_delay),
10568                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.min_channel_time),
10569                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.max_channel_time),
10570                ),
10571                encoder, offset, _depth
10572            )
10573        }
10574    }
10575    unsafe impl<
10576            D: fidl::encoding::ResourceDialect,
10577            T0: fidl::encoding::Encode<u64, D>,
10578            T1: fidl::encoding::Encode<ScanTypes, D>,
10579            T2: fidl::encoding::Encode<fidl::encoding::Vector<u8, 256>, D>,
10580            T3: fidl::encoding::Encode<
10581                fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
10582                D,
10583            >,
10584            T4: fidl::encoding::Encode<u32, D>,
10585            T5: fidl::encoding::Encode<u32, D>,
10586            T6: fidl::encoding::Encode<u32, D>,
10587        > fidl::encoding::Encode<ScanRequest, D> for (T0, T1, T2, T3, T4, T5, T6)
10588    {
10589        #[inline]
10590        unsafe fn encode(
10591            self,
10592            encoder: &mut fidl::encoding::Encoder<'_, D>,
10593            offset: usize,
10594            depth: fidl::encoding::Depth,
10595        ) -> fidl::Result<()> {
10596            encoder.debug_check_bounds::<ScanRequest>(offset);
10597            // Zero out padding regions. There's no need to apply masks
10598            // because the unmasked parts will be overwritten by fields.
10599            unsafe {
10600                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10601                (ptr as *mut u64).write_unaligned(0);
10602            }
10603            unsafe {
10604                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
10605                (ptr as *mut u64).write_unaligned(0);
10606            }
10607            // Write the fields.
10608            self.0.encode(encoder, offset + 0, depth)?;
10609            self.1.encode(encoder, offset + 8, depth)?;
10610            self.2.encode(encoder, offset + 16, depth)?;
10611            self.3.encode(encoder, offset + 32, depth)?;
10612            self.4.encode(encoder, offset + 48, depth)?;
10613            self.5.encode(encoder, offset + 52, depth)?;
10614            self.6.encode(encoder, offset + 56, depth)?;
10615            Ok(())
10616        }
10617    }
10618
10619    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanRequest {
10620        #[inline(always)]
10621        fn new_empty() -> Self {
10622            Self {
10623                txn_id: fidl::new_empty!(u64, D),
10624                scan_type: fidl::new_empty!(ScanTypes, D),
10625                channel_list: fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D),
10626                ssid_list: fidl::new_empty!(
10627                    fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
10628                    D
10629                ),
10630                probe_delay: fidl::new_empty!(u32, D),
10631                min_channel_time: fidl::new_empty!(u32, D),
10632                max_channel_time: fidl::new_empty!(u32, D),
10633            }
10634        }
10635
10636        #[inline]
10637        unsafe fn decode(
10638            &mut self,
10639            decoder: &mut fidl::encoding::Decoder<'_, D>,
10640            offset: usize,
10641            _depth: fidl::encoding::Depth,
10642        ) -> fidl::Result<()> {
10643            decoder.debug_check_bounds::<Self>(offset);
10644            // Verify that padding bytes are zero.
10645            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10646            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10647            let mask = 0xffffffff00000000u64;
10648            let maskedval = padval & mask;
10649            if maskedval != 0 {
10650                return Err(fidl::Error::NonZeroPadding {
10651                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10652                });
10653            }
10654            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
10655            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10656            let mask = 0xffffffff00000000u64;
10657            let maskedval = padval & mask;
10658            if maskedval != 0 {
10659                return Err(fidl::Error::NonZeroPadding {
10660                    padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
10661                });
10662            }
10663            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
10664            fidl::decode!(ScanTypes, D, &mut self.scan_type, decoder, offset + 8, _depth)?;
10665            fidl::decode!(fidl::encoding::Vector<u8, 256>, D, &mut self.channel_list, decoder, offset + 16, _depth)?;
10666            fidl::decode!(
10667                fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
10668                D,
10669                &mut self.ssid_list,
10670                decoder,
10671                offset + 32,
10672                _depth
10673            )?;
10674            fidl::decode!(u32, D, &mut self.probe_delay, decoder, offset + 48, _depth)?;
10675            fidl::decode!(u32, D, &mut self.min_channel_time, decoder, offset + 52, _depth)?;
10676            fidl::decode!(u32, D, &mut self.max_channel_time, decoder, offset + 56, _depth)?;
10677            Ok(())
10678        }
10679    }
10680
10681    impl fidl::encoding::ValueTypeMarker for ScanResult {
10682        type Borrowed<'a> = &'a Self;
10683        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10684            value
10685        }
10686    }
10687
10688    unsafe impl fidl::encoding::TypeMarker for ScanResult {
10689        type Owned = Self;
10690
10691        #[inline(always)]
10692        fn inline_align(_context: fidl::encoding::Context) -> usize {
10693            8
10694        }
10695
10696        #[inline(always)]
10697        fn inline_size(_context: fidl::encoding::Context) -> usize {
10698            64
10699        }
10700    }
10701
10702    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanResult, D>
10703        for &ScanResult
10704    {
10705        #[inline]
10706        unsafe fn encode(
10707            self,
10708            encoder: &mut fidl::encoding::Encoder<'_, D>,
10709            offset: usize,
10710            _depth: fidl::encoding::Depth,
10711        ) -> fidl::Result<()> {
10712            encoder.debug_check_bounds::<ScanResult>(offset);
10713            // Delegate to tuple encoding.
10714            fidl::encoding::Encode::<ScanResult, D>::encode(
10715                (
10716                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
10717                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timestamp_nanos),
10718                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.bss),
10719                ),
10720                encoder, offset, _depth
10721            )
10722        }
10723    }
10724    unsafe impl<
10725            D: fidl::encoding::ResourceDialect,
10726            T0: fidl::encoding::Encode<u64, D>,
10727            T1: fidl::encoding::Encode<i64, D>,
10728            T2: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
10729        > fidl::encoding::Encode<ScanResult, D> for (T0, T1, T2)
10730    {
10731        #[inline]
10732        unsafe fn encode(
10733            self,
10734            encoder: &mut fidl::encoding::Encoder<'_, D>,
10735            offset: usize,
10736            depth: fidl::encoding::Depth,
10737        ) -> fidl::Result<()> {
10738            encoder.debug_check_bounds::<ScanResult>(offset);
10739            // Zero out padding regions. There's no need to apply masks
10740            // because the unmasked parts will be overwritten by fields.
10741            // Write the fields.
10742            self.0.encode(encoder, offset + 0, depth)?;
10743            self.1.encode(encoder, offset + 8, depth)?;
10744            self.2.encode(encoder, offset + 16, depth)?;
10745            Ok(())
10746        }
10747    }
10748
10749    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanResult {
10750        #[inline(always)]
10751        fn new_empty() -> Self {
10752            Self {
10753                txn_id: fidl::new_empty!(u64, D),
10754                timestamp_nanos: fidl::new_empty!(i64, D),
10755                bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
10756            }
10757        }
10758
10759        #[inline]
10760        unsafe fn decode(
10761            &mut self,
10762            decoder: &mut fidl::encoding::Decoder<'_, D>,
10763            offset: usize,
10764            _depth: fidl::encoding::Depth,
10765        ) -> fidl::Result<()> {
10766            decoder.debug_check_bounds::<Self>(offset);
10767            // Verify that padding bytes are zero.
10768            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
10769            fidl::decode!(i64, D, &mut self.timestamp_nanos, decoder, offset + 8, _depth)?;
10770            fidl::decode!(
10771                fidl_fuchsia_wlan_common__common::BssDescription,
10772                D,
10773                &mut self.bss,
10774                decoder,
10775                offset + 16,
10776                _depth
10777            )?;
10778            Ok(())
10779        }
10780    }
10781
10782    impl fidl::encoding::ValueTypeMarker for SetControlledPortRequest {
10783        type Borrowed<'a> = &'a Self;
10784        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10785            value
10786        }
10787    }
10788
10789    unsafe impl fidl::encoding::TypeMarker for SetControlledPortRequest {
10790        type Owned = Self;
10791
10792        #[inline(always)]
10793        fn inline_align(_context: fidl::encoding::Context) -> usize {
10794            4
10795        }
10796
10797        #[inline(always)]
10798        fn inline_size(_context: fidl::encoding::Context) -> usize {
10799            12
10800        }
10801    }
10802
10803    unsafe impl<D: fidl::encoding::ResourceDialect>
10804        fidl::encoding::Encode<SetControlledPortRequest, D> for &SetControlledPortRequest
10805    {
10806        #[inline]
10807        unsafe fn encode(
10808            self,
10809            encoder: &mut fidl::encoding::Encoder<'_, D>,
10810            offset: usize,
10811            _depth: fidl::encoding::Depth,
10812        ) -> fidl::Result<()> {
10813            encoder.debug_check_bounds::<SetControlledPortRequest>(offset);
10814            // Delegate to tuple encoding.
10815            fidl::encoding::Encode::<SetControlledPortRequest, D>::encode(
10816                (
10817                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
10818                        &self.peer_sta_address,
10819                    ),
10820                    <ControlledPortState as fidl::encoding::ValueTypeMarker>::borrow(&self.state),
10821                ),
10822                encoder,
10823                offset,
10824                _depth,
10825            )
10826        }
10827    }
10828    unsafe impl<
10829            D: fidl::encoding::ResourceDialect,
10830            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10831            T1: fidl::encoding::Encode<ControlledPortState, D>,
10832        > fidl::encoding::Encode<SetControlledPortRequest, D> for (T0, T1)
10833    {
10834        #[inline]
10835        unsafe fn encode(
10836            self,
10837            encoder: &mut fidl::encoding::Encoder<'_, D>,
10838            offset: usize,
10839            depth: fidl::encoding::Depth,
10840        ) -> fidl::Result<()> {
10841            encoder.debug_check_bounds::<SetControlledPortRequest>(offset);
10842            // Zero out padding regions. There's no need to apply masks
10843            // because the unmasked parts will be overwritten by fields.
10844            unsafe {
10845                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
10846                (ptr as *mut u32).write_unaligned(0);
10847            }
10848            // Write the fields.
10849            self.0.encode(encoder, offset + 0, depth)?;
10850            self.1.encode(encoder, offset + 8, depth)?;
10851            Ok(())
10852        }
10853    }
10854
10855    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10856        for SetControlledPortRequest
10857    {
10858        #[inline(always)]
10859        fn new_empty() -> Self {
10860            Self {
10861                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10862                state: fidl::new_empty!(ControlledPortState, D),
10863            }
10864        }
10865
10866        #[inline]
10867        unsafe fn decode(
10868            &mut self,
10869            decoder: &mut fidl::encoding::Decoder<'_, D>,
10870            offset: usize,
10871            _depth: fidl::encoding::Depth,
10872        ) -> fidl::Result<()> {
10873            decoder.debug_check_bounds::<Self>(offset);
10874            // Verify that padding bytes are zero.
10875            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
10876            let padval = unsafe { (ptr as *const u32).read_unaligned() };
10877            let mask = 0xffff0000u32;
10878            let maskedval = padval & mask;
10879            if maskedval != 0 {
10880                return Err(fidl::Error::NonZeroPadding {
10881                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
10882                });
10883            }
10884            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
10885            fidl::decode!(ControlledPortState, D, &mut self.state, decoder, offset + 8, _depth)?;
10886            Ok(())
10887        }
10888    }
10889
10890    impl fidl::encoding::ValueTypeMarker for SetKeyDescriptor {
10891        type Borrowed<'a> = &'a Self;
10892        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10893            value
10894        }
10895    }
10896
10897    unsafe impl fidl::encoding::TypeMarker for SetKeyDescriptor {
10898        type Owned = Self;
10899
10900        #[inline(always)]
10901        fn inline_align(_context: fidl::encoding::Context) -> usize {
10902            8
10903        }
10904
10905        #[inline(always)]
10906        fn inline_size(_context: fidl::encoding::Context) -> usize {
10907            48
10908        }
10909    }
10910
10911    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeyDescriptor, D>
10912        for &SetKeyDescriptor
10913    {
10914        #[inline]
10915        unsafe fn encode(
10916            self,
10917            encoder: &mut fidl::encoding::Encoder<'_, D>,
10918            offset: usize,
10919            _depth: fidl::encoding::Depth,
10920        ) -> fidl::Result<()> {
10921            encoder.debug_check_bounds::<SetKeyDescriptor>(offset);
10922            // Delegate to tuple encoding.
10923            fidl::encoding::Encode::<SetKeyDescriptor, D>::encode(
10924                (
10925                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
10926                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.key_id),
10927                    <KeyType as fidl::encoding::ValueTypeMarker>::borrow(&self.key_type),
10928                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.address),
10929                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.rsc),
10930                    <fidl::encoding::Array<u8, 3> as fidl::encoding::ValueTypeMarker>::borrow(&self.cipher_suite_oui),
10931                    <fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType as fidl::encoding::ValueTypeMarker>::borrow(&self.cipher_suite_type),
10932                ),
10933                encoder, offset, _depth
10934            )
10935        }
10936    }
10937    unsafe impl<
10938            D: fidl::encoding::ResourceDialect,
10939            T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10940            T1: fidl::encoding::Encode<u16, D>,
10941            T2: fidl::encoding::Encode<KeyType, D>,
10942            T3: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10943            T4: fidl::encoding::Encode<u64, D>,
10944            T5: fidl::encoding::Encode<fidl::encoding::Array<u8, 3>, D>,
10945            T6: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType, D>,
10946        > fidl::encoding::Encode<SetKeyDescriptor, D> for (T0, T1, T2, T3, T4, T5, T6)
10947    {
10948        #[inline]
10949        unsafe fn encode(
10950            self,
10951            encoder: &mut fidl::encoding::Encoder<'_, D>,
10952            offset: usize,
10953            depth: fidl::encoding::Depth,
10954        ) -> fidl::Result<()> {
10955            encoder.debug_check_bounds::<SetKeyDescriptor>(offset);
10956            // Zero out padding regions. There's no need to apply masks
10957            // because the unmasked parts will be overwritten by fields.
10958            unsafe {
10959                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
10960                (ptr as *mut u64).write_unaligned(0);
10961            }
10962            unsafe {
10963                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
10964                (ptr as *mut u64).write_unaligned(0);
10965            }
10966            unsafe {
10967                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(40);
10968                (ptr as *mut u64).write_unaligned(0);
10969            }
10970            // Write the fields.
10971            self.0.encode(encoder, offset + 0, depth)?;
10972            self.1.encode(encoder, offset + 16, depth)?;
10973            self.2.encode(encoder, offset + 20, depth)?;
10974            self.3.encode(encoder, offset + 24, depth)?;
10975            self.4.encode(encoder, offset + 32, depth)?;
10976            self.5.encode(encoder, offset + 40, depth)?;
10977            self.6.encode(encoder, offset + 44, depth)?;
10978            Ok(())
10979        }
10980    }
10981
10982    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeyDescriptor {
10983        #[inline(always)]
10984        fn new_empty() -> Self {
10985            Self {
10986                key: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10987                key_id: fidl::new_empty!(u16, D),
10988                key_type: fidl::new_empty!(KeyType, D),
10989                address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10990                rsc: fidl::new_empty!(u64, D),
10991                cipher_suite_oui: fidl::new_empty!(fidl::encoding::Array<u8, 3>, D),
10992                cipher_suite_type: fidl::new_empty!(
10993                    fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
10994                    D
10995                ),
10996            }
10997        }
10998
10999        #[inline]
11000        unsafe fn decode(
11001            &mut self,
11002            decoder: &mut fidl::encoding::Decoder<'_, D>,
11003            offset: usize,
11004            _depth: fidl::encoding::Depth,
11005        ) -> fidl::Result<()> {
11006            decoder.debug_check_bounds::<Self>(offset);
11007            // Verify that padding bytes are zero.
11008            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
11009            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11010            let mask = 0xffff0000u64;
11011            let maskedval = padval & mask;
11012            if maskedval != 0 {
11013                return Err(fidl::Error::NonZeroPadding {
11014                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
11015                });
11016            }
11017            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
11018            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11019            let mask = 0xffff000000000000u64;
11020            let maskedval = padval & mask;
11021            if maskedval != 0 {
11022                return Err(fidl::Error::NonZeroPadding {
11023                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
11024                });
11025            }
11026            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(40) };
11027            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11028            let mask = 0xff000000u64;
11029            let maskedval = padval & mask;
11030            if maskedval != 0 {
11031                return Err(fidl::Error::NonZeroPadding {
11032                    padding_start: offset + 40 + ((mask as u64).trailing_zeros() / 8) as usize,
11033                });
11034            }
11035            fidl::decode!(
11036                fidl::encoding::UnboundedVector<u8>,
11037                D,
11038                &mut self.key,
11039                decoder,
11040                offset + 0,
11041                _depth
11042            )?;
11043            fidl::decode!(u16, D, &mut self.key_id, decoder, offset + 16, _depth)?;
11044            fidl::decode!(KeyType, D, &mut self.key_type, decoder, offset + 20, _depth)?;
11045            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.address, decoder, offset + 24, _depth)?;
11046            fidl::decode!(u64, D, &mut self.rsc, decoder, offset + 32, _depth)?;
11047            fidl::decode!(fidl::encoding::Array<u8, 3>, D, &mut self.cipher_suite_oui, decoder, offset + 40, _depth)?;
11048            fidl::decode!(
11049                fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
11050                D,
11051                &mut self.cipher_suite_type,
11052                decoder,
11053                offset + 44,
11054                _depth
11055            )?;
11056            Ok(())
11057        }
11058    }
11059
11060    impl fidl::encoding::ValueTypeMarker for SetKeyResult {
11061        type Borrowed<'a> = &'a Self;
11062        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11063            value
11064        }
11065    }
11066
11067    unsafe impl fidl::encoding::TypeMarker for SetKeyResult {
11068        type Owned = Self;
11069
11070        #[inline(always)]
11071        fn inline_align(_context: fidl::encoding::Context) -> usize {
11072            4
11073        }
11074
11075        #[inline(always)]
11076        fn inline_size(_context: fidl::encoding::Context) -> usize {
11077            8
11078        }
11079    }
11080
11081    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeyResult, D>
11082        for &SetKeyResult
11083    {
11084        #[inline]
11085        unsafe fn encode(
11086            self,
11087            encoder: &mut fidl::encoding::Encoder<'_, D>,
11088            offset: usize,
11089            _depth: fidl::encoding::Depth,
11090        ) -> fidl::Result<()> {
11091            encoder.debug_check_bounds::<SetKeyResult>(offset);
11092            unsafe {
11093                // Copy the object into the buffer.
11094                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
11095                (buf_ptr as *mut SetKeyResult)
11096                    .write_unaligned((self as *const SetKeyResult).read());
11097                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
11098                // done second because the memcpy will write garbage to these bytes.
11099                let padding_ptr = buf_ptr.offset(0) as *mut u32;
11100                let padding_mask = 0xffff0000u32;
11101                padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
11102            }
11103            Ok(())
11104        }
11105    }
11106    unsafe impl<
11107            D: fidl::encoding::ResourceDialect,
11108            T0: fidl::encoding::Encode<u16, D>,
11109            T1: fidl::encoding::Encode<i32, D>,
11110        > fidl::encoding::Encode<SetKeyResult, D> for (T0, T1)
11111    {
11112        #[inline]
11113        unsafe fn encode(
11114            self,
11115            encoder: &mut fidl::encoding::Encoder<'_, D>,
11116            offset: usize,
11117            depth: fidl::encoding::Depth,
11118        ) -> fidl::Result<()> {
11119            encoder.debug_check_bounds::<SetKeyResult>(offset);
11120            // Zero out padding regions. There's no need to apply masks
11121            // because the unmasked parts will be overwritten by fields.
11122            unsafe {
11123                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
11124                (ptr as *mut u32).write_unaligned(0);
11125            }
11126            // Write the fields.
11127            self.0.encode(encoder, offset + 0, depth)?;
11128            self.1.encode(encoder, offset + 4, depth)?;
11129            Ok(())
11130        }
11131    }
11132
11133    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeyResult {
11134        #[inline(always)]
11135        fn new_empty() -> Self {
11136            Self { key_id: fidl::new_empty!(u16, D), status: fidl::new_empty!(i32, D) }
11137        }
11138
11139        #[inline]
11140        unsafe fn decode(
11141            &mut self,
11142            decoder: &mut fidl::encoding::Decoder<'_, D>,
11143            offset: usize,
11144            _depth: fidl::encoding::Depth,
11145        ) -> fidl::Result<()> {
11146            decoder.debug_check_bounds::<Self>(offset);
11147            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
11148            // Verify that padding bytes are zero.
11149            let ptr = unsafe { buf_ptr.offset(0) };
11150            let padval = unsafe { (ptr as *const u32).read_unaligned() };
11151            let mask = 0xffff0000u32;
11152            let maskedval = padval & mask;
11153            if maskedval != 0 {
11154                return Err(fidl::Error::NonZeroPadding {
11155                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
11156                });
11157            }
11158            // Copy from the buffer into the object.
11159            unsafe {
11160                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
11161            }
11162            Ok(())
11163        }
11164    }
11165
11166    impl fidl::encoding::ValueTypeMarker for SetKeysConfirm {
11167        type Borrowed<'a> = &'a Self;
11168        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11169            value
11170        }
11171    }
11172
11173    unsafe impl fidl::encoding::TypeMarker for SetKeysConfirm {
11174        type Owned = Self;
11175
11176        #[inline(always)]
11177        fn inline_align(_context: fidl::encoding::Context) -> usize {
11178            8
11179        }
11180
11181        #[inline(always)]
11182        fn inline_size(_context: fidl::encoding::Context) -> usize {
11183            16
11184        }
11185    }
11186
11187    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeysConfirm, D>
11188        for &SetKeysConfirm
11189    {
11190        #[inline]
11191        unsafe fn encode(
11192            self,
11193            encoder: &mut fidl::encoding::Encoder<'_, D>,
11194            offset: usize,
11195            _depth: fidl::encoding::Depth,
11196        ) -> fidl::Result<()> {
11197            encoder.debug_check_bounds::<SetKeysConfirm>(offset);
11198            // Delegate to tuple encoding.
11199            fidl::encoding::Encode::<SetKeysConfirm, D>::encode(
11200                (
11201                    <fidl::encoding::UnboundedVector<SetKeyResult> as fidl::encoding::ValueTypeMarker>::borrow(&self.results),
11202                ),
11203                encoder, offset, _depth
11204            )
11205        }
11206    }
11207    unsafe impl<
11208            D: fidl::encoding::ResourceDialect,
11209            T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<SetKeyResult>, D>,
11210        > fidl::encoding::Encode<SetKeysConfirm, D> for (T0,)
11211    {
11212        #[inline]
11213        unsafe fn encode(
11214            self,
11215            encoder: &mut fidl::encoding::Encoder<'_, D>,
11216            offset: usize,
11217            depth: fidl::encoding::Depth,
11218        ) -> fidl::Result<()> {
11219            encoder.debug_check_bounds::<SetKeysConfirm>(offset);
11220            // Zero out padding regions. There's no need to apply masks
11221            // because the unmasked parts will be overwritten by fields.
11222            // Write the fields.
11223            self.0.encode(encoder, offset + 0, depth)?;
11224            Ok(())
11225        }
11226    }
11227
11228    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeysConfirm {
11229        #[inline(always)]
11230        fn new_empty() -> Self {
11231            Self { results: fidl::new_empty!(fidl::encoding::UnboundedVector<SetKeyResult>, D) }
11232        }
11233
11234        #[inline]
11235        unsafe fn decode(
11236            &mut self,
11237            decoder: &mut fidl::encoding::Decoder<'_, D>,
11238            offset: usize,
11239            _depth: fidl::encoding::Depth,
11240        ) -> fidl::Result<()> {
11241            decoder.debug_check_bounds::<Self>(offset);
11242            // Verify that padding bytes are zero.
11243            fidl::decode!(
11244                fidl::encoding::UnboundedVector<SetKeyResult>,
11245                D,
11246                &mut self.results,
11247                decoder,
11248                offset + 0,
11249                _depth
11250            )?;
11251            Ok(())
11252        }
11253    }
11254
11255    impl fidl::encoding::ValueTypeMarker for SetKeysRequest {
11256        type Borrowed<'a> = &'a Self;
11257        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11258            value
11259        }
11260    }
11261
11262    unsafe impl fidl::encoding::TypeMarker for SetKeysRequest {
11263        type Owned = Self;
11264
11265        #[inline(always)]
11266        fn inline_align(_context: fidl::encoding::Context) -> usize {
11267            8
11268        }
11269
11270        #[inline(always)]
11271        fn inline_size(_context: fidl::encoding::Context) -> usize {
11272            16
11273        }
11274    }
11275
11276    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeysRequest, D>
11277        for &SetKeysRequest
11278    {
11279        #[inline]
11280        unsafe fn encode(
11281            self,
11282            encoder: &mut fidl::encoding::Encoder<'_, D>,
11283            offset: usize,
11284            _depth: fidl::encoding::Depth,
11285        ) -> fidl::Result<()> {
11286            encoder.debug_check_bounds::<SetKeysRequest>(offset);
11287            // Delegate to tuple encoding.
11288            fidl::encoding::Encode::<SetKeysRequest, D>::encode(
11289                (
11290                    <fidl::encoding::UnboundedVector<SetKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.keylist),
11291                ),
11292                encoder, offset, _depth
11293            )
11294        }
11295    }
11296    unsafe impl<
11297            D: fidl::encoding::ResourceDialect,
11298            T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<SetKeyDescriptor>, D>,
11299        > fidl::encoding::Encode<SetKeysRequest, D> for (T0,)
11300    {
11301        #[inline]
11302        unsafe fn encode(
11303            self,
11304            encoder: &mut fidl::encoding::Encoder<'_, D>,
11305            offset: usize,
11306            depth: fidl::encoding::Depth,
11307        ) -> fidl::Result<()> {
11308            encoder.debug_check_bounds::<SetKeysRequest>(offset);
11309            // Zero out padding regions. There's no need to apply masks
11310            // because the unmasked parts will be overwritten by fields.
11311            // Write the fields.
11312            self.0.encode(encoder, offset + 0, depth)?;
11313            Ok(())
11314        }
11315    }
11316
11317    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeysRequest {
11318        #[inline(always)]
11319        fn new_empty() -> Self {
11320            Self { keylist: fidl::new_empty!(fidl::encoding::UnboundedVector<SetKeyDescriptor>, D) }
11321        }
11322
11323        #[inline]
11324        unsafe fn decode(
11325            &mut self,
11326            decoder: &mut fidl::encoding::Decoder<'_, D>,
11327            offset: usize,
11328            _depth: fidl::encoding::Depth,
11329        ) -> fidl::Result<()> {
11330            decoder.debug_check_bounds::<Self>(offset);
11331            // Verify that padding bytes are zero.
11332            fidl::decode!(
11333                fidl::encoding::UnboundedVector<SetKeyDescriptor>,
11334                D,
11335                &mut self.keylist,
11336                decoder,
11337                offset + 0,
11338                _depth
11339            )?;
11340            Ok(())
11341        }
11342    }
11343
11344    impl fidl::encoding::ValueTypeMarker for StartCaptureFramesRequest {
11345        type Borrowed<'a> = &'a Self;
11346        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11347            value
11348        }
11349    }
11350
11351    unsafe impl fidl::encoding::TypeMarker for StartCaptureFramesRequest {
11352        type Owned = Self;
11353
11354        #[inline(always)]
11355        fn inline_align(_context: fidl::encoding::Context) -> usize {
11356            4
11357        }
11358
11359        #[inline(always)]
11360        fn inline_size(_context: fidl::encoding::Context) -> usize {
11361            4
11362        }
11363    }
11364
11365    unsafe impl<D: fidl::encoding::ResourceDialect>
11366        fidl::encoding::Encode<StartCaptureFramesRequest, D> for &StartCaptureFramesRequest
11367    {
11368        #[inline]
11369        unsafe fn encode(
11370            self,
11371            encoder: &mut fidl::encoding::Encoder<'_, D>,
11372            offset: usize,
11373            _depth: fidl::encoding::Depth,
11374        ) -> fidl::Result<()> {
11375            encoder.debug_check_bounds::<StartCaptureFramesRequest>(offset);
11376            // Delegate to tuple encoding.
11377            fidl::encoding::Encode::<StartCaptureFramesRequest, D>::encode(
11378                (<MgmtFrameCaptureFlags as fidl::encoding::ValueTypeMarker>::borrow(
11379                    &self.mgmt_frame_flags,
11380                ),),
11381                encoder,
11382                offset,
11383                _depth,
11384            )
11385        }
11386    }
11387    unsafe impl<
11388            D: fidl::encoding::ResourceDialect,
11389            T0: fidl::encoding::Encode<MgmtFrameCaptureFlags, D>,
11390        > fidl::encoding::Encode<StartCaptureFramesRequest, D> for (T0,)
11391    {
11392        #[inline]
11393        unsafe fn encode(
11394            self,
11395            encoder: &mut fidl::encoding::Encoder<'_, D>,
11396            offset: usize,
11397            depth: fidl::encoding::Depth,
11398        ) -> fidl::Result<()> {
11399            encoder.debug_check_bounds::<StartCaptureFramesRequest>(offset);
11400            // Zero out padding regions. There's no need to apply masks
11401            // because the unmasked parts will be overwritten by fields.
11402            // Write the fields.
11403            self.0.encode(encoder, offset + 0, depth)?;
11404            Ok(())
11405        }
11406    }
11407
11408    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11409        for StartCaptureFramesRequest
11410    {
11411        #[inline(always)]
11412        fn new_empty() -> Self {
11413            Self { mgmt_frame_flags: fidl::new_empty!(MgmtFrameCaptureFlags, D) }
11414        }
11415
11416        #[inline]
11417        unsafe fn decode(
11418            &mut self,
11419            decoder: &mut fidl::encoding::Decoder<'_, D>,
11420            offset: usize,
11421            _depth: fidl::encoding::Depth,
11422        ) -> fidl::Result<()> {
11423            decoder.debug_check_bounds::<Self>(offset);
11424            // Verify that padding bytes are zero.
11425            fidl::decode!(
11426                MgmtFrameCaptureFlags,
11427                D,
11428                &mut self.mgmt_frame_flags,
11429                decoder,
11430                offset + 0,
11431                _depth
11432            )?;
11433            Ok(())
11434        }
11435    }
11436
11437    impl fidl::encoding::ValueTypeMarker for StartCaptureFramesResponse {
11438        type Borrowed<'a> = &'a Self;
11439        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11440            value
11441        }
11442    }
11443
11444    unsafe impl fidl::encoding::TypeMarker for StartCaptureFramesResponse {
11445        type Owned = Self;
11446
11447        #[inline(always)]
11448        fn inline_align(_context: fidl::encoding::Context) -> usize {
11449            4
11450        }
11451
11452        #[inline(always)]
11453        fn inline_size(_context: fidl::encoding::Context) -> usize {
11454            8
11455        }
11456    }
11457
11458    unsafe impl<D: fidl::encoding::ResourceDialect>
11459        fidl::encoding::Encode<StartCaptureFramesResponse, D> for &StartCaptureFramesResponse
11460    {
11461        #[inline]
11462        unsafe fn encode(
11463            self,
11464            encoder: &mut fidl::encoding::Encoder<'_, D>,
11465            offset: usize,
11466            _depth: fidl::encoding::Depth,
11467        ) -> fidl::Result<()> {
11468            encoder.debug_check_bounds::<StartCaptureFramesResponse>(offset);
11469            // Delegate to tuple encoding.
11470            fidl::encoding::Encode::<StartCaptureFramesResponse, D>::encode(
11471                (
11472                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
11473                    <MgmtFrameCaptureFlags as fidl::encoding::ValueTypeMarker>::borrow(
11474                        &self.supported_mgmt_frames,
11475                    ),
11476                ),
11477                encoder,
11478                offset,
11479                _depth,
11480            )
11481        }
11482    }
11483    unsafe impl<
11484            D: fidl::encoding::ResourceDialect,
11485            T0: fidl::encoding::Encode<i32, D>,
11486            T1: fidl::encoding::Encode<MgmtFrameCaptureFlags, D>,
11487        > fidl::encoding::Encode<StartCaptureFramesResponse, D> for (T0, T1)
11488    {
11489        #[inline]
11490        unsafe fn encode(
11491            self,
11492            encoder: &mut fidl::encoding::Encoder<'_, D>,
11493            offset: usize,
11494            depth: fidl::encoding::Depth,
11495        ) -> fidl::Result<()> {
11496            encoder.debug_check_bounds::<StartCaptureFramesResponse>(offset);
11497            // Zero out padding regions. There's no need to apply masks
11498            // because the unmasked parts will be overwritten by fields.
11499            // Write the fields.
11500            self.0.encode(encoder, offset + 0, depth)?;
11501            self.1.encode(encoder, offset + 4, depth)?;
11502            Ok(())
11503        }
11504    }
11505
11506    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11507        for StartCaptureFramesResponse
11508    {
11509        #[inline(always)]
11510        fn new_empty() -> Self {
11511            Self {
11512                status: fidl::new_empty!(i32, D),
11513                supported_mgmt_frames: fidl::new_empty!(MgmtFrameCaptureFlags, D),
11514            }
11515        }
11516
11517        #[inline]
11518        unsafe fn decode(
11519            &mut self,
11520            decoder: &mut fidl::encoding::Decoder<'_, D>,
11521            offset: usize,
11522            _depth: fidl::encoding::Depth,
11523        ) -> fidl::Result<()> {
11524            decoder.debug_check_bounds::<Self>(offset);
11525            // Verify that padding bytes are zero.
11526            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
11527            fidl::decode!(
11528                MgmtFrameCaptureFlags,
11529                D,
11530                &mut self.supported_mgmt_frames,
11531                decoder,
11532                offset + 4,
11533                _depth
11534            )?;
11535            Ok(())
11536        }
11537    }
11538
11539    impl fidl::encoding::ValueTypeMarker for StartConfirm {
11540        type Borrowed<'a> = &'a Self;
11541        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11542            value
11543        }
11544    }
11545
11546    unsafe impl fidl::encoding::TypeMarker for StartConfirm {
11547        type Owned = Self;
11548
11549        #[inline(always)]
11550        fn inline_align(_context: fidl::encoding::Context) -> usize {
11551            4
11552        }
11553
11554        #[inline(always)]
11555        fn inline_size(_context: fidl::encoding::Context) -> usize {
11556            4
11557        }
11558    }
11559
11560    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartConfirm, D>
11561        for &StartConfirm
11562    {
11563        #[inline]
11564        unsafe fn encode(
11565            self,
11566            encoder: &mut fidl::encoding::Encoder<'_, D>,
11567            offset: usize,
11568            _depth: fidl::encoding::Depth,
11569        ) -> fidl::Result<()> {
11570            encoder.debug_check_bounds::<StartConfirm>(offset);
11571            // Delegate to tuple encoding.
11572            fidl::encoding::Encode::<StartConfirm, D>::encode(
11573                (<StartResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),),
11574                encoder,
11575                offset,
11576                _depth,
11577            )
11578        }
11579    }
11580    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartResultCode, D>>
11581        fidl::encoding::Encode<StartConfirm, D> for (T0,)
11582    {
11583        #[inline]
11584        unsafe fn encode(
11585            self,
11586            encoder: &mut fidl::encoding::Encoder<'_, D>,
11587            offset: usize,
11588            depth: fidl::encoding::Depth,
11589        ) -> fidl::Result<()> {
11590            encoder.debug_check_bounds::<StartConfirm>(offset);
11591            // Zero out padding regions. There's no need to apply masks
11592            // because the unmasked parts will be overwritten by fields.
11593            // Write the fields.
11594            self.0.encode(encoder, offset + 0, depth)?;
11595            Ok(())
11596        }
11597    }
11598
11599    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartConfirm {
11600        #[inline(always)]
11601        fn new_empty() -> Self {
11602            Self { result_code: fidl::new_empty!(StartResultCode, D) }
11603        }
11604
11605        #[inline]
11606        unsafe fn decode(
11607            &mut self,
11608            decoder: &mut fidl::encoding::Decoder<'_, D>,
11609            offset: usize,
11610            _depth: fidl::encoding::Depth,
11611        ) -> fidl::Result<()> {
11612            decoder.debug_check_bounds::<Self>(offset);
11613            // Verify that padding bytes are zero.
11614            fidl::decode!(StartResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
11615            Ok(())
11616        }
11617    }
11618
11619    impl fidl::encoding::ValueTypeMarker for StartRequest {
11620        type Borrowed<'a> = &'a Self;
11621        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11622            value
11623        }
11624    }
11625
11626    unsafe impl fidl::encoding::TypeMarker for StartRequest {
11627        type Owned = Self;
11628
11629        #[inline(always)]
11630        fn inline_align(_context: fidl::encoding::Context) -> usize {
11631            8
11632        }
11633
11634        #[inline(always)]
11635        fn inline_size(_context: fidl::encoding::Context) -> usize {
11636            96
11637        }
11638    }
11639
11640    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartRequest, D>
11641        for &StartRequest
11642    {
11643        #[inline]
11644        unsafe fn encode(
11645            self,
11646            encoder: &mut fidl::encoding::Encoder<'_, D>,
11647            offset: usize,
11648            _depth: fidl::encoding::Depth,
11649        ) -> fidl::Result<()> {
11650            encoder.debug_check_bounds::<StartRequest>(offset);
11651            // Delegate to tuple encoding.
11652            fidl::encoding::Encode::<StartRequest, D>::encode(
11653                (
11654                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid),
11655                    <fidl_fuchsia_wlan_common__common::BssType as fidl::encoding::ValueTypeMarker>::borrow(&self.bss_type),
11656                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.beacon_period),
11657                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.dtim_period),
11658                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.channel),
11659                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
11660                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
11661                    <Country as fidl::encoding::ValueTypeMarker>::borrow(&self.country),
11662                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.mesh_id),
11663                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>> as fidl::encoding::ValueTypeMarker>::borrow(&self.rsne),
11664                    <fidl_fuchsia_wlan_common__common::WlanPhyType as fidl::encoding::ValueTypeMarker>::borrow(&self.phy),
11665                    <fidl_fuchsia_wlan_common__common::ChannelBandwidth as fidl::encoding::ValueTypeMarker>::borrow(&self.channel_bandwidth),
11666                ),
11667                encoder, offset, _depth
11668            )
11669        }
11670    }
11671    unsafe impl<
11672            D: fidl::encoding::ResourceDialect,
11673            T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
11674            T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssType, D>,
11675            T2: fidl::encoding::Encode<u16, D>,
11676            T3: fidl::encoding::Encode<u8, D>,
11677            T4: fidl::encoding::Encode<u8, D>,
11678            T5: fidl::encoding::Encode<u16, D>,
11679            T6: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
11680            T7: fidl::encoding::Encode<Country, D>,
11681            T8: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
11682            T9: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>, D>,
11683            T10: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::WlanPhyType, D>,
11684            T11: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::ChannelBandwidth, D>,
11685        > fidl::encoding::Encode<StartRequest, D>
11686        for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
11687    {
11688        #[inline]
11689        unsafe fn encode(
11690            self,
11691            encoder: &mut fidl::encoding::Encoder<'_, D>,
11692            offset: usize,
11693            depth: fidl::encoding::Depth,
11694        ) -> fidl::Result<()> {
11695            encoder.debug_check_bounds::<StartRequest>(offset);
11696            // Zero out padding regions. There's no need to apply masks
11697            // because the unmasked parts will be overwritten by fields.
11698            unsafe {
11699                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
11700                (ptr as *mut u64).write_unaligned(0);
11701            }
11702            unsafe {
11703                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(48);
11704                (ptr as *mut u64).write_unaligned(0);
11705            }
11706            // Write the fields.
11707            self.0.encode(encoder, offset + 0, depth)?;
11708            self.1.encode(encoder, offset + 16, depth)?;
11709            self.2.encode(encoder, offset + 20, depth)?;
11710            self.3.encode(encoder, offset + 22, depth)?;
11711            self.4.encode(encoder, offset + 23, depth)?;
11712            self.5.encode(encoder, offset + 24, depth)?;
11713            self.6.encode(encoder, offset + 32, depth)?;
11714            self.7.encode(encoder, offset + 48, depth)?;
11715            self.8.encode(encoder, offset + 56, depth)?;
11716            self.9.encode(encoder, offset + 72, depth)?;
11717            self.10.encode(encoder, offset + 88, depth)?;
11718            self.11.encode(encoder, offset + 92, depth)?;
11719            Ok(())
11720        }
11721    }
11722
11723    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartRequest {
11724        #[inline(always)]
11725        fn new_empty() -> Self {
11726            Self {
11727                ssid: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
11728                bss_type: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssType, D),
11729                beacon_period: fidl::new_empty!(u16, D),
11730                dtim_period: fidl::new_empty!(u8, D),
11731                channel: fidl::new_empty!(u8, D),
11732                capability_info: fidl::new_empty!(u16, D),
11733                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
11734                country: fidl::new_empty!(Country, D),
11735                mesh_id: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
11736                rsne: fidl::new_empty!(
11737                    fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
11738                    D
11739                ),
11740                phy: fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanPhyType, D),
11741                channel_bandwidth: fidl::new_empty!(
11742                    fidl_fuchsia_wlan_common__common::ChannelBandwidth,
11743                    D
11744                ),
11745            }
11746        }
11747
11748        #[inline]
11749        unsafe fn decode(
11750            &mut self,
11751            decoder: &mut fidl::encoding::Decoder<'_, D>,
11752            offset: usize,
11753            _depth: fidl::encoding::Depth,
11754        ) -> fidl::Result<()> {
11755            decoder.debug_check_bounds::<Self>(offset);
11756            // Verify that padding bytes are zero.
11757            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
11758            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11759            let mask = 0xffffffffffff0000u64;
11760            let maskedval = padval & mask;
11761            if maskedval != 0 {
11762                return Err(fidl::Error::NonZeroPadding {
11763                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
11764                });
11765            }
11766            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(48) };
11767            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11768            let mask = 0xffffffffff000000u64;
11769            let maskedval = padval & mask;
11770            if maskedval != 0 {
11771                return Err(fidl::Error::NonZeroPadding {
11772                    padding_start: offset + 48 + ((mask as u64).trailing_zeros() / 8) as usize,
11773                });
11774            }
11775            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.ssid, decoder, offset + 0, _depth)?;
11776            fidl::decode!(
11777                fidl_fuchsia_wlan_common__common::BssType,
11778                D,
11779                &mut self.bss_type,
11780                decoder,
11781                offset + 16,
11782                _depth
11783            )?;
11784            fidl::decode!(u16, D, &mut self.beacon_period, decoder, offset + 20, _depth)?;
11785            fidl::decode!(u8, D, &mut self.dtim_period, decoder, offset + 22, _depth)?;
11786            fidl::decode!(u8, D, &mut self.channel, decoder, offset + 23, _depth)?;
11787            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 24, _depth)?;
11788            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 32, _depth)?;
11789            fidl::decode!(Country, D, &mut self.country, decoder, offset + 48, _depth)?;
11790            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.mesh_id, decoder, offset + 56, _depth)?;
11791            fidl::decode!(
11792                fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
11793                D,
11794                &mut self.rsne,
11795                decoder,
11796                offset + 72,
11797                _depth
11798            )?;
11799            fidl::decode!(
11800                fidl_fuchsia_wlan_common__common::WlanPhyType,
11801                D,
11802                &mut self.phy,
11803                decoder,
11804                offset + 88,
11805                _depth
11806            )?;
11807            fidl::decode!(
11808                fidl_fuchsia_wlan_common__common::ChannelBandwidth,
11809                D,
11810                &mut self.channel_bandwidth,
11811                decoder,
11812                offset + 92,
11813                _depth
11814            )?;
11815            Ok(())
11816        }
11817    }
11818
11819    impl fidl::encoding::ValueTypeMarker for StopConfirm {
11820        type Borrowed<'a> = &'a Self;
11821        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11822            value
11823        }
11824    }
11825
11826    unsafe impl fidl::encoding::TypeMarker for StopConfirm {
11827        type Owned = Self;
11828
11829        #[inline(always)]
11830        fn inline_align(_context: fidl::encoding::Context) -> usize {
11831            4
11832        }
11833
11834        #[inline(always)]
11835        fn inline_size(_context: fidl::encoding::Context) -> usize {
11836            4
11837        }
11838    }
11839
11840    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopConfirm, D>
11841        for &StopConfirm
11842    {
11843        #[inline]
11844        unsafe fn encode(
11845            self,
11846            encoder: &mut fidl::encoding::Encoder<'_, D>,
11847            offset: usize,
11848            _depth: fidl::encoding::Depth,
11849        ) -> fidl::Result<()> {
11850            encoder.debug_check_bounds::<StopConfirm>(offset);
11851            // Delegate to tuple encoding.
11852            fidl::encoding::Encode::<StopConfirm, D>::encode(
11853                (<StopResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),),
11854                encoder,
11855                offset,
11856                _depth,
11857            )
11858        }
11859    }
11860    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopResultCode, D>>
11861        fidl::encoding::Encode<StopConfirm, D> for (T0,)
11862    {
11863        #[inline]
11864        unsafe fn encode(
11865            self,
11866            encoder: &mut fidl::encoding::Encoder<'_, D>,
11867            offset: usize,
11868            depth: fidl::encoding::Depth,
11869        ) -> fidl::Result<()> {
11870            encoder.debug_check_bounds::<StopConfirm>(offset);
11871            // Zero out padding regions. There's no need to apply masks
11872            // because the unmasked parts will be overwritten by fields.
11873            // Write the fields.
11874            self.0.encode(encoder, offset + 0, depth)?;
11875            Ok(())
11876        }
11877    }
11878
11879    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopConfirm {
11880        #[inline(always)]
11881        fn new_empty() -> Self {
11882            Self { result_code: fidl::new_empty!(StopResultCode, D) }
11883        }
11884
11885        #[inline]
11886        unsafe fn decode(
11887            &mut self,
11888            decoder: &mut fidl::encoding::Decoder<'_, D>,
11889            offset: usize,
11890            _depth: fidl::encoding::Depth,
11891        ) -> fidl::Result<()> {
11892            decoder.debug_check_bounds::<Self>(offset);
11893            // Verify that padding bytes are zero.
11894            fidl::decode!(StopResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
11895            Ok(())
11896        }
11897    }
11898
11899    impl fidl::encoding::ValueTypeMarker for StopRequest {
11900        type Borrowed<'a> = &'a Self;
11901        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11902            value
11903        }
11904    }
11905
11906    unsafe impl fidl::encoding::TypeMarker for StopRequest {
11907        type Owned = Self;
11908
11909        #[inline(always)]
11910        fn inline_align(_context: fidl::encoding::Context) -> usize {
11911            8
11912        }
11913
11914        #[inline(always)]
11915        fn inline_size(_context: fidl::encoding::Context) -> usize {
11916            16
11917        }
11918    }
11919
11920    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopRequest, D>
11921        for &StopRequest
11922    {
11923        #[inline]
11924        unsafe fn encode(
11925            self,
11926            encoder: &mut fidl::encoding::Encoder<'_, D>,
11927            offset: usize,
11928            _depth: fidl::encoding::Depth,
11929        ) -> fidl::Result<()> {
11930            encoder.debug_check_bounds::<StopRequest>(offset);
11931            // Delegate to tuple encoding.
11932            fidl::encoding::Encode::<StopRequest, D>::encode(
11933                (<fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(
11934                    &self.ssid,
11935                ),),
11936                encoder,
11937                offset,
11938                _depth,
11939            )
11940        }
11941    }
11942    unsafe impl<
11943            D: fidl::encoding::ResourceDialect,
11944            T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
11945        > fidl::encoding::Encode<StopRequest, D> for (T0,)
11946    {
11947        #[inline]
11948        unsafe fn encode(
11949            self,
11950            encoder: &mut fidl::encoding::Encoder<'_, D>,
11951            offset: usize,
11952            depth: fidl::encoding::Depth,
11953        ) -> fidl::Result<()> {
11954            encoder.debug_check_bounds::<StopRequest>(offset);
11955            // Zero out padding regions. There's no need to apply masks
11956            // because the unmasked parts will be overwritten by fields.
11957            // Write the fields.
11958            self.0.encode(encoder, offset + 0, depth)?;
11959            Ok(())
11960        }
11961    }
11962
11963    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopRequest {
11964        #[inline(always)]
11965        fn new_empty() -> Self {
11966            Self { ssid: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D) }
11967        }
11968
11969        #[inline]
11970        unsafe fn decode(
11971            &mut self,
11972            decoder: &mut fidl::encoding::Decoder<'_, D>,
11973            offset: usize,
11974            _depth: fidl::encoding::Depth,
11975        ) -> fidl::Result<()> {
11976            decoder.debug_check_bounds::<Self>(offset);
11977            // Verify that padding bytes are zero.
11978            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.ssid, decoder, offset + 0, _depth)?;
11979            Ok(())
11980        }
11981    }
11982
11983    impl fidl::encoding::ValueTypeMarker for WmmParameter {
11984        type Borrowed<'a> = &'a Self;
11985        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11986            value
11987        }
11988    }
11989
11990    unsafe impl fidl::encoding::TypeMarker for WmmParameter {
11991        type Owned = Self;
11992
11993        #[inline(always)]
11994        fn inline_align(_context: fidl::encoding::Context) -> usize {
11995            1
11996        }
11997
11998        #[inline(always)]
11999        fn inline_size(_context: fidl::encoding::Context) -> usize {
12000            18
12001        }
12002        #[inline(always)]
12003        fn encode_is_copy() -> bool {
12004            true
12005        }
12006
12007        #[inline(always)]
12008        fn decode_is_copy() -> bool {
12009            true
12010        }
12011    }
12012
12013    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WmmParameter, D>
12014        for &WmmParameter
12015    {
12016        #[inline]
12017        unsafe fn encode(
12018            self,
12019            encoder: &mut fidl::encoding::Encoder<'_, D>,
12020            offset: usize,
12021            _depth: fidl::encoding::Depth,
12022        ) -> fidl::Result<()> {
12023            encoder.debug_check_bounds::<WmmParameter>(offset);
12024            unsafe {
12025                // Copy the object into the buffer.
12026                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
12027                (buf_ptr as *mut WmmParameter)
12028                    .write_unaligned((self as *const WmmParameter).read());
12029                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
12030                // done second because the memcpy will write garbage to these bytes.
12031            }
12032            Ok(())
12033        }
12034    }
12035    unsafe impl<
12036            D: fidl::encoding::ResourceDialect,
12037            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 18>, D>,
12038        > fidl::encoding::Encode<WmmParameter, D> for (T0,)
12039    {
12040        #[inline]
12041        unsafe fn encode(
12042            self,
12043            encoder: &mut fidl::encoding::Encoder<'_, D>,
12044            offset: usize,
12045            depth: fidl::encoding::Depth,
12046        ) -> fidl::Result<()> {
12047            encoder.debug_check_bounds::<WmmParameter>(offset);
12048            // Zero out padding regions. There's no need to apply masks
12049            // because the unmasked parts will be overwritten by fields.
12050            // Write the fields.
12051            self.0.encode(encoder, offset + 0, depth)?;
12052            Ok(())
12053        }
12054    }
12055
12056    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WmmParameter {
12057        #[inline(always)]
12058        fn new_empty() -> Self {
12059            Self { bytes: fidl::new_empty!(fidl::encoding::Array<u8, 18>, D) }
12060        }
12061
12062        #[inline]
12063        unsafe fn decode(
12064            &mut self,
12065            decoder: &mut fidl::encoding::Decoder<'_, D>,
12066            offset: usize,
12067            _depth: fidl::encoding::Depth,
12068        ) -> fidl::Result<()> {
12069            decoder.debug_check_bounds::<Self>(offset);
12070            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
12071            // Verify that padding bytes are zero.
12072            // Copy from the buffer into the object.
12073            unsafe {
12074                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 18);
12075            }
12076            Ok(())
12077        }
12078    }
12079
12080    impl fidl::encoding::ValueTypeMarker for GetIfaceHistogramStatsResponse {
12081        type Borrowed<'a> = &'a Self;
12082        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12083            value
12084        }
12085    }
12086
12087    unsafe impl fidl::encoding::TypeMarker for GetIfaceHistogramStatsResponse {
12088        type Owned = Self;
12089
12090        #[inline(always)]
12091        fn inline_align(_context: fidl::encoding::Context) -> usize {
12092            8
12093        }
12094
12095        #[inline(always)]
12096        fn inline_size(_context: fidl::encoding::Context) -> usize {
12097            16
12098        }
12099    }
12100
12101    unsafe impl<D: fidl::encoding::ResourceDialect>
12102        fidl::encoding::Encode<GetIfaceHistogramStatsResponse, D>
12103        for &GetIfaceHistogramStatsResponse
12104    {
12105        #[inline]
12106        unsafe fn encode(
12107            self,
12108            encoder: &mut fidl::encoding::Encoder<'_, D>,
12109            offset: usize,
12110            _depth: fidl::encoding::Depth,
12111        ) -> fidl::Result<()> {
12112            encoder.debug_check_bounds::<GetIfaceHistogramStatsResponse>(offset);
12113            encoder.write_num::<u64>(self.ordinal(), offset);
12114            match self {
12115            GetIfaceHistogramStatsResponse::Stats(ref val) => {
12116                fidl::encoding::encode_in_envelope::<fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D>(
12117                    <fidl_fuchsia_wlan_stats__common::IfaceHistogramStats as fidl::encoding::ValueTypeMarker>::borrow(val),
12118                    encoder, offset + 8, _depth
12119                )
12120            }
12121            GetIfaceHistogramStatsResponse::ErrorStatus(ref val) => {
12122                fidl::encoding::encode_in_envelope::<i32, D>(
12123                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
12124                    encoder, offset + 8, _depth
12125                )
12126            }
12127        }
12128        }
12129    }
12130
12131    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12132        for GetIfaceHistogramStatsResponse
12133    {
12134        #[inline(always)]
12135        fn new_empty() -> Self {
12136            Self::Stats(fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D))
12137        }
12138
12139        #[inline]
12140        unsafe fn decode(
12141            &mut self,
12142            decoder: &mut fidl::encoding::Decoder<'_, D>,
12143            offset: usize,
12144            mut depth: fidl::encoding::Depth,
12145        ) -> fidl::Result<()> {
12146            decoder.debug_check_bounds::<Self>(offset);
12147            #[allow(unused_variables)]
12148            let next_out_of_line = decoder.next_out_of_line();
12149            let handles_before = decoder.remaining_handles();
12150            let (ordinal, inlined, num_bytes, num_handles) =
12151                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12152
12153            let member_inline_size = match ordinal {
12154            1 => <fidl_fuchsia_wlan_stats__common::IfaceHistogramStats as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12155            2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12156            _ => return Err(fidl::Error::UnknownUnionTag),
12157        };
12158
12159            if inlined != (member_inline_size <= 4) {
12160                return Err(fidl::Error::InvalidInlineBitInEnvelope);
12161            }
12162            let _inner_offset;
12163            if inlined {
12164                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
12165                _inner_offset = offset + 8;
12166            } else {
12167                depth.increment()?;
12168                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12169            }
12170            match ordinal {
12171                1 => {
12172                    #[allow(irrefutable_let_patterns)]
12173                    if let GetIfaceHistogramStatsResponse::Stats(_) = self {
12174                        // Do nothing, read the value into the object
12175                    } else {
12176                        // Initialize `self` to the right variant
12177                        *self = GetIfaceHistogramStatsResponse::Stats(fidl::new_empty!(
12178                            fidl_fuchsia_wlan_stats__common::IfaceHistogramStats,
12179                            D
12180                        ));
12181                    }
12182                    #[allow(irrefutable_let_patterns)]
12183                    if let GetIfaceHistogramStatsResponse::Stats(ref mut val) = self {
12184                        fidl::decode!(
12185                            fidl_fuchsia_wlan_stats__common::IfaceHistogramStats,
12186                            D,
12187                            val,
12188                            decoder,
12189                            _inner_offset,
12190                            depth
12191                        )?;
12192                    } else {
12193                        unreachable!()
12194                    }
12195                }
12196                2 => {
12197                    #[allow(irrefutable_let_patterns)]
12198                    if let GetIfaceHistogramStatsResponse::ErrorStatus(_) = self {
12199                        // Do nothing, read the value into the object
12200                    } else {
12201                        // Initialize `self` to the right variant
12202                        *self =
12203                            GetIfaceHistogramStatsResponse::ErrorStatus(fidl::new_empty!(i32, D));
12204                    }
12205                    #[allow(irrefutable_let_patterns)]
12206                    if let GetIfaceHistogramStatsResponse::ErrorStatus(ref mut val) = self {
12207                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
12208                    } else {
12209                        unreachable!()
12210                    }
12211                }
12212                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12213            }
12214            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12215                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12216            }
12217            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12218                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12219            }
12220            Ok(())
12221        }
12222    }
12223
12224    impl fidl::encoding::ValueTypeMarker for GetIfaceStatsResponse {
12225        type Borrowed<'a> = &'a Self;
12226        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12227            value
12228        }
12229    }
12230
12231    unsafe impl fidl::encoding::TypeMarker for GetIfaceStatsResponse {
12232        type Owned = Self;
12233
12234        #[inline(always)]
12235        fn inline_align(_context: fidl::encoding::Context) -> usize {
12236            8
12237        }
12238
12239        #[inline(always)]
12240        fn inline_size(_context: fidl::encoding::Context) -> usize {
12241            16
12242        }
12243    }
12244
12245    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<GetIfaceStatsResponse, D>
12246        for &GetIfaceStatsResponse
12247    {
12248        #[inline]
12249        unsafe fn encode(
12250            self,
12251            encoder: &mut fidl::encoding::Encoder<'_, D>,
12252            offset: usize,
12253            _depth: fidl::encoding::Depth,
12254        ) -> fidl::Result<()> {
12255            encoder.debug_check_bounds::<GetIfaceStatsResponse>(offset);
12256            encoder.write_num::<u64>(self.ordinal(), offset);
12257            match self {
12258            GetIfaceStatsResponse::Stats(ref val) => {
12259                fidl::encoding::encode_in_envelope::<fidl_fuchsia_wlan_stats__common::IfaceStats, D>(
12260                    <fidl_fuchsia_wlan_stats__common::IfaceStats as fidl::encoding::ValueTypeMarker>::borrow(val),
12261                    encoder, offset + 8, _depth
12262                )
12263            }
12264            GetIfaceStatsResponse::ErrorStatus(ref val) => {
12265                fidl::encoding::encode_in_envelope::<i32, D>(
12266                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
12267                    encoder, offset + 8, _depth
12268                )
12269            }
12270        }
12271        }
12272    }
12273
12274    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GetIfaceStatsResponse {
12275        #[inline(always)]
12276        fn new_empty() -> Self {
12277            Self::Stats(fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceStats, D))
12278        }
12279
12280        #[inline]
12281        unsafe fn decode(
12282            &mut self,
12283            decoder: &mut fidl::encoding::Decoder<'_, D>,
12284            offset: usize,
12285            mut depth: fidl::encoding::Depth,
12286        ) -> fidl::Result<()> {
12287            decoder.debug_check_bounds::<Self>(offset);
12288            #[allow(unused_variables)]
12289            let next_out_of_line = decoder.next_out_of_line();
12290            let handles_before = decoder.remaining_handles();
12291            let (ordinal, inlined, num_bytes, num_handles) =
12292                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12293
12294            let member_inline_size = match ordinal {
12295            1 => <fidl_fuchsia_wlan_stats__common::IfaceStats as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12296            2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12297            _ => return Err(fidl::Error::UnknownUnionTag),
12298        };
12299
12300            if inlined != (member_inline_size <= 4) {
12301                return Err(fidl::Error::InvalidInlineBitInEnvelope);
12302            }
12303            let _inner_offset;
12304            if inlined {
12305                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
12306                _inner_offset = offset + 8;
12307            } else {
12308                depth.increment()?;
12309                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12310            }
12311            match ordinal {
12312                1 => {
12313                    #[allow(irrefutable_let_patterns)]
12314                    if let GetIfaceStatsResponse::Stats(_) = self {
12315                        // Do nothing, read the value into the object
12316                    } else {
12317                        // Initialize `self` to the right variant
12318                        *self = GetIfaceStatsResponse::Stats(fidl::new_empty!(
12319                            fidl_fuchsia_wlan_stats__common::IfaceStats,
12320                            D
12321                        ));
12322                    }
12323                    #[allow(irrefutable_let_patterns)]
12324                    if let GetIfaceStatsResponse::Stats(ref mut val) = self {
12325                        fidl::decode!(
12326                            fidl_fuchsia_wlan_stats__common::IfaceStats,
12327                            D,
12328                            val,
12329                            decoder,
12330                            _inner_offset,
12331                            depth
12332                        )?;
12333                    } else {
12334                        unreachable!()
12335                    }
12336                }
12337                2 => {
12338                    #[allow(irrefutable_let_patterns)]
12339                    if let GetIfaceStatsResponse::ErrorStatus(_) = self {
12340                        // Do nothing, read the value into the object
12341                    } else {
12342                        // Initialize `self` to the right variant
12343                        *self = GetIfaceStatsResponse::ErrorStatus(fidl::new_empty!(i32, D));
12344                    }
12345                    #[allow(irrefutable_let_patterns)]
12346                    if let GetIfaceStatsResponse::ErrorStatus(ref mut val) = self {
12347                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
12348                    } else {
12349                        unreachable!()
12350                    }
12351                }
12352                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12353            }
12354            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12355                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12356            }
12357            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12358                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12359            }
12360            Ok(())
12361        }
12362    }
12363}