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 MlmeGetSignalReportResponse {
549    pub resp: fidl_fuchsia_wlan_stats__common::SignalReport,
550}
551
552impl fidl::Persistable for MlmeGetSignalReportResponse {}
553
554#[derive(Clone, Debug, PartialEq)]
555pub struct MlmeQueryTelemetrySupportResponse {
556    pub resp: fidl_fuchsia_wlan_stats__common::TelemetrySupport,
557}
558
559impl fidl::Persistable for MlmeQueryTelemetrySupportResponse {}
560
561#[derive(Clone, Debug, PartialEq)]
562pub struct MinstrelListResponse {
563    pub peers: fidl_fuchsia_wlan_minstrel__common::Peers,
564}
565
566impl fidl::Persistable for MinstrelListResponse {}
567
568#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
569#[repr(C)]
570pub struct MinstrelStatsRequest {
571    pub peer_addr: [u8; 6],
572}
573
574impl fidl::Persistable for MinstrelStatsRequest {}
575
576#[derive(Clone, Debug, PartialEq)]
577pub struct MinstrelStatsResponse {
578    pub peer: Option<Box<fidl_fuchsia_wlan_minstrel__common::Peer>>,
579}
580
581impl fidl::Persistable for MinstrelStatsResponse {}
582
583#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
584pub struct MlmeAssociateIndRequest {
585    pub ind: AssociateIndication,
586}
587
588impl fidl::Persistable for MlmeAssociateIndRequest {}
589
590#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
591pub struct MlmeAssociateRespRequest {
592    pub resp: AssociateResponse,
593}
594
595impl fidl::Persistable for MlmeAssociateRespRequest {}
596
597#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
598pub struct MlmeAuthenticateIndRequest {
599    pub ind: AuthenticateIndication,
600}
601
602impl fidl::Persistable for MlmeAuthenticateIndRequest {}
603
604#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
605pub struct MlmeAuthenticateRespRequest {
606    pub resp: AuthenticateResponse,
607}
608
609impl fidl::Persistable for MlmeAuthenticateRespRequest {}
610
611#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
612pub struct MlmeConnectConfRequest {
613    pub resp: ConnectConfirm,
614}
615
616impl fidl::Persistable for MlmeConnectConfRequest {}
617
618#[derive(Clone, Debug, PartialEq)]
619pub struct MlmeConnectReqRequest {
620    pub req: ConnectRequest,
621}
622
623impl fidl::Persistable for MlmeConnectReqRequest {}
624
625#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
626#[repr(C)]
627pub struct MlmeDeauthenticateConfRequest {
628    pub resp: DeauthenticateConfirm,
629}
630
631impl fidl::Persistable for MlmeDeauthenticateConfRequest {}
632
633#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
634pub struct MlmeDeauthenticateIndRequest {
635    pub ind: DeauthenticateIndication,
636}
637
638impl fidl::Persistable for MlmeDeauthenticateIndRequest {}
639
640#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
641pub struct MlmeDeauthenticateReqRequest {
642    pub req: DeauthenticateRequest,
643}
644
645impl fidl::Persistable for MlmeDeauthenticateReqRequest {}
646
647#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
648pub struct MlmeDeleteKeysReqRequest {
649    pub req: DeleteKeysRequest,
650}
651
652impl fidl::Persistable for MlmeDeleteKeysReqRequest {}
653
654#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
655#[repr(C)]
656pub struct MlmeDisassociateConfRequest {
657    pub resp: DisassociateConfirm,
658}
659
660impl fidl::Persistable for MlmeDisassociateConfRequest {}
661
662#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
663pub struct MlmeDisassociateIndRequest {
664    pub ind: DisassociateIndication,
665}
666
667impl fidl::Persistable for MlmeDisassociateIndRequest {}
668
669#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
670pub struct MlmeDisassociateReqRequest {
671    pub req: DisassociateRequest,
672}
673
674impl fidl::Persistable for MlmeDisassociateReqRequest {}
675
676#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
677pub struct MlmeEapolConfRequest {
678    pub resp: EapolConfirm,
679}
680
681impl fidl::Persistable for MlmeEapolConfRequest {}
682
683#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
684pub struct MlmeEapolIndRequest {
685    pub ind: EapolIndication,
686}
687
688impl fidl::Persistable for MlmeEapolIndRequest {}
689
690#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
691pub struct MlmeEapolReqRequest {
692    pub req: EapolRequest,
693}
694
695impl fidl::Persistable for MlmeEapolReqRequest {}
696
697#[derive(Clone, Debug, PartialEq)]
698pub struct MlmeFinalizeAssociationReqRequest {
699    pub negotiated_capabilities: NegotiatedCapabilities,
700}
701
702impl fidl::Persistable for MlmeFinalizeAssociationReqRequest {}
703
704#[derive(Clone, Debug, PartialEq)]
705pub struct MlmeGetIfaceHistogramStatsResponse {
706    pub resp: GetIfaceHistogramStatsResponse,
707}
708
709impl fidl::Persistable for MlmeGetIfaceHistogramStatsResponse {}
710
711#[derive(Clone, Debug, PartialEq)]
712pub struct MlmeGetIfaceStatsResponse {
713    pub resp: GetIfaceStatsResponse,
714}
715
716impl fidl::Persistable for MlmeGetIfaceStatsResponse {}
717
718#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
719#[repr(C)]
720pub struct MlmeGetMinstrelStatsRequest {
721    pub req: MinstrelStatsRequest,
722}
723
724impl fidl::Persistable for MlmeGetMinstrelStatsRequest {}
725
726#[derive(Clone, Debug, PartialEq)]
727pub struct MlmeGetMinstrelStatsResponse {
728    pub resp: MinstrelStatsResponse,
729}
730
731impl fidl::Persistable for MlmeGetMinstrelStatsResponse {}
732
733#[derive(Clone, Debug, PartialEq)]
734pub struct MlmeListMinstrelPeersResponse {
735    pub resp: MinstrelListResponse,
736}
737
738impl fidl::Persistable for MlmeListMinstrelPeersResponse {}
739
740#[derive(Clone, Debug, PartialEq)]
741pub struct MlmeOnChannelSwitchedRequest {
742    pub info: fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo,
743}
744
745impl fidl::Persistable for MlmeOnChannelSwitchedRequest {}
746
747#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
748pub struct MlmeOnPmkAvailableRequest {
749    pub info: PmkInfo,
750}
751
752impl fidl::Persistable for MlmeOnPmkAvailableRequest {}
753
754#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
755pub struct MlmeOnSaeFrameRxRequest {
756    pub frame: SaeFrame,
757}
758
759impl fidl::Persistable for MlmeOnSaeFrameRxRequest {}
760
761#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
762#[repr(C)]
763pub struct MlmeOnSaeHandshakeIndRequest {
764    pub ind: SaeHandshakeIndication,
765}
766
767impl fidl::Persistable for MlmeOnSaeHandshakeIndRequest {}
768
769#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
770pub struct MlmeOnScanEndRequest {
771    pub end: ScanEnd,
772}
773
774impl fidl::Persistable for MlmeOnScanEndRequest {}
775
776#[derive(Clone, Debug, PartialEq)]
777pub struct MlmeOnScanResultRequest {
778    pub result: ScanResult,
779}
780
781impl fidl::Persistable for MlmeOnScanResultRequest {}
782
783#[derive(Clone, Debug, PartialEq)]
784pub struct MlmeOnWmmStatusRespRequest {
785    pub status: i32,
786    pub resp: fidl_fuchsia_wlan_internal__common::WmmStatusResponse,
787}
788
789impl fidl::Persistable for MlmeOnWmmStatusRespRequest {}
790
791#[derive(Clone, Debug, PartialEq)]
792pub struct MlmeQueryDeviceInfoResponse {
793    pub info: DeviceInfo,
794}
795
796impl fidl::Persistable for MlmeQueryDeviceInfoResponse {}
797
798#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
799#[repr(C)]
800pub struct MlmeReconnectReqRequest {
801    pub req: ReconnectRequest,
802}
803
804impl fidl::Persistable for MlmeReconnectReqRequest {}
805
806#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
807pub struct MlmeRelayCapturedFrameRequest {
808    pub result: CapturedFrameResult,
809}
810
811impl fidl::Persistable for MlmeRelayCapturedFrameRequest {}
812
813#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
814pub struct MlmeResetReqRequest {
815    pub req: ResetRequest,
816}
817
818impl fidl::Persistable for MlmeResetReqRequest {}
819
820#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
821pub struct MlmeRoamConfRequest {
822    pub conf: RoamConfirm,
823}
824
825impl fidl::Persistable for MlmeRoamConfRequest {}
826
827#[derive(Clone, Debug, PartialEq)]
828pub struct MlmeRoamReqRequest {
829    pub req: RoamRequest,
830}
831
832impl fidl::Persistable for MlmeRoamReqRequest {}
833
834#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
835pub struct MlmeRoamResultIndRequest {
836    pub ind: RoamResultIndication,
837}
838
839impl fidl::Persistable for MlmeRoamResultIndRequest {}
840
841#[derive(Clone, Debug, PartialEq)]
842pub struct MlmeRoamStartIndRequest {
843    pub ind: RoamStartIndication,
844}
845
846impl fidl::Persistable for MlmeRoamStartIndRequest {}
847
848#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
849pub struct MlmeSaeFrameTxRequest {
850    pub frame: SaeFrame,
851}
852
853impl fidl::Persistable for MlmeSaeFrameTxRequest {}
854
855#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
856pub struct MlmeSaeHandshakeRespRequest {
857    pub resp: SaeHandshakeResponse,
858}
859
860impl fidl::Persistable for MlmeSaeHandshakeRespRequest {}
861
862#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
863pub struct MlmeSetControlledPortRequest {
864    pub req: SetControlledPortRequest,
865}
866
867impl fidl::Persistable for MlmeSetControlledPortRequest {}
868
869#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
870pub struct MlmeSetKeysConfRequest {
871    pub conf: SetKeysConfirm,
872}
873
874impl fidl::Persistable for MlmeSetKeysConfRequest {}
875
876#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
877pub struct MlmeSetKeysReqRequest {
878    pub req: SetKeysRequest,
879}
880
881impl fidl::Persistable for MlmeSetKeysReqRequest {}
882
883#[derive(Clone, Debug, PartialEq)]
884pub struct MlmeSignalReportRequest {
885    pub ind: fidl_fuchsia_wlan_internal__common::SignalReportIndication,
886}
887
888impl fidl::Persistable for MlmeSignalReportRequest {}
889
890#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
891pub struct MlmeStartCaptureFramesRequest {
892    pub req: StartCaptureFramesRequest,
893}
894
895impl fidl::Persistable for MlmeStartCaptureFramesRequest {}
896
897#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
898pub struct MlmeStartCaptureFramesResponse {
899    pub resp: StartCaptureFramesResponse,
900}
901
902impl fidl::Persistable for MlmeStartCaptureFramesResponse {}
903
904#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
905pub struct MlmeStartConfRequest {
906    pub resp: StartConfirm,
907}
908
909impl fidl::Persistable for MlmeStartConfRequest {}
910
911#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
912pub struct MlmeStartReqRequest {
913    pub req: StartRequest,
914}
915
916impl fidl::Persistable for MlmeStartReqRequest {}
917
918#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
919pub struct MlmeStartScanRequest {
920    pub req: ScanRequest,
921}
922
923impl fidl::Persistable for MlmeStartScanRequest {}
924
925#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
926pub struct MlmeStopConfRequest {
927    pub resp: StopConfirm,
928}
929
930impl fidl::Persistable for MlmeStopConfRequest {}
931
932#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
933pub struct MlmeStopReqRequest {
934    pub req: StopRequest,
935}
936
937impl fidl::Persistable for MlmeStopReqRequest {}
938
939/// Non-IEEE custom structure to inform a SoftMAC device about the association negotiation outcome.
940#[derive(Clone, Debug, PartialEq)]
941pub struct NegotiatedCapabilities {
942    pub channel: fidl_fuchsia_wlan_ieee80211__common::WlanChannel,
943    pub capability_info: u16,
944    pub rates: Vec<u8>,
945    pub wmm_param: Option<Box<WmmParameter>>,
946    pub ht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>>,
947    pub vht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>>,
948}
949
950impl fidl::Persistable for NegotiatedCapabilities {}
951
952#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
953pub struct PmkInfo {
954    pub pmk: Vec<u8>,
955    pub pmkid: Vec<u8>,
956}
957
958impl fidl::Persistable for PmkInfo {}
959
960#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
961#[repr(C)]
962pub struct ReconnectRequest {
963    pub peer_sta_address: [u8; 6],
964}
965
966impl fidl::Persistable for ReconnectRequest {}
967
968#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
969pub struct ResetRequest {
970    pub sta_address: [u8; 6],
971    pub set_default_mib: bool,
972}
973
974impl fidl::Persistable for ResetRequest {}
975
976/// Result of an SME-initiated roam attempt.
977#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
978pub struct RoamConfirm {
979    pub selected_bssid: [u8; 6],
980    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
981    /// Whether the original BSS association has been maintained through the roam attempt.
982    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
983    /// success then this field must be set to false; a roam failure typically incurs disassociation
984    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
985    pub original_association_maintained: bool,
986    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
987    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
988    /// This allows higher layers to decide how to clean up connection state after a failed roam
989    /// attempt.
990    pub target_bss_authenticated: bool,
991    pub association_id: u16,
992    pub association_ies: Vec<u8>,
993}
994
995impl fidl::Persistable for RoamConfirm {}
996
997#[derive(Clone, Debug, PartialEq)]
998pub struct RoamRequest {
999    pub selected_bss: fidl_fuchsia_wlan_common__common::BssDescription,
1000}
1001
1002impl fidl::Persistable for RoamRequest {}
1003
1004/// Result of a fullmac-initiated roam attempt.
1005#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1006pub struct RoamResultIndication {
1007    pub selected_bssid: [u8; 6],
1008    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
1009    /// Whether the original BSS association has been maintained through the roam attempt.
1010    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1011    /// success then this field must be set to false; a roam failure typically incurs disassociation
1012    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1013    pub original_association_maintained: bool,
1014    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1015    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1016    /// This allows higher layers to decide how to clean up connection state after a failed roam
1017    /// attempt.
1018    pub target_bss_authenticated: bool,
1019    pub association_id: u16,
1020    pub association_ies: Vec<u8>,
1021}
1022
1023impl fidl::Persistable for RoamResultIndication {}
1024
1025/// In-progress fullmac-initiated roam attempt details.
1026#[derive(Clone, Debug, PartialEq)]
1027pub struct RoamStartIndication {
1028    pub selected_bssid: [u8; 6],
1029    pub selected_bss: fidl_fuchsia_wlan_common__common::BssDescription,
1030    /// Whether the original BSS association has been maintained at the start of a roam attempt.
1031    /// 802.11 dictates that a STA can only be associated with a single BSS, so a roam attempt
1032    /// typically incurs disassociation at the start of the roam attempt. However, 802.11 also
1033    /// provides a mechanism (i.e. Fast BSS Transition) that allows a device to maintain
1034    /// association with the original BSS while establishing authentication with the target BSS, in
1035    /// order to avoid losing the original association if authentication with the target BSS fails.
1036    pub original_association_maintained: bool,
1037}
1038
1039impl fidl::Persistable for RoamStartIndication {}
1040
1041#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1042pub struct SaeFrame {
1043    pub peer_sta_address: [u8; 6],
1044    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
1045    pub seq_num: u16,
1046    pub sae_fields: Vec<u8>,
1047}
1048
1049impl fidl::Persistable for SaeFrame {}
1050
1051#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1052#[repr(C)]
1053pub struct SaeHandshakeIndication {
1054    pub peer_sta_address: [u8; 6],
1055}
1056
1057impl fidl::Persistable for SaeHandshakeIndication {}
1058
1059#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1060pub struct SaeHandshakeResponse {
1061    pub peer_sta_address: [u8; 6],
1062    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
1063}
1064
1065impl fidl::Persistable for SaeHandshakeResponse {}
1066
1067#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1068pub struct ScanEnd {
1069    pub txn_id: u64,
1070    pub code: ScanResultCode,
1071}
1072
1073impl fidl::Persistable for ScanEnd {}
1074
1075#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1076pub struct ScanRequest {
1077    pub txn_id: u64,
1078    pub scan_type: ScanTypes,
1079    /// List of channels to scan on. An empty list of channels will cause a
1080    /// scan request to immediately return a ScanEnd with code INVALID_ARGS.
1081    ///
1082    /// Invalid channel numbers will be silently ignored. The validity of a channel
1083    /// number depends on the current regulatory region, and MLME does not control
1084    /// or know this setting.
1085    pub channel_list: Vec<u8>,
1086    /// List of SSIDs to scan for. An empty list of ssids is the same as specifying
1087    /// a list containing only the wildcard SSID.
1088    ///
1089    /// There is no limit on the number of SSIDs specified. A large number of
1090    /// SSIDs may result in extended scan times because of hardware limitations on
1091    /// the number of SSIDs permitted per scan request and the technical limitation
1092    /// in IEEE 802.11-2016 that limits the number of SSIDs in a single Probe Request
1093    /// frame to ieee80211.SSID_LIST_MAX SSIDs.
1094    pub ssid_list: Vec<Vec<u8>>,
1095    pub probe_delay: u32,
1096    pub min_channel_time: u32,
1097    pub max_channel_time: u32,
1098}
1099
1100impl fidl::Persistable for ScanRequest {}
1101
1102#[derive(Clone, Debug, PartialEq)]
1103pub struct ScanResult {
1104    pub txn_id: u64,
1105    pub timestamp_nanos: i64,
1106    pub bss: fidl_fuchsia_wlan_common__common::BssDescription,
1107}
1108
1109impl fidl::Persistable for ScanResult {}
1110
1111#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1112pub struct SetControlledPortRequest {
1113    pub peer_sta_address: [u8; 6],
1114    pub state: ControlledPortState,
1115}
1116
1117impl fidl::Persistable for SetControlledPortRequest {}
1118
1119#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1120pub struct SetKeyDescriptor {
1121    pub key: Vec<u8>,
1122    pub key_id: u16,
1123    pub key_type: KeyType,
1124    pub address: [u8; 6],
1125    pub rsc: u64,
1126    pub cipher_suite_oui: [u8; 3],
1127    pub cipher_suite_type: fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
1128}
1129
1130impl fidl::Persistable for SetKeyDescriptor {}
1131
1132#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1133#[repr(C)]
1134pub struct SetKeyResult {
1135    pub key_id: u16,
1136    pub status: i32,
1137}
1138
1139impl fidl::Persistable for SetKeyResult {}
1140
1141#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1142pub struct SetKeysConfirm {
1143    pub results: Vec<SetKeyResult>,
1144}
1145
1146impl fidl::Persistable for SetKeysConfirm {}
1147
1148#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1149pub struct SetKeysRequest {
1150    pub keylist: Vec<SetKeyDescriptor>,
1151}
1152
1153impl fidl::Persistable for SetKeysRequest {}
1154
1155#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1156pub struct StartCaptureFramesRequest {
1157    pub mgmt_frame_flags: MgmtFrameCaptureFlags,
1158}
1159
1160impl fidl::Persistable for StartCaptureFramesRequest {}
1161
1162#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1163pub struct StartCaptureFramesResponse {
1164    pub status: i32,
1165    pub supported_mgmt_frames: MgmtFrameCaptureFlags,
1166}
1167
1168impl fidl::Persistable for StartCaptureFramesResponse {}
1169
1170#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1171pub struct StartConfirm {
1172    pub result_code: StartResultCode,
1173}
1174
1175impl fidl::Persistable for StartConfirm {}
1176
1177#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1178pub struct StartRequest {
1179    pub ssid: Vec<u8>,
1180    pub bss_type: fidl_fuchsia_wlan_common__common::BssType,
1181    pub beacon_period: u16,
1182    pub dtim_period: u8,
1183    pub channel: u8,
1184    pub capability_info: u16,
1185    pub rates: Vec<u8>,
1186    pub country: Country,
1187    pub mesh_id: Vec<u8>,
1188    pub rsne: Option<Vec<u8>>,
1189    pub phy: fidl_fuchsia_wlan_common__common::WlanPhyType,
1190    pub channel_bandwidth: fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth,
1191}
1192
1193impl fidl::Persistable for StartRequest {}
1194
1195#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1196pub struct StopConfirm {
1197    pub result_code: StopResultCode,
1198}
1199
1200impl fidl::Persistable for StopConfirm {}
1201
1202#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1203pub struct StopRequest {
1204    pub ssid: Vec<u8>,
1205}
1206
1207impl fidl::Persistable for StopRequest {}
1208
1209#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1210#[repr(C)]
1211pub struct WmmParameter {
1212    pub bytes: [u8; 18],
1213}
1214
1215impl fidl::Persistable for WmmParameter {}
1216
1217#[derive(Clone, Debug, PartialEq)]
1218pub enum GetIfaceHistogramStatsResponse {
1219    Stats(fidl_fuchsia_wlan_stats__common::IfaceHistogramStats),
1220    ErrorStatus(i32),
1221}
1222
1223impl GetIfaceHistogramStatsResponse {
1224    #[inline]
1225    pub fn ordinal(&self) -> u64 {
1226        match *self {
1227            Self::Stats(_) => 1,
1228            Self::ErrorStatus(_) => 2,
1229        }
1230    }
1231}
1232
1233impl fidl::Persistable for GetIfaceHistogramStatsResponse {}
1234
1235#[derive(Clone, Debug, PartialEq)]
1236pub enum GetIfaceStatsResponse {
1237    Stats(fidl_fuchsia_wlan_stats__common::IfaceStats),
1238    ErrorStatus(i32),
1239}
1240
1241impl GetIfaceStatsResponse {
1242    #[inline]
1243    pub fn ordinal(&self) -> u64 {
1244        match *self {
1245            Self::Stats(_) => 1,
1246            Self::ErrorStatus(_) => 2,
1247        }
1248    }
1249}
1250
1251impl fidl::Persistable for GetIfaceStatsResponse {}
1252
1253pub mod connector_ordinals {
1254    pub const CONNECT: u64 = 0x42131859717af962;
1255}
1256
1257pub mod mlme_ordinals {
1258    pub const START_SCAN: u64 = 0x342cc5ec6a957479;
1259    pub const ON_SCAN_RESULT: u64 = 0x681af7466a75074d;
1260    pub const ON_SCAN_END: u64 = 0x7f2702d253e7ca59;
1261    pub const CONNECT_REQ: u64 = 0x31153dc85f8f64c;
1262    pub const CONNECT_CONF: u64 = 0x77b27623279b981e;
1263    pub const RECONNECT_REQ: u64 = 0x74e0f1bd758b6b78;
1264    pub const ROAM_REQ: u64 = 0x3ba163eadf7dba45;
1265    pub const ROAM_CONF: u64 = 0x3f608034faa054bc;
1266    pub const ROAM_START_IND: u64 = 0x270a1ec78672d094;
1267    pub const ROAM_RESULT_IND: u64 = 0x26d074364fc84865;
1268    pub const AUTHENTICATE_IND: u64 = 0x460f49ae891adbe9;
1269    pub const AUTHENTICATE_RESP: u64 = 0x26108aade2fdd2f4;
1270    pub const DEAUTHENTICATE_REQ: u64 = 0x228983b200de5d12;
1271    pub const DEAUTHENTICATE_CONF: u64 = 0x3b44debc21b88c8c;
1272    pub const DEAUTHENTICATE_IND: u64 = 0x7ee0889b326da1d7;
1273    pub const ASSOCIATE_IND: u64 = 0x6a86f20e3063dd63;
1274    pub const ASSOCIATE_RESP: u64 = 0x70244dbd652ed6d9;
1275    pub const DISASSOCIATE_REQ: u64 = 0x5765807f1387d764;
1276    pub const DISASSOCIATE_CONF: u64 = 0x61345fbce732a28d;
1277    pub const DISASSOCIATE_IND: u64 = 0x77ac0ebf387c1f35;
1278    pub const RESET_REQ: u64 = 0x780b98c58a286b9f;
1279    pub const START_REQ: u64 = 0x5d95885f8053654;
1280    pub const START_CONF: u64 = 0x15ea6cdf3b8382b3;
1281    pub const STOP_REQ: u64 = 0x27b9a2ab04a2c79f;
1282    pub const STOP_CONF: u64 = 0x50b426ef4a84a2df;
1283    pub const SET_KEYS_REQ: u64 = 0x6b30a07fd3a11a79;
1284    pub const SET_KEYS_CONF: u64 = 0x5bafb3a8d4039380;
1285    pub const DELETE_KEYS_REQ: u64 = 0x1e3524d20d190c8f;
1286    pub const EAPOL_REQ: u64 = 0xc3c096924704d4;
1287    pub const EAPOL_CONF: u64 = 0x6ffa21f4ee73ce64;
1288    pub const SIGNAL_REPORT: u64 = 0x48f32a876aa53d8f;
1289    pub const EAPOL_IND: u64 = 0x7038dca46a3142fc;
1290    pub const SET_CONTROLLED_PORT: u64 = 0x4e47065668890c8d;
1291    pub const QUERY_DEVICE_INFO: u64 = 0x6ee3e7f63f2b7bc0;
1292    pub const QUERY_TELEMETRY_SUPPORT: u64 = 0x1598879b70332c99;
1293    pub const GET_IFACE_STATS: u64 = 0xede1a8342d1b211;
1294    pub const GET_IFACE_HISTOGRAM_STATS: u64 = 0x1979c9d3449f8675;
1295    pub const GET_SIGNAL_REPORT: u64 = 0x7e47e7ebe92acec9;
1296    pub const LIST_MINSTREL_PEERS: u64 = 0x4ac5d1e66fe1ffd5;
1297    pub const GET_MINSTREL_STATS: u64 = 0x2f688b1245323f4b;
1298    pub const START_CAPTURE_FRAMES: u64 = 0x23b369ed5749ee69;
1299    pub const STOP_CAPTURE_FRAMES: u64 = 0x2f1aebbc68bf7c54;
1300    pub const RELAY_CAPTURED_FRAME: u64 = 0x6f00a6f3cff9b1f5;
1301    pub const ON_CHANNEL_SWITCHED: u64 = 0x581750594e4c0c1;
1302    pub const ON_PMK_AVAILABLE: u64 = 0x1314fc2c79643f90;
1303    pub const ON_SAE_HANDSHAKE_IND: u64 = 0x6308b10e18986d7e;
1304    pub const SAE_HANDSHAKE_RESP: u64 = 0x28477bd2f7a5ab0c;
1305    pub const SAE_FRAME_TX: u64 = 0x7700c0d536733d8c;
1306    pub const ON_SAE_FRAME_RX: u64 = 0x4ebf51c86ef5f3cd;
1307    pub const WMM_STATUS_REQ: u64 = 0xef4851f6088fede;
1308    pub const ON_WMM_STATUS_RESP: u64 = 0x53f056b432e7b5cb;
1309    pub const FINALIZE_ASSOCIATION_REQ: u64 = 0x7aea59787cfd385a;
1310}
1311
1312mod internal {
1313    use super::*;
1314    unsafe impl fidl::encoding::TypeMarker for MgmtFrameCaptureFlags {
1315        type Owned = Self;
1316
1317        #[inline(always)]
1318        fn inline_align(_context: fidl::encoding::Context) -> usize {
1319            4
1320        }
1321
1322        #[inline(always)]
1323        fn inline_size(_context: fidl::encoding::Context) -> usize {
1324            4
1325        }
1326    }
1327
1328    impl fidl::encoding::ValueTypeMarker for MgmtFrameCaptureFlags {
1329        type Borrowed<'a> = Self;
1330        #[inline(always)]
1331        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1332            *value
1333        }
1334    }
1335
1336    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1337        for MgmtFrameCaptureFlags
1338    {
1339        #[inline]
1340        unsafe fn encode(
1341            self,
1342            encoder: &mut fidl::encoding::Encoder<'_, D>,
1343            offset: usize,
1344            _depth: fidl::encoding::Depth,
1345        ) -> fidl::Result<()> {
1346            encoder.debug_check_bounds::<Self>(offset);
1347            if self.bits() & Self::all().bits() != self.bits() {
1348                return Err(fidl::Error::InvalidBitsValue);
1349            }
1350            encoder.write_num(self.bits(), offset);
1351            Ok(())
1352        }
1353    }
1354
1355    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MgmtFrameCaptureFlags {
1356        #[inline(always)]
1357        fn new_empty() -> Self {
1358            Self::empty()
1359        }
1360
1361        #[inline]
1362        unsafe fn decode(
1363            &mut self,
1364            decoder: &mut fidl::encoding::Decoder<'_, D>,
1365            offset: usize,
1366            _depth: fidl::encoding::Depth,
1367        ) -> fidl::Result<()> {
1368            decoder.debug_check_bounds::<Self>(offset);
1369            let prim = decoder.read_num::<u32>(offset);
1370            *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
1371            Ok(())
1372        }
1373    }
1374    unsafe impl fidl::encoding::TypeMarker for AssociateResultCode {
1375        type Owned = Self;
1376
1377        #[inline(always)]
1378        fn inline_align(_context: fidl::encoding::Context) -> usize {
1379            std::mem::align_of::<u32>()
1380        }
1381
1382        #[inline(always)]
1383        fn inline_size(_context: fidl::encoding::Context) -> usize {
1384            std::mem::size_of::<u32>()
1385        }
1386
1387        #[inline(always)]
1388        fn encode_is_copy() -> bool {
1389            true
1390        }
1391
1392        #[inline(always)]
1393        fn decode_is_copy() -> bool {
1394            false
1395        }
1396    }
1397
1398    impl fidl::encoding::ValueTypeMarker for AssociateResultCode {
1399        type Borrowed<'a> = Self;
1400        #[inline(always)]
1401        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1402            *value
1403        }
1404    }
1405
1406    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1407        for AssociateResultCode
1408    {
1409        #[inline]
1410        unsafe fn encode(
1411            self,
1412            encoder: &mut fidl::encoding::Encoder<'_, D>,
1413            offset: usize,
1414            _depth: fidl::encoding::Depth,
1415        ) -> fidl::Result<()> {
1416            encoder.debug_check_bounds::<Self>(offset);
1417            encoder.write_num(self.into_primitive(), offset);
1418            Ok(())
1419        }
1420    }
1421
1422    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateResultCode {
1423        #[inline(always)]
1424        fn new_empty() -> Self {
1425            Self::Success
1426        }
1427
1428        #[inline]
1429        unsafe fn decode(
1430            &mut self,
1431            decoder: &mut fidl::encoding::Decoder<'_, D>,
1432            offset: usize,
1433            _depth: fidl::encoding::Depth,
1434        ) -> fidl::Result<()> {
1435            decoder.debug_check_bounds::<Self>(offset);
1436            let prim = decoder.read_num::<u32>(offset);
1437
1438            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1439            Ok(())
1440        }
1441    }
1442    unsafe impl fidl::encoding::TypeMarker for AuthenticateResultCode {
1443        type Owned = Self;
1444
1445        #[inline(always)]
1446        fn inline_align(_context: fidl::encoding::Context) -> usize {
1447            std::mem::align_of::<u32>()
1448        }
1449
1450        #[inline(always)]
1451        fn inline_size(_context: fidl::encoding::Context) -> usize {
1452            std::mem::size_of::<u32>()
1453        }
1454
1455        #[inline(always)]
1456        fn encode_is_copy() -> bool {
1457            true
1458        }
1459
1460        #[inline(always)]
1461        fn decode_is_copy() -> bool {
1462            false
1463        }
1464    }
1465
1466    impl fidl::encoding::ValueTypeMarker for AuthenticateResultCode {
1467        type Borrowed<'a> = Self;
1468        #[inline(always)]
1469        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1470            *value
1471        }
1472    }
1473
1474    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1475        for AuthenticateResultCode
1476    {
1477        #[inline]
1478        unsafe fn encode(
1479            self,
1480            encoder: &mut fidl::encoding::Encoder<'_, D>,
1481            offset: usize,
1482            _depth: fidl::encoding::Depth,
1483        ) -> fidl::Result<()> {
1484            encoder.debug_check_bounds::<Self>(offset);
1485            encoder.write_num(self.into_primitive(), offset);
1486            Ok(())
1487        }
1488    }
1489
1490    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1491        for AuthenticateResultCode
1492    {
1493        #[inline(always)]
1494        fn new_empty() -> Self {
1495            Self::Success
1496        }
1497
1498        #[inline]
1499        unsafe fn decode(
1500            &mut self,
1501            decoder: &mut fidl::encoding::Decoder<'_, D>,
1502            offset: usize,
1503            _depth: fidl::encoding::Depth,
1504        ) -> fidl::Result<()> {
1505            decoder.debug_check_bounds::<Self>(offset);
1506            let prim = decoder.read_num::<u32>(offset);
1507
1508            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1509            Ok(())
1510        }
1511    }
1512    unsafe impl fidl::encoding::TypeMarker for AuthenticationTypes {
1513        type Owned = Self;
1514
1515        #[inline(always)]
1516        fn inline_align(_context: fidl::encoding::Context) -> usize {
1517            std::mem::align_of::<u32>()
1518        }
1519
1520        #[inline(always)]
1521        fn inline_size(_context: fidl::encoding::Context) -> usize {
1522            std::mem::size_of::<u32>()
1523        }
1524
1525        #[inline(always)]
1526        fn encode_is_copy() -> bool {
1527            true
1528        }
1529
1530        #[inline(always)]
1531        fn decode_is_copy() -> bool {
1532            false
1533        }
1534    }
1535
1536    impl fidl::encoding::ValueTypeMarker for AuthenticationTypes {
1537        type Borrowed<'a> = Self;
1538        #[inline(always)]
1539        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1540            *value
1541        }
1542    }
1543
1544    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1545        for AuthenticationTypes
1546    {
1547        #[inline]
1548        unsafe fn encode(
1549            self,
1550            encoder: &mut fidl::encoding::Encoder<'_, D>,
1551            offset: usize,
1552            _depth: fidl::encoding::Depth,
1553        ) -> fidl::Result<()> {
1554            encoder.debug_check_bounds::<Self>(offset);
1555            encoder.write_num(self.into_primitive(), offset);
1556            Ok(())
1557        }
1558    }
1559
1560    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AuthenticationTypes {
1561        #[inline(always)]
1562        fn new_empty() -> Self {
1563            Self::OpenSystem
1564        }
1565
1566        #[inline]
1567        unsafe fn decode(
1568            &mut self,
1569            decoder: &mut fidl::encoding::Decoder<'_, D>,
1570            offset: usize,
1571            _depth: fidl::encoding::Depth,
1572        ) -> fidl::Result<()> {
1573            decoder.debug_check_bounds::<Self>(offset);
1574            let prim = decoder.read_num::<u32>(offset);
1575
1576            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1577            Ok(())
1578        }
1579    }
1580    unsafe impl fidl::encoding::TypeMarker for ControlledPortState {
1581        type Owned = Self;
1582
1583        #[inline(always)]
1584        fn inline_align(_context: fidl::encoding::Context) -> usize {
1585            std::mem::align_of::<u32>()
1586        }
1587
1588        #[inline(always)]
1589        fn inline_size(_context: fidl::encoding::Context) -> usize {
1590            std::mem::size_of::<u32>()
1591        }
1592
1593        #[inline(always)]
1594        fn encode_is_copy() -> bool {
1595            true
1596        }
1597
1598        #[inline(always)]
1599        fn decode_is_copy() -> bool {
1600            false
1601        }
1602    }
1603
1604    impl fidl::encoding::ValueTypeMarker for ControlledPortState {
1605        type Borrowed<'a> = Self;
1606        #[inline(always)]
1607        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1608            *value
1609        }
1610    }
1611
1612    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1613        for ControlledPortState
1614    {
1615        #[inline]
1616        unsafe fn encode(
1617            self,
1618            encoder: &mut fidl::encoding::Encoder<'_, D>,
1619            offset: usize,
1620            _depth: fidl::encoding::Depth,
1621        ) -> fidl::Result<()> {
1622            encoder.debug_check_bounds::<Self>(offset);
1623            encoder.write_num(self.into_primitive(), offset);
1624            Ok(())
1625        }
1626    }
1627
1628    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlledPortState {
1629        #[inline(always)]
1630        fn new_empty() -> Self {
1631            Self::Closed
1632        }
1633
1634        #[inline]
1635        unsafe fn decode(
1636            &mut self,
1637            decoder: &mut fidl::encoding::Decoder<'_, D>,
1638            offset: usize,
1639            _depth: fidl::encoding::Depth,
1640        ) -> fidl::Result<()> {
1641            decoder.debug_check_bounds::<Self>(offset);
1642            let prim = decoder.read_num::<u32>(offset);
1643
1644            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1645            Ok(())
1646        }
1647    }
1648    unsafe impl fidl::encoding::TypeMarker for EapolResultCode {
1649        type Owned = Self;
1650
1651        #[inline(always)]
1652        fn inline_align(_context: fidl::encoding::Context) -> usize {
1653            std::mem::align_of::<u32>()
1654        }
1655
1656        #[inline(always)]
1657        fn inline_size(_context: fidl::encoding::Context) -> usize {
1658            std::mem::size_of::<u32>()
1659        }
1660
1661        #[inline(always)]
1662        fn encode_is_copy() -> bool {
1663            true
1664        }
1665
1666        #[inline(always)]
1667        fn decode_is_copy() -> bool {
1668            false
1669        }
1670    }
1671
1672    impl fidl::encoding::ValueTypeMarker for EapolResultCode {
1673        type Borrowed<'a> = Self;
1674        #[inline(always)]
1675        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1676            *value
1677        }
1678    }
1679
1680    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1681        for EapolResultCode
1682    {
1683        #[inline]
1684        unsafe fn encode(
1685            self,
1686            encoder: &mut fidl::encoding::Encoder<'_, D>,
1687            offset: usize,
1688            _depth: fidl::encoding::Depth,
1689        ) -> fidl::Result<()> {
1690            encoder.debug_check_bounds::<Self>(offset);
1691            encoder.write_num(self.into_primitive(), offset);
1692            Ok(())
1693        }
1694    }
1695
1696    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolResultCode {
1697        #[inline(always)]
1698        fn new_empty() -> Self {
1699            Self::Success
1700        }
1701
1702        #[inline]
1703        unsafe fn decode(
1704            &mut self,
1705            decoder: &mut fidl::encoding::Decoder<'_, D>,
1706            offset: usize,
1707            _depth: fidl::encoding::Depth,
1708        ) -> fidl::Result<()> {
1709            decoder.debug_check_bounds::<Self>(offset);
1710            let prim = decoder.read_num::<u32>(offset);
1711
1712            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1713            Ok(())
1714        }
1715    }
1716    unsafe impl fidl::encoding::TypeMarker for KeyType {
1717        type Owned = Self;
1718
1719        #[inline(always)]
1720        fn inline_align(_context: fidl::encoding::Context) -> usize {
1721            std::mem::align_of::<u32>()
1722        }
1723
1724        #[inline(always)]
1725        fn inline_size(_context: fidl::encoding::Context) -> usize {
1726            std::mem::size_of::<u32>()
1727        }
1728
1729        #[inline(always)]
1730        fn encode_is_copy() -> bool {
1731            true
1732        }
1733
1734        #[inline(always)]
1735        fn decode_is_copy() -> bool {
1736            false
1737        }
1738    }
1739
1740    impl fidl::encoding::ValueTypeMarker for KeyType {
1741        type Borrowed<'a> = Self;
1742        #[inline(always)]
1743        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1744            *value
1745        }
1746    }
1747
1748    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for KeyType {
1749        #[inline]
1750        unsafe fn encode(
1751            self,
1752            encoder: &mut fidl::encoding::Encoder<'_, D>,
1753            offset: usize,
1754            _depth: fidl::encoding::Depth,
1755        ) -> fidl::Result<()> {
1756            encoder.debug_check_bounds::<Self>(offset);
1757            encoder.write_num(self.into_primitive(), offset);
1758            Ok(())
1759        }
1760    }
1761
1762    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for KeyType {
1763        #[inline(always)]
1764        fn new_empty() -> Self {
1765            Self::Group
1766        }
1767
1768        #[inline]
1769        unsafe fn decode(
1770            &mut self,
1771            decoder: &mut fidl::encoding::Decoder<'_, D>,
1772            offset: usize,
1773            _depth: fidl::encoding::Depth,
1774        ) -> fidl::Result<()> {
1775            decoder.debug_check_bounds::<Self>(offset);
1776            let prim = decoder.read_num::<u32>(offset);
1777
1778            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1779            Ok(())
1780        }
1781    }
1782    unsafe impl fidl::encoding::TypeMarker for ScanResultCode {
1783        type Owned = Self;
1784
1785        #[inline(always)]
1786        fn inline_align(_context: fidl::encoding::Context) -> usize {
1787            std::mem::align_of::<u32>()
1788        }
1789
1790        #[inline(always)]
1791        fn inline_size(_context: fidl::encoding::Context) -> usize {
1792            std::mem::size_of::<u32>()
1793        }
1794
1795        #[inline(always)]
1796        fn encode_is_copy() -> bool {
1797            true
1798        }
1799
1800        #[inline(always)]
1801        fn decode_is_copy() -> bool {
1802            false
1803        }
1804    }
1805
1806    impl fidl::encoding::ValueTypeMarker for ScanResultCode {
1807        type Borrowed<'a> = Self;
1808        #[inline(always)]
1809        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1810            *value
1811        }
1812    }
1813
1814    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanResultCode {
1815        #[inline]
1816        unsafe fn encode(
1817            self,
1818            encoder: &mut fidl::encoding::Encoder<'_, D>,
1819            offset: usize,
1820            _depth: fidl::encoding::Depth,
1821        ) -> fidl::Result<()> {
1822            encoder.debug_check_bounds::<Self>(offset);
1823            encoder.write_num(self.into_primitive(), offset);
1824            Ok(())
1825        }
1826    }
1827
1828    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanResultCode {
1829        #[inline(always)]
1830        fn new_empty() -> Self {
1831            Self::Success
1832        }
1833
1834        #[inline]
1835        unsafe fn decode(
1836            &mut self,
1837            decoder: &mut fidl::encoding::Decoder<'_, D>,
1838            offset: usize,
1839            _depth: fidl::encoding::Depth,
1840        ) -> fidl::Result<()> {
1841            decoder.debug_check_bounds::<Self>(offset);
1842            let prim = decoder.read_num::<u32>(offset);
1843
1844            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1845            Ok(())
1846        }
1847    }
1848    unsafe impl fidl::encoding::TypeMarker for ScanTypes {
1849        type Owned = Self;
1850
1851        #[inline(always)]
1852        fn inline_align(_context: fidl::encoding::Context) -> usize {
1853            std::mem::align_of::<u32>()
1854        }
1855
1856        #[inline(always)]
1857        fn inline_size(_context: fidl::encoding::Context) -> usize {
1858            std::mem::size_of::<u32>()
1859        }
1860
1861        #[inline(always)]
1862        fn encode_is_copy() -> bool {
1863            true
1864        }
1865
1866        #[inline(always)]
1867        fn decode_is_copy() -> bool {
1868            false
1869        }
1870    }
1871
1872    impl fidl::encoding::ValueTypeMarker for ScanTypes {
1873        type Borrowed<'a> = Self;
1874        #[inline(always)]
1875        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1876            *value
1877        }
1878    }
1879
1880    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanTypes {
1881        #[inline]
1882        unsafe fn encode(
1883            self,
1884            encoder: &mut fidl::encoding::Encoder<'_, D>,
1885            offset: usize,
1886            _depth: fidl::encoding::Depth,
1887        ) -> fidl::Result<()> {
1888            encoder.debug_check_bounds::<Self>(offset);
1889            encoder.write_num(self.into_primitive(), offset);
1890            Ok(())
1891        }
1892    }
1893
1894    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanTypes {
1895        #[inline(always)]
1896        fn new_empty() -> Self {
1897            Self::Active
1898        }
1899
1900        #[inline]
1901        unsafe fn decode(
1902            &mut self,
1903            decoder: &mut fidl::encoding::Decoder<'_, D>,
1904            offset: usize,
1905            _depth: fidl::encoding::Depth,
1906        ) -> fidl::Result<()> {
1907            decoder.debug_check_bounds::<Self>(offset);
1908            let prim = decoder.read_num::<u32>(offset);
1909
1910            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1911            Ok(())
1912        }
1913    }
1914    unsafe impl fidl::encoding::TypeMarker for StartResultCode {
1915        type Owned = Self;
1916
1917        #[inline(always)]
1918        fn inline_align(_context: fidl::encoding::Context) -> usize {
1919            std::mem::align_of::<u32>()
1920        }
1921
1922        #[inline(always)]
1923        fn inline_size(_context: fidl::encoding::Context) -> usize {
1924            std::mem::size_of::<u32>()
1925        }
1926
1927        #[inline(always)]
1928        fn encode_is_copy() -> bool {
1929            true
1930        }
1931
1932        #[inline(always)]
1933        fn decode_is_copy() -> bool {
1934            false
1935        }
1936    }
1937
1938    impl fidl::encoding::ValueTypeMarker for StartResultCode {
1939        type Borrowed<'a> = Self;
1940        #[inline(always)]
1941        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1942            *value
1943        }
1944    }
1945
1946    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1947        for StartResultCode
1948    {
1949        #[inline]
1950        unsafe fn encode(
1951            self,
1952            encoder: &mut fidl::encoding::Encoder<'_, D>,
1953            offset: usize,
1954            _depth: fidl::encoding::Depth,
1955        ) -> fidl::Result<()> {
1956            encoder.debug_check_bounds::<Self>(offset);
1957            encoder.write_num(self.into_primitive(), offset);
1958            Ok(())
1959        }
1960    }
1961
1962    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartResultCode {
1963        #[inline(always)]
1964        fn new_empty() -> Self {
1965            Self::Success
1966        }
1967
1968        #[inline]
1969        unsafe fn decode(
1970            &mut self,
1971            decoder: &mut fidl::encoding::Decoder<'_, D>,
1972            offset: usize,
1973            _depth: fidl::encoding::Depth,
1974        ) -> fidl::Result<()> {
1975            decoder.debug_check_bounds::<Self>(offset);
1976            let prim = decoder.read_num::<u32>(offset);
1977
1978            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1979            Ok(())
1980        }
1981    }
1982    unsafe impl fidl::encoding::TypeMarker for StopResultCode {
1983        type Owned = Self;
1984
1985        #[inline(always)]
1986        fn inline_align(_context: fidl::encoding::Context) -> usize {
1987            std::mem::align_of::<u32>()
1988        }
1989
1990        #[inline(always)]
1991        fn inline_size(_context: fidl::encoding::Context) -> usize {
1992            std::mem::size_of::<u32>()
1993        }
1994
1995        #[inline(always)]
1996        fn encode_is_copy() -> bool {
1997            true
1998        }
1999
2000        #[inline(always)]
2001        fn decode_is_copy() -> bool {
2002            false
2003        }
2004    }
2005
2006    impl fidl::encoding::ValueTypeMarker for StopResultCode {
2007        type Borrowed<'a> = Self;
2008        #[inline(always)]
2009        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2010            *value
2011        }
2012    }
2013
2014    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StopResultCode {
2015        #[inline]
2016        unsafe fn encode(
2017            self,
2018            encoder: &mut fidl::encoding::Encoder<'_, D>,
2019            offset: usize,
2020            _depth: fidl::encoding::Depth,
2021        ) -> fidl::Result<()> {
2022            encoder.debug_check_bounds::<Self>(offset);
2023            encoder.write_num(self.into_primitive(), offset);
2024            Ok(())
2025        }
2026    }
2027
2028    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopResultCode {
2029        #[inline(always)]
2030        fn new_empty() -> Self {
2031            Self::Success
2032        }
2033
2034        #[inline]
2035        unsafe fn decode(
2036            &mut self,
2037            decoder: &mut fidl::encoding::Decoder<'_, D>,
2038            offset: usize,
2039            _depth: fidl::encoding::Depth,
2040        ) -> fidl::Result<()> {
2041            decoder.debug_check_bounds::<Self>(offset);
2042            let prim = decoder.read_num::<u32>(offset);
2043
2044            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2045            Ok(())
2046        }
2047    }
2048
2049    impl fidl::encoding::ValueTypeMarker for AssociateIndication {
2050        type Borrowed<'a> = &'a Self;
2051        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2052            value
2053        }
2054    }
2055
2056    unsafe impl fidl::encoding::TypeMarker for AssociateIndication {
2057        type Owned = Self;
2058
2059        #[inline(always)]
2060        fn inline_align(_context: fidl::encoding::Context) -> usize {
2061            8
2062        }
2063
2064        #[inline(always)]
2065        fn inline_size(_context: fidl::encoding::Context) -> usize {
2066            64
2067        }
2068    }
2069
2070    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AssociateIndication, D>
2071        for &AssociateIndication
2072    {
2073        #[inline]
2074        unsafe fn encode(
2075            self,
2076            encoder: &mut fidl::encoding::Encoder<'_, D>,
2077            offset: usize,
2078            _depth: fidl::encoding::Depth,
2079        ) -> fidl::Result<()> {
2080            encoder.debug_check_bounds::<AssociateIndication>(offset);
2081            // Delegate to tuple encoding.
2082            fidl::encoding::Encode::<AssociateIndication, D>::encode(
2083                (
2084                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
2085                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
2086                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.listen_interval),
2087                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid),
2088                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
2089                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>> as fidl::encoding::ValueTypeMarker>::borrow(&self.rsne),
2090                ),
2091                encoder, offset, _depth
2092            )
2093        }
2094    }
2095    unsafe impl<
2096        D: fidl::encoding::ResourceDialect,
2097        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2098        T1: fidl::encoding::Encode<u16, D>,
2099        T2: fidl::encoding::Encode<u16, D>,
2100        T3: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>, D>,
2101        T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
2102        T5: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>, D>,
2103    > fidl::encoding::Encode<AssociateIndication, D> for (T0, T1, T2, T3, T4, T5)
2104    {
2105        #[inline]
2106        unsafe fn encode(
2107            self,
2108            encoder: &mut fidl::encoding::Encoder<'_, D>,
2109            offset: usize,
2110            depth: fidl::encoding::Depth,
2111        ) -> fidl::Result<()> {
2112            encoder.debug_check_bounds::<AssociateIndication>(offset);
2113            // Zero out padding regions. There's no need to apply masks
2114            // because the unmasked parts will be overwritten by fields.
2115            unsafe {
2116                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2117                (ptr as *mut u64).write_unaligned(0);
2118            }
2119            // Write the fields.
2120            self.0.encode(encoder, offset + 0, depth)?;
2121            self.1.encode(encoder, offset + 6, depth)?;
2122            self.2.encode(encoder, offset + 8, depth)?;
2123            self.3.encode(encoder, offset + 16, depth)?;
2124            self.4.encode(encoder, offset + 32, depth)?;
2125            self.5.encode(encoder, offset + 48, depth)?;
2126            Ok(())
2127        }
2128    }
2129
2130    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateIndication {
2131        #[inline(always)]
2132        fn new_empty() -> Self {
2133            Self {
2134                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2135                capability_info: fidl::new_empty!(u16, D),
2136                listen_interval: fidl::new_empty!(u16, D),
2137                ssid: fidl::new_empty!(fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>, D),
2138                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
2139                rsne: fidl::new_empty!(
2140                    fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
2141                    D
2142                ),
2143            }
2144        }
2145
2146        #[inline]
2147        unsafe fn decode(
2148            &mut self,
2149            decoder: &mut fidl::encoding::Decoder<'_, D>,
2150            offset: usize,
2151            _depth: fidl::encoding::Depth,
2152        ) -> fidl::Result<()> {
2153            decoder.debug_check_bounds::<Self>(offset);
2154            // Verify that padding bytes are zero.
2155            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2156            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2157            let mask = 0xffffffffffff0000u64;
2158            let maskedval = padval & mask;
2159            if maskedval != 0 {
2160                return Err(fidl::Error::NonZeroPadding {
2161                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2162                });
2163            }
2164            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2165            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 6, _depth)?;
2166            fidl::decode!(u16, D, &mut self.listen_interval, decoder, offset + 8, _depth)?;
2167            fidl::decode!(
2168                fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>,
2169                D,
2170                &mut self.ssid,
2171                decoder,
2172                offset + 16,
2173                _depth
2174            )?;
2175            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 32, _depth)?;
2176            fidl::decode!(
2177                fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
2178                D,
2179                &mut self.rsne,
2180                decoder,
2181                offset + 48,
2182                _depth
2183            )?;
2184            Ok(())
2185        }
2186    }
2187
2188    impl fidl::encoding::ValueTypeMarker for AssociateResponse {
2189        type Borrowed<'a> = &'a Self;
2190        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2191            value
2192        }
2193    }
2194
2195    unsafe impl fidl::encoding::TypeMarker for AssociateResponse {
2196        type Owned = Self;
2197
2198        #[inline(always)]
2199        fn inline_align(_context: fidl::encoding::Context) -> usize {
2200            8
2201        }
2202
2203        #[inline(always)]
2204        fn inline_size(_context: fidl::encoding::Context) -> usize {
2205            32
2206        }
2207    }
2208
2209    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AssociateResponse, D>
2210        for &AssociateResponse
2211    {
2212        #[inline]
2213        unsafe fn encode(
2214            self,
2215            encoder: &mut fidl::encoding::Encoder<'_, D>,
2216            offset: usize,
2217            _depth: fidl::encoding::Depth,
2218        ) -> fidl::Result<()> {
2219            encoder.debug_check_bounds::<AssociateResponse>(offset);
2220            // Delegate to tuple encoding.
2221            fidl::encoding::Encode::<AssociateResponse, D>::encode(
2222                (
2223                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2224                        &self.peer_sta_address,
2225                    ),
2226                    <AssociateResultCode as fidl::encoding::ValueTypeMarker>::borrow(
2227                        &self.result_code,
2228                    ),
2229                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
2230                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
2231                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(
2232                        &self.rates,
2233                    ),
2234                ),
2235                encoder,
2236                offset,
2237                _depth,
2238            )
2239        }
2240    }
2241    unsafe impl<
2242        D: fidl::encoding::ResourceDialect,
2243        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2244        T1: fidl::encoding::Encode<AssociateResultCode, D>,
2245        T2: fidl::encoding::Encode<u16, D>,
2246        T3: fidl::encoding::Encode<u16, D>,
2247        T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
2248    > fidl::encoding::Encode<AssociateResponse, D> for (T0, T1, T2, T3, T4)
2249    {
2250        #[inline]
2251        unsafe fn encode(
2252            self,
2253            encoder: &mut fidl::encoding::Encoder<'_, D>,
2254            offset: usize,
2255            depth: fidl::encoding::Depth,
2256        ) -> fidl::Result<()> {
2257            encoder.debug_check_bounds::<AssociateResponse>(offset);
2258            // Zero out padding regions. There's no need to apply masks
2259            // because the unmasked parts will be overwritten by fields.
2260            unsafe {
2261                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2262                (ptr as *mut u64).write_unaligned(0);
2263            }
2264            // Write the fields.
2265            self.0.encode(encoder, offset + 0, depth)?;
2266            self.1.encode(encoder, offset + 8, depth)?;
2267            self.2.encode(encoder, offset + 12, depth)?;
2268            self.3.encode(encoder, offset + 14, depth)?;
2269            self.4.encode(encoder, offset + 16, depth)?;
2270            Ok(())
2271        }
2272    }
2273
2274    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateResponse {
2275        #[inline(always)]
2276        fn new_empty() -> Self {
2277            Self {
2278                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2279                result_code: fidl::new_empty!(AssociateResultCode, D),
2280                association_id: fidl::new_empty!(u16, D),
2281                capability_info: fidl::new_empty!(u16, D),
2282                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
2283            }
2284        }
2285
2286        #[inline]
2287        unsafe fn decode(
2288            &mut self,
2289            decoder: &mut fidl::encoding::Decoder<'_, D>,
2290            offset: usize,
2291            _depth: fidl::encoding::Depth,
2292        ) -> fidl::Result<()> {
2293            decoder.debug_check_bounds::<Self>(offset);
2294            // Verify that padding bytes are zero.
2295            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2296            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2297            let mask = 0xffff000000000000u64;
2298            let maskedval = padval & mask;
2299            if maskedval != 0 {
2300                return Err(fidl::Error::NonZeroPadding {
2301                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2302                });
2303            }
2304            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2305            fidl::decode!(
2306                AssociateResultCode,
2307                D,
2308                &mut self.result_code,
2309                decoder,
2310                offset + 8,
2311                _depth
2312            )?;
2313            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 12, _depth)?;
2314            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 14, _depth)?;
2315            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 16, _depth)?;
2316            Ok(())
2317        }
2318    }
2319
2320    impl fidl::encoding::ValueTypeMarker for AuthenticateIndication {
2321        type Borrowed<'a> = &'a Self;
2322        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2323            value
2324        }
2325    }
2326
2327    unsafe impl fidl::encoding::TypeMarker for AuthenticateIndication {
2328        type Owned = Self;
2329
2330        #[inline(always)]
2331        fn inline_align(_context: fidl::encoding::Context) -> usize {
2332            4
2333        }
2334
2335        #[inline(always)]
2336        fn inline_size(_context: fidl::encoding::Context) -> usize {
2337            12
2338        }
2339    }
2340
2341    unsafe impl<D: fidl::encoding::ResourceDialect>
2342        fidl::encoding::Encode<AuthenticateIndication, D> for &AuthenticateIndication
2343    {
2344        #[inline]
2345        unsafe fn encode(
2346            self,
2347            encoder: &mut fidl::encoding::Encoder<'_, D>,
2348            offset: usize,
2349            _depth: fidl::encoding::Depth,
2350        ) -> fidl::Result<()> {
2351            encoder.debug_check_bounds::<AuthenticateIndication>(offset);
2352            // Delegate to tuple encoding.
2353            fidl::encoding::Encode::<AuthenticateIndication, D>::encode(
2354                (
2355                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2356                        &self.peer_sta_address,
2357                    ),
2358                    <AuthenticationTypes as fidl::encoding::ValueTypeMarker>::borrow(
2359                        &self.auth_type,
2360                    ),
2361                ),
2362                encoder,
2363                offset,
2364                _depth,
2365            )
2366        }
2367    }
2368    unsafe impl<
2369        D: fidl::encoding::ResourceDialect,
2370        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2371        T1: fidl::encoding::Encode<AuthenticationTypes, D>,
2372    > fidl::encoding::Encode<AuthenticateIndication, D> for (T0, T1)
2373    {
2374        #[inline]
2375        unsafe fn encode(
2376            self,
2377            encoder: &mut fidl::encoding::Encoder<'_, D>,
2378            offset: usize,
2379            depth: fidl::encoding::Depth,
2380        ) -> fidl::Result<()> {
2381            encoder.debug_check_bounds::<AuthenticateIndication>(offset);
2382            // Zero out padding regions. There's no need to apply masks
2383            // because the unmasked parts will be overwritten by fields.
2384            unsafe {
2385                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
2386                (ptr as *mut u32).write_unaligned(0);
2387            }
2388            // Write the fields.
2389            self.0.encode(encoder, offset + 0, depth)?;
2390            self.1.encode(encoder, offset + 8, depth)?;
2391            Ok(())
2392        }
2393    }
2394
2395    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2396        for AuthenticateIndication
2397    {
2398        #[inline(always)]
2399        fn new_empty() -> Self {
2400            Self {
2401                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2402                auth_type: fidl::new_empty!(AuthenticationTypes, D),
2403            }
2404        }
2405
2406        #[inline]
2407        unsafe fn decode(
2408            &mut self,
2409            decoder: &mut fidl::encoding::Decoder<'_, D>,
2410            offset: usize,
2411            _depth: fidl::encoding::Depth,
2412        ) -> fidl::Result<()> {
2413            decoder.debug_check_bounds::<Self>(offset);
2414            // Verify that padding bytes are zero.
2415            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
2416            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2417            let mask = 0xffff0000u32;
2418            let maskedval = padval & mask;
2419            if maskedval != 0 {
2420                return Err(fidl::Error::NonZeroPadding {
2421                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
2422                });
2423            }
2424            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2425            fidl::decode!(
2426                AuthenticationTypes,
2427                D,
2428                &mut self.auth_type,
2429                decoder,
2430                offset + 8,
2431                _depth
2432            )?;
2433            Ok(())
2434        }
2435    }
2436
2437    impl fidl::encoding::ValueTypeMarker for AuthenticateResponse {
2438        type Borrowed<'a> = &'a Self;
2439        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2440            value
2441        }
2442    }
2443
2444    unsafe impl fidl::encoding::TypeMarker for AuthenticateResponse {
2445        type Owned = Self;
2446
2447        #[inline(always)]
2448        fn inline_align(_context: fidl::encoding::Context) -> usize {
2449            4
2450        }
2451
2452        #[inline(always)]
2453        fn inline_size(_context: fidl::encoding::Context) -> usize {
2454            12
2455        }
2456    }
2457
2458    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AuthenticateResponse, D>
2459        for &AuthenticateResponse
2460    {
2461        #[inline]
2462        unsafe fn encode(
2463            self,
2464            encoder: &mut fidl::encoding::Encoder<'_, D>,
2465            offset: usize,
2466            _depth: fidl::encoding::Depth,
2467        ) -> fidl::Result<()> {
2468            encoder.debug_check_bounds::<AuthenticateResponse>(offset);
2469            // Delegate to tuple encoding.
2470            fidl::encoding::Encode::<AuthenticateResponse, D>::encode(
2471                (
2472                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2473                        &self.peer_sta_address,
2474                    ),
2475                    <AuthenticateResultCode as fidl::encoding::ValueTypeMarker>::borrow(
2476                        &self.result_code,
2477                    ),
2478                ),
2479                encoder,
2480                offset,
2481                _depth,
2482            )
2483        }
2484    }
2485    unsafe impl<
2486        D: fidl::encoding::ResourceDialect,
2487        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2488        T1: fidl::encoding::Encode<AuthenticateResultCode, D>,
2489    > fidl::encoding::Encode<AuthenticateResponse, D> for (T0, T1)
2490    {
2491        #[inline]
2492        unsafe fn encode(
2493            self,
2494            encoder: &mut fidl::encoding::Encoder<'_, D>,
2495            offset: usize,
2496            depth: fidl::encoding::Depth,
2497        ) -> fidl::Result<()> {
2498            encoder.debug_check_bounds::<AuthenticateResponse>(offset);
2499            // Zero out padding regions. There's no need to apply masks
2500            // because the unmasked parts will be overwritten by fields.
2501            unsafe {
2502                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
2503                (ptr as *mut u32).write_unaligned(0);
2504            }
2505            // Write the fields.
2506            self.0.encode(encoder, offset + 0, depth)?;
2507            self.1.encode(encoder, offset + 8, depth)?;
2508            Ok(())
2509        }
2510    }
2511
2512    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AuthenticateResponse {
2513        #[inline(always)]
2514        fn new_empty() -> Self {
2515            Self {
2516                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2517                result_code: fidl::new_empty!(AuthenticateResultCode, D),
2518            }
2519        }
2520
2521        #[inline]
2522        unsafe fn decode(
2523            &mut self,
2524            decoder: &mut fidl::encoding::Decoder<'_, D>,
2525            offset: usize,
2526            _depth: fidl::encoding::Depth,
2527        ) -> fidl::Result<()> {
2528            decoder.debug_check_bounds::<Self>(offset);
2529            // Verify that padding bytes are zero.
2530            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
2531            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2532            let mask = 0xffff0000u32;
2533            let maskedval = padval & mask;
2534            if maskedval != 0 {
2535                return Err(fidl::Error::NonZeroPadding {
2536                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
2537                });
2538            }
2539            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2540            fidl::decode!(
2541                AuthenticateResultCode,
2542                D,
2543                &mut self.result_code,
2544                decoder,
2545                offset + 8,
2546                _depth
2547            )?;
2548            Ok(())
2549        }
2550    }
2551
2552    impl fidl::encoding::ValueTypeMarker for BandCapability {
2553        type Borrowed<'a> = &'a Self;
2554        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2555            value
2556        }
2557    }
2558
2559    unsafe impl fidl::encoding::TypeMarker for BandCapability {
2560        type Owned = Self;
2561
2562        #[inline(always)]
2563        fn inline_align(_context: fidl::encoding::Context) -> usize {
2564            8
2565        }
2566
2567        #[inline(always)]
2568        fn inline_size(_context: fidl::encoding::Context) -> usize {
2569            56
2570        }
2571    }
2572
2573    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandCapability, D>
2574        for &BandCapability
2575    {
2576        #[inline]
2577        unsafe fn encode(
2578            self,
2579            encoder: &mut fidl::encoding::Encoder<'_, D>,
2580            offset: usize,
2581            _depth: fidl::encoding::Depth,
2582        ) -> fidl::Result<()> {
2583            encoder.debug_check_bounds::<BandCapability>(offset);
2584            // Delegate to tuple encoding.
2585            fidl::encoding::Encode::<BandCapability, D>::encode(
2586                (
2587                    <fidl_fuchsia_wlan_ieee80211__common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow(&self.band),
2588                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::ValueTypeMarker>::borrow(&self.basic_rates),
2589                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.ht_cap),
2590                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_cap),
2591                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.operating_channels),
2592                ),
2593                encoder, offset, _depth
2594            )
2595        }
2596    }
2597    unsafe impl<
2598        D: fidl::encoding::ResourceDialect,
2599        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::WlanBand, D>,
2600        T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 12>, D>,
2601        T2: fidl::encoding::Encode<
2602                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
2603                D,
2604            >,
2605        T3: fidl::encoding::Encode<
2606                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
2607                D,
2608            >,
2609        T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 256>, D>,
2610    > fidl::encoding::Encode<BandCapability, D> for (T0, T1, T2, T3, T4)
2611    {
2612        #[inline]
2613        unsafe fn encode(
2614            self,
2615            encoder: &mut fidl::encoding::Encoder<'_, D>,
2616            offset: usize,
2617            depth: fidl::encoding::Depth,
2618        ) -> fidl::Result<()> {
2619            encoder.debug_check_bounds::<BandCapability>(offset);
2620            // Zero out padding regions. There's no need to apply masks
2621            // because the unmasked parts will be overwritten by fields.
2622            unsafe {
2623                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2624                (ptr as *mut u64).write_unaligned(0);
2625            }
2626            // Write the fields.
2627            self.0.encode(encoder, offset + 0, depth)?;
2628            self.1.encode(encoder, offset + 8, depth)?;
2629            self.2.encode(encoder, offset + 24, depth)?;
2630            self.3.encode(encoder, offset + 32, depth)?;
2631            self.4.encode(encoder, offset + 40, depth)?;
2632            Ok(())
2633        }
2634    }
2635
2636    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandCapability {
2637        #[inline(always)]
2638        fn new_empty() -> Self {
2639            Self {
2640                band: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanBand, D),
2641                basic_rates: fidl::new_empty!(fidl::encoding::Vector<u8, 12>, D),
2642                ht_cap: fidl::new_empty!(
2643                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
2644                    D
2645                ),
2646                vht_cap: fidl::new_empty!(
2647                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
2648                    D
2649                ),
2650                operating_channels: fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D),
2651            }
2652        }
2653
2654        #[inline]
2655        unsafe fn decode(
2656            &mut self,
2657            decoder: &mut fidl::encoding::Decoder<'_, D>,
2658            offset: usize,
2659            _depth: fidl::encoding::Depth,
2660        ) -> fidl::Result<()> {
2661            decoder.debug_check_bounds::<Self>(offset);
2662            // Verify that padding bytes are zero.
2663            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2664            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2665            let mask = 0xffffffffffffff00u64;
2666            let maskedval = padval & mask;
2667            if maskedval != 0 {
2668                return Err(fidl::Error::NonZeroPadding {
2669                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2670                });
2671            }
2672            fidl::decode!(
2673                fidl_fuchsia_wlan_ieee80211__common::WlanBand,
2674                D,
2675                &mut self.band,
2676                decoder,
2677                offset + 0,
2678                _depth
2679            )?;
2680            fidl::decode!(fidl::encoding::Vector<u8, 12>, D, &mut self.basic_rates, decoder, offset + 8, _depth)?;
2681            fidl::decode!(
2682                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
2683                D,
2684                &mut self.ht_cap,
2685                decoder,
2686                offset + 24,
2687                _depth
2688            )?;
2689            fidl::decode!(
2690                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
2691                D,
2692                &mut self.vht_cap,
2693                decoder,
2694                offset + 32,
2695                _depth
2696            )?;
2697            fidl::decode!(fidl::encoding::Vector<u8, 256>, D, &mut self.operating_channels, decoder, offset + 40, _depth)?;
2698            Ok(())
2699        }
2700    }
2701
2702    impl fidl::encoding::ValueTypeMarker for CapturedFrameResult {
2703        type Borrowed<'a> = &'a Self;
2704        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2705            value
2706        }
2707    }
2708
2709    unsafe impl fidl::encoding::TypeMarker for CapturedFrameResult {
2710        type Owned = Self;
2711
2712        #[inline(always)]
2713        fn inline_align(_context: fidl::encoding::Context) -> usize {
2714            8
2715        }
2716
2717        #[inline(always)]
2718        fn inline_size(_context: fidl::encoding::Context) -> usize {
2719            16
2720        }
2721    }
2722
2723    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CapturedFrameResult, D>
2724        for &CapturedFrameResult
2725    {
2726        #[inline]
2727        unsafe fn encode(
2728            self,
2729            encoder: &mut fidl::encoding::Encoder<'_, D>,
2730            offset: usize,
2731            _depth: fidl::encoding::Depth,
2732        ) -> fidl::Result<()> {
2733            encoder.debug_check_bounds::<CapturedFrameResult>(offset);
2734            // Delegate to tuple encoding.
2735            fidl::encoding::Encode::<CapturedFrameResult, D>::encode(
2736                (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
2737                    &self.frame,
2738                ),),
2739                encoder,
2740                offset,
2741                _depth,
2742            )
2743        }
2744    }
2745    unsafe impl<
2746        D: fidl::encoding::ResourceDialect,
2747        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2748    > fidl::encoding::Encode<CapturedFrameResult, D> for (T0,)
2749    {
2750        #[inline]
2751        unsafe fn encode(
2752            self,
2753            encoder: &mut fidl::encoding::Encoder<'_, D>,
2754            offset: usize,
2755            depth: fidl::encoding::Depth,
2756        ) -> fidl::Result<()> {
2757            encoder.debug_check_bounds::<CapturedFrameResult>(offset);
2758            // Zero out padding regions. There's no need to apply masks
2759            // because the unmasked parts will be overwritten by fields.
2760            // Write the fields.
2761            self.0.encode(encoder, offset + 0, depth)?;
2762            Ok(())
2763        }
2764    }
2765
2766    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CapturedFrameResult {
2767        #[inline(always)]
2768        fn new_empty() -> Self {
2769            Self { frame: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
2770        }
2771
2772        #[inline]
2773        unsafe fn decode(
2774            &mut self,
2775            decoder: &mut fidl::encoding::Decoder<'_, D>,
2776            offset: usize,
2777            _depth: fidl::encoding::Depth,
2778        ) -> fidl::Result<()> {
2779            decoder.debug_check_bounds::<Self>(offset);
2780            // Verify that padding bytes are zero.
2781            fidl::decode!(
2782                fidl::encoding::UnboundedVector<u8>,
2783                D,
2784                &mut self.frame,
2785                decoder,
2786                offset + 0,
2787                _depth
2788            )?;
2789            Ok(())
2790        }
2791    }
2792
2793    impl fidl::encoding::ValueTypeMarker for ConnectConfirm {
2794        type Borrowed<'a> = &'a Self;
2795        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2796            value
2797        }
2798    }
2799
2800    unsafe impl fidl::encoding::TypeMarker for ConnectConfirm {
2801        type Owned = Self;
2802
2803        #[inline(always)]
2804        fn inline_align(_context: fidl::encoding::Context) -> usize {
2805            8
2806        }
2807
2808        #[inline(always)]
2809        fn inline_size(_context: fidl::encoding::Context) -> usize {
2810            32
2811        }
2812    }
2813
2814    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectConfirm, D>
2815        for &ConnectConfirm
2816    {
2817        #[inline]
2818        unsafe fn encode(
2819            self,
2820            encoder: &mut fidl::encoding::Encoder<'_, D>,
2821            offset: usize,
2822            _depth: fidl::encoding::Depth,
2823        ) -> fidl::Result<()> {
2824            encoder.debug_check_bounds::<ConnectConfirm>(offset);
2825            // Delegate to tuple encoding.
2826            fidl::encoding::Encode::<ConnectConfirm, D>::encode(
2827                (
2828                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
2829                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
2830                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
2831                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
2832                ),
2833                encoder, offset, _depth
2834            )
2835        }
2836    }
2837    unsafe impl<
2838        D: fidl::encoding::ResourceDialect,
2839        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2840        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
2841        T2: fidl::encoding::Encode<u16, D>,
2842        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2843    > fidl::encoding::Encode<ConnectConfirm, D> for (T0, T1, T2, T3)
2844    {
2845        #[inline]
2846        unsafe fn encode(
2847            self,
2848            encoder: &mut fidl::encoding::Encoder<'_, D>,
2849            offset: usize,
2850            depth: fidl::encoding::Depth,
2851        ) -> fidl::Result<()> {
2852            encoder.debug_check_bounds::<ConnectConfirm>(offset);
2853            // Zero out padding regions. There's no need to apply masks
2854            // because the unmasked parts will be overwritten by fields.
2855            unsafe {
2856                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2857                (ptr as *mut u64).write_unaligned(0);
2858            }
2859            // Write the fields.
2860            self.0.encode(encoder, offset + 0, depth)?;
2861            self.1.encode(encoder, offset + 6, depth)?;
2862            self.2.encode(encoder, offset + 8, depth)?;
2863            self.3.encode(encoder, offset + 16, depth)?;
2864            Ok(())
2865        }
2866    }
2867
2868    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectConfirm {
2869        #[inline(always)]
2870        fn new_empty() -> Self {
2871            Self {
2872                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2873                result_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
2874                association_id: fidl::new_empty!(u16, D),
2875                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
2876            }
2877        }
2878
2879        #[inline]
2880        unsafe fn decode(
2881            &mut self,
2882            decoder: &mut fidl::encoding::Decoder<'_, D>,
2883            offset: usize,
2884            _depth: fidl::encoding::Depth,
2885        ) -> fidl::Result<()> {
2886            decoder.debug_check_bounds::<Self>(offset);
2887            // Verify that padding bytes are zero.
2888            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2889            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2890            let mask = 0xffffffffffff0000u64;
2891            let maskedval = padval & mask;
2892            if maskedval != 0 {
2893                return Err(fidl::Error::NonZeroPadding {
2894                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2895                });
2896            }
2897            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2898            fidl::decode!(
2899                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
2900                D,
2901                &mut self.result_code,
2902                decoder,
2903                offset + 6,
2904                _depth
2905            )?;
2906            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 8, _depth)?;
2907            fidl::decode!(
2908                fidl::encoding::UnboundedVector<u8>,
2909                D,
2910                &mut self.association_ies,
2911                decoder,
2912                offset + 16,
2913                _depth
2914            )?;
2915            Ok(())
2916        }
2917    }
2918
2919    impl fidl::encoding::ValueTypeMarker for ConnectRequest {
2920        type Borrowed<'a> = &'a Self;
2921        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2922            value
2923        }
2924    }
2925
2926    unsafe impl fidl::encoding::TypeMarker for ConnectRequest {
2927        type Owned = Self;
2928
2929        #[inline(always)]
2930        fn inline_align(_context: fidl::encoding::Context) -> usize {
2931            8
2932        }
2933
2934        #[inline(always)]
2935        fn inline_size(_context: fidl::encoding::Context) -> usize {
2936            96
2937        }
2938    }
2939
2940    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectRequest, D>
2941        for &ConnectRequest
2942    {
2943        #[inline]
2944        unsafe fn encode(
2945            self,
2946            encoder: &mut fidl::encoding::Encoder<'_, D>,
2947            offset: usize,
2948            _depth: fidl::encoding::Depth,
2949        ) -> fidl::Result<()> {
2950            encoder.debug_check_bounds::<ConnectRequest>(offset);
2951            // Delegate to tuple encoding.
2952            fidl::encoding::Encode::<ConnectRequest, D>::encode(
2953                (
2954                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
2955                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.connect_failure_timeout),
2956                    <AuthenticationTypes as fidl::encoding::ValueTypeMarker>::borrow(&self.auth_type),
2957                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.sae_password),
2958                    <fidl::encoding::Boxed<SetKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.wep_key),
2959                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow(&self.security_ie),
2960                ),
2961                encoder, offset, _depth
2962            )
2963        }
2964    }
2965    unsafe impl<
2966        D: fidl::encoding::ResourceDialect,
2967        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
2968        T1: fidl::encoding::Encode<u32, D>,
2969        T2: fidl::encoding::Encode<AuthenticationTypes, D>,
2970        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2971        T4: fidl::encoding::Encode<fidl::encoding::Boxed<SetKeyDescriptor>, D>,
2972        T5: fidl::encoding::Encode<fidl::encoding::Vector<u8, 257>, D>,
2973    > fidl::encoding::Encode<ConnectRequest, D> for (T0, T1, T2, T3, T4, T5)
2974    {
2975        #[inline]
2976        unsafe fn encode(
2977            self,
2978            encoder: &mut fidl::encoding::Encoder<'_, D>,
2979            offset: usize,
2980            depth: fidl::encoding::Depth,
2981        ) -> fidl::Result<()> {
2982            encoder.debug_check_bounds::<ConnectRequest>(offset);
2983            // Zero out padding regions. There's no need to apply masks
2984            // because the unmasked parts will be overwritten by fields.
2985            // Write the fields.
2986            self.0.encode(encoder, offset + 0, depth)?;
2987            self.1.encode(encoder, offset + 48, depth)?;
2988            self.2.encode(encoder, offset + 52, depth)?;
2989            self.3.encode(encoder, offset + 56, depth)?;
2990            self.4.encode(encoder, offset + 72, depth)?;
2991            self.5.encode(encoder, offset + 80, depth)?;
2992            Ok(())
2993        }
2994    }
2995
2996    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectRequest {
2997        #[inline(always)]
2998        fn new_empty() -> Self {
2999            Self {
3000                selected_bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
3001                connect_failure_timeout: fidl::new_empty!(u32, D),
3002                auth_type: fidl::new_empty!(AuthenticationTypes, D),
3003                sae_password: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
3004                wep_key: fidl::new_empty!(fidl::encoding::Boxed<SetKeyDescriptor>, D),
3005                security_ie: fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D),
3006            }
3007        }
3008
3009        #[inline]
3010        unsafe fn decode(
3011            &mut self,
3012            decoder: &mut fidl::encoding::Decoder<'_, D>,
3013            offset: usize,
3014            _depth: fidl::encoding::Depth,
3015        ) -> fidl::Result<()> {
3016            decoder.debug_check_bounds::<Self>(offset);
3017            // Verify that padding bytes are zero.
3018            fidl::decode!(
3019                fidl_fuchsia_wlan_common__common::BssDescription,
3020                D,
3021                &mut self.selected_bss,
3022                decoder,
3023                offset + 0,
3024                _depth
3025            )?;
3026            fidl::decode!(u32, D, &mut self.connect_failure_timeout, decoder, offset + 48, _depth)?;
3027            fidl::decode!(
3028                AuthenticationTypes,
3029                D,
3030                &mut self.auth_type,
3031                decoder,
3032                offset + 52,
3033                _depth
3034            )?;
3035            fidl::decode!(
3036                fidl::encoding::UnboundedVector<u8>,
3037                D,
3038                &mut self.sae_password,
3039                decoder,
3040                offset + 56,
3041                _depth
3042            )?;
3043            fidl::decode!(
3044                fidl::encoding::Boxed<SetKeyDescriptor>,
3045                D,
3046                &mut self.wep_key,
3047                decoder,
3048                offset + 72,
3049                _depth
3050            )?;
3051            fidl::decode!(fidl::encoding::Vector<u8, 257>, D, &mut self.security_ie, decoder, offset + 80, _depth)?;
3052            Ok(())
3053        }
3054    }
3055
3056    impl fidl::encoding::ValueTypeMarker for Country {
3057        type Borrowed<'a> = &'a Self;
3058        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3059            value
3060        }
3061    }
3062
3063    unsafe impl fidl::encoding::TypeMarker for Country {
3064        type Owned = Self;
3065
3066        #[inline(always)]
3067        fn inline_align(_context: fidl::encoding::Context) -> usize {
3068            1
3069        }
3070
3071        #[inline(always)]
3072        fn inline_size(_context: fidl::encoding::Context) -> usize {
3073            3
3074        }
3075        #[inline(always)]
3076        fn encode_is_copy() -> bool {
3077            true
3078        }
3079
3080        #[inline(always)]
3081        fn decode_is_copy() -> bool {
3082            true
3083        }
3084    }
3085
3086    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Country, D> for &Country {
3087        #[inline]
3088        unsafe fn encode(
3089            self,
3090            encoder: &mut fidl::encoding::Encoder<'_, D>,
3091            offset: usize,
3092            _depth: fidl::encoding::Depth,
3093        ) -> fidl::Result<()> {
3094            encoder.debug_check_bounds::<Country>(offset);
3095            unsafe {
3096                // Copy the object into the buffer.
3097                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3098                (buf_ptr as *mut Country).write_unaligned((self as *const Country).read());
3099                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3100                // done second because the memcpy will write garbage to these bytes.
3101            }
3102            Ok(())
3103        }
3104    }
3105    unsafe impl<
3106        D: fidl::encoding::ResourceDialect,
3107        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 2>, D>,
3108        T1: fidl::encoding::Encode<u8, D>,
3109    > fidl::encoding::Encode<Country, D> for (T0, T1)
3110    {
3111        #[inline]
3112        unsafe fn encode(
3113            self,
3114            encoder: &mut fidl::encoding::Encoder<'_, D>,
3115            offset: usize,
3116            depth: fidl::encoding::Depth,
3117        ) -> fidl::Result<()> {
3118            encoder.debug_check_bounds::<Country>(offset);
3119            // Zero out padding regions. There's no need to apply masks
3120            // because the unmasked parts will be overwritten by fields.
3121            // Write the fields.
3122            self.0.encode(encoder, offset + 0, depth)?;
3123            self.1.encode(encoder, offset + 2, depth)?;
3124            Ok(())
3125        }
3126    }
3127
3128    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Country {
3129        #[inline(always)]
3130        fn new_empty() -> Self {
3131            Self {
3132                alpha2: fidl::new_empty!(fidl::encoding::Array<u8, 2>, D),
3133                suffix: fidl::new_empty!(u8, D),
3134            }
3135        }
3136
3137        #[inline]
3138        unsafe fn decode(
3139            &mut self,
3140            decoder: &mut fidl::encoding::Decoder<'_, D>,
3141            offset: usize,
3142            _depth: fidl::encoding::Depth,
3143        ) -> fidl::Result<()> {
3144            decoder.debug_check_bounds::<Self>(offset);
3145            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3146            // Verify that padding bytes are zero.
3147            // Copy from the buffer into the object.
3148            unsafe {
3149                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 3);
3150            }
3151            Ok(())
3152        }
3153    }
3154
3155    impl fidl::encoding::ValueTypeMarker for DeauthenticateConfirm {
3156        type Borrowed<'a> = &'a Self;
3157        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3158            value
3159        }
3160    }
3161
3162    unsafe impl fidl::encoding::TypeMarker for DeauthenticateConfirm {
3163        type Owned = Self;
3164
3165        #[inline(always)]
3166        fn inline_align(_context: fidl::encoding::Context) -> usize {
3167            1
3168        }
3169
3170        #[inline(always)]
3171        fn inline_size(_context: fidl::encoding::Context) -> usize {
3172            6
3173        }
3174        #[inline(always)]
3175        fn encode_is_copy() -> bool {
3176            true
3177        }
3178
3179        #[inline(always)]
3180        fn decode_is_copy() -> bool {
3181            true
3182        }
3183    }
3184
3185    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeauthenticateConfirm, D>
3186        for &DeauthenticateConfirm
3187    {
3188        #[inline]
3189        unsafe fn encode(
3190            self,
3191            encoder: &mut fidl::encoding::Encoder<'_, D>,
3192            offset: usize,
3193            _depth: fidl::encoding::Depth,
3194        ) -> fidl::Result<()> {
3195            encoder.debug_check_bounds::<DeauthenticateConfirm>(offset);
3196            unsafe {
3197                // Copy the object into the buffer.
3198                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3199                (buf_ptr as *mut DeauthenticateConfirm)
3200                    .write_unaligned((self as *const DeauthenticateConfirm).read());
3201                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3202                // done second because the memcpy will write garbage to these bytes.
3203            }
3204            Ok(())
3205        }
3206    }
3207    unsafe impl<
3208        D: fidl::encoding::ResourceDialect,
3209        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3210    > fidl::encoding::Encode<DeauthenticateConfirm, D> for (T0,)
3211    {
3212        #[inline]
3213        unsafe fn encode(
3214            self,
3215            encoder: &mut fidl::encoding::Encoder<'_, D>,
3216            offset: usize,
3217            depth: fidl::encoding::Depth,
3218        ) -> fidl::Result<()> {
3219            encoder.debug_check_bounds::<DeauthenticateConfirm>(offset);
3220            // Zero out padding regions. There's no need to apply masks
3221            // because the unmasked parts will be overwritten by fields.
3222            // Write the fields.
3223            self.0.encode(encoder, offset + 0, depth)?;
3224            Ok(())
3225        }
3226    }
3227
3228    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeauthenticateConfirm {
3229        #[inline(always)]
3230        fn new_empty() -> Self {
3231            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
3232        }
3233
3234        #[inline]
3235        unsafe fn decode(
3236            &mut self,
3237            decoder: &mut fidl::encoding::Decoder<'_, D>,
3238            offset: usize,
3239            _depth: fidl::encoding::Depth,
3240        ) -> fidl::Result<()> {
3241            decoder.debug_check_bounds::<Self>(offset);
3242            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3243            // Verify that padding bytes are zero.
3244            // Copy from the buffer into the object.
3245            unsafe {
3246                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
3247            }
3248            Ok(())
3249        }
3250    }
3251
3252    impl fidl::encoding::ValueTypeMarker for DeauthenticateIndication {
3253        type Borrowed<'a> = &'a Self;
3254        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3255            value
3256        }
3257    }
3258
3259    unsafe impl fidl::encoding::TypeMarker for DeauthenticateIndication {
3260        type Owned = Self;
3261
3262        #[inline(always)]
3263        fn inline_align(_context: fidl::encoding::Context) -> usize {
3264            2
3265        }
3266
3267        #[inline(always)]
3268        fn inline_size(_context: fidl::encoding::Context) -> usize {
3269            10
3270        }
3271    }
3272
3273    unsafe impl<D: fidl::encoding::ResourceDialect>
3274        fidl::encoding::Encode<DeauthenticateIndication, D> for &DeauthenticateIndication
3275    {
3276        #[inline]
3277        unsafe fn encode(
3278            self,
3279            encoder: &mut fidl::encoding::Encoder<'_, D>,
3280            offset: usize,
3281            _depth: fidl::encoding::Depth,
3282        ) -> fidl::Result<()> {
3283            encoder.debug_check_bounds::<DeauthenticateIndication>(offset);
3284            // Delegate to tuple encoding.
3285            fidl::encoding::Encode::<DeauthenticateIndication, D>::encode(
3286                (
3287                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3288                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3289                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.locally_initiated),
3290                ),
3291                encoder, offset, _depth
3292            )
3293        }
3294    }
3295    unsafe impl<
3296        D: fidl::encoding::ResourceDialect,
3297        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3298        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
3299        T2: fidl::encoding::Encode<bool, D>,
3300    > fidl::encoding::Encode<DeauthenticateIndication, D> for (T0, T1, T2)
3301    {
3302        #[inline]
3303        unsafe fn encode(
3304            self,
3305            encoder: &mut fidl::encoding::Encoder<'_, D>,
3306            offset: usize,
3307            depth: fidl::encoding::Depth,
3308        ) -> fidl::Result<()> {
3309            encoder.debug_check_bounds::<DeauthenticateIndication>(offset);
3310            // Zero out padding regions. There's no need to apply masks
3311            // because the unmasked parts will be overwritten by fields.
3312            unsafe {
3313                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3314                (ptr as *mut u16).write_unaligned(0);
3315            }
3316            // Write the fields.
3317            self.0.encode(encoder, offset + 0, depth)?;
3318            self.1.encode(encoder, offset + 6, depth)?;
3319            self.2.encode(encoder, offset + 8, depth)?;
3320            Ok(())
3321        }
3322    }
3323
3324    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3325        for DeauthenticateIndication
3326    {
3327        #[inline(always)]
3328        fn new_empty() -> Self {
3329            Self {
3330                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3331                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
3332                locally_initiated: fidl::new_empty!(bool, D),
3333            }
3334        }
3335
3336        #[inline]
3337        unsafe fn decode(
3338            &mut self,
3339            decoder: &mut fidl::encoding::Decoder<'_, D>,
3340            offset: usize,
3341            _depth: fidl::encoding::Depth,
3342        ) -> fidl::Result<()> {
3343            decoder.debug_check_bounds::<Self>(offset);
3344            // Verify that padding bytes are zero.
3345            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
3346            let padval = unsafe { (ptr as *const u16).read_unaligned() };
3347            let mask = 0xff00u16;
3348            let maskedval = padval & mask;
3349            if maskedval != 0 {
3350                return Err(fidl::Error::NonZeroPadding {
3351                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
3352                });
3353            }
3354            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
3355            fidl::decode!(
3356                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
3357                D,
3358                &mut self.reason_code,
3359                decoder,
3360                offset + 6,
3361                _depth
3362            )?;
3363            fidl::decode!(bool, D, &mut self.locally_initiated, decoder, offset + 8, _depth)?;
3364            Ok(())
3365        }
3366    }
3367
3368    impl fidl::encoding::ValueTypeMarker for DeauthenticateRequest {
3369        type Borrowed<'a> = &'a Self;
3370        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3371            value
3372        }
3373    }
3374
3375    unsafe impl fidl::encoding::TypeMarker for DeauthenticateRequest {
3376        type Owned = Self;
3377
3378        #[inline(always)]
3379        fn inline_align(_context: fidl::encoding::Context) -> usize {
3380            2
3381        }
3382
3383        #[inline(always)]
3384        fn inline_size(_context: fidl::encoding::Context) -> usize {
3385            8
3386        }
3387    }
3388
3389    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeauthenticateRequest, D>
3390        for &DeauthenticateRequest
3391    {
3392        #[inline]
3393        unsafe fn encode(
3394            self,
3395            encoder: &mut fidl::encoding::Encoder<'_, D>,
3396            offset: usize,
3397            _depth: fidl::encoding::Depth,
3398        ) -> fidl::Result<()> {
3399            encoder.debug_check_bounds::<DeauthenticateRequest>(offset);
3400            // Delegate to tuple encoding.
3401            fidl::encoding::Encode::<DeauthenticateRequest, D>::encode(
3402                (
3403                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3404                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3405                ),
3406                encoder, offset, _depth
3407            )
3408        }
3409    }
3410    unsafe impl<
3411        D: fidl::encoding::ResourceDialect,
3412        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3413        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
3414    > fidl::encoding::Encode<DeauthenticateRequest, D> for (T0, T1)
3415    {
3416        #[inline]
3417        unsafe fn encode(
3418            self,
3419            encoder: &mut fidl::encoding::Encoder<'_, D>,
3420            offset: usize,
3421            depth: fidl::encoding::Depth,
3422        ) -> fidl::Result<()> {
3423            encoder.debug_check_bounds::<DeauthenticateRequest>(offset);
3424            // Zero out padding regions. There's no need to apply masks
3425            // because the unmasked parts will be overwritten by fields.
3426            // Write the fields.
3427            self.0.encode(encoder, offset + 0, depth)?;
3428            self.1.encode(encoder, offset + 6, depth)?;
3429            Ok(())
3430        }
3431    }
3432
3433    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeauthenticateRequest {
3434        #[inline(always)]
3435        fn new_empty() -> Self {
3436            Self {
3437                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3438                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
3439            }
3440        }
3441
3442        #[inline]
3443        unsafe fn decode(
3444            &mut self,
3445            decoder: &mut fidl::encoding::Decoder<'_, D>,
3446            offset: usize,
3447            _depth: fidl::encoding::Depth,
3448        ) -> fidl::Result<()> {
3449            decoder.debug_check_bounds::<Self>(offset);
3450            // Verify that padding bytes are zero.
3451            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
3452            fidl::decode!(
3453                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
3454                D,
3455                &mut self.reason_code,
3456                decoder,
3457                offset + 6,
3458                _depth
3459            )?;
3460            Ok(())
3461        }
3462    }
3463
3464    impl fidl::encoding::ValueTypeMarker for DeleteKeyDescriptor {
3465        type Borrowed<'a> = &'a Self;
3466        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3467            value
3468        }
3469    }
3470
3471    unsafe impl fidl::encoding::TypeMarker for DeleteKeyDescriptor {
3472        type Owned = Self;
3473
3474        #[inline(always)]
3475        fn inline_align(_context: fidl::encoding::Context) -> usize {
3476            4
3477        }
3478
3479        #[inline(always)]
3480        fn inline_size(_context: fidl::encoding::Context) -> usize {
3481            16
3482        }
3483    }
3484
3485    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeleteKeyDescriptor, D>
3486        for &DeleteKeyDescriptor
3487    {
3488        #[inline]
3489        unsafe fn encode(
3490            self,
3491            encoder: &mut fidl::encoding::Encoder<'_, D>,
3492            offset: usize,
3493            _depth: fidl::encoding::Depth,
3494        ) -> fidl::Result<()> {
3495            encoder.debug_check_bounds::<DeleteKeyDescriptor>(offset);
3496            // Delegate to tuple encoding.
3497            fidl::encoding::Encode::<DeleteKeyDescriptor, D>::encode(
3498                (
3499                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.key_id),
3500                    <KeyType as fidl::encoding::ValueTypeMarker>::borrow(&self.key_type),
3501                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
3502                        &self.address,
3503                    ),
3504                ),
3505                encoder,
3506                offset,
3507                _depth,
3508            )
3509        }
3510    }
3511    unsafe impl<
3512        D: fidl::encoding::ResourceDialect,
3513        T0: fidl::encoding::Encode<u16, D>,
3514        T1: fidl::encoding::Encode<KeyType, D>,
3515        T2: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3516    > fidl::encoding::Encode<DeleteKeyDescriptor, D> for (T0, T1, T2)
3517    {
3518        #[inline]
3519        unsafe fn encode(
3520            self,
3521            encoder: &mut fidl::encoding::Encoder<'_, D>,
3522            offset: usize,
3523            depth: fidl::encoding::Depth,
3524        ) -> fidl::Result<()> {
3525            encoder.debug_check_bounds::<DeleteKeyDescriptor>(offset);
3526            // Zero out padding regions. There's no need to apply masks
3527            // because the unmasked parts will be overwritten by fields.
3528            unsafe {
3529                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3530                (ptr as *mut u32).write_unaligned(0);
3531            }
3532            unsafe {
3533                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(12);
3534                (ptr as *mut u32).write_unaligned(0);
3535            }
3536            // Write the fields.
3537            self.0.encode(encoder, offset + 0, depth)?;
3538            self.1.encode(encoder, offset + 4, depth)?;
3539            self.2.encode(encoder, offset + 8, depth)?;
3540            Ok(())
3541        }
3542    }
3543
3544    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeleteKeyDescriptor {
3545        #[inline(always)]
3546        fn new_empty() -> Self {
3547            Self {
3548                key_id: fidl::new_empty!(u16, D),
3549                key_type: fidl::new_empty!(KeyType, D),
3550                address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3551            }
3552        }
3553
3554        #[inline]
3555        unsafe fn decode(
3556            &mut self,
3557            decoder: &mut fidl::encoding::Decoder<'_, D>,
3558            offset: usize,
3559            _depth: fidl::encoding::Depth,
3560        ) -> fidl::Result<()> {
3561            decoder.debug_check_bounds::<Self>(offset);
3562            // Verify that padding bytes are zero.
3563            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3564            let padval = unsafe { (ptr as *const u32).read_unaligned() };
3565            let mask = 0xffff0000u32;
3566            let maskedval = padval & mask;
3567            if maskedval != 0 {
3568                return Err(fidl::Error::NonZeroPadding {
3569                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3570                });
3571            }
3572            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(12) };
3573            let padval = unsafe { (ptr as *const u32).read_unaligned() };
3574            let mask = 0xffff0000u32;
3575            let maskedval = padval & mask;
3576            if maskedval != 0 {
3577                return Err(fidl::Error::NonZeroPadding {
3578                    padding_start: offset + 12 + ((mask as u64).trailing_zeros() / 8) as usize,
3579                });
3580            }
3581            fidl::decode!(u16, D, &mut self.key_id, decoder, offset + 0, _depth)?;
3582            fidl::decode!(KeyType, D, &mut self.key_type, decoder, offset + 4, _depth)?;
3583            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.address, decoder, offset + 8, _depth)?;
3584            Ok(())
3585        }
3586    }
3587
3588    impl fidl::encoding::ValueTypeMarker for DeleteKeysRequest {
3589        type Borrowed<'a> = &'a Self;
3590        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3591            value
3592        }
3593    }
3594
3595    unsafe impl fidl::encoding::TypeMarker for DeleteKeysRequest {
3596        type Owned = Self;
3597
3598        #[inline(always)]
3599        fn inline_align(_context: fidl::encoding::Context) -> usize {
3600            8
3601        }
3602
3603        #[inline(always)]
3604        fn inline_size(_context: fidl::encoding::Context) -> usize {
3605            16
3606        }
3607    }
3608
3609    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeleteKeysRequest, D>
3610        for &DeleteKeysRequest
3611    {
3612        #[inline]
3613        unsafe fn encode(
3614            self,
3615            encoder: &mut fidl::encoding::Encoder<'_, D>,
3616            offset: usize,
3617            _depth: fidl::encoding::Depth,
3618        ) -> fidl::Result<()> {
3619            encoder.debug_check_bounds::<DeleteKeysRequest>(offset);
3620            // Delegate to tuple encoding.
3621            fidl::encoding::Encode::<DeleteKeysRequest, D>::encode(
3622                (
3623                    <fidl::encoding::UnboundedVector<DeleteKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.keylist),
3624                ),
3625                encoder, offset, _depth
3626            )
3627        }
3628    }
3629    unsafe impl<
3630        D: fidl::encoding::ResourceDialect,
3631        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<DeleteKeyDescriptor>, D>,
3632    > fidl::encoding::Encode<DeleteKeysRequest, D> for (T0,)
3633    {
3634        #[inline]
3635        unsafe fn encode(
3636            self,
3637            encoder: &mut fidl::encoding::Encoder<'_, D>,
3638            offset: usize,
3639            depth: fidl::encoding::Depth,
3640        ) -> fidl::Result<()> {
3641            encoder.debug_check_bounds::<DeleteKeysRequest>(offset);
3642            // Zero out padding regions. There's no need to apply masks
3643            // because the unmasked parts will be overwritten by fields.
3644            // Write the fields.
3645            self.0.encode(encoder, offset + 0, depth)?;
3646            Ok(())
3647        }
3648    }
3649
3650    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeleteKeysRequest {
3651        #[inline(always)]
3652        fn new_empty() -> Self {
3653            Self {
3654                keylist: fidl::new_empty!(fidl::encoding::UnboundedVector<DeleteKeyDescriptor>, D),
3655            }
3656        }
3657
3658        #[inline]
3659        unsafe fn decode(
3660            &mut self,
3661            decoder: &mut fidl::encoding::Decoder<'_, D>,
3662            offset: usize,
3663            _depth: fidl::encoding::Depth,
3664        ) -> fidl::Result<()> {
3665            decoder.debug_check_bounds::<Self>(offset);
3666            // Verify that padding bytes are zero.
3667            fidl::decode!(
3668                fidl::encoding::UnboundedVector<DeleteKeyDescriptor>,
3669                D,
3670                &mut self.keylist,
3671                decoder,
3672                offset + 0,
3673                _depth
3674            )?;
3675            Ok(())
3676        }
3677    }
3678
3679    impl fidl::encoding::ValueTypeMarker for DeviceInfo {
3680        type Borrowed<'a> = &'a Self;
3681        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3682            value
3683        }
3684    }
3685
3686    unsafe impl fidl::encoding::TypeMarker for DeviceInfo {
3687        type Owned = Self;
3688
3689        #[inline(always)]
3690        fn inline_align(_context: fidl::encoding::Context) -> usize {
3691            8
3692        }
3693
3694        #[inline(always)]
3695        fn inline_size(_context: fidl::encoding::Context) -> usize {
3696            40
3697        }
3698    }
3699
3700    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceInfo, D>
3701        for &DeviceInfo
3702    {
3703        #[inline]
3704        unsafe fn encode(
3705            self,
3706            encoder: &mut fidl::encoding::Encoder<'_, D>,
3707            offset: usize,
3708            _depth: fidl::encoding::Depth,
3709        ) -> fidl::Result<()> {
3710            encoder.debug_check_bounds::<DeviceInfo>(offset);
3711            // Delegate to tuple encoding.
3712            fidl::encoding::Encode::<DeviceInfo, D>::encode(
3713                (
3714                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.sta_addr),
3715                    <fidl_fuchsia_wlan_common__common::WlanMacRole as fidl::encoding::ValueTypeMarker>::borrow(&self.role),
3716                    <fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::ValueTypeMarker>::borrow(&self.bands),
3717                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.softmac_hardware_capability),
3718                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.qos_capable),
3719                ),
3720                encoder, offset, _depth
3721            )
3722        }
3723    }
3724    unsafe impl<
3725        D: fidl::encoding::ResourceDialect,
3726        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3727        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::WlanMacRole, D>,
3728        T2: fidl::encoding::Encode<fidl::encoding::Vector<BandCapability, 16>, D>,
3729        T3: fidl::encoding::Encode<u32, D>,
3730        T4: fidl::encoding::Encode<bool, D>,
3731    > fidl::encoding::Encode<DeviceInfo, D> for (T0, T1, T2, T3, T4)
3732    {
3733        #[inline]
3734        unsafe fn encode(
3735            self,
3736            encoder: &mut fidl::encoding::Encoder<'_, D>,
3737            offset: usize,
3738            depth: fidl::encoding::Depth,
3739        ) -> fidl::Result<()> {
3740            encoder.debug_check_bounds::<DeviceInfo>(offset);
3741            // Zero out padding regions. There's no need to apply masks
3742            // because the unmasked parts will be overwritten by fields.
3743            unsafe {
3744                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3745                (ptr as *mut u64).write_unaligned(0);
3746            }
3747            unsafe {
3748                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3749                (ptr as *mut u64).write_unaligned(0);
3750            }
3751            unsafe {
3752                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
3753                (ptr as *mut u64).write_unaligned(0);
3754            }
3755            // Write the fields.
3756            self.0.encode(encoder, offset + 0, depth)?;
3757            self.1.encode(encoder, offset + 8, depth)?;
3758            self.2.encode(encoder, offset + 16, depth)?;
3759            self.3.encode(encoder, offset + 32, depth)?;
3760            self.4.encode(encoder, offset + 36, depth)?;
3761            Ok(())
3762        }
3763    }
3764
3765    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceInfo {
3766        #[inline(always)]
3767        fn new_empty() -> Self {
3768            Self {
3769                sta_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3770                role: fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanMacRole, D),
3771                bands: fidl::new_empty!(fidl::encoding::Vector<BandCapability, 16>, D),
3772                softmac_hardware_capability: fidl::new_empty!(u32, D),
3773                qos_capable: fidl::new_empty!(bool, D),
3774            }
3775        }
3776
3777        #[inline]
3778        unsafe fn decode(
3779            &mut self,
3780            decoder: &mut fidl::encoding::Decoder<'_, D>,
3781            offset: usize,
3782            _depth: fidl::encoding::Depth,
3783        ) -> fidl::Result<()> {
3784            decoder.debug_check_bounds::<Self>(offset);
3785            // Verify that padding bytes are zero.
3786            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3787            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3788            let mask = 0xffff000000000000u64;
3789            let maskedval = padval & mask;
3790            if maskedval != 0 {
3791                return Err(fidl::Error::NonZeroPadding {
3792                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3793                });
3794            }
3795            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
3796            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3797            let mask = 0xffffffff00000000u64;
3798            let maskedval = padval & mask;
3799            if maskedval != 0 {
3800                return Err(fidl::Error::NonZeroPadding {
3801                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
3802                });
3803            }
3804            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
3805            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3806            let mask = 0xffffff0000000000u64;
3807            let maskedval = padval & mask;
3808            if maskedval != 0 {
3809                return Err(fidl::Error::NonZeroPadding {
3810                    padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
3811                });
3812            }
3813            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.sta_addr, decoder, offset + 0, _depth)?;
3814            fidl::decode!(
3815                fidl_fuchsia_wlan_common__common::WlanMacRole,
3816                D,
3817                &mut self.role,
3818                decoder,
3819                offset + 8,
3820                _depth
3821            )?;
3822            fidl::decode!(fidl::encoding::Vector<BandCapability, 16>, D, &mut self.bands, decoder, offset + 16, _depth)?;
3823            fidl::decode!(
3824                u32,
3825                D,
3826                &mut self.softmac_hardware_capability,
3827                decoder,
3828                offset + 32,
3829                _depth
3830            )?;
3831            fidl::decode!(bool, D, &mut self.qos_capable, decoder, offset + 36, _depth)?;
3832            Ok(())
3833        }
3834    }
3835
3836    impl fidl::encoding::ValueTypeMarker for DisassociateConfirm {
3837        type Borrowed<'a> = &'a Self;
3838        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3839            value
3840        }
3841    }
3842
3843    unsafe impl fidl::encoding::TypeMarker for DisassociateConfirm {
3844        type Owned = Self;
3845
3846        #[inline(always)]
3847        fn inline_align(_context: fidl::encoding::Context) -> usize {
3848            4
3849        }
3850
3851        #[inline(always)]
3852        fn inline_size(_context: fidl::encoding::Context) -> usize {
3853            4
3854        }
3855        #[inline(always)]
3856        fn encode_is_copy() -> bool {
3857            true
3858        }
3859
3860        #[inline(always)]
3861        fn decode_is_copy() -> bool {
3862            true
3863        }
3864    }
3865
3866    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisassociateConfirm, D>
3867        for &DisassociateConfirm
3868    {
3869        #[inline]
3870        unsafe fn encode(
3871            self,
3872            encoder: &mut fidl::encoding::Encoder<'_, D>,
3873            offset: usize,
3874            _depth: fidl::encoding::Depth,
3875        ) -> fidl::Result<()> {
3876            encoder.debug_check_bounds::<DisassociateConfirm>(offset);
3877            unsafe {
3878                // Copy the object into the buffer.
3879                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3880                (buf_ptr as *mut DisassociateConfirm)
3881                    .write_unaligned((self as *const DisassociateConfirm).read());
3882                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3883                // done second because the memcpy will write garbage to these bytes.
3884            }
3885            Ok(())
3886        }
3887    }
3888    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
3889        fidl::encoding::Encode<DisassociateConfirm, D> for (T0,)
3890    {
3891        #[inline]
3892        unsafe fn encode(
3893            self,
3894            encoder: &mut fidl::encoding::Encoder<'_, D>,
3895            offset: usize,
3896            depth: fidl::encoding::Depth,
3897        ) -> fidl::Result<()> {
3898            encoder.debug_check_bounds::<DisassociateConfirm>(offset);
3899            // Zero out padding regions. There's no need to apply masks
3900            // because the unmasked parts will be overwritten by fields.
3901            // Write the fields.
3902            self.0.encode(encoder, offset + 0, depth)?;
3903            Ok(())
3904        }
3905    }
3906
3907    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisassociateConfirm {
3908        #[inline(always)]
3909        fn new_empty() -> Self {
3910            Self { status: fidl::new_empty!(i32, D) }
3911        }
3912
3913        #[inline]
3914        unsafe fn decode(
3915            &mut self,
3916            decoder: &mut fidl::encoding::Decoder<'_, D>,
3917            offset: usize,
3918            _depth: fidl::encoding::Depth,
3919        ) -> fidl::Result<()> {
3920            decoder.debug_check_bounds::<Self>(offset);
3921            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3922            // Verify that padding bytes are zero.
3923            // Copy from the buffer into the object.
3924            unsafe {
3925                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
3926            }
3927            Ok(())
3928        }
3929    }
3930
3931    impl fidl::encoding::ValueTypeMarker for DisassociateIndication {
3932        type Borrowed<'a> = &'a Self;
3933        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3934            value
3935        }
3936    }
3937
3938    unsafe impl fidl::encoding::TypeMarker for DisassociateIndication {
3939        type Owned = Self;
3940
3941        #[inline(always)]
3942        fn inline_align(_context: fidl::encoding::Context) -> usize {
3943            2
3944        }
3945
3946        #[inline(always)]
3947        fn inline_size(_context: fidl::encoding::Context) -> usize {
3948            10
3949        }
3950    }
3951
3952    unsafe impl<D: fidl::encoding::ResourceDialect>
3953        fidl::encoding::Encode<DisassociateIndication, D> for &DisassociateIndication
3954    {
3955        #[inline]
3956        unsafe fn encode(
3957            self,
3958            encoder: &mut fidl::encoding::Encoder<'_, D>,
3959            offset: usize,
3960            _depth: fidl::encoding::Depth,
3961        ) -> fidl::Result<()> {
3962            encoder.debug_check_bounds::<DisassociateIndication>(offset);
3963            // Delegate to tuple encoding.
3964            fidl::encoding::Encode::<DisassociateIndication, D>::encode(
3965                (
3966                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3967                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3968                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.locally_initiated),
3969                ),
3970                encoder, offset, _depth
3971            )
3972        }
3973    }
3974    unsafe impl<
3975        D: fidl::encoding::ResourceDialect,
3976        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3977        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
3978        T2: fidl::encoding::Encode<bool, D>,
3979    > fidl::encoding::Encode<DisassociateIndication, D> for (T0, T1, T2)
3980    {
3981        #[inline]
3982        unsafe fn encode(
3983            self,
3984            encoder: &mut fidl::encoding::Encoder<'_, D>,
3985            offset: usize,
3986            depth: fidl::encoding::Depth,
3987        ) -> fidl::Result<()> {
3988            encoder.debug_check_bounds::<DisassociateIndication>(offset);
3989            // Zero out padding regions. There's no need to apply masks
3990            // because the unmasked parts will be overwritten by fields.
3991            unsafe {
3992                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3993                (ptr as *mut u16).write_unaligned(0);
3994            }
3995            // Write the fields.
3996            self.0.encode(encoder, offset + 0, depth)?;
3997            self.1.encode(encoder, offset + 6, depth)?;
3998            self.2.encode(encoder, offset + 8, depth)?;
3999            Ok(())
4000        }
4001    }
4002
4003    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4004        for DisassociateIndication
4005    {
4006        #[inline(always)]
4007        fn new_empty() -> Self {
4008            Self {
4009                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4010                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
4011                locally_initiated: fidl::new_empty!(bool, D),
4012            }
4013        }
4014
4015        #[inline]
4016        unsafe fn decode(
4017            &mut self,
4018            decoder: &mut fidl::encoding::Decoder<'_, D>,
4019            offset: usize,
4020            _depth: fidl::encoding::Depth,
4021        ) -> fidl::Result<()> {
4022            decoder.debug_check_bounds::<Self>(offset);
4023            // Verify that padding bytes are zero.
4024            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4025            let padval = unsafe { (ptr as *const u16).read_unaligned() };
4026            let mask = 0xff00u16;
4027            let maskedval = padval & mask;
4028            if maskedval != 0 {
4029                return Err(fidl::Error::NonZeroPadding {
4030                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4031                });
4032            }
4033            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
4034            fidl::decode!(
4035                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
4036                D,
4037                &mut self.reason_code,
4038                decoder,
4039                offset + 6,
4040                _depth
4041            )?;
4042            fidl::decode!(bool, D, &mut self.locally_initiated, decoder, offset + 8, _depth)?;
4043            Ok(())
4044        }
4045    }
4046
4047    impl fidl::encoding::ValueTypeMarker for DisassociateRequest {
4048        type Borrowed<'a> = &'a Self;
4049        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4050            value
4051        }
4052    }
4053
4054    unsafe impl fidl::encoding::TypeMarker for DisassociateRequest {
4055        type Owned = Self;
4056
4057        #[inline(always)]
4058        fn inline_align(_context: fidl::encoding::Context) -> usize {
4059            2
4060        }
4061
4062        #[inline(always)]
4063        fn inline_size(_context: fidl::encoding::Context) -> usize {
4064            8
4065        }
4066    }
4067
4068    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisassociateRequest, D>
4069        for &DisassociateRequest
4070    {
4071        #[inline]
4072        unsafe fn encode(
4073            self,
4074            encoder: &mut fidl::encoding::Encoder<'_, D>,
4075            offset: usize,
4076            _depth: fidl::encoding::Depth,
4077        ) -> fidl::Result<()> {
4078            encoder.debug_check_bounds::<DisassociateRequest>(offset);
4079            // Delegate to tuple encoding.
4080            fidl::encoding::Encode::<DisassociateRequest, D>::encode(
4081                (
4082                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
4083                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
4084                ),
4085                encoder, offset, _depth
4086            )
4087        }
4088    }
4089    unsafe impl<
4090        D: fidl::encoding::ResourceDialect,
4091        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4092        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
4093    > fidl::encoding::Encode<DisassociateRequest, D> for (T0, T1)
4094    {
4095        #[inline]
4096        unsafe fn encode(
4097            self,
4098            encoder: &mut fidl::encoding::Encoder<'_, D>,
4099            offset: usize,
4100            depth: fidl::encoding::Depth,
4101        ) -> fidl::Result<()> {
4102            encoder.debug_check_bounds::<DisassociateRequest>(offset);
4103            // Zero out padding regions. There's no need to apply masks
4104            // because the unmasked parts will be overwritten by fields.
4105            // Write the fields.
4106            self.0.encode(encoder, offset + 0, depth)?;
4107            self.1.encode(encoder, offset + 6, depth)?;
4108            Ok(())
4109        }
4110    }
4111
4112    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisassociateRequest {
4113        #[inline(always)]
4114        fn new_empty() -> Self {
4115            Self {
4116                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4117                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
4118            }
4119        }
4120
4121        #[inline]
4122        unsafe fn decode(
4123            &mut self,
4124            decoder: &mut fidl::encoding::Decoder<'_, D>,
4125            offset: usize,
4126            _depth: fidl::encoding::Depth,
4127        ) -> fidl::Result<()> {
4128            decoder.debug_check_bounds::<Self>(offset);
4129            // Verify that padding bytes are zero.
4130            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
4131            fidl::decode!(
4132                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
4133                D,
4134                &mut self.reason_code,
4135                decoder,
4136                offset + 6,
4137                _depth
4138            )?;
4139            Ok(())
4140        }
4141    }
4142
4143    impl fidl::encoding::ValueTypeMarker for EapolConfirm {
4144        type Borrowed<'a> = &'a Self;
4145        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4146            value
4147        }
4148    }
4149
4150    unsafe impl fidl::encoding::TypeMarker for EapolConfirm {
4151        type Owned = Self;
4152
4153        #[inline(always)]
4154        fn inline_align(_context: fidl::encoding::Context) -> usize {
4155            4
4156        }
4157
4158        #[inline(always)]
4159        fn inline_size(_context: fidl::encoding::Context) -> usize {
4160            12
4161        }
4162    }
4163
4164    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolConfirm, D>
4165        for &EapolConfirm
4166    {
4167        #[inline]
4168        unsafe fn encode(
4169            self,
4170            encoder: &mut fidl::encoding::Encoder<'_, D>,
4171            offset: usize,
4172            _depth: fidl::encoding::Depth,
4173        ) -> fidl::Result<()> {
4174            encoder.debug_check_bounds::<EapolConfirm>(offset);
4175            // Delegate to tuple encoding.
4176            fidl::encoding::Encode::<EapolConfirm, D>::encode(
4177                (
4178                    <EapolResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
4179                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
4180                        &self.dst_addr,
4181                    ),
4182                ),
4183                encoder,
4184                offset,
4185                _depth,
4186            )
4187        }
4188    }
4189    unsafe impl<
4190        D: fidl::encoding::ResourceDialect,
4191        T0: fidl::encoding::Encode<EapolResultCode, D>,
4192        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4193    > fidl::encoding::Encode<EapolConfirm, D> for (T0, T1)
4194    {
4195        #[inline]
4196        unsafe fn encode(
4197            self,
4198            encoder: &mut fidl::encoding::Encoder<'_, D>,
4199            offset: usize,
4200            depth: fidl::encoding::Depth,
4201        ) -> fidl::Result<()> {
4202            encoder.debug_check_bounds::<EapolConfirm>(offset);
4203            // Zero out padding regions. There's no need to apply masks
4204            // because the unmasked parts will be overwritten by fields.
4205            unsafe {
4206                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4207                (ptr as *mut u32).write_unaligned(0);
4208            }
4209            // Write the fields.
4210            self.0.encode(encoder, offset + 0, depth)?;
4211            self.1.encode(encoder, offset + 4, depth)?;
4212            Ok(())
4213        }
4214    }
4215
4216    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolConfirm {
4217        #[inline(always)]
4218        fn new_empty() -> Self {
4219            Self {
4220                result_code: fidl::new_empty!(EapolResultCode, D),
4221                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4222            }
4223        }
4224
4225        #[inline]
4226        unsafe fn decode(
4227            &mut self,
4228            decoder: &mut fidl::encoding::Decoder<'_, D>,
4229            offset: usize,
4230            _depth: fidl::encoding::Depth,
4231        ) -> fidl::Result<()> {
4232            decoder.debug_check_bounds::<Self>(offset);
4233            // Verify that padding bytes are zero.
4234            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4235            let padval = unsafe { (ptr as *const u32).read_unaligned() };
4236            let mask = 0xffff0000u32;
4237            let maskedval = padval & mask;
4238            if maskedval != 0 {
4239                return Err(fidl::Error::NonZeroPadding {
4240                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4241                });
4242            }
4243            fidl::decode!(EapolResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
4244            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 4, _depth)?;
4245            Ok(())
4246        }
4247    }
4248
4249    impl fidl::encoding::ValueTypeMarker for EapolIndication {
4250        type Borrowed<'a> = &'a Self;
4251        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4252            value
4253        }
4254    }
4255
4256    unsafe impl fidl::encoding::TypeMarker for EapolIndication {
4257        type Owned = Self;
4258
4259        #[inline(always)]
4260        fn inline_align(_context: fidl::encoding::Context) -> usize {
4261            8
4262        }
4263
4264        #[inline(always)]
4265        fn inline_size(_context: fidl::encoding::Context) -> usize {
4266            32
4267        }
4268    }
4269
4270    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolIndication, D>
4271        for &EapolIndication
4272    {
4273        #[inline]
4274        unsafe fn encode(
4275            self,
4276            encoder: &mut fidl::encoding::Encoder<'_, D>,
4277            offset: usize,
4278            _depth: fidl::encoding::Depth,
4279        ) -> fidl::Result<()> {
4280            encoder.debug_check_bounds::<EapolIndication>(offset);
4281            // Delegate to tuple encoding.
4282            fidl::encoding::Encode::<EapolIndication, D>::encode(
4283                (
4284                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.src_addr),
4285                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.dst_addr),
4286                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4287                ),
4288                encoder, offset, _depth
4289            )
4290        }
4291    }
4292    unsafe impl<
4293        D: fidl::encoding::ResourceDialect,
4294        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4295        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4296        T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4297    > fidl::encoding::Encode<EapolIndication, D> for (T0, T1, T2)
4298    {
4299        #[inline]
4300        unsafe fn encode(
4301            self,
4302            encoder: &mut fidl::encoding::Encoder<'_, D>,
4303            offset: usize,
4304            depth: fidl::encoding::Depth,
4305        ) -> fidl::Result<()> {
4306            encoder.debug_check_bounds::<EapolIndication>(offset);
4307            // Zero out padding regions. There's no need to apply masks
4308            // because the unmasked parts will be overwritten by fields.
4309            unsafe {
4310                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4311                (ptr as *mut u64).write_unaligned(0);
4312            }
4313            // Write the fields.
4314            self.0.encode(encoder, offset + 0, depth)?;
4315            self.1.encode(encoder, offset + 6, depth)?;
4316            self.2.encode(encoder, offset + 16, depth)?;
4317            Ok(())
4318        }
4319    }
4320
4321    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolIndication {
4322        #[inline(always)]
4323        fn new_empty() -> Self {
4324            Self {
4325                src_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4326                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4327                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4328            }
4329        }
4330
4331        #[inline]
4332        unsafe fn decode(
4333            &mut self,
4334            decoder: &mut fidl::encoding::Decoder<'_, D>,
4335            offset: usize,
4336            _depth: fidl::encoding::Depth,
4337        ) -> fidl::Result<()> {
4338            decoder.debug_check_bounds::<Self>(offset);
4339            // Verify that padding bytes are zero.
4340            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4341            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4342            let mask = 0xffffffff00000000u64;
4343            let maskedval = padval & mask;
4344            if maskedval != 0 {
4345                return Err(fidl::Error::NonZeroPadding {
4346                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4347                });
4348            }
4349            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.src_addr, decoder, offset + 0, _depth)?;
4350            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 6, _depth)?;
4351            fidl::decode!(
4352                fidl::encoding::UnboundedVector<u8>,
4353                D,
4354                &mut self.data,
4355                decoder,
4356                offset + 16,
4357                _depth
4358            )?;
4359            Ok(())
4360        }
4361    }
4362
4363    impl fidl::encoding::ValueTypeMarker for EapolRequest {
4364        type Borrowed<'a> = &'a Self;
4365        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4366            value
4367        }
4368    }
4369
4370    unsafe impl fidl::encoding::TypeMarker for EapolRequest {
4371        type Owned = Self;
4372
4373        #[inline(always)]
4374        fn inline_align(_context: fidl::encoding::Context) -> usize {
4375            8
4376        }
4377
4378        #[inline(always)]
4379        fn inline_size(_context: fidl::encoding::Context) -> usize {
4380            32
4381        }
4382    }
4383
4384    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolRequest, D>
4385        for &EapolRequest
4386    {
4387        #[inline]
4388        unsafe fn encode(
4389            self,
4390            encoder: &mut fidl::encoding::Encoder<'_, D>,
4391            offset: usize,
4392            _depth: fidl::encoding::Depth,
4393        ) -> fidl::Result<()> {
4394            encoder.debug_check_bounds::<EapolRequest>(offset);
4395            // Delegate to tuple encoding.
4396            fidl::encoding::Encode::<EapolRequest, D>::encode(
4397                (
4398                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.src_addr),
4399                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.dst_addr),
4400                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4401                ),
4402                encoder, offset, _depth
4403            )
4404        }
4405    }
4406    unsafe impl<
4407        D: fidl::encoding::ResourceDialect,
4408        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4409        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4410        T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4411    > fidl::encoding::Encode<EapolRequest, D> for (T0, T1, T2)
4412    {
4413        #[inline]
4414        unsafe fn encode(
4415            self,
4416            encoder: &mut fidl::encoding::Encoder<'_, D>,
4417            offset: usize,
4418            depth: fidl::encoding::Depth,
4419        ) -> fidl::Result<()> {
4420            encoder.debug_check_bounds::<EapolRequest>(offset);
4421            // Zero out padding regions. There's no need to apply masks
4422            // because the unmasked parts will be overwritten by fields.
4423            unsafe {
4424                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4425                (ptr as *mut u64).write_unaligned(0);
4426            }
4427            // Write the fields.
4428            self.0.encode(encoder, offset + 0, depth)?;
4429            self.1.encode(encoder, offset + 6, depth)?;
4430            self.2.encode(encoder, offset + 16, depth)?;
4431            Ok(())
4432        }
4433    }
4434
4435    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolRequest {
4436        #[inline(always)]
4437        fn new_empty() -> Self {
4438            Self {
4439                src_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4440                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4441                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4442            }
4443        }
4444
4445        #[inline]
4446        unsafe fn decode(
4447            &mut self,
4448            decoder: &mut fidl::encoding::Decoder<'_, D>,
4449            offset: usize,
4450            _depth: fidl::encoding::Depth,
4451        ) -> fidl::Result<()> {
4452            decoder.debug_check_bounds::<Self>(offset);
4453            // Verify that padding bytes are zero.
4454            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4455            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4456            let mask = 0xffffffff00000000u64;
4457            let maskedval = padval & mask;
4458            if maskedval != 0 {
4459                return Err(fidl::Error::NonZeroPadding {
4460                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4461                });
4462            }
4463            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.src_addr, decoder, offset + 0, _depth)?;
4464            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 6, _depth)?;
4465            fidl::decode!(
4466                fidl::encoding::UnboundedVector<u8>,
4467                D,
4468                &mut self.data,
4469                decoder,
4470                offset + 16,
4471                _depth
4472            )?;
4473            Ok(())
4474        }
4475    }
4476
4477    impl fidl::encoding::ValueTypeMarker for MlmeGetSignalReportResponse {
4478        type Borrowed<'a> = &'a Self;
4479        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4480            value
4481        }
4482    }
4483
4484    unsafe impl fidl::encoding::TypeMarker for MlmeGetSignalReportResponse {
4485        type Owned = Self;
4486
4487        #[inline(always)]
4488        fn inline_align(_context: fidl::encoding::Context) -> usize {
4489            8
4490        }
4491
4492        #[inline(always)]
4493        fn inline_size(_context: fidl::encoding::Context) -> usize {
4494            16
4495        }
4496    }
4497
4498    unsafe impl<D: fidl::encoding::ResourceDialect>
4499        fidl::encoding::Encode<MlmeGetSignalReportResponse, D> for &MlmeGetSignalReportResponse
4500    {
4501        #[inline]
4502        unsafe fn encode(
4503            self,
4504            encoder: &mut fidl::encoding::Encoder<'_, D>,
4505            offset: usize,
4506            _depth: fidl::encoding::Depth,
4507        ) -> fidl::Result<()> {
4508            encoder.debug_check_bounds::<MlmeGetSignalReportResponse>(offset);
4509            // Delegate to tuple encoding.
4510            fidl::encoding::Encode::<MlmeGetSignalReportResponse, D>::encode(
4511                (
4512                    <fidl_fuchsia_wlan_stats__common::SignalReport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
4513                ),
4514                encoder, offset, _depth
4515            )
4516        }
4517    }
4518    unsafe impl<
4519        D: fidl::encoding::ResourceDialect,
4520        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::SignalReport, D>,
4521    > fidl::encoding::Encode<MlmeGetSignalReportResponse, D> for (T0,)
4522    {
4523        #[inline]
4524        unsafe fn encode(
4525            self,
4526            encoder: &mut fidl::encoding::Encoder<'_, D>,
4527            offset: usize,
4528            depth: fidl::encoding::Depth,
4529        ) -> fidl::Result<()> {
4530            encoder.debug_check_bounds::<MlmeGetSignalReportResponse>(offset);
4531            // Zero out padding regions. There's no need to apply masks
4532            // because the unmasked parts will be overwritten by fields.
4533            // Write the fields.
4534            self.0.encode(encoder, offset + 0, depth)?;
4535            Ok(())
4536        }
4537    }
4538
4539    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4540        for MlmeGetSignalReportResponse
4541    {
4542        #[inline(always)]
4543        fn new_empty() -> Self {
4544            Self { resp: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::SignalReport, D) }
4545        }
4546
4547        #[inline]
4548        unsafe fn decode(
4549            &mut self,
4550            decoder: &mut fidl::encoding::Decoder<'_, D>,
4551            offset: usize,
4552            _depth: fidl::encoding::Depth,
4553        ) -> fidl::Result<()> {
4554            decoder.debug_check_bounds::<Self>(offset);
4555            // Verify that padding bytes are zero.
4556            fidl::decode!(
4557                fidl_fuchsia_wlan_stats__common::SignalReport,
4558                D,
4559                &mut self.resp,
4560                decoder,
4561                offset + 0,
4562                _depth
4563            )?;
4564            Ok(())
4565        }
4566    }
4567
4568    impl fidl::encoding::ValueTypeMarker for MlmeQueryTelemetrySupportResponse {
4569        type Borrowed<'a> = &'a Self;
4570        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4571            value
4572        }
4573    }
4574
4575    unsafe impl fidl::encoding::TypeMarker for MlmeQueryTelemetrySupportResponse {
4576        type Owned = Self;
4577
4578        #[inline(always)]
4579        fn inline_align(_context: fidl::encoding::Context) -> usize {
4580            8
4581        }
4582
4583        #[inline(always)]
4584        fn inline_size(_context: fidl::encoding::Context) -> usize {
4585            16
4586        }
4587    }
4588
4589    unsafe impl<D: fidl::encoding::ResourceDialect>
4590        fidl::encoding::Encode<MlmeQueryTelemetrySupportResponse, D>
4591        for &MlmeQueryTelemetrySupportResponse
4592    {
4593        #[inline]
4594        unsafe fn encode(
4595            self,
4596            encoder: &mut fidl::encoding::Encoder<'_, D>,
4597            offset: usize,
4598            _depth: fidl::encoding::Depth,
4599        ) -> fidl::Result<()> {
4600            encoder.debug_check_bounds::<MlmeQueryTelemetrySupportResponse>(offset);
4601            // Delegate to tuple encoding.
4602            fidl::encoding::Encode::<MlmeQueryTelemetrySupportResponse, D>::encode(
4603                (
4604                    <fidl_fuchsia_wlan_stats__common::TelemetrySupport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
4605                ),
4606                encoder, offset, _depth
4607            )
4608        }
4609    }
4610    unsafe impl<
4611        D: fidl::encoding::ResourceDialect,
4612        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::TelemetrySupport, D>,
4613    > fidl::encoding::Encode<MlmeQueryTelemetrySupportResponse, D> for (T0,)
4614    {
4615        #[inline]
4616        unsafe fn encode(
4617            self,
4618            encoder: &mut fidl::encoding::Encoder<'_, D>,
4619            offset: usize,
4620            depth: fidl::encoding::Depth,
4621        ) -> fidl::Result<()> {
4622            encoder.debug_check_bounds::<MlmeQueryTelemetrySupportResponse>(offset);
4623            // Zero out padding regions. There's no need to apply masks
4624            // because the unmasked parts will be overwritten by fields.
4625            // Write the fields.
4626            self.0.encode(encoder, offset + 0, depth)?;
4627            Ok(())
4628        }
4629    }
4630
4631    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4632        for MlmeQueryTelemetrySupportResponse
4633    {
4634        #[inline(always)]
4635        fn new_empty() -> Self {
4636            Self { resp: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::TelemetrySupport, D) }
4637        }
4638
4639        #[inline]
4640        unsafe fn decode(
4641            &mut self,
4642            decoder: &mut fidl::encoding::Decoder<'_, D>,
4643            offset: usize,
4644            _depth: fidl::encoding::Depth,
4645        ) -> fidl::Result<()> {
4646            decoder.debug_check_bounds::<Self>(offset);
4647            // Verify that padding bytes are zero.
4648            fidl::decode!(
4649                fidl_fuchsia_wlan_stats__common::TelemetrySupport,
4650                D,
4651                &mut self.resp,
4652                decoder,
4653                offset + 0,
4654                _depth
4655            )?;
4656            Ok(())
4657        }
4658    }
4659
4660    impl fidl::encoding::ValueTypeMarker for MinstrelListResponse {
4661        type Borrowed<'a> = &'a Self;
4662        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4663            value
4664        }
4665    }
4666
4667    unsafe impl fidl::encoding::TypeMarker for MinstrelListResponse {
4668        type Owned = Self;
4669
4670        #[inline(always)]
4671        fn inline_align(_context: fidl::encoding::Context) -> usize {
4672            8
4673        }
4674
4675        #[inline(always)]
4676        fn inline_size(_context: fidl::encoding::Context) -> usize {
4677            16
4678        }
4679    }
4680
4681    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelListResponse, D>
4682        for &MinstrelListResponse
4683    {
4684        #[inline]
4685        unsafe fn encode(
4686            self,
4687            encoder: &mut fidl::encoding::Encoder<'_, D>,
4688            offset: usize,
4689            _depth: fidl::encoding::Depth,
4690        ) -> fidl::Result<()> {
4691            encoder.debug_check_bounds::<MinstrelListResponse>(offset);
4692            // Delegate to tuple encoding.
4693            fidl::encoding::Encode::<MinstrelListResponse, D>::encode(
4694                (
4695                    <fidl_fuchsia_wlan_minstrel__common::Peers as fidl::encoding::ValueTypeMarker>::borrow(&self.peers),
4696                ),
4697                encoder, offset, _depth
4698            )
4699        }
4700    }
4701    unsafe impl<
4702        D: fidl::encoding::ResourceDialect,
4703        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_minstrel__common::Peers, D>,
4704    > fidl::encoding::Encode<MinstrelListResponse, D> for (T0,)
4705    {
4706        #[inline]
4707        unsafe fn encode(
4708            self,
4709            encoder: &mut fidl::encoding::Encoder<'_, D>,
4710            offset: usize,
4711            depth: fidl::encoding::Depth,
4712        ) -> fidl::Result<()> {
4713            encoder.debug_check_bounds::<MinstrelListResponse>(offset);
4714            // Zero out padding regions. There's no need to apply masks
4715            // because the unmasked parts will be overwritten by fields.
4716            // Write the fields.
4717            self.0.encode(encoder, offset + 0, depth)?;
4718            Ok(())
4719        }
4720    }
4721
4722    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelListResponse {
4723        #[inline(always)]
4724        fn new_empty() -> Self {
4725            Self { peers: fidl::new_empty!(fidl_fuchsia_wlan_minstrel__common::Peers, D) }
4726        }
4727
4728        #[inline]
4729        unsafe fn decode(
4730            &mut self,
4731            decoder: &mut fidl::encoding::Decoder<'_, D>,
4732            offset: usize,
4733            _depth: fidl::encoding::Depth,
4734        ) -> fidl::Result<()> {
4735            decoder.debug_check_bounds::<Self>(offset);
4736            // Verify that padding bytes are zero.
4737            fidl::decode!(
4738                fidl_fuchsia_wlan_minstrel__common::Peers,
4739                D,
4740                &mut self.peers,
4741                decoder,
4742                offset + 0,
4743                _depth
4744            )?;
4745            Ok(())
4746        }
4747    }
4748
4749    impl fidl::encoding::ValueTypeMarker for MinstrelStatsRequest {
4750        type Borrowed<'a> = &'a Self;
4751        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4752            value
4753        }
4754    }
4755
4756    unsafe impl fidl::encoding::TypeMarker for MinstrelStatsRequest {
4757        type Owned = Self;
4758
4759        #[inline(always)]
4760        fn inline_align(_context: fidl::encoding::Context) -> usize {
4761            1
4762        }
4763
4764        #[inline(always)]
4765        fn inline_size(_context: fidl::encoding::Context) -> usize {
4766            6
4767        }
4768        #[inline(always)]
4769        fn encode_is_copy() -> bool {
4770            true
4771        }
4772
4773        #[inline(always)]
4774        fn decode_is_copy() -> bool {
4775            true
4776        }
4777    }
4778
4779    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelStatsRequest, D>
4780        for &MinstrelStatsRequest
4781    {
4782        #[inline]
4783        unsafe fn encode(
4784            self,
4785            encoder: &mut fidl::encoding::Encoder<'_, D>,
4786            offset: usize,
4787            _depth: fidl::encoding::Depth,
4788        ) -> fidl::Result<()> {
4789            encoder.debug_check_bounds::<MinstrelStatsRequest>(offset);
4790            unsafe {
4791                // Copy the object into the buffer.
4792                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
4793                (buf_ptr as *mut MinstrelStatsRequest)
4794                    .write_unaligned((self as *const MinstrelStatsRequest).read());
4795                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
4796                // done second because the memcpy will write garbage to these bytes.
4797            }
4798            Ok(())
4799        }
4800    }
4801    unsafe impl<
4802        D: fidl::encoding::ResourceDialect,
4803        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4804    > fidl::encoding::Encode<MinstrelStatsRequest, D> for (T0,)
4805    {
4806        #[inline]
4807        unsafe fn encode(
4808            self,
4809            encoder: &mut fidl::encoding::Encoder<'_, D>,
4810            offset: usize,
4811            depth: fidl::encoding::Depth,
4812        ) -> fidl::Result<()> {
4813            encoder.debug_check_bounds::<MinstrelStatsRequest>(offset);
4814            // Zero out padding regions. There's no need to apply masks
4815            // because the unmasked parts will be overwritten by fields.
4816            // Write the fields.
4817            self.0.encode(encoder, offset + 0, depth)?;
4818            Ok(())
4819        }
4820    }
4821
4822    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelStatsRequest {
4823        #[inline(always)]
4824        fn new_empty() -> Self {
4825            Self { peer_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
4826        }
4827
4828        #[inline]
4829        unsafe fn decode(
4830            &mut self,
4831            decoder: &mut fidl::encoding::Decoder<'_, D>,
4832            offset: usize,
4833            _depth: fidl::encoding::Depth,
4834        ) -> fidl::Result<()> {
4835            decoder.debug_check_bounds::<Self>(offset);
4836            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
4837            // Verify that padding bytes are zero.
4838            // Copy from the buffer into the object.
4839            unsafe {
4840                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
4841            }
4842            Ok(())
4843        }
4844    }
4845
4846    impl fidl::encoding::ValueTypeMarker for MinstrelStatsResponse {
4847        type Borrowed<'a> = &'a Self;
4848        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4849            value
4850        }
4851    }
4852
4853    unsafe impl fidl::encoding::TypeMarker for MinstrelStatsResponse {
4854        type Owned = Self;
4855
4856        #[inline(always)]
4857        fn inline_align(_context: fidl::encoding::Context) -> usize {
4858            8
4859        }
4860
4861        #[inline(always)]
4862        fn inline_size(_context: fidl::encoding::Context) -> usize {
4863            8
4864        }
4865    }
4866
4867    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelStatsResponse, D>
4868        for &MinstrelStatsResponse
4869    {
4870        #[inline]
4871        unsafe fn encode(
4872            self,
4873            encoder: &mut fidl::encoding::Encoder<'_, D>,
4874            offset: usize,
4875            _depth: fidl::encoding::Depth,
4876        ) -> fidl::Result<()> {
4877            encoder.debug_check_bounds::<MinstrelStatsResponse>(offset);
4878            // Delegate to tuple encoding.
4879            fidl::encoding::Encode::<MinstrelStatsResponse, D>::encode(
4880                (
4881                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer),
4882                ),
4883                encoder, offset, _depth
4884            )
4885        }
4886    }
4887    unsafe impl<
4888        D: fidl::encoding::ResourceDialect,
4889        T0: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer>, D>,
4890    > fidl::encoding::Encode<MinstrelStatsResponse, D> for (T0,)
4891    {
4892        #[inline]
4893        unsafe fn encode(
4894            self,
4895            encoder: &mut fidl::encoding::Encoder<'_, D>,
4896            offset: usize,
4897            depth: fidl::encoding::Depth,
4898        ) -> fidl::Result<()> {
4899            encoder.debug_check_bounds::<MinstrelStatsResponse>(offset);
4900            // Zero out padding regions. There's no need to apply masks
4901            // because the unmasked parts will be overwritten by fields.
4902            // Write the fields.
4903            self.0.encode(encoder, offset + 0, depth)?;
4904            Ok(())
4905        }
4906    }
4907
4908    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelStatsResponse {
4909        #[inline(always)]
4910        fn new_empty() -> Self {
4911            Self {
4912                peer: fidl::new_empty!(
4913                    fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer>,
4914                    D
4915                ),
4916            }
4917        }
4918
4919        #[inline]
4920        unsafe fn decode(
4921            &mut self,
4922            decoder: &mut fidl::encoding::Decoder<'_, D>,
4923            offset: usize,
4924            _depth: fidl::encoding::Depth,
4925        ) -> fidl::Result<()> {
4926            decoder.debug_check_bounds::<Self>(offset);
4927            // Verify that padding bytes are zero.
4928            fidl::decode!(
4929                fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer>,
4930                D,
4931                &mut self.peer,
4932                decoder,
4933                offset + 0,
4934                _depth
4935            )?;
4936            Ok(())
4937        }
4938    }
4939
4940    impl fidl::encoding::ValueTypeMarker for MlmeAssociateIndRequest {
4941        type Borrowed<'a> = &'a Self;
4942        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4943            value
4944        }
4945    }
4946
4947    unsafe impl fidl::encoding::TypeMarker for MlmeAssociateIndRequest {
4948        type Owned = Self;
4949
4950        #[inline(always)]
4951        fn inline_align(_context: fidl::encoding::Context) -> usize {
4952            8
4953        }
4954
4955        #[inline(always)]
4956        fn inline_size(_context: fidl::encoding::Context) -> usize {
4957            64
4958        }
4959    }
4960
4961    unsafe impl<D: fidl::encoding::ResourceDialect>
4962        fidl::encoding::Encode<MlmeAssociateIndRequest, D> for &MlmeAssociateIndRequest
4963    {
4964        #[inline]
4965        unsafe fn encode(
4966            self,
4967            encoder: &mut fidl::encoding::Encoder<'_, D>,
4968            offset: usize,
4969            _depth: fidl::encoding::Depth,
4970        ) -> fidl::Result<()> {
4971            encoder.debug_check_bounds::<MlmeAssociateIndRequest>(offset);
4972            // Delegate to tuple encoding.
4973            fidl::encoding::Encode::<MlmeAssociateIndRequest, D>::encode(
4974                (<AssociateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
4975                encoder,
4976                offset,
4977                _depth,
4978            )
4979        }
4980    }
4981    unsafe impl<
4982        D: fidl::encoding::ResourceDialect,
4983        T0: fidl::encoding::Encode<AssociateIndication, D>,
4984    > fidl::encoding::Encode<MlmeAssociateIndRequest, D> for (T0,)
4985    {
4986        #[inline]
4987        unsafe fn encode(
4988            self,
4989            encoder: &mut fidl::encoding::Encoder<'_, D>,
4990            offset: usize,
4991            depth: fidl::encoding::Depth,
4992        ) -> fidl::Result<()> {
4993            encoder.debug_check_bounds::<MlmeAssociateIndRequest>(offset);
4994            // Zero out padding regions. There's no need to apply masks
4995            // because the unmasked parts will be overwritten by fields.
4996            // Write the fields.
4997            self.0.encode(encoder, offset + 0, depth)?;
4998            Ok(())
4999        }
5000    }
5001
5002    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5003        for MlmeAssociateIndRequest
5004    {
5005        #[inline(always)]
5006        fn new_empty() -> Self {
5007            Self { ind: fidl::new_empty!(AssociateIndication, D) }
5008        }
5009
5010        #[inline]
5011        unsafe fn decode(
5012            &mut self,
5013            decoder: &mut fidl::encoding::Decoder<'_, D>,
5014            offset: usize,
5015            _depth: fidl::encoding::Depth,
5016        ) -> fidl::Result<()> {
5017            decoder.debug_check_bounds::<Self>(offset);
5018            // Verify that padding bytes are zero.
5019            fidl::decode!(AssociateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5020            Ok(())
5021        }
5022    }
5023
5024    impl fidl::encoding::ValueTypeMarker for MlmeAssociateRespRequest {
5025        type Borrowed<'a> = &'a Self;
5026        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5027            value
5028        }
5029    }
5030
5031    unsafe impl fidl::encoding::TypeMarker for MlmeAssociateRespRequest {
5032        type Owned = Self;
5033
5034        #[inline(always)]
5035        fn inline_align(_context: fidl::encoding::Context) -> usize {
5036            8
5037        }
5038
5039        #[inline(always)]
5040        fn inline_size(_context: fidl::encoding::Context) -> usize {
5041            32
5042        }
5043    }
5044
5045    unsafe impl<D: fidl::encoding::ResourceDialect>
5046        fidl::encoding::Encode<MlmeAssociateRespRequest, D> for &MlmeAssociateRespRequest
5047    {
5048        #[inline]
5049        unsafe fn encode(
5050            self,
5051            encoder: &mut fidl::encoding::Encoder<'_, D>,
5052            offset: usize,
5053            _depth: fidl::encoding::Depth,
5054        ) -> fidl::Result<()> {
5055            encoder.debug_check_bounds::<MlmeAssociateRespRequest>(offset);
5056            // Delegate to tuple encoding.
5057            fidl::encoding::Encode::<MlmeAssociateRespRequest, D>::encode(
5058                (<AssociateResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5059                encoder,
5060                offset,
5061                _depth,
5062            )
5063        }
5064    }
5065    unsafe impl<
5066        D: fidl::encoding::ResourceDialect,
5067        T0: fidl::encoding::Encode<AssociateResponse, D>,
5068    > fidl::encoding::Encode<MlmeAssociateRespRequest, D> for (T0,)
5069    {
5070        #[inline]
5071        unsafe fn encode(
5072            self,
5073            encoder: &mut fidl::encoding::Encoder<'_, D>,
5074            offset: usize,
5075            depth: fidl::encoding::Depth,
5076        ) -> fidl::Result<()> {
5077            encoder.debug_check_bounds::<MlmeAssociateRespRequest>(offset);
5078            // Zero out padding regions. There's no need to apply masks
5079            // because the unmasked parts will be overwritten by fields.
5080            // Write the fields.
5081            self.0.encode(encoder, offset + 0, depth)?;
5082            Ok(())
5083        }
5084    }
5085
5086    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5087        for MlmeAssociateRespRequest
5088    {
5089        #[inline(always)]
5090        fn new_empty() -> Self {
5091            Self { resp: fidl::new_empty!(AssociateResponse, D) }
5092        }
5093
5094        #[inline]
5095        unsafe fn decode(
5096            &mut self,
5097            decoder: &mut fidl::encoding::Decoder<'_, D>,
5098            offset: usize,
5099            _depth: fidl::encoding::Depth,
5100        ) -> fidl::Result<()> {
5101            decoder.debug_check_bounds::<Self>(offset);
5102            // Verify that padding bytes are zero.
5103            fidl::decode!(AssociateResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
5104            Ok(())
5105        }
5106    }
5107
5108    impl fidl::encoding::ValueTypeMarker for MlmeAuthenticateIndRequest {
5109        type Borrowed<'a> = &'a Self;
5110        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5111            value
5112        }
5113    }
5114
5115    unsafe impl fidl::encoding::TypeMarker for MlmeAuthenticateIndRequest {
5116        type Owned = Self;
5117
5118        #[inline(always)]
5119        fn inline_align(_context: fidl::encoding::Context) -> usize {
5120            4
5121        }
5122
5123        #[inline(always)]
5124        fn inline_size(_context: fidl::encoding::Context) -> usize {
5125            12
5126        }
5127    }
5128
5129    unsafe impl<D: fidl::encoding::ResourceDialect>
5130        fidl::encoding::Encode<MlmeAuthenticateIndRequest, D> for &MlmeAuthenticateIndRequest
5131    {
5132        #[inline]
5133        unsafe fn encode(
5134            self,
5135            encoder: &mut fidl::encoding::Encoder<'_, D>,
5136            offset: usize,
5137            _depth: fidl::encoding::Depth,
5138        ) -> fidl::Result<()> {
5139            encoder.debug_check_bounds::<MlmeAuthenticateIndRequest>(offset);
5140            // Delegate to tuple encoding.
5141            fidl::encoding::Encode::<MlmeAuthenticateIndRequest, D>::encode(
5142                (<AuthenticateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5143                encoder,
5144                offset,
5145                _depth,
5146            )
5147        }
5148    }
5149    unsafe impl<
5150        D: fidl::encoding::ResourceDialect,
5151        T0: fidl::encoding::Encode<AuthenticateIndication, D>,
5152    > fidl::encoding::Encode<MlmeAuthenticateIndRequest, D> for (T0,)
5153    {
5154        #[inline]
5155        unsafe fn encode(
5156            self,
5157            encoder: &mut fidl::encoding::Encoder<'_, D>,
5158            offset: usize,
5159            depth: fidl::encoding::Depth,
5160        ) -> fidl::Result<()> {
5161            encoder.debug_check_bounds::<MlmeAuthenticateIndRequest>(offset);
5162            // Zero out padding regions. There's no need to apply masks
5163            // because the unmasked parts will be overwritten by fields.
5164            // Write the fields.
5165            self.0.encode(encoder, offset + 0, depth)?;
5166            Ok(())
5167        }
5168    }
5169
5170    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5171        for MlmeAuthenticateIndRequest
5172    {
5173        #[inline(always)]
5174        fn new_empty() -> Self {
5175            Self { ind: fidl::new_empty!(AuthenticateIndication, D) }
5176        }
5177
5178        #[inline]
5179        unsafe fn decode(
5180            &mut self,
5181            decoder: &mut fidl::encoding::Decoder<'_, D>,
5182            offset: usize,
5183            _depth: fidl::encoding::Depth,
5184        ) -> fidl::Result<()> {
5185            decoder.debug_check_bounds::<Self>(offset);
5186            // Verify that padding bytes are zero.
5187            fidl::decode!(AuthenticateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5188            Ok(())
5189        }
5190    }
5191
5192    impl fidl::encoding::ValueTypeMarker for MlmeAuthenticateRespRequest {
5193        type Borrowed<'a> = &'a Self;
5194        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5195            value
5196        }
5197    }
5198
5199    unsafe impl fidl::encoding::TypeMarker for MlmeAuthenticateRespRequest {
5200        type Owned = Self;
5201
5202        #[inline(always)]
5203        fn inline_align(_context: fidl::encoding::Context) -> usize {
5204            4
5205        }
5206
5207        #[inline(always)]
5208        fn inline_size(_context: fidl::encoding::Context) -> usize {
5209            12
5210        }
5211    }
5212
5213    unsafe impl<D: fidl::encoding::ResourceDialect>
5214        fidl::encoding::Encode<MlmeAuthenticateRespRequest, D> for &MlmeAuthenticateRespRequest
5215    {
5216        #[inline]
5217        unsafe fn encode(
5218            self,
5219            encoder: &mut fidl::encoding::Encoder<'_, D>,
5220            offset: usize,
5221            _depth: fidl::encoding::Depth,
5222        ) -> fidl::Result<()> {
5223            encoder.debug_check_bounds::<MlmeAuthenticateRespRequest>(offset);
5224            // Delegate to tuple encoding.
5225            fidl::encoding::Encode::<MlmeAuthenticateRespRequest, D>::encode(
5226                (<AuthenticateResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5227                encoder,
5228                offset,
5229                _depth,
5230            )
5231        }
5232    }
5233    unsafe impl<
5234        D: fidl::encoding::ResourceDialect,
5235        T0: fidl::encoding::Encode<AuthenticateResponse, D>,
5236    > fidl::encoding::Encode<MlmeAuthenticateRespRequest, D> for (T0,)
5237    {
5238        #[inline]
5239        unsafe fn encode(
5240            self,
5241            encoder: &mut fidl::encoding::Encoder<'_, D>,
5242            offset: usize,
5243            depth: fidl::encoding::Depth,
5244        ) -> fidl::Result<()> {
5245            encoder.debug_check_bounds::<MlmeAuthenticateRespRequest>(offset);
5246            // Zero out padding regions. There's no need to apply masks
5247            // because the unmasked parts will be overwritten by fields.
5248            // Write the fields.
5249            self.0.encode(encoder, offset + 0, depth)?;
5250            Ok(())
5251        }
5252    }
5253
5254    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5255        for MlmeAuthenticateRespRequest
5256    {
5257        #[inline(always)]
5258        fn new_empty() -> Self {
5259            Self { resp: fidl::new_empty!(AuthenticateResponse, D) }
5260        }
5261
5262        #[inline]
5263        unsafe fn decode(
5264            &mut self,
5265            decoder: &mut fidl::encoding::Decoder<'_, D>,
5266            offset: usize,
5267            _depth: fidl::encoding::Depth,
5268        ) -> fidl::Result<()> {
5269            decoder.debug_check_bounds::<Self>(offset);
5270            // Verify that padding bytes are zero.
5271            fidl::decode!(AuthenticateResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
5272            Ok(())
5273        }
5274    }
5275
5276    impl fidl::encoding::ValueTypeMarker for MlmeConnectConfRequest {
5277        type Borrowed<'a> = &'a Self;
5278        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5279            value
5280        }
5281    }
5282
5283    unsafe impl fidl::encoding::TypeMarker for MlmeConnectConfRequest {
5284        type Owned = Self;
5285
5286        #[inline(always)]
5287        fn inline_align(_context: fidl::encoding::Context) -> usize {
5288            8
5289        }
5290
5291        #[inline(always)]
5292        fn inline_size(_context: fidl::encoding::Context) -> usize {
5293            32
5294        }
5295    }
5296
5297    unsafe impl<D: fidl::encoding::ResourceDialect>
5298        fidl::encoding::Encode<MlmeConnectConfRequest, D> for &MlmeConnectConfRequest
5299    {
5300        #[inline]
5301        unsafe fn encode(
5302            self,
5303            encoder: &mut fidl::encoding::Encoder<'_, D>,
5304            offset: usize,
5305            _depth: fidl::encoding::Depth,
5306        ) -> fidl::Result<()> {
5307            encoder.debug_check_bounds::<MlmeConnectConfRequest>(offset);
5308            // Delegate to tuple encoding.
5309            fidl::encoding::Encode::<MlmeConnectConfRequest, D>::encode(
5310                (<ConnectConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5311                encoder,
5312                offset,
5313                _depth,
5314            )
5315        }
5316    }
5317    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ConnectConfirm, D>>
5318        fidl::encoding::Encode<MlmeConnectConfRequest, D> for (T0,)
5319    {
5320        #[inline]
5321        unsafe fn encode(
5322            self,
5323            encoder: &mut fidl::encoding::Encoder<'_, D>,
5324            offset: usize,
5325            depth: fidl::encoding::Depth,
5326        ) -> fidl::Result<()> {
5327            encoder.debug_check_bounds::<MlmeConnectConfRequest>(offset);
5328            // Zero out padding regions. There's no need to apply masks
5329            // because the unmasked parts will be overwritten by fields.
5330            // Write the fields.
5331            self.0.encode(encoder, offset + 0, depth)?;
5332            Ok(())
5333        }
5334    }
5335
5336    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5337        for MlmeConnectConfRequest
5338    {
5339        #[inline(always)]
5340        fn new_empty() -> Self {
5341            Self { resp: fidl::new_empty!(ConnectConfirm, D) }
5342        }
5343
5344        #[inline]
5345        unsafe fn decode(
5346            &mut self,
5347            decoder: &mut fidl::encoding::Decoder<'_, D>,
5348            offset: usize,
5349            _depth: fidl::encoding::Depth,
5350        ) -> fidl::Result<()> {
5351            decoder.debug_check_bounds::<Self>(offset);
5352            // Verify that padding bytes are zero.
5353            fidl::decode!(ConnectConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
5354            Ok(())
5355        }
5356    }
5357
5358    impl fidl::encoding::ValueTypeMarker for MlmeConnectReqRequest {
5359        type Borrowed<'a> = &'a Self;
5360        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5361            value
5362        }
5363    }
5364
5365    unsafe impl fidl::encoding::TypeMarker for MlmeConnectReqRequest {
5366        type Owned = Self;
5367
5368        #[inline(always)]
5369        fn inline_align(_context: fidl::encoding::Context) -> usize {
5370            8
5371        }
5372
5373        #[inline(always)]
5374        fn inline_size(_context: fidl::encoding::Context) -> usize {
5375            96
5376        }
5377    }
5378
5379    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeConnectReqRequest, D>
5380        for &MlmeConnectReqRequest
5381    {
5382        #[inline]
5383        unsafe fn encode(
5384            self,
5385            encoder: &mut fidl::encoding::Encoder<'_, D>,
5386            offset: usize,
5387            _depth: fidl::encoding::Depth,
5388        ) -> fidl::Result<()> {
5389            encoder.debug_check_bounds::<MlmeConnectReqRequest>(offset);
5390            // Delegate to tuple encoding.
5391            fidl::encoding::Encode::<MlmeConnectReqRequest, D>::encode(
5392                (<ConnectRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5393                encoder,
5394                offset,
5395                _depth,
5396            )
5397        }
5398    }
5399    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ConnectRequest, D>>
5400        fidl::encoding::Encode<MlmeConnectReqRequest, D> for (T0,)
5401    {
5402        #[inline]
5403        unsafe fn encode(
5404            self,
5405            encoder: &mut fidl::encoding::Encoder<'_, D>,
5406            offset: usize,
5407            depth: fidl::encoding::Depth,
5408        ) -> fidl::Result<()> {
5409            encoder.debug_check_bounds::<MlmeConnectReqRequest>(offset);
5410            // Zero out padding regions. There's no need to apply masks
5411            // because the unmasked parts will be overwritten by fields.
5412            // Write the fields.
5413            self.0.encode(encoder, offset + 0, depth)?;
5414            Ok(())
5415        }
5416    }
5417
5418    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeConnectReqRequest {
5419        #[inline(always)]
5420        fn new_empty() -> Self {
5421            Self { req: fidl::new_empty!(ConnectRequest, D) }
5422        }
5423
5424        #[inline]
5425        unsafe fn decode(
5426            &mut self,
5427            decoder: &mut fidl::encoding::Decoder<'_, D>,
5428            offset: usize,
5429            _depth: fidl::encoding::Depth,
5430        ) -> fidl::Result<()> {
5431            decoder.debug_check_bounds::<Self>(offset);
5432            // Verify that padding bytes are zero.
5433            fidl::decode!(ConnectRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5434            Ok(())
5435        }
5436    }
5437
5438    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateConfRequest {
5439        type Borrowed<'a> = &'a Self;
5440        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5441            value
5442        }
5443    }
5444
5445    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateConfRequest {
5446        type Owned = Self;
5447
5448        #[inline(always)]
5449        fn inline_align(_context: fidl::encoding::Context) -> usize {
5450            1
5451        }
5452
5453        #[inline(always)]
5454        fn inline_size(_context: fidl::encoding::Context) -> usize {
5455            6
5456        }
5457        #[inline(always)]
5458        fn encode_is_copy() -> bool {
5459            true
5460        }
5461
5462        #[inline(always)]
5463        fn decode_is_copy() -> bool {
5464            true
5465        }
5466    }
5467
5468    unsafe impl<D: fidl::encoding::ResourceDialect>
5469        fidl::encoding::Encode<MlmeDeauthenticateConfRequest, D>
5470        for &MlmeDeauthenticateConfRequest
5471    {
5472        #[inline]
5473        unsafe fn encode(
5474            self,
5475            encoder: &mut fidl::encoding::Encoder<'_, D>,
5476            offset: usize,
5477            _depth: fidl::encoding::Depth,
5478        ) -> fidl::Result<()> {
5479            encoder.debug_check_bounds::<MlmeDeauthenticateConfRequest>(offset);
5480            unsafe {
5481                // Copy the object into the buffer.
5482                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5483                (buf_ptr as *mut MlmeDeauthenticateConfRequest)
5484                    .write_unaligned((self as *const MlmeDeauthenticateConfRequest).read());
5485                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
5486                // done second because the memcpy will write garbage to these bytes.
5487            }
5488            Ok(())
5489        }
5490    }
5491    unsafe impl<
5492        D: fidl::encoding::ResourceDialect,
5493        T0: fidl::encoding::Encode<DeauthenticateConfirm, D>,
5494    > fidl::encoding::Encode<MlmeDeauthenticateConfRequest, D> for (T0,)
5495    {
5496        #[inline]
5497        unsafe fn encode(
5498            self,
5499            encoder: &mut fidl::encoding::Encoder<'_, D>,
5500            offset: usize,
5501            depth: fidl::encoding::Depth,
5502        ) -> fidl::Result<()> {
5503            encoder.debug_check_bounds::<MlmeDeauthenticateConfRequest>(offset);
5504            // Zero out padding regions. There's no need to apply masks
5505            // because the unmasked parts will be overwritten by fields.
5506            // Write the fields.
5507            self.0.encode(encoder, offset + 0, depth)?;
5508            Ok(())
5509        }
5510    }
5511
5512    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5513        for MlmeDeauthenticateConfRequest
5514    {
5515        #[inline(always)]
5516        fn new_empty() -> Self {
5517            Self { resp: fidl::new_empty!(DeauthenticateConfirm, D) }
5518        }
5519
5520        #[inline]
5521        unsafe fn decode(
5522            &mut self,
5523            decoder: &mut fidl::encoding::Decoder<'_, D>,
5524            offset: usize,
5525            _depth: fidl::encoding::Depth,
5526        ) -> fidl::Result<()> {
5527            decoder.debug_check_bounds::<Self>(offset);
5528            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5529            // Verify that padding bytes are zero.
5530            // Copy from the buffer into the object.
5531            unsafe {
5532                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
5533            }
5534            Ok(())
5535        }
5536    }
5537
5538    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateIndRequest {
5539        type Borrowed<'a> = &'a Self;
5540        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5541            value
5542        }
5543    }
5544
5545    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateIndRequest {
5546        type Owned = Self;
5547
5548        #[inline(always)]
5549        fn inline_align(_context: fidl::encoding::Context) -> usize {
5550            2
5551        }
5552
5553        #[inline(always)]
5554        fn inline_size(_context: fidl::encoding::Context) -> usize {
5555            10
5556        }
5557    }
5558
5559    unsafe impl<D: fidl::encoding::ResourceDialect>
5560        fidl::encoding::Encode<MlmeDeauthenticateIndRequest, D> for &MlmeDeauthenticateIndRequest
5561    {
5562        #[inline]
5563        unsafe fn encode(
5564            self,
5565            encoder: &mut fidl::encoding::Encoder<'_, D>,
5566            offset: usize,
5567            _depth: fidl::encoding::Depth,
5568        ) -> fidl::Result<()> {
5569            encoder.debug_check_bounds::<MlmeDeauthenticateIndRequest>(offset);
5570            // Delegate to tuple encoding.
5571            fidl::encoding::Encode::<MlmeDeauthenticateIndRequest, D>::encode(
5572                (<DeauthenticateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5573                encoder,
5574                offset,
5575                _depth,
5576            )
5577        }
5578    }
5579    unsafe impl<
5580        D: fidl::encoding::ResourceDialect,
5581        T0: fidl::encoding::Encode<DeauthenticateIndication, D>,
5582    > fidl::encoding::Encode<MlmeDeauthenticateIndRequest, D> for (T0,)
5583    {
5584        #[inline]
5585        unsafe fn encode(
5586            self,
5587            encoder: &mut fidl::encoding::Encoder<'_, D>,
5588            offset: usize,
5589            depth: fidl::encoding::Depth,
5590        ) -> fidl::Result<()> {
5591            encoder.debug_check_bounds::<MlmeDeauthenticateIndRequest>(offset);
5592            // Zero out padding regions. There's no need to apply masks
5593            // because the unmasked parts will be overwritten by fields.
5594            // Write the fields.
5595            self.0.encode(encoder, offset + 0, depth)?;
5596            Ok(())
5597        }
5598    }
5599
5600    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5601        for MlmeDeauthenticateIndRequest
5602    {
5603        #[inline(always)]
5604        fn new_empty() -> Self {
5605            Self { ind: fidl::new_empty!(DeauthenticateIndication, D) }
5606        }
5607
5608        #[inline]
5609        unsafe fn decode(
5610            &mut self,
5611            decoder: &mut fidl::encoding::Decoder<'_, D>,
5612            offset: usize,
5613            _depth: fidl::encoding::Depth,
5614        ) -> fidl::Result<()> {
5615            decoder.debug_check_bounds::<Self>(offset);
5616            // Verify that padding bytes are zero.
5617            fidl::decode!(DeauthenticateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5618            Ok(())
5619        }
5620    }
5621
5622    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateReqRequest {
5623        type Borrowed<'a> = &'a Self;
5624        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5625            value
5626        }
5627    }
5628
5629    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateReqRequest {
5630        type Owned = Self;
5631
5632        #[inline(always)]
5633        fn inline_align(_context: fidl::encoding::Context) -> usize {
5634            2
5635        }
5636
5637        #[inline(always)]
5638        fn inline_size(_context: fidl::encoding::Context) -> usize {
5639            8
5640        }
5641    }
5642
5643    unsafe impl<D: fidl::encoding::ResourceDialect>
5644        fidl::encoding::Encode<MlmeDeauthenticateReqRequest, D> for &MlmeDeauthenticateReqRequest
5645    {
5646        #[inline]
5647        unsafe fn encode(
5648            self,
5649            encoder: &mut fidl::encoding::Encoder<'_, D>,
5650            offset: usize,
5651            _depth: fidl::encoding::Depth,
5652        ) -> fidl::Result<()> {
5653            encoder.debug_check_bounds::<MlmeDeauthenticateReqRequest>(offset);
5654            // Delegate to tuple encoding.
5655            fidl::encoding::Encode::<MlmeDeauthenticateReqRequest, D>::encode(
5656                (<DeauthenticateRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5657                encoder,
5658                offset,
5659                _depth,
5660            )
5661        }
5662    }
5663    unsafe impl<
5664        D: fidl::encoding::ResourceDialect,
5665        T0: fidl::encoding::Encode<DeauthenticateRequest, D>,
5666    > fidl::encoding::Encode<MlmeDeauthenticateReqRequest, D> for (T0,)
5667    {
5668        #[inline]
5669        unsafe fn encode(
5670            self,
5671            encoder: &mut fidl::encoding::Encoder<'_, D>,
5672            offset: usize,
5673            depth: fidl::encoding::Depth,
5674        ) -> fidl::Result<()> {
5675            encoder.debug_check_bounds::<MlmeDeauthenticateReqRequest>(offset);
5676            // Zero out padding regions. There's no need to apply masks
5677            // because the unmasked parts will be overwritten by fields.
5678            // Write the fields.
5679            self.0.encode(encoder, offset + 0, depth)?;
5680            Ok(())
5681        }
5682    }
5683
5684    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5685        for MlmeDeauthenticateReqRequest
5686    {
5687        #[inline(always)]
5688        fn new_empty() -> Self {
5689            Self { req: fidl::new_empty!(DeauthenticateRequest, D) }
5690        }
5691
5692        #[inline]
5693        unsafe fn decode(
5694            &mut self,
5695            decoder: &mut fidl::encoding::Decoder<'_, D>,
5696            offset: usize,
5697            _depth: fidl::encoding::Depth,
5698        ) -> fidl::Result<()> {
5699            decoder.debug_check_bounds::<Self>(offset);
5700            // Verify that padding bytes are zero.
5701            fidl::decode!(DeauthenticateRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5702            Ok(())
5703        }
5704    }
5705
5706    impl fidl::encoding::ValueTypeMarker for MlmeDeleteKeysReqRequest {
5707        type Borrowed<'a> = &'a Self;
5708        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5709            value
5710        }
5711    }
5712
5713    unsafe impl fidl::encoding::TypeMarker for MlmeDeleteKeysReqRequest {
5714        type Owned = Self;
5715
5716        #[inline(always)]
5717        fn inline_align(_context: fidl::encoding::Context) -> usize {
5718            8
5719        }
5720
5721        #[inline(always)]
5722        fn inline_size(_context: fidl::encoding::Context) -> usize {
5723            16
5724        }
5725    }
5726
5727    unsafe impl<D: fidl::encoding::ResourceDialect>
5728        fidl::encoding::Encode<MlmeDeleteKeysReqRequest, D> for &MlmeDeleteKeysReqRequest
5729    {
5730        #[inline]
5731        unsafe fn encode(
5732            self,
5733            encoder: &mut fidl::encoding::Encoder<'_, D>,
5734            offset: usize,
5735            _depth: fidl::encoding::Depth,
5736        ) -> fidl::Result<()> {
5737            encoder.debug_check_bounds::<MlmeDeleteKeysReqRequest>(offset);
5738            // Delegate to tuple encoding.
5739            fidl::encoding::Encode::<MlmeDeleteKeysReqRequest, D>::encode(
5740                (<DeleteKeysRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5741                encoder,
5742                offset,
5743                _depth,
5744            )
5745        }
5746    }
5747    unsafe impl<
5748        D: fidl::encoding::ResourceDialect,
5749        T0: fidl::encoding::Encode<DeleteKeysRequest, D>,
5750    > fidl::encoding::Encode<MlmeDeleteKeysReqRequest, D> for (T0,)
5751    {
5752        #[inline]
5753        unsafe fn encode(
5754            self,
5755            encoder: &mut fidl::encoding::Encoder<'_, D>,
5756            offset: usize,
5757            depth: fidl::encoding::Depth,
5758        ) -> fidl::Result<()> {
5759            encoder.debug_check_bounds::<MlmeDeleteKeysReqRequest>(offset);
5760            // Zero out padding regions. There's no need to apply masks
5761            // because the unmasked parts will be overwritten by fields.
5762            // Write the fields.
5763            self.0.encode(encoder, offset + 0, depth)?;
5764            Ok(())
5765        }
5766    }
5767
5768    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5769        for MlmeDeleteKeysReqRequest
5770    {
5771        #[inline(always)]
5772        fn new_empty() -> Self {
5773            Self { req: fidl::new_empty!(DeleteKeysRequest, D) }
5774        }
5775
5776        #[inline]
5777        unsafe fn decode(
5778            &mut self,
5779            decoder: &mut fidl::encoding::Decoder<'_, D>,
5780            offset: usize,
5781            _depth: fidl::encoding::Depth,
5782        ) -> fidl::Result<()> {
5783            decoder.debug_check_bounds::<Self>(offset);
5784            // Verify that padding bytes are zero.
5785            fidl::decode!(DeleteKeysRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5786            Ok(())
5787        }
5788    }
5789
5790    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateConfRequest {
5791        type Borrowed<'a> = &'a Self;
5792        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5793            value
5794        }
5795    }
5796
5797    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateConfRequest {
5798        type Owned = Self;
5799
5800        #[inline(always)]
5801        fn inline_align(_context: fidl::encoding::Context) -> usize {
5802            4
5803        }
5804
5805        #[inline(always)]
5806        fn inline_size(_context: fidl::encoding::Context) -> usize {
5807            4
5808        }
5809        #[inline(always)]
5810        fn encode_is_copy() -> bool {
5811            true
5812        }
5813
5814        #[inline(always)]
5815        fn decode_is_copy() -> bool {
5816            true
5817        }
5818    }
5819
5820    unsafe impl<D: fidl::encoding::ResourceDialect>
5821        fidl::encoding::Encode<MlmeDisassociateConfRequest, D> for &MlmeDisassociateConfRequest
5822    {
5823        #[inline]
5824        unsafe fn encode(
5825            self,
5826            encoder: &mut fidl::encoding::Encoder<'_, D>,
5827            offset: usize,
5828            _depth: fidl::encoding::Depth,
5829        ) -> fidl::Result<()> {
5830            encoder.debug_check_bounds::<MlmeDisassociateConfRequest>(offset);
5831            unsafe {
5832                // Copy the object into the buffer.
5833                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5834                (buf_ptr as *mut MlmeDisassociateConfRequest)
5835                    .write_unaligned((self as *const MlmeDisassociateConfRequest).read());
5836                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
5837                // done second because the memcpy will write garbage to these bytes.
5838            }
5839            Ok(())
5840        }
5841    }
5842    unsafe impl<
5843        D: fidl::encoding::ResourceDialect,
5844        T0: fidl::encoding::Encode<DisassociateConfirm, D>,
5845    > fidl::encoding::Encode<MlmeDisassociateConfRequest, D> for (T0,)
5846    {
5847        #[inline]
5848        unsafe fn encode(
5849            self,
5850            encoder: &mut fidl::encoding::Encoder<'_, D>,
5851            offset: usize,
5852            depth: fidl::encoding::Depth,
5853        ) -> fidl::Result<()> {
5854            encoder.debug_check_bounds::<MlmeDisassociateConfRequest>(offset);
5855            // Zero out padding regions. There's no need to apply masks
5856            // because the unmasked parts will be overwritten by fields.
5857            // Write the fields.
5858            self.0.encode(encoder, offset + 0, depth)?;
5859            Ok(())
5860        }
5861    }
5862
5863    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5864        for MlmeDisassociateConfRequest
5865    {
5866        #[inline(always)]
5867        fn new_empty() -> Self {
5868            Self { resp: fidl::new_empty!(DisassociateConfirm, D) }
5869        }
5870
5871        #[inline]
5872        unsafe fn decode(
5873            &mut self,
5874            decoder: &mut fidl::encoding::Decoder<'_, D>,
5875            offset: usize,
5876            _depth: fidl::encoding::Depth,
5877        ) -> fidl::Result<()> {
5878            decoder.debug_check_bounds::<Self>(offset);
5879            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5880            // Verify that padding bytes are zero.
5881            // Copy from the buffer into the object.
5882            unsafe {
5883                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
5884            }
5885            Ok(())
5886        }
5887    }
5888
5889    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateIndRequest {
5890        type Borrowed<'a> = &'a Self;
5891        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5892            value
5893        }
5894    }
5895
5896    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateIndRequest {
5897        type Owned = Self;
5898
5899        #[inline(always)]
5900        fn inline_align(_context: fidl::encoding::Context) -> usize {
5901            2
5902        }
5903
5904        #[inline(always)]
5905        fn inline_size(_context: fidl::encoding::Context) -> usize {
5906            10
5907        }
5908    }
5909
5910    unsafe impl<D: fidl::encoding::ResourceDialect>
5911        fidl::encoding::Encode<MlmeDisassociateIndRequest, D> for &MlmeDisassociateIndRequest
5912    {
5913        #[inline]
5914        unsafe fn encode(
5915            self,
5916            encoder: &mut fidl::encoding::Encoder<'_, D>,
5917            offset: usize,
5918            _depth: fidl::encoding::Depth,
5919        ) -> fidl::Result<()> {
5920            encoder.debug_check_bounds::<MlmeDisassociateIndRequest>(offset);
5921            // Delegate to tuple encoding.
5922            fidl::encoding::Encode::<MlmeDisassociateIndRequest, D>::encode(
5923                (<DisassociateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5924                encoder,
5925                offset,
5926                _depth,
5927            )
5928        }
5929    }
5930    unsafe impl<
5931        D: fidl::encoding::ResourceDialect,
5932        T0: fidl::encoding::Encode<DisassociateIndication, D>,
5933    > fidl::encoding::Encode<MlmeDisassociateIndRequest, D> for (T0,)
5934    {
5935        #[inline]
5936        unsafe fn encode(
5937            self,
5938            encoder: &mut fidl::encoding::Encoder<'_, D>,
5939            offset: usize,
5940            depth: fidl::encoding::Depth,
5941        ) -> fidl::Result<()> {
5942            encoder.debug_check_bounds::<MlmeDisassociateIndRequest>(offset);
5943            // Zero out padding regions. There's no need to apply masks
5944            // because the unmasked parts will be overwritten by fields.
5945            // Write the fields.
5946            self.0.encode(encoder, offset + 0, depth)?;
5947            Ok(())
5948        }
5949    }
5950
5951    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5952        for MlmeDisassociateIndRequest
5953    {
5954        #[inline(always)]
5955        fn new_empty() -> Self {
5956            Self { ind: fidl::new_empty!(DisassociateIndication, D) }
5957        }
5958
5959        #[inline]
5960        unsafe fn decode(
5961            &mut self,
5962            decoder: &mut fidl::encoding::Decoder<'_, D>,
5963            offset: usize,
5964            _depth: fidl::encoding::Depth,
5965        ) -> fidl::Result<()> {
5966            decoder.debug_check_bounds::<Self>(offset);
5967            // Verify that padding bytes are zero.
5968            fidl::decode!(DisassociateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5969            Ok(())
5970        }
5971    }
5972
5973    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateReqRequest {
5974        type Borrowed<'a> = &'a Self;
5975        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5976            value
5977        }
5978    }
5979
5980    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateReqRequest {
5981        type Owned = Self;
5982
5983        #[inline(always)]
5984        fn inline_align(_context: fidl::encoding::Context) -> usize {
5985            2
5986        }
5987
5988        #[inline(always)]
5989        fn inline_size(_context: fidl::encoding::Context) -> usize {
5990            8
5991        }
5992    }
5993
5994    unsafe impl<D: fidl::encoding::ResourceDialect>
5995        fidl::encoding::Encode<MlmeDisassociateReqRequest, D> for &MlmeDisassociateReqRequest
5996    {
5997        #[inline]
5998        unsafe fn encode(
5999            self,
6000            encoder: &mut fidl::encoding::Encoder<'_, D>,
6001            offset: usize,
6002            _depth: fidl::encoding::Depth,
6003        ) -> fidl::Result<()> {
6004            encoder.debug_check_bounds::<MlmeDisassociateReqRequest>(offset);
6005            // Delegate to tuple encoding.
6006            fidl::encoding::Encode::<MlmeDisassociateReqRequest, D>::encode(
6007                (<DisassociateRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6008                encoder,
6009                offset,
6010                _depth,
6011            )
6012        }
6013    }
6014    unsafe impl<
6015        D: fidl::encoding::ResourceDialect,
6016        T0: fidl::encoding::Encode<DisassociateRequest, D>,
6017    > fidl::encoding::Encode<MlmeDisassociateReqRequest, D> for (T0,)
6018    {
6019        #[inline]
6020        unsafe fn encode(
6021            self,
6022            encoder: &mut fidl::encoding::Encoder<'_, D>,
6023            offset: usize,
6024            depth: fidl::encoding::Depth,
6025        ) -> fidl::Result<()> {
6026            encoder.debug_check_bounds::<MlmeDisassociateReqRequest>(offset);
6027            // Zero out padding regions. There's no need to apply masks
6028            // because the unmasked parts will be overwritten by fields.
6029            // Write the fields.
6030            self.0.encode(encoder, offset + 0, depth)?;
6031            Ok(())
6032        }
6033    }
6034
6035    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6036        for MlmeDisassociateReqRequest
6037    {
6038        #[inline(always)]
6039        fn new_empty() -> Self {
6040            Self { req: fidl::new_empty!(DisassociateRequest, D) }
6041        }
6042
6043        #[inline]
6044        unsafe fn decode(
6045            &mut self,
6046            decoder: &mut fidl::encoding::Decoder<'_, D>,
6047            offset: usize,
6048            _depth: fidl::encoding::Depth,
6049        ) -> fidl::Result<()> {
6050            decoder.debug_check_bounds::<Self>(offset);
6051            // Verify that padding bytes are zero.
6052            fidl::decode!(DisassociateRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6053            Ok(())
6054        }
6055    }
6056
6057    impl fidl::encoding::ValueTypeMarker for MlmeEapolConfRequest {
6058        type Borrowed<'a> = &'a Self;
6059        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6060            value
6061        }
6062    }
6063
6064    unsafe impl fidl::encoding::TypeMarker for MlmeEapolConfRequest {
6065        type Owned = Self;
6066
6067        #[inline(always)]
6068        fn inline_align(_context: fidl::encoding::Context) -> usize {
6069            4
6070        }
6071
6072        #[inline(always)]
6073        fn inline_size(_context: fidl::encoding::Context) -> usize {
6074            12
6075        }
6076    }
6077
6078    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolConfRequest, D>
6079        for &MlmeEapolConfRequest
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::<MlmeEapolConfRequest>(offset);
6089            // Delegate to tuple encoding.
6090            fidl::encoding::Encode::<MlmeEapolConfRequest, D>::encode(
6091                (<EapolConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6092                encoder,
6093                offset,
6094                _depth,
6095            )
6096        }
6097    }
6098    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolConfirm, D>>
6099        fidl::encoding::Encode<MlmeEapolConfRequest, D> for (T0,)
6100    {
6101        #[inline]
6102        unsafe fn encode(
6103            self,
6104            encoder: &mut fidl::encoding::Encoder<'_, D>,
6105            offset: usize,
6106            depth: fidl::encoding::Depth,
6107        ) -> fidl::Result<()> {
6108            encoder.debug_check_bounds::<MlmeEapolConfRequest>(offset);
6109            // Zero out padding regions. There's no need to apply masks
6110            // because the unmasked parts will be overwritten by fields.
6111            // Write the fields.
6112            self.0.encode(encoder, offset + 0, depth)?;
6113            Ok(())
6114        }
6115    }
6116
6117    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolConfRequest {
6118        #[inline(always)]
6119        fn new_empty() -> Self {
6120            Self { resp: fidl::new_empty!(EapolConfirm, D) }
6121        }
6122
6123        #[inline]
6124        unsafe fn decode(
6125            &mut self,
6126            decoder: &mut fidl::encoding::Decoder<'_, D>,
6127            offset: usize,
6128            _depth: fidl::encoding::Depth,
6129        ) -> fidl::Result<()> {
6130            decoder.debug_check_bounds::<Self>(offset);
6131            // Verify that padding bytes are zero.
6132            fidl::decode!(EapolConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
6133            Ok(())
6134        }
6135    }
6136
6137    impl fidl::encoding::ValueTypeMarker for MlmeEapolIndRequest {
6138        type Borrowed<'a> = &'a Self;
6139        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6140            value
6141        }
6142    }
6143
6144    unsafe impl fidl::encoding::TypeMarker for MlmeEapolIndRequest {
6145        type Owned = Self;
6146
6147        #[inline(always)]
6148        fn inline_align(_context: fidl::encoding::Context) -> usize {
6149            8
6150        }
6151
6152        #[inline(always)]
6153        fn inline_size(_context: fidl::encoding::Context) -> usize {
6154            32
6155        }
6156    }
6157
6158    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolIndRequest, D>
6159        for &MlmeEapolIndRequest
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::<MlmeEapolIndRequest>(offset);
6169            // Delegate to tuple encoding.
6170            fidl::encoding::Encode::<MlmeEapolIndRequest, D>::encode(
6171                (<EapolIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
6172                encoder,
6173                offset,
6174                _depth,
6175            )
6176        }
6177    }
6178    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolIndication, D>>
6179        fidl::encoding::Encode<MlmeEapolIndRequest, D> for (T0,)
6180    {
6181        #[inline]
6182        unsafe fn encode(
6183            self,
6184            encoder: &mut fidl::encoding::Encoder<'_, D>,
6185            offset: usize,
6186            depth: fidl::encoding::Depth,
6187        ) -> fidl::Result<()> {
6188            encoder.debug_check_bounds::<MlmeEapolIndRequest>(offset);
6189            // Zero out padding regions. There's no need to apply masks
6190            // because the unmasked parts will be overwritten by fields.
6191            // Write the fields.
6192            self.0.encode(encoder, offset + 0, depth)?;
6193            Ok(())
6194        }
6195    }
6196
6197    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolIndRequest {
6198        #[inline(always)]
6199        fn new_empty() -> Self {
6200            Self { ind: fidl::new_empty!(EapolIndication, D) }
6201        }
6202
6203        #[inline]
6204        unsafe fn decode(
6205            &mut self,
6206            decoder: &mut fidl::encoding::Decoder<'_, D>,
6207            offset: usize,
6208            _depth: fidl::encoding::Depth,
6209        ) -> fidl::Result<()> {
6210            decoder.debug_check_bounds::<Self>(offset);
6211            // Verify that padding bytes are zero.
6212            fidl::decode!(EapolIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
6213            Ok(())
6214        }
6215    }
6216
6217    impl fidl::encoding::ValueTypeMarker for MlmeEapolReqRequest {
6218        type Borrowed<'a> = &'a Self;
6219        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6220            value
6221        }
6222    }
6223
6224    unsafe impl fidl::encoding::TypeMarker for MlmeEapolReqRequest {
6225        type Owned = Self;
6226
6227        #[inline(always)]
6228        fn inline_align(_context: fidl::encoding::Context) -> usize {
6229            8
6230        }
6231
6232        #[inline(always)]
6233        fn inline_size(_context: fidl::encoding::Context) -> usize {
6234            32
6235        }
6236    }
6237
6238    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolReqRequest, D>
6239        for &MlmeEapolReqRequest
6240    {
6241        #[inline]
6242        unsafe fn encode(
6243            self,
6244            encoder: &mut fidl::encoding::Encoder<'_, D>,
6245            offset: usize,
6246            _depth: fidl::encoding::Depth,
6247        ) -> fidl::Result<()> {
6248            encoder.debug_check_bounds::<MlmeEapolReqRequest>(offset);
6249            // Delegate to tuple encoding.
6250            fidl::encoding::Encode::<MlmeEapolReqRequest, D>::encode(
6251                (<EapolRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6252                encoder,
6253                offset,
6254                _depth,
6255            )
6256        }
6257    }
6258    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolRequest, D>>
6259        fidl::encoding::Encode<MlmeEapolReqRequest, D> for (T0,)
6260    {
6261        #[inline]
6262        unsafe fn encode(
6263            self,
6264            encoder: &mut fidl::encoding::Encoder<'_, D>,
6265            offset: usize,
6266            depth: fidl::encoding::Depth,
6267        ) -> fidl::Result<()> {
6268            encoder.debug_check_bounds::<MlmeEapolReqRequest>(offset);
6269            // Zero out padding regions. There's no need to apply masks
6270            // because the unmasked parts will be overwritten by fields.
6271            // Write the fields.
6272            self.0.encode(encoder, offset + 0, depth)?;
6273            Ok(())
6274        }
6275    }
6276
6277    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolReqRequest {
6278        #[inline(always)]
6279        fn new_empty() -> Self {
6280            Self { req: fidl::new_empty!(EapolRequest, D) }
6281        }
6282
6283        #[inline]
6284        unsafe fn decode(
6285            &mut self,
6286            decoder: &mut fidl::encoding::Decoder<'_, D>,
6287            offset: usize,
6288            _depth: fidl::encoding::Depth,
6289        ) -> fidl::Result<()> {
6290            decoder.debug_check_bounds::<Self>(offset);
6291            // Verify that padding bytes are zero.
6292            fidl::decode!(EapolRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6293            Ok(())
6294        }
6295    }
6296
6297    impl fidl::encoding::ValueTypeMarker for MlmeFinalizeAssociationReqRequest {
6298        type Borrowed<'a> = &'a Self;
6299        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6300            value
6301        }
6302    }
6303
6304    unsafe impl fidl::encoding::TypeMarker for MlmeFinalizeAssociationReqRequest {
6305        type Owned = Self;
6306
6307        #[inline(always)]
6308        fn inline_align(_context: fidl::encoding::Context) -> usize {
6309            8
6310        }
6311
6312        #[inline(always)]
6313        fn inline_size(_context: fidl::encoding::Context) -> usize {
6314            56
6315        }
6316    }
6317
6318    unsafe impl<D: fidl::encoding::ResourceDialect>
6319        fidl::encoding::Encode<MlmeFinalizeAssociationReqRequest, D>
6320        for &MlmeFinalizeAssociationReqRequest
6321    {
6322        #[inline]
6323        unsafe fn encode(
6324            self,
6325            encoder: &mut fidl::encoding::Encoder<'_, D>,
6326            offset: usize,
6327            _depth: fidl::encoding::Depth,
6328        ) -> fidl::Result<()> {
6329            encoder.debug_check_bounds::<MlmeFinalizeAssociationReqRequest>(offset);
6330            // Delegate to tuple encoding.
6331            fidl::encoding::Encode::<MlmeFinalizeAssociationReqRequest, D>::encode(
6332                (<NegotiatedCapabilities as fidl::encoding::ValueTypeMarker>::borrow(
6333                    &self.negotiated_capabilities,
6334                ),),
6335                encoder,
6336                offset,
6337                _depth,
6338            )
6339        }
6340    }
6341    unsafe impl<
6342        D: fidl::encoding::ResourceDialect,
6343        T0: fidl::encoding::Encode<NegotiatedCapabilities, D>,
6344    > fidl::encoding::Encode<MlmeFinalizeAssociationReqRequest, D> for (T0,)
6345    {
6346        #[inline]
6347        unsafe fn encode(
6348            self,
6349            encoder: &mut fidl::encoding::Encoder<'_, D>,
6350            offset: usize,
6351            depth: fidl::encoding::Depth,
6352        ) -> fidl::Result<()> {
6353            encoder.debug_check_bounds::<MlmeFinalizeAssociationReqRequest>(offset);
6354            // Zero out padding regions. There's no need to apply masks
6355            // because the unmasked parts will be overwritten by fields.
6356            // Write the fields.
6357            self.0.encode(encoder, offset + 0, depth)?;
6358            Ok(())
6359        }
6360    }
6361
6362    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6363        for MlmeFinalizeAssociationReqRequest
6364    {
6365        #[inline(always)]
6366        fn new_empty() -> Self {
6367            Self { negotiated_capabilities: fidl::new_empty!(NegotiatedCapabilities, D) }
6368        }
6369
6370        #[inline]
6371        unsafe fn decode(
6372            &mut self,
6373            decoder: &mut fidl::encoding::Decoder<'_, D>,
6374            offset: usize,
6375            _depth: fidl::encoding::Depth,
6376        ) -> fidl::Result<()> {
6377            decoder.debug_check_bounds::<Self>(offset);
6378            // Verify that padding bytes are zero.
6379            fidl::decode!(
6380                NegotiatedCapabilities,
6381                D,
6382                &mut self.negotiated_capabilities,
6383                decoder,
6384                offset + 0,
6385                _depth
6386            )?;
6387            Ok(())
6388        }
6389    }
6390
6391    impl fidl::encoding::ValueTypeMarker for MlmeGetIfaceHistogramStatsResponse {
6392        type Borrowed<'a> = &'a Self;
6393        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6394            value
6395        }
6396    }
6397
6398    unsafe impl fidl::encoding::TypeMarker for MlmeGetIfaceHistogramStatsResponse {
6399        type Owned = Self;
6400
6401        #[inline(always)]
6402        fn inline_align(_context: fidl::encoding::Context) -> usize {
6403            8
6404        }
6405
6406        #[inline(always)]
6407        fn inline_size(_context: fidl::encoding::Context) -> usize {
6408            16
6409        }
6410    }
6411
6412    unsafe impl<D: fidl::encoding::ResourceDialect>
6413        fidl::encoding::Encode<MlmeGetIfaceHistogramStatsResponse, D>
6414        for &MlmeGetIfaceHistogramStatsResponse
6415    {
6416        #[inline]
6417        unsafe fn encode(
6418            self,
6419            encoder: &mut fidl::encoding::Encoder<'_, D>,
6420            offset: usize,
6421            _depth: fidl::encoding::Depth,
6422        ) -> fidl::Result<()> {
6423            encoder.debug_check_bounds::<MlmeGetIfaceHistogramStatsResponse>(offset);
6424            // Delegate to tuple encoding.
6425            fidl::encoding::Encode::<MlmeGetIfaceHistogramStatsResponse, D>::encode(
6426                (<GetIfaceHistogramStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(
6427                    &self.resp,
6428                ),),
6429                encoder,
6430                offset,
6431                _depth,
6432            )
6433        }
6434    }
6435    unsafe impl<
6436        D: fidl::encoding::ResourceDialect,
6437        T0: fidl::encoding::Encode<GetIfaceHistogramStatsResponse, D>,
6438    > fidl::encoding::Encode<MlmeGetIfaceHistogramStatsResponse, D> for (T0,)
6439    {
6440        #[inline]
6441        unsafe fn encode(
6442            self,
6443            encoder: &mut fidl::encoding::Encoder<'_, D>,
6444            offset: usize,
6445            depth: fidl::encoding::Depth,
6446        ) -> fidl::Result<()> {
6447            encoder.debug_check_bounds::<MlmeGetIfaceHistogramStatsResponse>(offset);
6448            // Zero out padding regions. There's no need to apply masks
6449            // because the unmasked parts will be overwritten by fields.
6450            // Write the fields.
6451            self.0.encode(encoder, offset + 0, depth)?;
6452            Ok(())
6453        }
6454    }
6455
6456    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6457        for MlmeGetIfaceHistogramStatsResponse
6458    {
6459        #[inline(always)]
6460        fn new_empty() -> Self {
6461            Self { resp: fidl::new_empty!(GetIfaceHistogramStatsResponse, D) }
6462        }
6463
6464        #[inline]
6465        unsafe fn decode(
6466            &mut self,
6467            decoder: &mut fidl::encoding::Decoder<'_, D>,
6468            offset: usize,
6469            _depth: fidl::encoding::Depth,
6470        ) -> fidl::Result<()> {
6471            decoder.debug_check_bounds::<Self>(offset);
6472            // Verify that padding bytes are zero.
6473            fidl::decode!(
6474                GetIfaceHistogramStatsResponse,
6475                D,
6476                &mut self.resp,
6477                decoder,
6478                offset + 0,
6479                _depth
6480            )?;
6481            Ok(())
6482        }
6483    }
6484
6485    impl fidl::encoding::ValueTypeMarker for MlmeGetIfaceStatsResponse {
6486        type Borrowed<'a> = &'a Self;
6487        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6488            value
6489        }
6490    }
6491
6492    unsafe impl fidl::encoding::TypeMarker for MlmeGetIfaceStatsResponse {
6493        type Owned = Self;
6494
6495        #[inline(always)]
6496        fn inline_align(_context: fidl::encoding::Context) -> usize {
6497            8
6498        }
6499
6500        #[inline(always)]
6501        fn inline_size(_context: fidl::encoding::Context) -> usize {
6502            16
6503        }
6504    }
6505
6506    unsafe impl<D: fidl::encoding::ResourceDialect>
6507        fidl::encoding::Encode<MlmeGetIfaceStatsResponse, D> for &MlmeGetIfaceStatsResponse
6508    {
6509        #[inline]
6510        unsafe fn encode(
6511            self,
6512            encoder: &mut fidl::encoding::Encoder<'_, D>,
6513            offset: usize,
6514            _depth: fidl::encoding::Depth,
6515        ) -> fidl::Result<()> {
6516            encoder.debug_check_bounds::<MlmeGetIfaceStatsResponse>(offset);
6517            // Delegate to tuple encoding.
6518            fidl::encoding::Encode::<MlmeGetIfaceStatsResponse, D>::encode(
6519                (<GetIfaceStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6520                encoder,
6521                offset,
6522                _depth,
6523            )
6524        }
6525    }
6526    unsafe impl<
6527        D: fidl::encoding::ResourceDialect,
6528        T0: fidl::encoding::Encode<GetIfaceStatsResponse, D>,
6529    > fidl::encoding::Encode<MlmeGetIfaceStatsResponse, D> for (T0,)
6530    {
6531        #[inline]
6532        unsafe fn encode(
6533            self,
6534            encoder: &mut fidl::encoding::Encoder<'_, D>,
6535            offset: usize,
6536            depth: fidl::encoding::Depth,
6537        ) -> fidl::Result<()> {
6538            encoder.debug_check_bounds::<MlmeGetIfaceStatsResponse>(offset);
6539            // Zero out padding regions. There's no need to apply masks
6540            // because the unmasked parts will be overwritten by fields.
6541            // Write the fields.
6542            self.0.encode(encoder, offset + 0, depth)?;
6543            Ok(())
6544        }
6545    }
6546
6547    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6548        for MlmeGetIfaceStatsResponse
6549    {
6550        #[inline(always)]
6551        fn new_empty() -> Self {
6552            Self { resp: fidl::new_empty!(GetIfaceStatsResponse, D) }
6553        }
6554
6555        #[inline]
6556        unsafe fn decode(
6557            &mut self,
6558            decoder: &mut fidl::encoding::Decoder<'_, D>,
6559            offset: usize,
6560            _depth: fidl::encoding::Depth,
6561        ) -> fidl::Result<()> {
6562            decoder.debug_check_bounds::<Self>(offset);
6563            // Verify that padding bytes are zero.
6564            fidl::decode!(GetIfaceStatsResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
6565            Ok(())
6566        }
6567    }
6568
6569    impl fidl::encoding::ValueTypeMarker for MlmeGetMinstrelStatsRequest {
6570        type Borrowed<'a> = &'a Self;
6571        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6572            value
6573        }
6574    }
6575
6576    unsafe impl fidl::encoding::TypeMarker for MlmeGetMinstrelStatsRequest {
6577        type Owned = Self;
6578
6579        #[inline(always)]
6580        fn inline_align(_context: fidl::encoding::Context) -> usize {
6581            1
6582        }
6583
6584        #[inline(always)]
6585        fn inline_size(_context: fidl::encoding::Context) -> usize {
6586            6
6587        }
6588        #[inline(always)]
6589        fn encode_is_copy() -> bool {
6590            true
6591        }
6592
6593        #[inline(always)]
6594        fn decode_is_copy() -> bool {
6595            true
6596        }
6597    }
6598
6599    unsafe impl<D: fidl::encoding::ResourceDialect>
6600        fidl::encoding::Encode<MlmeGetMinstrelStatsRequest, D> for &MlmeGetMinstrelStatsRequest
6601    {
6602        #[inline]
6603        unsafe fn encode(
6604            self,
6605            encoder: &mut fidl::encoding::Encoder<'_, D>,
6606            offset: usize,
6607            _depth: fidl::encoding::Depth,
6608        ) -> fidl::Result<()> {
6609            encoder.debug_check_bounds::<MlmeGetMinstrelStatsRequest>(offset);
6610            unsafe {
6611                // Copy the object into the buffer.
6612                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
6613                (buf_ptr as *mut MlmeGetMinstrelStatsRequest)
6614                    .write_unaligned((self as *const MlmeGetMinstrelStatsRequest).read());
6615                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
6616                // done second because the memcpy will write garbage to these bytes.
6617            }
6618            Ok(())
6619        }
6620    }
6621    unsafe impl<
6622        D: fidl::encoding::ResourceDialect,
6623        T0: fidl::encoding::Encode<MinstrelStatsRequest, D>,
6624    > fidl::encoding::Encode<MlmeGetMinstrelStatsRequest, D> for (T0,)
6625    {
6626        #[inline]
6627        unsafe fn encode(
6628            self,
6629            encoder: &mut fidl::encoding::Encoder<'_, D>,
6630            offset: usize,
6631            depth: fidl::encoding::Depth,
6632        ) -> fidl::Result<()> {
6633            encoder.debug_check_bounds::<MlmeGetMinstrelStatsRequest>(offset);
6634            // Zero out padding regions. There's no need to apply masks
6635            // because the unmasked parts will be overwritten by fields.
6636            // Write the fields.
6637            self.0.encode(encoder, offset + 0, depth)?;
6638            Ok(())
6639        }
6640    }
6641
6642    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6643        for MlmeGetMinstrelStatsRequest
6644    {
6645        #[inline(always)]
6646        fn new_empty() -> Self {
6647            Self { req: fidl::new_empty!(MinstrelStatsRequest, D) }
6648        }
6649
6650        #[inline]
6651        unsafe fn decode(
6652            &mut self,
6653            decoder: &mut fidl::encoding::Decoder<'_, D>,
6654            offset: usize,
6655            _depth: fidl::encoding::Depth,
6656        ) -> fidl::Result<()> {
6657            decoder.debug_check_bounds::<Self>(offset);
6658            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
6659            // Verify that padding bytes are zero.
6660            // Copy from the buffer into the object.
6661            unsafe {
6662                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
6663            }
6664            Ok(())
6665        }
6666    }
6667
6668    impl fidl::encoding::ValueTypeMarker for MlmeGetMinstrelStatsResponse {
6669        type Borrowed<'a> = &'a Self;
6670        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6671            value
6672        }
6673    }
6674
6675    unsafe impl fidl::encoding::TypeMarker for MlmeGetMinstrelStatsResponse {
6676        type Owned = Self;
6677
6678        #[inline(always)]
6679        fn inline_align(_context: fidl::encoding::Context) -> usize {
6680            8
6681        }
6682
6683        #[inline(always)]
6684        fn inline_size(_context: fidl::encoding::Context) -> usize {
6685            8
6686        }
6687    }
6688
6689    unsafe impl<D: fidl::encoding::ResourceDialect>
6690        fidl::encoding::Encode<MlmeGetMinstrelStatsResponse, D> for &MlmeGetMinstrelStatsResponse
6691    {
6692        #[inline]
6693        unsafe fn encode(
6694            self,
6695            encoder: &mut fidl::encoding::Encoder<'_, D>,
6696            offset: usize,
6697            _depth: fidl::encoding::Depth,
6698        ) -> fidl::Result<()> {
6699            encoder.debug_check_bounds::<MlmeGetMinstrelStatsResponse>(offset);
6700            // Delegate to tuple encoding.
6701            fidl::encoding::Encode::<MlmeGetMinstrelStatsResponse, D>::encode(
6702                (<MinstrelStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6703                encoder,
6704                offset,
6705                _depth,
6706            )
6707        }
6708    }
6709    unsafe impl<
6710        D: fidl::encoding::ResourceDialect,
6711        T0: fidl::encoding::Encode<MinstrelStatsResponse, D>,
6712    > fidl::encoding::Encode<MlmeGetMinstrelStatsResponse, D> for (T0,)
6713    {
6714        #[inline]
6715        unsafe fn encode(
6716            self,
6717            encoder: &mut fidl::encoding::Encoder<'_, D>,
6718            offset: usize,
6719            depth: fidl::encoding::Depth,
6720        ) -> fidl::Result<()> {
6721            encoder.debug_check_bounds::<MlmeGetMinstrelStatsResponse>(offset);
6722            // Zero out padding regions. There's no need to apply masks
6723            // because the unmasked parts will be overwritten by fields.
6724            // Write the fields.
6725            self.0.encode(encoder, offset + 0, depth)?;
6726            Ok(())
6727        }
6728    }
6729
6730    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6731        for MlmeGetMinstrelStatsResponse
6732    {
6733        #[inline(always)]
6734        fn new_empty() -> Self {
6735            Self { resp: fidl::new_empty!(MinstrelStatsResponse, D) }
6736        }
6737
6738        #[inline]
6739        unsafe fn decode(
6740            &mut self,
6741            decoder: &mut fidl::encoding::Decoder<'_, D>,
6742            offset: usize,
6743            _depth: fidl::encoding::Depth,
6744        ) -> fidl::Result<()> {
6745            decoder.debug_check_bounds::<Self>(offset);
6746            // Verify that padding bytes are zero.
6747            fidl::decode!(MinstrelStatsResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
6748            Ok(())
6749        }
6750    }
6751
6752    impl fidl::encoding::ValueTypeMarker for MlmeListMinstrelPeersResponse {
6753        type Borrowed<'a> = &'a Self;
6754        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6755            value
6756        }
6757    }
6758
6759    unsafe impl fidl::encoding::TypeMarker for MlmeListMinstrelPeersResponse {
6760        type Owned = Self;
6761
6762        #[inline(always)]
6763        fn inline_align(_context: fidl::encoding::Context) -> usize {
6764            8
6765        }
6766
6767        #[inline(always)]
6768        fn inline_size(_context: fidl::encoding::Context) -> usize {
6769            16
6770        }
6771    }
6772
6773    unsafe impl<D: fidl::encoding::ResourceDialect>
6774        fidl::encoding::Encode<MlmeListMinstrelPeersResponse, D>
6775        for &MlmeListMinstrelPeersResponse
6776    {
6777        #[inline]
6778        unsafe fn encode(
6779            self,
6780            encoder: &mut fidl::encoding::Encoder<'_, D>,
6781            offset: usize,
6782            _depth: fidl::encoding::Depth,
6783        ) -> fidl::Result<()> {
6784            encoder.debug_check_bounds::<MlmeListMinstrelPeersResponse>(offset);
6785            // Delegate to tuple encoding.
6786            fidl::encoding::Encode::<MlmeListMinstrelPeersResponse, D>::encode(
6787                (<MinstrelListResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6788                encoder,
6789                offset,
6790                _depth,
6791            )
6792        }
6793    }
6794    unsafe impl<
6795        D: fidl::encoding::ResourceDialect,
6796        T0: fidl::encoding::Encode<MinstrelListResponse, D>,
6797    > fidl::encoding::Encode<MlmeListMinstrelPeersResponse, D> for (T0,)
6798    {
6799        #[inline]
6800        unsafe fn encode(
6801            self,
6802            encoder: &mut fidl::encoding::Encoder<'_, D>,
6803            offset: usize,
6804            depth: fidl::encoding::Depth,
6805        ) -> fidl::Result<()> {
6806            encoder.debug_check_bounds::<MlmeListMinstrelPeersResponse>(offset);
6807            // Zero out padding regions. There's no need to apply masks
6808            // because the unmasked parts will be overwritten by fields.
6809            // Write the fields.
6810            self.0.encode(encoder, offset + 0, depth)?;
6811            Ok(())
6812        }
6813    }
6814
6815    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6816        for MlmeListMinstrelPeersResponse
6817    {
6818        #[inline(always)]
6819        fn new_empty() -> Self {
6820            Self { resp: fidl::new_empty!(MinstrelListResponse, D) }
6821        }
6822
6823        #[inline]
6824        unsafe fn decode(
6825            &mut self,
6826            decoder: &mut fidl::encoding::Decoder<'_, D>,
6827            offset: usize,
6828            _depth: fidl::encoding::Depth,
6829        ) -> fidl::Result<()> {
6830            decoder.debug_check_bounds::<Self>(offset);
6831            // Verify that padding bytes are zero.
6832            fidl::decode!(MinstrelListResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
6833            Ok(())
6834        }
6835    }
6836
6837    impl fidl::encoding::ValueTypeMarker for MlmeOnChannelSwitchedRequest {
6838        type Borrowed<'a> = &'a Self;
6839        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6840            value
6841        }
6842    }
6843
6844    unsafe impl fidl::encoding::TypeMarker for MlmeOnChannelSwitchedRequest {
6845        type Owned = Self;
6846
6847        #[inline(always)]
6848        fn inline_align(_context: fidl::encoding::Context) -> usize {
6849            1
6850        }
6851
6852        #[inline(always)]
6853        fn inline_size(_context: fidl::encoding::Context) -> usize {
6854            1
6855        }
6856    }
6857
6858    unsafe impl<D: fidl::encoding::ResourceDialect>
6859        fidl::encoding::Encode<MlmeOnChannelSwitchedRequest, D> for &MlmeOnChannelSwitchedRequest
6860    {
6861        #[inline]
6862        unsafe fn encode(
6863            self,
6864            encoder: &mut fidl::encoding::Encoder<'_, D>,
6865            offset: usize,
6866            _depth: fidl::encoding::Depth,
6867        ) -> fidl::Result<()> {
6868            encoder.debug_check_bounds::<MlmeOnChannelSwitchedRequest>(offset);
6869            // Delegate to tuple encoding.
6870            fidl::encoding::Encode::<MlmeOnChannelSwitchedRequest, D>::encode(
6871                (
6872                    <fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),
6873                ),
6874                encoder, offset, _depth
6875            )
6876        }
6877    }
6878    unsafe impl<
6879        D: fidl::encoding::ResourceDialect,
6880        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo, D>,
6881    > fidl::encoding::Encode<MlmeOnChannelSwitchedRequest, D> for (T0,)
6882    {
6883        #[inline]
6884        unsafe fn encode(
6885            self,
6886            encoder: &mut fidl::encoding::Encoder<'_, D>,
6887            offset: usize,
6888            depth: fidl::encoding::Depth,
6889        ) -> fidl::Result<()> {
6890            encoder.debug_check_bounds::<MlmeOnChannelSwitchedRequest>(offset);
6891            // Zero out padding regions. There's no need to apply masks
6892            // because the unmasked parts will be overwritten by fields.
6893            // Write the fields.
6894            self.0.encode(encoder, offset + 0, depth)?;
6895            Ok(())
6896        }
6897    }
6898
6899    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6900        for MlmeOnChannelSwitchedRequest
6901    {
6902        #[inline(always)]
6903        fn new_empty() -> Self {
6904            Self {
6905                info: fidl::new_empty!(fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo, D),
6906            }
6907        }
6908
6909        #[inline]
6910        unsafe fn decode(
6911            &mut self,
6912            decoder: &mut fidl::encoding::Decoder<'_, D>,
6913            offset: usize,
6914            _depth: fidl::encoding::Depth,
6915        ) -> fidl::Result<()> {
6916            decoder.debug_check_bounds::<Self>(offset);
6917            // Verify that padding bytes are zero.
6918            fidl::decode!(
6919                fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo,
6920                D,
6921                &mut self.info,
6922                decoder,
6923                offset + 0,
6924                _depth
6925            )?;
6926            Ok(())
6927        }
6928    }
6929
6930    impl fidl::encoding::ValueTypeMarker for MlmeOnPmkAvailableRequest {
6931        type Borrowed<'a> = &'a Self;
6932        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6933            value
6934        }
6935    }
6936
6937    unsafe impl fidl::encoding::TypeMarker for MlmeOnPmkAvailableRequest {
6938        type Owned = Self;
6939
6940        #[inline(always)]
6941        fn inline_align(_context: fidl::encoding::Context) -> usize {
6942            8
6943        }
6944
6945        #[inline(always)]
6946        fn inline_size(_context: fidl::encoding::Context) -> usize {
6947            32
6948        }
6949    }
6950
6951    unsafe impl<D: fidl::encoding::ResourceDialect>
6952        fidl::encoding::Encode<MlmeOnPmkAvailableRequest, D> for &MlmeOnPmkAvailableRequest
6953    {
6954        #[inline]
6955        unsafe fn encode(
6956            self,
6957            encoder: &mut fidl::encoding::Encoder<'_, D>,
6958            offset: usize,
6959            _depth: fidl::encoding::Depth,
6960        ) -> fidl::Result<()> {
6961            encoder.debug_check_bounds::<MlmeOnPmkAvailableRequest>(offset);
6962            // Delegate to tuple encoding.
6963            fidl::encoding::Encode::<MlmeOnPmkAvailableRequest, D>::encode(
6964                (<PmkInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
6965                encoder,
6966                offset,
6967                _depth,
6968            )
6969        }
6970    }
6971    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<PmkInfo, D>>
6972        fidl::encoding::Encode<MlmeOnPmkAvailableRequest, D> for (T0,)
6973    {
6974        #[inline]
6975        unsafe fn encode(
6976            self,
6977            encoder: &mut fidl::encoding::Encoder<'_, D>,
6978            offset: usize,
6979            depth: fidl::encoding::Depth,
6980        ) -> fidl::Result<()> {
6981            encoder.debug_check_bounds::<MlmeOnPmkAvailableRequest>(offset);
6982            // Zero out padding regions. There's no need to apply masks
6983            // because the unmasked parts will be overwritten by fields.
6984            // Write the fields.
6985            self.0.encode(encoder, offset + 0, depth)?;
6986            Ok(())
6987        }
6988    }
6989
6990    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6991        for MlmeOnPmkAvailableRequest
6992    {
6993        #[inline(always)]
6994        fn new_empty() -> Self {
6995            Self { info: fidl::new_empty!(PmkInfo, D) }
6996        }
6997
6998        #[inline]
6999        unsafe fn decode(
7000            &mut self,
7001            decoder: &mut fidl::encoding::Decoder<'_, D>,
7002            offset: usize,
7003            _depth: fidl::encoding::Depth,
7004        ) -> fidl::Result<()> {
7005            decoder.debug_check_bounds::<Self>(offset);
7006            // Verify that padding bytes are zero.
7007            fidl::decode!(PmkInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
7008            Ok(())
7009        }
7010    }
7011
7012    impl fidl::encoding::ValueTypeMarker for MlmeOnSaeFrameRxRequest {
7013        type Borrowed<'a> = &'a Self;
7014        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7015            value
7016        }
7017    }
7018
7019    unsafe impl fidl::encoding::TypeMarker for MlmeOnSaeFrameRxRequest {
7020        type Owned = Self;
7021
7022        #[inline(always)]
7023        fn inline_align(_context: fidl::encoding::Context) -> usize {
7024            8
7025        }
7026
7027        #[inline(always)]
7028        fn inline_size(_context: fidl::encoding::Context) -> usize {
7029            32
7030        }
7031    }
7032
7033    unsafe impl<D: fidl::encoding::ResourceDialect>
7034        fidl::encoding::Encode<MlmeOnSaeFrameRxRequest, D> for &MlmeOnSaeFrameRxRequest
7035    {
7036        #[inline]
7037        unsafe fn encode(
7038            self,
7039            encoder: &mut fidl::encoding::Encoder<'_, D>,
7040            offset: usize,
7041            _depth: fidl::encoding::Depth,
7042        ) -> fidl::Result<()> {
7043            encoder.debug_check_bounds::<MlmeOnSaeFrameRxRequest>(offset);
7044            // Delegate to tuple encoding.
7045            fidl::encoding::Encode::<MlmeOnSaeFrameRxRequest, D>::encode(
7046                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
7047                encoder,
7048                offset,
7049                _depth,
7050            )
7051        }
7052    }
7053    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
7054        fidl::encoding::Encode<MlmeOnSaeFrameRxRequest, D> for (T0,)
7055    {
7056        #[inline]
7057        unsafe fn encode(
7058            self,
7059            encoder: &mut fidl::encoding::Encoder<'_, D>,
7060            offset: usize,
7061            depth: fidl::encoding::Depth,
7062        ) -> fidl::Result<()> {
7063            encoder.debug_check_bounds::<MlmeOnSaeFrameRxRequest>(offset);
7064            // Zero out padding regions. There's no need to apply masks
7065            // because the unmasked parts will be overwritten by fields.
7066            // Write the fields.
7067            self.0.encode(encoder, offset + 0, depth)?;
7068            Ok(())
7069        }
7070    }
7071
7072    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7073        for MlmeOnSaeFrameRxRequest
7074    {
7075        #[inline(always)]
7076        fn new_empty() -> Self {
7077            Self { frame: fidl::new_empty!(SaeFrame, D) }
7078        }
7079
7080        #[inline]
7081        unsafe fn decode(
7082            &mut self,
7083            decoder: &mut fidl::encoding::Decoder<'_, D>,
7084            offset: usize,
7085            _depth: fidl::encoding::Depth,
7086        ) -> fidl::Result<()> {
7087            decoder.debug_check_bounds::<Self>(offset);
7088            // Verify that padding bytes are zero.
7089            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
7090            Ok(())
7091        }
7092    }
7093
7094    impl fidl::encoding::ValueTypeMarker for MlmeOnSaeHandshakeIndRequest {
7095        type Borrowed<'a> = &'a Self;
7096        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7097            value
7098        }
7099    }
7100
7101    unsafe impl fidl::encoding::TypeMarker for MlmeOnSaeHandshakeIndRequest {
7102        type Owned = Self;
7103
7104        #[inline(always)]
7105        fn inline_align(_context: fidl::encoding::Context) -> usize {
7106            1
7107        }
7108
7109        #[inline(always)]
7110        fn inline_size(_context: fidl::encoding::Context) -> usize {
7111            6
7112        }
7113        #[inline(always)]
7114        fn encode_is_copy() -> bool {
7115            true
7116        }
7117
7118        #[inline(always)]
7119        fn decode_is_copy() -> bool {
7120            true
7121        }
7122    }
7123
7124    unsafe impl<D: fidl::encoding::ResourceDialect>
7125        fidl::encoding::Encode<MlmeOnSaeHandshakeIndRequest, D> for &MlmeOnSaeHandshakeIndRequest
7126    {
7127        #[inline]
7128        unsafe fn encode(
7129            self,
7130            encoder: &mut fidl::encoding::Encoder<'_, D>,
7131            offset: usize,
7132            _depth: fidl::encoding::Depth,
7133        ) -> fidl::Result<()> {
7134            encoder.debug_check_bounds::<MlmeOnSaeHandshakeIndRequest>(offset);
7135            unsafe {
7136                // Copy the object into the buffer.
7137                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7138                (buf_ptr as *mut MlmeOnSaeHandshakeIndRequest)
7139                    .write_unaligned((self as *const MlmeOnSaeHandshakeIndRequest).read());
7140                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7141                // done second because the memcpy will write garbage to these bytes.
7142            }
7143            Ok(())
7144        }
7145    }
7146    unsafe impl<
7147        D: fidl::encoding::ResourceDialect,
7148        T0: fidl::encoding::Encode<SaeHandshakeIndication, D>,
7149    > fidl::encoding::Encode<MlmeOnSaeHandshakeIndRequest, D> for (T0,)
7150    {
7151        #[inline]
7152        unsafe fn encode(
7153            self,
7154            encoder: &mut fidl::encoding::Encoder<'_, D>,
7155            offset: usize,
7156            depth: fidl::encoding::Depth,
7157        ) -> fidl::Result<()> {
7158            encoder.debug_check_bounds::<MlmeOnSaeHandshakeIndRequest>(offset);
7159            // Zero out padding regions. There's no need to apply masks
7160            // because the unmasked parts will be overwritten by fields.
7161            // Write the fields.
7162            self.0.encode(encoder, offset + 0, depth)?;
7163            Ok(())
7164        }
7165    }
7166
7167    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7168        for MlmeOnSaeHandshakeIndRequest
7169    {
7170        #[inline(always)]
7171        fn new_empty() -> Self {
7172            Self { ind: fidl::new_empty!(SaeHandshakeIndication, D) }
7173        }
7174
7175        #[inline]
7176        unsafe fn decode(
7177            &mut self,
7178            decoder: &mut fidl::encoding::Decoder<'_, D>,
7179            offset: usize,
7180            _depth: fidl::encoding::Depth,
7181        ) -> fidl::Result<()> {
7182            decoder.debug_check_bounds::<Self>(offset);
7183            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7184            // Verify that padding bytes are zero.
7185            // Copy from the buffer into the object.
7186            unsafe {
7187                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
7188            }
7189            Ok(())
7190        }
7191    }
7192
7193    impl fidl::encoding::ValueTypeMarker for MlmeOnScanEndRequest {
7194        type Borrowed<'a> = &'a Self;
7195        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7196            value
7197        }
7198    }
7199
7200    unsafe impl fidl::encoding::TypeMarker for MlmeOnScanEndRequest {
7201        type Owned = Self;
7202
7203        #[inline(always)]
7204        fn inline_align(_context: fidl::encoding::Context) -> usize {
7205            8
7206        }
7207
7208        #[inline(always)]
7209        fn inline_size(_context: fidl::encoding::Context) -> usize {
7210            16
7211        }
7212    }
7213
7214    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeOnScanEndRequest, D>
7215        for &MlmeOnScanEndRequest
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::<MlmeOnScanEndRequest>(offset);
7225            // Delegate to tuple encoding.
7226            fidl::encoding::Encode::<MlmeOnScanEndRequest, D>::encode(
7227                (<ScanEnd as fidl::encoding::ValueTypeMarker>::borrow(&self.end),),
7228                encoder,
7229                offset,
7230                _depth,
7231            )
7232        }
7233    }
7234    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanEnd, D>>
7235        fidl::encoding::Encode<MlmeOnScanEndRequest, D> for (T0,)
7236    {
7237        #[inline]
7238        unsafe fn encode(
7239            self,
7240            encoder: &mut fidl::encoding::Encoder<'_, D>,
7241            offset: usize,
7242            depth: fidl::encoding::Depth,
7243        ) -> fidl::Result<()> {
7244            encoder.debug_check_bounds::<MlmeOnScanEndRequest>(offset);
7245            // Zero out padding regions. There's no need to apply masks
7246            // because the unmasked parts will be overwritten by fields.
7247            // Write the fields.
7248            self.0.encode(encoder, offset + 0, depth)?;
7249            Ok(())
7250        }
7251    }
7252
7253    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeOnScanEndRequest {
7254        #[inline(always)]
7255        fn new_empty() -> Self {
7256            Self { end: fidl::new_empty!(ScanEnd, D) }
7257        }
7258
7259        #[inline]
7260        unsafe fn decode(
7261            &mut self,
7262            decoder: &mut fidl::encoding::Decoder<'_, D>,
7263            offset: usize,
7264            _depth: fidl::encoding::Depth,
7265        ) -> fidl::Result<()> {
7266            decoder.debug_check_bounds::<Self>(offset);
7267            // Verify that padding bytes are zero.
7268            fidl::decode!(ScanEnd, D, &mut self.end, decoder, offset + 0, _depth)?;
7269            Ok(())
7270        }
7271    }
7272
7273    impl fidl::encoding::ValueTypeMarker for MlmeOnScanResultRequest {
7274        type Borrowed<'a> = &'a Self;
7275        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7276            value
7277        }
7278    }
7279
7280    unsafe impl fidl::encoding::TypeMarker for MlmeOnScanResultRequest {
7281        type Owned = Self;
7282
7283        #[inline(always)]
7284        fn inline_align(_context: fidl::encoding::Context) -> usize {
7285            8
7286        }
7287
7288        #[inline(always)]
7289        fn inline_size(_context: fidl::encoding::Context) -> usize {
7290            64
7291        }
7292    }
7293
7294    unsafe impl<D: fidl::encoding::ResourceDialect>
7295        fidl::encoding::Encode<MlmeOnScanResultRequest, D> for &MlmeOnScanResultRequest
7296    {
7297        #[inline]
7298        unsafe fn encode(
7299            self,
7300            encoder: &mut fidl::encoding::Encoder<'_, D>,
7301            offset: usize,
7302            _depth: fidl::encoding::Depth,
7303        ) -> fidl::Result<()> {
7304            encoder.debug_check_bounds::<MlmeOnScanResultRequest>(offset);
7305            // Delegate to tuple encoding.
7306            fidl::encoding::Encode::<MlmeOnScanResultRequest, D>::encode(
7307                (<ScanResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),),
7308                encoder,
7309                offset,
7310                _depth,
7311            )
7312        }
7313    }
7314    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanResult, D>>
7315        fidl::encoding::Encode<MlmeOnScanResultRequest, D> for (T0,)
7316    {
7317        #[inline]
7318        unsafe fn encode(
7319            self,
7320            encoder: &mut fidl::encoding::Encoder<'_, D>,
7321            offset: usize,
7322            depth: fidl::encoding::Depth,
7323        ) -> fidl::Result<()> {
7324            encoder.debug_check_bounds::<MlmeOnScanResultRequest>(offset);
7325            // Zero out padding regions. There's no need to apply masks
7326            // because the unmasked parts will be overwritten by fields.
7327            // Write the fields.
7328            self.0.encode(encoder, offset + 0, depth)?;
7329            Ok(())
7330        }
7331    }
7332
7333    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7334        for MlmeOnScanResultRequest
7335    {
7336        #[inline(always)]
7337        fn new_empty() -> Self {
7338            Self { result: fidl::new_empty!(ScanResult, D) }
7339        }
7340
7341        #[inline]
7342        unsafe fn decode(
7343            &mut self,
7344            decoder: &mut fidl::encoding::Decoder<'_, D>,
7345            offset: usize,
7346            _depth: fidl::encoding::Depth,
7347        ) -> fidl::Result<()> {
7348            decoder.debug_check_bounds::<Self>(offset);
7349            // Verify that padding bytes are zero.
7350            fidl::decode!(ScanResult, D, &mut self.result, decoder, offset + 0, _depth)?;
7351            Ok(())
7352        }
7353    }
7354
7355    impl fidl::encoding::ValueTypeMarker for MlmeOnWmmStatusRespRequest {
7356        type Borrowed<'a> = &'a Self;
7357        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7358            value
7359        }
7360    }
7361
7362    unsafe impl fidl::encoding::TypeMarker for MlmeOnWmmStatusRespRequest {
7363        type Owned = Self;
7364
7365        #[inline(always)]
7366        fn inline_align(_context: fidl::encoding::Context) -> usize {
7367            4
7368        }
7369
7370        #[inline(always)]
7371        fn inline_size(_context: fidl::encoding::Context) -> usize {
7372            40
7373        }
7374    }
7375
7376    unsafe impl<D: fidl::encoding::ResourceDialect>
7377        fidl::encoding::Encode<MlmeOnWmmStatusRespRequest, D> for &MlmeOnWmmStatusRespRequest
7378    {
7379        #[inline]
7380        unsafe fn encode(
7381            self,
7382            encoder: &mut fidl::encoding::Encoder<'_, D>,
7383            offset: usize,
7384            _depth: fidl::encoding::Depth,
7385        ) -> fidl::Result<()> {
7386            encoder.debug_check_bounds::<MlmeOnWmmStatusRespRequest>(offset);
7387            // Delegate to tuple encoding.
7388            fidl::encoding::Encode::<MlmeOnWmmStatusRespRequest, D>::encode(
7389                (
7390                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
7391                    <fidl_fuchsia_wlan_internal__common::WmmStatusResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
7392                ),
7393                encoder, offset, _depth
7394            )
7395        }
7396    }
7397    unsafe impl<
7398        D: fidl::encoding::ResourceDialect,
7399        T0: fidl::encoding::Encode<i32, D>,
7400        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_internal__common::WmmStatusResponse, D>,
7401    > fidl::encoding::Encode<MlmeOnWmmStatusRespRequest, D> for (T0, T1)
7402    {
7403        #[inline]
7404        unsafe fn encode(
7405            self,
7406            encoder: &mut fidl::encoding::Encoder<'_, D>,
7407            offset: usize,
7408            depth: fidl::encoding::Depth,
7409        ) -> fidl::Result<()> {
7410            encoder.debug_check_bounds::<MlmeOnWmmStatusRespRequest>(offset);
7411            // Zero out padding regions. There's no need to apply masks
7412            // because the unmasked parts will be overwritten by fields.
7413            unsafe {
7414                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(36);
7415                (ptr as *mut u32).write_unaligned(0);
7416            }
7417            // Write the fields.
7418            self.0.encode(encoder, offset + 0, depth)?;
7419            self.1.encode(encoder, offset + 4, depth)?;
7420            Ok(())
7421        }
7422    }
7423
7424    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7425        for MlmeOnWmmStatusRespRequest
7426    {
7427        #[inline(always)]
7428        fn new_empty() -> Self {
7429            Self {
7430                status: fidl::new_empty!(i32, D),
7431                resp: fidl::new_empty!(fidl_fuchsia_wlan_internal__common::WmmStatusResponse, D),
7432            }
7433        }
7434
7435        #[inline]
7436        unsafe fn decode(
7437            &mut self,
7438            decoder: &mut fidl::encoding::Decoder<'_, D>,
7439            offset: usize,
7440            _depth: fidl::encoding::Depth,
7441        ) -> fidl::Result<()> {
7442            decoder.debug_check_bounds::<Self>(offset);
7443            // Verify that padding bytes are zero.
7444            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(36) };
7445            let padval = unsafe { (ptr as *const u32).read_unaligned() };
7446            let mask = 0xffff0000u32;
7447            let maskedval = padval & mask;
7448            if maskedval != 0 {
7449                return Err(fidl::Error::NonZeroPadding {
7450                    padding_start: offset + 36 + ((mask as u64).trailing_zeros() / 8) as usize,
7451                });
7452            }
7453            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
7454            fidl::decode!(
7455                fidl_fuchsia_wlan_internal__common::WmmStatusResponse,
7456                D,
7457                &mut self.resp,
7458                decoder,
7459                offset + 4,
7460                _depth
7461            )?;
7462            Ok(())
7463        }
7464    }
7465
7466    impl fidl::encoding::ValueTypeMarker for MlmeQueryDeviceInfoResponse {
7467        type Borrowed<'a> = &'a Self;
7468        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7469            value
7470        }
7471    }
7472
7473    unsafe impl fidl::encoding::TypeMarker for MlmeQueryDeviceInfoResponse {
7474        type Owned = Self;
7475
7476        #[inline(always)]
7477        fn inline_align(_context: fidl::encoding::Context) -> usize {
7478            8
7479        }
7480
7481        #[inline(always)]
7482        fn inline_size(_context: fidl::encoding::Context) -> usize {
7483            40
7484        }
7485    }
7486
7487    unsafe impl<D: fidl::encoding::ResourceDialect>
7488        fidl::encoding::Encode<MlmeQueryDeviceInfoResponse, D> for &MlmeQueryDeviceInfoResponse
7489    {
7490        #[inline]
7491        unsafe fn encode(
7492            self,
7493            encoder: &mut fidl::encoding::Encoder<'_, D>,
7494            offset: usize,
7495            _depth: fidl::encoding::Depth,
7496        ) -> fidl::Result<()> {
7497            encoder.debug_check_bounds::<MlmeQueryDeviceInfoResponse>(offset);
7498            // Delegate to tuple encoding.
7499            fidl::encoding::Encode::<MlmeQueryDeviceInfoResponse, D>::encode(
7500                (<DeviceInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
7501                encoder,
7502                offset,
7503                _depth,
7504            )
7505        }
7506    }
7507    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<DeviceInfo, D>>
7508        fidl::encoding::Encode<MlmeQueryDeviceInfoResponse, D> for (T0,)
7509    {
7510        #[inline]
7511        unsafe fn encode(
7512            self,
7513            encoder: &mut fidl::encoding::Encoder<'_, D>,
7514            offset: usize,
7515            depth: fidl::encoding::Depth,
7516        ) -> fidl::Result<()> {
7517            encoder.debug_check_bounds::<MlmeQueryDeviceInfoResponse>(offset);
7518            // Zero out padding regions. There's no need to apply masks
7519            // because the unmasked parts will be overwritten by fields.
7520            // Write the fields.
7521            self.0.encode(encoder, offset + 0, depth)?;
7522            Ok(())
7523        }
7524    }
7525
7526    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7527        for MlmeQueryDeviceInfoResponse
7528    {
7529        #[inline(always)]
7530        fn new_empty() -> Self {
7531            Self { info: fidl::new_empty!(DeviceInfo, D) }
7532        }
7533
7534        #[inline]
7535        unsafe fn decode(
7536            &mut self,
7537            decoder: &mut fidl::encoding::Decoder<'_, D>,
7538            offset: usize,
7539            _depth: fidl::encoding::Depth,
7540        ) -> fidl::Result<()> {
7541            decoder.debug_check_bounds::<Self>(offset);
7542            // Verify that padding bytes are zero.
7543            fidl::decode!(DeviceInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
7544            Ok(())
7545        }
7546    }
7547
7548    impl fidl::encoding::ValueTypeMarker for MlmeReconnectReqRequest {
7549        type Borrowed<'a> = &'a Self;
7550        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7551            value
7552        }
7553    }
7554
7555    unsafe impl fidl::encoding::TypeMarker for MlmeReconnectReqRequest {
7556        type Owned = Self;
7557
7558        #[inline(always)]
7559        fn inline_align(_context: fidl::encoding::Context) -> usize {
7560            1
7561        }
7562
7563        #[inline(always)]
7564        fn inline_size(_context: fidl::encoding::Context) -> usize {
7565            6
7566        }
7567        #[inline(always)]
7568        fn encode_is_copy() -> bool {
7569            true
7570        }
7571
7572        #[inline(always)]
7573        fn decode_is_copy() -> bool {
7574            true
7575        }
7576    }
7577
7578    unsafe impl<D: fidl::encoding::ResourceDialect>
7579        fidl::encoding::Encode<MlmeReconnectReqRequest, D> for &MlmeReconnectReqRequest
7580    {
7581        #[inline]
7582        unsafe fn encode(
7583            self,
7584            encoder: &mut fidl::encoding::Encoder<'_, D>,
7585            offset: usize,
7586            _depth: fidl::encoding::Depth,
7587        ) -> fidl::Result<()> {
7588            encoder.debug_check_bounds::<MlmeReconnectReqRequest>(offset);
7589            unsafe {
7590                // Copy the object into the buffer.
7591                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7592                (buf_ptr as *mut MlmeReconnectReqRequest)
7593                    .write_unaligned((self as *const MlmeReconnectReqRequest).read());
7594                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7595                // done second because the memcpy will write garbage to these bytes.
7596            }
7597            Ok(())
7598        }
7599    }
7600    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ReconnectRequest, D>>
7601        fidl::encoding::Encode<MlmeReconnectReqRequest, D> for (T0,)
7602    {
7603        #[inline]
7604        unsafe fn encode(
7605            self,
7606            encoder: &mut fidl::encoding::Encoder<'_, D>,
7607            offset: usize,
7608            depth: fidl::encoding::Depth,
7609        ) -> fidl::Result<()> {
7610            encoder.debug_check_bounds::<MlmeReconnectReqRequest>(offset);
7611            // Zero out padding regions. There's no need to apply masks
7612            // because the unmasked parts will be overwritten by fields.
7613            // Write the fields.
7614            self.0.encode(encoder, offset + 0, depth)?;
7615            Ok(())
7616        }
7617    }
7618
7619    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7620        for MlmeReconnectReqRequest
7621    {
7622        #[inline(always)]
7623        fn new_empty() -> Self {
7624            Self { req: fidl::new_empty!(ReconnectRequest, D) }
7625        }
7626
7627        #[inline]
7628        unsafe fn decode(
7629            &mut self,
7630            decoder: &mut fidl::encoding::Decoder<'_, D>,
7631            offset: usize,
7632            _depth: fidl::encoding::Depth,
7633        ) -> fidl::Result<()> {
7634            decoder.debug_check_bounds::<Self>(offset);
7635            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7636            // Verify that padding bytes are zero.
7637            // Copy from the buffer into the object.
7638            unsafe {
7639                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
7640            }
7641            Ok(())
7642        }
7643    }
7644
7645    impl fidl::encoding::ValueTypeMarker for MlmeRelayCapturedFrameRequest {
7646        type Borrowed<'a> = &'a Self;
7647        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7648            value
7649        }
7650    }
7651
7652    unsafe impl fidl::encoding::TypeMarker for MlmeRelayCapturedFrameRequest {
7653        type Owned = Self;
7654
7655        #[inline(always)]
7656        fn inline_align(_context: fidl::encoding::Context) -> usize {
7657            8
7658        }
7659
7660        #[inline(always)]
7661        fn inline_size(_context: fidl::encoding::Context) -> usize {
7662            16
7663        }
7664    }
7665
7666    unsafe impl<D: fidl::encoding::ResourceDialect>
7667        fidl::encoding::Encode<MlmeRelayCapturedFrameRequest, D>
7668        for &MlmeRelayCapturedFrameRequest
7669    {
7670        #[inline]
7671        unsafe fn encode(
7672            self,
7673            encoder: &mut fidl::encoding::Encoder<'_, D>,
7674            offset: usize,
7675            _depth: fidl::encoding::Depth,
7676        ) -> fidl::Result<()> {
7677            encoder.debug_check_bounds::<MlmeRelayCapturedFrameRequest>(offset);
7678            // Delegate to tuple encoding.
7679            fidl::encoding::Encode::<MlmeRelayCapturedFrameRequest, D>::encode(
7680                (<CapturedFrameResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),),
7681                encoder,
7682                offset,
7683                _depth,
7684            )
7685        }
7686    }
7687    unsafe impl<
7688        D: fidl::encoding::ResourceDialect,
7689        T0: fidl::encoding::Encode<CapturedFrameResult, D>,
7690    > fidl::encoding::Encode<MlmeRelayCapturedFrameRequest, D> for (T0,)
7691    {
7692        #[inline]
7693        unsafe fn encode(
7694            self,
7695            encoder: &mut fidl::encoding::Encoder<'_, D>,
7696            offset: usize,
7697            depth: fidl::encoding::Depth,
7698        ) -> fidl::Result<()> {
7699            encoder.debug_check_bounds::<MlmeRelayCapturedFrameRequest>(offset);
7700            // Zero out padding regions. There's no need to apply masks
7701            // because the unmasked parts will be overwritten by fields.
7702            // Write the fields.
7703            self.0.encode(encoder, offset + 0, depth)?;
7704            Ok(())
7705        }
7706    }
7707
7708    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7709        for MlmeRelayCapturedFrameRequest
7710    {
7711        #[inline(always)]
7712        fn new_empty() -> Self {
7713            Self { result: fidl::new_empty!(CapturedFrameResult, D) }
7714        }
7715
7716        #[inline]
7717        unsafe fn decode(
7718            &mut self,
7719            decoder: &mut fidl::encoding::Decoder<'_, D>,
7720            offset: usize,
7721            _depth: fidl::encoding::Depth,
7722        ) -> fidl::Result<()> {
7723            decoder.debug_check_bounds::<Self>(offset);
7724            // Verify that padding bytes are zero.
7725            fidl::decode!(CapturedFrameResult, D, &mut self.result, decoder, offset + 0, _depth)?;
7726            Ok(())
7727        }
7728    }
7729
7730    impl fidl::encoding::ValueTypeMarker for MlmeResetReqRequest {
7731        type Borrowed<'a> = &'a Self;
7732        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7733            value
7734        }
7735    }
7736
7737    unsafe impl fidl::encoding::TypeMarker for MlmeResetReqRequest {
7738        type Owned = Self;
7739
7740        #[inline(always)]
7741        fn inline_align(_context: fidl::encoding::Context) -> usize {
7742            1
7743        }
7744
7745        #[inline(always)]
7746        fn inline_size(_context: fidl::encoding::Context) -> usize {
7747            7
7748        }
7749    }
7750
7751    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeResetReqRequest, D>
7752        for &MlmeResetReqRequest
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::<MlmeResetReqRequest>(offset);
7762            // Delegate to tuple encoding.
7763            fidl::encoding::Encode::<MlmeResetReqRequest, D>::encode(
7764                (<ResetRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
7765                encoder,
7766                offset,
7767                _depth,
7768            )
7769        }
7770    }
7771    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ResetRequest, D>>
7772        fidl::encoding::Encode<MlmeResetReqRequest, D> for (T0,)
7773    {
7774        #[inline]
7775        unsafe fn encode(
7776            self,
7777            encoder: &mut fidl::encoding::Encoder<'_, D>,
7778            offset: usize,
7779            depth: fidl::encoding::Depth,
7780        ) -> fidl::Result<()> {
7781            encoder.debug_check_bounds::<MlmeResetReqRequest>(offset);
7782            // Zero out padding regions. There's no need to apply masks
7783            // because the unmasked parts will be overwritten by fields.
7784            // Write the fields.
7785            self.0.encode(encoder, offset + 0, depth)?;
7786            Ok(())
7787        }
7788    }
7789
7790    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeResetReqRequest {
7791        #[inline(always)]
7792        fn new_empty() -> Self {
7793            Self { req: fidl::new_empty!(ResetRequest, D) }
7794        }
7795
7796        #[inline]
7797        unsafe fn decode(
7798            &mut self,
7799            decoder: &mut fidl::encoding::Decoder<'_, D>,
7800            offset: usize,
7801            _depth: fidl::encoding::Depth,
7802        ) -> fidl::Result<()> {
7803            decoder.debug_check_bounds::<Self>(offset);
7804            // Verify that padding bytes are zero.
7805            fidl::decode!(ResetRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
7806            Ok(())
7807        }
7808    }
7809
7810    impl fidl::encoding::ValueTypeMarker for MlmeRoamConfRequest {
7811        type Borrowed<'a> = &'a Self;
7812        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7813            value
7814        }
7815    }
7816
7817    unsafe impl fidl::encoding::TypeMarker for MlmeRoamConfRequest {
7818        type Owned = Self;
7819
7820        #[inline(always)]
7821        fn inline_align(_context: fidl::encoding::Context) -> usize {
7822            8
7823        }
7824
7825        #[inline(always)]
7826        fn inline_size(_context: fidl::encoding::Context) -> usize {
7827            32
7828        }
7829    }
7830
7831    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeRoamConfRequest, D>
7832        for &MlmeRoamConfRequest
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::<MlmeRoamConfRequest>(offset);
7842            // Delegate to tuple encoding.
7843            fidl::encoding::Encode::<MlmeRoamConfRequest, D>::encode(
7844                (<RoamConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.conf),),
7845                encoder,
7846                offset,
7847                _depth,
7848            )
7849        }
7850    }
7851    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RoamConfirm, D>>
7852        fidl::encoding::Encode<MlmeRoamConfRequest, D> for (T0,)
7853    {
7854        #[inline]
7855        unsafe fn encode(
7856            self,
7857            encoder: &mut fidl::encoding::Encoder<'_, D>,
7858            offset: usize,
7859            depth: fidl::encoding::Depth,
7860        ) -> fidl::Result<()> {
7861            encoder.debug_check_bounds::<MlmeRoamConfRequest>(offset);
7862            // Zero out padding regions. There's no need to apply masks
7863            // because the unmasked parts will be overwritten by fields.
7864            // Write the fields.
7865            self.0.encode(encoder, offset + 0, depth)?;
7866            Ok(())
7867        }
7868    }
7869
7870    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeRoamConfRequest {
7871        #[inline(always)]
7872        fn new_empty() -> Self {
7873            Self { conf: fidl::new_empty!(RoamConfirm, D) }
7874        }
7875
7876        #[inline]
7877        unsafe fn decode(
7878            &mut self,
7879            decoder: &mut fidl::encoding::Decoder<'_, D>,
7880            offset: usize,
7881            _depth: fidl::encoding::Depth,
7882        ) -> fidl::Result<()> {
7883            decoder.debug_check_bounds::<Self>(offset);
7884            // Verify that padding bytes are zero.
7885            fidl::decode!(RoamConfirm, D, &mut self.conf, decoder, offset + 0, _depth)?;
7886            Ok(())
7887        }
7888    }
7889
7890    impl fidl::encoding::ValueTypeMarker for MlmeRoamReqRequest {
7891        type Borrowed<'a> = &'a Self;
7892        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7893            value
7894        }
7895    }
7896
7897    unsafe impl fidl::encoding::TypeMarker for MlmeRoamReqRequest {
7898        type Owned = Self;
7899
7900        #[inline(always)]
7901        fn inline_align(_context: fidl::encoding::Context) -> usize {
7902            8
7903        }
7904
7905        #[inline(always)]
7906        fn inline_size(_context: fidl::encoding::Context) -> usize {
7907            48
7908        }
7909    }
7910
7911    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeRoamReqRequest, D>
7912        for &MlmeRoamReqRequest
7913    {
7914        #[inline]
7915        unsafe fn encode(
7916            self,
7917            encoder: &mut fidl::encoding::Encoder<'_, D>,
7918            offset: usize,
7919            _depth: fidl::encoding::Depth,
7920        ) -> fidl::Result<()> {
7921            encoder.debug_check_bounds::<MlmeRoamReqRequest>(offset);
7922            // Delegate to tuple encoding.
7923            fidl::encoding::Encode::<MlmeRoamReqRequest, D>::encode(
7924                (<RoamRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
7925                encoder,
7926                offset,
7927                _depth,
7928            )
7929        }
7930    }
7931    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RoamRequest, D>>
7932        fidl::encoding::Encode<MlmeRoamReqRequest, D> for (T0,)
7933    {
7934        #[inline]
7935        unsafe fn encode(
7936            self,
7937            encoder: &mut fidl::encoding::Encoder<'_, D>,
7938            offset: usize,
7939            depth: fidl::encoding::Depth,
7940        ) -> fidl::Result<()> {
7941            encoder.debug_check_bounds::<MlmeRoamReqRequest>(offset);
7942            // Zero out padding regions. There's no need to apply masks
7943            // because the unmasked parts will be overwritten by fields.
7944            // Write the fields.
7945            self.0.encode(encoder, offset + 0, depth)?;
7946            Ok(())
7947        }
7948    }
7949
7950    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeRoamReqRequest {
7951        #[inline(always)]
7952        fn new_empty() -> Self {
7953            Self { req: fidl::new_empty!(RoamRequest, D) }
7954        }
7955
7956        #[inline]
7957        unsafe fn decode(
7958            &mut self,
7959            decoder: &mut fidl::encoding::Decoder<'_, D>,
7960            offset: usize,
7961            _depth: fidl::encoding::Depth,
7962        ) -> fidl::Result<()> {
7963            decoder.debug_check_bounds::<Self>(offset);
7964            // Verify that padding bytes are zero.
7965            fidl::decode!(RoamRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
7966            Ok(())
7967        }
7968    }
7969
7970    impl fidl::encoding::ValueTypeMarker for MlmeRoamResultIndRequest {
7971        type Borrowed<'a> = &'a Self;
7972        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7973            value
7974        }
7975    }
7976
7977    unsafe impl fidl::encoding::TypeMarker for MlmeRoamResultIndRequest {
7978        type Owned = Self;
7979
7980        #[inline(always)]
7981        fn inline_align(_context: fidl::encoding::Context) -> usize {
7982            8
7983        }
7984
7985        #[inline(always)]
7986        fn inline_size(_context: fidl::encoding::Context) -> usize {
7987            32
7988        }
7989    }
7990
7991    unsafe impl<D: fidl::encoding::ResourceDialect>
7992        fidl::encoding::Encode<MlmeRoamResultIndRequest, D> for &MlmeRoamResultIndRequest
7993    {
7994        #[inline]
7995        unsafe fn encode(
7996            self,
7997            encoder: &mut fidl::encoding::Encoder<'_, D>,
7998            offset: usize,
7999            _depth: fidl::encoding::Depth,
8000        ) -> fidl::Result<()> {
8001            encoder.debug_check_bounds::<MlmeRoamResultIndRequest>(offset);
8002            // Delegate to tuple encoding.
8003            fidl::encoding::Encode::<MlmeRoamResultIndRequest, D>::encode(
8004                (<RoamResultIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
8005                encoder,
8006                offset,
8007                _depth,
8008            )
8009        }
8010    }
8011    unsafe impl<
8012        D: fidl::encoding::ResourceDialect,
8013        T0: fidl::encoding::Encode<RoamResultIndication, D>,
8014    > fidl::encoding::Encode<MlmeRoamResultIndRequest, D> for (T0,)
8015    {
8016        #[inline]
8017        unsafe fn encode(
8018            self,
8019            encoder: &mut fidl::encoding::Encoder<'_, D>,
8020            offset: usize,
8021            depth: fidl::encoding::Depth,
8022        ) -> fidl::Result<()> {
8023            encoder.debug_check_bounds::<MlmeRoamResultIndRequest>(offset);
8024            // Zero out padding regions. There's no need to apply masks
8025            // because the unmasked parts will be overwritten by fields.
8026            // Write the fields.
8027            self.0.encode(encoder, offset + 0, depth)?;
8028            Ok(())
8029        }
8030    }
8031
8032    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8033        for MlmeRoamResultIndRequest
8034    {
8035        #[inline(always)]
8036        fn new_empty() -> Self {
8037            Self { ind: fidl::new_empty!(RoamResultIndication, D) }
8038        }
8039
8040        #[inline]
8041        unsafe fn decode(
8042            &mut self,
8043            decoder: &mut fidl::encoding::Decoder<'_, D>,
8044            offset: usize,
8045            _depth: fidl::encoding::Depth,
8046        ) -> fidl::Result<()> {
8047            decoder.debug_check_bounds::<Self>(offset);
8048            // Verify that padding bytes are zero.
8049            fidl::decode!(RoamResultIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
8050            Ok(())
8051        }
8052    }
8053
8054    impl fidl::encoding::ValueTypeMarker for MlmeRoamStartIndRequest {
8055        type Borrowed<'a> = &'a Self;
8056        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8057            value
8058        }
8059    }
8060
8061    unsafe impl fidl::encoding::TypeMarker for MlmeRoamStartIndRequest {
8062        type Owned = Self;
8063
8064        #[inline(always)]
8065        fn inline_align(_context: fidl::encoding::Context) -> usize {
8066            8
8067        }
8068
8069        #[inline(always)]
8070        fn inline_size(_context: fidl::encoding::Context) -> usize {
8071            64
8072        }
8073    }
8074
8075    unsafe impl<D: fidl::encoding::ResourceDialect>
8076        fidl::encoding::Encode<MlmeRoamStartIndRequest, D> for &MlmeRoamStartIndRequest
8077    {
8078        #[inline]
8079        unsafe fn encode(
8080            self,
8081            encoder: &mut fidl::encoding::Encoder<'_, D>,
8082            offset: usize,
8083            _depth: fidl::encoding::Depth,
8084        ) -> fidl::Result<()> {
8085            encoder.debug_check_bounds::<MlmeRoamStartIndRequest>(offset);
8086            // Delegate to tuple encoding.
8087            fidl::encoding::Encode::<MlmeRoamStartIndRequest, D>::encode(
8088                (<RoamStartIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
8089                encoder,
8090                offset,
8091                _depth,
8092            )
8093        }
8094    }
8095    unsafe impl<
8096        D: fidl::encoding::ResourceDialect,
8097        T0: fidl::encoding::Encode<RoamStartIndication, D>,
8098    > fidl::encoding::Encode<MlmeRoamStartIndRequest, D> for (T0,)
8099    {
8100        #[inline]
8101        unsafe fn encode(
8102            self,
8103            encoder: &mut fidl::encoding::Encoder<'_, D>,
8104            offset: usize,
8105            depth: fidl::encoding::Depth,
8106        ) -> fidl::Result<()> {
8107            encoder.debug_check_bounds::<MlmeRoamStartIndRequest>(offset);
8108            // Zero out padding regions. There's no need to apply masks
8109            // because the unmasked parts will be overwritten by fields.
8110            // Write the fields.
8111            self.0.encode(encoder, offset + 0, depth)?;
8112            Ok(())
8113        }
8114    }
8115
8116    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8117        for MlmeRoamStartIndRequest
8118    {
8119        #[inline(always)]
8120        fn new_empty() -> Self {
8121            Self { ind: fidl::new_empty!(RoamStartIndication, D) }
8122        }
8123
8124        #[inline]
8125        unsafe fn decode(
8126            &mut self,
8127            decoder: &mut fidl::encoding::Decoder<'_, D>,
8128            offset: usize,
8129            _depth: fidl::encoding::Depth,
8130        ) -> fidl::Result<()> {
8131            decoder.debug_check_bounds::<Self>(offset);
8132            // Verify that padding bytes are zero.
8133            fidl::decode!(RoamStartIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
8134            Ok(())
8135        }
8136    }
8137
8138    impl fidl::encoding::ValueTypeMarker for MlmeSaeFrameTxRequest {
8139        type Borrowed<'a> = &'a Self;
8140        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8141            value
8142        }
8143    }
8144
8145    unsafe impl fidl::encoding::TypeMarker for MlmeSaeFrameTxRequest {
8146        type Owned = Self;
8147
8148        #[inline(always)]
8149        fn inline_align(_context: fidl::encoding::Context) -> usize {
8150            8
8151        }
8152
8153        #[inline(always)]
8154        fn inline_size(_context: fidl::encoding::Context) -> usize {
8155            32
8156        }
8157    }
8158
8159    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeSaeFrameTxRequest, D>
8160        for &MlmeSaeFrameTxRequest
8161    {
8162        #[inline]
8163        unsafe fn encode(
8164            self,
8165            encoder: &mut fidl::encoding::Encoder<'_, D>,
8166            offset: usize,
8167            _depth: fidl::encoding::Depth,
8168        ) -> fidl::Result<()> {
8169            encoder.debug_check_bounds::<MlmeSaeFrameTxRequest>(offset);
8170            // Delegate to tuple encoding.
8171            fidl::encoding::Encode::<MlmeSaeFrameTxRequest, D>::encode(
8172                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
8173                encoder,
8174                offset,
8175                _depth,
8176            )
8177        }
8178    }
8179    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
8180        fidl::encoding::Encode<MlmeSaeFrameTxRequest, D> for (T0,)
8181    {
8182        #[inline]
8183        unsafe fn encode(
8184            self,
8185            encoder: &mut fidl::encoding::Encoder<'_, D>,
8186            offset: usize,
8187            depth: fidl::encoding::Depth,
8188        ) -> fidl::Result<()> {
8189            encoder.debug_check_bounds::<MlmeSaeFrameTxRequest>(offset);
8190            // Zero out padding regions. There's no need to apply masks
8191            // because the unmasked parts will be overwritten by fields.
8192            // Write the fields.
8193            self.0.encode(encoder, offset + 0, depth)?;
8194            Ok(())
8195        }
8196    }
8197
8198    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeSaeFrameTxRequest {
8199        #[inline(always)]
8200        fn new_empty() -> Self {
8201            Self { frame: fidl::new_empty!(SaeFrame, D) }
8202        }
8203
8204        #[inline]
8205        unsafe fn decode(
8206            &mut self,
8207            decoder: &mut fidl::encoding::Decoder<'_, D>,
8208            offset: usize,
8209            _depth: fidl::encoding::Depth,
8210        ) -> fidl::Result<()> {
8211            decoder.debug_check_bounds::<Self>(offset);
8212            // Verify that padding bytes are zero.
8213            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
8214            Ok(())
8215        }
8216    }
8217
8218    impl fidl::encoding::ValueTypeMarker for MlmeSaeHandshakeRespRequest {
8219        type Borrowed<'a> = &'a Self;
8220        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8221            value
8222        }
8223    }
8224
8225    unsafe impl fidl::encoding::TypeMarker for MlmeSaeHandshakeRespRequest {
8226        type Owned = Self;
8227
8228        #[inline(always)]
8229        fn inline_align(_context: fidl::encoding::Context) -> usize {
8230            2
8231        }
8232
8233        #[inline(always)]
8234        fn inline_size(_context: fidl::encoding::Context) -> usize {
8235            8
8236        }
8237    }
8238
8239    unsafe impl<D: fidl::encoding::ResourceDialect>
8240        fidl::encoding::Encode<MlmeSaeHandshakeRespRequest, D> for &MlmeSaeHandshakeRespRequest
8241    {
8242        #[inline]
8243        unsafe fn encode(
8244            self,
8245            encoder: &mut fidl::encoding::Encoder<'_, D>,
8246            offset: usize,
8247            _depth: fidl::encoding::Depth,
8248        ) -> fidl::Result<()> {
8249            encoder.debug_check_bounds::<MlmeSaeHandshakeRespRequest>(offset);
8250            // Delegate to tuple encoding.
8251            fidl::encoding::Encode::<MlmeSaeHandshakeRespRequest, D>::encode(
8252                (<SaeHandshakeResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
8253                encoder,
8254                offset,
8255                _depth,
8256            )
8257        }
8258    }
8259    unsafe impl<
8260        D: fidl::encoding::ResourceDialect,
8261        T0: fidl::encoding::Encode<SaeHandshakeResponse, D>,
8262    > fidl::encoding::Encode<MlmeSaeHandshakeRespRequest, D> for (T0,)
8263    {
8264        #[inline]
8265        unsafe fn encode(
8266            self,
8267            encoder: &mut fidl::encoding::Encoder<'_, D>,
8268            offset: usize,
8269            depth: fidl::encoding::Depth,
8270        ) -> fidl::Result<()> {
8271            encoder.debug_check_bounds::<MlmeSaeHandshakeRespRequest>(offset);
8272            // Zero out padding regions. There's no need to apply masks
8273            // because the unmasked parts will be overwritten by fields.
8274            // Write the fields.
8275            self.0.encode(encoder, offset + 0, depth)?;
8276            Ok(())
8277        }
8278    }
8279
8280    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8281        for MlmeSaeHandshakeRespRequest
8282    {
8283        #[inline(always)]
8284        fn new_empty() -> Self {
8285            Self { resp: fidl::new_empty!(SaeHandshakeResponse, D) }
8286        }
8287
8288        #[inline]
8289        unsafe fn decode(
8290            &mut self,
8291            decoder: &mut fidl::encoding::Decoder<'_, D>,
8292            offset: usize,
8293            _depth: fidl::encoding::Depth,
8294        ) -> fidl::Result<()> {
8295            decoder.debug_check_bounds::<Self>(offset);
8296            // Verify that padding bytes are zero.
8297            fidl::decode!(SaeHandshakeResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
8298            Ok(())
8299        }
8300    }
8301
8302    impl fidl::encoding::ValueTypeMarker for MlmeSetControlledPortRequest {
8303        type Borrowed<'a> = &'a Self;
8304        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8305            value
8306        }
8307    }
8308
8309    unsafe impl fidl::encoding::TypeMarker for MlmeSetControlledPortRequest {
8310        type Owned = Self;
8311
8312        #[inline(always)]
8313        fn inline_align(_context: fidl::encoding::Context) -> usize {
8314            4
8315        }
8316
8317        #[inline(always)]
8318        fn inline_size(_context: fidl::encoding::Context) -> usize {
8319            12
8320        }
8321    }
8322
8323    unsafe impl<D: fidl::encoding::ResourceDialect>
8324        fidl::encoding::Encode<MlmeSetControlledPortRequest, D> for &MlmeSetControlledPortRequest
8325    {
8326        #[inline]
8327        unsafe fn encode(
8328            self,
8329            encoder: &mut fidl::encoding::Encoder<'_, D>,
8330            offset: usize,
8331            _depth: fidl::encoding::Depth,
8332        ) -> fidl::Result<()> {
8333            encoder.debug_check_bounds::<MlmeSetControlledPortRequest>(offset);
8334            // Delegate to tuple encoding.
8335            fidl::encoding::Encode::<MlmeSetControlledPortRequest, D>::encode(
8336                (<SetControlledPortRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8337                encoder,
8338                offset,
8339                _depth,
8340            )
8341        }
8342    }
8343    unsafe impl<
8344        D: fidl::encoding::ResourceDialect,
8345        T0: fidl::encoding::Encode<SetControlledPortRequest, D>,
8346    > fidl::encoding::Encode<MlmeSetControlledPortRequest, D> for (T0,)
8347    {
8348        #[inline]
8349        unsafe fn encode(
8350            self,
8351            encoder: &mut fidl::encoding::Encoder<'_, D>,
8352            offset: usize,
8353            depth: fidl::encoding::Depth,
8354        ) -> fidl::Result<()> {
8355            encoder.debug_check_bounds::<MlmeSetControlledPortRequest>(offset);
8356            // Zero out padding regions. There's no need to apply masks
8357            // because the unmasked parts will be overwritten by fields.
8358            // Write the fields.
8359            self.0.encode(encoder, offset + 0, depth)?;
8360            Ok(())
8361        }
8362    }
8363
8364    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8365        for MlmeSetControlledPortRequest
8366    {
8367        #[inline(always)]
8368        fn new_empty() -> Self {
8369            Self { req: fidl::new_empty!(SetControlledPortRequest, D) }
8370        }
8371
8372        #[inline]
8373        unsafe fn decode(
8374            &mut self,
8375            decoder: &mut fidl::encoding::Decoder<'_, D>,
8376            offset: usize,
8377            _depth: fidl::encoding::Depth,
8378        ) -> fidl::Result<()> {
8379            decoder.debug_check_bounds::<Self>(offset);
8380            // Verify that padding bytes are zero.
8381            fidl::decode!(SetControlledPortRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8382            Ok(())
8383        }
8384    }
8385
8386    impl fidl::encoding::ValueTypeMarker for MlmeSetKeysConfRequest {
8387        type Borrowed<'a> = &'a Self;
8388        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8389            value
8390        }
8391    }
8392
8393    unsafe impl fidl::encoding::TypeMarker for MlmeSetKeysConfRequest {
8394        type Owned = Self;
8395
8396        #[inline(always)]
8397        fn inline_align(_context: fidl::encoding::Context) -> usize {
8398            8
8399        }
8400
8401        #[inline(always)]
8402        fn inline_size(_context: fidl::encoding::Context) -> usize {
8403            16
8404        }
8405    }
8406
8407    unsafe impl<D: fidl::encoding::ResourceDialect>
8408        fidl::encoding::Encode<MlmeSetKeysConfRequest, D> for &MlmeSetKeysConfRequest
8409    {
8410        #[inline]
8411        unsafe fn encode(
8412            self,
8413            encoder: &mut fidl::encoding::Encoder<'_, D>,
8414            offset: usize,
8415            _depth: fidl::encoding::Depth,
8416        ) -> fidl::Result<()> {
8417            encoder.debug_check_bounds::<MlmeSetKeysConfRequest>(offset);
8418            // Delegate to tuple encoding.
8419            fidl::encoding::Encode::<MlmeSetKeysConfRequest, D>::encode(
8420                (<SetKeysConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.conf),),
8421                encoder,
8422                offset,
8423                _depth,
8424            )
8425        }
8426    }
8427    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SetKeysConfirm, D>>
8428        fidl::encoding::Encode<MlmeSetKeysConfRequest, D> for (T0,)
8429    {
8430        #[inline]
8431        unsafe fn encode(
8432            self,
8433            encoder: &mut fidl::encoding::Encoder<'_, D>,
8434            offset: usize,
8435            depth: fidl::encoding::Depth,
8436        ) -> fidl::Result<()> {
8437            encoder.debug_check_bounds::<MlmeSetKeysConfRequest>(offset);
8438            // Zero out padding regions. There's no need to apply masks
8439            // because the unmasked parts will be overwritten by fields.
8440            // Write the fields.
8441            self.0.encode(encoder, offset + 0, depth)?;
8442            Ok(())
8443        }
8444    }
8445
8446    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8447        for MlmeSetKeysConfRequest
8448    {
8449        #[inline(always)]
8450        fn new_empty() -> Self {
8451            Self { conf: fidl::new_empty!(SetKeysConfirm, D) }
8452        }
8453
8454        #[inline]
8455        unsafe fn decode(
8456            &mut self,
8457            decoder: &mut fidl::encoding::Decoder<'_, D>,
8458            offset: usize,
8459            _depth: fidl::encoding::Depth,
8460        ) -> fidl::Result<()> {
8461            decoder.debug_check_bounds::<Self>(offset);
8462            // Verify that padding bytes are zero.
8463            fidl::decode!(SetKeysConfirm, D, &mut self.conf, decoder, offset + 0, _depth)?;
8464            Ok(())
8465        }
8466    }
8467
8468    impl fidl::encoding::ValueTypeMarker for MlmeSetKeysReqRequest {
8469        type Borrowed<'a> = &'a Self;
8470        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8471            value
8472        }
8473    }
8474
8475    unsafe impl fidl::encoding::TypeMarker for MlmeSetKeysReqRequest {
8476        type Owned = Self;
8477
8478        #[inline(always)]
8479        fn inline_align(_context: fidl::encoding::Context) -> usize {
8480            8
8481        }
8482
8483        #[inline(always)]
8484        fn inline_size(_context: fidl::encoding::Context) -> usize {
8485            16
8486        }
8487    }
8488
8489    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeSetKeysReqRequest, D>
8490        for &MlmeSetKeysReqRequest
8491    {
8492        #[inline]
8493        unsafe fn encode(
8494            self,
8495            encoder: &mut fidl::encoding::Encoder<'_, D>,
8496            offset: usize,
8497            _depth: fidl::encoding::Depth,
8498        ) -> fidl::Result<()> {
8499            encoder.debug_check_bounds::<MlmeSetKeysReqRequest>(offset);
8500            // Delegate to tuple encoding.
8501            fidl::encoding::Encode::<MlmeSetKeysReqRequest, D>::encode(
8502                (<SetKeysRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8503                encoder,
8504                offset,
8505                _depth,
8506            )
8507        }
8508    }
8509    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SetKeysRequest, D>>
8510        fidl::encoding::Encode<MlmeSetKeysReqRequest, D> for (T0,)
8511    {
8512        #[inline]
8513        unsafe fn encode(
8514            self,
8515            encoder: &mut fidl::encoding::Encoder<'_, D>,
8516            offset: usize,
8517            depth: fidl::encoding::Depth,
8518        ) -> fidl::Result<()> {
8519            encoder.debug_check_bounds::<MlmeSetKeysReqRequest>(offset);
8520            // Zero out padding regions. There's no need to apply masks
8521            // because the unmasked parts will be overwritten by fields.
8522            // Write the fields.
8523            self.0.encode(encoder, offset + 0, depth)?;
8524            Ok(())
8525        }
8526    }
8527
8528    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeSetKeysReqRequest {
8529        #[inline(always)]
8530        fn new_empty() -> Self {
8531            Self { req: fidl::new_empty!(SetKeysRequest, D) }
8532        }
8533
8534        #[inline]
8535        unsafe fn decode(
8536            &mut self,
8537            decoder: &mut fidl::encoding::Decoder<'_, D>,
8538            offset: usize,
8539            _depth: fidl::encoding::Depth,
8540        ) -> fidl::Result<()> {
8541            decoder.debug_check_bounds::<Self>(offset);
8542            // Verify that padding bytes are zero.
8543            fidl::decode!(SetKeysRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8544            Ok(())
8545        }
8546    }
8547
8548    impl fidl::encoding::ValueTypeMarker for MlmeSignalReportRequest {
8549        type Borrowed<'a> = &'a Self;
8550        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8551            value
8552        }
8553    }
8554
8555    unsafe impl fidl::encoding::TypeMarker for MlmeSignalReportRequest {
8556        type Owned = Self;
8557
8558        #[inline(always)]
8559        fn inline_align(_context: fidl::encoding::Context) -> usize {
8560            1
8561        }
8562
8563        #[inline(always)]
8564        fn inline_size(_context: fidl::encoding::Context) -> usize {
8565            2
8566        }
8567    }
8568
8569    unsafe impl<D: fidl::encoding::ResourceDialect>
8570        fidl::encoding::Encode<MlmeSignalReportRequest, D> for &MlmeSignalReportRequest
8571    {
8572        #[inline]
8573        unsafe fn encode(
8574            self,
8575            encoder: &mut fidl::encoding::Encoder<'_, D>,
8576            offset: usize,
8577            _depth: fidl::encoding::Depth,
8578        ) -> fidl::Result<()> {
8579            encoder.debug_check_bounds::<MlmeSignalReportRequest>(offset);
8580            // Delegate to tuple encoding.
8581            fidl::encoding::Encode::<MlmeSignalReportRequest, D>::encode(
8582                (
8583                    <fidl_fuchsia_wlan_internal__common::SignalReportIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),
8584                ),
8585                encoder, offset, _depth
8586            )
8587        }
8588    }
8589    unsafe impl<
8590        D: fidl::encoding::ResourceDialect,
8591        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal__common::SignalReportIndication, D>,
8592    > fidl::encoding::Encode<MlmeSignalReportRequest, D> for (T0,)
8593    {
8594        #[inline]
8595        unsafe fn encode(
8596            self,
8597            encoder: &mut fidl::encoding::Encoder<'_, D>,
8598            offset: usize,
8599            depth: fidl::encoding::Depth,
8600        ) -> fidl::Result<()> {
8601            encoder.debug_check_bounds::<MlmeSignalReportRequest>(offset);
8602            // Zero out padding regions. There's no need to apply masks
8603            // because the unmasked parts will be overwritten by fields.
8604            // Write the fields.
8605            self.0.encode(encoder, offset + 0, depth)?;
8606            Ok(())
8607        }
8608    }
8609
8610    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8611        for MlmeSignalReportRequest
8612    {
8613        #[inline(always)]
8614        fn new_empty() -> Self {
8615            Self {
8616                ind: fidl::new_empty!(
8617                    fidl_fuchsia_wlan_internal__common::SignalReportIndication,
8618                    D
8619                ),
8620            }
8621        }
8622
8623        #[inline]
8624        unsafe fn decode(
8625            &mut self,
8626            decoder: &mut fidl::encoding::Decoder<'_, D>,
8627            offset: usize,
8628            _depth: fidl::encoding::Depth,
8629        ) -> fidl::Result<()> {
8630            decoder.debug_check_bounds::<Self>(offset);
8631            // Verify that padding bytes are zero.
8632            fidl::decode!(
8633                fidl_fuchsia_wlan_internal__common::SignalReportIndication,
8634                D,
8635                &mut self.ind,
8636                decoder,
8637                offset + 0,
8638                _depth
8639            )?;
8640            Ok(())
8641        }
8642    }
8643
8644    impl fidl::encoding::ValueTypeMarker for MlmeStartCaptureFramesRequest {
8645        type Borrowed<'a> = &'a Self;
8646        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8647            value
8648        }
8649    }
8650
8651    unsafe impl fidl::encoding::TypeMarker for MlmeStartCaptureFramesRequest {
8652        type Owned = Self;
8653
8654        #[inline(always)]
8655        fn inline_align(_context: fidl::encoding::Context) -> usize {
8656            4
8657        }
8658
8659        #[inline(always)]
8660        fn inline_size(_context: fidl::encoding::Context) -> usize {
8661            4
8662        }
8663    }
8664
8665    unsafe impl<D: fidl::encoding::ResourceDialect>
8666        fidl::encoding::Encode<MlmeStartCaptureFramesRequest, D>
8667        for &MlmeStartCaptureFramesRequest
8668    {
8669        #[inline]
8670        unsafe fn encode(
8671            self,
8672            encoder: &mut fidl::encoding::Encoder<'_, D>,
8673            offset: usize,
8674            _depth: fidl::encoding::Depth,
8675        ) -> fidl::Result<()> {
8676            encoder.debug_check_bounds::<MlmeStartCaptureFramesRequest>(offset);
8677            // Delegate to tuple encoding.
8678            fidl::encoding::Encode::<MlmeStartCaptureFramesRequest, D>::encode(
8679                (<StartCaptureFramesRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8680                encoder,
8681                offset,
8682                _depth,
8683            )
8684        }
8685    }
8686    unsafe impl<
8687        D: fidl::encoding::ResourceDialect,
8688        T0: fidl::encoding::Encode<StartCaptureFramesRequest, D>,
8689    > fidl::encoding::Encode<MlmeStartCaptureFramesRequest, D> for (T0,)
8690    {
8691        #[inline]
8692        unsafe fn encode(
8693            self,
8694            encoder: &mut fidl::encoding::Encoder<'_, D>,
8695            offset: usize,
8696            depth: fidl::encoding::Depth,
8697        ) -> fidl::Result<()> {
8698            encoder.debug_check_bounds::<MlmeStartCaptureFramesRequest>(offset);
8699            // Zero out padding regions. There's no need to apply masks
8700            // because the unmasked parts will be overwritten by fields.
8701            // Write the fields.
8702            self.0.encode(encoder, offset + 0, depth)?;
8703            Ok(())
8704        }
8705    }
8706
8707    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8708        for MlmeStartCaptureFramesRequest
8709    {
8710        #[inline(always)]
8711        fn new_empty() -> Self {
8712            Self { req: fidl::new_empty!(StartCaptureFramesRequest, D) }
8713        }
8714
8715        #[inline]
8716        unsafe fn decode(
8717            &mut self,
8718            decoder: &mut fidl::encoding::Decoder<'_, D>,
8719            offset: usize,
8720            _depth: fidl::encoding::Depth,
8721        ) -> fidl::Result<()> {
8722            decoder.debug_check_bounds::<Self>(offset);
8723            // Verify that padding bytes are zero.
8724            fidl::decode!(
8725                StartCaptureFramesRequest,
8726                D,
8727                &mut self.req,
8728                decoder,
8729                offset + 0,
8730                _depth
8731            )?;
8732            Ok(())
8733        }
8734    }
8735
8736    impl fidl::encoding::ValueTypeMarker for MlmeStartCaptureFramesResponse {
8737        type Borrowed<'a> = &'a Self;
8738        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8739            value
8740        }
8741    }
8742
8743    unsafe impl fidl::encoding::TypeMarker for MlmeStartCaptureFramesResponse {
8744        type Owned = Self;
8745
8746        #[inline(always)]
8747        fn inline_align(_context: fidl::encoding::Context) -> usize {
8748            4
8749        }
8750
8751        #[inline(always)]
8752        fn inline_size(_context: fidl::encoding::Context) -> usize {
8753            8
8754        }
8755    }
8756
8757    unsafe impl<D: fidl::encoding::ResourceDialect>
8758        fidl::encoding::Encode<MlmeStartCaptureFramesResponse, D>
8759        for &MlmeStartCaptureFramesResponse
8760    {
8761        #[inline]
8762        unsafe fn encode(
8763            self,
8764            encoder: &mut fidl::encoding::Encoder<'_, D>,
8765            offset: usize,
8766            _depth: fidl::encoding::Depth,
8767        ) -> fidl::Result<()> {
8768            encoder.debug_check_bounds::<MlmeStartCaptureFramesResponse>(offset);
8769            // Delegate to tuple encoding.
8770            fidl::encoding::Encode::<MlmeStartCaptureFramesResponse, D>::encode(
8771                (<StartCaptureFramesResponse as fidl::encoding::ValueTypeMarker>::borrow(
8772                    &self.resp,
8773                ),),
8774                encoder,
8775                offset,
8776                _depth,
8777            )
8778        }
8779    }
8780    unsafe impl<
8781        D: fidl::encoding::ResourceDialect,
8782        T0: fidl::encoding::Encode<StartCaptureFramesResponse, D>,
8783    > fidl::encoding::Encode<MlmeStartCaptureFramesResponse, D> for (T0,)
8784    {
8785        #[inline]
8786        unsafe fn encode(
8787            self,
8788            encoder: &mut fidl::encoding::Encoder<'_, D>,
8789            offset: usize,
8790            depth: fidl::encoding::Depth,
8791        ) -> fidl::Result<()> {
8792            encoder.debug_check_bounds::<MlmeStartCaptureFramesResponse>(offset);
8793            // Zero out padding regions. There's no need to apply masks
8794            // because the unmasked parts will be overwritten by fields.
8795            // Write the fields.
8796            self.0.encode(encoder, offset + 0, depth)?;
8797            Ok(())
8798        }
8799    }
8800
8801    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8802        for MlmeStartCaptureFramesResponse
8803    {
8804        #[inline(always)]
8805        fn new_empty() -> Self {
8806            Self { resp: fidl::new_empty!(StartCaptureFramesResponse, D) }
8807        }
8808
8809        #[inline]
8810        unsafe fn decode(
8811            &mut self,
8812            decoder: &mut fidl::encoding::Decoder<'_, D>,
8813            offset: usize,
8814            _depth: fidl::encoding::Depth,
8815        ) -> fidl::Result<()> {
8816            decoder.debug_check_bounds::<Self>(offset);
8817            // Verify that padding bytes are zero.
8818            fidl::decode!(
8819                StartCaptureFramesResponse,
8820                D,
8821                &mut self.resp,
8822                decoder,
8823                offset + 0,
8824                _depth
8825            )?;
8826            Ok(())
8827        }
8828    }
8829
8830    impl fidl::encoding::ValueTypeMarker for MlmeStartConfRequest {
8831        type Borrowed<'a> = &'a Self;
8832        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8833            value
8834        }
8835    }
8836
8837    unsafe impl fidl::encoding::TypeMarker for MlmeStartConfRequest {
8838        type Owned = Self;
8839
8840        #[inline(always)]
8841        fn inline_align(_context: fidl::encoding::Context) -> usize {
8842            4
8843        }
8844
8845        #[inline(always)]
8846        fn inline_size(_context: fidl::encoding::Context) -> usize {
8847            4
8848        }
8849    }
8850
8851    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartConfRequest, D>
8852        for &MlmeStartConfRequest
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::<MlmeStartConfRequest>(offset);
8862            // Delegate to tuple encoding.
8863            fidl::encoding::Encode::<MlmeStartConfRequest, D>::encode(
8864                (<StartConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
8865                encoder,
8866                offset,
8867                _depth,
8868            )
8869        }
8870    }
8871    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartConfirm, D>>
8872        fidl::encoding::Encode<MlmeStartConfRequest, D> for (T0,)
8873    {
8874        #[inline]
8875        unsafe fn encode(
8876            self,
8877            encoder: &mut fidl::encoding::Encoder<'_, D>,
8878            offset: usize,
8879            depth: fidl::encoding::Depth,
8880        ) -> fidl::Result<()> {
8881            encoder.debug_check_bounds::<MlmeStartConfRequest>(offset);
8882            // Zero out padding regions. There's no need to apply masks
8883            // because the unmasked parts will be overwritten by fields.
8884            // Write the fields.
8885            self.0.encode(encoder, offset + 0, depth)?;
8886            Ok(())
8887        }
8888    }
8889
8890    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartConfRequest {
8891        #[inline(always)]
8892        fn new_empty() -> Self {
8893            Self { resp: fidl::new_empty!(StartConfirm, D) }
8894        }
8895
8896        #[inline]
8897        unsafe fn decode(
8898            &mut self,
8899            decoder: &mut fidl::encoding::Decoder<'_, D>,
8900            offset: usize,
8901            _depth: fidl::encoding::Depth,
8902        ) -> fidl::Result<()> {
8903            decoder.debug_check_bounds::<Self>(offset);
8904            // Verify that padding bytes are zero.
8905            fidl::decode!(StartConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
8906            Ok(())
8907        }
8908    }
8909
8910    impl fidl::encoding::ValueTypeMarker for MlmeStartReqRequest {
8911        type Borrowed<'a> = &'a Self;
8912        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8913            value
8914        }
8915    }
8916
8917    unsafe impl fidl::encoding::TypeMarker for MlmeStartReqRequest {
8918        type Owned = Self;
8919
8920        #[inline(always)]
8921        fn inline_align(_context: fidl::encoding::Context) -> usize {
8922            8
8923        }
8924
8925        #[inline(always)]
8926        fn inline_size(_context: fidl::encoding::Context) -> usize {
8927            96
8928        }
8929    }
8930
8931    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartReqRequest, D>
8932        for &MlmeStartReqRequest
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::<MlmeStartReqRequest>(offset);
8942            // Delegate to tuple encoding.
8943            fidl::encoding::Encode::<MlmeStartReqRequest, D>::encode(
8944                (<StartRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8945                encoder,
8946                offset,
8947                _depth,
8948            )
8949        }
8950    }
8951    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartRequest, D>>
8952        fidl::encoding::Encode<MlmeStartReqRequest, D> for (T0,)
8953    {
8954        #[inline]
8955        unsafe fn encode(
8956            self,
8957            encoder: &mut fidl::encoding::Encoder<'_, D>,
8958            offset: usize,
8959            depth: fidl::encoding::Depth,
8960        ) -> fidl::Result<()> {
8961            encoder.debug_check_bounds::<MlmeStartReqRequest>(offset);
8962            // Zero out padding regions. There's no need to apply masks
8963            // because the unmasked parts will be overwritten by fields.
8964            // Write the fields.
8965            self.0.encode(encoder, offset + 0, depth)?;
8966            Ok(())
8967        }
8968    }
8969
8970    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartReqRequest {
8971        #[inline(always)]
8972        fn new_empty() -> Self {
8973            Self { req: fidl::new_empty!(StartRequest, D) }
8974        }
8975
8976        #[inline]
8977        unsafe fn decode(
8978            &mut self,
8979            decoder: &mut fidl::encoding::Decoder<'_, D>,
8980            offset: usize,
8981            _depth: fidl::encoding::Depth,
8982        ) -> fidl::Result<()> {
8983            decoder.debug_check_bounds::<Self>(offset);
8984            // Verify that padding bytes are zero.
8985            fidl::decode!(StartRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8986            Ok(())
8987        }
8988    }
8989
8990    impl fidl::encoding::ValueTypeMarker for MlmeStartScanRequest {
8991        type Borrowed<'a> = &'a Self;
8992        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8993            value
8994        }
8995    }
8996
8997    unsafe impl fidl::encoding::TypeMarker for MlmeStartScanRequest {
8998        type Owned = Self;
8999
9000        #[inline(always)]
9001        fn inline_align(_context: fidl::encoding::Context) -> usize {
9002            8
9003        }
9004
9005        #[inline(always)]
9006        fn inline_size(_context: fidl::encoding::Context) -> usize {
9007            64
9008        }
9009    }
9010
9011    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartScanRequest, D>
9012        for &MlmeStartScanRequest
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::<MlmeStartScanRequest>(offset);
9022            // Delegate to tuple encoding.
9023            fidl::encoding::Encode::<MlmeStartScanRequest, D>::encode(
9024                (<ScanRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9025                encoder,
9026                offset,
9027                _depth,
9028            )
9029        }
9030    }
9031    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanRequest, D>>
9032        fidl::encoding::Encode<MlmeStartScanRequest, D> for (T0,)
9033    {
9034        #[inline]
9035        unsafe fn encode(
9036            self,
9037            encoder: &mut fidl::encoding::Encoder<'_, D>,
9038            offset: usize,
9039            depth: fidl::encoding::Depth,
9040        ) -> fidl::Result<()> {
9041            encoder.debug_check_bounds::<MlmeStartScanRequest>(offset);
9042            // Zero out padding regions. There's no need to apply masks
9043            // because the unmasked parts will be overwritten by fields.
9044            // Write the fields.
9045            self.0.encode(encoder, offset + 0, depth)?;
9046            Ok(())
9047        }
9048    }
9049
9050    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartScanRequest {
9051        #[inline(always)]
9052        fn new_empty() -> Self {
9053            Self { req: fidl::new_empty!(ScanRequest, D) }
9054        }
9055
9056        #[inline]
9057        unsafe fn decode(
9058            &mut self,
9059            decoder: &mut fidl::encoding::Decoder<'_, D>,
9060            offset: usize,
9061            _depth: fidl::encoding::Depth,
9062        ) -> fidl::Result<()> {
9063            decoder.debug_check_bounds::<Self>(offset);
9064            // Verify that padding bytes are zero.
9065            fidl::decode!(ScanRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9066            Ok(())
9067        }
9068    }
9069
9070    impl fidl::encoding::ValueTypeMarker for MlmeStopConfRequest {
9071        type Borrowed<'a> = &'a Self;
9072        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9073            value
9074        }
9075    }
9076
9077    unsafe impl fidl::encoding::TypeMarker for MlmeStopConfRequest {
9078        type Owned = Self;
9079
9080        #[inline(always)]
9081        fn inline_align(_context: fidl::encoding::Context) -> usize {
9082            4
9083        }
9084
9085        #[inline(always)]
9086        fn inline_size(_context: fidl::encoding::Context) -> usize {
9087            4
9088        }
9089    }
9090
9091    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStopConfRequest, D>
9092        for &MlmeStopConfRequest
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::<MlmeStopConfRequest>(offset);
9102            // Delegate to tuple encoding.
9103            fidl::encoding::Encode::<MlmeStopConfRequest, D>::encode(
9104                (<StopConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
9105                encoder,
9106                offset,
9107                _depth,
9108            )
9109        }
9110    }
9111    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopConfirm, D>>
9112        fidl::encoding::Encode<MlmeStopConfRequest, D> for (T0,)
9113    {
9114        #[inline]
9115        unsafe fn encode(
9116            self,
9117            encoder: &mut fidl::encoding::Encoder<'_, D>,
9118            offset: usize,
9119            depth: fidl::encoding::Depth,
9120        ) -> fidl::Result<()> {
9121            encoder.debug_check_bounds::<MlmeStopConfRequest>(offset);
9122            // Zero out padding regions. There's no need to apply masks
9123            // because the unmasked parts will be overwritten by fields.
9124            // Write the fields.
9125            self.0.encode(encoder, offset + 0, depth)?;
9126            Ok(())
9127        }
9128    }
9129
9130    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStopConfRequest {
9131        #[inline(always)]
9132        fn new_empty() -> Self {
9133            Self { resp: fidl::new_empty!(StopConfirm, D) }
9134        }
9135
9136        #[inline]
9137        unsafe fn decode(
9138            &mut self,
9139            decoder: &mut fidl::encoding::Decoder<'_, D>,
9140            offset: usize,
9141            _depth: fidl::encoding::Depth,
9142        ) -> fidl::Result<()> {
9143            decoder.debug_check_bounds::<Self>(offset);
9144            // Verify that padding bytes are zero.
9145            fidl::decode!(StopConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
9146            Ok(())
9147        }
9148    }
9149
9150    impl fidl::encoding::ValueTypeMarker for MlmeStopReqRequest {
9151        type Borrowed<'a> = &'a Self;
9152        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9153            value
9154        }
9155    }
9156
9157    unsafe impl fidl::encoding::TypeMarker for MlmeStopReqRequest {
9158        type Owned = Self;
9159
9160        #[inline(always)]
9161        fn inline_align(_context: fidl::encoding::Context) -> usize {
9162            8
9163        }
9164
9165        #[inline(always)]
9166        fn inline_size(_context: fidl::encoding::Context) -> usize {
9167            16
9168        }
9169    }
9170
9171    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStopReqRequest, D>
9172        for &MlmeStopReqRequest
9173    {
9174        #[inline]
9175        unsafe fn encode(
9176            self,
9177            encoder: &mut fidl::encoding::Encoder<'_, D>,
9178            offset: usize,
9179            _depth: fidl::encoding::Depth,
9180        ) -> fidl::Result<()> {
9181            encoder.debug_check_bounds::<MlmeStopReqRequest>(offset);
9182            // Delegate to tuple encoding.
9183            fidl::encoding::Encode::<MlmeStopReqRequest, D>::encode(
9184                (<StopRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9185                encoder,
9186                offset,
9187                _depth,
9188            )
9189        }
9190    }
9191    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopRequest, D>>
9192        fidl::encoding::Encode<MlmeStopReqRequest, D> for (T0,)
9193    {
9194        #[inline]
9195        unsafe fn encode(
9196            self,
9197            encoder: &mut fidl::encoding::Encoder<'_, D>,
9198            offset: usize,
9199            depth: fidl::encoding::Depth,
9200        ) -> fidl::Result<()> {
9201            encoder.debug_check_bounds::<MlmeStopReqRequest>(offset);
9202            // Zero out padding regions. There's no need to apply masks
9203            // because the unmasked parts will be overwritten by fields.
9204            // Write the fields.
9205            self.0.encode(encoder, offset + 0, depth)?;
9206            Ok(())
9207        }
9208    }
9209
9210    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStopReqRequest {
9211        #[inline(always)]
9212        fn new_empty() -> Self {
9213            Self { req: fidl::new_empty!(StopRequest, D) }
9214        }
9215
9216        #[inline]
9217        unsafe fn decode(
9218            &mut self,
9219            decoder: &mut fidl::encoding::Decoder<'_, D>,
9220            offset: usize,
9221            _depth: fidl::encoding::Depth,
9222        ) -> fidl::Result<()> {
9223            decoder.debug_check_bounds::<Self>(offset);
9224            // Verify that padding bytes are zero.
9225            fidl::decode!(StopRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9226            Ok(())
9227        }
9228    }
9229
9230    impl fidl::encoding::ValueTypeMarker for NegotiatedCapabilities {
9231        type Borrowed<'a> = &'a Self;
9232        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9233            value
9234        }
9235    }
9236
9237    unsafe impl fidl::encoding::TypeMarker for NegotiatedCapabilities {
9238        type Owned = Self;
9239
9240        #[inline(always)]
9241        fn inline_align(_context: fidl::encoding::Context) -> usize {
9242            8
9243        }
9244
9245        #[inline(always)]
9246        fn inline_size(_context: fidl::encoding::Context) -> usize {
9247            56
9248        }
9249    }
9250
9251    unsafe impl<D: fidl::encoding::ResourceDialect>
9252        fidl::encoding::Encode<NegotiatedCapabilities, D> for &NegotiatedCapabilities
9253    {
9254        #[inline]
9255        unsafe fn encode(
9256            self,
9257            encoder: &mut fidl::encoding::Encoder<'_, D>,
9258            offset: usize,
9259            _depth: fidl::encoding::Depth,
9260        ) -> fidl::Result<()> {
9261            encoder.debug_check_bounds::<NegotiatedCapabilities>(offset);
9262            // Delegate to tuple encoding.
9263            fidl::encoding::Encode::<NegotiatedCapabilities, D>::encode(
9264                (
9265                    <fidl_fuchsia_wlan_ieee80211__common::WlanChannel as fidl::encoding::ValueTypeMarker>::borrow(&self.channel),
9266                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
9267                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
9268                    <fidl::encoding::Boxed<WmmParameter> as fidl::encoding::ValueTypeMarker>::borrow(&self.wmm_param),
9269                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.ht_cap),
9270                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_cap),
9271                ),
9272                encoder, offset, _depth
9273            )
9274        }
9275    }
9276    unsafe impl<
9277        D: fidl::encoding::ResourceDialect,
9278        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::WlanChannel, D>,
9279        T1: fidl::encoding::Encode<u16, D>,
9280        T2: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
9281        T3: fidl::encoding::Encode<fidl::encoding::Boxed<WmmParameter>, D>,
9282        T4: fidl::encoding::Encode<
9283                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
9284                D,
9285            >,
9286        T5: fidl::encoding::Encode<
9287                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
9288                D,
9289            >,
9290    > fidl::encoding::Encode<NegotiatedCapabilities, D> for (T0, T1, T2, T3, T4, T5)
9291    {
9292        #[inline]
9293        unsafe fn encode(
9294            self,
9295            encoder: &mut fidl::encoding::Encoder<'_, D>,
9296            offset: usize,
9297            depth: fidl::encoding::Depth,
9298        ) -> fidl::Result<()> {
9299            encoder.debug_check_bounds::<NegotiatedCapabilities>(offset);
9300            // Zero out padding regions. There's no need to apply masks
9301            // because the unmasked parts will be overwritten by fields.
9302            unsafe {
9303                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
9304                (ptr as *mut u64).write_unaligned(0);
9305            }
9306            // Write the fields.
9307            self.0.encode(encoder, offset + 0, depth)?;
9308            self.1.encode(encoder, offset + 12, depth)?;
9309            self.2.encode(encoder, offset + 16, depth)?;
9310            self.3.encode(encoder, offset + 32, depth)?;
9311            self.4.encode(encoder, offset + 40, depth)?;
9312            self.5.encode(encoder, offset + 48, depth)?;
9313            Ok(())
9314        }
9315    }
9316
9317    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9318        for NegotiatedCapabilities
9319    {
9320        #[inline(always)]
9321        fn new_empty() -> Self {
9322            Self {
9323                channel: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanChannel, D),
9324                capability_info: fidl::new_empty!(u16, D),
9325                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
9326                wmm_param: fidl::new_empty!(fidl::encoding::Boxed<WmmParameter>, D),
9327                ht_cap: fidl::new_empty!(
9328                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
9329                    D
9330                ),
9331                vht_cap: fidl::new_empty!(
9332                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
9333                    D
9334                ),
9335            }
9336        }
9337
9338        #[inline]
9339        unsafe fn decode(
9340            &mut self,
9341            decoder: &mut fidl::encoding::Decoder<'_, D>,
9342            offset: usize,
9343            _depth: fidl::encoding::Depth,
9344        ) -> fidl::Result<()> {
9345            decoder.debug_check_bounds::<Self>(offset);
9346            // Verify that padding bytes are zero.
9347            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
9348            let padval = unsafe { (ptr as *const u64).read_unaligned() };
9349            let mask = 0xffff000000000000u64;
9350            let maskedval = padval & mask;
9351            if maskedval != 0 {
9352                return Err(fidl::Error::NonZeroPadding {
9353                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
9354                });
9355            }
9356            fidl::decode!(
9357                fidl_fuchsia_wlan_ieee80211__common::WlanChannel,
9358                D,
9359                &mut self.channel,
9360                decoder,
9361                offset + 0,
9362                _depth
9363            )?;
9364            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 12, _depth)?;
9365            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 16, _depth)?;
9366            fidl::decode!(
9367                fidl::encoding::Boxed<WmmParameter>,
9368                D,
9369                &mut self.wmm_param,
9370                decoder,
9371                offset + 32,
9372                _depth
9373            )?;
9374            fidl::decode!(
9375                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
9376                D,
9377                &mut self.ht_cap,
9378                decoder,
9379                offset + 40,
9380                _depth
9381            )?;
9382            fidl::decode!(
9383                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
9384                D,
9385                &mut self.vht_cap,
9386                decoder,
9387                offset + 48,
9388                _depth
9389            )?;
9390            Ok(())
9391        }
9392    }
9393
9394    impl fidl::encoding::ValueTypeMarker for PmkInfo {
9395        type Borrowed<'a> = &'a Self;
9396        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9397            value
9398        }
9399    }
9400
9401    unsafe impl fidl::encoding::TypeMarker for PmkInfo {
9402        type Owned = Self;
9403
9404        #[inline(always)]
9405        fn inline_align(_context: fidl::encoding::Context) -> usize {
9406            8
9407        }
9408
9409        #[inline(always)]
9410        fn inline_size(_context: fidl::encoding::Context) -> usize {
9411            32
9412        }
9413    }
9414
9415    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PmkInfo, D> for &PmkInfo {
9416        #[inline]
9417        unsafe fn encode(
9418            self,
9419            encoder: &mut fidl::encoding::Encoder<'_, D>,
9420            offset: usize,
9421            _depth: fidl::encoding::Depth,
9422        ) -> fidl::Result<()> {
9423            encoder.debug_check_bounds::<PmkInfo>(offset);
9424            // Delegate to tuple encoding.
9425            fidl::encoding::Encode::<PmkInfo, D>::encode(
9426                (
9427                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.pmk),
9428                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.pmkid),
9429                ),
9430                encoder, offset, _depth
9431            )
9432        }
9433    }
9434    unsafe impl<
9435        D: fidl::encoding::ResourceDialect,
9436        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
9437        T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
9438    > fidl::encoding::Encode<PmkInfo, D> for (T0, T1)
9439    {
9440        #[inline]
9441        unsafe fn encode(
9442            self,
9443            encoder: &mut fidl::encoding::Encoder<'_, D>,
9444            offset: usize,
9445            depth: fidl::encoding::Depth,
9446        ) -> fidl::Result<()> {
9447            encoder.debug_check_bounds::<PmkInfo>(offset);
9448            // Zero out padding regions. There's no need to apply masks
9449            // because the unmasked parts will be overwritten by fields.
9450            // Write the fields.
9451            self.0.encode(encoder, offset + 0, depth)?;
9452            self.1.encode(encoder, offset + 16, depth)?;
9453            Ok(())
9454        }
9455    }
9456
9457    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PmkInfo {
9458        #[inline(always)]
9459        fn new_empty() -> Self {
9460            Self {
9461                pmk: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
9462                pmkid: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
9463            }
9464        }
9465
9466        #[inline]
9467        unsafe fn decode(
9468            &mut self,
9469            decoder: &mut fidl::encoding::Decoder<'_, D>,
9470            offset: usize,
9471            _depth: fidl::encoding::Depth,
9472        ) -> fidl::Result<()> {
9473            decoder.debug_check_bounds::<Self>(offset);
9474            // Verify that padding bytes are zero.
9475            fidl::decode!(
9476                fidl::encoding::UnboundedVector<u8>,
9477                D,
9478                &mut self.pmk,
9479                decoder,
9480                offset + 0,
9481                _depth
9482            )?;
9483            fidl::decode!(
9484                fidl::encoding::UnboundedVector<u8>,
9485                D,
9486                &mut self.pmkid,
9487                decoder,
9488                offset + 16,
9489                _depth
9490            )?;
9491            Ok(())
9492        }
9493    }
9494
9495    impl fidl::encoding::ValueTypeMarker for ReconnectRequest {
9496        type Borrowed<'a> = &'a Self;
9497        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9498            value
9499        }
9500    }
9501
9502    unsafe impl fidl::encoding::TypeMarker for ReconnectRequest {
9503        type Owned = Self;
9504
9505        #[inline(always)]
9506        fn inline_align(_context: fidl::encoding::Context) -> usize {
9507            1
9508        }
9509
9510        #[inline(always)]
9511        fn inline_size(_context: fidl::encoding::Context) -> usize {
9512            6
9513        }
9514        #[inline(always)]
9515        fn encode_is_copy() -> bool {
9516            true
9517        }
9518
9519        #[inline(always)]
9520        fn decode_is_copy() -> bool {
9521            true
9522        }
9523    }
9524
9525    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ReconnectRequest, D>
9526        for &ReconnectRequest
9527    {
9528        #[inline]
9529        unsafe fn encode(
9530            self,
9531            encoder: &mut fidl::encoding::Encoder<'_, D>,
9532            offset: usize,
9533            _depth: fidl::encoding::Depth,
9534        ) -> fidl::Result<()> {
9535            encoder.debug_check_bounds::<ReconnectRequest>(offset);
9536            unsafe {
9537                // Copy the object into the buffer.
9538                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
9539                (buf_ptr as *mut ReconnectRequest)
9540                    .write_unaligned((self as *const ReconnectRequest).read());
9541                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
9542                // done second because the memcpy will write garbage to these bytes.
9543            }
9544            Ok(())
9545        }
9546    }
9547    unsafe impl<
9548        D: fidl::encoding::ResourceDialect,
9549        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
9550    > fidl::encoding::Encode<ReconnectRequest, D> for (T0,)
9551    {
9552        #[inline]
9553        unsafe fn encode(
9554            self,
9555            encoder: &mut fidl::encoding::Encoder<'_, D>,
9556            offset: usize,
9557            depth: fidl::encoding::Depth,
9558        ) -> fidl::Result<()> {
9559            encoder.debug_check_bounds::<ReconnectRequest>(offset);
9560            // Zero out padding regions. There's no need to apply masks
9561            // because the unmasked parts will be overwritten by fields.
9562            // Write the fields.
9563            self.0.encode(encoder, offset + 0, depth)?;
9564            Ok(())
9565        }
9566    }
9567
9568    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ReconnectRequest {
9569        #[inline(always)]
9570        fn new_empty() -> Self {
9571            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
9572        }
9573
9574        #[inline]
9575        unsafe fn decode(
9576            &mut self,
9577            decoder: &mut fidl::encoding::Decoder<'_, D>,
9578            offset: usize,
9579            _depth: fidl::encoding::Depth,
9580        ) -> fidl::Result<()> {
9581            decoder.debug_check_bounds::<Self>(offset);
9582            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
9583            // Verify that padding bytes are zero.
9584            // Copy from the buffer into the object.
9585            unsafe {
9586                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
9587            }
9588            Ok(())
9589        }
9590    }
9591
9592    impl fidl::encoding::ValueTypeMarker for ResetRequest {
9593        type Borrowed<'a> = &'a Self;
9594        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9595            value
9596        }
9597    }
9598
9599    unsafe impl fidl::encoding::TypeMarker for ResetRequest {
9600        type Owned = Self;
9601
9602        #[inline(always)]
9603        fn inline_align(_context: fidl::encoding::Context) -> usize {
9604            1
9605        }
9606
9607        #[inline(always)]
9608        fn inline_size(_context: fidl::encoding::Context) -> usize {
9609            7
9610        }
9611    }
9612
9613    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResetRequest, D>
9614        for &ResetRequest
9615    {
9616        #[inline]
9617        unsafe fn encode(
9618            self,
9619            encoder: &mut fidl::encoding::Encoder<'_, D>,
9620            offset: usize,
9621            _depth: fidl::encoding::Depth,
9622        ) -> fidl::Result<()> {
9623            encoder.debug_check_bounds::<ResetRequest>(offset);
9624            // Delegate to tuple encoding.
9625            fidl::encoding::Encode::<ResetRequest, D>::encode(
9626                (
9627                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
9628                        &self.sta_address,
9629                    ),
9630                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.set_default_mib),
9631                ),
9632                encoder,
9633                offset,
9634                _depth,
9635            )
9636        }
9637    }
9638    unsafe impl<
9639        D: fidl::encoding::ResourceDialect,
9640        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
9641        T1: fidl::encoding::Encode<bool, D>,
9642    > fidl::encoding::Encode<ResetRequest, D> for (T0, T1)
9643    {
9644        #[inline]
9645        unsafe fn encode(
9646            self,
9647            encoder: &mut fidl::encoding::Encoder<'_, D>,
9648            offset: usize,
9649            depth: fidl::encoding::Depth,
9650        ) -> fidl::Result<()> {
9651            encoder.debug_check_bounds::<ResetRequest>(offset);
9652            // Zero out padding regions. There's no need to apply masks
9653            // because the unmasked parts will be overwritten by fields.
9654            // Write the fields.
9655            self.0.encode(encoder, offset + 0, depth)?;
9656            self.1.encode(encoder, offset + 6, depth)?;
9657            Ok(())
9658        }
9659    }
9660
9661    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResetRequest {
9662        #[inline(always)]
9663        fn new_empty() -> Self {
9664            Self {
9665                sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
9666                set_default_mib: fidl::new_empty!(bool, D),
9667            }
9668        }
9669
9670        #[inline]
9671        unsafe fn decode(
9672            &mut self,
9673            decoder: &mut fidl::encoding::Decoder<'_, D>,
9674            offset: usize,
9675            _depth: fidl::encoding::Depth,
9676        ) -> fidl::Result<()> {
9677            decoder.debug_check_bounds::<Self>(offset);
9678            // Verify that padding bytes are zero.
9679            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.sta_address, decoder, offset + 0, _depth)?;
9680            fidl::decode!(bool, D, &mut self.set_default_mib, decoder, offset + 6, _depth)?;
9681            Ok(())
9682        }
9683    }
9684
9685    impl fidl::encoding::ValueTypeMarker for RoamConfirm {
9686        type Borrowed<'a> = &'a Self;
9687        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9688            value
9689        }
9690    }
9691
9692    unsafe impl fidl::encoding::TypeMarker for RoamConfirm {
9693        type Owned = Self;
9694
9695        #[inline(always)]
9696        fn inline_align(_context: fidl::encoding::Context) -> usize {
9697            8
9698        }
9699
9700        #[inline(always)]
9701        fn inline_size(_context: fidl::encoding::Context) -> usize {
9702            32
9703        }
9704    }
9705
9706    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamConfirm, D>
9707        for &RoamConfirm
9708    {
9709        #[inline]
9710        unsafe fn encode(
9711            self,
9712            encoder: &mut fidl::encoding::Encoder<'_, D>,
9713            offset: usize,
9714            _depth: fidl::encoding::Depth,
9715        ) -> fidl::Result<()> {
9716            encoder.debug_check_bounds::<RoamConfirm>(offset);
9717            // Delegate to tuple encoding.
9718            fidl::encoding::Encode::<RoamConfirm, D>::encode(
9719                (
9720                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
9721                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
9722                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
9723                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.target_bss_authenticated),
9724                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
9725                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
9726                ),
9727                encoder, offset, _depth
9728            )
9729        }
9730    }
9731    unsafe impl<
9732        D: fidl::encoding::ResourceDialect,
9733        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
9734        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
9735        T2: fidl::encoding::Encode<bool, D>,
9736        T3: fidl::encoding::Encode<bool, D>,
9737        T4: fidl::encoding::Encode<u16, D>,
9738        T5: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
9739    > fidl::encoding::Encode<RoamConfirm, D> for (T0, T1, T2, T3, T4, T5)
9740    {
9741        #[inline]
9742        unsafe fn encode(
9743            self,
9744            encoder: &mut fidl::encoding::Encoder<'_, D>,
9745            offset: usize,
9746            depth: fidl::encoding::Depth,
9747        ) -> fidl::Result<()> {
9748            encoder.debug_check_bounds::<RoamConfirm>(offset);
9749            // Zero out padding regions. There's no need to apply masks
9750            // because the unmasked parts will be overwritten by fields.
9751            unsafe {
9752                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
9753                (ptr as *mut u64).write_unaligned(0);
9754            }
9755            // Write the fields.
9756            self.0.encode(encoder, offset + 0, depth)?;
9757            self.1.encode(encoder, offset + 6, depth)?;
9758            self.2.encode(encoder, offset + 8, depth)?;
9759            self.3.encode(encoder, offset + 9, depth)?;
9760            self.4.encode(encoder, offset + 10, depth)?;
9761            self.5.encode(encoder, offset + 16, depth)?;
9762            Ok(())
9763        }
9764    }
9765
9766    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamConfirm {
9767        #[inline(always)]
9768        fn new_empty() -> Self {
9769            Self {
9770                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
9771                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
9772                original_association_maintained: fidl::new_empty!(bool, D),
9773                target_bss_authenticated: fidl::new_empty!(bool, D),
9774                association_id: fidl::new_empty!(u16, D),
9775                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
9776            }
9777        }
9778
9779        #[inline]
9780        unsafe fn decode(
9781            &mut self,
9782            decoder: &mut fidl::encoding::Decoder<'_, D>,
9783            offset: usize,
9784            _depth: fidl::encoding::Depth,
9785        ) -> fidl::Result<()> {
9786            decoder.debug_check_bounds::<Self>(offset);
9787            // Verify that padding bytes are zero.
9788            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
9789            let padval = unsafe { (ptr as *const u64).read_unaligned() };
9790            let mask = 0xffffffff00000000u64;
9791            let maskedval = padval & mask;
9792            if maskedval != 0 {
9793                return Err(fidl::Error::NonZeroPadding {
9794                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
9795                });
9796            }
9797            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
9798            fidl::decode!(
9799                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
9800                D,
9801                &mut self.status_code,
9802                decoder,
9803                offset + 6,
9804                _depth
9805            )?;
9806            fidl::decode!(
9807                bool,
9808                D,
9809                &mut self.original_association_maintained,
9810                decoder,
9811                offset + 8,
9812                _depth
9813            )?;
9814            fidl::decode!(
9815                bool,
9816                D,
9817                &mut self.target_bss_authenticated,
9818                decoder,
9819                offset + 9,
9820                _depth
9821            )?;
9822            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 10, _depth)?;
9823            fidl::decode!(
9824                fidl::encoding::UnboundedVector<u8>,
9825                D,
9826                &mut self.association_ies,
9827                decoder,
9828                offset + 16,
9829                _depth
9830            )?;
9831            Ok(())
9832        }
9833    }
9834
9835    impl fidl::encoding::ValueTypeMarker for RoamRequest {
9836        type Borrowed<'a> = &'a Self;
9837        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9838            value
9839        }
9840    }
9841
9842    unsafe impl fidl::encoding::TypeMarker for RoamRequest {
9843        type Owned = Self;
9844
9845        #[inline(always)]
9846        fn inline_align(_context: fidl::encoding::Context) -> usize {
9847            8
9848        }
9849
9850        #[inline(always)]
9851        fn inline_size(_context: fidl::encoding::Context) -> usize {
9852            48
9853        }
9854    }
9855
9856    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamRequest, D>
9857        for &RoamRequest
9858    {
9859        #[inline]
9860        unsafe fn encode(
9861            self,
9862            encoder: &mut fidl::encoding::Encoder<'_, D>,
9863            offset: usize,
9864            _depth: fidl::encoding::Depth,
9865        ) -> fidl::Result<()> {
9866            encoder.debug_check_bounds::<RoamRequest>(offset);
9867            // Delegate to tuple encoding.
9868            fidl::encoding::Encode::<RoamRequest, D>::encode(
9869                (
9870                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
9871                ),
9872                encoder, offset, _depth
9873            )
9874        }
9875    }
9876    unsafe impl<
9877        D: fidl::encoding::ResourceDialect,
9878        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
9879    > fidl::encoding::Encode<RoamRequest, D> for (T0,)
9880    {
9881        #[inline]
9882        unsafe fn encode(
9883            self,
9884            encoder: &mut fidl::encoding::Encoder<'_, D>,
9885            offset: usize,
9886            depth: fidl::encoding::Depth,
9887        ) -> fidl::Result<()> {
9888            encoder.debug_check_bounds::<RoamRequest>(offset);
9889            // Zero out padding regions. There's no need to apply masks
9890            // because the unmasked parts will be overwritten by fields.
9891            // Write the fields.
9892            self.0.encode(encoder, offset + 0, depth)?;
9893            Ok(())
9894        }
9895    }
9896
9897    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamRequest {
9898        #[inline(always)]
9899        fn new_empty() -> Self {
9900            Self {
9901                selected_bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
9902            }
9903        }
9904
9905        #[inline]
9906        unsafe fn decode(
9907            &mut self,
9908            decoder: &mut fidl::encoding::Decoder<'_, D>,
9909            offset: usize,
9910            _depth: fidl::encoding::Depth,
9911        ) -> fidl::Result<()> {
9912            decoder.debug_check_bounds::<Self>(offset);
9913            // Verify that padding bytes are zero.
9914            fidl::decode!(
9915                fidl_fuchsia_wlan_common__common::BssDescription,
9916                D,
9917                &mut self.selected_bss,
9918                decoder,
9919                offset + 0,
9920                _depth
9921            )?;
9922            Ok(())
9923        }
9924    }
9925
9926    impl fidl::encoding::ValueTypeMarker for RoamResultIndication {
9927        type Borrowed<'a> = &'a Self;
9928        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9929            value
9930        }
9931    }
9932
9933    unsafe impl fidl::encoding::TypeMarker for RoamResultIndication {
9934        type Owned = Self;
9935
9936        #[inline(always)]
9937        fn inline_align(_context: fidl::encoding::Context) -> usize {
9938            8
9939        }
9940
9941        #[inline(always)]
9942        fn inline_size(_context: fidl::encoding::Context) -> usize {
9943            32
9944        }
9945    }
9946
9947    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamResultIndication, D>
9948        for &RoamResultIndication
9949    {
9950        #[inline]
9951        unsafe fn encode(
9952            self,
9953            encoder: &mut fidl::encoding::Encoder<'_, D>,
9954            offset: usize,
9955            _depth: fidl::encoding::Depth,
9956        ) -> fidl::Result<()> {
9957            encoder.debug_check_bounds::<RoamResultIndication>(offset);
9958            // Delegate to tuple encoding.
9959            fidl::encoding::Encode::<RoamResultIndication, D>::encode(
9960                (
9961                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
9962                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
9963                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
9964                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.target_bss_authenticated),
9965                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
9966                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
9967                ),
9968                encoder, offset, _depth
9969            )
9970        }
9971    }
9972    unsafe impl<
9973        D: fidl::encoding::ResourceDialect,
9974        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
9975        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
9976        T2: fidl::encoding::Encode<bool, D>,
9977        T3: fidl::encoding::Encode<bool, D>,
9978        T4: fidl::encoding::Encode<u16, D>,
9979        T5: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
9980    > fidl::encoding::Encode<RoamResultIndication, D> for (T0, T1, T2, T3, T4, T5)
9981    {
9982        #[inline]
9983        unsafe fn encode(
9984            self,
9985            encoder: &mut fidl::encoding::Encoder<'_, D>,
9986            offset: usize,
9987            depth: fidl::encoding::Depth,
9988        ) -> fidl::Result<()> {
9989            encoder.debug_check_bounds::<RoamResultIndication>(offset);
9990            // Zero out padding regions. There's no need to apply masks
9991            // because the unmasked parts will be overwritten by fields.
9992            unsafe {
9993                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
9994                (ptr as *mut u64).write_unaligned(0);
9995            }
9996            // Write the fields.
9997            self.0.encode(encoder, offset + 0, depth)?;
9998            self.1.encode(encoder, offset + 6, depth)?;
9999            self.2.encode(encoder, offset + 8, depth)?;
10000            self.3.encode(encoder, offset + 9, depth)?;
10001            self.4.encode(encoder, offset + 10, depth)?;
10002            self.5.encode(encoder, offset + 16, depth)?;
10003            Ok(())
10004        }
10005    }
10006
10007    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamResultIndication {
10008        #[inline(always)]
10009        fn new_empty() -> Self {
10010            Self {
10011                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10012                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
10013                original_association_maintained: fidl::new_empty!(bool, D),
10014                target_bss_authenticated: fidl::new_empty!(bool, D),
10015                association_id: fidl::new_empty!(u16, D),
10016                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10017            }
10018        }
10019
10020        #[inline]
10021        unsafe fn decode(
10022            &mut self,
10023            decoder: &mut fidl::encoding::Decoder<'_, D>,
10024            offset: usize,
10025            _depth: fidl::encoding::Depth,
10026        ) -> fidl::Result<()> {
10027            decoder.debug_check_bounds::<Self>(offset);
10028            // Verify that padding bytes are zero.
10029            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10030            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10031            let mask = 0xffffffff00000000u64;
10032            let maskedval = padval & mask;
10033            if maskedval != 0 {
10034                return Err(fidl::Error::NonZeroPadding {
10035                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10036                });
10037            }
10038            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
10039            fidl::decode!(
10040                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10041                D,
10042                &mut self.status_code,
10043                decoder,
10044                offset + 6,
10045                _depth
10046            )?;
10047            fidl::decode!(
10048                bool,
10049                D,
10050                &mut self.original_association_maintained,
10051                decoder,
10052                offset + 8,
10053                _depth
10054            )?;
10055            fidl::decode!(
10056                bool,
10057                D,
10058                &mut self.target_bss_authenticated,
10059                decoder,
10060                offset + 9,
10061                _depth
10062            )?;
10063            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 10, _depth)?;
10064            fidl::decode!(
10065                fidl::encoding::UnboundedVector<u8>,
10066                D,
10067                &mut self.association_ies,
10068                decoder,
10069                offset + 16,
10070                _depth
10071            )?;
10072            Ok(())
10073        }
10074    }
10075
10076    impl fidl::encoding::ValueTypeMarker for RoamStartIndication {
10077        type Borrowed<'a> = &'a Self;
10078        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10079            value
10080        }
10081    }
10082
10083    unsafe impl fidl::encoding::TypeMarker for RoamStartIndication {
10084        type Owned = Self;
10085
10086        #[inline(always)]
10087        fn inline_align(_context: fidl::encoding::Context) -> usize {
10088            8
10089        }
10090
10091        #[inline(always)]
10092        fn inline_size(_context: fidl::encoding::Context) -> usize {
10093            64
10094        }
10095    }
10096
10097    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamStartIndication, D>
10098        for &RoamStartIndication
10099    {
10100        #[inline]
10101        unsafe fn encode(
10102            self,
10103            encoder: &mut fidl::encoding::Encoder<'_, D>,
10104            offset: usize,
10105            _depth: fidl::encoding::Depth,
10106        ) -> fidl::Result<()> {
10107            encoder.debug_check_bounds::<RoamStartIndication>(offset);
10108            // Delegate to tuple encoding.
10109            fidl::encoding::Encode::<RoamStartIndication, D>::encode(
10110                (
10111                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
10112                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
10113                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
10114                ),
10115                encoder, offset, _depth
10116            )
10117        }
10118    }
10119    unsafe impl<
10120        D: fidl::encoding::ResourceDialect,
10121        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10122        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
10123        T2: fidl::encoding::Encode<bool, D>,
10124    > fidl::encoding::Encode<RoamStartIndication, D> for (T0, T1, T2)
10125    {
10126        #[inline]
10127        unsafe fn encode(
10128            self,
10129            encoder: &mut fidl::encoding::Encoder<'_, D>,
10130            offset: usize,
10131            depth: fidl::encoding::Depth,
10132        ) -> fidl::Result<()> {
10133            encoder.debug_check_bounds::<RoamStartIndication>(offset);
10134            // Zero out padding regions. There's no need to apply masks
10135            // because the unmasked parts will be overwritten by fields.
10136            unsafe {
10137                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
10138                (ptr as *mut u64).write_unaligned(0);
10139            }
10140            unsafe {
10141                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
10142                (ptr as *mut u64).write_unaligned(0);
10143            }
10144            // Write the fields.
10145            self.0.encode(encoder, offset + 0, depth)?;
10146            self.1.encode(encoder, offset + 8, depth)?;
10147            self.2.encode(encoder, offset + 56, depth)?;
10148            Ok(())
10149        }
10150    }
10151
10152    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamStartIndication {
10153        #[inline(always)]
10154        fn new_empty() -> Self {
10155            Self {
10156                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10157                selected_bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
10158                original_association_maintained: fidl::new_empty!(bool, D),
10159            }
10160        }
10161
10162        #[inline]
10163        unsafe fn decode(
10164            &mut self,
10165            decoder: &mut fidl::encoding::Decoder<'_, D>,
10166            offset: usize,
10167            _depth: fidl::encoding::Depth,
10168        ) -> fidl::Result<()> {
10169            decoder.debug_check_bounds::<Self>(offset);
10170            // Verify that padding bytes are zero.
10171            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
10172            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10173            let mask = 0xffff000000000000u64;
10174            let maskedval = padval & mask;
10175            if maskedval != 0 {
10176                return Err(fidl::Error::NonZeroPadding {
10177                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
10178                });
10179            }
10180            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
10181            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10182            let mask = 0xffffffffffffff00u64;
10183            let maskedval = padval & mask;
10184            if maskedval != 0 {
10185                return Err(fidl::Error::NonZeroPadding {
10186                    padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
10187                });
10188            }
10189            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
10190            fidl::decode!(
10191                fidl_fuchsia_wlan_common__common::BssDescription,
10192                D,
10193                &mut self.selected_bss,
10194                decoder,
10195                offset + 8,
10196                _depth
10197            )?;
10198            fidl::decode!(
10199                bool,
10200                D,
10201                &mut self.original_association_maintained,
10202                decoder,
10203                offset + 56,
10204                _depth
10205            )?;
10206            Ok(())
10207        }
10208    }
10209
10210    impl fidl::encoding::ValueTypeMarker for SaeFrame {
10211        type Borrowed<'a> = &'a Self;
10212        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10213            value
10214        }
10215    }
10216
10217    unsafe impl fidl::encoding::TypeMarker for SaeFrame {
10218        type Owned = Self;
10219
10220        #[inline(always)]
10221        fn inline_align(_context: fidl::encoding::Context) -> usize {
10222            8
10223        }
10224
10225        #[inline(always)]
10226        fn inline_size(_context: fidl::encoding::Context) -> usize {
10227            32
10228        }
10229    }
10230
10231    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFrame, D> for &SaeFrame {
10232        #[inline]
10233        unsafe fn encode(
10234            self,
10235            encoder: &mut fidl::encoding::Encoder<'_, D>,
10236            offset: usize,
10237            _depth: fidl::encoding::Depth,
10238        ) -> fidl::Result<()> {
10239            encoder.debug_check_bounds::<SaeFrame>(offset);
10240            // Delegate to tuple encoding.
10241            fidl::encoding::Encode::<SaeFrame, D>::encode(
10242                (
10243                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
10244                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10245                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.seq_num),
10246                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.sae_fields),
10247                ),
10248                encoder, offset, _depth
10249            )
10250        }
10251    }
10252    unsafe impl<
10253        D: fidl::encoding::ResourceDialect,
10254        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10255        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
10256        T2: fidl::encoding::Encode<u16, D>,
10257        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10258    > fidl::encoding::Encode<SaeFrame, D> for (T0, T1, T2, T3)
10259    {
10260        #[inline]
10261        unsafe fn encode(
10262            self,
10263            encoder: &mut fidl::encoding::Encoder<'_, D>,
10264            offset: usize,
10265            depth: fidl::encoding::Depth,
10266        ) -> fidl::Result<()> {
10267            encoder.debug_check_bounds::<SaeFrame>(offset);
10268            // Zero out padding regions. There's no need to apply masks
10269            // because the unmasked parts will be overwritten by fields.
10270            unsafe {
10271                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10272                (ptr as *mut u64).write_unaligned(0);
10273            }
10274            // Write the fields.
10275            self.0.encode(encoder, offset + 0, depth)?;
10276            self.1.encode(encoder, offset + 6, depth)?;
10277            self.2.encode(encoder, offset + 8, depth)?;
10278            self.3.encode(encoder, offset + 16, depth)?;
10279            Ok(())
10280        }
10281    }
10282
10283    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFrame {
10284        #[inline(always)]
10285        fn new_empty() -> Self {
10286            Self {
10287                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10288                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
10289                seq_num: fidl::new_empty!(u16, D),
10290                sae_fields: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10291            }
10292        }
10293
10294        #[inline]
10295        unsafe fn decode(
10296            &mut self,
10297            decoder: &mut fidl::encoding::Decoder<'_, D>,
10298            offset: usize,
10299            _depth: fidl::encoding::Depth,
10300        ) -> fidl::Result<()> {
10301            decoder.debug_check_bounds::<Self>(offset);
10302            // Verify that padding bytes are zero.
10303            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10304            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10305            let mask = 0xffffffffffff0000u64;
10306            let maskedval = padval & mask;
10307            if maskedval != 0 {
10308                return Err(fidl::Error::NonZeroPadding {
10309                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10310                });
10311            }
10312            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
10313            fidl::decode!(
10314                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10315                D,
10316                &mut self.status_code,
10317                decoder,
10318                offset + 6,
10319                _depth
10320            )?;
10321            fidl::decode!(u16, D, &mut self.seq_num, decoder, offset + 8, _depth)?;
10322            fidl::decode!(
10323                fidl::encoding::UnboundedVector<u8>,
10324                D,
10325                &mut self.sae_fields,
10326                decoder,
10327                offset + 16,
10328                _depth
10329            )?;
10330            Ok(())
10331        }
10332    }
10333
10334    impl fidl::encoding::ValueTypeMarker for SaeHandshakeIndication {
10335        type Borrowed<'a> = &'a Self;
10336        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10337            value
10338        }
10339    }
10340
10341    unsafe impl fidl::encoding::TypeMarker for SaeHandshakeIndication {
10342        type Owned = Self;
10343
10344        #[inline(always)]
10345        fn inline_align(_context: fidl::encoding::Context) -> usize {
10346            1
10347        }
10348
10349        #[inline(always)]
10350        fn inline_size(_context: fidl::encoding::Context) -> usize {
10351            6
10352        }
10353        #[inline(always)]
10354        fn encode_is_copy() -> bool {
10355            true
10356        }
10357
10358        #[inline(always)]
10359        fn decode_is_copy() -> bool {
10360            true
10361        }
10362    }
10363
10364    unsafe impl<D: fidl::encoding::ResourceDialect>
10365        fidl::encoding::Encode<SaeHandshakeIndication, D> for &SaeHandshakeIndication
10366    {
10367        #[inline]
10368        unsafe fn encode(
10369            self,
10370            encoder: &mut fidl::encoding::Encoder<'_, D>,
10371            offset: usize,
10372            _depth: fidl::encoding::Depth,
10373        ) -> fidl::Result<()> {
10374            encoder.debug_check_bounds::<SaeHandshakeIndication>(offset);
10375            unsafe {
10376                // Copy the object into the buffer.
10377                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
10378                (buf_ptr as *mut SaeHandshakeIndication)
10379                    .write_unaligned((self as *const SaeHandshakeIndication).read());
10380                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
10381                // done second because the memcpy will write garbage to these bytes.
10382            }
10383            Ok(())
10384        }
10385    }
10386    unsafe impl<
10387        D: fidl::encoding::ResourceDialect,
10388        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10389    > fidl::encoding::Encode<SaeHandshakeIndication, D> for (T0,)
10390    {
10391        #[inline]
10392        unsafe fn encode(
10393            self,
10394            encoder: &mut fidl::encoding::Encoder<'_, D>,
10395            offset: usize,
10396            depth: fidl::encoding::Depth,
10397        ) -> fidl::Result<()> {
10398            encoder.debug_check_bounds::<SaeHandshakeIndication>(offset);
10399            // Zero out padding regions. There's no need to apply masks
10400            // because the unmasked parts will be overwritten by fields.
10401            // Write the fields.
10402            self.0.encode(encoder, offset + 0, depth)?;
10403            Ok(())
10404        }
10405    }
10406
10407    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10408        for SaeHandshakeIndication
10409    {
10410        #[inline(always)]
10411        fn new_empty() -> Self {
10412            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
10413        }
10414
10415        #[inline]
10416        unsafe fn decode(
10417            &mut self,
10418            decoder: &mut fidl::encoding::Decoder<'_, D>,
10419            offset: usize,
10420            _depth: fidl::encoding::Depth,
10421        ) -> fidl::Result<()> {
10422            decoder.debug_check_bounds::<Self>(offset);
10423            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
10424            // Verify that padding bytes are zero.
10425            // Copy from the buffer into the object.
10426            unsafe {
10427                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
10428            }
10429            Ok(())
10430        }
10431    }
10432
10433    impl fidl::encoding::ValueTypeMarker for SaeHandshakeResponse {
10434        type Borrowed<'a> = &'a Self;
10435        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10436            value
10437        }
10438    }
10439
10440    unsafe impl fidl::encoding::TypeMarker for SaeHandshakeResponse {
10441        type Owned = Self;
10442
10443        #[inline(always)]
10444        fn inline_align(_context: fidl::encoding::Context) -> usize {
10445            2
10446        }
10447
10448        #[inline(always)]
10449        fn inline_size(_context: fidl::encoding::Context) -> usize {
10450            8
10451        }
10452    }
10453
10454    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeHandshakeResponse, D>
10455        for &SaeHandshakeResponse
10456    {
10457        #[inline]
10458        unsafe fn encode(
10459            self,
10460            encoder: &mut fidl::encoding::Encoder<'_, D>,
10461            offset: usize,
10462            _depth: fidl::encoding::Depth,
10463        ) -> fidl::Result<()> {
10464            encoder.debug_check_bounds::<SaeHandshakeResponse>(offset);
10465            // Delegate to tuple encoding.
10466            fidl::encoding::Encode::<SaeHandshakeResponse, D>::encode(
10467                (
10468                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
10469                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10470                ),
10471                encoder, offset, _depth
10472            )
10473        }
10474    }
10475    unsafe impl<
10476        D: fidl::encoding::ResourceDialect,
10477        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10478        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
10479    > fidl::encoding::Encode<SaeHandshakeResponse, D> for (T0, T1)
10480    {
10481        #[inline]
10482        unsafe fn encode(
10483            self,
10484            encoder: &mut fidl::encoding::Encoder<'_, D>,
10485            offset: usize,
10486            depth: fidl::encoding::Depth,
10487        ) -> fidl::Result<()> {
10488            encoder.debug_check_bounds::<SaeHandshakeResponse>(offset);
10489            // Zero out padding regions. There's no need to apply masks
10490            // because the unmasked parts will be overwritten by fields.
10491            // Write the fields.
10492            self.0.encode(encoder, offset + 0, depth)?;
10493            self.1.encode(encoder, offset + 6, depth)?;
10494            Ok(())
10495        }
10496    }
10497
10498    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeHandshakeResponse {
10499        #[inline(always)]
10500        fn new_empty() -> Self {
10501            Self {
10502                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10503                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
10504            }
10505        }
10506
10507        #[inline]
10508        unsafe fn decode(
10509            &mut self,
10510            decoder: &mut fidl::encoding::Decoder<'_, D>,
10511            offset: usize,
10512            _depth: fidl::encoding::Depth,
10513        ) -> fidl::Result<()> {
10514            decoder.debug_check_bounds::<Self>(offset);
10515            // Verify that padding bytes are zero.
10516            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
10517            fidl::decode!(
10518                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10519                D,
10520                &mut self.status_code,
10521                decoder,
10522                offset + 6,
10523                _depth
10524            )?;
10525            Ok(())
10526        }
10527    }
10528
10529    impl fidl::encoding::ValueTypeMarker for ScanEnd {
10530        type Borrowed<'a> = &'a Self;
10531        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10532            value
10533        }
10534    }
10535
10536    unsafe impl fidl::encoding::TypeMarker for ScanEnd {
10537        type Owned = Self;
10538
10539        #[inline(always)]
10540        fn inline_align(_context: fidl::encoding::Context) -> usize {
10541            8
10542        }
10543
10544        #[inline(always)]
10545        fn inline_size(_context: fidl::encoding::Context) -> usize {
10546            16
10547        }
10548    }
10549
10550    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanEnd, D> for &ScanEnd {
10551        #[inline]
10552        unsafe fn encode(
10553            self,
10554            encoder: &mut fidl::encoding::Encoder<'_, D>,
10555            offset: usize,
10556            _depth: fidl::encoding::Depth,
10557        ) -> fidl::Result<()> {
10558            encoder.debug_check_bounds::<ScanEnd>(offset);
10559            // Delegate to tuple encoding.
10560            fidl::encoding::Encode::<ScanEnd, D>::encode(
10561                (
10562                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
10563                    <ScanResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.code),
10564                ),
10565                encoder,
10566                offset,
10567                _depth,
10568            )
10569        }
10570    }
10571    unsafe impl<
10572        D: fidl::encoding::ResourceDialect,
10573        T0: fidl::encoding::Encode<u64, D>,
10574        T1: fidl::encoding::Encode<ScanResultCode, D>,
10575    > fidl::encoding::Encode<ScanEnd, D> for (T0, T1)
10576    {
10577        #[inline]
10578        unsafe fn encode(
10579            self,
10580            encoder: &mut fidl::encoding::Encoder<'_, D>,
10581            offset: usize,
10582            depth: fidl::encoding::Depth,
10583        ) -> fidl::Result<()> {
10584            encoder.debug_check_bounds::<ScanEnd>(offset);
10585            // Zero out padding regions. There's no need to apply masks
10586            // because the unmasked parts will be overwritten by fields.
10587            unsafe {
10588                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10589                (ptr as *mut u64).write_unaligned(0);
10590            }
10591            // Write the fields.
10592            self.0.encode(encoder, offset + 0, depth)?;
10593            self.1.encode(encoder, offset + 8, depth)?;
10594            Ok(())
10595        }
10596    }
10597
10598    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanEnd {
10599        #[inline(always)]
10600        fn new_empty() -> Self {
10601            Self { txn_id: fidl::new_empty!(u64, D), code: fidl::new_empty!(ScanResultCode, D) }
10602        }
10603
10604        #[inline]
10605        unsafe fn decode(
10606            &mut self,
10607            decoder: &mut fidl::encoding::Decoder<'_, D>,
10608            offset: usize,
10609            _depth: fidl::encoding::Depth,
10610        ) -> fidl::Result<()> {
10611            decoder.debug_check_bounds::<Self>(offset);
10612            // Verify that padding bytes are zero.
10613            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10614            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10615            let mask = 0xffffffff00000000u64;
10616            let maskedval = padval & mask;
10617            if maskedval != 0 {
10618                return Err(fidl::Error::NonZeroPadding {
10619                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10620                });
10621            }
10622            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
10623            fidl::decode!(ScanResultCode, D, &mut self.code, decoder, offset + 8, _depth)?;
10624            Ok(())
10625        }
10626    }
10627
10628    impl fidl::encoding::ValueTypeMarker for ScanRequest {
10629        type Borrowed<'a> = &'a Self;
10630        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10631            value
10632        }
10633    }
10634
10635    unsafe impl fidl::encoding::TypeMarker for ScanRequest {
10636        type Owned = Self;
10637
10638        #[inline(always)]
10639        fn inline_align(_context: fidl::encoding::Context) -> usize {
10640            8
10641        }
10642
10643        #[inline(always)]
10644        fn inline_size(_context: fidl::encoding::Context) -> usize {
10645            64
10646        }
10647    }
10648
10649    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanRequest, D>
10650        for &ScanRequest
10651    {
10652        #[inline]
10653        unsafe fn encode(
10654            self,
10655            encoder: &mut fidl::encoding::Encoder<'_, D>,
10656            offset: usize,
10657            _depth: fidl::encoding::Depth,
10658        ) -> fidl::Result<()> {
10659            encoder.debug_check_bounds::<ScanRequest>(offset);
10660            // Delegate to tuple encoding.
10661            fidl::encoding::Encode::<ScanRequest, D>::encode(
10662                (
10663                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
10664                    <ScanTypes as fidl::encoding::ValueTypeMarker>::borrow(&self.scan_type),
10665                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.channel_list),
10666                    <fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid_list),
10667                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.probe_delay),
10668                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.min_channel_time),
10669                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.max_channel_time),
10670                ),
10671                encoder, offset, _depth
10672            )
10673        }
10674    }
10675    unsafe impl<
10676        D: fidl::encoding::ResourceDialect,
10677        T0: fidl::encoding::Encode<u64, D>,
10678        T1: fidl::encoding::Encode<ScanTypes, D>,
10679        T2: fidl::encoding::Encode<fidl::encoding::Vector<u8, 256>, D>,
10680        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>,
10681        T4: fidl::encoding::Encode<u32, D>,
10682        T5: fidl::encoding::Encode<u32, D>,
10683        T6: fidl::encoding::Encode<u32, D>,
10684    > fidl::encoding::Encode<ScanRequest, D> for (T0, T1, T2, T3, T4, T5, T6)
10685    {
10686        #[inline]
10687        unsafe fn encode(
10688            self,
10689            encoder: &mut fidl::encoding::Encoder<'_, D>,
10690            offset: usize,
10691            depth: fidl::encoding::Depth,
10692        ) -> fidl::Result<()> {
10693            encoder.debug_check_bounds::<ScanRequest>(offset);
10694            // Zero out padding regions. There's no need to apply masks
10695            // because the unmasked parts will be overwritten by fields.
10696            unsafe {
10697                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10698                (ptr as *mut u64).write_unaligned(0);
10699            }
10700            unsafe {
10701                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
10702                (ptr as *mut u64).write_unaligned(0);
10703            }
10704            // Write the fields.
10705            self.0.encode(encoder, offset + 0, depth)?;
10706            self.1.encode(encoder, offset + 8, depth)?;
10707            self.2.encode(encoder, offset + 16, depth)?;
10708            self.3.encode(encoder, offset + 32, depth)?;
10709            self.4.encode(encoder, offset + 48, depth)?;
10710            self.5.encode(encoder, offset + 52, depth)?;
10711            self.6.encode(encoder, offset + 56, depth)?;
10712            Ok(())
10713        }
10714    }
10715
10716    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanRequest {
10717        #[inline(always)]
10718        fn new_empty() -> Self {
10719            Self {
10720                txn_id: fidl::new_empty!(u64, D),
10721                scan_type: fidl::new_empty!(ScanTypes, D),
10722                channel_list: fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D),
10723                ssid_list: fidl::new_empty!(
10724                    fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
10725                    D
10726                ),
10727                probe_delay: fidl::new_empty!(u32, D),
10728                min_channel_time: fidl::new_empty!(u32, D),
10729                max_channel_time: fidl::new_empty!(u32, D),
10730            }
10731        }
10732
10733        #[inline]
10734        unsafe fn decode(
10735            &mut self,
10736            decoder: &mut fidl::encoding::Decoder<'_, D>,
10737            offset: usize,
10738            _depth: fidl::encoding::Depth,
10739        ) -> fidl::Result<()> {
10740            decoder.debug_check_bounds::<Self>(offset);
10741            // Verify that padding bytes are zero.
10742            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10743            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10744            let mask = 0xffffffff00000000u64;
10745            let maskedval = padval & mask;
10746            if maskedval != 0 {
10747                return Err(fidl::Error::NonZeroPadding {
10748                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10749                });
10750            }
10751            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
10752            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10753            let mask = 0xffffffff00000000u64;
10754            let maskedval = padval & mask;
10755            if maskedval != 0 {
10756                return Err(fidl::Error::NonZeroPadding {
10757                    padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
10758                });
10759            }
10760            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
10761            fidl::decode!(ScanTypes, D, &mut self.scan_type, decoder, offset + 8, _depth)?;
10762            fidl::decode!(fidl::encoding::Vector<u8, 256>, D, &mut self.channel_list, decoder, offset + 16, _depth)?;
10763            fidl::decode!(
10764                fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
10765                D,
10766                &mut self.ssid_list,
10767                decoder,
10768                offset + 32,
10769                _depth
10770            )?;
10771            fidl::decode!(u32, D, &mut self.probe_delay, decoder, offset + 48, _depth)?;
10772            fidl::decode!(u32, D, &mut self.min_channel_time, decoder, offset + 52, _depth)?;
10773            fidl::decode!(u32, D, &mut self.max_channel_time, decoder, offset + 56, _depth)?;
10774            Ok(())
10775        }
10776    }
10777
10778    impl fidl::encoding::ValueTypeMarker for ScanResult {
10779        type Borrowed<'a> = &'a Self;
10780        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10781            value
10782        }
10783    }
10784
10785    unsafe impl fidl::encoding::TypeMarker for ScanResult {
10786        type Owned = Self;
10787
10788        #[inline(always)]
10789        fn inline_align(_context: fidl::encoding::Context) -> usize {
10790            8
10791        }
10792
10793        #[inline(always)]
10794        fn inline_size(_context: fidl::encoding::Context) -> usize {
10795            64
10796        }
10797    }
10798
10799    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanResult, D>
10800        for &ScanResult
10801    {
10802        #[inline]
10803        unsafe fn encode(
10804            self,
10805            encoder: &mut fidl::encoding::Encoder<'_, D>,
10806            offset: usize,
10807            _depth: fidl::encoding::Depth,
10808        ) -> fidl::Result<()> {
10809            encoder.debug_check_bounds::<ScanResult>(offset);
10810            // Delegate to tuple encoding.
10811            fidl::encoding::Encode::<ScanResult, D>::encode(
10812                (
10813                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
10814                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timestamp_nanos),
10815                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.bss),
10816                ),
10817                encoder, offset, _depth
10818            )
10819        }
10820    }
10821    unsafe impl<
10822        D: fidl::encoding::ResourceDialect,
10823        T0: fidl::encoding::Encode<u64, D>,
10824        T1: fidl::encoding::Encode<i64, D>,
10825        T2: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
10826    > fidl::encoding::Encode<ScanResult, D> for (T0, T1, T2)
10827    {
10828        #[inline]
10829        unsafe fn encode(
10830            self,
10831            encoder: &mut fidl::encoding::Encoder<'_, D>,
10832            offset: usize,
10833            depth: fidl::encoding::Depth,
10834        ) -> fidl::Result<()> {
10835            encoder.debug_check_bounds::<ScanResult>(offset);
10836            // Zero out padding regions. There's no need to apply masks
10837            // because the unmasked parts will be overwritten by fields.
10838            // Write the fields.
10839            self.0.encode(encoder, offset + 0, depth)?;
10840            self.1.encode(encoder, offset + 8, depth)?;
10841            self.2.encode(encoder, offset + 16, depth)?;
10842            Ok(())
10843        }
10844    }
10845
10846    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanResult {
10847        #[inline(always)]
10848        fn new_empty() -> Self {
10849            Self {
10850                txn_id: fidl::new_empty!(u64, D),
10851                timestamp_nanos: fidl::new_empty!(i64, D),
10852                bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
10853            }
10854        }
10855
10856        #[inline]
10857        unsafe fn decode(
10858            &mut self,
10859            decoder: &mut fidl::encoding::Decoder<'_, D>,
10860            offset: usize,
10861            _depth: fidl::encoding::Depth,
10862        ) -> fidl::Result<()> {
10863            decoder.debug_check_bounds::<Self>(offset);
10864            // Verify that padding bytes are zero.
10865            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
10866            fidl::decode!(i64, D, &mut self.timestamp_nanos, decoder, offset + 8, _depth)?;
10867            fidl::decode!(
10868                fidl_fuchsia_wlan_common__common::BssDescription,
10869                D,
10870                &mut self.bss,
10871                decoder,
10872                offset + 16,
10873                _depth
10874            )?;
10875            Ok(())
10876        }
10877    }
10878
10879    impl fidl::encoding::ValueTypeMarker for SetControlledPortRequest {
10880        type Borrowed<'a> = &'a Self;
10881        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10882            value
10883        }
10884    }
10885
10886    unsafe impl fidl::encoding::TypeMarker for SetControlledPortRequest {
10887        type Owned = Self;
10888
10889        #[inline(always)]
10890        fn inline_align(_context: fidl::encoding::Context) -> usize {
10891            4
10892        }
10893
10894        #[inline(always)]
10895        fn inline_size(_context: fidl::encoding::Context) -> usize {
10896            12
10897        }
10898    }
10899
10900    unsafe impl<D: fidl::encoding::ResourceDialect>
10901        fidl::encoding::Encode<SetControlledPortRequest, D> for &SetControlledPortRequest
10902    {
10903        #[inline]
10904        unsafe fn encode(
10905            self,
10906            encoder: &mut fidl::encoding::Encoder<'_, D>,
10907            offset: usize,
10908            _depth: fidl::encoding::Depth,
10909        ) -> fidl::Result<()> {
10910            encoder.debug_check_bounds::<SetControlledPortRequest>(offset);
10911            // Delegate to tuple encoding.
10912            fidl::encoding::Encode::<SetControlledPortRequest, D>::encode(
10913                (
10914                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
10915                        &self.peer_sta_address,
10916                    ),
10917                    <ControlledPortState as fidl::encoding::ValueTypeMarker>::borrow(&self.state),
10918                ),
10919                encoder,
10920                offset,
10921                _depth,
10922            )
10923        }
10924    }
10925    unsafe impl<
10926        D: fidl::encoding::ResourceDialect,
10927        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10928        T1: fidl::encoding::Encode<ControlledPortState, D>,
10929    > fidl::encoding::Encode<SetControlledPortRequest, D> for (T0, T1)
10930    {
10931        #[inline]
10932        unsafe fn encode(
10933            self,
10934            encoder: &mut fidl::encoding::Encoder<'_, D>,
10935            offset: usize,
10936            depth: fidl::encoding::Depth,
10937        ) -> fidl::Result<()> {
10938            encoder.debug_check_bounds::<SetControlledPortRequest>(offset);
10939            // Zero out padding regions. There's no need to apply masks
10940            // because the unmasked parts will be overwritten by fields.
10941            unsafe {
10942                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
10943                (ptr as *mut u32).write_unaligned(0);
10944            }
10945            // Write the fields.
10946            self.0.encode(encoder, offset + 0, depth)?;
10947            self.1.encode(encoder, offset + 8, depth)?;
10948            Ok(())
10949        }
10950    }
10951
10952    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10953        for SetControlledPortRequest
10954    {
10955        #[inline(always)]
10956        fn new_empty() -> Self {
10957            Self {
10958                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10959                state: fidl::new_empty!(ControlledPortState, D),
10960            }
10961        }
10962
10963        #[inline]
10964        unsafe fn decode(
10965            &mut self,
10966            decoder: &mut fidl::encoding::Decoder<'_, D>,
10967            offset: usize,
10968            _depth: fidl::encoding::Depth,
10969        ) -> fidl::Result<()> {
10970            decoder.debug_check_bounds::<Self>(offset);
10971            // Verify that padding bytes are zero.
10972            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
10973            let padval = unsafe { (ptr as *const u32).read_unaligned() };
10974            let mask = 0xffff0000u32;
10975            let maskedval = padval & mask;
10976            if maskedval != 0 {
10977                return Err(fidl::Error::NonZeroPadding {
10978                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
10979                });
10980            }
10981            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
10982            fidl::decode!(ControlledPortState, D, &mut self.state, decoder, offset + 8, _depth)?;
10983            Ok(())
10984        }
10985    }
10986
10987    impl fidl::encoding::ValueTypeMarker for SetKeyDescriptor {
10988        type Borrowed<'a> = &'a Self;
10989        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10990            value
10991        }
10992    }
10993
10994    unsafe impl fidl::encoding::TypeMarker for SetKeyDescriptor {
10995        type Owned = Self;
10996
10997        #[inline(always)]
10998        fn inline_align(_context: fidl::encoding::Context) -> usize {
10999            8
11000        }
11001
11002        #[inline(always)]
11003        fn inline_size(_context: fidl::encoding::Context) -> usize {
11004            48
11005        }
11006    }
11007
11008    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeyDescriptor, D>
11009        for &SetKeyDescriptor
11010    {
11011        #[inline]
11012        unsafe fn encode(
11013            self,
11014            encoder: &mut fidl::encoding::Encoder<'_, D>,
11015            offset: usize,
11016            _depth: fidl::encoding::Depth,
11017        ) -> fidl::Result<()> {
11018            encoder.debug_check_bounds::<SetKeyDescriptor>(offset);
11019            // Delegate to tuple encoding.
11020            fidl::encoding::Encode::<SetKeyDescriptor, D>::encode(
11021                (
11022                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
11023                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.key_id),
11024                    <KeyType as fidl::encoding::ValueTypeMarker>::borrow(&self.key_type),
11025                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.address),
11026                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.rsc),
11027                    <fidl::encoding::Array<u8, 3> as fidl::encoding::ValueTypeMarker>::borrow(&self.cipher_suite_oui),
11028                    <fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType as fidl::encoding::ValueTypeMarker>::borrow(&self.cipher_suite_type),
11029                ),
11030                encoder, offset, _depth
11031            )
11032        }
11033    }
11034    unsafe impl<
11035        D: fidl::encoding::ResourceDialect,
11036        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
11037        T1: fidl::encoding::Encode<u16, D>,
11038        T2: fidl::encoding::Encode<KeyType, D>,
11039        T3: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11040        T4: fidl::encoding::Encode<u64, D>,
11041        T5: fidl::encoding::Encode<fidl::encoding::Array<u8, 3>, D>,
11042        T6: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType, D>,
11043    > fidl::encoding::Encode<SetKeyDescriptor, D> for (T0, T1, T2, T3, T4, T5, T6)
11044    {
11045        #[inline]
11046        unsafe fn encode(
11047            self,
11048            encoder: &mut fidl::encoding::Encoder<'_, D>,
11049            offset: usize,
11050            depth: fidl::encoding::Depth,
11051        ) -> fidl::Result<()> {
11052            encoder.debug_check_bounds::<SetKeyDescriptor>(offset);
11053            // Zero out padding regions. There's no need to apply masks
11054            // because the unmasked parts will be overwritten by fields.
11055            unsafe {
11056                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
11057                (ptr as *mut u64).write_unaligned(0);
11058            }
11059            unsafe {
11060                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
11061                (ptr as *mut u64).write_unaligned(0);
11062            }
11063            unsafe {
11064                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(40);
11065                (ptr as *mut u64).write_unaligned(0);
11066            }
11067            // Write the fields.
11068            self.0.encode(encoder, offset + 0, depth)?;
11069            self.1.encode(encoder, offset + 16, depth)?;
11070            self.2.encode(encoder, offset + 20, depth)?;
11071            self.3.encode(encoder, offset + 24, depth)?;
11072            self.4.encode(encoder, offset + 32, depth)?;
11073            self.5.encode(encoder, offset + 40, depth)?;
11074            self.6.encode(encoder, offset + 44, depth)?;
11075            Ok(())
11076        }
11077    }
11078
11079    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeyDescriptor {
11080        #[inline(always)]
11081        fn new_empty() -> Self {
11082            Self {
11083                key: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
11084                key_id: fidl::new_empty!(u16, D),
11085                key_type: fidl::new_empty!(KeyType, D),
11086                address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11087                rsc: fidl::new_empty!(u64, D),
11088                cipher_suite_oui: fidl::new_empty!(fidl::encoding::Array<u8, 3>, D),
11089                cipher_suite_type: fidl::new_empty!(
11090                    fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
11091                    D
11092                ),
11093            }
11094        }
11095
11096        #[inline]
11097        unsafe fn decode(
11098            &mut self,
11099            decoder: &mut fidl::encoding::Decoder<'_, D>,
11100            offset: usize,
11101            _depth: fidl::encoding::Depth,
11102        ) -> fidl::Result<()> {
11103            decoder.debug_check_bounds::<Self>(offset);
11104            // Verify that padding bytes are zero.
11105            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
11106            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11107            let mask = 0xffff0000u64;
11108            let maskedval = padval & mask;
11109            if maskedval != 0 {
11110                return Err(fidl::Error::NonZeroPadding {
11111                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
11112                });
11113            }
11114            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
11115            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11116            let mask = 0xffff000000000000u64;
11117            let maskedval = padval & mask;
11118            if maskedval != 0 {
11119                return Err(fidl::Error::NonZeroPadding {
11120                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
11121                });
11122            }
11123            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(40) };
11124            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11125            let mask = 0xff000000u64;
11126            let maskedval = padval & mask;
11127            if maskedval != 0 {
11128                return Err(fidl::Error::NonZeroPadding {
11129                    padding_start: offset + 40 + ((mask as u64).trailing_zeros() / 8) as usize,
11130                });
11131            }
11132            fidl::decode!(
11133                fidl::encoding::UnboundedVector<u8>,
11134                D,
11135                &mut self.key,
11136                decoder,
11137                offset + 0,
11138                _depth
11139            )?;
11140            fidl::decode!(u16, D, &mut self.key_id, decoder, offset + 16, _depth)?;
11141            fidl::decode!(KeyType, D, &mut self.key_type, decoder, offset + 20, _depth)?;
11142            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.address, decoder, offset + 24, _depth)?;
11143            fidl::decode!(u64, D, &mut self.rsc, decoder, offset + 32, _depth)?;
11144            fidl::decode!(fidl::encoding::Array<u8, 3>, D, &mut self.cipher_suite_oui, decoder, offset + 40, _depth)?;
11145            fidl::decode!(
11146                fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
11147                D,
11148                &mut self.cipher_suite_type,
11149                decoder,
11150                offset + 44,
11151                _depth
11152            )?;
11153            Ok(())
11154        }
11155    }
11156
11157    impl fidl::encoding::ValueTypeMarker for SetKeyResult {
11158        type Borrowed<'a> = &'a Self;
11159        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11160            value
11161        }
11162    }
11163
11164    unsafe impl fidl::encoding::TypeMarker for SetKeyResult {
11165        type Owned = Self;
11166
11167        #[inline(always)]
11168        fn inline_align(_context: fidl::encoding::Context) -> usize {
11169            4
11170        }
11171
11172        #[inline(always)]
11173        fn inline_size(_context: fidl::encoding::Context) -> usize {
11174            8
11175        }
11176    }
11177
11178    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeyResult, D>
11179        for &SetKeyResult
11180    {
11181        #[inline]
11182        unsafe fn encode(
11183            self,
11184            encoder: &mut fidl::encoding::Encoder<'_, D>,
11185            offset: usize,
11186            _depth: fidl::encoding::Depth,
11187        ) -> fidl::Result<()> {
11188            encoder.debug_check_bounds::<SetKeyResult>(offset);
11189            unsafe {
11190                // Copy the object into the buffer.
11191                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
11192                (buf_ptr as *mut SetKeyResult)
11193                    .write_unaligned((self as *const SetKeyResult).read());
11194                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
11195                // done second because the memcpy will write garbage to these bytes.
11196                let padding_ptr = buf_ptr.offset(0) as *mut u32;
11197                let padding_mask = 0xffff0000u32;
11198                padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
11199            }
11200            Ok(())
11201        }
11202    }
11203    unsafe impl<
11204        D: fidl::encoding::ResourceDialect,
11205        T0: fidl::encoding::Encode<u16, D>,
11206        T1: fidl::encoding::Encode<i32, D>,
11207    > fidl::encoding::Encode<SetKeyResult, D> for (T0, T1)
11208    {
11209        #[inline]
11210        unsafe fn encode(
11211            self,
11212            encoder: &mut fidl::encoding::Encoder<'_, D>,
11213            offset: usize,
11214            depth: fidl::encoding::Depth,
11215        ) -> fidl::Result<()> {
11216            encoder.debug_check_bounds::<SetKeyResult>(offset);
11217            // Zero out padding regions. There's no need to apply masks
11218            // because the unmasked parts will be overwritten by fields.
11219            unsafe {
11220                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
11221                (ptr as *mut u32).write_unaligned(0);
11222            }
11223            // Write the fields.
11224            self.0.encode(encoder, offset + 0, depth)?;
11225            self.1.encode(encoder, offset + 4, depth)?;
11226            Ok(())
11227        }
11228    }
11229
11230    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeyResult {
11231        #[inline(always)]
11232        fn new_empty() -> Self {
11233            Self { key_id: fidl::new_empty!(u16, D), status: fidl::new_empty!(i32, D) }
11234        }
11235
11236        #[inline]
11237        unsafe fn decode(
11238            &mut self,
11239            decoder: &mut fidl::encoding::Decoder<'_, D>,
11240            offset: usize,
11241            _depth: fidl::encoding::Depth,
11242        ) -> fidl::Result<()> {
11243            decoder.debug_check_bounds::<Self>(offset);
11244            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
11245            // Verify that padding bytes are zero.
11246            let ptr = unsafe { buf_ptr.offset(0) };
11247            let padval = unsafe { (ptr as *const u32).read_unaligned() };
11248            let mask = 0xffff0000u32;
11249            let maskedval = padval & mask;
11250            if maskedval != 0 {
11251                return Err(fidl::Error::NonZeroPadding {
11252                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
11253                });
11254            }
11255            // Copy from the buffer into the object.
11256            unsafe {
11257                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
11258            }
11259            Ok(())
11260        }
11261    }
11262
11263    impl fidl::encoding::ValueTypeMarker for SetKeysConfirm {
11264        type Borrowed<'a> = &'a Self;
11265        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11266            value
11267        }
11268    }
11269
11270    unsafe impl fidl::encoding::TypeMarker for SetKeysConfirm {
11271        type Owned = Self;
11272
11273        #[inline(always)]
11274        fn inline_align(_context: fidl::encoding::Context) -> usize {
11275            8
11276        }
11277
11278        #[inline(always)]
11279        fn inline_size(_context: fidl::encoding::Context) -> usize {
11280            16
11281        }
11282    }
11283
11284    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeysConfirm, D>
11285        for &SetKeysConfirm
11286    {
11287        #[inline]
11288        unsafe fn encode(
11289            self,
11290            encoder: &mut fidl::encoding::Encoder<'_, D>,
11291            offset: usize,
11292            _depth: fidl::encoding::Depth,
11293        ) -> fidl::Result<()> {
11294            encoder.debug_check_bounds::<SetKeysConfirm>(offset);
11295            // Delegate to tuple encoding.
11296            fidl::encoding::Encode::<SetKeysConfirm, D>::encode(
11297                (
11298                    <fidl::encoding::UnboundedVector<SetKeyResult> as fidl::encoding::ValueTypeMarker>::borrow(&self.results),
11299                ),
11300                encoder, offset, _depth
11301            )
11302        }
11303    }
11304    unsafe impl<
11305        D: fidl::encoding::ResourceDialect,
11306        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<SetKeyResult>, D>,
11307    > fidl::encoding::Encode<SetKeysConfirm, D> for (T0,)
11308    {
11309        #[inline]
11310        unsafe fn encode(
11311            self,
11312            encoder: &mut fidl::encoding::Encoder<'_, D>,
11313            offset: usize,
11314            depth: fidl::encoding::Depth,
11315        ) -> fidl::Result<()> {
11316            encoder.debug_check_bounds::<SetKeysConfirm>(offset);
11317            // Zero out padding regions. There's no need to apply masks
11318            // because the unmasked parts will be overwritten by fields.
11319            // Write the fields.
11320            self.0.encode(encoder, offset + 0, depth)?;
11321            Ok(())
11322        }
11323    }
11324
11325    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeysConfirm {
11326        #[inline(always)]
11327        fn new_empty() -> Self {
11328            Self { results: fidl::new_empty!(fidl::encoding::UnboundedVector<SetKeyResult>, D) }
11329        }
11330
11331        #[inline]
11332        unsafe fn decode(
11333            &mut self,
11334            decoder: &mut fidl::encoding::Decoder<'_, D>,
11335            offset: usize,
11336            _depth: fidl::encoding::Depth,
11337        ) -> fidl::Result<()> {
11338            decoder.debug_check_bounds::<Self>(offset);
11339            // Verify that padding bytes are zero.
11340            fidl::decode!(
11341                fidl::encoding::UnboundedVector<SetKeyResult>,
11342                D,
11343                &mut self.results,
11344                decoder,
11345                offset + 0,
11346                _depth
11347            )?;
11348            Ok(())
11349        }
11350    }
11351
11352    impl fidl::encoding::ValueTypeMarker for SetKeysRequest {
11353        type Borrowed<'a> = &'a Self;
11354        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11355            value
11356        }
11357    }
11358
11359    unsafe impl fidl::encoding::TypeMarker for SetKeysRequest {
11360        type Owned = Self;
11361
11362        #[inline(always)]
11363        fn inline_align(_context: fidl::encoding::Context) -> usize {
11364            8
11365        }
11366
11367        #[inline(always)]
11368        fn inline_size(_context: fidl::encoding::Context) -> usize {
11369            16
11370        }
11371    }
11372
11373    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeysRequest, D>
11374        for &SetKeysRequest
11375    {
11376        #[inline]
11377        unsafe fn encode(
11378            self,
11379            encoder: &mut fidl::encoding::Encoder<'_, D>,
11380            offset: usize,
11381            _depth: fidl::encoding::Depth,
11382        ) -> fidl::Result<()> {
11383            encoder.debug_check_bounds::<SetKeysRequest>(offset);
11384            // Delegate to tuple encoding.
11385            fidl::encoding::Encode::<SetKeysRequest, D>::encode(
11386                (
11387                    <fidl::encoding::UnboundedVector<SetKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.keylist),
11388                ),
11389                encoder, offset, _depth
11390            )
11391        }
11392    }
11393    unsafe impl<
11394        D: fidl::encoding::ResourceDialect,
11395        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<SetKeyDescriptor>, D>,
11396    > fidl::encoding::Encode<SetKeysRequest, D> for (T0,)
11397    {
11398        #[inline]
11399        unsafe fn encode(
11400            self,
11401            encoder: &mut fidl::encoding::Encoder<'_, D>,
11402            offset: usize,
11403            depth: fidl::encoding::Depth,
11404        ) -> fidl::Result<()> {
11405            encoder.debug_check_bounds::<SetKeysRequest>(offset);
11406            // Zero out padding regions. There's no need to apply masks
11407            // because the unmasked parts will be overwritten by fields.
11408            // Write the fields.
11409            self.0.encode(encoder, offset + 0, depth)?;
11410            Ok(())
11411        }
11412    }
11413
11414    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeysRequest {
11415        #[inline(always)]
11416        fn new_empty() -> Self {
11417            Self { keylist: fidl::new_empty!(fidl::encoding::UnboundedVector<SetKeyDescriptor>, D) }
11418        }
11419
11420        #[inline]
11421        unsafe fn decode(
11422            &mut self,
11423            decoder: &mut fidl::encoding::Decoder<'_, D>,
11424            offset: usize,
11425            _depth: fidl::encoding::Depth,
11426        ) -> fidl::Result<()> {
11427            decoder.debug_check_bounds::<Self>(offset);
11428            // Verify that padding bytes are zero.
11429            fidl::decode!(
11430                fidl::encoding::UnboundedVector<SetKeyDescriptor>,
11431                D,
11432                &mut self.keylist,
11433                decoder,
11434                offset + 0,
11435                _depth
11436            )?;
11437            Ok(())
11438        }
11439    }
11440
11441    impl fidl::encoding::ValueTypeMarker for StartCaptureFramesRequest {
11442        type Borrowed<'a> = &'a Self;
11443        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11444            value
11445        }
11446    }
11447
11448    unsafe impl fidl::encoding::TypeMarker for StartCaptureFramesRequest {
11449        type Owned = Self;
11450
11451        #[inline(always)]
11452        fn inline_align(_context: fidl::encoding::Context) -> usize {
11453            4
11454        }
11455
11456        #[inline(always)]
11457        fn inline_size(_context: fidl::encoding::Context) -> usize {
11458            4
11459        }
11460    }
11461
11462    unsafe impl<D: fidl::encoding::ResourceDialect>
11463        fidl::encoding::Encode<StartCaptureFramesRequest, D> for &StartCaptureFramesRequest
11464    {
11465        #[inline]
11466        unsafe fn encode(
11467            self,
11468            encoder: &mut fidl::encoding::Encoder<'_, D>,
11469            offset: usize,
11470            _depth: fidl::encoding::Depth,
11471        ) -> fidl::Result<()> {
11472            encoder.debug_check_bounds::<StartCaptureFramesRequest>(offset);
11473            // Delegate to tuple encoding.
11474            fidl::encoding::Encode::<StartCaptureFramesRequest, D>::encode(
11475                (<MgmtFrameCaptureFlags as fidl::encoding::ValueTypeMarker>::borrow(
11476                    &self.mgmt_frame_flags,
11477                ),),
11478                encoder,
11479                offset,
11480                _depth,
11481            )
11482        }
11483    }
11484    unsafe impl<
11485        D: fidl::encoding::ResourceDialect,
11486        T0: fidl::encoding::Encode<MgmtFrameCaptureFlags, D>,
11487    > fidl::encoding::Encode<StartCaptureFramesRequest, D> for (T0,)
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::<StartCaptureFramesRequest>(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            Ok(())
11502        }
11503    }
11504
11505    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11506        for StartCaptureFramesRequest
11507    {
11508        #[inline(always)]
11509        fn new_empty() -> Self {
11510            Self { mgmt_frame_flags: fidl::new_empty!(MgmtFrameCaptureFlags, D) }
11511        }
11512
11513        #[inline]
11514        unsafe fn decode(
11515            &mut self,
11516            decoder: &mut fidl::encoding::Decoder<'_, D>,
11517            offset: usize,
11518            _depth: fidl::encoding::Depth,
11519        ) -> fidl::Result<()> {
11520            decoder.debug_check_bounds::<Self>(offset);
11521            // Verify that padding bytes are zero.
11522            fidl::decode!(
11523                MgmtFrameCaptureFlags,
11524                D,
11525                &mut self.mgmt_frame_flags,
11526                decoder,
11527                offset + 0,
11528                _depth
11529            )?;
11530            Ok(())
11531        }
11532    }
11533
11534    impl fidl::encoding::ValueTypeMarker for StartCaptureFramesResponse {
11535        type Borrowed<'a> = &'a Self;
11536        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11537            value
11538        }
11539    }
11540
11541    unsafe impl fidl::encoding::TypeMarker for StartCaptureFramesResponse {
11542        type Owned = Self;
11543
11544        #[inline(always)]
11545        fn inline_align(_context: fidl::encoding::Context) -> usize {
11546            4
11547        }
11548
11549        #[inline(always)]
11550        fn inline_size(_context: fidl::encoding::Context) -> usize {
11551            8
11552        }
11553    }
11554
11555    unsafe impl<D: fidl::encoding::ResourceDialect>
11556        fidl::encoding::Encode<StartCaptureFramesResponse, D> for &StartCaptureFramesResponse
11557    {
11558        #[inline]
11559        unsafe fn encode(
11560            self,
11561            encoder: &mut fidl::encoding::Encoder<'_, D>,
11562            offset: usize,
11563            _depth: fidl::encoding::Depth,
11564        ) -> fidl::Result<()> {
11565            encoder.debug_check_bounds::<StartCaptureFramesResponse>(offset);
11566            // Delegate to tuple encoding.
11567            fidl::encoding::Encode::<StartCaptureFramesResponse, D>::encode(
11568                (
11569                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
11570                    <MgmtFrameCaptureFlags as fidl::encoding::ValueTypeMarker>::borrow(
11571                        &self.supported_mgmt_frames,
11572                    ),
11573                ),
11574                encoder,
11575                offset,
11576                _depth,
11577            )
11578        }
11579    }
11580    unsafe impl<
11581        D: fidl::encoding::ResourceDialect,
11582        T0: fidl::encoding::Encode<i32, D>,
11583        T1: fidl::encoding::Encode<MgmtFrameCaptureFlags, D>,
11584    > fidl::encoding::Encode<StartCaptureFramesResponse, D> for (T0, T1)
11585    {
11586        #[inline]
11587        unsafe fn encode(
11588            self,
11589            encoder: &mut fidl::encoding::Encoder<'_, D>,
11590            offset: usize,
11591            depth: fidl::encoding::Depth,
11592        ) -> fidl::Result<()> {
11593            encoder.debug_check_bounds::<StartCaptureFramesResponse>(offset);
11594            // Zero out padding regions. There's no need to apply masks
11595            // because the unmasked parts will be overwritten by fields.
11596            // Write the fields.
11597            self.0.encode(encoder, offset + 0, depth)?;
11598            self.1.encode(encoder, offset + 4, depth)?;
11599            Ok(())
11600        }
11601    }
11602
11603    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11604        for StartCaptureFramesResponse
11605    {
11606        #[inline(always)]
11607        fn new_empty() -> Self {
11608            Self {
11609                status: fidl::new_empty!(i32, D),
11610                supported_mgmt_frames: fidl::new_empty!(MgmtFrameCaptureFlags, D),
11611            }
11612        }
11613
11614        #[inline]
11615        unsafe fn decode(
11616            &mut self,
11617            decoder: &mut fidl::encoding::Decoder<'_, D>,
11618            offset: usize,
11619            _depth: fidl::encoding::Depth,
11620        ) -> fidl::Result<()> {
11621            decoder.debug_check_bounds::<Self>(offset);
11622            // Verify that padding bytes are zero.
11623            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
11624            fidl::decode!(
11625                MgmtFrameCaptureFlags,
11626                D,
11627                &mut self.supported_mgmt_frames,
11628                decoder,
11629                offset + 4,
11630                _depth
11631            )?;
11632            Ok(())
11633        }
11634    }
11635
11636    impl fidl::encoding::ValueTypeMarker for StartConfirm {
11637        type Borrowed<'a> = &'a Self;
11638        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11639            value
11640        }
11641    }
11642
11643    unsafe impl fidl::encoding::TypeMarker for StartConfirm {
11644        type Owned = Self;
11645
11646        #[inline(always)]
11647        fn inline_align(_context: fidl::encoding::Context) -> usize {
11648            4
11649        }
11650
11651        #[inline(always)]
11652        fn inline_size(_context: fidl::encoding::Context) -> usize {
11653            4
11654        }
11655    }
11656
11657    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartConfirm, D>
11658        for &StartConfirm
11659    {
11660        #[inline]
11661        unsafe fn encode(
11662            self,
11663            encoder: &mut fidl::encoding::Encoder<'_, D>,
11664            offset: usize,
11665            _depth: fidl::encoding::Depth,
11666        ) -> fidl::Result<()> {
11667            encoder.debug_check_bounds::<StartConfirm>(offset);
11668            // Delegate to tuple encoding.
11669            fidl::encoding::Encode::<StartConfirm, D>::encode(
11670                (<StartResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),),
11671                encoder,
11672                offset,
11673                _depth,
11674            )
11675        }
11676    }
11677    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartResultCode, D>>
11678        fidl::encoding::Encode<StartConfirm, D> for (T0,)
11679    {
11680        #[inline]
11681        unsafe fn encode(
11682            self,
11683            encoder: &mut fidl::encoding::Encoder<'_, D>,
11684            offset: usize,
11685            depth: fidl::encoding::Depth,
11686        ) -> fidl::Result<()> {
11687            encoder.debug_check_bounds::<StartConfirm>(offset);
11688            // Zero out padding regions. There's no need to apply masks
11689            // because the unmasked parts will be overwritten by fields.
11690            // Write the fields.
11691            self.0.encode(encoder, offset + 0, depth)?;
11692            Ok(())
11693        }
11694    }
11695
11696    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartConfirm {
11697        #[inline(always)]
11698        fn new_empty() -> Self {
11699            Self { result_code: fidl::new_empty!(StartResultCode, D) }
11700        }
11701
11702        #[inline]
11703        unsafe fn decode(
11704            &mut self,
11705            decoder: &mut fidl::encoding::Decoder<'_, D>,
11706            offset: usize,
11707            _depth: fidl::encoding::Depth,
11708        ) -> fidl::Result<()> {
11709            decoder.debug_check_bounds::<Self>(offset);
11710            // Verify that padding bytes are zero.
11711            fidl::decode!(StartResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
11712            Ok(())
11713        }
11714    }
11715
11716    impl fidl::encoding::ValueTypeMarker for StartRequest {
11717        type Borrowed<'a> = &'a Self;
11718        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11719            value
11720        }
11721    }
11722
11723    unsafe impl fidl::encoding::TypeMarker for StartRequest {
11724        type Owned = Self;
11725
11726        #[inline(always)]
11727        fn inline_align(_context: fidl::encoding::Context) -> usize {
11728            8
11729        }
11730
11731        #[inline(always)]
11732        fn inline_size(_context: fidl::encoding::Context) -> usize {
11733            96
11734        }
11735    }
11736
11737    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartRequest, D>
11738        for &StartRequest
11739    {
11740        #[inline]
11741        unsafe fn encode(
11742            self,
11743            encoder: &mut fidl::encoding::Encoder<'_, D>,
11744            offset: usize,
11745            _depth: fidl::encoding::Depth,
11746        ) -> fidl::Result<()> {
11747            encoder.debug_check_bounds::<StartRequest>(offset);
11748            // Delegate to tuple encoding.
11749            fidl::encoding::Encode::<StartRequest, D>::encode(
11750                (
11751                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid),
11752                    <fidl_fuchsia_wlan_common__common::BssType as fidl::encoding::ValueTypeMarker>::borrow(&self.bss_type),
11753                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.beacon_period),
11754                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.dtim_period),
11755                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.channel),
11756                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
11757                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
11758                    <Country as fidl::encoding::ValueTypeMarker>::borrow(&self.country),
11759                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.mesh_id),
11760                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>> as fidl::encoding::ValueTypeMarker>::borrow(&self.rsne),
11761                    <fidl_fuchsia_wlan_common__common::WlanPhyType as fidl::encoding::ValueTypeMarker>::borrow(&self.phy),
11762                    <fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth as fidl::encoding::ValueTypeMarker>::borrow(&self.channel_bandwidth),
11763                ),
11764                encoder, offset, _depth
11765            )
11766        }
11767    }
11768    unsafe impl<
11769        D: fidl::encoding::ResourceDialect,
11770        T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
11771        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssType, D>,
11772        T2: fidl::encoding::Encode<u16, D>,
11773        T3: fidl::encoding::Encode<u8, D>,
11774        T4: fidl::encoding::Encode<u8, D>,
11775        T5: fidl::encoding::Encode<u16, D>,
11776        T6: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
11777        T7: fidl::encoding::Encode<Country, D>,
11778        T8: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
11779        T9: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>, D>,
11780        T10: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::WlanPhyType, D>,
11781        T11: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth, D>,
11782    > fidl::encoding::Encode<StartRequest, D>
11783        for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
11784    {
11785        #[inline]
11786        unsafe fn encode(
11787            self,
11788            encoder: &mut fidl::encoding::Encoder<'_, D>,
11789            offset: usize,
11790            depth: fidl::encoding::Depth,
11791        ) -> fidl::Result<()> {
11792            encoder.debug_check_bounds::<StartRequest>(offset);
11793            // Zero out padding regions. There's no need to apply masks
11794            // because the unmasked parts will be overwritten by fields.
11795            unsafe {
11796                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
11797                (ptr as *mut u64).write_unaligned(0);
11798            }
11799            unsafe {
11800                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(48);
11801                (ptr as *mut u64).write_unaligned(0);
11802            }
11803            // Write the fields.
11804            self.0.encode(encoder, offset + 0, depth)?;
11805            self.1.encode(encoder, offset + 16, depth)?;
11806            self.2.encode(encoder, offset + 20, depth)?;
11807            self.3.encode(encoder, offset + 22, depth)?;
11808            self.4.encode(encoder, offset + 23, depth)?;
11809            self.5.encode(encoder, offset + 24, depth)?;
11810            self.6.encode(encoder, offset + 32, depth)?;
11811            self.7.encode(encoder, offset + 48, depth)?;
11812            self.8.encode(encoder, offset + 56, depth)?;
11813            self.9.encode(encoder, offset + 72, depth)?;
11814            self.10.encode(encoder, offset + 88, depth)?;
11815            self.11.encode(encoder, offset + 92, depth)?;
11816            Ok(())
11817        }
11818    }
11819
11820    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartRequest {
11821        #[inline(always)]
11822        fn new_empty() -> Self {
11823            Self {
11824                ssid: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
11825                bss_type: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssType, D),
11826                beacon_period: fidl::new_empty!(u16, D),
11827                dtim_period: fidl::new_empty!(u8, D),
11828                channel: fidl::new_empty!(u8, D),
11829                capability_info: fidl::new_empty!(u16, D),
11830                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
11831                country: fidl::new_empty!(Country, D),
11832                mesh_id: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
11833                rsne: fidl::new_empty!(
11834                    fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
11835                    D
11836                ),
11837                phy: fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanPhyType, D),
11838                channel_bandwidth: fidl::new_empty!(
11839                    fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth,
11840                    D
11841                ),
11842            }
11843        }
11844
11845        #[inline]
11846        unsafe fn decode(
11847            &mut self,
11848            decoder: &mut fidl::encoding::Decoder<'_, D>,
11849            offset: usize,
11850            _depth: fidl::encoding::Depth,
11851        ) -> fidl::Result<()> {
11852            decoder.debug_check_bounds::<Self>(offset);
11853            // Verify that padding bytes are zero.
11854            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
11855            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11856            let mask = 0xffffffffffff0000u64;
11857            let maskedval = padval & mask;
11858            if maskedval != 0 {
11859                return Err(fidl::Error::NonZeroPadding {
11860                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
11861                });
11862            }
11863            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(48) };
11864            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11865            let mask = 0xffffffffff000000u64;
11866            let maskedval = padval & mask;
11867            if maskedval != 0 {
11868                return Err(fidl::Error::NonZeroPadding {
11869                    padding_start: offset + 48 + ((mask as u64).trailing_zeros() / 8) as usize,
11870                });
11871            }
11872            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.ssid, decoder, offset + 0, _depth)?;
11873            fidl::decode!(
11874                fidl_fuchsia_wlan_common__common::BssType,
11875                D,
11876                &mut self.bss_type,
11877                decoder,
11878                offset + 16,
11879                _depth
11880            )?;
11881            fidl::decode!(u16, D, &mut self.beacon_period, decoder, offset + 20, _depth)?;
11882            fidl::decode!(u8, D, &mut self.dtim_period, decoder, offset + 22, _depth)?;
11883            fidl::decode!(u8, D, &mut self.channel, decoder, offset + 23, _depth)?;
11884            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 24, _depth)?;
11885            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 32, _depth)?;
11886            fidl::decode!(Country, D, &mut self.country, decoder, offset + 48, _depth)?;
11887            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.mesh_id, decoder, offset + 56, _depth)?;
11888            fidl::decode!(
11889                fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
11890                D,
11891                &mut self.rsne,
11892                decoder,
11893                offset + 72,
11894                _depth
11895            )?;
11896            fidl::decode!(
11897                fidl_fuchsia_wlan_common__common::WlanPhyType,
11898                D,
11899                &mut self.phy,
11900                decoder,
11901                offset + 88,
11902                _depth
11903            )?;
11904            fidl::decode!(
11905                fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth,
11906                D,
11907                &mut self.channel_bandwidth,
11908                decoder,
11909                offset + 92,
11910                _depth
11911            )?;
11912            Ok(())
11913        }
11914    }
11915
11916    impl fidl::encoding::ValueTypeMarker for StopConfirm {
11917        type Borrowed<'a> = &'a Self;
11918        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11919            value
11920        }
11921    }
11922
11923    unsafe impl fidl::encoding::TypeMarker for StopConfirm {
11924        type Owned = Self;
11925
11926        #[inline(always)]
11927        fn inline_align(_context: fidl::encoding::Context) -> usize {
11928            4
11929        }
11930
11931        #[inline(always)]
11932        fn inline_size(_context: fidl::encoding::Context) -> usize {
11933            4
11934        }
11935    }
11936
11937    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopConfirm, D>
11938        for &StopConfirm
11939    {
11940        #[inline]
11941        unsafe fn encode(
11942            self,
11943            encoder: &mut fidl::encoding::Encoder<'_, D>,
11944            offset: usize,
11945            _depth: fidl::encoding::Depth,
11946        ) -> fidl::Result<()> {
11947            encoder.debug_check_bounds::<StopConfirm>(offset);
11948            // Delegate to tuple encoding.
11949            fidl::encoding::Encode::<StopConfirm, D>::encode(
11950                (<StopResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),),
11951                encoder,
11952                offset,
11953                _depth,
11954            )
11955        }
11956    }
11957    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopResultCode, D>>
11958        fidl::encoding::Encode<StopConfirm, D> for (T0,)
11959    {
11960        #[inline]
11961        unsafe fn encode(
11962            self,
11963            encoder: &mut fidl::encoding::Encoder<'_, D>,
11964            offset: usize,
11965            depth: fidl::encoding::Depth,
11966        ) -> fidl::Result<()> {
11967            encoder.debug_check_bounds::<StopConfirm>(offset);
11968            // Zero out padding regions. There's no need to apply masks
11969            // because the unmasked parts will be overwritten by fields.
11970            // Write the fields.
11971            self.0.encode(encoder, offset + 0, depth)?;
11972            Ok(())
11973        }
11974    }
11975
11976    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopConfirm {
11977        #[inline(always)]
11978        fn new_empty() -> Self {
11979            Self { result_code: fidl::new_empty!(StopResultCode, D) }
11980        }
11981
11982        #[inline]
11983        unsafe fn decode(
11984            &mut self,
11985            decoder: &mut fidl::encoding::Decoder<'_, D>,
11986            offset: usize,
11987            _depth: fidl::encoding::Depth,
11988        ) -> fidl::Result<()> {
11989            decoder.debug_check_bounds::<Self>(offset);
11990            // Verify that padding bytes are zero.
11991            fidl::decode!(StopResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
11992            Ok(())
11993        }
11994    }
11995
11996    impl fidl::encoding::ValueTypeMarker for StopRequest {
11997        type Borrowed<'a> = &'a Self;
11998        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11999            value
12000        }
12001    }
12002
12003    unsafe impl fidl::encoding::TypeMarker for StopRequest {
12004        type Owned = Self;
12005
12006        #[inline(always)]
12007        fn inline_align(_context: fidl::encoding::Context) -> usize {
12008            8
12009        }
12010
12011        #[inline(always)]
12012        fn inline_size(_context: fidl::encoding::Context) -> usize {
12013            16
12014        }
12015    }
12016
12017    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopRequest, D>
12018        for &StopRequest
12019    {
12020        #[inline]
12021        unsafe fn encode(
12022            self,
12023            encoder: &mut fidl::encoding::Encoder<'_, D>,
12024            offset: usize,
12025            _depth: fidl::encoding::Depth,
12026        ) -> fidl::Result<()> {
12027            encoder.debug_check_bounds::<StopRequest>(offset);
12028            // Delegate to tuple encoding.
12029            fidl::encoding::Encode::<StopRequest, D>::encode(
12030                (<fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(
12031                    &self.ssid,
12032                ),),
12033                encoder,
12034                offset,
12035                _depth,
12036            )
12037        }
12038    }
12039    unsafe impl<
12040        D: fidl::encoding::ResourceDialect,
12041        T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
12042    > fidl::encoding::Encode<StopRequest, D> for (T0,)
12043    {
12044        #[inline]
12045        unsafe fn encode(
12046            self,
12047            encoder: &mut fidl::encoding::Encoder<'_, D>,
12048            offset: usize,
12049            depth: fidl::encoding::Depth,
12050        ) -> fidl::Result<()> {
12051            encoder.debug_check_bounds::<StopRequest>(offset);
12052            // Zero out padding regions. There's no need to apply masks
12053            // because the unmasked parts will be overwritten by fields.
12054            // Write the fields.
12055            self.0.encode(encoder, offset + 0, depth)?;
12056            Ok(())
12057        }
12058    }
12059
12060    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopRequest {
12061        #[inline(always)]
12062        fn new_empty() -> Self {
12063            Self { ssid: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D) }
12064        }
12065
12066        #[inline]
12067        unsafe fn decode(
12068            &mut self,
12069            decoder: &mut fidl::encoding::Decoder<'_, D>,
12070            offset: usize,
12071            _depth: fidl::encoding::Depth,
12072        ) -> fidl::Result<()> {
12073            decoder.debug_check_bounds::<Self>(offset);
12074            // Verify that padding bytes are zero.
12075            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.ssid, decoder, offset + 0, _depth)?;
12076            Ok(())
12077        }
12078    }
12079
12080    impl fidl::encoding::ValueTypeMarker for WmmParameter {
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 WmmParameter {
12088        type Owned = Self;
12089
12090        #[inline(always)]
12091        fn inline_align(_context: fidl::encoding::Context) -> usize {
12092            1
12093        }
12094
12095        #[inline(always)]
12096        fn inline_size(_context: fidl::encoding::Context) -> usize {
12097            18
12098        }
12099        #[inline(always)]
12100        fn encode_is_copy() -> bool {
12101            true
12102        }
12103
12104        #[inline(always)]
12105        fn decode_is_copy() -> bool {
12106            true
12107        }
12108    }
12109
12110    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WmmParameter, D>
12111        for &WmmParameter
12112    {
12113        #[inline]
12114        unsafe fn encode(
12115            self,
12116            encoder: &mut fidl::encoding::Encoder<'_, D>,
12117            offset: usize,
12118            _depth: fidl::encoding::Depth,
12119        ) -> fidl::Result<()> {
12120            encoder.debug_check_bounds::<WmmParameter>(offset);
12121            unsafe {
12122                // Copy the object into the buffer.
12123                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
12124                (buf_ptr as *mut WmmParameter)
12125                    .write_unaligned((self as *const WmmParameter).read());
12126                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
12127                // done second because the memcpy will write garbage to these bytes.
12128            }
12129            Ok(())
12130        }
12131    }
12132    unsafe impl<
12133        D: fidl::encoding::ResourceDialect,
12134        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 18>, D>,
12135    > fidl::encoding::Encode<WmmParameter, D> for (T0,)
12136    {
12137        #[inline]
12138        unsafe fn encode(
12139            self,
12140            encoder: &mut fidl::encoding::Encoder<'_, D>,
12141            offset: usize,
12142            depth: fidl::encoding::Depth,
12143        ) -> fidl::Result<()> {
12144            encoder.debug_check_bounds::<WmmParameter>(offset);
12145            // Zero out padding regions. There's no need to apply masks
12146            // because the unmasked parts will be overwritten by fields.
12147            // Write the fields.
12148            self.0.encode(encoder, offset + 0, depth)?;
12149            Ok(())
12150        }
12151    }
12152
12153    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WmmParameter {
12154        #[inline(always)]
12155        fn new_empty() -> Self {
12156            Self { bytes: fidl::new_empty!(fidl::encoding::Array<u8, 18>, D) }
12157        }
12158
12159        #[inline]
12160        unsafe fn decode(
12161            &mut self,
12162            decoder: &mut fidl::encoding::Decoder<'_, D>,
12163            offset: usize,
12164            _depth: fidl::encoding::Depth,
12165        ) -> fidl::Result<()> {
12166            decoder.debug_check_bounds::<Self>(offset);
12167            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
12168            // Verify that padding bytes are zero.
12169            // Copy from the buffer into the object.
12170            unsafe {
12171                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 18);
12172            }
12173            Ok(())
12174        }
12175    }
12176
12177    impl fidl::encoding::ValueTypeMarker for GetIfaceHistogramStatsResponse {
12178        type Borrowed<'a> = &'a Self;
12179        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12180            value
12181        }
12182    }
12183
12184    unsafe impl fidl::encoding::TypeMarker for GetIfaceHistogramStatsResponse {
12185        type Owned = Self;
12186
12187        #[inline(always)]
12188        fn inline_align(_context: fidl::encoding::Context) -> usize {
12189            8
12190        }
12191
12192        #[inline(always)]
12193        fn inline_size(_context: fidl::encoding::Context) -> usize {
12194            16
12195        }
12196    }
12197
12198    unsafe impl<D: fidl::encoding::ResourceDialect>
12199        fidl::encoding::Encode<GetIfaceHistogramStatsResponse, D>
12200        for &GetIfaceHistogramStatsResponse
12201    {
12202        #[inline]
12203        unsafe fn encode(
12204            self,
12205            encoder: &mut fidl::encoding::Encoder<'_, D>,
12206            offset: usize,
12207            _depth: fidl::encoding::Depth,
12208        ) -> fidl::Result<()> {
12209            encoder.debug_check_bounds::<GetIfaceHistogramStatsResponse>(offset);
12210            encoder.write_num::<u64>(self.ordinal(), offset);
12211            match self {
12212            GetIfaceHistogramStatsResponse::Stats(ref val) => {
12213                fidl::encoding::encode_in_envelope::<fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D>(
12214                    <fidl_fuchsia_wlan_stats__common::IfaceHistogramStats as fidl::encoding::ValueTypeMarker>::borrow(val),
12215                    encoder, offset + 8, _depth
12216                )
12217            }
12218            GetIfaceHistogramStatsResponse::ErrorStatus(ref val) => {
12219                fidl::encoding::encode_in_envelope::<i32, D>(
12220                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
12221                    encoder, offset + 8, _depth
12222                )
12223            }
12224        }
12225        }
12226    }
12227
12228    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12229        for GetIfaceHistogramStatsResponse
12230    {
12231        #[inline(always)]
12232        fn new_empty() -> Self {
12233            Self::Stats(fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D))
12234        }
12235
12236        #[inline]
12237        unsafe fn decode(
12238            &mut self,
12239            decoder: &mut fidl::encoding::Decoder<'_, D>,
12240            offset: usize,
12241            mut depth: fidl::encoding::Depth,
12242        ) -> fidl::Result<()> {
12243            decoder.debug_check_bounds::<Self>(offset);
12244            #[allow(unused_variables)]
12245            let next_out_of_line = decoder.next_out_of_line();
12246            let handles_before = decoder.remaining_handles();
12247            let (ordinal, inlined, num_bytes, num_handles) =
12248                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12249
12250            let member_inline_size = match ordinal {
12251            1 => <fidl_fuchsia_wlan_stats__common::IfaceHistogramStats as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12252            2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12253            _ => return Err(fidl::Error::UnknownUnionTag),
12254        };
12255
12256            if inlined != (member_inline_size <= 4) {
12257                return Err(fidl::Error::InvalidInlineBitInEnvelope);
12258            }
12259            let _inner_offset;
12260            if inlined {
12261                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
12262                _inner_offset = offset + 8;
12263            } else {
12264                depth.increment()?;
12265                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12266            }
12267            match ordinal {
12268                1 => {
12269                    #[allow(irrefutable_let_patterns)]
12270                    if let GetIfaceHistogramStatsResponse::Stats(_) = self {
12271                        // Do nothing, read the value into the object
12272                    } else {
12273                        // Initialize `self` to the right variant
12274                        *self = GetIfaceHistogramStatsResponse::Stats(fidl::new_empty!(
12275                            fidl_fuchsia_wlan_stats__common::IfaceHistogramStats,
12276                            D
12277                        ));
12278                    }
12279                    #[allow(irrefutable_let_patterns)]
12280                    if let GetIfaceHistogramStatsResponse::Stats(ref mut val) = self {
12281                        fidl::decode!(
12282                            fidl_fuchsia_wlan_stats__common::IfaceHistogramStats,
12283                            D,
12284                            val,
12285                            decoder,
12286                            _inner_offset,
12287                            depth
12288                        )?;
12289                    } else {
12290                        unreachable!()
12291                    }
12292                }
12293                2 => {
12294                    #[allow(irrefutable_let_patterns)]
12295                    if let GetIfaceHistogramStatsResponse::ErrorStatus(_) = self {
12296                        // Do nothing, read the value into the object
12297                    } else {
12298                        // Initialize `self` to the right variant
12299                        *self =
12300                            GetIfaceHistogramStatsResponse::ErrorStatus(fidl::new_empty!(i32, D));
12301                    }
12302                    #[allow(irrefutable_let_patterns)]
12303                    if let GetIfaceHistogramStatsResponse::ErrorStatus(ref mut val) = self {
12304                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
12305                    } else {
12306                        unreachable!()
12307                    }
12308                }
12309                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12310            }
12311            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12312                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12313            }
12314            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12315                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12316            }
12317            Ok(())
12318        }
12319    }
12320
12321    impl fidl::encoding::ValueTypeMarker for GetIfaceStatsResponse {
12322        type Borrowed<'a> = &'a Self;
12323        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12324            value
12325        }
12326    }
12327
12328    unsafe impl fidl::encoding::TypeMarker for GetIfaceStatsResponse {
12329        type Owned = Self;
12330
12331        #[inline(always)]
12332        fn inline_align(_context: fidl::encoding::Context) -> usize {
12333            8
12334        }
12335
12336        #[inline(always)]
12337        fn inline_size(_context: fidl::encoding::Context) -> usize {
12338            16
12339        }
12340    }
12341
12342    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<GetIfaceStatsResponse, D>
12343        for &GetIfaceStatsResponse
12344    {
12345        #[inline]
12346        unsafe fn encode(
12347            self,
12348            encoder: &mut fidl::encoding::Encoder<'_, D>,
12349            offset: usize,
12350            _depth: fidl::encoding::Depth,
12351        ) -> fidl::Result<()> {
12352            encoder.debug_check_bounds::<GetIfaceStatsResponse>(offset);
12353            encoder.write_num::<u64>(self.ordinal(), offset);
12354            match self {
12355            GetIfaceStatsResponse::Stats(ref val) => {
12356                fidl::encoding::encode_in_envelope::<fidl_fuchsia_wlan_stats__common::IfaceStats, D>(
12357                    <fidl_fuchsia_wlan_stats__common::IfaceStats as fidl::encoding::ValueTypeMarker>::borrow(val),
12358                    encoder, offset + 8, _depth
12359                )
12360            }
12361            GetIfaceStatsResponse::ErrorStatus(ref val) => {
12362                fidl::encoding::encode_in_envelope::<i32, D>(
12363                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
12364                    encoder, offset + 8, _depth
12365                )
12366            }
12367        }
12368        }
12369    }
12370
12371    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GetIfaceStatsResponse {
12372        #[inline(always)]
12373        fn new_empty() -> Self {
12374            Self::Stats(fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceStats, D))
12375        }
12376
12377        #[inline]
12378        unsafe fn decode(
12379            &mut self,
12380            decoder: &mut fidl::encoding::Decoder<'_, D>,
12381            offset: usize,
12382            mut depth: fidl::encoding::Depth,
12383        ) -> fidl::Result<()> {
12384            decoder.debug_check_bounds::<Self>(offset);
12385            #[allow(unused_variables)]
12386            let next_out_of_line = decoder.next_out_of_line();
12387            let handles_before = decoder.remaining_handles();
12388            let (ordinal, inlined, num_bytes, num_handles) =
12389                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12390
12391            let member_inline_size = match ordinal {
12392            1 => <fidl_fuchsia_wlan_stats__common::IfaceStats as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12393            2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12394            _ => return Err(fidl::Error::UnknownUnionTag),
12395        };
12396
12397            if inlined != (member_inline_size <= 4) {
12398                return Err(fidl::Error::InvalidInlineBitInEnvelope);
12399            }
12400            let _inner_offset;
12401            if inlined {
12402                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
12403                _inner_offset = offset + 8;
12404            } else {
12405                depth.increment()?;
12406                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12407            }
12408            match ordinal {
12409                1 => {
12410                    #[allow(irrefutable_let_patterns)]
12411                    if let GetIfaceStatsResponse::Stats(_) = self {
12412                        // Do nothing, read the value into the object
12413                    } else {
12414                        // Initialize `self` to the right variant
12415                        *self = GetIfaceStatsResponse::Stats(fidl::new_empty!(
12416                            fidl_fuchsia_wlan_stats__common::IfaceStats,
12417                            D
12418                        ));
12419                    }
12420                    #[allow(irrefutable_let_patterns)]
12421                    if let GetIfaceStatsResponse::Stats(ref mut val) = self {
12422                        fidl::decode!(
12423                            fidl_fuchsia_wlan_stats__common::IfaceStats,
12424                            D,
12425                            val,
12426                            decoder,
12427                            _inner_offset,
12428                            depth
12429                        )?;
12430                    } else {
12431                        unreachable!()
12432                    }
12433                }
12434                2 => {
12435                    #[allow(irrefutable_let_patterns)]
12436                    if let GetIfaceStatsResponse::ErrorStatus(_) = self {
12437                        // Do nothing, read the value into the object
12438                    } else {
12439                        // Initialize `self` to the right variant
12440                        *self = GetIfaceStatsResponse::ErrorStatus(fidl::new_empty!(i32, D));
12441                    }
12442                    #[allow(irrefutable_let_patterns)]
12443                    if let GetIfaceStatsResponse::ErrorStatus(ref mut val) = self {
12444                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
12445                    } else {
12446                        unreachable!()
12447                    }
12448                }
12449                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12450            }
12451            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12452                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12453            }
12454            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12455                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12456            }
12457            Ok(())
12458        }
12459    }
12460}