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, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
884#[repr(C)]
885pub struct MlmeSetMacAddressRequest {
886    pub mac_addr: [u8; 6],
887}
888
889impl fidl::Persistable for MlmeSetMacAddressRequest {}
890
891#[derive(Clone, Debug, PartialEq)]
892pub struct MlmeSignalReportRequest {
893    pub ind: fidl_fuchsia_wlan_internal__common::SignalReportIndication,
894}
895
896impl fidl::Persistable for MlmeSignalReportRequest {}
897
898#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
899pub struct MlmeStartCaptureFramesRequest {
900    pub req: StartCaptureFramesRequest,
901}
902
903impl fidl::Persistable for MlmeStartCaptureFramesRequest {}
904
905#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
906pub struct MlmeStartCaptureFramesResponse {
907    pub resp: StartCaptureFramesResponse,
908}
909
910impl fidl::Persistable for MlmeStartCaptureFramesResponse {}
911
912#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
913pub struct MlmeStartConfRequest {
914    pub resp: StartConfirm,
915}
916
917impl fidl::Persistable for MlmeStartConfRequest {}
918
919#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
920pub struct MlmeStartReqRequest {
921    pub req: StartRequest,
922}
923
924impl fidl::Persistable for MlmeStartReqRequest {}
925
926#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
927pub struct MlmeStartScanRequest {
928    pub req: ScanRequest,
929}
930
931impl fidl::Persistable for MlmeStartScanRequest {}
932
933#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
934pub struct MlmeStopConfRequest {
935    pub resp: StopConfirm,
936}
937
938impl fidl::Persistable for MlmeStopConfRequest {}
939
940#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
941pub struct MlmeStopReqRequest {
942    pub req: StopRequest,
943}
944
945impl fidl::Persistable for MlmeStopReqRequest {}
946
947/// Non-IEEE custom structure to inform a SoftMAC device about the association negotiation outcome.
948#[derive(Clone, Debug, PartialEq)]
949pub struct NegotiatedCapabilities {
950    pub channel: fidl_fuchsia_wlan_ieee80211__common::WlanChannel,
951    pub capability_info: u16,
952    pub rates: Vec<u8>,
953    pub wmm_param: Option<Box<WmmParameter>>,
954    pub ht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>>,
955    pub vht_cap: Option<Box<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>>,
956}
957
958impl fidl::Persistable for NegotiatedCapabilities {}
959
960#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
961pub struct PmkInfo {
962    pub pmk: Vec<u8>,
963    pub pmkid: Vec<u8>,
964}
965
966impl fidl::Persistable for PmkInfo {}
967
968#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
969#[repr(C)]
970pub struct ReconnectRequest {
971    pub peer_sta_address: [u8; 6],
972}
973
974impl fidl::Persistable for ReconnectRequest {}
975
976#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
977pub struct ResetRequest {
978    pub sta_address: [u8; 6],
979    pub set_default_mib: bool,
980}
981
982impl fidl::Persistable for ResetRequest {}
983
984/// Result of an SME-initiated roam attempt.
985#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
986pub struct RoamConfirm {
987    pub selected_bssid: [u8; 6],
988    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
989    /// Whether the original BSS association has been maintained through the roam attempt.
990    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
991    /// success then this field must be set to false; a roam failure typically incurs disassociation
992    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
993    pub original_association_maintained: bool,
994    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
995    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
996    /// This allows higher layers to decide how to clean up connection state after a failed roam
997    /// attempt.
998    pub target_bss_authenticated: bool,
999    pub association_id: u16,
1000    pub association_ies: Vec<u8>,
1001}
1002
1003impl fidl::Persistable for RoamConfirm {}
1004
1005#[derive(Clone, Debug, PartialEq)]
1006pub struct RoamRequest {
1007    pub selected_bss: fidl_fuchsia_wlan_common__common::BssDescription,
1008}
1009
1010impl fidl::Persistable for RoamRequest {}
1011
1012/// Result of a fullmac-initiated roam attempt.
1013#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1014pub struct RoamResultIndication {
1015    pub selected_bssid: [u8; 6],
1016    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
1017    /// Whether the original BSS association has been maintained through the roam attempt.
1018    /// A successful roam always incurs disassociation from the original BSS, so if `status_code` is
1019    /// success then this field must be set to false; a roam failure typically incurs disassociation
1020    /// from the original BSS, but may not in some cases (e.g. in some Fast BSS Transition scenarios).
1021    pub original_association_maintained: bool,
1022    /// Whether the client is authenticated with the target BSS. If `status_code` is success, then
1023    /// this field must be set to true; if the roam attempt failed, this field may be true or false.
1024    /// This allows higher layers to decide how to clean up connection state after a failed roam
1025    /// attempt.
1026    pub target_bss_authenticated: bool,
1027    pub association_id: u16,
1028    pub association_ies: Vec<u8>,
1029}
1030
1031impl fidl::Persistable for RoamResultIndication {}
1032
1033/// In-progress fullmac-initiated roam attempt details.
1034#[derive(Clone, Debug, PartialEq)]
1035pub struct RoamStartIndication {
1036    pub selected_bssid: [u8; 6],
1037    pub selected_bss: fidl_fuchsia_wlan_common__common::BssDescription,
1038    /// Whether the original BSS association has been maintained at the start of a roam attempt.
1039    /// 802.11 dictates that a STA can only be associated with a single BSS, so a roam attempt
1040    /// typically incurs disassociation at the start of the roam attempt. However, 802.11 also
1041    /// provides a mechanism (i.e. Fast BSS Transition) that allows a device to maintain
1042    /// association with the original BSS while establishing authentication with the target BSS, in
1043    /// order to avoid losing the original association if authentication with the target BSS fails.
1044    pub original_association_maintained: bool,
1045}
1046
1047impl fidl::Persistable for RoamStartIndication {}
1048
1049#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1050pub struct SaeFrame {
1051    pub peer_sta_address: [u8; 6],
1052    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
1053    pub seq_num: u16,
1054    pub sae_fields: Vec<u8>,
1055}
1056
1057impl fidl::Persistable for SaeFrame {}
1058
1059#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1060#[repr(C)]
1061pub struct SaeHandshakeIndication {
1062    pub peer_sta_address: [u8; 6],
1063}
1064
1065impl fidl::Persistable for SaeHandshakeIndication {}
1066
1067#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1068pub struct SaeHandshakeResponse {
1069    pub peer_sta_address: [u8; 6],
1070    pub status_code: fidl_fuchsia_wlan_ieee80211__common::StatusCode,
1071}
1072
1073impl fidl::Persistable for SaeHandshakeResponse {}
1074
1075#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1076pub struct ScanEnd {
1077    pub txn_id: u64,
1078    pub code: ScanResultCode,
1079}
1080
1081impl fidl::Persistable for ScanEnd {}
1082
1083#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1084pub struct ScanRequest {
1085    pub txn_id: u64,
1086    pub scan_type: ScanTypes,
1087    /// List of channels to scan on. An empty list of channels will cause a
1088    /// scan request to immediately return a ScanEnd with code INVALID_ARGS.
1089    ///
1090    /// Invalid channel numbers will be silently ignored. The validity of a channel
1091    /// number depends on the current regulatory region, and MLME does not control
1092    /// or know this setting.
1093    pub channel_list: Vec<u8>,
1094    /// List of SSIDs to scan for. An empty list of ssids is the same as specifying
1095    /// a list containing only the wildcard SSID.
1096    ///
1097    /// There is no limit on the number of SSIDs specified. A large number of
1098    /// SSIDs may result in extended scan times because of hardware limitations on
1099    /// the number of SSIDs permitted per scan request and the technical limitation
1100    /// in IEEE 802.11-2016 that limits the number of SSIDs in a single Probe Request
1101    /// frame to ieee80211.SSID_LIST_MAX SSIDs.
1102    pub ssid_list: Vec<Vec<u8>>,
1103    pub probe_delay: u32,
1104    pub min_channel_time: u32,
1105    pub max_channel_time: u32,
1106}
1107
1108impl fidl::Persistable for ScanRequest {}
1109
1110#[derive(Clone, Debug, PartialEq)]
1111pub struct ScanResult {
1112    pub txn_id: u64,
1113    pub timestamp_nanos: i64,
1114    pub bss: fidl_fuchsia_wlan_common__common::BssDescription,
1115}
1116
1117impl fidl::Persistable for ScanResult {}
1118
1119#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1120pub struct SetControlledPortRequest {
1121    pub peer_sta_address: [u8; 6],
1122    pub state: ControlledPortState,
1123}
1124
1125impl fidl::Persistable for SetControlledPortRequest {}
1126
1127#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1128pub struct SetKeyDescriptor {
1129    pub key: Vec<u8>,
1130    pub key_id: u16,
1131    pub key_type: KeyType,
1132    pub address: [u8; 6],
1133    pub rsc: u64,
1134    pub cipher_suite_oui: [u8; 3],
1135    pub cipher_suite_type: fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
1136}
1137
1138impl fidl::Persistable for SetKeyDescriptor {}
1139
1140#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1141#[repr(C)]
1142pub struct SetKeyResult {
1143    pub key_id: u16,
1144    pub status: i32,
1145}
1146
1147impl fidl::Persistable for SetKeyResult {}
1148
1149#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1150pub struct SetKeysConfirm {
1151    pub results: Vec<SetKeyResult>,
1152}
1153
1154impl fidl::Persistable for SetKeysConfirm {}
1155
1156#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1157pub struct SetKeysRequest {
1158    pub keylist: Vec<SetKeyDescriptor>,
1159}
1160
1161impl fidl::Persistable for SetKeysRequest {}
1162
1163#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1164pub struct StartCaptureFramesRequest {
1165    pub mgmt_frame_flags: MgmtFrameCaptureFlags,
1166}
1167
1168impl fidl::Persistable for StartCaptureFramesRequest {}
1169
1170#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1171pub struct StartCaptureFramesResponse {
1172    pub status: i32,
1173    pub supported_mgmt_frames: MgmtFrameCaptureFlags,
1174}
1175
1176impl fidl::Persistable for StartCaptureFramesResponse {}
1177
1178#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1179pub struct StartConfirm {
1180    pub result_code: StartResultCode,
1181}
1182
1183impl fidl::Persistable for StartConfirm {}
1184
1185#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1186pub struct StartRequest {
1187    pub ssid: Vec<u8>,
1188    pub bss_type: fidl_fuchsia_wlan_common__common::BssType,
1189    pub beacon_period: u16,
1190    pub dtim_period: u8,
1191    pub channel: u8,
1192    pub capability_info: u16,
1193    pub rates: Vec<u8>,
1194    pub country: Country,
1195    pub mesh_id: Vec<u8>,
1196    pub rsne: Option<Vec<u8>>,
1197    pub phy: fidl_fuchsia_wlan_common__common::WlanPhyType,
1198    pub channel_bandwidth: fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth,
1199}
1200
1201impl fidl::Persistable for StartRequest {}
1202
1203#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1204pub struct StopConfirm {
1205    pub result_code: StopResultCode,
1206}
1207
1208impl fidl::Persistable for StopConfirm {}
1209
1210#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1211pub struct StopRequest {
1212    pub ssid: Vec<u8>,
1213}
1214
1215impl fidl::Persistable for StopRequest {}
1216
1217#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1218#[repr(C)]
1219pub struct WmmParameter {
1220    pub bytes: [u8; 18],
1221}
1222
1223impl fidl::Persistable for WmmParameter {}
1224
1225#[derive(Clone, Debug, PartialEq)]
1226pub enum GetIfaceHistogramStatsResponse {
1227    Stats(fidl_fuchsia_wlan_stats__common::IfaceHistogramStats),
1228    ErrorStatus(i32),
1229}
1230
1231impl GetIfaceHistogramStatsResponse {
1232    #[inline]
1233    pub fn ordinal(&self) -> u64 {
1234        match *self {
1235            Self::Stats(_) => 1,
1236            Self::ErrorStatus(_) => 2,
1237        }
1238    }
1239}
1240
1241impl fidl::Persistable for GetIfaceHistogramStatsResponse {}
1242
1243#[derive(Clone, Debug, PartialEq)]
1244pub enum GetIfaceStatsResponse {
1245    Stats(fidl_fuchsia_wlan_stats__common::IfaceStats),
1246    ErrorStatus(i32),
1247}
1248
1249impl GetIfaceStatsResponse {
1250    #[inline]
1251    pub fn ordinal(&self) -> u64 {
1252        match *self {
1253            Self::Stats(_) => 1,
1254            Self::ErrorStatus(_) => 2,
1255        }
1256    }
1257}
1258
1259impl fidl::Persistable for GetIfaceStatsResponse {}
1260
1261pub mod connector_ordinals {
1262    pub const CONNECT: u64 = 0x42131859717af962;
1263}
1264
1265pub mod mlme_ordinals {
1266    pub const START_SCAN: u64 = 0x342cc5ec6a957479;
1267    pub const ON_SCAN_RESULT: u64 = 0x681af7466a75074d;
1268    pub const ON_SCAN_END: u64 = 0x7f2702d253e7ca59;
1269    pub const CONNECT_REQ: u64 = 0x31153dc85f8f64c;
1270    pub const CONNECT_CONF: u64 = 0x77b27623279b981e;
1271    pub const RECONNECT_REQ: u64 = 0x74e0f1bd758b6b78;
1272    pub const ROAM_REQ: u64 = 0x3ba163eadf7dba45;
1273    pub const ROAM_CONF: u64 = 0x3f608034faa054bc;
1274    pub const ROAM_START_IND: u64 = 0x270a1ec78672d094;
1275    pub const ROAM_RESULT_IND: u64 = 0x26d074364fc84865;
1276    pub const AUTHENTICATE_IND: u64 = 0x460f49ae891adbe9;
1277    pub const AUTHENTICATE_RESP: u64 = 0x26108aade2fdd2f4;
1278    pub const DEAUTHENTICATE_REQ: u64 = 0x228983b200de5d12;
1279    pub const DEAUTHENTICATE_CONF: u64 = 0x3b44debc21b88c8c;
1280    pub const DEAUTHENTICATE_IND: u64 = 0x7ee0889b326da1d7;
1281    pub const ASSOCIATE_IND: u64 = 0x6a86f20e3063dd63;
1282    pub const ASSOCIATE_RESP: u64 = 0x70244dbd652ed6d9;
1283    pub const DISASSOCIATE_REQ: u64 = 0x5765807f1387d764;
1284    pub const DISASSOCIATE_CONF: u64 = 0x61345fbce732a28d;
1285    pub const DISASSOCIATE_IND: u64 = 0x77ac0ebf387c1f35;
1286    pub const RESET_REQ: u64 = 0x780b98c58a286b9f;
1287    pub const START_REQ: u64 = 0x5d95885f8053654;
1288    pub const START_CONF: u64 = 0x15ea6cdf3b8382b3;
1289    pub const STOP_REQ: u64 = 0x27b9a2ab04a2c79f;
1290    pub const STOP_CONF: u64 = 0x50b426ef4a84a2df;
1291    pub const SET_KEYS_REQ: u64 = 0x6b30a07fd3a11a79;
1292    pub const SET_KEYS_CONF: u64 = 0x5bafb3a8d4039380;
1293    pub const DELETE_KEYS_REQ: u64 = 0x1e3524d20d190c8f;
1294    pub const EAPOL_REQ: u64 = 0xc3c096924704d4;
1295    pub const EAPOL_CONF: u64 = 0x6ffa21f4ee73ce64;
1296    pub const SIGNAL_REPORT: u64 = 0x48f32a876aa53d8f;
1297    pub const EAPOL_IND: u64 = 0x7038dca46a3142fc;
1298    pub const SET_CONTROLLED_PORT: u64 = 0x4e47065668890c8d;
1299    pub const QUERY_DEVICE_INFO: u64 = 0x6ee3e7f63f2b7bc0;
1300    pub const QUERY_TELEMETRY_SUPPORT: u64 = 0x1598879b70332c99;
1301    pub const GET_IFACE_STATS: u64 = 0xede1a8342d1b211;
1302    pub const GET_IFACE_HISTOGRAM_STATS: u64 = 0x1979c9d3449f8675;
1303    pub const GET_SIGNAL_REPORT: u64 = 0x7e47e7ebe92acec9;
1304    pub const LIST_MINSTREL_PEERS: u64 = 0x4ac5d1e66fe1ffd5;
1305    pub const GET_MINSTREL_STATS: u64 = 0x2f688b1245323f4b;
1306    pub const START_CAPTURE_FRAMES: u64 = 0x23b369ed5749ee69;
1307    pub const STOP_CAPTURE_FRAMES: u64 = 0x2f1aebbc68bf7c54;
1308    pub const RELAY_CAPTURED_FRAME: u64 = 0x6f00a6f3cff9b1f5;
1309    pub const ON_CHANNEL_SWITCHED: u64 = 0x581750594e4c0c1;
1310    pub const ON_PMK_AVAILABLE: u64 = 0x1314fc2c79643f90;
1311    pub const ON_SAE_HANDSHAKE_IND: u64 = 0x6308b10e18986d7e;
1312    pub const SAE_HANDSHAKE_RESP: u64 = 0x28477bd2f7a5ab0c;
1313    pub const SAE_FRAME_TX: u64 = 0x7700c0d536733d8c;
1314    pub const ON_SAE_FRAME_RX: u64 = 0x4ebf51c86ef5f3cd;
1315    pub const WMM_STATUS_REQ: u64 = 0xef4851f6088fede;
1316    pub const ON_WMM_STATUS_RESP: u64 = 0x53f056b432e7b5cb;
1317    pub const FINALIZE_ASSOCIATION_REQ: u64 = 0x7aea59787cfd385a;
1318    pub const SET_MAC_ADDRESS: u64 = 0x476999f9bb27afe1;
1319}
1320
1321mod internal {
1322    use super::*;
1323    unsafe impl fidl::encoding::TypeMarker for MgmtFrameCaptureFlags {
1324        type Owned = Self;
1325
1326        #[inline(always)]
1327        fn inline_align(_context: fidl::encoding::Context) -> usize {
1328            4
1329        }
1330
1331        #[inline(always)]
1332        fn inline_size(_context: fidl::encoding::Context) -> usize {
1333            4
1334        }
1335    }
1336
1337    impl fidl::encoding::ValueTypeMarker for MgmtFrameCaptureFlags {
1338        type Borrowed<'a> = Self;
1339        #[inline(always)]
1340        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1341            *value
1342        }
1343    }
1344
1345    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1346        for MgmtFrameCaptureFlags
1347    {
1348        #[inline]
1349        unsafe fn encode(
1350            self,
1351            encoder: &mut fidl::encoding::Encoder<'_, D>,
1352            offset: usize,
1353            _depth: fidl::encoding::Depth,
1354        ) -> fidl::Result<()> {
1355            encoder.debug_check_bounds::<Self>(offset);
1356            if self.bits() & Self::all().bits() != self.bits() {
1357                return Err(fidl::Error::InvalidBitsValue);
1358            }
1359            encoder.write_num(self.bits(), offset);
1360            Ok(())
1361        }
1362    }
1363
1364    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MgmtFrameCaptureFlags {
1365        #[inline(always)]
1366        fn new_empty() -> Self {
1367            Self::empty()
1368        }
1369
1370        #[inline]
1371        unsafe fn decode(
1372            &mut self,
1373            decoder: &mut fidl::encoding::Decoder<'_, D>,
1374            offset: usize,
1375            _depth: fidl::encoding::Depth,
1376        ) -> fidl::Result<()> {
1377            decoder.debug_check_bounds::<Self>(offset);
1378            let prim = decoder.read_num::<u32>(offset);
1379            *self = Self::from_bits(prim).ok_or(fidl::Error::InvalidBitsValue)?;
1380            Ok(())
1381        }
1382    }
1383    unsafe impl fidl::encoding::TypeMarker for AssociateResultCode {
1384        type Owned = Self;
1385
1386        #[inline(always)]
1387        fn inline_align(_context: fidl::encoding::Context) -> usize {
1388            std::mem::align_of::<u32>()
1389        }
1390
1391        #[inline(always)]
1392        fn inline_size(_context: fidl::encoding::Context) -> usize {
1393            std::mem::size_of::<u32>()
1394        }
1395
1396        #[inline(always)]
1397        fn encode_is_copy() -> bool {
1398            true
1399        }
1400
1401        #[inline(always)]
1402        fn decode_is_copy() -> bool {
1403            false
1404        }
1405    }
1406
1407    impl fidl::encoding::ValueTypeMarker for AssociateResultCode {
1408        type Borrowed<'a> = Self;
1409        #[inline(always)]
1410        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1411            *value
1412        }
1413    }
1414
1415    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1416        for AssociateResultCode
1417    {
1418        #[inline]
1419        unsafe fn encode(
1420            self,
1421            encoder: &mut fidl::encoding::Encoder<'_, D>,
1422            offset: usize,
1423            _depth: fidl::encoding::Depth,
1424        ) -> fidl::Result<()> {
1425            encoder.debug_check_bounds::<Self>(offset);
1426            encoder.write_num(self.into_primitive(), offset);
1427            Ok(())
1428        }
1429    }
1430
1431    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateResultCode {
1432        #[inline(always)]
1433        fn new_empty() -> Self {
1434            Self::Success
1435        }
1436
1437        #[inline]
1438        unsafe fn decode(
1439            &mut self,
1440            decoder: &mut fidl::encoding::Decoder<'_, D>,
1441            offset: usize,
1442            _depth: fidl::encoding::Depth,
1443        ) -> fidl::Result<()> {
1444            decoder.debug_check_bounds::<Self>(offset);
1445            let prim = decoder.read_num::<u32>(offset);
1446
1447            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1448            Ok(())
1449        }
1450    }
1451    unsafe impl fidl::encoding::TypeMarker for AuthenticateResultCode {
1452        type Owned = Self;
1453
1454        #[inline(always)]
1455        fn inline_align(_context: fidl::encoding::Context) -> usize {
1456            std::mem::align_of::<u32>()
1457        }
1458
1459        #[inline(always)]
1460        fn inline_size(_context: fidl::encoding::Context) -> usize {
1461            std::mem::size_of::<u32>()
1462        }
1463
1464        #[inline(always)]
1465        fn encode_is_copy() -> bool {
1466            true
1467        }
1468
1469        #[inline(always)]
1470        fn decode_is_copy() -> bool {
1471            false
1472        }
1473    }
1474
1475    impl fidl::encoding::ValueTypeMarker for AuthenticateResultCode {
1476        type Borrowed<'a> = Self;
1477        #[inline(always)]
1478        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1479            *value
1480        }
1481    }
1482
1483    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1484        for AuthenticateResultCode
1485    {
1486        #[inline]
1487        unsafe fn encode(
1488            self,
1489            encoder: &mut fidl::encoding::Encoder<'_, D>,
1490            offset: usize,
1491            _depth: fidl::encoding::Depth,
1492        ) -> fidl::Result<()> {
1493            encoder.debug_check_bounds::<Self>(offset);
1494            encoder.write_num(self.into_primitive(), offset);
1495            Ok(())
1496        }
1497    }
1498
1499    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1500        for AuthenticateResultCode
1501    {
1502        #[inline(always)]
1503        fn new_empty() -> Self {
1504            Self::Success
1505        }
1506
1507        #[inline]
1508        unsafe fn decode(
1509            &mut self,
1510            decoder: &mut fidl::encoding::Decoder<'_, D>,
1511            offset: usize,
1512            _depth: fidl::encoding::Depth,
1513        ) -> fidl::Result<()> {
1514            decoder.debug_check_bounds::<Self>(offset);
1515            let prim = decoder.read_num::<u32>(offset);
1516
1517            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1518            Ok(())
1519        }
1520    }
1521    unsafe impl fidl::encoding::TypeMarker for AuthenticationTypes {
1522        type Owned = Self;
1523
1524        #[inline(always)]
1525        fn inline_align(_context: fidl::encoding::Context) -> usize {
1526            std::mem::align_of::<u32>()
1527        }
1528
1529        #[inline(always)]
1530        fn inline_size(_context: fidl::encoding::Context) -> usize {
1531            std::mem::size_of::<u32>()
1532        }
1533
1534        #[inline(always)]
1535        fn encode_is_copy() -> bool {
1536            true
1537        }
1538
1539        #[inline(always)]
1540        fn decode_is_copy() -> bool {
1541            false
1542        }
1543    }
1544
1545    impl fidl::encoding::ValueTypeMarker for AuthenticationTypes {
1546        type Borrowed<'a> = Self;
1547        #[inline(always)]
1548        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1549            *value
1550        }
1551    }
1552
1553    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1554        for AuthenticationTypes
1555    {
1556        #[inline]
1557        unsafe fn encode(
1558            self,
1559            encoder: &mut fidl::encoding::Encoder<'_, D>,
1560            offset: usize,
1561            _depth: fidl::encoding::Depth,
1562        ) -> fidl::Result<()> {
1563            encoder.debug_check_bounds::<Self>(offset);
1564            encoder.write_num(self.into_primitive(), offset);
1565            Ok(())
1566        }
1567    }
1568
1569    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AuthenticationTypes {
1570        #[inline(always)]
1571        fn new_empty() -> Self {
1572            Self::OpenSystem
1573        }
1574
1575        #[inline]
1576        unsafe fn decode(
1577            &mut self,
1578            decoder: &mut fidl::encoding::Decoder<'_, D>,
1579            offset: usize,
1580            _depth: fidl::encoding::Depth,
1581        ) -> fidl::Result<()> {
1582            decoder.debug_check_bounds::<Self>(offset);
1583            let prim = decoder.read_num::<u32>(offset);
1584
1585            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1586            Ok(())
1587        }
1588    }
1589    unsafe impl fidl::encoding::TypeMarker for ControlledPortState {
1590        type Owned = Self;
1591
1592        #[inline(always)]
1593        fn inline_align(_context: fidl::encoding::Context) -> usize {
1594            std::mem::align_of::<u32>()
1595        }
1596
1597        #[inline(always)]
1598        fn inline_size(_context: fidl::encoding::Context) -> usize {
1599            std::mem::size_of::<u32>()
1600        }
1601
1602        #[inline(always)]
1603        fn encode_is_copy() -> bool {
1604            true
1605        }
1606
1607        #[inline(always)]
1608        fn decode_is_copy() -> bool {
1609            false
1610        }
1611    }
1612
1613    impl fidl::encoding::ValueTypeMarker for ControlledPortState {
1614        type Borrowed<'a> = Self;
1615        #[inline(always)]
1616        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1617            *value
1618        }
1619    }
1620
1621    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1622        for ControlledPortState
1623    {
1624        #[inline]
1625        unsafe fn encode(
1626            self,
1627            encoder: &mut fidl::encoding::Encoder<'_, D>,
1628            offset: usize,
1629            _depth: fidl::encoding::Depth,
1630        ) -> fidl::Result<()> {
1631            encoder.debug_check_bounds::<Self>(offset);
1632            encoder.write_num(self.into_primitive(), offset);
1633            Ok(())
1634        }
1635    }
1636
1637    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControlledPortState {
1638        #[inline(always)]
1639        fn new_empty() -> Self {
1640            Self::Closed
1641        }
1642
1643        #[inline]
1644        unsafe fn decode(
1645            &mut self,
1646            decoder: &mut fidl::encoding::Decoder<'_, D>,
1647            offset: usize,
1648            _depth: fidl::encoding::Depth,
1649        ) -> fidl::Result<()> {
1650            decoder.debug_check_bounds::<Self>(offset);
1651            let prim = decoder.read_num::<u32>(offset);
1652
1653            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1654            Ok(())
1655        }
1656    }
1657    unsafe impl fidl::encoding::TypeMarker for EapolResultCode {
1658        type Owned = Self;
1659
1660        #[inline(always)]
1661        fn inline_align(_context: fidl::encoding::Context) -> usize {
1662            std::mem::align_of::<u32>()
1663        }
1664
1665        #[inline(always)]
1666        fn inline_size(_context: fidl::encoding::Context) -> usize {
1667            std::mem::size_of::<u32>()
1668        }
1669
1670        #[inline(always)]
1671        fn encode_is_copy() -> bool {
1672            true
1673        }
1674
1675        #[inline(always)]
1676        fn decode_is_copy() -> bool {
1677            false
1678        }
1679    }
1680
1681    impl fidl::encoding::ValueTypeMarker for EapolResultCode {
1682        type Borrowed<'a> = Self;
1683        #[inline(always)]
1684        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1685            *value
1686        }
1687    }
1688
1689    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1690        for EapolResultCode
1691    {
1692        #[inline]
1693        unsafe fn encode(
1694            self,
1695            encoder: &mut fidl::encoding::Encoder<'_, D>,
1696            offset: usize,
1697            _depth: fidl::encoding::Depth,
1698        ) -> fidl::Result<()> {
1699            encoder.debug_check_bounds::<Self>(offset);
1700            encoder.write_num(self.into_primitive(), offset);
1701            Ok(())
1702        }
1703    }
1704
1705    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolResultCode {
1706        #[inline(always)]
1707        fn new_empty() -> Self {
1708            Self::Success
1709        }
1710
1711        #[inline]
1712        unsafe fn decode(
1713            &mut self,
1714            decoder: &mut fidl::encoding::Decoder<'_, D>,
1715            offset: usize,
1716            _depth: fidl::encoding::Depth,
1717        ) -> fidl::Result<()> {
1718            decoder.debug_check_bounds::<Self>(offset);
1719            let prim = decoder.read_num::<u32>(offset);
1720
1721            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1722            Ok(())
1723        }
1724    }
1725    unsafe impl fidl::encoding::TypeMarker for KeyType {
1726        type Owned = Self;
1727
1728        #[inline(always)]
1729        fn inline_align(_context: fidl::encoding::Context) -> usize {
1730            std::mem::align_of::<u32>()
1731        }
1732
1733        #[inline(always)]
1734        fn inline_size(_context: fidl::encoding::Context) -> usize {
1735            std::mem::size_of::<u32>()
1736        }
1737
1738        #[inline(always)]
1739        fn encode_is_copy() -> bool {
1740            true
1741        }
1742
1743        #[inline(always)]
1744        fn decode_is_copy() -> bool {
1745            false
1746        }
1747    }
1748
1749    impl fidl::encoding::ValueTypeMarker for KeyType {
1750        type Borrowed<'a> = Self;
1751        #[inline(always)]
1752        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1753            *value
1754        }
1755    }
1756
1757    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for KeyType {
1758        #[inline]
1759        unsafe fn encode(
1760            self,
1761            encoder: &mut fidl::encoding::Encoder<'_, D>,
1762            offset: usize,
1763            _depth: fidl::encoding::Depth,
1764        ) -> fidl::Result<()> {
1765            encoder.debug_check_bounds::<Self>(offset);
1766            encoder.write_num(self.into_primitive(), offset);
1767            Ok(())
1768        }
1769    }
1770
1771    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for KeyType {
1772        #[inline(always)]
1773        fn new_empty() -> Self {
1774            Self::Group
1775        }
1776
1777        #[inline]
1778        unsafe fn decode(
1779            &mut self,
1780            decoder: &mut fidl::encoding::Decoder<'_, D>,
1781            offset: usize,
1782            _depth: fidl::encoding::Depth,
1783        ) -> fidl::Result<()> {
1784            decoder.debug_check_bounds::<Self>(offset);
1785            let prim = decoder.read_num::<u32>(offset);
1786
1787            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1788            Ok(())
1789        }
1790    }
1791    unsafe impl fidl::encoding::TypeMarker for ScanResultCode {
1792        type Owned = Self;
1793
1794        #[inline(always)]
1795        fn inline_align(_context: fidl::encoding::Context) -> usize {
1796            std::mem::align_of::<u32>()
1797        }
1798
1799        #[inline(always)]
1800        fn inline_size(_context: fidl::encoding::Context) -> usize {
1801            std::mem::size_of::<u32>()
1802        }
1803
1804        #[inline(always)]
1805        fn encode_is_copy() -> bool {
1806            true
1807        }
1808
1809        #[inline(always)]
1810        fn decode_is_copy() -> bool {
1811            false
1812        }
1813    }
1814
1815    impl fidl::encoding::ValueTypeMarker for ScanResultCode {
1816        type Borrowed<'a> = Self;
1817        #[inline(always)]
1818        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1819            *value
1820        }
1821    }
1822
1823    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanResultCode {
1824        #[inline]
1825        unsafe fn encode(
1826            self,
1827            encoder: &mut fidl::encoding::Encoder<'_, D>,
1828            offset: usize,
1829            _depth: fidl::encoding::Depth,
1830        ) -> fidl::Result<()> {
1831            encoder.debug_check_bounds::<Self>(offset);
1832            encoder.write_num(self.into_primitive(), offset);
1833            Ok(())
1834        }
1835    }
1836
1837    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanResultCode {
1838        #[inline(always)]
1839        fn new_empty() -> Self {
1840            Self::Success
1841        }
1842
1843        #[inline]
1844        unsafe fn decode(
1845            &mut self,
1846            decoder: &mut fidl::encoding::Decoder<'_, D>,
1847            offset: usize,
1848            _depth: fidl::encoding::Depth,
1849        ) -> fidl::Result<()> {
1850            decoder.debug_check_bounds::<Self>(offset);
1851            let prim = decoder.read_num::<u32>(offset);
1852
1853            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1854            Ok(())
1855        }
1856    }
1857    unsafe impl fidl::encoding::TypeMarker for ScanTypes {
1858        type Owned = Self;
1859
1860        #[inline(always)]
1861        fn inline_align(_context: fidl::encoding::Context) -> usize {
1862            std::mem::align_of::<u32>()
1863        }
1864
1865        #[inline(always)]
1866        fn inline_size(_context: fidl::encoding::Context) -> usize {
1867            std::mem::size_of::<u32>()
1868        }
1869
1870        #[inline(always)]
1871        fn encode_is_copy() -> bool {
1872            true
1873        }
1874
1875        #[inline(always)]
1876        fn decode_is_copy() -> bool {
1877            false
1878        }
1879    }
1880
1881    impl fidl::encoding::ValueTypeMarker for ScanTypes {
1882        type Borrowed<'a> = Self;
1883        #[inline(always)]
1884        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1885            *value
1886        }
1887    }
1888
1889    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanTypes {
1890        #[inline]
1891        unsafe fn encode(
1892            self,
1893            encoder: &mut fidl::encoding::Encoder<'_, D>,
1894            offset: usize,
1895            _depth: fidl::encoding::Depth,
1896        ) -> fidl::Result<()> {
1897            encoder.debug_check_bounds::<Self>(offset);
1898            encoder.write_num(self.into_primitive(), offset);
1899            Ok(())
1900        }
1901    }
1902
1903    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanTypes {
1904        #[inline(always)]
1905        fn new_empty() -> Self {
1906            Self::Active
1907        }
1908
1909        #[inline]
1910        unsafe fn decode(
1911            &mut self,
1912            decoder: &mut fidl::encoding::Decoder<'_, D>,
1913            offset: usize,
1914            _depth: fidl::encoding::Depth,
1915        ) -> fidl::Result<()> {
1916            decoder.debug_check_bounds::<Self>(offset);
1917            let prim = decoder.read_num::<u32>(offset);
1918
1919            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1920            Ok(())
1921        }
1922    }
1923    unsafe impl fidl::encoding::TypeMarker for StartResultCode {
1924        type Owned = Self;
1925
1926        #[inline(always)]
1927        fn inline_align(_context: fidl::encoding::Context) -> usize {
1928            std::mem::align_of::<u32>()
1929        }
1930
1931        #[inline(always)]
1932        fn inline_size(_context: fidl::encoding::Context) -> usize {
1933            std::mem::size_of::<u32>()
1934        }
1935
1936        #[inline(always)]
1937        fn encode_is_copy() -> bool {
1938            true
1939        }
1940
1941        #[inline(always)]
1942        fn decode_is_copy() -> bool {
1943            false
1944        }
1945    }
1946
1947    impl fidl::encoding::ValueTypeMarker for StartResultCode {
1948        type Borrowed<'a> = Self;
1949        #[inline(always)]
1950        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1951            *value
1952        }
1953    }
1954
1955    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1956        for StartResultCode
1957    {
1958        #[inline]
1959        unsafe fn encode(
1960            self,
1961            encoder: &mut fidl::encoding::Encoder<'_, D>,
1962            offset: usize,
1963            _depth: fidl::encoding::Depth,
1964        ) -> fidl::Result<()> {
1965            encoder.debug_check_bounds::<Self>(offset);
1966            encoder.write_num(self.into_primitive(), offset);
1967            Ok(())
1968        }
1969    }
1970
1971    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartResultCode {
1972        #[inline(always)]
1973        fn new_empty() -> Self {
1974            Self::Success
1975        }
1976
1977        #[inline]
1978        unsafe fn decode(
1979            &mut self,
1980            decoder: &mut fidl::encoding::Decoder<'_, D>,
1981            offset: usize,
1982            _depth: fidl::encoding::Depth,
1983        ) -> fidl::Result<()> {
1984            decoder.debug_check_bounds::<Self>(offset);
1985            let prim = decoder.read_num::<u32>(offset);
1986
1987            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1988            Ok(())
1989        }
1990    }
1991    unsafe impl fidl::encoding::TypeMarker for StopResultCode {
1992        type Owned = Self;
1993
1994        #[inline(always)]
1995        fn inline_align(_context: fidl::encoding::Context) -> usize {
1996            std::mem::align_of::<u32>()
1997        }
1998
1999        #[inline(always)]
2000        fn inline_size(_context: fidl::encoding::Context) -> usize {
2001            std::mem::size_of::<u32>()
2002        }
2003
2004        #[inline(always)]
2005        fn encode_is_copy() -> bool {
2006            true
2007        }
2008
2009        #[inline(always)]
2010        fn decode_is_copy() -> bool {
2011            false
2012        }
2013    }
2014
2015    impl fidl::encoding::ValueTypeMarker for StopResultCode {
2016        type Borrowed<'a> = Self;
2017        #[inline(always)]
2018        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2019            *value
2020        }
2021    }
2022
2023    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for StopResultCode {
2024        #[inline]
2025        unsafe fn encode(
2026            self,
2027            encoder: &mut fidl::encoding::Encoder<'_, D>,
2028            offset: usize,
2029            _depth: fidl::encoding::Depth,
2030        ) -> fidl::Result<()> {
2031            encoder.debug_check_bounds::<Self>(offset);
2032            encoder.write_num(self.into_primitive(), offset);
2033            Ok(())
2034        }
2035    }
2036
2037    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopResultCode {
2038        #[inline(always)]
2039        fn new_empty() -> Self {
2040            Self::Success
2041        }
2042
2043        #[inline]
2044        unsafe fn decode(
2045            &mut self,
2046            decoder: &mut fidl::encoding::Decoder<'_, D>,
2047            offset: usize,
2048            _depth: fidl::encoding::Depth,
2049        ) -> fidl::Result<()> {
2050            decoder.debug_check_bounds::<Self>(offset);
2051            let prim = decoder.read_num::<u32>(offset);
2052
2053            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2054            Ok(())
2055        }
2056    }
2057
2058    impl fidl::encoding::ValueTypeMarker for AssociateIndication {
2059        type Borrowed<'a> = &'a Self;
2060        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2061            value
2062        }
2063    }
2064
2065    unsafe impl fidl::encoding::TypeMarker for AssociateIndication {
2066        type Owned = Self;
2067
2068        #[inline(always)]
2069        fn inline_align(_context: fidl::encoding::Context) -> usize {
2070            8
2071        }
2072
2073        #[inline(always)]
2074        fn inline_size(_context: fidl::encoding::Context) -> usize {
2075            64
2076        }
2077    }
2078
2079    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AssociateIndication, D>
2080        for &AssociateIndication
2081    {
2082        #[inline]
2083        unsafe fn encode(
2084            self,
2085            encoder: &mut fidl::encoding::Encoder<'_, D>,
2086            offset: usize,
2087            _depth: fidl::encoding::Depth,
2088        ) -> fidl::Result<()> {
2089            encoder.debug_check_bounds::<AssociateIndication>(offset);
2090            // Delegate to tuple encoding.
2091            fidl::encoding::Encode::<AssociateIndication, D>::encode(
2092                (
2093                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
2094                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
2095                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.listen_interval),
2096                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid),
2097                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
2098                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>> as fidl::encoding::ValueTypeMarker>::borrow(&self.rsne),
2099                ),
2100                encoder, offset, _depth
2101            )
2102        }
2103    }
2104    unsafe impl<
2105        D: fidl::encoding::ResourceDialect,
2106        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2107        T1: fidl::encoding::Encode<u16, D>,
2108        T2: fidl::encoding::Encode<u16, D>,
2109        T3: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>, D>,
2110        T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
2111        T5: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>, D>,
2112    > fidl::encoding::Encode<AssociateIndication, D> for (T0, T1, T2, T3, T4, T5)
2113    {
2114        #[inline]
2115        unsafe fn encode(
2116            self,
2117            encoder: &mut fidl::encoding::Encoder<'_, D>,
2118            offset: usize,
2119            depth: fidl::encoding::Depth,
2120        ) -> fidl::Result<()> {
2121            encoder.debug_check_bounds::<AssociateIndication>(offset);
2122            // Zero out padding regions. There's no need to apply masks
2123            // because the unmasked parts will be overwritten by fields.
2124            unsafe {
2125                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2126                (ptr as *mut u64).write_unaligned(0);
2127            }
2128            // Write the fields.
2129            self.0.encode(encoder, offset + 0, depth)?;
2130            self.1.encode(encoder, offset + 6, depth)?;
2131            self.2.encode(encoder, offset + 8, depth)?;
2132            self.3.encode(encoder, offset + 16, depth)?;
2133            self.4.encode(encoder, offset + 32, depth)?;
2134            self.5.encode(encoder, offset + 48, depth)?;
2135            Ok(())
2136        }
2137    }
2138
2139    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateIndication {
2140        #[inline(always)]
2141        fn new_empty() -> Self {
2142            Self {
2143                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2144                capability_info: fidl::new_empty!(u16, D),
2145                listen_interval: fidl::new_empty!(u16, D),
2146                ssid: fidl::new_empty!(fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>, D),
2147                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
2148                rsne: fidl::new_empty!(
2149                    fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
2150                    D
2151                ),
2152            }
2153        }
2154
2155        #[inline]
2156        unsafe fn decode(
2157            &mut self,
2158            decoder: &mut fidl::encoding::Decoder<'_, D>,
2159            offset: usize,
2160            _depth: fidl::encoding::Depth,
2161        ) -> fidl::Result<()> {
2162            decoder.debug_check_bounds::<Self>(offset);
2163            // Verify that padding bytes are zero.
2164            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2165            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2166            let mask = 0xffffffffffff0000u64;
2167            let maskedval = padval & mask;
2168            if maskedval != 0 {
2169                return Err(fidl::Error::NonZeroPadding {
2170                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2171                });
2172            }
2173            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2174            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 6, _depth)?;
2175            fidl::decode!(u16, D, &mut self.listen_interval, decoder, offset + 8, _depth)?;
2176            fidl::decode!(
2177                fidl::encoding::Optional<fidl::encoding::Vector<u8, 32>>,
2178                D,
2179                &mut self.ssid,
2180                decoder,
2181                offset + 16,
2182                _depth
2183            )?;
2184            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 32, _depth)?;
2185            fidl::decode!(
2186                fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
2187                D,
2188                &mut self.rsne,
2189                decoder,
2190                offset + 48,
2191                _depth
2192            )?;
2193            Ok(())
2194        }
2195    }
2196
2197    impl fidl::encoding::ValueTypeMarker for AssociateResponse {
2198        type Borrowed<'a> = &'a Self;
2199        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2200            value
2201        }
2202    }
2203
2204    unsafe impl fidl::encoding::TypeMarker for AssociateResponse {
2205        type Owned = Self;
2206
2207        #[inline(always)]
2208        fn inline_align(_context: fidl::encoding::Context) -> usize {
2209            8
2210        }
2211
2212        #[inline(always)]
2213        fn inline_size(_context: fidl::encoding::Context) -> usize {
2214            32
2215        }
2216    }
2217
2218    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AssociateResponse, D>
2219        for &AssociateResponse
2220    {
2221        #[inline]
2222        unsafe fn encode(
2223            self,
2224            encoder: &mut fidl::encoding::Encoder<'_, D>,
2225            offset: usize,
2226            _depth: fidl::encoding::Depth,
2227        ) -> fidl::Result<()> {
2228            encoder.debug_check_bounds::<AssociateResponse>(offset);
2229            // Delegate to tuple encoding.
2230            fidl::encoding::Encode::<AssociateResponse, D>::encode(
2231                (
2232                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2233                        &self.peer_sta_address,
2234                    ),
2235                    <AssociateResultCode as fidl::encoding::ValueTypeMarker>::borrow(
2236                        &self.result_code,
2237                    ),
2238                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
2239                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
2240                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(
2241                        &self.rates,
2242                    ),
2243                ),
2244                encoder,
2245                offset,
2246                _depth,
2247            )
2248        }
2249    }
2250    unsafe impl<
2251        D: fidl::encoding::ResourceDialect,
2252        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2253        T1: fidl::encoding::Encode<AssociateResultCode, D>,
2254        T2: fidl::encoding::Encode<u16, D>,
2255        T3: fidl::encoding::Encode<u16, D>,
2256        T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
2257    > fidl::encoding::Encode<AssociateResponse, D> for (T0, T1, T2, T3, T4)
2258    {
2259        #[inline]
2260        unsafe fn encode(
2261            self,
2262            encoder: &mut fidl::encoding::Encoder<'_, D>,
2263            offset: usize,
2264            depth: fidl::encoding::Depth,
2265        ) -> fidl::Result<()> {
2266            encoder.debug_check_bounds::<AssociateResponse>(offset);
2267            // Zero out padding regions. There's no need to apply masks
2268            // because the unmasked parts will be overwritten by fields.
2269            unsafe {
2270                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2271                (ptr as *mut u64).write_unaligned(0);
2272            }
2273            // Write the fields.
2274            self.0.encode(encoder, offset + 0, depth)?;
2275            self.1.encode(encoder, offset + 8, depth)?;
2276            self.2.encode(encoder, offset + 12, depth)?;
2277            self.3.encode(encoder, offset + 14, depth)?;
2278            self.4.encode(encoder, offset + 16, depth)?;
2279            Ok(())
2280        }
2281    }
2282
2283    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AssociateResponse {
2284        #[inline(always)]
2285        fn new_empty() -> Self {
2286            Self {
2287                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2288                result_code: fidl::new_empty!(AssociateResultCode, D),
2289                association_id: fidl::new_empty!(u16, D),
2290                capability_info: fidl::new_empty!(u16, D),
2291                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
2292            }
2293        }
2294
2295        #[inline]
2296        unsafe fn decode(
2297            &mut self,
2298            decoder: &mut fidl::encoding::Decoder<'_, D>,
2299            offset: usize,
2300            _depth: fidl::encoding::Depth,
2301        ) -> fidl::Result<()> {
2302            decoder.debug_check_bounds::<Self>(offset);
2303            // Verify that padding bytes are zero.
2304            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2305            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2306            let mask = 0xffff000000000000u64;
2307            let maskedval = padval & mask;
2308            if maskedval != 0 {
2309                return Err(fidl::Error::NonZeroPadding {
2310                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2311                });
2312            }
2313            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2314            fidl::decode!(
2315                AssociateResultCode,
2316                D,
2317                &mut self.result_code,
2318                decoder,
2319                offset + 8,
2320                _depth
2321            )?;
2322            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 12, _depth)?;
2323            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 14, _depth)?;
2324            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 16, _depth)?;
2325            Ok(())
2326        }
2327    }
2328
2329    impl fidl::encoding::ValueTypeMarker for AuthenticateIndication {
2330        type Borrowed<'a> = &'a Self;
2331        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2332            value
2333        }
2334    }
2335
2336    unsafe impl fidl::encoding::TypeMarker for AuthenticateIndication {
2337        type Owned = Self;
2338
2339        #[inline(always)]
2340        fn inline_align(_context: fidl::encoding::Context) -> usize {
2341            4
2342        }
2343
2344        #[inline(always)]
2345        fn inline_size(_context: fidl::encoding::Context) -> usize {
2346            12
2347        }
2348    }
2349
2350    unsafe impl<D: fidl::encoding::ResourceDialect>
2351        fidl::encoding::Encode<AuthenticateIndication, D> for &AuthenticateIndication
2352    {
2353        #[inline]
2354        unsafe fn encode(
2355            self,
2356            encoder: &mut fidl::encoding::Encoder<'_, D>,
2357            offset: usize,
2358            _depth: fidl::encoding::Depth,
2359        ) -> fidl::Result<()> {
2360            encoder.debug_check_bounds::<AuthenticateIndication>(offset);
2361            // Delegate to tuple encoding.
2362            fidl::encoding::Encode::<AuthenticateIndication, D>::encode(
2363                (
2364                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2365                        &self.peer_sta_address,
2366                    ),
2367                    <AuthenticationTypes as fidl::encoding::ValueTypeMarker>::borrow(
2368                        &self.auth_type,
2369                    ),
2370                ),
2371                encoder,
2372                offset,
2373                _depth,
2374            )
2375        }
2376    }
2377    unsafe impl<
2378        D: fidl::encoding::ResourceDialect,
2379        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2380        T1: fidl::encoding::Encode<AuthenticationTypes, D>,
2381    > fidl::encoding::Encode<AuthenticateIndication, D> for (T0, T1)
2382    {
2383        #[inline]
2384        unsafe fn encode(
2385            self,
2386            encoder: &mut fidl::encoding::Encoder<'_, D>,
2387            offset: usize,
2388            depth: fidl::encoding::Depth,
2389        ) -> fidl::Result<()> {
2390            encoder.debug_check_bounds::<AuthenticateIndication>(offset);
2391            // Zero out padding regions. There's no need to apply masks
2392            // because the unmasked parts will be overwritten by fields.
2393            unsafe {
2394                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
2395                (ptr as *mut u32).write_unaligned(0);
2396            }
2397            // Write the fields.
2398            self.0.encode(encoder, offset + 0, depth)?;
2399            self.1.encode(encoder, offset + 8, depth)?;
2400            Ok(())
2401        }
2402    }
2403
2404    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2405        for AuthenticateIndication
2406    {
2407        #[inline(always)]
2408        fn new_empty() -> Self {
2409            Self {
2410                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2411                auth_type: fidl::new_empty!(AuthenticationTypes, D),
2412            }
2413        }
2414
2415        #[inline]
2416        unsafe fn decode(
2417            &mut self,
2418            decoder: &mut fidl::encoding::Decoder<'_, D>,
2419            offset: usize,
2420            _depth: fidl::encoding::Depth,
2421        ) -> fidl::Result<()> {
2422            decoder.debug_check_bounds::<Self>(offset);
2423            // Verify that padding bytes are zero.
2424            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
2425            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2426            let mask = 0xffff0000u32;
2427            let maskedval = padval & mask;
2428            if maskedval != 0 {
2429                return Err(fidl::Error::NonZeroPadding {
2430                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
2431                });
2432            }
2433            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2434            fidl::decode!(
2435                AuthenticationTypes,
2436                D,
2437                &mut self.auth_type,
2438                decoder,
2439                offset + 8,
2440                _depth
2441            )?;
2442            Ok(())
2443        }
2444    }
2445
2446    impl fidl::encoding::ValueTypeMarker for AuthenticateResponse {
2447        type Borrowed<'a> = &'a Self;
2448        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2449            value
2450        }
2451    }
2452
2453    unsafe impl fidl::encoding::TypeMarker for AuthenticateResponse {
2454        type Owned = Self;
2455
2456        #[inline(always)]
2457        fn inline_align(_context: fidl::encoding::Context) -> usize {
2458            4
2459        }
2460
2461        #[inline(always)]
2462        fn inline_size(_context: fidl::encoding::Context) -> usize {
2463            12
2464        }
2465    }
2466
2467    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AuthenticateResponse, D>
2468        for &AuthenticateResponse
2469    {
2470        #[inline]
2471        unsafe fn encode(
2472            self,
2473            encoder: &mut fidl::encoding::Encoder<'_, D>,
2474            offset: usize,
2475            _depth: fidl::encoding::Depth,
2476        ) -> fidl::Result<()> {
2477            encoder.debug_check_bounds::<AuthenticateResponse>(offset);
2478            // Delegate to tuple encoding.
2479            fidl::encoding::Encode::<AuthenticateResponse, D>::encode(
2480                (
2481                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
2482                        &self.peer_sta_address,
2483                    ),
2484                    <AuthenticateResultCode as fidl::encoding::ValueTypeMarker>::borrow(
2485                        &self.result_code,
2486                    ),
2487                ),
2488                encoder,
2489                offset,
2490                _depth,
2491            )
2492        }
2493    }
2494    unsafe impl<
2495        D: fidl::encoding::ResourceDialect,
2496        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2497        T1: fidl::encoding::Encode<AuthenticateResultCode, D>,
2498    > fidl::encoding::Encode<AuthenticateResponse, D> for (T0, T1)
2499    {
2500        #[inline]
2501        unsafe fn encode(
2502            self,
2503            encoder: &mut fidl::encoding::Encoder<'_, D>,
2504            offset: usize,
2505            depth: fidl::encoding::Depth,
2506        ) -> fidl::Result<()> {
2507            encoder.debug_check_bounds::<AuthenticateResponse>(offset);
2508            // Zero out padding regions. There's no need to apply masks
2509            // because the unmasked parts will be overwritten by fields.
2510            unsafe {
2511                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
2512                (ptr as *mut u32).write_unaligned(0);
2513            }
2514            // Write the fields.
2515            self.0.encode(encoder, offset + 0, depth)?;
2516            self.1.encode(encoder, offset + 8, depth)?;
2517            Ok(())
2518        }
2519    }
2520
2521    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AuthenticateResponse {
2522        #[inline(always)]
2523        fn new_empty() -> Self {
2524            Self {
2525                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2526                result_code: fidl::new_empty!(AuthenticateResultCode, D),
2527            }
2528        }
2529
2530        #[inline]
2531        unsafe fn decode(
2532            &mut self,
2533            decoder: &mut fidl::encoding::Decoder<'_, D>,
2534            offset: usize,
2535            _depth: fidl::encoding::Depth,
2536        ) -> fidl::Result<()> {
2537            decoder.debug_check_bounds::<Self>(offset);
2538            // Verify that padding bytes are zero.
2539            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
2540            let padval = unsafe { (ptr as *const u32).read_unaligned() };
2541            let mask = 0xffff0000u32;
2542            let maskedval = padval & mask;
2543            if maskedval != 0 {
2544                return Err(fidl::Error::NonZeroPadding {
2545                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
2546                });
2547            }
2548            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2549            fidl::decode!(
2550                AuthenticateResultCode,
2551                D,
2552                &mut self.result_code,
2553                decoder,
2554                offset + 8,
2555                _depth
2556            )?;
2557            Ok(())
2558        }
2559    }
2560
2561    impl fidl::encoding::ValueTypeMarker for BandCapability {
2562        type Borrowed<'a> = &'a Self;
2563        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2564            value
2565        }
2566    }
2567
2568    unsafe impl fidl::encoding::TypeMarker for BandCapability {
2569        type Owned = Self;
2570
2571        #[inline(always)]
2572        fn inline_align(_context: fidl::encoding::Context) -> usize {
2573            8
2574        }
2575
2576        #[inline(always)]
2577        fn inline_size(_context: fidl::encoding::Context) -> usize {
2578            56
2579        }
2580    }
2581
2582    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandCapability, D>
2583        for &BandCapability
2584    {
2585        #[inline]
2586        unsafe fn encode(
2587            self,
2588            encoder: &mut fidl::encoding::Encoder<'_, D>,
2589            offset: usize,
2590            _depth: fidl::encoding::Depth,
2591        ) -> fidl::Result<()> {
2592            encoder.debug_check_bounds::<BandCapability>(offset);
2593            // Delegate to tuple encoding.
2594            fidl::encoding::Encode::<BandCapability, D>::encode(
2595                (
2596                    <fidl_fuchsia_wlan_ieee80211__common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow(&self.band),
2597                    <fidl::encoding::Vector<u8, 12> as fidl::encoding::ValueTypeMarker>::borrow(&self.basic_rates),
2598                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.ht_cap),
2599                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_cap),
2600                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.operating_channels),
2601                ),
2602                encoder, offset, _depth
2603            )
2604        }
2605    }
2606    unsafe impl<
2607        D: fidl::encoding::ResourceDialect,
2608        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::WlanBand, D>,
2609        T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 12>, D>,
2610        T2: fidl::encoding::Encode<
2611                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
2612                D,
2613            >,
2614        T3: fidl::encoding::Encode<
2615                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
2616                D,
2617            >,
2618        T4: fidl::encoding::Encode<fidl::encoding::Vector<u8, 256>, D>,
2619    > fidl::encoding::Encode<BandCapability, D> for (T0, T1, T2, T3, T4)
2620    {
2621        #[inline]
2622        unsafe fn encode(
2623            self,
2624            encoder: &mut fidl::encoding::Encoder<'_, D>,
2625            offset: usize,
2626            depth: fidl::encoding::Depth,
2627        ) -> fidl::Result<()> {
2628            encoder.debug_check_bounds::<BandCapability>(offset);
2629            // Zero out padding regions. There's no need to apply masks
2630            // because the unmasked parts will be overwritten by fields.
2631            unsafe {
2632                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2633                (ptr as *mut u64).write_unaligned(0);
2634            }
2635            // Write the fields.
2636            self.0.encode(encoder, offset + 0, depth)?;
2637            self.1.encode(encoder, offset + 8, depth)?;
2638            self.2.encode(encoder, offset + 24, depth)?;
2639            self.3.encode(encoder, offset + 32, depth)?;
2640            self.4.encode(encoder, offset + 40, depth)?;
2641            Ok(())
2642        }
2643    }
2644
2645    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandCapability {
2646        #[inline(always)]
2647        fn new_empty() -> Self {
2648            Self {
2649                band: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanBand, D),
2650                basic_rates: fidl::new_empty!(fidl::encoding::Vector<u8, 12>, D),
2651                ht_cap: fidl::new_empty!(
2652                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
2653                    D
2654                ),
2655                vht_cap: fidl::new_empty!(
2656                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
2657                    D
2658                ),
2659                operating_channels: fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D),
2660            }
2661        }
2662
2663        #[inline]
2664        unsafe fn decode(
2665            &mut self,
2666            decoder: &mut fidl::encoding::Decoder<'_, D>,
2667            offset: usize,
2668            _depth: fidl::encoding::Depth,
2669        ) -> fidl::Result<()> {
2670            decoder.debug_check_bounds::<Self>(offset);
2671            // Verify that padding bytes are zero.
2672            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2673            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2674            let mask = 0xffffffffffffff00u64;
2675            let maskedval = padval & mask;
2676            if maskedval != 0 {
2677                return Err(fidl::Error::NonZeroPadding {
2678                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2679                });
2680            }
2681            fidl::decode!(
2682                fidl_fuchsia_wlan_ieee80211__common::WlanBand,
2683                D,
2684                &mut self.band,
2685                decoder,
2686                offset + 0,
2687                _depth
2688            )?;
2689            fidl::decode!(fidl::encoding::Vector<u8, 12>, D, &mut self.basic_rates, decoder, offset + 8, _depth)?;
2690            fidl::decode!(
2691                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
2692                D,
2693                &mut self.ht_cap,
2694                decoder,
2695                offset + 24,
2696                _depth
2697            )?;
2698            fidl::decode!(
2699                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
2700                D,
2701                &mut self.vht_cap,
2702                decoder,
2703                offset + 32,
2704                _depth
2705            )?;
2706            fidl::decode!(fidl::encoding::Vector<u8, 256>, D, &mut self.operating_channels, decoder, offset + 40, _depth)?;
2707            Ok(())
2708        }
2709    }
2710
2711    impl fidl::encoding::ValueTypeMarker for CapturedFrameResult {
2712        type Borrowed<'a> = &'a Self;
2713        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2714            value
2715        }
2716    }
2717
2718    unsafe impl fidl::encoding::TypeMarker for CapturedFrameResult {
2719        type Owned = Self;
2720
2721        #[inline(always)]
2722        fn inline_align(_context: fidl::encoding::Context) -> usize {
2723            8
2724        }
2725
2726        #[inline(always)]
2727        fn inline_size(_context: fidl::encoding::Context) -> usize {
2728            16
2729        }
2730    }
2731
2732    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CapturedFrameResult, D>
2733        for &CapturedFrameResult
2734    {
2735        #[inline]
2736        unsafe fn encode(
2737            self,
2738            encoder: &mut fidl::encoding::Encoder<'_, D>,
2739            offset: usize,
2740            _depth: fidl::encoding::Depth,
2741        ) -> fidl::Result<()> {
2742            encoder.debug_check_bounds::<CapturedFrameResult>(offset);
2743            // Delegate to tuple encoding.
2744            fidl::encoding::Encode::<CapturedFrameResult, D>::encode(
2745                (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
2746                    &self.frame,
2747                ),),
2748                encoder,
2749                offset,
2750                _depth,
2751            )
2752        }
2753    }
2754    unsafe impl<
2755        D: fidl::encoding::ResourceDialect,
2756        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2757    > fidl::encoding::Encode<CapturedFrameResult, D> for (T0,)
2758    {
2759        #[inline]
2760        unsafe fn encode(
2761            self,
2762            encoder: &mut fidl::encoding::Encoder<'_, D>,
2763            offset: usize,
2764            depth: fidl::encoding::Depth,
2765        ) -> fidl::Result<()> {
2766            encoder.debug_check_bounds::<CapturedFrameResult>(offset);
2767            // Zero out padding regions. There's no need to apply masks
2768            // because the unmasked parts will be overwritten by fields.
2769            // Write the fields.
2770            self.0.encode(encoder, offset + 0, depth)?;
2771            Ok(())
2772        }
2773    }
2774
2775    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CapturedFrameResult {
2776        #[inline(always)]
2777        fn new_empty() -> Self {
2778            Self { frame: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
2779        }
2780
2781        #[inline]
2782        unsafe fn decode(
2783            &mut self,
2784            decoder: &mut fidl::encoding::Decoder<'_, D>,
2785            offset: usize,
2786            _depth: fidl::encoding::Depth,
2787        ) -> fidl::Result<()> {
2788            decoder.debug_check_bounds::<Self>(offset);
2789            // Verify that padding bytes are zero.
2790            fidl::decode!(
2791                fidl::encoding::UnboundedVector<u8>,
2792                D,
2793                &mut self.frame,
2794                decoder,
2795                offset + 0,
2796                _depth
2797            )?;
2798            Ok(())
2799        }
2800    }
2801
2802    impl fidl::encoding::ValueTypeMarker for ConnectConfirm {
2803        type Borrowed<'a> = &'a Self;
2804        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2805            value
2806        }
2807    }
2808
2809    unsafe impl fidl::encoding::TypeMarker for ConnectConfirm {
2810        type Owned = Self;
2811
2812        #[inline(always)]
2813        fn inline_align(_context: fidl::encoding::Context) -> usize {
2814            8
2815        }
2816
2817        #[inline(always)]
2818        fn inline_size(_context: fidl::encoding::Context) -> usize {
2819            32
2820        }
2821    }
2822
2823    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectConfirm, D>
2824        for &ConnectConfirm
2825    {
2826        #[inline]
2827        unsafe fn encode(
2828            self,
2829            encoder: &mut fidl::encoding::Encoder<'_, D>,
2830            offset: usize,
2831            _depth: fidl::encoding::Depth,
2832        ) -> fidl::Result<()> {
2833            encoder.debug_check_bounds::<ConnectConfirm>(offset);
2834            // Delegate to tuple encoding.
2835            fidl::encoding::Encode::<ConnectConfirm, D>::encode(
2836                (
2837                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
2838                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
2839                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
2840                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
2841                ),
2842                encoder, offset, _depth
2843            )
2844        }
2845    }
2846    unsafe impl<
2847        D: fidl::encoding::ResourceDialect,
2848        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2849        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
2850        T2: fidl::encoding::Encode<u16, D>,
2851        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2852    > fidl::encoding::Encode<ConnectConfirm, D> for (T0, T1, T2, T3)
2853    {
2854        #[inline]
2855        unsafe fn encode(
2856            self,
2857            encoder: &mut fidl::encoding::Encoder<'_, D>,
2858            offset: usize,
2859            depth: fidl::encoding::Depth,
2860        ) -> fidl::Result<()> {
2861            encoder.debug_check_bounds::<ConnectConfirm>(offset);
2862            // Zero out padding regions. There's no need to apply masks
2863            // because the unmasked parts will be overwritten by fields.
2864            unsafe {
2865                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2866                (ptr as *mut u64).write_unaligned(0);
2867            }
2868            // Write the fields.
2869            self.0.encode(encoder, offset + 0, depth)?;
2870            self.1.encode(encoder, offset + 6, depth)?;
2871            self.2.encode(encoder, offset + 8, depth)?;
2872            self.3.encode(encoder, offset + 16, depth)?;
2873            Ok(())
2874        }
2875    }
2876
2877    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectConfirm {
2878        #[inline(always)]
2879        fn new_empty() -> Self {
2880            Self {
2881                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2882                result_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
2883                association_id: fidl::new_empty!(u16, D),
2884                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
2885            }
2886        }
2887
2888        #[inline]
2889        unsafe fn decode(
2890            &mut self,
2891            decoder: &mut fidl::encoding::Decoder<'_, D>,
2892            offset: usize,
2893            _depth: fidl::encoding::Depth,
2894        ) -> fidl::Result<()> {
2895            decoder.debug_check_bounds::<Self>(offset);
2896            // Verify that padding bytes are zero.
2897            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2898            let padval = unsafe { (ptr as *const u64).read_unaligned() };
2899            let mask = 0xffffffffffff0000u64;
2900            let maskedval = padval & mask;
2901            if maskedval != 0 {
2902                return Err(fidl::Error::NonZeroPadding {
2903                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2904                });
2905            }
2906            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
2907            fidl::decode!(
2908                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
2909                D,
2910                &mut self.result_code,
2911                decoder,
2912                offset + 6,
2913                _depth
2914            )?;
2915            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 8, _depth)?;
2916            fidl::decode!(
2917                fidl::encoding::UnboundedVector<u8>,
2918                D,
2919                &mut self.association_ies,
2920                decoder,
2921                offset + 16,
2922                _depth
2923            )?;
2924            Ok(())
2925        }
2926    }
2927
2928    impl fidl::encoding::ValueTypeMarker for ConnectRequest {
2929        type Borrowed<'a> = &'a Self;
2930        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2931            value
2932        }
2933    }
2934
2935    unsafe impl fidl::encoding::TypeMarker for ConnectRequest {
2936        type Owned = Self;
2937
2938        #[inline(always)]
2939        fn inline_align(_context: fidl::encoding::Context) -> usize {
2940            8
2941        }
2942
2943        #[inline(always)]
2944        fn inline_size(_context: fidl::encoding::Context) -> usize {
2945            96
2946        }
2947    }
2948
2949    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectRequest, D>
2950        for &ConnectRequest
2951    {
2952        #[inline]
2953        unsafe fn encode(
2954            self,
2955            encoder: &mut fidl::encoding::Encoder<'_, D>,
2956            offset: usize,
2957            _depth: fidl::encoding::Depth,
2958        ) -> fidl::Result<()> {
2959            encoder.debug_check_bounds::<ConnectRequest>(offset);
2960            // Delegate to tuple encoding.
2961            fidl::encoding::Encode::<ConnectRequest, D>::encode(
2962                (
2963                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
2964                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.connect_failure_timeout),
2965                    <AuthenticationTypes as fidl::encoding::ValueTypeMarker>::borrow(&self.auth_type),
2966                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.sae_password),
2967                    <fidl::encoding::Boxed<SetKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.wep_key),
2968                    <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow(&self.security_ie),
2969                ),
2970                encoder, offset, _depth
2971            )
2972        }
2973    }
2974    unsafe impl<
2975        D: fidl::encoding::ResourceDialect,
2976        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
2977        T1: fidl::encoding::Encode<u32, D>,
2978        T2: fidl::encoding::Encode<AuthenticationTypes, D>,
2979        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2980        T4: fidl::encoding::Encode<fidl::encoding::Boxed<SetKeyDescriptor>, D>,
2981        T5: fidl::encoding::Encode<fidl::encoding::Vector<u8, 257>, D>,
2982    > fidl::encoding::Encode<ConnectRequest, D> for (T0, T1, T2, T3, T4, T5)
2983    {
2984        #[inline]
2985        unsafe fn encode(
2986            self,
2987            encoder: &mut fidl::encoding::Encoder<'_, D>,
2988            offset: usize,
2989            depth: fidl::encoding::Depth,
2990        ) -> fidl::Result<()> {
2991            encoder.debug_check_bounds::<ConnectRequest>(offset);
2992            // Zero out padding regions. There's no need to apply masks
2993            // because the unmasked parts will be overwritten by fields.
2994            // Write the fields.
2995            self.0.encode(encoder, offset + 0, depth)?;
2996            self.1.encode(encoder, offset + 48, depth)?;
2997            self.2.encode(encoder, offset + 52, depth)?;
2998            self.3.encode(encoder, offset + 56, depth)?;
2999            self.4.encode(encoder, offset + 72, depth)?;
3000            self.5.encode(encoder, offset + 80, depth)?;
3001            Ok(())
3002        }
3003    }
3004
3005    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectRequest {
3006        #[inline(always)]
3007        fn new_empty() -> Self {
3008            Self {
3009                selected_bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
3010                connect_failure_timeout: fidl::new_empty!(u32, D),
3011                auth_type: fidl::new_empty!(AuthenticationTypes, D),
3012                sae_password: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
3013                wep_key: fidl::new_empty!(fidl::encoding::Boxed<SetKeyDescriptor>, D),
3014                security_ie: fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D),
3015            }
3016        }
3017
3018        #[inline]
3019        unsafe fn decode(
3020            &mut self,
3021            decoder: &mut fidl::encoding::Decoder<'_, D>,
3022            offset: usize,
3023            _depth: fidl::encoding::Depth,
3024        ) -> fidl::Result<()> {
3025            decoder.debug_check_bounds::<Self>(offset);
3026            // Verify that padding bytes are zero.
3027            fidl::decode!(
3028                fidl_fuchsia_wlan_common__common::BssDescription,
3029                D,
3030                &mut self.selected_bss,
3031                decoder,
3032                offset + 0,
3033                _depth
3034            )?;
3035            fidl::decode!(u32, D, &mut self.connect_failure_timeout, decoder, offset + 48, _depth)?;
3036            fidl::decode!(
3037                AuthenticationTypes,
3038                D,
3039                &mut self.auth_type,
3040                decoder,
3041                offset + 52,
3042                _depth
3043            )?;
3044            fidl::decode!(
3045                fidl::encoding::UnboundedVector<u8>,
3046                D,
3047                &mut self.sae_password,
3048                decoder,
3049                offset + 56,
3050                _depth
3051            )?;
3052            fidl::decode!(
3053                fidl::encoding::Boxed<SetKeyDescriptor>,
3054                D,
3055                &mut self.wep_key,
3056                decoder,
3057                offset + 72,
3058                _depth
3059            )?;
3060            fidl::decode!(fidl::encoding::Vector<u8, 257>, D, &mut self.security_ie, decoder, offset + 80, _depth)?;
3061            Ok(())
3062        }
3063    }
3064
3065    impl fidl::encoding::ValueTypeMarker for Country {
3066        type Borrowed<'a> = &'a Self;
3067        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3068            value
3069        }
3070    }
3071
3072    unsafe impl fidl::encoding::TypeMarker for Country {
3073        type Owned = Self;
3074
3075        #[inline(always)]
3076        fn inline_align(_context: fidl::encoding::Context) -> usize {
3077            1
3078        }
3079
3080        #[inline(always)]
3081        fn inline_size(_context: fidl::encoding::Context) -> usize {
3082            3
3083        }
3084        #[inline(always)]
3085        fn encode_is_copy() -> bool {
3086            true
3087        }
3088
3089        #[inline(always)]
3090        fn decode_is_copy() -> bool {
3091            true
3092        }
3093    }
3094
3095    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Country, D> for &Country {
3096        #[inline]
3097        unsafe fn encode(
3098            self,
3099            encoder: &mut fidl::encoding::Encoder<'_, D>,
3100            offset: usize,
3101            _depth: fidl::encoding::Depth,
3102        ) -> fidl::Result<()> {
3103            encoder.debug_check_bounds::<Country>(offset);
3104            unsafe {
3105                // Copy the object into the buffer.
3106                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3107                (buf_ptr as *mut Country).write_unaligned((self as *const Country).read());
3108                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3109                // done second because the memcpy will write garbage to these bytes.
3110            }
3111            Ok(())
3112        }
3113    }
3114    unsafe impl<
3115        D: fidl::encoding::ResourceDialect,
3116        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 2>, D>,
3117        T1: fidl::encoding::Encode<u8, D>,
3118    > fidl::encoding::Encode<Country, D> for (T0, T1)
3119    {
3120        #[inline]
3121        unsafe fn encode(
3122            self,
3123            encoder: &mut fidl::encoding::Encoder<'_, D>,
3124            offset: usize,
3125            depth: fidl::encoding::Depth,
3126        ) -> fidl::Result<()> {
3127            encoder.debug_check_bounds::<Country>(offset);
3128            // Zero out padding regions. There's no need to apply masks
3129            // because the unmasked parts will be overwritten by fields.
3130            // Write the fields.
3131            self.0.encode(encoder, offset + 0, depth)?;
3132            self.1.encode(encoder, offset + 2, depth)?;
3133            Ok(())
3134        }
3135    }
3136
3137    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Country {
3138        #[inline(always)]
3139        fn new_empty() -> Self {
3140            Self {
3141                alpha2: fidl::new_empty!(fidl::encoding::Array<u8, 2>, D),
3142                suffix: fidl::new_empty!(u8, D),
3143            }
3144        }
3145
3146        #[inline]
3147        unsafe fn decode(
3148            &mut self,
3149            decoder: &mut fidl::encoding::Decoder<'_, D>,
3150            offset: usize,
3151            _depth: fidl::encoding::Depth,
3152        ) -> fidl::Result<()> {
3153            decoder.debug_check_bounds::<Self>(offset);
3154            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3155            // Verify that padding bytes are zero.
3156            // Copy from the buffer into the object.
3157            unsafe {
3158                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 3);
3159            }
3160            Ok(())
3161        }
3162    }
3163
3164    impl fidl::encoding::ValueTypeMarker for DeauthenticateConfirm {
3165        type Borrowed<'a> = &'a Self;
3166        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3167            value
3168        }
3169    }
3170
3171    unsafe impl fidl::encoding::TypeMarker for DeauthenticateConfirm {
3172        type Owned = Self;
3173
3174        #[inline(always)]
3175        fn inline_align(_context: fidl::encoding::Context) -> usize {
3176            1
3177        }
3178
3179        #[inline(always)]
3180        fn inline_size(_context: fidl::encoding::Context) -> usize {
3181            6
3182        }
3183        #[inline(always)]
3184        fn encode_is_copy() -> bool {
3185            true
3186        }
3187
3188        #[inline(always)]
3189        fn decode_is_copy() -> bool {
3190            true
3191        }
3192    }
3193
3194    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeauthenticateConfirm, D>
3195        for &DeauthenticateConfirm
3196    {
3197        #[inline]
3198        unsafe fn encode(
3199            self,
3200            encoder: &mut fidl::encoding::Encoder<'_, D>,
3201            offset: usize,
3202            _depth: fidl::encoding::Depth,
3203        ) -> fidl::Result<()> {
3204            encoder.debug_check_bounds::<DeauthenticateConfirm>(offset);
3205            unsafe {
3206                // Copy the object into the buffer.
3207                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3208                (buf_ptr as *mut DeauthenticateConfirm)
3209                    .write_unaligned((self as *const DeauthenticateConfirm).read());
3210                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3211                // done second because the memcpy will write garbage to these bytes.
3212            }
3213            Ok(())
3214        }
3215    }
3216    unsafe impl<
3217        D: fidl::encoding::ResourceDialect,
3218        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3219    > fidl::encoding::Encode<DeauthenticateConfirm, D> for (T0,)
3220    {
3221        #[inline]
3222        unsafe fn encode(
3223            self,
3224            encoder: &mut fidl::encoding::Encoder<'_, D>,
3225            offset: usize,
3226            depth: fidl::encoding::Depth,
3227        ) -> fidl::Result<()> {
3228            encoder.debug_check_bounds::<DeauthenticateConfirm>(offset);
3229            // Zero out padding regions. There's no need to apply masks
3230            // because the unmasked parts will be overwritten by fields.
3231            // Write the fields.
3232            self.0.encode(encoder, offset + 0, depth)?;
3233            Ok(())
3234        }
3235    }
3236
3237    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeauthenticateConfirm {
3238        #[inline(always)]
3239        fn new_empty() -> Self {
3240            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
3241        }
3242
3243        #[inline]
3244        unsafe fn decode(
3245            &mut self,
3246            decoder: &mut fidl::encoding::Decoder<'_, D>,
3247            offset: usize,
3248            _depth: fidl::encoding::Depth,
3249        ) -> fidl::Result<()> {
3250            decoder.debug_check_bounds::<Self>(offset);
3251            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3252            // Verify that padding bytes are zero.
3253            // Copy from the buffer into the object.
3254            unsafe {
3255                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
3256            }
3257            Ok(())
3258        }
3259    }
3260
3261    impl fidl::encoding::ValueTypeMarker for DeauthenticateIndication {
3262        type Borrowed<'a> = &'a Self;
3263        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3264            value
3265        }
3266    }
3267
3268    unsafe impl fidl::encoding::TypeMarker for DeauthenticateIndication {
3269        type Owned = Self;
3270
3271        #[inline(always)]
3272        fn inline_align(_context: fidl::encoding::Context) -> usize {
3273            2
3274        }
3275
3276        #[inline(always)]
3277        fn inline_size(_context: fidl::encoding::Context) -> usize {
3278            10
3279        }
3280    }
3281
3282    unsafe impl<D: fidl::encoding::ResourceDialect>
3283        fidl::encoding::Encode<DeauthenticateIndication, D> for &DeauthenticateIndication
3284    {
3285        #[inline]
3286        unsafe fn encode(
3287            self,
3288            encoder: &mut fidl::encoding::Encoder<'_, D>,
3289            offset: usize,
3290            _depth: fidl::encoding::Depth,
3291        ) -> fidl::Result<()> {
3292            encoder.debug_check_bounds::<DeauthenticateIndication>(offset);
3293            // Delegate to tuple encoding.
3294            fidl::encoding::Encode::<DeauthenticateIndication, D>::encode(
3295                (
3296                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3297                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3298                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.locally_initiated),
3299                ),
3300                encoder, offset, _depth
3301            )
3302        }
3303    }
3304    unsafe impl<
3305        D: fidl::encoding::ResourceDialect,
3306        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3307        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
3308        T2: fidl::encoding::Encode<bool, D>,
3309    > fidl::encoding::Encode<DeauthenticateIndication, D> for (T0, T1, T2)
3310    {
3311        #[inline]
3312        unsafe fn encode(
3313            self,
3314            encoder: &mut fidl::encoding::Encoder<'_, D>,
3315            offset: usize,
3316            depth: fidl::encoding::Depth,
3317        ) -> fidl::Result<()> {
3318            encoder.debug_check_bounds::<DeauthenticateIndication>(offset);
3319            // Zero out padding regions. There's no need to apply masks
3320            // because the unmasked parts will be overwritten by fields.
3321            unsafe {
3322                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3323                (ptr as *mut u16).write_unaligned(0);
3324            }
3325            // Write the fields.
3326            self.0.encode(encoder, offset + 0, depth)?;
3327            self.1.encode(encoder, offset + 6, depth)?;
3328            self.2.encode(encoder, offset + 8, depth)?;
3329            Ok(())
3330        }
3331    }
3332
3333    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3334        for DeauthenticateIndication
3335    {
3336        #[inline(always)]
3337        fn new_empty() -> Self {
3338            Self {
3339                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3340                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
3341                locally_initiated: fidl::new_empty!(bool, D),
3342            }
3343        }
3344
3345        #[inline]
3346        unsafe fn decode(
3347            &mut self,
3348            decoder: &mut fidl::encoding::Decoder<'_, D>,
3349            offset: usize,
3350            _depth: fidl::encoding::Depth,
3351        ) -> fidl::Result<()> {
3352            decoder.debug_check_bounds::<Self>(offset);
3353            // Verify that padding bytes are zero.
3354            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
3355            let padval = unsafe { (ptr as *const u16).read_unaligned() };
3356            let mask = 0xff00u16;
3357            let maskedval = padval & mask;
3358            if maskedval != 0 {
3359                return Err(fidl::Error::NonZeroPadding {
3360                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
3361                });
3362            }
3363            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
3364            fidl::decode!(
3365                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
3366                D,
3367                &mut self.reason_code,
3368                decoder,
3369                offset + 6,
3370                _depth
3371            )?;
3372            fidl::decode!(bool, D, &mut self.locally_initiated, decoder, offset + 8, _depth)?;
3373            Ok(())
3374        }
3375    }
3376
3377    impl fidl::encoding::ValueTypeMarker for DeauthenticateRequest {
3378        type Borrowed<'a> = &'a Self;
3379        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3380            value
3381        }
3382    }
3383
3384    unsafe impl fidl::encoding::TypeMarker for DeauthenticateRequest {
3385        type Owned = Self;
3386
3387        #[inline(always)]
3388        fn inline_align(_context: fidl::encoding::Context) -> usize {
3389            2
3390        }
3391
3392        #[inline(always)]
3393        fn inline_size(_context: fidl::encoding::Context) -> usize {
3394            8
3395        }
3396    }
3397
3398    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeauthenticateRequest, D>
3399        for &DeauthenticateRequest
3400    {
3401        #[inline]
3402        unsafe fn encode(
3403            self,
3404            encoder: &mut fidl::encoding::Encoder<'_, D>,
3405            offset: usize,
3406            _depth: fidl::encoding::Depth,
3407        ) -> fidl::Result<()> {
3408            encoder.debug_check_bounds::<DeauthenticateRequest>(offset);
3409            // Delegate to tuple encoding.
3410            fidl::encoding::Encode::<DeauthenticateRequest, D>::encode(
3411                (
3412                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3413                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3414                ),
3415                encoder, offset, _depth
3416            )
3417        }
3418    }
3419    unsafe impl<
3420        D: fidl::encoding::ResourceDialect,
3421        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3422        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
3423    > fidl::encoding::Encode<DeauthenticateRequest, D> for (T0, T1)
3424    {
3425        #[inline]
3426        unsafe fn encode(
3427            self,
3428            encoder: &mut fidl::encoding::Encoder<'_, D>,
3429            offset: usize,
3430            depth: fidl::encoding::Depth,
3431        ) -> fidl::Result<()> {
3432            encoder.debug_check_bounds::<DeauthenticateRequest>(offset);
3433            // Zero out padding regions. There's no need to apply masks
3434            // because the unmasked parts will be overwritten by fields.
3435            // Write the fields.
3436            self.0.encode(encoder, offset + 0, depth)?;
3437            self.1.encode(encoder, offset + 6, depth)?;
3438            Ok(())
3439        }
3440    }
3441
3442    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeauthenticateRequest {
3443        #[inline(always)]
3444        fn new_empty() -> Self {
3445            Self {
3446                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3447                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
3448            }
3449        }
3450
3451        #[inline]
3452        unsafe fn decode(
3453            &mut self,
3454            decoder: &mut fidl::encoding::Decoder<'_, D>,
3455            offset: usize,
3456            _depth: fidl::encoding::Depth,
3457        ) -> fidl::Result<()> {
3458            decoder.debug_check_bounds::<Self>(offset);
3459            // Verify that padding bytes are zero.
3460            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
3461            fidl::decode!(
3462                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
3463                D,
3464                &mut self.reason_code,
3465                decoder,
3466                offset + 6,
3467                _depth
3468            )?;
3469            Ok(())
3470        }
3471    }
3472
3473    impl fidl::encoding::ValueTypeMarker for DeleteKeyDescriptor {
3474        type Borrowed<'a> = &'a Self;
3475        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3476            value
3477        }
3478    }
3479
3480    unsafe impl fidl::encoding::TypeMarker for DeleteKeyDescriptor {
3481        type Owned = Self;
3482
3483        #[inline(always)]
3484        fn inline_align(_context: fidl::encoding::Context) -> usize {
3485            4
3486        }
3487
3488        #[inline(always)]
3489        fn inline_size(_context: fidl::encoding::Context) -> usize {
3490            16
3491        }
3492    }
3493
3494    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeleteKeyDescriptor, D>
3495        for &DeleteKeyDescriptor
3496    {
3497        #[inline]
3498        unsafe fn encode(
3499            self,
3500            encoder: &mut fidl::encoding::Encoder<'_, D>,
3501            offset: usize,
3502            _depth: fidl::encoding::Depth,
3503        ) -> fidl::Result<()> {
3504            encoder.debug_check_bounds::<DeleteKeyDescriptor>(offset);
3505            // Delegate to tuple encoding.
3506            fidl::encoding::Encode::<DeleteKeyDescriptor, D>::encode(
3507                (
3508                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.key_id),
3509                    <KeyType as fidl::encoding::ValueTypeMarker>::borrow(&self.key_type),
3510                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
3511                        &self.address,
3512                    ),
3513                ),
3514                encoder,
3515                offset,
3516                _depth,
3517            )
3518        }
3519    }
3520    unsafe impl<
3521        D: fidl::encoding::ResourceDialect,
3522        T0: fidl::encoding::Encode<u16, D>,
3523        T1: fidl::encoding::Encode<KeyType, D>,
3524        T2: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3525    > fidl::encoding::Encode<DeleteKeyDescriptor, D> for (T0, T1, T2)
3526    {
3527        #[inline]
3528        unsafe fn encode(
3529            self,
3530            encoder: &mut fidl::encoding::Encoder<'_, D>,
3531            offset: usize,
3532            depth: fidl::encoding::Depth,
3533        ) -> fidl::Result<()> {
3534            encoder.debug_check_bounds::<DeleteKeyDescriptor>(offset);
3535            // Zero out padding regions. There's no need to apply masks
3536            // because the unmasked parts will be overwritten by fields.
3537            unsafe {
3538                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3539                (ptr as *mut u32).write_unaligned(0);
3540            }
3541            unsafe {
3542                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(12);
3543                (ptr as *mut u32).write_unaligned(0);
3544            }
3545            // Write the fields.
3546            self.0.encode(encoder, offset + 0, depth)?;
3547            self.1.encode(encoder, offset + 4, depth)?;
3548            self.2.encode(encoder, offset + 8, depth)?;
3549            Ok(())
3550        }
3551    }
3552
3553    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeleteKeyDescriptor {
3554        #[inline(always)]
3555        fn new_empty() -> Self {
3556            Self {
3557                key_id: fidl::new_empty!(u16, D),
3558                key_type: fidl::new_empty!(KeyType, D),
3559                address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3560            }
3561        }
3562
3563        #[inline]
3564        unsafe fn decode(
3565            &mut self,
3566            decoder: &mut fidl::encoding::Decoder<'_, D>,
3567            offset: usize,
3568            _depth: fidl::encoding::Depth,
3569        ) -> fidl::Result<()> {
3570            decoder.debug_check_bounds::<Self>(offset);
3571            // Verify that padding bytes are zero.
3572            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
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 + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3579                });
3580            }
3581            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(12) };
3582            let padval = unsafe { (ptr as *const u32).read_unaligned() };
3583            let mask = 0xffff0000u32;
3584            let maskedval = padval & mask;
3585            if maskedval != 0 {
3586                return Err(fidl::Error::NonZeroPadding {
3587                    padding_start: offset + 12 + ((mask as u64).trailing_zeros() / 8) as usize,
3588                });
3589            }
3590            fidl::decode!(u16, D, &mut self.key_id, decoder, offset + 0, _depth)?;
3591            fidl::decode!(KeyType, D, &mut self.key_type, decoder, offset + 4, _depth)?;
3592            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.address, decoder, offset + 8, _depth)?;
3593            Ok(())
3594        }
3595    }
3596
3597    impl fidl::encoding::ValueTypeMarker for DeleteKeysRequest {
3598        type Borrowed<'a> = &'a Self;
3599        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3600            value
3601        }
3602    }
3603
3604    unsafe impl fidl::encoding::TypeMarker for DeleteKeysRequest {
3605        type Owned = Self;
3606
3607        #[inline(always)]
3608        fn inline_align(_context: fidl::encoding::Context) -> usize {
3609            8
3610        }
3611
3612        #[inline(always)]
3613        fn inline_size(_context: fidl::encoding::Context) -> usize {
3614            16
3615        }
3616    }
3617
3618    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeleteKeysRequest, D>
3619        for &DeleteKeysRequest
3620    {
3621        #[inline]
3622        unsafe fn encode(
3623            self,
3624            encoder: &mut fidl::encoding::Encoder<'_, D>,
3625            offset: usize,
3626            _depth: fidl::encoding::Depth,
3627        ) -> fidl::Result<()> {
3628            encoder.debug_check_bounds::<DeleteKeysRequest>(offset);
3629            // Delegate to tuple encoding.
3630            fidl::encoding::Encode::<DeleteKeysRequest, D>::encode(
3631                (
3632                    <fidl::encoding::UnboundedVector<DeleteKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.keylist),
3633                ),
3634                encoder, offset, _depth
3635            )
3636        }
3637    }
3638    unsafe impl<
3639        D: fidl::encoding::ResourceDialect,
3640        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<DeleteKeyDescriptor>, D>,
3641    > fidl::encoding::Encode<DeleteKeysRequest, D> for (T0,)
3642    {
3643        #[inline]
3644        unsafe fn encode(
3645            self,
3646            encoder: &mut fidl::encoding::Encoder<'_, D>,
3647            offset: usize,
3648            depth: fidl::encoding::Depth,
3649        ) -> fidl::Result<()> {
3650            encoder.debug_check_bounds::<DeleteKeysRequest>(offset);
3651            // Zero out padding regions. There's no need to apply masks
3652            // because the unmasked parts will be overwritten by fields.
3653            // Write the fields.
3654            self.0.encode(encoder, offset + 0, depth)?;
3655            Ok(())
3656        }
3657    }
3658
3659    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeleteKeysRequest {
3660        #[inline(always)]
3661        fn new_empty() -> Self {
3662            Self {
3663                keylist: fidl::new_empty!(fidl::encoding::UnboundedVector<DeleteKeyDescriptor>, D),
3664            }
3665        }
3666
3667        #[inline]
3668        unsafe fn decode(
3669            &mut self,
3670            decoder: &mut fidl::encoding::Decoder<'_, D>,
3671            offset: usize,
3672            _depth: fidl::encoding::Depth,
3673        ) -> fidl::Result<()> {
3674            decoder.debug_check_bounds::<Self>(offset);
3675            // Verify that padding bytes are zero.
3676            fidl::decode!(
3677                fidl::encoding::UnboundedVector<DeleteKeyDescriptor>,
3678                D,
3679                &mut self.keylist,
3680                decoder,
3681                offset + 0,
3682                _depth
3683            )?;
3684            Ok(())
3685        }
3686    }
3687
3688    impl fidl::encoding::ValueTypeMarker for DeviceInfo {
3689        type Borrowed<'a> = &'a Self;
3690        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3691            value
3692        }
3693    }
3694
3695    unsafe impl fidl::encoding::TypeMarker for DeviceInfo {
3696        type Owned = Self;
3697
3698        #[inline(always)]
3699        fn inline_align(_context: fidl::encoding::Context) -> usize {
3700            8
3701        }
3702
3703        #[inline(always)]
3704        fn inline_size(_context: fidl::encoding::Context) -> usize {
3705            40
3706        }
3707    }
3708
3709    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceInfo, D>
3710        for &DeviceInfo
3711    {
3712        #[inline]
3713        unsafe fn encode(
3714            self,
3715            encoder: &mut fidl::encoding::Encoder<'_, D>,
3716            offset: usize,
3717            _depth: fidl::encoding::Depth,
3718        ) -> fidl::Result<()> {
3719            encoder.debug_check_bounds::<DeviceInfo>(offset);
3720            // Delegate to tuple encoding.
3721            fidl::encoding::Encode::<DeviceInfo, D>::encode(
3722                (
3723                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.sta_addr),
3724                    <fidl_fuchsia_wlan_common__common::WlanMacRole as fidl::encoding::ValueTypeMarker>::borrow(&self.role),
3725                    <fidl::encoding::Vector<BandCapability, 16> as fidl::encoding::ValueTypeMarker>::borrow(&self.bands),
3726                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.softmac_hardware_capability),
3727                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.qos_capable),
3728                ),
3729                encoder, offset, _depth
3730            )
3731        }
3732    }
3733    unsafe impl<
3734        D: fidl::encoding::ResourceDialect,
3735        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3736        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::WlanMacRole, D>,
3737        T2: fidl::encoding::Encode<fidl::encoding::Vector<BandCapability, 16>, D>,
3738        T3: fidl::encoding::Encode<u32, D>,
3739        T4: fidl::encoding::Encode<bool, D>,
3740    > fidl::encoding::Encode<DeviceInfo, D> for (T0, T1, T2, T3, T4)
3741    {
3742        #[inline]
3743        unsafe fn encode(
3744            self,
3745            encoder: &mut fidl::encoding::Encoder<'_, D>,
3746            offset: usize,
3747            depth: fidl::encoding::Depth,
3748        ) -> fidl::Result<()> {
3749            encoder.debug_check_bounds::<DeviceInfo>(offset);
3750            // Zero out padding regions. There's no need to apply masks
3751            // because the unmasked parts will be overwritten by fields.
3752            unsafe {
3753                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3754                (ptr as *mut u64).write_unaligned(0);
3755            }
3756            unsafe {
3757                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
3758                (ptr as *mut u64).write_unaligned(0);
3759            }
3760            unsafe {
3761                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
3762                (ptr as *mut u64).write_unaligned(0);
3763            }
3764            // Write the fields.
3765            self.0.encode(encoder, offset + 0, depth)?;
3766            self.1.encode(encoder, offset + 8, depth)?;
3767            self.2.encode(encoder, offset + 16, depth)?;
3768            self.3.encode(encoder, offset + 32, depth)?;
3769            self.4.encode(encoder, offset + 36, depth)?;
3770            Ok(())
3771        }
3772    }
3773
3774    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceInfo {
3775        #[inline(always)]
3776        fn new_empty() -> Self {
3777            Self {
3778                sta_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
3779                role: fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanMacRole, D),
3780                bands: fidl::new_empty!(fidl::encoding::Vector<BandCapability, 16>, D),
3781                softmac_hardware_capability: fidl::new_empty!(u32, D),
3782                qos_capable: fidl::new_empty!(bool, D),
3783            }
3784        }
3785
3786        #[inline]
3787        unsafe fn decode(
3788            &mut self,
3789            decoder: &mut fidl::encoding::Decoder<'_, D>,
3790            offset: usize,
3791            _depth: fidl::encoding::Depth,
3792        ) -> fidl::Result<()> {
3793            decoder.debug_check_bounds::<Self>(offset);
3794            // Verify that padding bytes are zero.
3795            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3796            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3797            let mask = 0xffff000000000000u64;
3798            let maskedval = padval & mask;
3799            if maskedval != 0 {
3800                return Err(fidl::Error::NonZeroPadding {
3801                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3802                });
3803            }
3804            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
3805            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3806            let mask = 0xffffffff00000000u64;
3807            let maskedval = padval & mask;
3808            if maskedval != 0 {
3809                return Err(fidl::Error::NonZeroPadding {
3810                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
3811                });
3812            }
3813            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
3814            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3815            let mask = 0xffffff0000000000u64;
3816            let maskedval = padval & mask;
3817            if maskedval != 0 {
3818                return Err(fidl::Error::NonZeroPadding {
3819                    padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
3820                });
3821            }
3822            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.sta_addr, decoder, offset + 0, _depth)?;
3823            fidl::decode!(
3824                fidl_fuchsia_wlan_common__common::WlanMacRole,
3825                D,
3826                &mut self.role,
3827                decoder,
3828                offset + 8,
3829                _depth
3830            )?;
3831            fidl::decode!(fidl::encoding::Vector<BandCapability, 16>, D, &mut self.bands, decoder, offset + 16, _depth)?;
3832            fidl::decode!(
3833                u32,
3834                D,
3835                &mut self.softmac_hardware_capability,
3836                decoder,
3837                offset + 32,
3838                _depth
3839            )?;
3840            fidl::decode!(bool, D, &mut self.qos_capable, decoder, offset + 36, _depth)?;
3841            Ok(())
3842        }
3843    }
3844
3845    impl fidl::encoding::ValueTypeMarker for DisassociateConfirm {
3846        type Borrowed<'a> = &'a Self;
3847        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3848            value
3849        }
3850    }
3851
3852    unsafe impl fidl::encoding::TypeMarker for DisassociateConfirm {
3853        type Owned = Self;
3854
3855        #[inline(always)]
3856        fn inline_align(_context: fidl::encoding::Context) -> usize {
3857            4
3858        }
3859
3860        #[inline(always)]
3861        fn inline_size(_context: fidl::encoding::Context) -> usize {
3862            4
3863        }
3864        #[inline(always)]
3865        fn encode_is_copy() -> bool {
3866            true
3867        }
3868
3869        #[inline(always)]
3870        fn decode_is_copy() -> bool {
3871            true
3872        }
3873    }
3874
3875    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisassociateConfirm, D>
3876        for &DisassociateConfirm
3877    {
3878        #[inline]
3879        unsafe fn encode(
3880            self,
3881            encoder: &mut fidl::encoding::Encoder<'_, D>,
3882            offset: usize,
3883            _depth: fidl::encoding::Depth,
3884        ) -> fidl::Result<()> {
3885            encoder.debug_check_bounds::<DisassociateConfirm>(offset);
3886            unsafe {
3887                // Copy the object into the buffer.
3888                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3889                (buf_ptr as *mut DisassociateConfirm)
3890                    .write_unaligned((self as *const DisassociateConfirm).read());
3891                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3892                // done second because the memcpy will write garbage to these bytes.
3893            }
3894            Ok(())
3895        }
3896    }
3897    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
3898        fidl::encoding::Encode<DisassociateConfirm, D> for (T0,)
3899    {
3900        #[inline]
3901        unsafe fn encode(
3902            self,
3903            encoder: &mut fidl::encoding::Encoder<'_, D>,
3904            offset: usize,
3905            depth: fidl::encoding::Depth,
3906        ) -> fidl::Result<()> {
3907            encoder.debug_check_bounds::<DisassociateConfirm>(offset);
3908            // Zero out padding regions. There's no need to apply masks
3909            // because the unmasked parts will be overwritten by fields.
3910            // Write the fields.
3911            self.0.encode(encoder, offset + 0, depth)?;
3912            Ok(())
3913        }
3914    }
3915
3916    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisassociateConfirm {
3917        #[inline(always)]
3918        fn new_empty() -> Self {
3919            Self { status: fidl::new_empty!(i32, D) }
3920        }
3921
3922        #[inline]
3923        unsafe fn decode(
3924            &mut self,
3925            decoder: &mut fidl::encoding::Decoder<'_, D>,
3926            offset: usize,
3927            _depth: fidl::encoding::Depth,
3928        ) -> fidl::Result<()> {
3929            decoder.debug_check_bounds::<Self>(offset);
3930            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3931            // Verify that padding bytes are zero.
3932            // Copy from the buffer into the object.
3933            unsafe {
3934                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
3935            }
3936            Ok(())
3937        }
3938    }
3939
3940    impl fidl::encoding::ValueTypeMarker for DisassociateIndication {
3941        type Borrowed<'a> = &'a Self;
3942        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3943            value
3944        }
3945    }
3946
3947    unsafe impl fidl::encoding::TypeMarker for DisassociateIndication {
3948        type Owned = Self;
3949
3950        #[inline(always)]
3951        fn inline_align(_context: fidl::encoding::Context) -> usize {
3952            2
3953        }
3954
3955        #[inline(always)]
3956        fn inline_size(_context: fidl::encoding::Context) -> usize {
3957            10
3958        }
3959    }
3960
3961    unsafe impl<D: fidl::encoding::ResourceDialect>
3962        fidl::encoding::Encode<DisassociateIndication, D> for &DisassociateIndication
3963    {
3964        #[inline]
3965        unsafe fn encode(
3966            self,
3967            encoder: &mut fidl::encoding::Encoder<'_, D>,
3968            offset: usize,
3969            _depth: fidl::encoding::Depth,
3970        ) -> fidl::Result<()> {
3971            encoder.debug_check_bounds::<DisassociateIndication>(offset);
3972            // Delegate to tuple encoding.
3973            fidl::encoding::Encode::<DisassociateIndication, D>::encode(
3974                (
3975                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
3976                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
3977                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.locally_initiated),
3978                ),
3979                encoder, offset, _depth
3980            )
3981        }
3982    }
3983    unsafe impl<
3984        D: fidl::encoding::ResourceDialect,
3985        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
3986        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
3987        T2: fidl::encoding::Encode<bool, D>,
3988    > fidl::encoding::Encode<DisassociateIndication, D> for (T0, T1, T2)
3989    {
3990        #[inline]
3991        unsafe fn encode(
3992            self,
3993            encoder: &mut fidl::encoding::Encoder<'_, D>,
3994            offset: usize,
3995            depth: fidl::encoding::Depth,
3996        ) -> fidl::Result<()> {
3997            encoder.debug_check_bounds::<DisassociateIndication>(offset);
3998            // Zero out padding regions. There's no need to apply masks
3999            // because the unmasked parts will be overwritten by fields.
4000            unsafe {
4001                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4002                (ptr as *mut u16).write_unaligned(0);
4003            }
4004            // Write the fields.
4005            self.0.encode(encoder, offset + 0, depth)?;
4006            self.1.encode(encoder, offset + 6, depth)?;
4007            self.2.encode(encoder, offset + 8, depth)?;
4008            Ok(())
4009        }
4010    }
4011
4012    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4013        for DisassociateIndication
4014    {
4015        #[inline(always)]
4016        fn new_empty() -> Self {
4017            Self {
4018                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4019                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
4020                locally_initiated: fidl::new_empty!(bool, D),
4021            }
4022        }
4023
4024        #[inline]
4025        unsafe fn decode(
4026            &mut self,
4027            decoder: &mut fidl::encoding::Decoder<'_, D>,
4028            offset: usize,
4029            _depth: fidl::encoding::Depth,
4030        ) -> fidl::Result<()> {
4031            decoder.debug_check_bounds::<Self>(offset);
4032            // Verify that padding bytes are zero.
4033            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4034            let padval = unsafe { (ptr as *const u16).read_unaligned() };
4035            let mask = 0xff00u16;
4036            let maskedval = padval & mask;
4037            if maskedval != 0 {
4038                return Err(fidl::Error::NonZeroPadding {
4039                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4040                });
4041            }
4042            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
4043            fidl::decode!(
4044                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
4045                D,
4046                &mut self.reason_code,
4047                decoder,
4048                offset + 6,
4049                _depth
4050            )?;
4051            fidl::decode!(bool, D, &mut self.locally_initiated, decoder, offset + 8, _depth)?;
4052            Ok(())
4053        }
4054    }
4055
4056    impl fidl::encoding::ValueTypeMarker for DisassociateRequest {
4057        type Borrowed<'a> = &'a Self;
4058        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4059            value
4060        }
4061    }
4062
4063    unsafe impl fidl::encoding::TypeMarker for DisassociateRequest {
4064        type Owned = Self;
4065
4066        #[inline(always)]
4067        fn inline_align(_context: fidl::encoding::Context) -> usize {
4068            2
4069        }
4070
4071        #[inline(always)]
4072        fn inline_size(_context: fidl::encoding::Context) -> usize {
4073            8
4074        }
4075    }
4076
4077    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DisassociateRequest, D>
4078        for &DisassociateRequest
4079    {
4080        #[inline]
4081        unsafe fn encode(
4082            self,
4083            encoder: &mut fidl::encoding::Encoder<'_, D>,
4084            offset: usize,
4085            _depth: fidl::encoding::Depth,
4086        ) -> fidl::Result<()> {
4087            encoder.debug_check_bounds::<DisassociateRequest>(offset);
4088            // Delegate to tuple encoding.
4089            fidl::encoding::Encode::<DisassociateRequest, D>::encode(
4090                (
4091                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
4092                    <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow(&self.reason_code),
4093                ),
4094                encoder, offset, _depth
4095            )
4096        }
4097    }
4098    unsafe impl<
4099        D: fidl::encoding::ResourceDialect,
4100        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4101        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>,
4102    > fidl::encoding::Encode<DisassociateRequest, D> for (T0, T1)
4103    {
4104        #[inline]
4105        unsafe fn encode(
4106            self,
4107            encoder: &mut fidl::encoding::Encoder<'_, D>,
4108            offset: usize,
4109            depth: fidl::encoding::Depth,
4110        ) -> fidl::Result<()> {
4111            encoder.debug_check_bounds::<DisassociateRequest>(offset);
4112            // Zero out padding regions. There's no need to apply masks
4113            // because the unmasked parts will be overwritten by fields.
4114            // Write the fields.
4115            self.0.encode(encoder, offset + 0, depth)?;
4116            self.1.encode(encoder, offset + 6, depth)?;
4117            Ok(())
4118        }
4119    }
4120
4121    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DisassociateRequest {
4122        #[inline(always)]
4123        fn new_empty() -> Self {
4124            Self {
4125                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4126                reason_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D),
4127            }
4128        }
4129
4130        #[inline]
4131        unsafe fn decode(
4132            &mut self,
4133            decoder: &mut fidl::encoding::Decoder<'_, D>,
4134            offset: usize,
4135            _depth: fidl::encoding::Depth,
4136        ) -> fidl::Result<()> {
4137            decoder.debug_check_bounds::<Self>(offset);
4138            // Verify that padding bytes are zero.
4139            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
4140            fidl::decode!(
4141                fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
4142                D,
4143                &mut self.reason_code,
4144                decoder,
4145                offset + 6,
4146                _depth
4147            )?;
4148            Ok(())
4149        }
4150    }
4151
4152    impl fidl::encoding::ValueTypeMarker for EapolConfirm {
4153        type Borrowed<'a> = &'a Self;
4154        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4155            value
4156        }
4157    }
4158
4159    unsafe impl fidl::encoding::TypeMarker for EapolConfirm {
4160        type Owned = Self;
4161
4162        #[inline(always)]
4163        fn inline_align(_context: fidl::encoding::Context) -> usize {
4164            4
4165        }
4166
4167        #[inline(always)]
4168        fn inline_size(_context: fidl::encoding::Context) -> usize {
4169            12
4170        }
4171    }
4172
4173    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolConfirm, D>
4174        for &EapolConfirm
4175    {
4176        #[inline]
4177        unsafe fn encode(
4178            self,
4179            encoder: &mut fidl::encoding::Encoder<'_, D>,
4180            offset: usize,
4181            _depth: fidl::encoding::Depth,
4182        ) -> fidl::Result<()> {
4183            encoder.debug_check_bounds::<EapolConfirm>(offset);
4184            // Delegate to tuple encoding.
4185            fidl::encoding::Encode::<EapolConfirm, D>::encode(
4186                (
4187                    <EapolResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
4188                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
4189                        &self.dst_addr,
4190                    ),
4191                ),
4192                encoder,
4193                offset,
4194                _depth,
4195            )
4196        }
4197    }
4198    unsafe impl<
4199        D: fidl::encoding::ResourceDialect,
4200        T0: fidl::encoding::Encode<EapolResultCode, D>,
4201        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4202    > fidl::encoding::Encode<EapolConfirm, D> for (T0, T1)
4203    {
4204        #[inline]
4205        unsafe fn encode(
4206            self,
4207            encoder: &mut fidl::encoding::Encoder<'_, D>,
4208            offset: usize,
4209            depth: fidl::encoding::Depth,
4210        ) -> fidl::Result<()> {
4211            encoder.debug_check_bounds::<EapolConfirm>(offset);
4212            // Zero out padding regions. There's no need to apply masks
4213            // because the unmasked parts will be overwritten by fields.
4214            unsafe {
4215                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4216                (ptr as *mut u32).write_unaligned(0);
4217            }
4218            // Write the fields.
4219            self.0.encode(encoder, offset + 0, depth)?;
4220            self.1.encode(encoder, offset + 4, depth)?;
4221            Ok(())
4222        }
4223    }
4224
4225    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolConfirm {
4226        #[inline(always)]
4227        fn new_empty() -> Self {
4228            Self {
4229                result_code: fidl::new_empty!(EapolResultCode, D),
4230                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4231            }
4232        }
4233
4234        #[inline]
4235        unsafe fn decode(
4236            &mut self,
4237            decoder: &mut fidl::encoding::Decoder<'_, D>,
4238            offset: usize,
4239            _depth: fidl::encoding::Depth,
4240        ) -> fidl::Result<()> {
4241            decoder.debug_check_bounds::<Self>(offset);
4242            // Verify that padding bytes are zero.
4243            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4244            let padval = unsafe { (ptr as *const u32).read_unaligned() };
4245            let mask = 0xffff0000u32;
4246            let maskedval = padval & mask;
4247            if maskedval != 0 {
4248                return Err(fidl::Error::NonZeroPadding {
4249                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4250                });
4251            }
4252            fidl::decode!(EapolResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
4253            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 4, _depth)?;
4254            Ok(())
4255        }
4256    }
4257
4258    impl fidl::encoding::ValueTypeMarker for EapolIndication {
4259        type Borrowed<'a> = &'a Self;
4260        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4261            value
4262        }
4263    }
4264
4265    unsafe impl fidl::encoding::TypeMarker for EapolIndication {
4266        type Owned = Self;
4267
4268        #[inline(always)]
4269        fn inline_align(_context: fidl::encoding::Context) -> usize {
4270            8
4271        }
4272
4273        #[inline(always)]
4274        fn inline_size(_context: fidl::encoding::Context) -> usize {
4275            32
4276        }
4277    }
4278
4279    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolIndication, D>
4280        for &EapolIndication
4281    {
4282        #[inline]
4283        unsafe fn encode(
4284            self,
4285            encoder: &mut fidl::encoding::Encoder<'_, D>,
4286            offset: usize,
4287            _depth: fidl::encoding::Depth,
4288        ) -> fidl::Result<()> {
4289            encoder.debug_check_bounds::<EapolIndication>(offset);
4290            // Delegate to tuple encoding.
4291            fidl::encoding::Encode::<EapolIndication, D>::encode(
4292                (
4293                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.src_addr),
4294                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.dst_addr),
4295                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4296                ),
4297                encoder, offset, _depth
4298            )
4299        }
4300    }
4301    unsafe impl<
4302        D: fidl::encoding::ResourceDialect,
4303        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4304        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4305        T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4306    > fidl::encoding::Encode<EapolIndication, D> for (T0, T1, T2)
4307    {
4308        #[inline]
4309        unsafe fn encode(
4310            self,
4311            encoder: &mut fidl::encoding::Encoder<'_, D>,
4312            offset: usize,
4313            depth: fidl::encoding::Depth,
4314        ) -> fidl::Result<()> {
4315            encoder.debug_check_bounds::<EapolIndication>(offset);
4316            // Zero out padding regions. There's no need to apply masks
4317            // because the unmasked parts will be overwritten by fields.
4318            unsafe {
4319                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4320                (ptr as *mut u64).write_unaligned(0);
4321            }
4322            // Write the fields.
4323            self.0.encode(encoder, offset + 0, depth)?;
4324            self.1.encode(encoder, offset + 6, depth)?;
4325            self.2.encode(encoder, offset + 16, depth)?;
4326            Ok(())
4327        }
4328    }
4329
4330    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolIndication {
4331        #[inline(always)]
4332        fn new_empty() -> Self {
4333            Self {
4334                src_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4335                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4336                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4337            }
4338        }
4339
4340        #[inline]
4341        unsafe fn decode(
4342            &mut self,
4343            decoder: &mut fidl::encoding::Decoder<'_, D>,
4344            offset: usize,
4345            _depth: fidl::encoding::Depth,
4346        ) -> fidl::Result<()> {
4347            decoder.debug_check_bounds::<Self>(offset);
4348            // Verify that padding bytes are zero.
4349            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4350            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4351            let mask = 0xffffffff00000000u64;
4352            let maskedval = padval & mask;
4353            if maskedval != 0 {
4354                return Err(fidl::Error::NonZeroPadding {
4355                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4356                });
4357            }
4358            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.src_addr, decoder, offset + 0, _depth)?;
4359            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 6, _depth)?;
4360            fidl::decode!(
4361                fidl::encoding::UnboundedVector<u8>,
4362                D,
4363                &mut self.data,
4364                decoder,
4365                offset + 16,
4366                _depth
4367            )?;
4368            Ok(())
4369        }
4370    }
4371
4372    impl fidl::encoding::ValueTypeMarker for EapolRequest {
4373        type Borrowed<'a> = &'a Self;
4374        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4375            value
4376        }
4377    }
4378
4379    unsafe impl fidl::encoding::TypeMarker for EapolRequest {
4380        type Owned = Self;
4381
4382        #[inline(always)]
4383        fn inline_align(_context: fidl::encoding::Context) -> usize {
4384            8
4385        }
4386
4387        #[inline(always)]
4388        fn inline_size(_context: fidl::encoding::Context) -> usize {
4389            32
4390        }
4391    }
4392
4393    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EapolRequest, D>
4394        for &EapolRequest
4395    {
4396        #[inline]
4397        unsafe fn encode(
4398            self,
4399            encoder: &mut fidl::encoding::Encoder<'_, D>,
4400            offset: usize,
4401            _depth: fidl::encoding::Depth,
4402        ) -> fidl::Result<()> {
4403            encoder.debug_check_bounds::<EapolRequest>(offset);
4404            // Delegate to tuple encoding.
4405            fidl::encoding::Encode::<EapolRequest, D>::encode(
4406                (
4407                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.src_addr),
4408                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.dst_addr),
4409                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4410                ),
4411                encoder, offset, _depth
4412            )
4413        }
4414    }
4415    unsafe impl<
4416        D: fidl::encoding::ResourceDialect,
4417        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4418        T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4419        T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4420    > fidl::encoding::Encode<EapolRequest, D> for (T0, T1, T2)
4421    {
4422        #[inline]
4423        unsafe fn encode(
4424            self,
4425            encoder: &mut fidl::encoding::Encoder<'_, D>,
4426            offset: usize,
4427            depth: fidl::encoding::Depth,
4428        ) -> fidl::Result<()> {
4429            encoder.debug_check_bounds::<EapolRequest>(offset);
4430            // Zero out padding regions. There's no need to apply masks
4431            // because the unmasked parts will be overwritten by fields.
4432            unsafe {
4433                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4434                (ptr as *mut u64).write_unaligned(0);
4435            }
4436            // Write the fields.
4437            self.0.encode(encoder, offset + 0, depth)?;
4438            self.1.encode(encoder, offset + 6, depth)?;
4439            self.2.encode(encoder, offset + 16, depth)?;
4440            Ok(())
4441        }
4442    }
4443
4444    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EapolRequest {
4445        #[inline(always)]
4446        fn new_empty() -> Self {
4447            Self {
4448                src_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4449                dst_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
4450                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4451            }
4452        }
4453
4454        #[inline]
4455        unsafe fn decode(
4456            &mut self,
4457            decoder: &mut fidl::encoding::Decoder<'_, D>,
4458            offset: usize,
4459            _depth: fidl::encoding::Depth,
4460        ) -> fidl::Result<()> {
4461            decoder.debug_check_bounds::<Self>(offset);
4462            // Verify that padding bytes are zero.
4463            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4464            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4465            let mask = 0xffffffff00000000u64;
4466            let maskedval = padval & mask;
4467            if maskedval != 0 {
4468                return Err(fidl::Error::NonZeroPadding {
4469                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4470                });
4471            }
4472            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.src_addr, decoder, offset + 0, _depth)?;
4473            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.dst_addr, decoder, offset + 6, _depth)?;
4474            fidl::decode!(
4475                fidl::encoding::UnboundedVector<u8>,
4476                D,
4477                &mut self.data,
4478                decoder,
4479                offset + 16,
4480                _depth
4481            )?;
4482            Ok(())
4483        }
4484    }
4485
4486    impl fidl::encoding::ValueTypeMarker for MlmeGetSignalReportResponse {
4487        type Borrowed<'a> = &'a Self;
4488        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4489            value
4490        }
4491    }
4492
4493    unsafe impl fidl::encoding::TypeMarker for MlmeGetSignalReportResponse {
4494        type Owned = Self;
4495
4496        #[inline(always)]
4497        fn inline_align(_context: fidl::encoding::Context) -> usize {
4498            8
4499        }
4500
4501        #[inline(always)]
4502        fn inline_size(_context: fidl::encoding::Context) -> usize {
4503            16
4504        }
4505    }
4506
4507    unsafe impl<D: fidl::encoding::ResourceDialect>
4508        fidl::encoding::Encode<MlmeGetSignalReportResponse, D> for &MlmeGetSignalReportResponse
4509    {
4510        #[inline]
4511        unsafe fn encode(
4512            self,
4513            encoder: &mut fidl::encoding::Encoder<'_, D>,
4514            offset: usize,
4515            _depth: fidl::encoding::Depth,
4516        ) -> fidl::Result<()> {
4517            encoder.debug_check_bounds::<MlmeGetSignalReportResponse>(offset);
4518            // Delegate to tuple encoding.
4519            fidl::encoding::Encode::<MlmeGetSignalReportResponse, D>::encode(
4520                (
4521                    <fidl_fuchsia_wlan_stats__common::SignalReport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
4522                ),
4523                encoder, offset, _depth
4524            )
4525        }
4526    }
4527    unsafe impl<
4528        D: fidl::encoding::ResourceDialect,
4529        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::SignalReport, D>,
4530    > fidl::encoding::Encode<MlmeGetSignalReportResponse, D> for (T0,)
4531    {
4532        #[inline]
4533        unsafe fn encode(
4534            self,
4535            encoder: &mut fidl::encoding::Encoder<'_, D>,
4536            offset: usize,
4537            depth: fidl::encoding::Depth,
4538        ) -> fidl::Result<()> {
4539            encoder.debug_check_bounds::<MlmeGetSignalReportResponse>(offset);
4540            // Zero out padding regions. There's no need to apply masks
4541            // because the unmasked parts will be overwritten by fields.
4542            // Write the fields.
4543            self.0.encode(encoder, offset + 0, depth)?;
4544            Ok(())
4545        }
4546    }
4547
4548    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4549        for MlmeGetSignalReportResponse
4550    {
4551        #[inline(always)]
4552        fn new_empty() -> Self {
4553            Self { resp: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::SignalReport, D) }
4554        }
4555
4556        #[inline]
4557        unsafe fn decode(
4558            &mut self,
4559            decoder: &mut fidl::encoding::Decoder<'_, D>,
4560            offset: usize,
4561            _depth: fidl::encoding::Depth,
4562        ) -> fidl::Result<()> {
4563            decoder.debug_check_bounds::<Self>(offset);
4564            // Verify that padding bytes are zero.
4565            fidl::decode!(
4566                fidl_fuchsia_wlan_stats__common::SignalReport,
4567                D,
4568                &mut self.resp,
4569                decoder,
4570                offset + 0,
4571                _depth
4572            )?;
4573            Ok(())
4574        }
4575    }
4576
4577    impl fidl::encoding::ValueTypeMarker for MlmeQueryTelemetrySupportResponse {
4578        type Borrowed<'a> = &'a Self;
4579        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4580            value
4581        }
4582    }
4583
4584    unsafe impl fidl::encoding::TypeMarker for MlmeQueryTelemetrySupportResponse {
4585        type Owned = Self;
4586
4587        #[inline(always)]
4588        fn inline_align(_context: fidl::encoding::Context) -> usize {
4589            8
4590        }
4591
4592        #[inline(always)]
4593        fn inline_size(_context: fidl::encoding::Context) -> usize {
4594            16
4595        }
4596    }
4597
4598    unsafe impl<D: fidl::encoding::ResourceDialect>
4599        fidl::encoding::Encode<MlmeQueryTelemetrySupportResponse, D>
4600        for &MlmeQueryTelemetrySupportResponse
4601    {
4602        #[inline]
4603        unsafe fn encode(
4604            self,
4605            encoder: &mut fidl::encoding::Encoder<'_, D>,
4606            offset: usize,
4607            _depth: fidl::encoding::Depth,
4608        ) -> fidl::Result<()> {
4609            encoder.debug_check_bounds::<MlmeQueryTelemetrySupportResponse>(offset);
4610            // Delegate to tuple encoding.
4611            fidl::encoding::Encode::<MlmeQueryTelemetrySupportResponse, D>::encode(
4612                (
4613                    <fidl_fuchsia_wlan_stats__common::TelemetrySupport as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
4614                ),
4615                encoder, offset, _depth
4616            )
4617        }
4618    }
4619    unsafe impl<
4620        D: fidl::encoding::ResourceDialect,
4621        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_stats__common::TelemetrySupport, D>,
4622    > fidl::encoding::Encode<MlmeQueryTelemetrySupportResponse, D> for (T0,)
4623    {
4624        #[inline]
4625        unsafe fn encode(
4626            self,
4627            encoder: &mut fidl::encoding::Encoder<'_, D>,
4628            offset: usize,
4629            depth: fidl::encoding::Depth,
4630        ) -> fidl::Result<()> {
4631            encoder.debug_check_bounds::<MlmeQueryTelemetrySupportResponse>(offset);
4632            // Zero out padding regions. There's no need to apply masks
4633            // because the unmasked parts will be overwritten by fields.
4634            // Write the fields.
4635            self.0.encode(encoder, offset + 0, depth)?;
4636            Ok(())
4637        }
4638    }
4639
4640    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4641        for MlmeQueryTelemetrySupportResponse
4642    {
4643        #[inline(always)]
4644        fn new_empty() -> Self {
4645            Self { resp: fidl::new_empty!(fidl_fuchsia_wlan_stats__common::TelemetrySupport, D) }
4646        }
4647
4648        #[inline]
4649        unsafe fn decode(
4650            &mut self,
4651            decoder: &mut fidl::encoding::Decoder<'_, D>,
4652            offset: usize,
4653            _depth: fidl::encoding::Depth,
4654        ) -> fidl::Result<()> {
4655            decoder.debug_check_bounds::<Self>(offset);
4656            // Verify that padding bytes are zero.
4657            fidl::decode!(
4658                fidl_fuchsia_wlan_stats__common::TelemetrySupport,
4659                D,
4660                &mut self.resp,
4661                decoder,
4662                offset + 0,
4663                _depth
4664            )?;
4665            Ok(())
4666        }
4667    }
4668
4669    impl fidl::encoding::ValueTypeMarker for MinstrelListResponse {
4670        type Borrowed<'a> = &'a Self;
4671        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4672            value
4673        }
4674    }
4675
4676    unsafe impl fidl::encoding::TypeMarker for MinstrelListResponse {
4677        type Owned = Self;
4678
4679        #[inline(always)]
4680        fn inline_align(_context: fidl::encoding::Context) -> usize {
4681            8
4682        }
4683
4684        #[inline(always)]
4685        fn inline_size(_context: fidl::encoding::Context) -> usize {
4686            16
4687        }
4688    }
4689
4690    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelListResponse, D>
4691        for &MinstrelListResponse
4692    {
4693        #[inline]
4694        unsafe fn encode(
4695            self,
4696            encoder: &mut fidl::encoding::Encoder<'_, D>,
4697            offset: usize,
4698            _depth: fidl::encoding::Depth,
4699        ) -> fidl::Result<()> {
4700            encoder.debug_check_bounds::<MinstrelListResponse>(offset);
4701            // Delegate to tuple encoding.
4702            fidl::encoding::Encode::<MinstrelListResponse, D>::encode(
4703                (
4704                    <fidl_fuchsia_wlan_minstrel__common::Peers as fidl::encoding::ValueTypeMarker>::borrow(&self.peers),
4705                ),
4706                encoder, offset, _depth
4707            )
4708        }
4709    }
4710    unsafe impl<
4711        D: fidl::encoding::ResourceDialect,
4712        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_minstrel__common::Peers, D>,
4713    > fidl::encoding::Encode<MinstrelListResponse, D> for (T0,)
4714    {
4715        #[inline]
4716        unsafe fn encode(
4717            self,
4718            encoder: &mut fidl::encoding::Encoder<'_, D>,
4719            offset: usize,
4720            depth: fidl::encoding::Depth,
4721        ) -> fidl::Result<()> {
4722            encoder.debug_check_bounds::<MinstrelListResponse>(offset);
4723            // Zero out padding regions. There's no need to apply masks
4724            // because the unmasked parts will be overwritten by fields.
4725            // Write the fields.
4726            self.0.encode(encoder, offset + 0, depth)?;
4727            Ok(())
4728        }
4729    }
4730
4731    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelListResponse {
4732        #[inline(always)]
4733        fn new_empty() -> Self {
4734            Self { peers: fidl::new_empty!(fidl_fuchsia_wlan_minstrel__common::Peers, D) }
4735        }
4736
4737        #[inline]
4738        unsafe fn decode(
4739            &mut self,
4740            decoder: &mut fidl::encoding::Decoder<'_, D>,
4741            offset: usize,
4742            _depth: fidl::encoding::Depth,
4743        ) -> fidl::Result<()> {
4744            decoder.debug_check_bounds::<Self>(offset);
4745            // Verify that padding bytes are zero.
4746            fidl::decode!(
4747                fidl_fuchsia_wlan_minstrel__common::Peers,
4748                D,
4749                &mut self.peers,
4750                decoder,
4751                offset + 0,
4752                _depth
4753            )?;
4754            Ok(())
4755        }
4756    }
4757
4758    impl fidl::encoding::ValueTypeMarker for MinstrelStatsRequest {
4759        type Borrowed<'a> = &'a Self;
4760        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4761            value
4762        }
4763    }
4764
4765    unsafe impl fidl::encoding::TypeMarker for MinstrelStatsRequest {
4766        type Owned = Self;
4767
4768        #[inline(always)]
4769        fn inline_align(_context: fidl::encoding::Context) -> usize {
4770            1
4771        }
4772
4773        #[inline(always)]
4774        fn inline_size(_context: fidl::encoding::Context) -> usize {
4775            6
4776        }
4777        #[inline(always)]
4778        fn encode_is_copy() -> bool {
4779            true
4780        }
4781
4782        #[inline(always)]
4783        fn decode_is_copy() -> bool {
4784            true
4785        }
4786    }
4787
4788    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelStatsRequest, D>
4789        for &MinstrelStatsRequest
4790    {
4791        #[inline]
4792        unsafe fn encode(
4793            self,
4794            encoder: &mut fidl::encoding::Encoder<'_, D>,
4795            offset: usize,
4796            _depth: fidl::encoding::Depth,
4797        ) -> fidl::Result<()> {
4798            encoder.debug_check_bounds::<MinstrelStatsRequest>(offset);
4799            unsafe {
4800                // Copy the object into the buffer.
4801                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
4802                (buf_ptr as *mut MinstrelStatsRequest)
4803                    .write_unaligned((self as *const MinstrelStatsRequest).read());
4804                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
4805                // done second because the memcpy will write garbage to these bytes.
4806            }
4807            Ok(())
4808        }
4809    }
4810    unsafe impl<
4811        D: fidl::encoding::ResourceDialect,
4812        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
4813    > fidl::encoding::Encode<MinstrelStatsRequest, D> for (T0,)
4814    {
4815        #[inline]
4816        unsafe fn encode(
4817            self,
4818            encoder: &mut fidl::encoding::Encoder<'_, D>,
4819            offset: usize,
4820            depth: fidl::encoding::Depth,
4821        ) -> fidl::Result<()> {
4822            encoder.debug_check_bounds::<MinstrelStatsRequest>(offset);
4823            // Zero out padding regions. There's no need to apply masks
4824            // because the unmasked parts will be overwritten by fields.
4825            // Write the fields.
4826            self.0.encode(encoder, offset + 0, depth)?;
4827            Ok(())
4828        }
4829    }
4830
4831    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelStatsRequest {
4832        #[inline(always)]
4833        fn new_empty() -> Self {
4834            Self { peer_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
4835        }
4836
4837        #[inline]
4838        unsafe fn decode(
4839            &mut self,
4840            decoder: &mut fidl::encoding::Decoder<'_, D>,
4841            offset: usize,
4842            _depth: fidl::encoding::Depth,
4843        ) -> fidl::Result<()> {
4844            decoder.debug_check_bounds::<Self>(offset);
4845            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
4846            // Verify that padding bytes are zero.
4847            // Copy from the buffer into the object.
4848            unsafe {
4849                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
4850            }
4851            Ok(())
4852        }
4853    }
4854
4855    impl fidl::encoding::ValueTypeMarker for MinstrelStatsResponse {
4856        type Borrowed<'a> = &'a Self;
4857        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4858            value
4859        }
4860    }
4861
4862    unsafe impl fidl::encoding::TypeMarker for MinstrelStatsResponse {
4863        type Owned = Self;
4864
4865        #[inline(always)]
4866        fn inline_align(_context: fidl::encoding::Context) -> usize {
4867            8
4868        }
4869
4870        #[inline(always)]
4871        fn inline_size(_context: fidl::encoding::Context) -> usize {
4872            8
4873        }
4874    }
4875
4876    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MinstrelStatsResponse, D>
4877        for &MinstrelStatsResponse
4878    {
4879        #[inline]
4880        unsafe fn encode(
4881            self,
4882            encoder: &mut fidl::encoding::Encoder<'_, D>,
4883            offset: usize,
4884            _depth: fidl::encoding::Depth,
4885        ) -> fidl::Result<()> {
4886            encoder.debug_check_bounds::<MinstrelStatsResponse>(offset);
4887            // Delegate to tuple encoding.
4888            fidl::encoding::Encode::<MinstrelStatsResponse, D>::encode(
4889                (
4890                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer),
4891                ),
4892                encoder, offset, _depth
4893            )
4894        }
4895    }
4896    unsafe impl<
4897        D: fidl::encoding::ResourceDialect,
4898        T0: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer>, D>,
4899    > fidl::encoding::Encode<MinstrelStatsResponse, D> for (T0,)
4900    {
4901        #[inline]
4902        unsafe fn encode(
4903            self,
4904            encoder: &mut fidl::encoding::Encoder<'_, D>,
4905            offset: usize,
4906            depth: fidl::encoding::Depth,
4907        ) -> fidl::Result<()> {
4908            encoder.debug_check_bounds::<MinstrelStatsResponse>(offset);
4909            // Zero out padding regions. There's no need to apply masks
4910            // because the unmasked parts will be overwritten by fields.
4911            // Write the fields.
4912            self.0.encode(encoder, offset + 0, depth)?;
4913            Ok(())
4914        }
4915    }
4916
4917    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MinstrelStatsResponse {
4918        #[inline(always)]
4919        fn new_empty() -> Self {
4920            Self {
4921                peer: fidl::new_empty!(
4922                    fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer>,
4923                    D
4924                ),
4925            }
4926        }
4927
4928        #[inline]
4929        unsafe fn decode(
4930            &mut self,
4931            decoder: &mut fidl::encoding::Decoder<'_, D>,
4932            offset: usize,
4933            _depth: fidl::encoding::Depth,
4934        ) -> fidl::Result<()> {
4935            decoder.debug_check_bounds::<Self>(offset);
4936            // Verify that padding bytes are zero.
4937            fidl::decode!(
4938                fidl::encoding::Boxed<fidl_fuchsia_wlan_minstrel__common::Peer>,
4939                D,
4940                &mut self.peer,
4941                decoder,
4942                offset + 0,
4943                _depth
4944            )?;
4945            Ok(())
4946        }
4947    }
4948
4949    impl fidl::encoding::ValueTypeMarker for MlmeAssociateIndRequest {
4950        type Borrowed<'a> = &'a Self;
4951        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4952            value
4953        }
4954    }
4955
4956    unsafe impl fidl::encoding::TypeMarker for MlmeAssociateIndRequest {
4957        type Owned = Self;
4958
4959        #[inline(always)]
4960        fn inline_align(_context: fidl::encoding::Context) -> usize {
4961            8
4962        }
4963
4964        #[inline(always)]
4965        fn inline_size(_context: fidl::encoding::Context) -> usize {
4966            64
4967        }
4968    }
4969
4970    unsafe impl<D: fidl::encoding::ResourceDialect>
4971        fidl::encoding::Encode<MlmeAssociateIndRequest, D> for &MlmeAssociateIndRequest
4972    {
4973        #[inline]
4974        unsafe fn encode(
4975            self,
4976            encoder: &mut fidl::encoding::Encoder<'_, D>,
4977            offset: usize,
4978            _depth: fidl::encoding::Depth,
4979        ) -> fidl::Result<()> {
4980            encoder.debug_check_bounds::<MlmeAssociateIndRequest>(offset);
4981            // Delegate to tuple encoding.
4982            fidl::encoding::Encode::<MlmeAssociateIndRequest, D>::encode(
4983                (<AssociateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
4984                encoder,
4985                offset,
4986                _depth,
4987            )
4988        }
4989    }
4990    unsafe impl<
4991        D: fidl::encoding::ResourceDialect,
4992        T0: fidl::encoding::Encode<AssociateIndication, D>,
4993    > fidl::encoding::Encode<MlmeAssociateIndRequest, D> for (T0,)
4994    {
4995        #[inline]
4996        unsafe fn encode(
4997            self,
4998            encoder: &mut fidl::encoding::Encoder<'_, D>,
4999            offset: usize,
5000            depth: fidl::encoding::Depth,
5001        ) -> fidl::Result<()> {
5002            encoder.debug_check_bounds::<MlmeAssociateIndRequest>(offset);
5003            // Zero out padding regions. There's no need to apply masks
5004            // because the unmasked parts will be overwritten by fields.
5005            // Write the fields.
5006            self.0.encode(encoder, offset + 0, depth)?;
5007            Ok(())
5008        }
5009    }
5010
5011    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5012        for MlmeAssociateIndRequest
5013    {
5014        #[inline(always)]
5015        fn new_empty() -> Self {
5016            Self { ind: fidl::new_empty!(AssociateIndication, D) }
5017        }
5018
5019        #[inline]
5020        unsafe fn decode(
5021            &mut self,
5022            decoder: &mut fidl::encoding::Decoder<'_, D>,
5023            offset: usize,
5024            _depth: fidl::encoding::Depth,
5025        ) -> fidl::Result<()> {
5026            decoder.debug_check_bounds::<Self>(offset);
5027            // Verify that padding bytes are zero.
5028            fidl::decode!(AssociateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5029            Ok(())
5030        }
5031    }
5032
5033    impl fidl::encoding::ValueTypeMarker for MlmeAssociateRespRequest {
5034        type Borrowed<'a> = &'a Self;
5035        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5036            value
5037        }
5038    }
5039
5040    unsafe impl fidl::encoding::TypeMarker for MlmeAssociateRespRequest {
5041        type Owned = Self;
5042
5043        #[inline(always)]
5044        fn inline_align(_context: fidl::encoding::Context) -> usize {
5045            8
5046        }
5047
5048        #[inline(always)]
5049        fn inline_size(_context: fidl::encoding::Context) -> usize {
5050            32
5051        }
5052    }
5053
5054    unsafe impl<D: fidl::encoding::ResourceDialect>
5055        fidl::encoding::Encode<MlmeAssociateRespRequest, D> for &MlmeAssociateRespRequest
5056    {
5057        #[inline]
5058        unsafe fn encode(
5059            self,
5060            encoder: &mut fidl::encoding::Encoder<'_, D>,
5061            offset: usize,
5062            _depth: fidl::encoding::Depth,
5063        ) -> fidl::Result<()> {
5064            encoder.debug_check_bounds::<MlmeAssociateRespRequest>(offset);
5065            // Delegate to tuple encoding.
5066            fidl::encoding::Encode::<MlmeAssociateRespRequest, D>::encode(
5067                (<AssociateResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5068                encoder,
5069                offset,
5070                _depth,
5071            )
5072        }
5073    }
5074    unsafe impl<
5075        D: fidl::encoding::ResourceDialect,
5076        T0: fidl::encoding::Encode<AssociateResponse, D>,
5077    > fidl::encoding::Encode<MlmeAssociateRespRequest, D> for (T0,)
5078    {
5079        #[inline]
5080        unsafe fn encode(
5081            self,
5082            encoder: &mut fidl::encoding::Encoder<'_, D>,
5083            offset: usize,
5084            depth: fidl::encoding::Depth,
5085        ) -> fidl::Result<()> {
5086            encoder.debug_check_bounds::<MlmeAssociateRespRequest>(offset);
5087            // Zero out padding regions. There's no need to apply masks
5088            // because the unmasked parts will be overwritten by fields.
5089            // Write the fields.
5090            self.0.encode(encoder, offset + 0, depth)?;
5091            Ok(())
5092        }
5093    }
5094
5095    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5096        for MlmeAssociateRespRequest
5097    {
5098        #[inline(always)]
5099        fn new_empty() -> Self {
5100            Self { resp: fidl::new_empty!(AssociateResponse, D) }
5101        }
5102
5103        #[inline]
5104        unsafe fn decode(
5105            &mut self,
5106            decoder: &mut fidl::encoding::Decoder<'_, D>,
5107            offset: usize,
5108            _depth: fidl::encoding::Depth,
5109        ) -> fidl::Result<()> {
5110            decoder.debug_check_bounds::<Self>(offset);
5111            // Verify that padding bytes are zero.
5112            fidl::decode!(AssociateResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
5113            Ok(())
5114        }
5115    }
5116
5117    impl fidl::encoding::ValueTypeMarker for MlmeAuthenticateIndRequest {
5118        type Borrowed<'a> = &'a Self;
5119        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5120            value
5121        }
5122    }
5123
5124    unsafe impl fidl::encoding::TypeMarker for MlmeAuthenticateIndRequest {
5125        type Owned = Self;
5126
5127        #[inline(always)]
5128        fn inline_align(_context: fidl::encoding::Context) -> usize {
5129            4
5130        }
5131
5132        #[inline(always)]
5133        fn inline_size(_context: fidl::encoding::Context) -> usize {
5134            12
5135        }
5136    }
5137
5138    unsafe impl<D: fidl::encoding::ResourceDialect>
5139        fidl::encoding::Encode<MlmeAuthenticateIndRequest, D> for &MlmeAuthenticateIndRequest
5140    {
5141        #[inline]
5142        unsafe fn encode(
5143            self,
5144            encoder: &mut fidl::encoding::Encoder<'_, D>,
5145            offset: usize,
5146            _depth: fidl::encoding::Depth,
5147        ) -> fidl::Result<()> {
5148            encoder.debug_check_bounds::<MlmeAuthenticateIndRequest>(offset);
5149            // Delegate to tuple encoding.
5150            fidl::encoding::Encode::<MlmeAuthenticateIndRequest, D>::encode(
5151                (<AuthenticateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5152                encoder,
5153                offset,
5154                _depth,
5155            )
5156        }
5157    }
5158    unsafe impl<
5159        D: fidl::encoding::ResourceDialect,
5160        T0: fidl::encoding::Encode<AuthenticateIndication, D>,
5161    > fidl::encoding::Encode<MlmeAuthenticateIndRequest, D> for (T0,)
5162    {
5163        #[inline]
5164        unsafe fn encode(
5165            self,
5166            encoder: &mut fidl::encoding::Encoder<'_, D>,
5167            offset: usize,
5168            depth: fidl::encoding::Depth,
5169        ) -> fidl::Result<()> {
5170            encoder.debug_check_bounds::<MlmeAuthenticateIndRequest>(offset);
5171            // Zero out padding regions. There's no need to apply masks
5172            // because the unmasked parts will be overwritten by fields.
5173            // Write the fields.
5174            self.0.encode(encoder, offset + 0, depth)?;
5175            Ok(())
5176        }
5177    }
5178
5179    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5180        for MlmeAuthenticateIndRequest
5181    {
5182        #[inline(always)]
5183        fn new_empty() -> Self {
5184            Self { ind: fidl::new_empty!(AuthenticateIndication, D) }
5185        }
5186
5187        #[inline]
5188        unsafe fn decode(
5189            &mut self,
5190            decoder: &mut fidl::encoding::Decoder<'_, D>,
5191            offset: usize,
5192            _depth: fidl::encoding::Depth,
5193        ) -> fidl::Result<()> {
5194            decoder.debug_check_bounds::<Self>(offset);
5195            // Verify that padding bytes are zero.
5196            fidl::decode!(AuthenticateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5197            Ok(())
5198        }
5199    }
5200
5201    impl fidl::encoding::ValueTypeMarker for MlmeAuthenticateRespRequest {
5202        type Borrowed<'a> = &'a Self;
5203        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5204            value
5205        }
5206    }
5207
5208    unsafe impl fidl::encoding::TypeMarker for MlmeAuthenticateRespRequest {
5209        type Owned = Self;
5210
5211        #[inline(always)]
5212        fn inline_align(_context: fidl::encoding::Context) -> usize {
5213            4
5214        }
5215
5216        #[inline(always)]
5217        fn inline_size(_context: fidl::encoding::Context) -> usize {
5218            12
5219        }
5220    }
5221
5222    unsafe impl<D: fidl::encoding::ResourceDialect>
5223        fidl::encoding::Encode<MlmeAuthenticateRespRequest, D> for &MlmeAuthenticateRespRequest
5224    {
5225        #[inline]
5226        unsafe fn encode(
5227            self,
5228            encoder: &mut fidl::encoding::Encoder<'_, D>,
5229            offset: usize,
5230            _depth: fidl::encoding::Depth,
5231        ) -> fidl::Result<()> {
5232            encoder.debug_check_bounds::<MlmeAuthenticateRespRequest>(offset);
5233            // Delegate to tuple encoding.
5234            fidl::encoding::Encode::<MlmeAuthenticateRespRequest, D>::encode(
5235                (<AuthenticateResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5236                encoder,
5237                offset,
5238                _depth,
5239            )
5240        }
5241    }
5242    unsafe impl<
5243        D: fidl::encoding::ResourceDialect,
5244        T0: fidl::encoding::Encode<AuthenticateResponse, D>,
5245    > fidl::encoding::Encode<MlmeAuthenticateRespRequest, D> for (T0,)
5246    {
5247        #[inline]
5248        unsafe fn encode(
5249            self,
5250            encoder: &mut fidl::encoding::Encoder<'_, D>,
5251            offset: usize,
5252            depth: fidl::encoding::Depth,
5253        ) -> fidl::Result<()> {
5254            encoder.debug_check_bounds::<MlmeAuthenticateRespRequest>(offset);
5255            // Zero out padding regions. There's no need to apply masks
5256            // because the unmasked parts will be overwritten by fields.
5257            // Write the fields.
5258            self.0.encode(encoder, offset + 0, depth)?;
5259            Ok(())
5260        }
5261    }
5262
5263    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5264        for MlmeAuthenticateRespRequest
5265    {
5266        #[inline(always)]
5267        fn new_empty() -> Self {
5268            Self { resp: fidl::new_empty!(AuthenticateResponse, D) }
5269        }
5270
5271        #[inline]
5272        unsafe fn decode(
5273            &mut self,
5274            decoder: &mut fidl::encoding::Decoder<'_, D>,
5275            offset: usize,
5276            _depth: fidl::encoding::Depth,
5277        ) -> fidl::Result<()> {
5278            decoder.debug_check_bounds::<Self>(offset);
5279            // Verify that padding bytes are zero.
5280            fidl::decode!(AuthenticateResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
5281            Ok(())
5282        }
5283    }
5284
5285    impl fidl::encoding::ValueTypeMarker for MlmeConnectConfRequest {
5286        type Borrowed<'a> = &'a Self;
5287        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5288            value
5289        }
5290    }
5291
5292    unsafe impl fidl::encoding::TypeMarker for MlmeConnectConfRequest {
5293        type Owned = Self;
5294
5295        #[inline(always)]
5296        fn inline_align(_context: fidl::encoding::Context) -> usize {
5297            8
5298        }
5299
5300        #[inline(always)]
5301        fn inline_size(_context: fidl::encoding::Context) -> usize {
5302            32
5303        }
5304    }
5305
5306    unsafe impl<D: fidl::encoding::ResourceDialect>
5307        fidl::encoding::Encode<MlmeConnectConfRequest, D> for &MlmeConnectConfRequest
5308    {
5309        #[inline]
5310        unsafe fn encode(
5311            self,
5312            encoder: &mut fidl::encoding::Encoder<'_, D>,
5313            offset: usize,
5314            _depth: fidl::encoding::Depth,
5315        ) -> fidl::Result<()> {
5316            encoder.debug_check_bounds::<MlmeConnectConfRequest>(offset);
5317            // Delegate to tuple encoding.
5318            fidl::encoding::Encode::<MlmeConnectConfRequest, D>::encode(
5319                (<ConnectConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
5320                encoder,
5321                offset,
5322                _depth,
5323            )
5324        }
5325    }
5326    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ConnectConfirm, D>>
5327        fidl::encoding::Encode<MlmeConnectConfRequest, D> for (T0,)
5328    {
5329        #[inline]
5330        unsafe fn encode(
5331            self,
5332            encoder: &mut fidl::encoding::Encoder<'_, D>,
5333            offset: usize,
5334            depth: fidl::encoding::Depth,
5335        ) -> fidl::Result<()> {
5336            encoder.debug_check_bounds::<MlmeConnectConfRequest>(offset);
5337            // Zero out padding regions. There's no need to apply masks
5338            // because the unmasked parts will be overwritten by fields.
5339            // Write the fields.
5340            self.0.encode(encoder, offset + 0, depth)?;
5341            Ok(())
5342        }
5343    }
5344
5345    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5346        for MlmeConnectConfRequest
5347    {
5348        #[inline(always)]
5349        fn new_empty() -> Self {
5350            Self { resp: fidl::new_empty!(ConnectConfirm, D) }
5351        }
5352
5353        #[inline]
5354        unsafe fn decode(
5355            &mut self,
5356            decoder: &mut fidl::encoding::Decoder<'_, D>,
5357            offset: usize,
5358            _depth: fidl::encoding::Depth,
5359        ) -> fidl::Result<()> {
5360            decoder.debug_check_bounds::<Self>(offset);
5361            // Verify that padding bytes are zero.
5362            fidl::decode!(ConnectConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
5363            Ok(())
5364        }
5365    }
5366
5367    impl fidl::encoding::ValueTypeMarker for MlmeConnectReqRequest {
5368        type Borrowed<'a> = &'a Self;
5369        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5370            value
5371        }
5372    }
5373
5374    unsafe impl fidl::encoding::TypeMarker for MlmeConnectReqRequest {
5375        type Owned = Self;
5376
5377        #[inline(always)]
5378        fn inline_align(_context: fidl::encoding::Context) -> usize {
5379            8
5380        }
5381
5382        #[inline(always)]
5383        fn inline_size(_context: fidl::encoding::Context) -> usize {
5384            96
5385        }
5386    }
5387
5388    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeConnectReqRequest, D>
5389        for &MlmeConnectReqRequest
5390    {
5391        #[inline]
5392        unsafe fn encode(
5393            self,
5394            encoder: &mut fidl::encoding::Encoder<'_, D>,
5395            offset: usize,
5396            _depth: fidl::encoding::Depth,
5397        ) -> fidl::Result<()> {
5398            encoder.debug_check_bounds::<MlmeConnectReqRequest>(offset);
5399            // Delegate to tuple encoding.
5400            fidl::encoding::Encode::<MlmeConnectReqRequest, D>::encode(
5401                (<ConnectRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5402                encoder,
5403                offset,
5404                _depth,
5405            )
5406        }
5407    }
5408    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ConnectRequest, D>>
5409        fidl::encoding::Encode<MlmeConnectReqRequest, D> for (T0,)
5410    {
5411        #[inline]
5412        unsafe fn encode(
5413            self,
5414            encoder: &mut fidl::encoding::Encoder<'_, D>,
5415            offset: usize,
5416            depth: fidl::encoding::Depth,
5417        ) -> fidl::Result<()> {
5418            encoder.debug_check_bounds::<MlmeConnectReqRequest>(offset);
5419            // Zero out padding regions. There's no need to apply masks
5420            // because the unmasked parts will be overwritten by fields.
5421            // Write the fields.
5422            self.0.encode(encoder, offset + 0, depth)?;
5423            Ok(())
5424        }
5425    }
5426
5427    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeConnectReqRequest {
5428        #[inline(always)]
5429        fn new_empty() -> Self {
5430            Self { req: fidl::new_empty!(ConnectRequest, D) }
5431        }
5432
5433        #[inline]
5434        unsafe fn decode(
5435            &mut self,
5436            decoder: &mut fidl::encoding::Decoder<'_, D>,
5437            offset: usize,
5438            _depth: fidl::encoding::Depth,
5439        ) -> fidl::Result<()> {
5440            decoder.debug_check_bounds::<Self>(offset);
5441            // Verify that padding bytes are zero.
5442            fidl::decode!(ConnectRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5443            Ok(())
5444        }
5445    }
5446
5447    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateConfRequest {
5448        type Borrowed<'a> = &'a Self;
5449        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5450            value
5451        }
5452    }
5453
5454    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateConfRequest {
5455        type Owned = Self;
5456
5457        #[inline(always)]
5458        fn inline_align(_context: fidl::encoding::Context) -> usize {
5459            1
5460        }
5461
5462        #[inline(always)]
5463        fn inline_size(_context: fidl::encoding::Context) -> usize {
5464            6
5465        }
5466        #[inline(always)]
5467        fn encode_is_copy() -> bool {
5468            true
5469        }
5470
5471        #[inline(always)]
5472        fn decode_is_copy() -> bool {
5473            true
5474        }
5475    }
5476
5477    unsafe impl<D: fidl::encoding::ResourceDialect>
5478        fidl::encoding::Encode<MlmeDeauthenticateConfRequest, D>
5479        for &MlmeDeauthenticateConfRequest
5480    {
5481        #[inline]
5482        unsafe fn encode(
5483            self,
5484            encoder: &mut fidl::encoding::Encoder<'_, D>,
5485            offset: usize,
5486            _depth: fidl::encoding::Depth,
5487        ) -> fidl::Result<()> {
5488            encoder.debug_check_bounds::<MlmeDeauthenticateConfRequest>(offset);
5489            unsafe {
5490                // Copy the object into the buffer.
5491                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5492                (buf_ptr as *mut MlmeDeauthenticateConfRequest)
5493                    .write_unaligned((self as *const MlmeDeauthenticateConfRequest).read());
5494                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
5495                // done second because the memcpy will write garbage to these bytes.
5496            }
5497            Ok(())
5498        }
5499    }
5500    unsafe impl<
5501        D: fidl::encoding::ResourceDialect,
5502        T0: fidl::encoding::Encode<DeauthenticateConfirm, D>,
5503    > fidl::encoding::Encode<MlmeDeauthenticateConfRequest, D> for (T0,)
5504    {
5505        #[inline]
5506        unsafe fn encode(
5507            self,
5508            encoder: &mut fidl::encoding::Encoder<'_, D>,
5509            offset: usize,
5510            depth: fidl::encoding::Depth,
5511        ) -> fidl::Result<()> {
5512            encoder.debug_check_bounds::<MlmeDeauthenticateConfRequest>(offset);
5513            // Zero out padding regions. There's no need to apply masks
5514            // because the unmasked parts will be overwritten by fields.
5515            // Write the fields.
5516            self.0.encode(encoder, offset + 0, depth)?;
5517            Ok(())
5518        }
5519    }
5520
5521    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5522        for MlmeDeauthenticateConfRequest
5523    {
5524        #[inline(always)]
5525        fn new_empty() -> Self {
5526            Self { resp: fidl::new_empty!(DeauthenticateConfirm, D) }
5527        }
5528
5529        #[inline]
5530        unsafe fn decode(
5531            &mut self,
5532            decoder: &mut fidl::encoding::Decoder<'_, D>,
5533            offset: usize,
5534            _depth: fidl::encoding::Depth,
5535        ) -> fidl::Result<()> {
5536            decoder.debug_check_bounds::<Self>(offset);
5537            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5538            // Verify that padding bytes are zero.
5539            // Copy from the buffer into the object.
5540            unsafe {
5541                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
5542            }
5543            Ok(())
5544        }
5545    }
5546
5547    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateIndRequest {
5548        type Borrowed<'a> = &'a Self;
5549        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5550            value
5551        }
5552    }
5553
5554    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateIndRequest {
5555        type Owned = Self;
5556
5557        #[inline(always)]
5558        fn inline_align(_context: fidl::encoding::Context) -> usize {
5559            2
5560        }
5561
5562        #[inline(always)]
5563        fn inline_size(_context: fidl::encoding::Context) -> usize {
5564            10
5565        }
5566    }
5567
5568    unsafe impl<D: fidl::encoding::ResourceDialect>
5569        fidl::encoding::Encode<MlmeDeauthenticateIndRequest, D> for &MlmeDeauthenticateIndRequest
5570    {
5571        #[inline]
5572        unsafe fn encode(
5573            self,
5574            encoder: &mut fidl::encoding::Encoder<'_, D>,
5575            offset: usize,
5576            _depth: fidl::encoding::Depth,
5577        ) -> fidl::Result<()> {
5578            encoder.debug_check_bounds::<MlmeDeauthenticateIndRequest>(offset);
5579            // Delegate to tuple encoding.
5580            fidl::encoding::Encode::<MlmeDeauthenticateIndRequest, D>::encode(
5581                (<DeauthenticateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5582                encoder,
5583                offset,
5584                _depth,
5585            )
5586        }
5587    }
5588    unsafe impl<
5589        D: fidl::encoding::ResourceDialect,
5590        T0: fidl::encoding::Encode<DeauthenticateIndication, D>,
5591    > fidl::encoding::Encode<MlmeDeauthenticateIndRequest, D> for (T0,)
5592    {
5593        #[inline]
5594        unsafe fn encode(
5595            self,
5596            encoder: &mut fidl::encoding::Encoder<'_, D>,
5597            offset: usize,
5598            depth: fidl::encoding::Depth,
5599        ) -> fidl::Result<()> {
5600            encoder.debug_check_bounds::<MlmeDeauthenticateIndRequest>(offset);
5601            // Zero out padding regions. There's no need to apply masks
5602            // because the unmasked parts will be overwritten by fields.
5603            // Write the fields.
5604            self.0.encode(encoder, offset + 0, depth)?;
5605            Ok(())
5606        }
5607    }
5608
5609    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5610        for MlmeDeauthenticateIndRequest
5611    {
5612        #[inline(always)]
5613        fn new_empty() -> Self {
5614            Self { ind: fidl::new_empty!(DeauthenticateIndication, D) }
5615        }
5616
5617        #[inline]
5618        unsafe fn decode(
5619            &mut self,
5620            decoder: &mut fidl::encoding::Decoder<'_, D>,
5621            offset: usize,
5622            _depth: fidl::encoding::Depth,
5623        ) -> fidl::Result<()> {
5624            decoder.debug_check_bounds::<Self>(offset);
5625            // Verify that padding bytes are zero.
5626            fidl::decode!(DeauthenticateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5627            Ok(())
5628        }
5629    }
5630
5631    impl fidl::encoding::ValueTypeMarker for MlmeDeauthenticateReqRequest {
5632        type Borrowed<'a> = &'a Self;
5633        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5634            value
5635        }
5636    }
5637
5638    unsafe impl fidl::encoding::TypeMarker for MlmeDeauthenticateReqRequest {
5639        type Owned = Self;
5640
5641        #[inline(always)]
5642        fn inline_align(_context: fidl::encoding::Context) -> usize {
5643            2
5644        }
5645
5646        #[inline(always)]
5647        fn inline_size(_context: fidl::encoding::Context) -> usize {
5648            8
5649        }
5650    }
5651
5652    unsafe impl<D: fidl::encoding::ResourceDialect>
5653        fidl::encoding::Encode<MlmeDeauthenticateReqRequest, D> for &MlmeDeauthenticateReqRequest
5654    {
5655        #[inline]
5656        unsafe fn encode(
5657            self,
5658            encoder: &mut fidl::encoding::Encoder<'_, D>,
5659            offset: usize,
5660            _depth: fidl::encoding::Depth,
5661        ) -> fidl::Result<()> {
5662            encoder.debug_check_bounds::<MlmeDeauthenticateReqRequest>(offset);
5663            // Delegate to tuple encoding.
5664            fidl::encoding::Encode::<MlmeDeauthenticateReqRequest, D>::encode(
5665                (<DeauthenticateRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5666                encoder,
5667                offset,
5668                _depth,
5669            )
5670        }
5671    }
5672    unsafe impl<
5673        D: fidl::encoding::ResourceDialect,
5674        T0: fidl::encoding::Encode<DeauthenticateRequest, D>,
5675    > fidl::encoding::Encode<MlmeDeauthenticateReqRequest, D> for (T0,)
5676    {
5677        #[inline]
5678        unsafe fn encode(
5679            self,
5680            encoder: &mut fidl::encoding::Encoder<'_, D>,
5681            offset: usize,
5682            depth: fidl::encoding::Depth,
5683        ) -> fidl::Result<()> {
5684            encoder.debug_check_bounds::<MlmeDeauthenticateReqRequest>(offset);
5685            // Zero out padding regions. There's no need to apply masks
5686            // because the unmasked parts will be overwritten by fields.
5687            // Write the fields.
5688            self.0.encode(encoder, offset + 0, depth)?;
5689            Ok(())
5690        }
5691    }
5692
5693    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5694        for MlmeDeauthenticateReqRequest
5695    {
5696        #[inline(always)]
5697        fn new_empty() -> Self {
5698            Self { req: fidl::new_empty!(DeauthenticateRequest, D) }
5699        }
5700
5701        #[inline]
5702        unsafe fn decode(
5703            &mut self,
5704            decoder: &mut fidl::encoding::Decoder<'_, D>,
5705            offset: usize,
5706            _depth: fidl::encoding::Depth,
5707        ) -> fidl::Result<()> {
5708            decoder.debug_check_bounds::<Self>(offset);
5709            // Verify that padding bytes are zero.
5710            fidl::decode!(DeauthenticateRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5711            Ok(())
5712        }
5713    }
5714
5715    impl fidl::encoding::ValueTypeMarker for MlmeDeleteKeysReqRequest {
5716        type Borrowed<'a> = &'a Self;
5717        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5718            value
5719        }
5720    }
5721
5722    unsafe impl fidl::encoding::TypeMarker for MlmeDeleteKeysReqRequest {
5723        type Owned = Self;
5724
5725        #[inline(always)]
5726        fn inline_align(_context: fidl::encoding::Context) -> usize {
5727            8
5728        }
5729
5730        #[inline(always)]
5731        fn inline_size(_context: fidl::encoding::Context) -> usize {
5732            16
5733        }
5734    }
5735
5736    unsafe impl<D: fidl::encoding::ResourceDialect>
5737        fidl::encoding::Encode<MlmeDeleteKeysReqRequest, D> for &MlmeDeleteKeysReqRequest
5738    {
5739        #[inline]
5740        unsafe fn encode(
5741            self,
5742            encoder: &mut fidl::encoding::Encoder<'_, D>,
5743            offset: usize,
5744            _depth: fidl::encoding::Depth,
5745        ) -> fidl::Result<()> {
5746            encoder.debug_check_bounds::<MlmeDeleteKeysReqRequest>(offset);
5747            // Delegate to tuple encoding.
5748            fidl::encoding::Encode::<MlmeDeleteKeysReqRequest, D>::encode(
5749                (<DeleteKeysRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
5750                encoder,
5751                offset,
5752                _depth,
5753            )
5754        }
5755    }
5756    unsafe impl<
5757        D: fidl::encoding::ResourceDialect,
5758        T0: fidl::encoding::Encode<DeleteKeysRequest, D>,
5759    > fidl::encoding::Encode<MlmeDeleteKeysReqRequest, D> for (T0,)
5760    {
5761        #[inline]
5762        unsafe fn encode(
5763            self,
5764            encoder: &mut fidl::encoding::Encoder<'_, D>,
5765            offset: usize,
5766            depth: fidl::encoding::Depth,
5767        ) -> fidl::Result<()> {
5768            encoder.debug_check_bounds::<MlmeDeleteKeysReqRequest>(offset);
5769            // Zero out padding regions. There's no need to apply masks
5770            // because the unmasked parts will be overwritten by fields.
5771            // Write the fields.
5772            self.0.encode(encoder, offset + 0, depth)?;
5773            Ok(())
5774        }
5775    }
5776
5777    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5778        for MlmeDeleteKeysReqRequest
5779    {
5780        #[inline(always)]
5781        fn new_empty() -> Self {
5782            Self { req: fidl::new_empty!(DeleteKeysRequest, D) }
5783        }
5784
5785        #[inline]
5786        unsafe fn decode(
5787            &mut self,
5788            decoder: &mut fidl::encoding::Decoder<'_, D>,
5789            offset: usize,
5790            _depth: fidl::encoding::Depth,
5791        ) -> fidl::Result<()> {
5792            decoder.debug_check_bounds::<Self>(offset);
5793            // Verify that padding bytes are zero.
5794            fidl::decode!(DeleteKeysRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
5795            Ok(())
5796        }
5797    }
5798
5799    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateConfRequest {
5800        type Borrowed<'a> = &'a Self;
5801        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5802            value
5803        }
5804    }
5805
5806    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateConfRequest {
5807        type Owned = Self;
5808
5809        #[inline(always)]
5810        fn inline_align(_context: fidl::encoding::Context) -> usize {
5811            4
5812        }
5813
5814        #[inline(always)]
5815        fn inline_size(_context: fidl::encoding::Context) -> usize {
5816            4
5817        }
5818        #[inline(always)]
5819        fn encode_is_copy() -> bool {
5820            true
5821        }
5822
5823        #[inline(always)]
5824        fn decode_is_copy() -> bool {
5825            true
5826        }
5827    }
5828
5829    unsafe impl<D: fidl::encoding::ResourceDialect>
5830        fidl::encoding::Encode<MlmeDisassociateConfRequest, D> for &MlmeDisassociateConfRequest
5831    {
5832        #[inline]
5833        unsafe fn encode(
5834            self,
5835            encoder: &mut fidl::encoding::Encoder<'_, D>,
5836            offset: usize,
5837            _depth: fidl::encoding::Depth,
5838        ) -> fidl::Result<()> {
5839            encoder.debug_check_bounds::<MlmeDisassociateConfRequest>(offset);
5840            unsafe {
5841                // Copy the object into the buffer.
5842                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
5843                (buf_ptr as *mut MlmeDisassociateConfRequest)
5844                    .write_unaligned((self as *const MlmeDisassociateConfRequest).read());
5845                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
5846                // done second because the memcpy will write garbage to these bytes.
5847            }
5848            Ok(())
5849        }
5850    }
5851    unsafe impl<
5852        D: fidl::encoding::ResourceDialect,
5853        T0: fidl::encoding::Encode<DisassociateConfirm, D>,
5854    > fidl::encoding::Encode<MlmeDisassociateConfRequest, D> for (T0,)
5855    {
5856        #[inline]
5857        unsafe fn encode(
5858            self,
5859            encoder: &mut fidl::encoding::Encoder<'_, D>,
5860            offset: usize,
5861            depth: fidl::encoding::Depth,
5862        ) -> fidl::Result<()> {
5863            encoder.debug_check_bounds::<MlmeDisassociateConfRequest>(offset);
5864            // Zero out padding regions. There's no need to apply masks
5865            // because the unmasked parts will be overwritten by fields.
5866            // Write the fields.
5867            self.0.encode(encoder, offset + 0, depth)?;
5868            Ok(())
5869        }
5870    }
5871
5872    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5873        for MlmeDisassociateConfRequest
5874    {
5875        #[inline(always)]
5876        fn new_empty() -> Self {
5877            Self { resp: fidl::new_empty!(DisassociateConfirm, D) }
5878        }
5879
5880        #[inline]
5881        unsafe fn decode(
5882            &mut self,
5883            decoder: &mut fidl::encoding::Decoder<'_, D>,
5884            offset: usize,
5885            _depth: fidl::encoding::Depth,
5886        ) -> fidl::Result<()> {
5887            decoder.debug_check_bounds::<Self>(offset);
5888            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
5889            // Verify that padding bytes are zero.
5890            // Copy from the buffer into the object.
5891            unsafe {
5892                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
5893            }
5894            Ok(())
5895        }
5896    }
5897
5898    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateIndRequest {
5899        type Borrowed<'a> = &'a Self;
5900        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5901            value
5902        }
5903    }
5904
5905    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateIndRequest {
5906        type Owned = Self;
5907
5908        #[inline(always)]
5909        fn inline_align(_context: fidl::encoding::Context) -> usize {
5910            2
5911        }
5912
5913        #[inline(always)]
5914        fn inline_size(_context: fidl::encoding::Context) -> usize {
5915            10
5916        }
5917    }
5918
5919    unsafe impl<D: fidl::encoding::ResourceDialect>
5920        fidl::encoding::Encode<MlmeDisassociateIndRequest, D> for &MlmeDisassociateIndRequest
5921    {
5922        #[inline]
5923        unsafe fn encode(
5924            self,
5925            encoder: &mut fidl::encoding::Encoder<'_, D>,
5926            offset: usize,
5927            _depth: fidl::encoding::Depth,
5928        ) -> fidl::Result<()> {
5929            encoder.debug_check_bounds::<MlmeDisassociateIndRequest>(offset);
5930            // Delegate to tuple encoding.
5931            fidl::encoding::Encode::<MlmeDisassociateIndRequest, D>::encode(
5932                (<DisassociateIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
5933                encoder,
5934                offset,
5935                _depth,
5936            )
5937        }
5938    }
5939    unsafe impl<
5940        D: fidl::encoding::ResourceDialect,
5941        T0: fidl::encoding::Encode<DisassociateIndication, D>,
5942    > fidl::encoding::Encode<MlmeDisassociateIndRequest, D> for (T0,)
5943    {
5944        #[inline]
5945        unsafe fn encode(
5946            self,
5947            encoder: &mut fidl::encoding::Encoder<'_, D>,
5948            offset: usize,
5949            depth: fidl::encoding::Depth,
5950        ) -> fidl::Result<()> {
5951            encoder.debug_check_bounds::<MlmeDisassociateIndRequest>(offset);
5952            // Zero out padding regions. There's no need to apply masks
5953            // because the unmasked parts will be overwritten by fields.
5954            // Write the fields.
5955            self.0.encode(encoder, offset + 0, depth)?;
5956            Ok(())
5957        }
5958    }
5959
5960    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5961        for MlmeDisassociateIndRequest
5962    {
5963        #[inline(always)]
5964        fn new_empty() -> Self {
5965            Self { ind: fidl::new_empty!(DisassociateIndication, D) }
5966        }
5967
5968        #[inline]
5969        unsafe fn decode(
5970            &mut self,
5971            decoder: &mut fidl::encoding::Decoder<'_, D>,
5972            offset: usize,
5973            _depth: fidl::encoding::Depth,
5974        ) -> fidl::Result<()> {
5975            decoder.debug_check_bounds::<Self>(offset);
5976            // Verify that padding bytes are zero.
5977            fidl::decode!(DisassociateIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
5978            Ok(())
5979        }
5980    }
5981
5982    impl fidl::encoding::ValueTypeMarker for MlmeDisassociateReqRequest {
5983        type Borrowed<'a> = &'a Self;
5984        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5985            value
5986        }
5987    }
5988
5989    unsafe impl fidl::encoding::TypeMarker for MlmeDisassociateReqRequest {
5990        type Owned = Self;
5991
5992        #[inline(always)]
5993        fn inline_align(_context: fidl::encoding::Context) -> usize {
5994            2
5995        }
5996
5997        #[inline(always)]
5998        fn inline_size(_context: fidl::encoding::Context) -> usize {
5999            8
6000        }
6001    }
6002
6003    unsafe impl<D: fidl::encoding::ResourceDialect>
6004        fidl::encoding::Encode<MlmeDisassociateReqRequest, D> for &MlmeDisassociateReqRequest
6005    {
6006        #[inline]
6007        unsafe fn encode(
6008            self,
6009            encoder: &mut fidl::encoding::Encoder<'_, D>,
6010            offset: usize,
6011            _depth: fidl::encoding::Depth,
6012        ) -> fidl::Result<()> {
6013            encoder.debug_check_bounds::<MlmeDisassociateReqRequest>(offset);
6014            // Delegate to tuple encoding.
6015            fidl::encoding::Encode::<MlmeDisassociateReqRequest, D>::encode(
6016                (<DisassociateRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6017                encoder,
6018                offset,
6019                _depth,
6020            )
6021        }
6022    }
6023    unsafe impl<
6024        D: fidl::encoding::ResourceDialect,
6025        T0: fidl::encoding::Encode<DisassociateRequest, D>,
6026    > fidl::encoding::Encode<MlmeDisassociateReqRequest, D> for (T0,)
6027    {
6028        #[inline]
6029        unsafe fn encode(
6030            self,
6031            encoder: &mut fidl::encoding::Encoder<'_, D>,
6032            offset: usize,
6033            depth: fidl::encoding::Depth,
6034        ) -> fidl::Result<()> {
6035            encoder.debug_check_bounds::<MlmeDisassociateReqRequest>(offset);
6036            // Zero out padding regions. There's no need to apply masks
6037            // because the unmasked parts will be overwritten by fields.
6038            // Write the fields.
6039            self.0.encode(encoder, offset + 0, depth)?;
6040            Ok(())
6041        }
6042    }
6043
6044    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6045        for MlmeDisassociateReqRequest
6046    {
6047        #[inline(always)]
6048        fn new_empty() -> Self {
6049            Self { req: fidl::new_empty!(DisassociateRequest, D) }
6050        }
6051
6052        #[inline]
6053        unsafe fn decode(
6054            &mut self,
6055            decoder: &mut fidl::encoding::Decoder<'_, D>,
6056            offset: usize,
6057            _depth: fidl::encoding::Depth,
6058        ) -> fidl::Result<()> {
6059            decoder.debug_check_bounds::<Self>(offset);
6060            // Verify that padding bytes are zero.
6061            fidl::decode!(DisassociateRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6062            Ok(())
6063        }
6064    }
6065
6066    impl fidl::encoding::ValueTypeMarker for MlmeEapolConfRequest {
6067        type Borrowed<'a> = &'a Self;
6068        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6069            value
6070        }
6071    }
6072
6073    unsafe impl fidl::encoding::TypeMarker for MlmeEapolConfRequest {
6074        type Owned = Self;
6075
6076        #[inline(always)]
6077        fn inline_align(_context: fidl::encoding::Context) -> usize {
6078            4
6079        }
6080
6081        #[inline(always)]
6082        fn inline_size(_context: fidl::encoding::Context) -> usize {
6083            12
6084        }
6085    }
6086
6087    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolConfRequest, D>
6088        for &MlmeEapolConfRequest
6089    {
6090        #[inline]
6091        unsafe fn encode(
6092            self,
6093            encoder: &mut fidl::encoding::Encoder<'_, D>,
6094            offset: usize,
6095            _depth: fidl::encoding::Depth,
6096        ) -> fidl::Result<()> {
6097            encoder.debug_check_bounds::<MlmeEapolConfRequest>(offset);
6098            // Delegate to tuple encoding.
6099            fidl::encoding::Encode::<MlmeEapolConfRequest, D>::encode(
6100                (<EapolConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6101                encoder,
6102                offset,
6103                _depth,
6104            )
6105        }
6106    }
6107    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolConfirm, D>>
6108        fidl::encoding::Encode<MlmeEapolConfRequest, D> for (T0,)
6109    {
6110        #[inline]
6111        unsafe fn encode(
6112            self,
6113            encoder: &mut fidl::encoding::Encoder<'_, D>,
6114            offset: usize,
6115            depth: fidl::encoding::Depth,
6116        ) -> fidl::Result<()> {
6117            encoder.debug_check_bounds::<MlmeEapolConfRequest>(offset);
6118            // Zero out padding regions. There's no need to apply masks
6119            // because the unmasked parts will be overwritten by fields.
6120            // Write the fields.
6121            self.0.encode(encoder, offset + 0, depth)?;
6122            Ok(())
6123        }
6124    }
6125
6126    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolConfRequest {
6127        #[inline(always)]
6128        fn new_empty() -> Self {
6129            Self { resp: fidl::new_empty!(EapolConfirm, D) }
6130        }
6131
6132        #[inline]
6133        unsafe fn decode(
6134            &mut self,
6135            decoder: &mut fidl::encoding::Decoder<'_, D>,
6136            offset: usize,
6137            _depth: fidl::encoding::Depth,
6138        ) -> fidl::Result<()> {
6139            decoder.debug_check_bounds::<Self>(offset);
6140            // Verify that padding bytes are zero.
6141            fidl::decode!(EapolConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
6142            Ok(())
6143        }
6144    }
6145
6146    impl fidl::encoding::ValueTypeMarker for MlmeEapolIndRequest {
6147        type Borrowed<'a> = &'a Self;
6148        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6149            value
6150        }
6151    }
6152
6153    unsafe impl fidl::encoding::TypeMarker for MlmeEapolIndRequest {
6154        type Owned = Self;
6155
6156        #[inline(always)]
6157        fn inline_align(_context: fidl::encoding::Context) -> usize {
6158            8
6159        }
6160
6161        #[inline(always)]
6162        fn inline_size(_context: fidl::encoding::Context) -> usize {
6163            32
6164        }
6165    }
6166
6167    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolIndRequest, D>
6168        for &MlmeEapolIndRequest
6169    {
6170        #[inline]
6171        unsafe fn encode(
6172            self,
6173            encoder: &mut fidl::encoding::Encoder<'_, D>,
6174            offset: usize,
6175            _depth: fidl::encoding::Depth,
6176        ) -> fidl::Result<()> {
6177            encoder.debug_check_bounds::<MlmeEapolIndRequest>(offset);
6178            // Delegate to tuple encoding.
6179            fidl::encoding::Encode::<MlmeEapolIndRequest, D>::encode(
6180                (<EapolIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
6181                encoder,
6182                offset,
6183                _depth,
6184            )
6185        }
6186    }
6187    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolIndication, D>>
6188        fidl::encoding::Encode<MlmeEapolIndRequest, D> for (T0,)
6189    {
6190        #[inline]
6191        unsafe fn encode(
6192            self,
6193            encoder: &mut fidl::encoding::Encoder<'_, D>,
6194            offset: usize,
6195            depth: fidl::encoding::Depth,
6196        ) -> fidl::Result<()> {
6197            encoder.debug_check_bounds::<MlmeEapolIndRequest>(offset);
6198            // Zero out padding regions. There's no need to apply masks
6199            // because the unmasked parts will be overwritten by fields.
6200            // Write the fields.
6201            self.0.encode(encoder, offset + 0, depth)?;
6202            Ok(())
6203        }
6204    }
6205
6206    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolIndRequest {
6207        #[inline(always)]
6208        fn new_empty() -> Self {
6209            Self { ind: fidl::new_empty!(EapolIndication, D) }
6210        }
6211
6212        #[inline]
6213        unsafe fn decode(
6214            &mut self,
6215            decoder: &mut fidl::encoding::Decoder<'_, D>,
6216            offset: usize,
6217            _depth: fidl::encoding::Depth,
6218        ) -> fidl::Result<()> {
6219            decoder.debug_check_bounds::<Self>(offset);
6220            // Verify that padding bytes are zero.
6221            fidl::decode!(EapolIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
6222            Ok(())
6223        }
6224    }
6225
6226    impl fidl::encoding::ValueTypeMarker for MlmeEapolReqRequest {
6227        type Borrowed<'a> = &'a Self;
6228        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6229            value
6230        }
6231    }
6232
6233    unsafe impl fidl::encoding::TypeMarker for MlmeEapolReqRequest {
6234        type Owned = Self;
6235
6236        #[inline(always)]
6237        fn inline_align(_context: fidl::encoding::Context) -> usize {
6238            8
6239        }
6240
6241        #[inline(always)]
6242        fn inline_size(_context: fidl::encoding::Context) -> usize {
6243            32
6244        }
6245    }
6246
6247    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeEapolReqRequest, D>
6248        for &MlmeEapolReqRequest
6249    {
6250        #[inline]
6251        unsafe fn encode(
6252            self,
6253            encoder: &mut fidl::encoding::Encoder<'_, D>,
6254            offset: usize,
6255            _depth: fidl::encoding::Depth,
6256        ) -> fidl::Result<()> {
6257            encoder.debug_check_bounds::<MlmeEapolReqRequest>(offset);
6258            // Delegate to tuple encoding.
6259            fidl::encoding::Encode::<MlmeEapolReqRequest, D>::encode(
6260                (<EapolRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
6261                encoder,
6262                offset,
6263                _depth,
6264            )
6265        }
6266    }
6267    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<EapolRequest, D>>
6268        fidl::encoding::Encode<MlmeEapolReqRequest, D> for (T0,)
6269    {
6270        #[inline]
6271        unsafe fn encode(
6272            self,
6273            encoder: &mut fidl::encoding::Encoder<'_, D>,
6274            offset: usize,
6275            depth: fidl::encoding::Depth,
6276        ) -> fidl::Result<()> {
6277            encoder.debug_check_bounds::<MlmeEapolReqRequest>(offset);
6278            // Zero out padding regions. There's no need to apply masks
6279            // because the unmasked parts will be overwritten by fields.
6280            // Write the fields.
6281            self.0.encode(encoder, offset + 0, depth)?;
6282            Ok(())
6283        }
6284    }
6285
6286    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeEapolReqRequest {
6287        #[inline(always)]
6288        fn new_empty() -> Self {
6289            Self { req: fidl::new_empty!(EapolRequest, D) }
6290        }
6291
6292        #[inline]
6293        unsafe fn decode(
6294            &mut self,
6295            decoder: &mut fidl::encoding::Decoder<'_, D>,
6296            offset: usize,
6297            _depth: fidl::encoding::Depth,
6298        ) -> fidl::Result<()> {
6299            decoder.debug_check_bounds::<Self>(offset);
6300            // Verify that padding bytes are zero.
6301            fidl::decode!(EapolRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
6302            Ok(())
6303        }
6304    }
6305
6306    impl fidl::encoding::ValueTypeMarker for MlmeFinalizeAssociationReqRequest {
6307        type Borrowed<'a> = &'a Self;
6308        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6309            value
6310        }
6311    }
6312
6313    unsafe impl fidl::encoding::TypeMarker for MlmeFinalizeAssociationReqRequest {
6314        type Owned = Self;
6315
6316        #[inline(always)]
6317        fn inline_align(_context: fidl::encoding::Context) -> usize {
6318            8
6319        }
6320
6321        #[inline(always)]
6322        fn inline_size(_context: fidl::encoding::Context) -> usize {
6323            56
6324        }
6325    }
6326
6327    unsafe impl<D: fidl::encoding::ResourceDialect>
6328        fidl::encoding::Encode<MlmeFinalizeAssociationReqRequest, D>
6329        for &MlmeFinalizeAssociationReqRequest
6330    {
6331        #[inline]
6332        unsafe fn encode(
6333            self,
6334            encoder: &mut fidl::encoding::Encoder<'_, D>,
6335            offset: usize,
6336            _depth: fidl::encoding::Depth,
6337        ) -> fidl::Result<()> {
6338            encoder.debug_check_bounds::<MlmeFinalizeAssociationReqRequest>(offset);
6339            // Delegate to tuple encoding.
6340            fidl::encoding::Encode::<MlmeFinalizeAssociationReqRequest, D>::encode(
6341                (<NegotiatedCapabilities as fidl::encoding::ValueTypeMarker>::borrow(
6342                    &self.negotiated_capabilities,
6343                ),),
6344                encoder,
6345                offset,
6346                _depth,
6347            )
6348        }
6349    }
6350    unsafe impl<
6351        D: fidl::encoding::ResourceDialect,
6352        T0: fidl::encoding::Encode<NegotiatedCapabilities, D>,
6353    > fidl::encoding::Encode<MlmeFinalizeAssociationReqRequest, D> for (T0,)
6354    {
6355        #[inline]
6356        unsafe fn encode(
6357            self,
6358            encoder: &mut fidl::encoding::Encoder<'_, D>,
6359            offset: usize,
6360            depth: fidl::encoding::Depth,
6361        ) -> fidl::Result<()> {
6362            encoder.debug_check_bounds::<MlmeFinalizeAssociationReqRequest>(offset);
6363            // Zero out padding regions. There's no need to apply masks
6364            // because the unmasked parts will be overwritten by fields.
6365            // Write the fields.
6366            self.0.encode(encoder, offset + 0, depth)?;
6367            Ok(())
6368        }
6369    }
6370
6371    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6372        for MlmeFinalizeAssociationReqRequest
6373    {
6374        #[inline(always)]
6375        fn new_empty() -> Self {
6376            Self { negotiated_capabilities: fidl::new_empty!(NegotiatedCapabilities, D) }
6377        }
6378
6379        #[inline]
6380        unsafe fn decode(
6381            &mut self,
6382            decoder: &mut fidl::encoding::Decoder<'_, D>,
6383            offset: usize,
6384            _depth: fidl::encoding::Depth,
6385        ) -> fidl::Result<()> {
6386            decoder.debug_check_bounds::<Self>(offset);
6387            // Verify that padding bytes are zero.
6388            fidl::decode!(
6389                NegotiatedCapabilities,
6390                D,
6391                &mut self.negotiated_capabilities,
6392                decoder,
6393                offset + 0,
6394                _depth
6395            )?;
6396            Ok(())
6397        }
6398    }
6399
6400    impl fidl::encoding::ValueTypeMarker for MlmeGetIfaceHistogramStatsResponse {
6401        type Borrowed<'a> = &'a Self;
6402        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6403            value
6404        }
6405    }
6406
6407    unsafe impl fidl::encoding::TypeMarker for MlmeGetIfaceHistogramStatsResponse {
6408        type Owned = Self;
6409
6410        #[inline(always)]
6411        fn inline_align(_context: fidl::encoding::Context) -> usize {
6412            8
6413        }
6414
6415        #[inline(always)]
6416        fn inline_size(_context: fidl::encoding::Context) -> usize {
6417            16
6418        }
6419    }
6420
6421    unsafe impl<D: fidl::encoding::ResourceDialect>
6422        fidl::encoding::Encode<MlmeGetIfaceHistogramStatsResponse, D>
6423        for &MlmeGetIfaceHistogramStatsResponse
6424    {
6425        #[inline]
6426        unsafe fn encode(
6427            self,
6428            encoder: &mut fidl::encoding::Encoder<'_, D>,
6429            offset: usize,
6430            _depth: fidl::encoding::Depth,
6431        ) -> fidl::Result<()> {
6432            encoder.debug_check_bounds::<MlmeGetIfaceHistogramStatsResponse>(offset);
6433            // Delegate to tuple encoding.
6434            fidl::encoding::Encode::<MlmeGetIfaceHistogramStatsResponse, D>::encode(
6435                (<GetIfaceHistogramStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(
6436                    &self.resp,
6437                ),),
6438                encoder,
6439                offset,
6440                _depth,
6441            )
6442        }
6443    }
6444    unsafe impl<
6445        D: fidl::encoding::ResourceDialect,
6446        T0: fidl::encoding::Encode<GetIfaceHistogramStatsResponse, D>,
6447    > fidl::encoding::Encode<MlmeGetIfaceHistogramStatsResponse, D> for (T0,)
6448    {
6449        #[inline]
6450        unsafe fn encode(
6451            self,
6452            encoder: &mut fidl::encoding::Encoder<'_, D>,
6453            offset: usize,
6454            depth: fidl::encoding::Depth,
6455        ) -> fidl::Result<()> {
6456            encoder.debug_check_bounds::<MlmeGetIfaceHistogramStatsResponse>(offset);
6457            // Zero out padding regions. There's no need to apply masks
6458            // because the unmasked parts will be overwritten by fields.
6459            // Write the fields.
6460            self.0.encode(encoder, offset + 0, depth)?;
6461            Ok(())
6462        }
6463    }
6464
6465    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6466        for MlmeGetIfaceHistogramStatsResponse
6467    {
6468        #[inline(always)]
6469        fn new_empty() -> Self {
6470            Self { resp: fidl::new_empty!(GetIfaceHistogramStatsResponse, D) }
6471        }
6472
6473        #[inline]
6474        unsafe fn decode(
6475            &mut self,
6476            decoder: &mut fidl::encoding::Decoder<'_, D>,
6477            offset: usize,
6478            _depth: fidl::encoding::Depth,
6479        ) -> fidl::Result<()> {
6480            decoder.debug_check_bounds::<Self>(offset);
6481            // Verify that padding bytes are zero.
6482            fidl::decode!(
6483                GetIfaceHistogramStatsResponse,
6484                D,
6485                &mut self.resp,
6486                decoder,
6487                offset + 0,
6488                _depth
6489            )?;
6490            Ok(())
6491        }
6492    }
6493
6494    impl fidl::encoding::ValueTypeMarker for MlmeGetIfaceStatsResponse {
6495        type Borrowed<'a> = &'a Self;
6496        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6497            value
6498        }
6499    }
6500
6501    unsafe impl fidl::encoding::TypeMarker for MlmeGetIfaceStatsResponse {
6502        type Owned = Self;
6503
6504        #[inline(always)]
6505        fn inline_align(_context: fidl::encoding::Context) -> usize {
6506            8
6507        }
6508
6509        #[inline(always)]
6510        fn inline_size(_context: fidl::encoding::Context) -> usize {
6511            16
6512        }
6513    }
6514
6515    unsafe impl<D: fidl::encoding::ResourceDialect>
6516        fidl::encoding::Encode<MlmeGetIfaceStatsResponse, D> for &MlmeGetIfaceStatsResponse
6517    {
6518        #[inline]
6519        unsafe fn encode(
6520            self,
6521            encoder: &mut fidl::encoding::Encoder<'_, D>,
6522            offset: usize,
6523            _depth: fidl::encoding::Depth,
6524        ) -> fidl::Result<()> {
6525            encoder.debug_check_bounds::<MlmeGetIfaceStatsResponse>(offset);
6526            // Delegate to tuple encoding.
6527            fidl::encoding::Encode::<MlmeGetIfaceStatsResponse, D>::encode(
6528                (<GetIfaceStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6529                encoder,
6530                offset,
6531                _depth,
6532            )
6533        }
6534    }
6535    unsafe impl<
6536        D: fidl::encoding::ResourceDialect,
6537        T0: fidl::encoding::Encode<GetIfaceStatsResponse, D>,
6538    > fidl::encoding::Encode<MlmeGetIfaceStatsResponse, D> for (T0,)
6539    {
6540        #[inline]
6541        unsafe fn encode(
6542            self,
6543            encoder: &mut fidl::encoding::Encoder<'_, D>,
6544            offset: usize,
6545            depth: fidl::encoding::Depth,
6546        ) -> fidl::Result<()> {
6547            encoder.debug_check_bounds::<MlmeGetIfaceStatsResponse>(offset);
6548            // Zero out padding regions. There's no need to apply masks
6549            // because the unmasked parts will be overwritten by fields.
6550            // Write the fields.
6551            self.0.encode(encoder, offset + 0, depth)?;
6552            Ok(())
6553        }
6554    }
6555
6556    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6557        for MlmeGetIfaceStatsResponse
6558    {
6559        #[inline(always)]
6560        fn new_empty() -> Self {
6561            Self { resp: fidl::new_empty!(GetIfaceStatsResponse, D) }
6562        }
6563
6564        #[inline]
6565        unsafe fn decode(
6566            &mut self,
6567            decoder: &mut fidl::encoding::Decoder<'_, D>,
6568            offset: usize,
6569            _depth: fidl::encoding::Depth,
6570        ) -> fidl::Result<()> {
6571            decoder.debug_check_bounds::<Self>(offset);
6572            // Verify that padding bytes are zero.
6573            fidl::decode!(GetIfaceStatsResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
6574            Ok(())
6575        }
6576    }
6577
6578    impl fidl::encoding::ValueTypeMarker for MlmeGetMinstrelStatsRequest {
6579        type Borrowed<'a> = &'a Self;
6580        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6581            value
6582        }
6583    }
6584
6585    unsafe impl fidl::encoding::TypeMarker for MlmeGetMinstrelStatsRequest {
6586        type Owned = Self;
6587
6588        #[inline(always)]
6589        fn inline_align(_context: fidl::encoding::Context) -> usize {
6590            1
6591        }
6592
6593        #[inline(always)]
6594        fn inline_size(_context: fidl::encoding::Context) -> usize {
6595            6
6596        }
6597        #[inline(always)]
6598        fn encode_is_copy() -> bool {
6599            true
6600        }
6601
6602        #[inline(always)]
6603        fn decode_is_copy() -> bool {
6604            true
6605        }
6606    }
6607
6608    unsafe impl<D: fidl::encoding::ResourceDialect>
6609        fidl::encoding::Encode<MlmeGetMinstrelStatsRequest, D> for &MlmeGetMinstrelStatsRequest
6610    {
6611        #[inline]
6612        unsafe fn encode(
6613            self,
6614            encoder: &mut fidl::encoding::Encoder<'_, D>,
6615            offset: usize,
6616            _depth: fidl::encoding::Depth,
6617        ) -> fidl::Result<()> {
6618            encoder.debug_check_bounds::<MlmeGetMinstrelStatsRequest>(offset);
6619            unsafe {
6620                // Copy the object into the buffer.
6621                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
6622                (buf_ptr as *mut MlmeGetMinstrelStatsRequest)
6623                    .write_unaligned((self as *const MlmeGetMinstrelStatsRequest).read());
6624                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
6625                // done second because the memcpy will write garbage to these bytes.
6626            }
6627            Ok(())
6628        }
6629    }
6630    unsafe impl<
6631        D: fidl::encoding::ResourceDialect,
6632        T0: fidl::encoding::Encode<MinstrelStatsRequest, D>,
6633    > fidl::encoding::Encode<MlmeGetMinstrelStatsRequest, D> for (T0,)
6634    {
6635        #[inline]
6636        unsafe fn encode(
6637            self,
6638            encoder: &mut fidl::encoding::Encoder<'_, D>,
6639            offset: usize,
6640            depth: fidl::encoding::Depth,
6641        ) -> fidl::Result<()> {
6642            encoder.debug_check_bounds::<MlmeGetMinstrelStatsRequest>(offset);
6643            // Zero out padding regions. There's no need to apply masks
6644            // because the unmasked parts will be overwritten by fields.
6645            // Write the fields.
6646            self.0.encode(encoder, offset + 0, depth)?;
6647            Ok(())
6648        }
6649    }
6650
6651    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6652        for MlmeGetMinstrelStatsRequest
6653    {
6654        #[inline(always)]
6655        fn new_empty() -> Self {
6656            Self { req: fidl::new_empty!(MinstrelStatsRequest, D) }
6657        }
6658
6659        #[inline]
6660        unsafe fn decode(
6661            &mut self,
6662            decoder: &mut fidl::encoding::Decoder<'_, D>,
6663            offset: usize,
6664            _depth: fidl::encoding::Depth,
6665        ) -> fidl::Result<()> {
6666            decoder.debug_check_bounds::<Self>(offset);
6667            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
6668            // Verify that padding bytes are zero.
6669            // Copy from the buffer into the object.
6670            unsafe {
6671                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
6672            }
6673            Ok(())
6674        }
6675    }
6676
6677    impl fidl::encoding::ValueTypeMarker for MlmeGetMinstrelStatsResponse {
6678        type Borrowed<'a> = &'a Self;
6679        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6680            value
6681        }
6682    }
6683
6684    unsafe impl fidl::encoding::TypeMarker for MlmeGetMinstrelStatsResponse {
6685        type Owned = Self;
6686
6687        #[inline(always)]
6688        fn inline_align(_context: fidl::encoding::Context) -> usize {
6689            8
6690        }
6691
6692        #[inline(always)]
6693        fn inline_size(_context: fidl::encoding::Context) -> usize {
6694            8
6695        }
6696    }
6697
6698    unsafe impl<D: fidl::encoding::ResourceDialect>
6699        fidl::encoding::Encode<MlmeGetMinstrelStatsResponse, D> for &MlmeGetMinstrelStatsResponse
6700    {
6701        #[inline]
6702        unsafe fn encode(
6703            self,
6704            encoder: &mut fidl::encoding::Encoder<'_, D>,
6705            offset: usize,
6706            _depth: fidl::encoding::Depth,
6707        ) -> fidl::Result<()> {
6708            encoder.debug_check_bounds::<MlmeGetMinstrelStatsResponse>(offset);
6709            // Delegate to tuple encoding.
6710            fidl::encoding::Encode::<MlmeGetMinstrelStatsResponse, D>::encode(
6711                (<MinstrelStatsResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6712                encoder,
6713                offset,
6714                _depth,
6715            )
6716        }
6717    }
6718    unsafe impl<
6719        D: fidl::encoding::ResourceDialect,
6720        T0: fidl::encoding::Encode<MinstrelStatsResponse, D>,
6721    > fidl::encoding::Encode<MlmeGetMinstrelStatsResponse, D> for (T0,)
6722    {
6723        #[inline]
6724        unsafe fn encode(
6725            self,
6726            encoder: &mut fidl::encoding::Encoder<'_, D>,
6727            offset: usize,
6728            depth: fidl::encoding::Depth,
6729        ) -> fidl::Result<()> {
6730            encoder.debug_check_bounds::<MlmeGetMinstrelStatsResponse>(offset);
6731            // Zero out padding regions. There's no need to apply masks
6732            // because the unmasked parts will be overwritten by fields.
6733            // Write the fields.
6734            self.0.encode(encoder, offset + 0, depth)?;
6735            Ok(())
6736        }
6737    }
6738
6739    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6740        for MlmeGetMinstrelStatsResponse
6741    {
6742        #[inline(always)]
6743        fn new_empty() -> Self {
6744            Self { resp: fidl::new_empty!(MinstrelStatsResponse, D) }
6745        }
6746
6747        #[inline]
6748        unsafe fn decode(
6749            &mut self,
6750            decoder: &mut fidl::encoding::Decoder<'_, D>,
6751            offset: usize,
6752            _depth: fidl::encoding::Depth,
6753        ) -> fidl::Result<()> {
6754            decoder.debug_check_bounds::<Self>(offset);
6755            // Verify that padding bytes are zero.
6756            fidl::decode!(MinstrelStatsResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
6757            Ok(())
6758        }
6759    }
6760
6761    impl fidl::encoding::ValueTypeMarker for MlmeListMinstrelPeersResponse {
6762        type Borrowed<'a> = &'a Self;
6763        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6764            value
6765        }
6766    }
6767
6768    unsafe impl fidl::encoding::TypeMarker for MlmeListMinstrelPeersResponse {
6769        type Owned = Self;
6770
6771        #[inline(always)]
6772        fn inline_align(_context: fidl::encoding::Context) -> usize {
6773            8
6774        }
6775
6776        #[inline(always)]
6777        fn inline_size(_context: fidl::encoding::Context) -> usize {
6778            16
6779        }
6780    }
6781
6782    unsafe impl<D: fidl::encoding::ResourceDialect>
6783        fidl::encoding::Encode<MlmeListMinstrelPeersResponse, D>
6784        for &MlmeListMinstrelPeersResponse
6785    {
6786        #[inline]
6787        unsafe fn encode(
6788            self,
6789            encoder: &mut fidl::encoding::Encoder<'_, D>,
6790            offset: usize,
6791            _depth: fidl::encoding::Depth,
6792        ) -> fidl::Result<()> {
6793            encoder.debug_check_bounds::<MlmeListMinstrelPeersResponse>(offset);
6794            // Delegate to tuple encoding.
6795            fidl::encoding::Encode::<MlmeListMinstrelPeersResponse, D>::encode(
6796                (<MinstrelListResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
6797                encoder,
6798                offset,
6799                _depth,
6800            )
6801        }
6802    }
6803    unsafe impl<
6804        D: fidl::encoding::ResourceDialect,
6805        T0: fidl::encoding::Encode<MinstrelListResponse, D>,
6806    > fidl::encoding::Encode<MlmeListMinstrelPeersResponse, D> for (T0,)
6807    {
6808        #[inline]
6809        unsafe fn encode(
6810            self,
6811            encoder: &mut fidl::encoding::Encoder<'_, D>,
6812            offset: usize,
6813            depth: fidl::encoding::Depth,
6814        ) -> fidl::Result<()> {
6815            encoder.debug_check_bounds::<MlmeListMinstrelPeersResponse>(offset);
6816            // Zero out padding regions. There's no need to apply masks
6817            // because the unmasked parts will be overwritten by fields.
6818            // Write the fields.
6819            self.0.encode(encoder, offset + 0, depth)?;
6820            Ok(())
6821        }
6822    }
6823
6824    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6825        for MlmeListMinstrelPeersResponse
6826    {
6827        #[inline(always)]
6828        fn new_empty() -> Self {
6829            Self { resp: fidl::new_empty!(MinstrelListResponse, D) }
6830        }
6831
6832        #[inline]
6833        unsafe fn decode(
6834            &mut self,
6835            decoder: &mut fidl::encoding::Decoder<'_, D>,
6836            offset: usize,
6837            _depth: fidl::encoding::Depth,
6838        ) -> fidl::Result<()> {
6839            decoder.debug_check_bounds::<Self>(offset);
6840            // Verify that padding bytes are zero.
6841            fidl::decode!(MinstrelListResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
6842            Ok(())
6843        }
6844    }
6845
6846    impl fidl::encoding::ValueTypeMarker for MlmeOnChannelSwitchedRequest {
6847        type Borrowed<'a> = &'a Self;
6848        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6849            value
6850        }
6851    }
6852
6853    unsafe impl fidl::encoding::TypeMarker for MlmeOnChannelSwitchedRequest {
6854        type Owned = Self;
6855
6856        #[inline(always)]
6857        fn inline_align(_context: fidl::encoding::Context) -> usize {
6858            1
6859        }
6860
6861        #[inline(always)]
6862        fn inline_size(_context: fidl::encoding::Context) -> usize {
6863            1
6864        }
6865    }
6866
6867    unsafe impl<D: fidl::encoding::ResourceDialect>
6868        fidl::encoding::Encode<MlmeOnChannelSwitchedRequest, D> for &MlmeOnChannelSwitchedRequest
6869    {
6870        #[inline]
6871        unsafe fn encode(
6872            self,
6873            encoder: &mut fidl::encoding::Encoder<'_, D>,
6874            offset: usize,
6875            _depth: fidl::encoding::Depth,
6876        ) -> fidl::Result<()> {
6877            encoder.debug_check_bounds::<MlmeOnChannelSwitchedRequest>(offset);
6878            // Delegate to tuple encoding.
6879            fidl::encoding::Encode::<MlmeOnChannelSwitchedRequest, D>::encode(
6880                (
6881                    <fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),
6882                ),
6883                encoder, offset, _depth
6884            )
6885        }
6886    }
6887    unsafe impl<
6888        D: fidl::encoding::ResourceDialect,
6889        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo, D>,
6890    > fidl::encoding::Encode<MlmeOnChannelSwitchedRequest, D> for (T0,)
6891    {
6892        #[inline]
6893        unsafe fn encode(
6894            self,
6895            encoder: &mut fidl::encoding::Encoder<'_, D>,
6896            offset: usize,
6897            depth: fidl::encoding::Depth,
6898        ) -> fidl::Result<()> {
6899            encoder.debug_check_bounds::<MlmeOnChannelSwitchedRequest>(offset);
6900            // Zero out padding regions. There's no need to apply masks
6901            // because the unmasked parts will be overwritten by fields.
6902            // Write the fields.
6903            self.0.encode(encoder, offset + 0, depth)?;
6904            Ok(())
6905        }
6906    }
6907
6908    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6909        for MlmeOnChannelSwitchedRequest
6910    {
6911        #[inline(always)]
6912        fn new_empty() -> Self {
6913            Self {
6914                info: fidl::new_empty!(fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo, D),
6915            }
6916        }
6917
6918        #[inline]
6919        unsafe fn decode(
6920            &mut self,
6921            decoder: &mut fidl::encoding::Decoder<'_, D>,
6922            offset: usize,
6923            _depth: fidl::encoding::Depth,
6924        ) -> fidl::Result<()> {
6925            decoder.debug_check_bounds::<Self>(offset);
6926            // Verify that padding bytes are zero.
6927            fidl::decode!(
6928                fidl_fuchsia_wlan_internal__common::ChannelSwitchInfo,
6929                D,
6930                &mut self.info,
6931                decoder,
6932                offset + 0,
6933                _depth
6934            )?;
6935            Ok(())
6936        }
6937    }
6938
6939    impl fidl::encoding::ValueTypeMarker for MlmeOnPmkAvailableRequest {
6940        type Borrowed<'a> = &'a Self;
6941        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6942            value
6943        }
6944    }
6945
6946    unsafe impl fidl::encoding::TypeMarker for MlmeOnPmkAvailableRequest {
6947        type Owned = Self;
6948
6949        #[inline(always)]
6950        fn inline_align(_context: fidl::encoding::Context) -> usize {
6951            8
6952        }
6953
6954        #[inline(always)]
6955        fn inline_size(_context: fidl::encoding::Context) -> usize {
6956            32
6957        }
6958    }
6959
6960    unsafe impl<D: fidl::encoding::ResourceDialect>
6961        fidl::encoding::Encode<MlmeOnPmkAvailableRequest, D> for &MlmeOnPmkAvailableRequest
6962    {
6963        #[inline]
6964        unsafe fn encode(
6965            self,
6966            encoder: &mut fidl::encoding::Encoder<'_, D>,
6967            offset: usize,
6968            _depth: fidl::encoding::Depth,
6969        ) -> fidl::Result<()> {
6970            encoder.debug_check_bounds::<MlmeOnPmkAvailableRequest>(offset);
6971            // Delegate to tuple encoding.
6972            fidl::encoding::Encode::<MlmeOnPmkAvailableRequest, D>::encode(
6973                (<PmkInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
6974                encoder,
6975                offset,
6976                _depth,
6977            )
6978        }
6979    }
6980    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<PmkInfo, D>>
6981        fidl::encoding::Encode<MlmeOnPmkAvailableRequest, D> for (T0,)
6982    {
6983        #[inline]
6984        unsafe fn encode(
6985            self,
6986            encoder: &mut fidl::encoding::Encoder<'_, D>,
6987            offset: usize,
6988            depth: fidl::encoding::Depth,
6989        ) -> fidl::Result<()> {
6990            encoder.debug_check_bounds::<MlmeOnPmkAvailableRequest>(offset);
6991            // Zero out padding regions. There's no need to apply masks
6992            // because the unmasked parts will be overwritten by fields.
6993            // Write the fields.
6994            self.0.encode(encoder, offset + 0, depth)?;
6995            Ok(())
6996        }
6997    }
6998
6999    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7000        for MlmeOnPmkAvailableRequest
7001    {
7002        #[inline(always)]
7003        fn new_empty() -> Self {
7004            Self { info: fidl::new_empty!(PmkInfo, D) }
7005        }
7006
7007        #[inline]
7008        unsafe fn decode(
7009            &mut self,
7010            decoder: &mut fidl::encoding::Decoder<'_, D>,
7011            offset: usize,
7012            _depth: fidl::encoding::Depth,
7013        ) -> fidl::Result<()> {
7014            decoder.debug_check_bounds::<Self>(offset);
7015            // Verify that padding bytes are zero.
7016            fidl::decode!(PmkInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
7017            Ok(())
7018        }
7019    }
7020
7021    impl fidl::encoding::ValueTypeMarker for MlmeOnSaeFrameRxRequest {
7022        type Borrowed<'a> = &'a Self;
7023        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7024            value
7025        }
7026    }
7027
7028    unsafe impl fidl::encoding::TypeMarker for MlmeOnSaeFrameRxRequest {
7029        type Owned = Self;
7030
7031        #[inline(always)]
7032        fn inline_align(_context: fidl::encoding::Context) -> usize {
7033            8
7034        }
7035
7036        #[inline(always)]
7037        fn inline_size(_context: fidl::encoding::Context) -> usize {
7038            32
7039        }
7040    }
7041
7042    unsafe impl<D: fidl::encoding::ResourceDialect>
7043        fidl::encoding::Encode<MlmeOnSaeFrameRxRequest, D> for &MlmeOnSaeFrameRxRequest
7044    {
7045        #[inline]
7046        unsafe fn encode(
7047            self,
7048            encoder: &mut fidl::encoding::Encoder<'_, D>,
7049            offset: usize,
7050            _depth: fidl::encoding::Depth,
7051        ) -> fidl::Result<()> {
7052            encoder.debug_check_bounds::<MlmeOnSaeFrameRxRequest>(offset);
7053            // Delegate to tuple encoding.
7054            fidl::encoding::Encode::<MlmeOnSaeFrameRxRequest, D>::encode(
7055                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
7056                encoder,
7057                offset,
7058                _depth,
7059            )
7060        }
7061    }
7062    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
7063        fidl::encoding::Encode<MlmeOnSaeFrameRxRequest, D> for (T0,)
7064    {
7065        #[inline]
7066        unsafe fn encode(
7067            self,
7068            encoder: &mut fidl::encoding::Encoder<'_, D>,
7069            offset: usize,
7070            depth: fidl::encoding::Depth,
7071        ) -> fidl::Result<()> {
7072            encoder.debug_check_bounds::<MlmeOnSaeFrameRxRequest>(offset);
7073            // Zero out padding regions. There's no need to apply masks
7074            // because the unmasked parts will be overwritten by fields.
7075            // Write the fields.
7076            self.0.encode(encoder, offset + 0, depth)?;
7077            Ok(())
7078        }
7079    }
7080
7081    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7082        for MlmeOnSaeFrameRxRequest
7083    {
7084        #[inline(always)]
7085        fn new_empty() -> Self {
7086            Self { frame: fidl::new_empty!(SaeFrame, D) }
7087        }
7088
7089        #[inline]
7090        unsafe fn decode(
7091            &mut self,
7092            decoder: &mut fidl::encoding::Decoder<'_, D>,
7093            offset: usize,
7094            _depth: fidl::encoding::Depth,
7095        ) -> fidl::Result<()> {
7096            decoder.debug_check_bounds::<Self>(offset);
7097            // Verify that padding bytes are zero.
7098            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
7099            Ok(())
7100        }
7101    }
7102
7103    impl fidl::encoding::ValueTypeMarker for MlmeOnSaeHandshakeIndRequest {
7104        type Borrowed<'a> = &'a Self;
7105        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7106            value
7107        }
7108    }
7109
7110    unsafe impl fidl::encoding::TypeMarker for MlmeOnSaeHandshakeIndRequest {
7111        type Owned = Self;
7112
7113        #[inline(always)]
7114        fn inline_align(_context: fidl::encoding::Context) -> usize {
7115            1
7116        }
7117
7118        #[inline(always)]
7119        fn inline_size(_context: fidl::encoding::Context) -> usize {
7120            6
7121        }
7122        #[inline(always)]
7123        fn encode_is_copy() -> bool {
7124            true
7125        }
7126
7127        #[inline(always)]
7128        fn decode_is_copy() -> bool {
7129            true
7130        }
7131    }
7132
7133    unsafe impl<D: fidl::encoding::ResourceDialect>
7134        fidl::encoding::Encode<MlmeOnSaeHandshakeIndRequest, D> for &MlmeOnSaeHandshakeIndRequest
7135    {
7136        #[inline]
7137        unsafe fn encode(
7138            self,
7139            encoder: &mut fidl::encoding::Encoder<'_, D>,
7140            offset: usize,
7141            _depth: fidl::encoding::Depth,
7142        ) -> fidl::Result<()> {
7143            encoder.debug_check_bounds::<MlmeOnSaeHandshakeIndRequest>(offset);
7144            unsafe {
7145                // Copy the object into the buffer.
7146                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7147                (buf_ptr as *mut MlmeOnSaeHandshakeIndRequest)
7148                    .write_unaligned((self as *const MlmeOnSaeHandshakeIndRequest).read());
7149                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7150                // done second because the memcpy will write garbage to these bytes.
7151            }
7152            Ok(())
7153        }
7154    }
7155    unsafe impl<
7156        D: fidl::encoding::ResourceDialect,
7157        T0: fidl::encoding::Encode<SaeHandshakeIndication, D>,
7158    > fidl::encoding::Encode<MlmeOnSaeHandshakeIndRequest, D> for (T0,)
7159    {
7160        #[inline]
7161        unsafe fn encode(
7162            self,
7163            encoder: &mut fidl::encoding::Encoder<'_, D>,
7164            offset: usize,
7165            depth: fidl::encoding::Depth,
7166        ) -> fidl::Result<()> {
7167            encoder.debug_check_bounds::<MlmeOnSaeHandshakeIndRequest>(offset);
7168            // Zero out padding regions. There's no need to apply masks
7169            // because the unmasked parts will be overwritten by fields.
7170            // Write the fields.
7171            self.0.encode(encoder, offset + 0, depth)?;
7172            Ok(())
7173        }
7174    }
7175
7176    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7177        for MlmeOnSaeHandshakeIndRequest
7178    {
7179        #[inline(always)]
7180        fn new_empty() -> Self {
7181            Self { ind: fidl::new_empty!(SaeHandshakeIndication, D) }
7182        }
7183
7184        #[inline]
7185        unsafe fn decode(
7186            &mut self,
7187            decoder: &mut fidl::encoding::Decoder<'_, D>,
7188            offset: usize,
7189            _depth: fidl::encoding::Depth,
7190        ) -> fidl::Result<()> {
7191            decoder.debug_check_bounds::<Self>(offset);
7192            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7193            // Verify that padding bytes are zero.
7194            // Copy from the buffer into the object.
7195            unsafe {
7196                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
7197            }
7198            Ok(())
7199        }
7200    }
7201
7202    impl fidl::encoding::ValueTypeMarker for MlmeOnScanEndRequest {
7203        type Borrowed<'a> = &'a Self;
7204        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7205            value
7206        }
7207    }
7208
7209    unsafe impl fidl::encoding::TypeMarker for MlmeOnScanEndRequest {
7210        type Owned = Self;
7211
7212        #[inline(always)]
7213        fn inline_align(_context: fidl::encoding::Context) -> usize {
7214            8
7215        }
7216
7217        #[inline(always)]
7218        fn inline_size(_context: fidl::encoding::Context) -> usize {
7219            16
7220        }
7221    }
7222
7223    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeOnScanEndRequest, D>
7224        for &MlmeOnScanEndRequest
7225    {
7226        #[inline]
7227        unsafe fn encode(
7228            self,
7229            encoder: &mut fidl::encoding::Encoder<'_, D>,
7230            offset: usize,
7231            _depth: fidl::encoding::Depth,
7232        ) -> fidl::Result<()> {
7233            encoder.debug_check_bounds::<MlmeOnScanEndRequest>(offset);
7234            // Delegate to tuple encoding.
7235            fidl::encoding::Encode::<MlmeOnScanEndRequest, D>::encode(
7236                (<ScanEnd as fidl::encoding::ValueTypeMarker>::borrow(&self.end),),
7237                encoder,
7238                offset,
7239                _depth,
7240            )
7241        }
7242    }
7243    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanEnd, D>>
7244        fidl::encoding::Encode<MlmeOnScanEndRequest, D> for (T0,)
7245    {
7246        #[inline]
7247        unsafe fn encode(
7248            self,
7249            encoder: &mut fidl::encoding::Encoder<'_, D>,
7250            offset: usize,
7251            depth: fidl::encoding::Depth,
7252        ) -> fidl::Result<()> {
7253            encoder.debug_check_bounds::<MlmeOnScanEndRequest>(offset);
7254            // Zero out padding regions. There's no need to apply masks
7255            // because the unmasked parts will be overwritten by fields.
7256            // Write the fields.
7257            self.0.encode(encoder, offset + 0, depth)?;
7258            Ok(())
7259        }
7260    }
7261
7262    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeOnScanEndRequest {
7263        #[inline(always)]
7264        fn new_empty() -> Self {
7265            Self { end: fidl::new_empty!(ScanEnd, D) }
7266        }
7267
7268        #[inline]
7269        unsafe fn decode(
7270            &mut self,
7271            decoder: &mut fidl::encoding::Decoder<'_, D>,
7272            offset: usize,
7273            _depth: fidl::encoding::Depth,
7274        ) -> fidl::Result<()> {
7275            decoder.debug_check_bounds::<Self>(offset);
7276            // Verify that padding bytes are zero.
7277            fidl::decode!(ScanEnd, D, &mut self.end, decoder, offset + 0, _depth)?;
7278            Ok(())
7279        }
7280    }
7281
7282    impl fidl::encoding::ValueTypeMarker for MlmeOnScanResultRequest {
7283        type Borrowed<'a> = &'a Self;
7284        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7285            value
7286        }
7287    }
7288
7289    unsafe impl fidl::encoding::TypeMarker for MlmeOnScanResultRequest {
7290        type Owned = Self;
7291
7292        #[inline(always)]
7293        fn inline_align(_context: fidl::encoding::Context) -> usize {
7294            8
7295        }
7296
7297        #[inline(always)]
7298        fn inline_size(_context: fidl::encoding::Context) -> usize {
7299            64
7300        }
7301    }
7302
7303    unsafe impl<D: fidl::encoding::ResourceDialect>
7304        fidl::encoding::Encode<MlmeOnScanResultRequest, D> for &MlmeOnScanResultRequest
7305    {
7306        #[inline]
7307        unsafe fn encode(
7308            self,
7309            encoder: &mut fidl::encoding::Encoder<'_, D>,
7310            offset: usize,
7311            _depth: fidl::encoding::Depth,
7312        ) -> fidl::Result<()> {
7313            encoder.debug_check_bounds::<MlmeOnScanResultRequest>(offset);
7314            // Delegate to tuple encoding.
7315            fidl::encoding::Encode::<MlmeOnScanResultRequest, D>::encode(
7316                (<ScanResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),),
7317                encoder,
7318                offset,
7319                _depth,
7320            )
7321        }
7322    }
7323    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanResult, D>>
7324        fidl::encoding::Encode<MlmeOnScanResultRequest, D> for (T0,)
7325    {
7326        #[inline]
7327        unsafe fn encode(
7328            self,
7329            encoder: &mut fidl::encoding::Encoder<'_, D>,
7330            offset: usize,
7331            depth: fidl::encoding::Depth,
7332        ) -> fidl::Result<()> {
7333            encoder.debug_check_bounds::<MlmeOnScanResultRequest>(offset);
7334            // Zero out padding regions. There's no need to apply masks
7335            // because the unmasked parts will be overwritten by fields.
7336            // Write the fields.
7337            self.0.encode(encoder, offset + 0, depth)?;
7338            Ok(())
7339        }
7340    }
7341
7342    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7343        for MlmeOnScanResultRequest
7344    {
7345        #[inline(always)]
7346        fn new_empty() -> Self {
7347            Self { result: fidl::new_empty!(ScanResult, D) }
7348        }
7349
7350        #[inline]
7351        unsafe fn decode(
7352            &mut self,
7353            decoder: &mut fidl::encoding::Decoder<'_, D>,
7354            offset: usize,
7355            _depth: fidl::encoding::Depth,
7356        ) -> fidl::Result<()> {
7357            decoder.debug_check_bounds::<Self>(offset);
7358            // Verify that padding bytes are zero.
7359            fidl::decode!(ScanResult, D, &mut self.result, decoder, offset + 0, _depth)?;
7360            Ok(())
7361        }
7362    }
7363
7364    impl fidl::encoding::ValueTypeMarker for MlmeOnWmmStatusRespRequest {
7365        type Borrowed<'a> = &'a Self;
7366        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7367            value
7368        }
7369    }
7370
7371    unsafe impl fidl::encoding::TypeMarker for MlmeOnWmmStatusRespRequest {
7372        type Owned = Self;
7373
7374        #[inline(always)]
7375        fn inline_align(_context: fidl::encoding::Context) -> usize {
7376            4
7377        }
7378
7379        #[inline(always)]
7380        fn inline_size(_context: fidl::encoding::Context) -> usize {
7381            40
7382        }
7383    }
7384
7385    unsafe impl<D: fidl::encoding::ResourceDialect>
7386        fidl::encoding::Encode<MlmeOnWmmStatusRespRequest, D> for &MlmeOnWmmStatusRespRequest
7387    {
7388        #[inline]
7389        unsafe fn encode(
7390            self,
7391            encoder: &mut fidl::encoding::Encoder<'_, D>,
7392            offset: usize,
7393            _depth: fidl::encoding::Depth,
7394        ) -> fidl::Result<()> {
7395            encoder.debug_check_bounds::<MlmeOnWmmStatusRespRequest>(offset);
7396            // Delegate to tuple encoding.
7397            fidl::encoding::Encode::<MlmeOnWmmStatusRespRequest, D>::encode(
7398                (
7399                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
7400                    <fidl_fuchsia_wlan_internal__common::WmmStatusResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),
7401                ),
7402                encoder, offset, _depth
7403            )
7404        }
7405    }
7406    unsafe impl<
7407        D: fidl::encoding::ResourceDialect,
7408        T0: fidl::encoding::Encode<i32, D>,
7409        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_internal__common::WmmStatusResponse, D>,
7410    > fidl::encoding::Encode<MlmeOnWmmStatusRespRequest, D> for (T0, T1)
7411    {
7412        #[inline]
7413        unsafe fn encode(
7414            self,
7415            encoder: &mut fidl::encoding::Encoder<'_, D>,
7416            offset: usize,
7417            depth: fidl::encoding::Depth,
7418        ) -> fidl::Result<()> {
7419            encoder.debug_check_bounds::<MlmeOnWmmStatusRespRequest>(offset);
7420            // Zero out padding regions. There's no need to apply masks
7421            // because the unmasked parts will be overwritten by fields.
7422            unsafe {
7423                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(36);
7424                (ptr as *mut u32).write_unaligned(0);
7425            }
7426            // Write the fields.
7427            self.0.encode(encoder, offset + 0, depth)?;
7428            self.1.encode(encoder, offset + 4, depth)?;
7429            Ok(())
7430        }
7431    }
7432
7433    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7434        for MlmeOnWmmStatusRespRequest
7435    {
7436        #[inline(always)]
7437        fn new_empty() -> Self {
7438            Self {
7439                status: fidl::new_empty!(i32, D),
7440                resp: fidl::new_empty!(fidl_fuchsia_wlan_internal__common::WmmStatusResponse, D),
7441            }
7442        }
7443
7444        #[inline]
7445        unsafe fn decode(
7446            &mut self,
7447            decoder: &mut fidl::encoding::Decoder<'_, D>,
7448            offset: usize,
7449            _depth: fidl::encoding::Depth,
7450        ) -> fidl::Result<()> {
7451            decoder.debug_check_bounds::<Self>(offset);
7452            // Verify that padding bytes are zero.
7453            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(36) };
7454            let padval = unsafe { (ptr as *const u32).read_unaligned() };
7455            let mask = 0xffff0000u32;
7456            let maskedval = padval & mask;
7457            if maskedval != 0 {
7458                return Err(fidl::Error::NonZeroPadding {
7459                    padding_start: offset + 36 + ((mask as u64).trailing_zeros() / 8) as usize,
7460                });
7461            }
7462            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
7463            fidl::decode!(
7464                fidl_fuchsia_wlan_internal__common::WmmStatusResponse,
7465                D,
7466                &mut self.resp,
7467                decoder,
7468                offset + 4,
7469                _depth
7470            )?;
7471            Ok(())
7472        }
7473    }
7474
7475    impl fidl::encoding::ValueTypeMarker for MlmeQueryDeviceInfoResponse {
7476        type Borrowed<'a> = &'a Self;
7477        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7478            value
7479        }
7480    }
7481
7482    unsafe impl fidl::encoding::TypeMarker for MlmeQueryDeviceInfoResponse {
7483        type Owned = Self;
7484
7485        #[inline(always)]
7486        fn inline_align(_context: fidl::encoding::Context) -> usize {
7487            8
7488        }
7489
7490        #[inline(always)]
7491        fn inline_size(_context: fidl::encoding::Context) -> usize {
7492            40
7493        }
7494    }
7495
7496    unsafe impl<D: fidl::encoding::ResourceDialect>
7497        fidl::encoding::Encode<MlmeQueryDeviceInfoResponse, D> for &MlmeQueryDeviceInfoResponse
7498    {
7499        #[inline]
7500        unsafe fn encode(
7501            self,
7502            encoder: &mut fidl::encoding::Encoder<'_, D>,
7503            offset: usize,
7504            _depth: fidl::encoding::Depth,
7505        ) -> fidl::Result<()> {
7506            encoder.debug_check_bounds::<MlmeQueryDeviceInfoResponse>(offset);
7507            // Delegate to tuple encoding.
7508            fidl::encoding::Encode::<MlmeQueryDeviceInfoResponse, D>::encode(
7509                (<DeviceInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
7510                encoder,
7511                offset,
7512                _depth,
7513            )
7514        }
7515    }
7516    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<DeviceInfo, D>>
7517        fidl::encoding::Encode<MlmeQueryDeviceInfoResponse, D> for (T0,)
7518    {
7519        #[inline]
7520        unsafe fn encode(
7521            self,
7522            encoder: &mut fidl::encoding::Encoder<'_, D>,
7523            offset: usize,
7524            depth: fidl::encoding::Depth,
7525        ) -> fidl::Result<()> {
7526            encoder.debug_check_bounds::<MlmeQueryDeviceInfoResponse>(offset);
7527            // Zero out padding regions. There's no need to apply masks
7528            // because the unmasked parts will be overwritten by fields.
7529            // Write the fields.
7530            self.0.encode(encoder, offset + 0, depth)?;
7531            Ok(())
7532        }
7533    }
7534
7535    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7536        for MlmeQueryDeviceInfoResponse
7537    {
7538        #[inline(always)]
7539        fn new_empty() -> Self {
7540            Self { info: fidl::new_empty!(DeviceInfo, D) }
7541        }
7542
7543        #[inline]
7544        unsafe fn decode(
7545            &mut self,
7546            decoder: &mut fidl::encoding::Decoder<'_, D>,
7547            offset: usize,
7548            _depth: fidl::encoding::Depth,
7549        ) -> fidl::Result<()> {
7550            decoder.debug_check_bounds::<Self>(offset);
7551            // Verify that padding bytes are zero.
7552            fidl::decode!(DeviceInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
7553            Ok(())
7554        }
7555    }
7556
7557    impl fidl::encoding::ValueTypeMarker for MlmeReconnectReqRequest {
7558        type Borrowed<'a> = &'a Self;
7559        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7560            value
7561        }
7562    }
7563
7564    unsafe impl fidl::encoding::TypeMarker for MlmeReconnectReqRequest {
7565        type Owned = Self;
7566
7567        #[inline(always)]
7568        fn inline_align(_context: fidl::encoding::Context) -> usize {
7569            1
7570        }
7571
7572        #[inline(always)]
7573        fn inline_size(_context: fidl::encoding::Context) -> usize {
7574            6
7575        }
7576        #[inline(always)]
7577        fn encode_is_copy() -> bool {
7578            true
7579        }
7580
7581        #[inline(always)]
7582        fn decode_is_copy() -> bool {
7583            true
7584        }
7585    }
7586
7587    unsafe impl<D: fidl::encoding::ResourceDialect>
7588        fidl::encoding::Encode<MlmeReconnectReqRequest, D> for &MlmeReconnectReqRequest
7589    {
7590        #[inline]
7591        unsafe fn encode(
7592            self,
7593            encoder: &mut fidl::encoding::Encoder<'_, D>,
7594            offset: usize,
7595            _depth: fidl::encoding::Depth,
7596        ) -> fidl::Result<()> {
7597            encoder.debug_check_bounds::<MlmeReconnectReqRequest>(offset);
7598            unsafe {
7599                // Copy the object into the buffer.
7600                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
7601                (buf_ptr as *mut MlmeReconnectReqRequest)
7602                    .write_unaligned((self as *const MlmeReconnectReqRequest).read());
7603                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
7604                // done second because the memcpy will write garbage to these bytes.
7605            }
7606            Ok(())
7607        }
7608    }
7609    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ReconnectRequest, D>>
7610        fidl::encoding::Encode<MlmeReconnectReqRequest, D> for (T0,)
7611    {
7612        #[inline]
7613        unsafe fn encode(
7614            self,
7615            encoder: &mut fidl::encoding::Encoder<'_, D>,
7616            offset: usize,
7617            depth: fidl::encoding::Depth,
7618        ) -> fidl::Result<()> {
7619            encoder.debug_check_bounds::<MlmeReconnectReqRequest>(offset);
7620            // Zero out padding regions. There's no need to apply masks
7621            // because the unmasked parts will be overwritten by fields.
7622            // Write the fields.
7623            self.0.encode(encoder, offset + 0, depth)?;
7624            Ok(())
7625        }
7626    }
7627
7628    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7629        for MlmeReconnectReqRequest
7630    {
7631        #[inline(always)]
7632        fn new_empty() -> Self {
7633            Self { req: fidl::new_empty!(ReconnectRequest, D) }
7634        }
7635
7636        #[inline]
7637        unsafe fn decode(
7638            &mut self,
7639            decoder: &mut fidl::encoding::Decoder<'_, D>,
7640            offset: usize,
7641            _depth: fidl::encoding::Depth,
7642        ) -> fidl::Result<()> {
7643            decoder.debug_check_bounds::<Self>(offset);
7644            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
7645            // Verify that padding bytes are zero.
7646            // Copy from the buffer into the object.
7647            unsafe {
7648                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
7649            }
7650            Ok(())
7651        }
7652    }
7653
7654    impl fidl::encoding::ValueTypeMarker for MlmeRelayCapturedFrameRequest {
7655        type Borrowed<'a> = &'a Self;
7656        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7657            value
7658        }
7659    }
7660
7661    unsafe impl fidl::encoding::TypeMarker for MlmeRelayCapturedFrameRequest {
7662        type Owned = Self;
7663
7664        #[inline(always)]
7665        fn inline_align(_context: fidl::encoding::Context) -> usize {
7666            8
7667        }
7668
7669        #[inline(always)]
7670        fn inline_size(_context: fidl::encoding::Context) -> usize {
7671            16
7672        }
7673    }
7674
7675    unsafe impl<D: fidl::encoding::ResourceDialect>
7676        fidl::encoding::Encode<MlmeRelayCapturedFrameRequest, D>
7677        for &MlmeRelayCapturedFrameRequest
7678    {
7679        #[inline]
7680        unsafe fn encode(
7681            self,
7682            encoder: &mut fidl::encoding::Encoder<'_, D>,
7683            offset: usize,
7684            _depth: fidl::encoding::Depth,
7685        ) -> fidl::Result<()> {
7686            encoder.debug_check_bounds::<MlmeRelayCapturedFrameRequest>(offset);
7687            // Delegate to tuple encoding.
7688            fidl::encoding::Encode::<MlmeRelayCapturedFrameRequest, D>::encode(
7689                (<CapturedFrameResult as fidl::encoding::ValueTypeMarker>::borrow(&self.result),),
7690                encoder,
7691                offset,
7692                _depth,
7693            )
7694        }
7695    }
7696    unsafe impl<
7697        D: fidl::encoding::ResourceDialect,
7698        T0: fidl::encoding::Encode<CapturedFrameResult, D>,
7699    > fidl::encoding::Encode<MlmeRelayCapturedFrameRequest, D> for (T0,)
7700    {
7701        #[inline]
7702        unsafe fn encode(
7703            self,
7704            encoder: &mut fidl::encoding::Encoder<'_, D>,
7705            offset: usize,
7706            depth: fidl::encoding::Depth,
7707        ) -> fidl::Result<()> {
7708            encoder.debug_check_bounds::<MlmeRelayCapturedFrameRequest>(offset);
7709            // Zero out padding regions. There's no need to apply masks
7710            // because the unmasked parts will be overwritten by fields.
7711            // Write the fields.
7712            self.0.encode(encoder, offset + 0, depth)?;
7713            Ok(())
7714        }
7715    }
7716
7717    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7718        for MlmeRelayCapturedFrameRequest
7719    {
7720        #[inline(always)]
7721        fn new_empty() -> Self {
7722            Self { result: fidl::new_empty!(CapturedFrameResult, D) }
7723        }
7724
7725        #[inline]
7726        unsafe fn decode(
7727            &mut self,
7728            decoder: &mut fidl::encoding::Decoder<'_, D>,
7729            offset: usize,
7730            _depth: fidl::encoding::Depth,
7731        ) -> fidl::Result<()> {
7732            decoder.debug_check_bounds::<Self>(offset);
7733            // Verify that padding bytes are zero.
7734            fidl::decode!(CapturedFrameResult, D, &mut self.result, decoder, offset + 0, _depth)?;
7735            Ok(())
7736        }
7737    }
7738
7739    impl fidl::encoding::ValueTypeMarker for MlmeResetReqRequest {
7740        type Borrowed<'a> = &'a Self;
7741        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7742            value
7743        }
7744    }
7745
7746    unsafe impl fidl::encoding::TypeMarker for MlmeResetReqRequest {
7747        type Owned = Self;
7748
7749        #[inline(always)]
7750        fn inline_align(_context: fidl::encoding::Context) -> usize {
7751            1
7752        }
7753
7754        #[inline(always)]
7755        fn inline_size(_context: fidl::encoding::Context) -> usize {
7756            7
7757        }
7758    }
7759
7760    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeResetReqRequest, D>
7761        for &MlmeResetReqRequest
7762    {
7763        #[inline]
7764        unsafe fn encode(
7765            self,
7766            encoder: &mut fidl::encoding::Encoder<'_, D>,
7767            offset: usize,
7768            _depth: fidl::encoding::Depth,
7769        ) -> fidl::Result<()> {
7770            encoder.debug_check_bounds::<MlmeResetReqRequest>(offset);
7771            // Delegate to tuple encoding.
7772            fidl::encoding::Encode::<MlmeResetReqRequest, D>::encode(
7773                (<ResetRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
7774                encoder,
7775                offset,
7776                _depth,
7777            )
7778        }
7779    }
7780    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ResetRequest, D>>
7781        fidl::encoding::Encode<MlmeResetReqRequest, D> for (T0,)
7782    {
7783        #[inline]
7784        unsafe fn encode(
7785            self,
7786            encoder: &mut fidl::encoding::Encoder<'_, D>,
7787            offset: usize,
7788            depth: fidl::encoding::Depth,
7789        ) -> fidl::Result<()> {
7790            encoder.debug_check_bounds::<MlmeResetReqRequest>(offset);
7791            // Zero out padding regions. There's no need to apply masks
7792            // because the unmasked parts will be overwritten by fields.
7793            // Write the fields.
7794            self.0.encode(encoder, offset + 0, depth)?;
7795            Ok(())
7796        }
7797    }
7798
7799    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeResetReqRequest {
7800        #[inline(always)]
7801        fn new_empty() -> Self {
7802            Self { req: fidl::new_empty!(ResetRequest, D) }
7803        }
7804
7805        #[inline]
7806        unsafe fn decode(
7807            &mut self,
7808            decoder: &mut fidl::encoding::Decoder<'_, D>,
7809            offset: usize,
7810            _depth: fidl::encoding::Depth,
7811        ) -> fidl::Result<()> {
7812            decoder.debug_check_bounds::<Self>(offset);
7813            // Verify that padding bytes are zero.
7814            fidl::decode!(ResetRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
7815            Ok(())
7816        }
7817    }
7818
7819    impl fidl::encoding::ValueTypeMarker for MlmeRoamConfRequest {
7820        type Borrowed<'a> = &'a Self;
7821        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7822            value
7823        }
7824    }
7825
7826    unsafe impl fidl::encoding::TypeMarker for MlmeRoamConfRequest {
7827        type Owned = Self;
7828
7829        #[inline(always)]
7830        fn inline_align(_context: fidl::encoding::Context) -> usize {
7831            8
7832        }
7833
7834        #[inline(always)]
7835        fn inline_size(_context: fidl::encoding::Context) -> usize {
7836            32
7837        }
7838    }
7839
7840    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeRoamConfRequest, D>
7841        for &MlmeRoamConfRequest
7842    {
7843        #[inline]
7844        unsafe fn encode(
7845            self,
7846            encoder: &mut fidl::encoding::Encoder<'_, D>,
7847            offset: usize,
7848            _depth: fidl::encoding::Depth,
7849        ) -> fidl::Result<()> {
7850            encoder.debug_check_bounds::<MlmeRoamConfRequest>(offset);
7851            // Delegate to tuple encoding.
7852            fidl::encoding::Encode::<MlmeRoamConfRequest, D>::encode(
7853                (<RoamConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.conf),),
7854                encoder,
7855                offset,
7856                _depth,
7857            )
7858        }
7859    }
7860    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RoamConfirm, D>>
7861        fidl::encoding::Encode<MlmeRoamConfRequest, D> for (T0,)
7862    {
7863        #[inline]
7864        unsafe fn encode(
7865            self,
7866            encoder: &mut fidl::encoding::Encoder<'_, D>,
7867            offset: usize,
7868            depth: fidl::encoding::Depth,
7869        ) -> fidl::Result<()> {
7870            encoder.debug_check_bounds::<MlmeRoamConfRequest>(offset);
7871            // Zero out padding regions. There's no need to apply masks
7872            // because the unmasked parts will be overwritten by fields.
7873            // Write the fields.
7874            self.0.encode(encoder, offset + 0, depth)?;
7875            Ok(())
7876        }
7877    }
7878
7879    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeRoamConfRequest {
7880        #[inline(always)]
7881        fn new_empty() -> Self {
7882            Self { conf: fidl::new_empty!(RoamConfirm, D) }
7883        }
7884
7885        #[inline]
7886        unsafe fn decode(
7887            &mut self,
7888            decoder: &mut fidl::encoding::Decoder<'_, D>,
7889            offset: usize,
7890            _depth: fidl::encoding::Depth,
7891        ) -> fidl::Result<()> {
7892            decoder.debug_check_bounds::<Self>(offset);
7893            // Verify that padding bytes are zero.
7894            fidl::decode!(RoamConfirm, D, &mut self.conf, decoder, offset + 0, _depth)?;
7895            Ok(())
7896        }
7897    }
7898
7899    impl fidl::encoding::ValueTypeMarker for MlmeRoamReqRequest {
7900        type Borrowed<'a> = &'a Self;
7901        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7902            value
7903        }
7904    }
7905
7906    unsafe impl fidl::encoding::TypeMarker for MlmeRoamReqRequest {
7907        type Owned = Self;
7908
7909        #[inline(always)]
7910        fn inline_align(_context: fidl::encoding::Context) -> usize {
7911            8
7912        }
7913
7914        #[inline(always)]
7915        fn inline_size(_context: fidl::encoding::Context) -> usize {
7916            48
7917        }
7918    }
7919
7920    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeRoamReqRequest, D>
7921        for &MlmeRoamReqRequest
7922    {
7923        #[inline]
7924        unsafe fn encode(
7925            self,
7926            encoder: &mut fidl::encoding::Encoder<'_, D>,
7927            offset: usize,
7928            _depth: fidl::encoding::Depth,
7929        ) -> fidl::Result<()> {
7930            encoder.debug_check_bounds::<MlmeRoamReqRequest>(offset);
7931            // Delegate to tuple encoding.
7932            fidl::encoding::Encode::<MlmeRoamReqRequest, D>::encode(
7933                (<RoamRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
7934                encoder,
7935                offset,
7936                _depth,
7937            )
7938        }
7939    }
7940    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RoamRequest, D>>
7941        fidl::encoding::Encode<MlmeRoamReqRequest, D> for (T0,)
7942    {
7943        #[inline]
7944        unsafe fn encode(
7945            self,
7946            encoder: &mut fidl::encoding::Encoder<'_, D>,
7947            offset: usize,
7948            depth: fidl::encoding::Depth,
7949        ) -> fidl::Result<()> {
7950            encoder.debug_check_bounds::<MlmeRoamReqRequest>(offset);
7951            // Zero out padding regions. There's no need to apply masks
7952            // because the unmasked parts will be overwritten by fields.
7953            // Write the fields.
7954            self.0.encode(encoder, offset + 0, depth)?;
7955            Ok(())
7956        }
7957    }
7958
7959    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeRoamReqRequest {
7960        #[inline(always)]
7961        fn new_empty() -> Self {
7962            Self { req: fidl::new_empty!(RoamRequest, D) }
7963        }
7964
7965        #[inline]
7966        unsafe fn decode(
7967            &mut self,
7968            decoder: &mut fidl::encoding::Decoder<'_, D>,
7969            offset: usize,
7970            _depth: fidl::encoding::Depth,
7971        ) -> fidl::Result<()> {
7972            decoder.debug_check_bounds::<Self>(offset);
7973            // Verify that padding bytes are zero.
7974            fidl::decode!(RoamRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
7975            Ok(())
7976        }
7977    }
7978
7979    impl fidl::encoding::ValueTypeMarker for MlmeRoamResultIndRequest {
7980        type Borrowed<'a> = &'a Self;
7981        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7982            value
7983        }
7984    }
7985
7986    unsafe impl fidl::encoding::TypeMarker for MlmeRoamResultIndRequest {
7987        type Owned = Self;
7988
7989        #[inline(always)]
7990        fn inline_align(_context: fidl::encoding::Context) -> usize {
7991            8
7992        }
7993
7994        #[inline(always)]
7995        fn inline_size(_context: fidl::encoding::Context) -> usize {
7996            32
7997        }
7998    }
7999
8000    unsafe impl<D: fidl::encoding::ResourceDialect>
8001        fidl::encoding::Encode<MlmeRoamResultIndRequest, D> for &MlmeRoamResultIndRequest
8002    {
8003        #[inline]
8004        unsafe fn encode(
8005            self,
8006            encoder: &mut fidl::encoding::Encoder<'_, D>,
8007            offset: usize,
8008            _depth: fidl::encoding::Depth,
8009        ) -> fidl::Result<()> {
8010            encoder.debug_check_bounds::<MlmeRoamResultIndRequest>(offset);
8011            // Delegate to tuple encoding.
8012            fidl::encoding::Encode::<MlmeRoamResultIndRequest, D>::encode(
8013                (<RoamResultIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
8014                encoder,
8015                offset,
8016                _depth,
8017            )
8018        }
8019    }
8020    unsafe impl<
8021        D: fidl::encoding::ResourceDialect,
8022        T0: fidl::encoding::Encode<RoamResultIndication, D>,
8023    > fidl::encoding::Encode<MlmeRoamResultIndRequest, D> for (T0,)
8024    {
8025        #[inline]
8026        unsafe fn encode(
8027            self,
8028            encoder: &mut fidl::encoding::Encoder<'_, D>,
8029            offset: usize,
8030            depth: fidl::encoding::Depth,
8031        ) -> fidl::Result<()> {
8032            encoder.debug_check_bounds::<MlmeRoamResultIndRequest>(offset);
8033            // Zero out padding regions. There's no need to apply masks
8034            // because the unmasked parts will be overwritten by fields.
8035            // Write the fields.
8036            self.0.encode(encoder, offset + 0, depth)?;
8037            Ok(())
8038        }
8039    }
8040
8041    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8042        for MlmeRoamResultIndRequest
8043    {
8044        #[inline(always)]
8045        fn new_empty() -> Self {
8046            Self { ind: fidl::new_empty!(RoamResultIndication, D) }
8047        }
8048
8049        #[inline]
8050        unsafe fn decode(
8051            &mut self,
8052            decoder: &mut fidl::encoding::Decoder<'_, D>,
8053            offset: usize,
8054            _depth: fidl::encoding::Depth,
8055        ) -> fidl::Result<()> {
8056            decoder.debug_check_bounds::<Self>(offset);
8057            // Verify that padding bytes are zero.
8058            fidl::decode!(RoamResultIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
8059            Ok(())
8060        }
8061    }
8062
8063    impl fidl::encoding::ValueTypeMarker for MlmeRoamStartIndRequest {
8064        type Borrowed<'a> = &'a Self;
8065        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8066            value
8067        }
8068    }
8069
8070    unsafe impl fidl::encoding::TypeMarker for MlmeRoamStartIndRequest {
8071        type Owned = Self;
8072
8073        #[inline(always)]
8074        fn inline_align(_context: fidl::encoding::Context) -> usize {
8075            8
8076        }
8077
8078        #[inline(always)]
8079        fn inline_size(_context: fidl::encoding::Context) -> usize {
8080            64
8081        }
8082    }
8083
8084    unsafe impl<D: fidl::encoding::ResourceDialect>
8085        fidl::encoding::Encode<MlmeRoamStartIndRequest, D> for &MlmeRoamStartIndRequest
8086    {
8087        #[inline]
8088        unsafe fn encode(
8089            self,
8090            encoder: &mut fidl::encoding::Encoder<'_, D>,
8091            offset: usize,
8092            _depth: fidl::encoding::Depth,
8093        ) -> fidl::Result<()> {
8094            encoder.debug_check_bounds::<MlmeRoamStartIndRequest>(offset);
8095            // Delegate to tuple encoding.
8096            fidl::encoding::Encode::<MlmeRoamStartIndRequest, D>::encode(
8097                (<RoamStartIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),),
8098                encoder,
8099                offset,
8100                _depth,
8101            )
8102        }
8103    }
8104    unsafe impl<
8105        D: fidl::encoding::ResourceDialect,
8106        T0: fidl::encoding::Encode<RoamStartIndication, D>,
8107    > fidl::encoding::Encode<MlmeRoamStartIndRequest, D> for (T0,)
8108    {
8109        #[inline]
8110        unsafe fn encode(
8111            self,
8112            encoder: &mut fidl::encoding::Encoder<'_, D>,
8113            offset: usize,
8114            depth: fidl::encoding::Depth,
8115        ) -> fidl::Result<()> {
8116            encoder.debug_check_bounds::<MlmeRoamStartIndRequest>(offset);
8117            // Zero out padding regions. There's no need to apply masks
8118            // because the unmasked parts will be overwritten by fields.
8119            // Write the fields.
8120            self.0.encode(encoder, offset + 0, depth)?;
8121            Ok(())
8122        }
8123    }
8124
8125    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8126        for MlmeRoamStartIndRequest
8127    {
8128        #[inline(always)]
8129        fn new_empty() -> Self {
8130            Self { ind: fidl::new_empty!(RoamStartIndication, D) }
8131        }
8132
8133        #[inline]
8134        unsafe fn decode(
8135            &mut self,
8136            decoder: &mut fidl::encoding::Decoder<'_, D>,
8137            offset: usize,
8138            _depth: fidl::encoding::Depth,
8139        ) -> fidl::Result<()> {
8140            decoder.debug_check_bounds::<Self>(offset);
8141            // Verify that padding bytes are zero.
8142            fidl::decode!(RoamStartIndication, D, &mut self.ind, decoder, offset + 0, _depth)?;
8143            Ok(())
8144        }
8145    }
8146
8147    impl fidl::encoding::ValueTypeMarker for MlmeSaeFrameTxRequest {
8148        type Borrowed<'a> = &'a Self;
8149        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8150            value
8151        }
8152    }
8153
8154    unsafe impl fidl::encoding::TypeMarker for MlmeSaeFrameTxRequest {
8155        type Owned = Self;
8156
8157        #[inline(always)]
8158        fn inline_align(_context: fidl::encoding::Context) -> usize {
8159            8
8160        }
8161
8162        #[inline(always)]
8163        fn inline_size(_context: fidl::encoding::Context) -> usize {
8164            32
8165        }
8166    }
8167
8168    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeSaeFrameTxRequest, D>
8169        for &MlmeSaeFrameTxRequest
8170    {
8171        #[inline]
8172        unsafe fn encode(
8173            self,
8174            encoder: &mut fidl::encoding::Encoder<'_, D>,
8175            offset: usize,
8176            _depth: fidl::encoding::Depth,
8177        ) -> fidl::Result<()> {
8178            encoder.debug_check_bounds::<MlmeSaeFrameTxRequest>(offset);
8179            // Delegate to tuple encoding.
8180            fidl::encoding::Encode::<MlmeSaeFrameTxRequest, D>::encode(
8181                (<SaeFrame as fidl::encoding::ValueTypeMarker>::borrow(&self.frame),),
8182                encoder,
8183                offset,
8184                _depth,
8185            )
8186        }
8187    }
8188    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SaeFrame, D>>
8189        fidl::encoding::Encode<MlmeSaeFrameTxRequest, D> for (T0,)
8190    {
8191        #[inline]
8192        unsafe fn encode(
8193            self,
8194            encoder: &mut fidl::encoding::Encoder<'_, D>,
8195            offset: usize,
8196            depth: fidl::encoding::Depth,
8197        ) -> fidl::Result<()> {
8198            encoder.debug_check_bounds::<MlmeSaeFrameTxRequest>(offset);
8199            // Zero out padding regions. There's no need to apply masks
8200            // because the unmasked parts will be overwritten by fields.
8201            // Write the fields.
8202            self.0.encode(encoder, offset + 0, depth)?;
8203            Ok(())
8204        }
8205    }
8206
8207    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeSaeFrameTxRequest {
8208        #[inline(always)]
8209        fn new_empty() -> Self {
8210            Self { frame: fidl::new_empty!(SaeFrame, D) }
8211        }
8212
8213        #[inline]
8214        unsafe fn decode(
8215            &mut self,
8216            decoder: &mut fidl::encoding::Decoder<'_, D>,
8217            offset: usize,
8218            _depth: fidl::encoding::Depth,
8219        ) -> fidl::Result<()> {
8220            decoder.debug_check_bounds::<Self>(offset);
8221            // Verify that padding bytes are zero.
8222            fidl::decode!(SaeFrame, D, &mut self.frame, decoder, offset + 0, _depth)?;
8223            Ok(())
8224        }
8225    }
8226
8227    impl fidl::encoding::ValueTypeMarker for MlmeSaeHandshakeRespRequest {
8228        type Borrowed<'a> = &'a Self;
8229        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8230            value
8231        }
8232    }
8233
8234    unsafe impl fidl::encoding::TypeMarker for MlmeSaeHandshakeRespRequest {
8235        type Owned = Self;
8236
8237        #[inline(always)]
8238        fn inline_align(_context: fidl::encoding::Context) -> usize {
8239            2
8240        }
8241
8242        #[inline(always)]
8243        fn inline_size(_context: fidl::encoding::Context) -> usize {
8244            8
8245        }
8246    }
8247
8248    unsafe impl<D: fidl::encoding::ResourceDialect>
8249        fidl::encoding::Encode<MlmeSaeHandshakeRespRequest, D> for &MlmeSaeHandshakeRespRequest
8250    {
8251        #[inline]
8252        unsafe fn encode(
8253            self,
8254            encoder: &mut fidl::encoding::Encoder<'_, D>,
8255            offset: usize,
8256            _depth: fidl::encoding::Depth,
8257        ) -> fidl::Result<()> {
8258            encoder.debug_check_bounds::<MlmeSaeHandshakeRespRequest>(offset);
8259            // Delegate to tuple encoding.
8260            fidl::encoding::Encode::<MlmeSaeHandshakeRespRequest, D>::encode(
8261                (<SaeHandshakeResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
8262                encoder,
8263                offset,
8264                _depth,
8265            )
8266        }
8267    }
8268    unsafe impl<
8269        D: fidl::encoding::ResourceDialect,
8270        T0: fidl::encoding::Encode<SaeHandshakeResponse, D>,
8271    > fidl::encoding::Encode<MlmeSaeHandshakeRespRequest, D> for (T0,)
8272    {
8273        #[inline]
8274        unsafe fn encode(
8275            self,
8276            encoder: &mut fidl::encoding::Encoder<'_, D>,
8277            offset: usize,
8278            depth: fidl::encoding::Depth,
8279        ) -> fidl::Result<()> {
8280            encoder.debug_check_bounds::<MlmeSaeHandshakeRespRequest>(offset);
8281            // Zero out padding regions. There's no need to apply masks
8282            // because the unmasked parts will be overwritten by fields.
8283            // Write the fields.
8284            self.0.encode(encoder, offset + 0, depth)?;
8285            Ok(())
8286        }
8287    }
8288
8289    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8290        for MlmeSaeHandshakeRespRequest
8291    {
8292        #[inline(always)]
8293        fn new_empty() -> Self {
8294            Self { resp: fidl::new_empty!(SaeHandshakeResponse, D) }
8295        }
8296
8297        #[inline]
8298        unsafe fn decode(
8299            &mut self,
8300            decoder: &mut fidl::encoding::Decoder<'_, D>,
8301            offset: usize,
8302            _depth: fidl::encoding::Depth,
8303        ) -> fidl::Result<()> {
8304            decoder.debug_check_bounds::<Self>(offset);
8305            // Verify that padding bytes are zero.
8306            fidl::decode!(SaeHandshakeResponse, D, &mut self.resp, decoder, offset + 0, _depth)?;
8307            Ok(())
8308        }
8309    }
8310
8311    impl fidl::encoding::ValueTypeMarker for MlmeSetControlledPortRequest {
8312        type Borrowed<'a> = &'a Self;
8313        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8314            value
8315        }
8316    }
8317
8318    unsafe impl fidl::encoding::TypeMarker for MlmeSetControlledPortRequest {
8319        type Owned = Self;
8320
8321        #[inline(always)]
8322        fn inline_align(_context: fidl::encoding::Context) -> usize {
8323            4
8324        }
8325
8326        #[inline(always)]
8327        fn inline_size(_context: fidl::encoding::Context) -> usize {
8328            12
8329        }
8330    }
8331
8332    unsafe impl<D: fidl::encoding::ResourceDialect>
8333        fidl::encoding::Encode<MlmeSetControlledPortRequest, D> for &MlmeSetControlledPortRequest
8334    {
8335        #[inline]
8336        unsafe fn encode(
8337            self,
8338            encoder: &mut fidl::encoding::Encoder<'_, D>,
8339            offset: usize,
8340            _depth: fidl::encoding::Depth,
8341        ) -> fidl::Result<()> {
8342            encoder.debug_check_bounds::<MlmeSetControlledPortRequest>(offset);
8343            // Delegate to tuple encoding.
8344            fidl::encoding::Encode::<MlmeSetControlledPortRequest, D>::encode(
8345                (<SetControlledPortRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8346                encoder,
8347                offset,
8348                _depth,
8349            )
8350        }
8351    }
8352    unsafe impl<
8353        D: fidl::encoding::ResourceDialect,
8354        T0: fidl::encoding::Encode<SetControlledPortRequest, D>,
8355    > fidl::encoding::Encode<MlmeSetControlledPortRequest, D> for (T0,)
8356    {
8357        #[inline]
8358        unsafe fn encode(
8359            self,
8360            encoder: &mut fidl::encoding::Encoder<'_, D>,
8361            offset: usize,
8362            depth: fidl::encoding::Depth,
8363        ) -> fidl::Result<()> {
8364            encoder.debug_check_bounds::<MlmeSetControlledPortRequest>(offset);
8365            // Zero out padding regions. There's no need to apply masks
8366            // because the unmasked parts will be overwritten by fields.
8367            // Write the fields.
8368            self.0.encode(encoder, offset + 0, depth)?;
8369            Ok(())
8370        }
8371    }
8372
8373    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8374        for MlmeSetControlledPortRequest
8375    {
8376        #[inline(always)]
8377        fn new_empty() -> Self {
8378            Self { req: fidl::new_empty!(SetControlledPortRequest, D) }
8379        }
8380
8381        #[inline]
8382        unsafe fn decode(
8383            &mut self,
8384            decoder: &mut fidl::encoding::Decoder<'_, D>,
8385            offset: usize,
8386            _depth: fidl::encoding::Depth,
8387        ) -> fidl::Result<()> {
8388            decoder.debug_check_bounds::<Self>(offset);
8389            // Verify that padding bytes are zero.
8390            fidl::decode!(SetControlledPortRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8391            Ok(())
8392        }
8393    }
8394
8395    impl fidl::encoding::ValueTypeMarker for MlmeSetKeysConfRequest {
8396        type Borrowed<'a> = &'a Self;
8397        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8398            value
8399        }
8400    }
8401
8402    unsafe impl fidl::encoding::TypeMarker for MlmeSetKeysConfRequest {
8403        type Owned = Self;
8404
8405        #[inline(always)]
8406        fn inline_align(_context: fidl::encoding::Context) -> usize {
8407            8
8408        }
8409
8410        #[inline(always)]
8411        fn inline_size(_context: fidl::encoding::Context) -> usize {
8412            16
8413        }
8414    }
8415
8416    unsafe impl<D: fidl::encoding::ResourceDialect>
8417        fidl::encoding::Encode<MlmeSetKeysConfRequest, D> for &MlmeSetKeysConfRequest
8418    {
8419        #[inline]
8420        unsafe fn encode(
8421            self,
8422            encoder: &mut fidl::encoding::Encoder<'_, D>,
8423            offset: usize,
8424            _depth: fidl::encoding::Depth,
8425        ) -> fidl::Result<()> {
8426            encoder.debug_check_bounds::<MlmeSetKeysConfRequest>(offset);
8427            // Delegate to tuple encoding.
8428            fidl::encoding::Encode::<MlmeSetKeysConfRequest, D>::encode(
8429                (<SetKeysConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.conf),),
8430                encoder,
8431                offset,
8432                _depth,
8433            )
8434        }
8435    }
8436    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SetKeysConfirm, D>>
8437        fidl::encoding::Encode<MlmeSetKeysConfRequest, D> for (T0,)
8438    {
8439        #[inline]
8440        unsafe fn encode(
8441            self,
8442            encoder: &mut fidl::encoding::Encoder<'_, D>,
8443            offset: usize,
8444            depth: fidl::encoding::Depth,
8445        ) -> fidl::Result<()> {
8446            encoder.debug_check_bounds::<MlmeSetKeysConfRequest>(offset);
8447            // Zero out padding regions. There's no need to apply masks
8448            // because the unmasked parts will be overwritten by fields.
8449            // Write the fields.
8450            self.0.encode(encoder, offset + 0, depth)?;
8451            Ok(())
8452        }
8453    }
8454
8455    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8456        for MlmeSetKeysConfRequest
8457    {
8458        #[inline(always)]
8459        fn new_empty() -> Self {
8460            Self { conf: fidl::new_empty!(SetKeysConfirm, D) }
8461        }
8462
8463        #[inline]
8464        unsafe fn decode(
8465            &mut self,
8466            decoder: &mut fidl::encoding::Decoder<'_, D>,
8467            offset: usize,
8468            _depth: fidl::encoding::Depth,
8469        ) -> fidl::Result<()> {
8470            decoder.debug_check_bounds::<Self>(offset);
8471            // Verify that padding bytes are zero.
8472            fidl::decode!(SetKeysConfirm, D, &mut self.conf, decoder, offset + 0, _depth)?;
8473            Ok(())
8474        }
8475    }
8476
8477    impl fidl::encoding::ValueTypeMarker for MlmeSetKeysReqRequest {
8478        type Borrowed<'a> = &'a Self;
8479        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8480            value
8481        }
8482    }
8483
8484    unsafe impl fidl::encoding::TypeMarker for MlmeSetKeysReqRequest {
8485        type Owned = Self;
8486
8487        #[inline(always)]
8488        fn inline_align(_context: fidl::encoding::Context) -> usize {
8489            8
8490        }
8491
8492        #[inline(always)]
8493        fn inline_size(_context: fidl::encoding::Context) -> usize {
8494            16
8495        }
8496    }
8497
8498    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeSetKeysReqRequest, D>
8499        for &MlmeSetKeysReqRequest
8500    {
8501        #[inline]
8502        unsafe fn encode(
8503            self,
8504            encoder: &mut fidl::encoding::Encoder<'_, D>,
8505            offset: usize,
8506            _depth: fidl::encoding::Depth,
8507        ) -> fidl::Result<()> {
8508            encoder.debug_check_bounds::<MlmeSetKeysReqRequest>(offset);
8509            // Delegate to tuple encoding.
8510            fidl::encoding::Encode::<MlmeSetKeysReqRequest, D>::encode(
8511                (<SetKeysRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8512                encoder,
8513                offset,
8514                _depth,
8515            )
8516        }
8517    }
8518    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SetKeysRequest, D>>
8519        fidl::encoding::Encode<MlmeSetKeysReqRequest, D> for (T0,)
8520    {
8521        #[inline]
8522        unsafe fn encode(
8523            self,
8524            encoder: &mut fidl::encoding::Encoder<'_, D>,
8525            offset: usize,
8526            depth: fidl::encoding::Depth,
8527        ) -> fidl::Result<()> {
8528            encoder.debug_check_bounds::<MlmeSetKeysReqRequest>(offset);
8529            // Zero out padding regions. There's no need to apply masks
8530            // because the unmasked parts will be overwritten by fields.
8531            // Write the fields.
8532            self.0.encode(encoder, offset + 0, depth)?;
8533            Ok(())
8534        }
8535    }
8536
8537    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeSetKeysReqRequest {
8538        #[inline(always)]
8539        fn new_empty() -> Self {
8540            Self { req: fidl::new_empty!(SetKeysRequest, D) }
8541        }
8542
8543        #[inline]
8544        unsafe fn decode(
8545            &mut self,
8546            decoder: &mut fidl::encoding::Decoder<'_, D>,
8547            offset: usize,
8548            _depth: fidl::encoding::Depth,
8549        ) -> fidl::Result<()> {
8550            decoder.debug_check_bounds::<Self>(offset);
8551            // Verify that padding bytes are zero.
8552            fidl::decode!(SetKeysRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
8553            Ok(())
8554        }
8555    }
8556
8557    impl fidl::encoding::ValueTypeMarker for MlmeSetMacAddressRequest {
8558        type Borrowed<'a> = &'a Self;
8559        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8560            value
8561        }
8562    }
8563
8564    unsafe impl fidl::encoding::TypeMarker for MlmeSetMacAddressRequest {
8565        type Owned = Self;
8566
8567        #[inline(always)]
8568        fn inline_align(_context: fidl::encoding::Context) -> usize {
8569            1
8570        }
8571
8572        #[inline(always)]
8573        fn inline_size(_context: fidl::encoding::Context) -> usize {
8574            6
8575        }
8576        #[inline(always)]
8577        fn encode_is_copy() -> bool {
8578            true
8579        }
8580
8581        #[inline(always)]
8582        fn decode_is_copy() -> bool {
8583            true
8584        }
8585    }
8586
8587    unsafe impl<D: fidl::encoding::ResourceDialect>
8588        fidl::encoding::Encode<MlmeSetMacAddressRequest, D> for &MlmeSetMacAddressRequest
8589    {
8590        #[inline]
8591        unsafe fn encode(
8592            self,
8593            encoder: &mut fidl::encoding::Encoder<'_, D>,
8594            offset: usize,
8595            _depth: fidl::encoding::Depth,
8596        ) -> fidl::Result<()> {
8597            encoder.debug_check_bounds::<MlmeSetMacAddressRequest>(offset);
8598            unsafe {
8599                // Copy the object into the buffer.
8600                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
8601                (buf_ptr as *mut MlmeSetMacAddressRequest)
8602                    .write_unaligned((self as *const MlmeSetMacAddressRequest).read());
8603                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
8604                // done second because the memcpy will write garbage to these bytes.
8605            }
8606            Ok(())
8607        }
8608    }
8609    unsafe impl<
8610        D: fidl::encoding::ResourceDialect,
8611        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
8612    > fidl::encoding::Encode<MlmeSetMacAddressRequest, D> for (T0,)
8613    {
8614        #[inline]
8615        unsafe fn encode(
8616            self,
8617            encoder: &mut fidl::encoding::Encoder<'_, D>,
8618            offset: usize,
8619            depth: fidl::encoding::Depth,
8620        ) -> fidl::Result<()> {
8621            encoder.debug_check_bounds::<MlmeSetMacAddressRequest>(offset);
8622            // Zero out padding regions. There's no need to apply masks
8623            // because the unmasked parts will be overwritten by fields.
8624            // Write the fields.
8625            self.0.encode(encoder, offset + 0, depth)?;
8626            Ok(())
8627        }
8628    }
8629
8630    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8631        for MlmeSetMacAddressRequest
8632    {
8633        #[inline(always)]
8634        fn new_empty() -> Self {
8635            Self { mac_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
8636        }
8637
8638        #[inline]
8639        unsafe fn decode(
8640            &mut self,
8641            decoder: &mut fidl::encoding::Decoder<'_, D>,
8642            offset: usize,
8643            _depth: fidl::encoding::Depth,
8644        ) -> fidl::Result<()> {
8645            decoder.debug_check_bounds::<Self>(offset);
8646            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
8647            // Verify that padding bytes are zero.
8648            // Copy from the buffer into the object.
8649            unsafe {
8650                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
8651            }
8652            Ok(())
8653        }
8654    }
8655
8656    impl fidl::encoding::ValueTypeMarker for MlmeSignalReportRequest {
8657        type Borrowed<'a> = &'a Self;
8658        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8659            value
8660        }
8661    }
8662
8663    unsafe impl fidl::encoding::TypeMarker for MlmeSignalReportRequest {
8664        type Owned = Self;
8665
8666        #[inline(always)]
8667        fn inline_align(_context: fidl::encoding::Context) -> usize {
8668            1
8669        }
8670
8671        #[inline(always)]
8672        fn inline_size(_context: fidl::encoding::Context) -> usize {
8673            2
8674        }
8675    }
8676
8677    unsafe impl<D: fidl::encoding::ResourceDialect>
8678        fidl::encoding::Encode<MlmeSignalReportRequest, D> for &MlmeSignalReportRequest
8679    {
8680        #[inline]
8681        unsafe fn encode(
8682            self,
8683            encoder: &mut fidl::encoding::Encoder<'_, D>,
8684            offset: usize,
8685            _depth: fidl::encoding::Depth,
8686        ) -> fidl::Result<()> {
8687            encoder.debug_check_bounds::<MlmeSignalReportRequest>(offset);
8688            // Delegate to tuple encoding.
8689            fidl::encoding::Encode::<MlmeSignalReportRequest, D>::encode(
8690                (
8691                    <fidl_fuchsia_wlan_internal__common::SignalReportIndication as fidl::encoding::ValueTypeMarker>::borrow(&self.ind),
8692                ),
8693                encoder, offset, _depth
8694            )
8695        }
8696    }
8697    unsafe impl<
8698        D: fidl::encoding::ResourceDialect,
8699        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal__common::SignalReportIndication, D>,
8700    > fidl::encoding::Encode<MlmeSignalReportRequest, D> for (T0,)
8701    {
8702        #[inline]
8703        unsafe fn encode(
8704            self,
8705            encoder: &mut fidl::encoding::Encoder<'_, D>,
8706            offset: usize,
8707            depth: fidl::encoding::Depth,
8708        ) -> fidl::Result<()> {
8709            encoder.debug_check_bounds::<MlmeSignalReportRequest>(offset);
8710            // Zero out padding regions. There's no need to apply masks
8711            // because the unmasked parts will be overwritten by fields.
8712            // Write the fields.
8713            self.0.encode(encoder, offset + 0, depth)?;
8714            Ok(())
8715        }
8716    }
8717
8718    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8719        for MlmeSignalReportRequest
8720    {
8721        #[inline(always)]
8722        fn new_empty() -> Self {
8723            Self {
8724                ind: fidl::new_empty!(
8725                    fidl_fuchsia_wlan_internal__common::SignalReportIndication,
8726                    D
8727                ),
8728            }
8729        }
8730
8731        #[inline]
8732        unsafe fn decode(
8733            &mut self,
8734            decoder: &mut fidl::encoding::Decoder<'_, D>,
8735            offset: usize,
8736            _depth: fidl::encoding::Depth,
8737        ) -> fidl::Result<()> {
8738            decoder.debug_check_bounds::<Self>(offset);
8739            // Verify that padding bytes are zero.
8740            fidl::decode!(
8741                fidl_fuchsia_wlan_internal__common::SignalReportIndication,
8742                D,
8743                &mut self.ind,
8744                decoder,
8745                offset + 0,
8746                _depth
8747            )?;
8748            Ok(())
8749        }
8750    }
8751
8752    impl fidl::encoding::ValueTypeMarker for MlmeStartCaptureFramesRequest {
8753        type Borrowed<'a> = &'a Self;
8754        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8755            value
8756        }
8757    }
8758
8759    unsafe impl fidl::encoding::TypeMarker for MlmeStartCaptureFramesRequest {
8760        type Owned = Self;
8761
8762        #[inline(always)]
8763        fn inline_align(_context: fidl::encoding::Context) -> usize {
8764            4
8765        }
8766
8767        #[inline(always)]
8768        fn inline_size(_context: fidl::encoding::Context) -> usize {
8769            4
8770        }
8771    }
8772
8773    unsafe impl<D: fidl::encoding::ResourceDialect>
8774        fidl::encoding::Encode<MlmeStartCaptureFramesRequest, D>
8775        for &MlmeStartCaptureFramesRequest
8776    {
8777        #[inline]
8778        unsafe fn encode(
8779            self,
8780            encoder: &mut fidl::encoding::Encoder<'_, D>,
8781            offset: usize,
8782            _depth: fidl::encoding::Depth,
8783        ) -> fidl::Result<()> {
8784            encoder.debug_check_bounds::<MlmeStartCaptureFramesRequest>(offset);
8785            // Delegate to tuple encoding.
8786            fidl::encoding::Encode::<MlmeStartCaptureFramesRequest, D>::encode(
8787                (<StartCaptureFramesRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
8788                encoder,
8789                offset,
8790                _depth,
8791            )
8792        }
8793    }
8794    unsafe impl<
8795        D: fidl::encoding::ResourceDialect,
8796        T0: fidl::encoding::Encode<StartCaptureFramesRequest, D>,
8797    > fidl::encoding::Encode<MlmeStartCaptureFramesRequest, D> for (T0,)
8798    {
8799        #[inline]
8800        unsafe fn encode(
8801            self,
8802            encoder: &mut fidl::encoding::Encoder<'_, D>,
8803            offset: usize,
8804            depth: fidl::encoding::Depth,
8805        ) -> fidl::Result<()> {
8806            encoder.debug_check_bounds::<MlmeStartCaptureFramesRequest>(offset);
8807            // Zero out padding regions. There's no need to apply masks
8808            // because the unmasked parts will be overwritten by fields.
8809            // Write the fields.
8810            self.0.encode(encoder, offset + 0, depth)?;
8811            Ok(())
8812        }
8813    }
8814
8815    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8816        for MlmeStartCaptureFramesRequest
8817    {
8818        #[inline(always)]
8819        fn new_empty() -> Self {
8820            Self { req: fidl::new_empty!(StartCaptureFramesRequest, D) }
8821        }
8822
8823        #[inline]
8824        unsafe fn decode(
8825            &mut self,
8826            decoder: &mut fidl::encoding::Decoder<'_, D>,
8827            offset: usize,
8828            _depth: fidl::encoding::Depth,
8829        ) -> fidl::Result<()> {
8830            decoder.debug_check_bounds::<Self>(offset);
8831            // Verify that padding bytes are zero.
8832            fidl::decode!(
8833                StartCaptureFramesRequest,
8834                D,
8835                &mut self.req,
8836                decoder,
8837                offset + 0,
8838                _depth
8839            )?;
8840            Ok(())
8841        }
8842    }
8843
8844    impl fidl::encoding::ValueTypeMarker for MlmeStartCaptureFramesResponse {
8845        type Borrowed<'a> = &'a Self;
8846        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8847            value
8848        }
8849    }
8850
8851    unsafe impl fidl::encoding::TypeMarker for MlmeStartCaptureFramesResponse {
8852        type Owned = Self;
8853
8854        #[inline(always)]
8855        fn inline_align(_context: fidl::encoding::Context) -> usize {
8856            4
8857        }
8858
8859        #[inline(always)]
8860        fn inline_size(_context: fidl::encoding::Context) -> usize {
8861            8
8862        }
8863    }
8864
8865    unsafe impl<D: fidl::encoding::ResourceDialect>
8866        fidl::encoding::Encode<MlmeStartCaptureFramesResponse, D>
8867        for &MlmeStartCaptureFramesResponse
8868    {
8869        #[inline]
8870        unsafe fn encode(
8871            self,
8872            encoder: &mut fidl::encoding::Encoder<'_, D>,
8873            offset: usize,
8874            _depth: fidl::encoding::Depth,
8875        ) -> fidl::Result<()> {
8876            encoder.debug_check_bounds::<MlmeStartCaptureFramesResponse>(offset);
8877            // Delegate to tuple encoding.
8878            fidl::encoding::Encode::<MlmeStartCaptureFramesResponse, D>::encode(
8879                (<StartCaptureFramesResponse as fidl::encoding::ValueTypeMarker>::borrow(
8880                    &self.resp,
8881                ),),
8882                encoder,
8883                offset,
8884                _depth,
8885            )
8886        }
8887    }
8888    unsafe impl<
8889        D: fidl::encoding::ResourceDialect,
8890        T0: fidl::encoding::Encode<StartCaptureFramesResponse, D>,
8891    > fidl::encoding::Encode<MlmeStartCaptureFramesResponse, D> for (T0,)
8892    {
8893        #[inline]
8894        unsafe fn encode(
8895            self,
8896            encoder: &mut fidl::encoding::Encoder<'_, D>,
8897            offset: usize,
8898            depth: fidl::encoding::Depth,
8899        ) -> fidl::Result<()> {
8900            encoder.debug_check_bounds::<MlmeStartCaptureFramesResponse>(offset);
8901            // Zero out padding regions. There's no need to apply masks
8902            // because the unmasked parts will be overwritten by fields.
8903            // Write the fields.
8904            self.0.encode(encoder, offset + 0, depth)?;
8905            Ok(())
8906        }
8907    }
8908
8909    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8910        for MlmeStartCaptureFramesResponse
8911    {
8912        #[inline(always)]
8913        fn new_empty() -> Self {
8914            Self { resp: fidl::new_empty!(StartCaptureFramesResponse, D) }
8915        }
8916
8917        #[inline]
8918        unsafe fn decode(
8919            &mut self,
8920            decoder: &mut fidl::encoding::Decoder<'_, D>,
8921            offset: usize,
8922            _depth: fidl::encoding::Depth,
8923        ) -> fidl::Result<()> {
8924            decoder.debug_check_bounds::<Self>(offset);
8925            // Verify that padding bytes are zero.
8926            fidl::decode!(
8927                StartCaptureFramesResponse,
8928                D,
8929                &mut self.resp,
8930                decoder,
8931                offset + 0,
8932                _depth
8933            )?;
8934            Ok(())
8935        }
8936    }
8937
8938    impl fidl::encoding::ValueTypeMarker for MlmeStartConfRequest {
8939        type Borrowed<'a> = &'a Self;
8940        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8941            value
8942        }
8943    }
8944
8945    unsafe impl fidl::encoding::TypeMarker for MlmeStartConfRequest {
8946        type Owned = Self;
8947
8948        #[inline(always)]
8949        fn inline_align(_context: fidl::encoding::Context) -> usize {
8950            4
8951        }
8952
8953        #[inline(always)]
8954        fn inline_size(_context: fidl::encoding::Context) -> usize {
8955            4
8956        }
8957    }
8958
8959    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartConfRequest, D>
8960        for &MlmeStartConfRequest
8961    {
8962        #[inline]
8963        unsafe fn encode(
8964            self,
8965            encoder: &mut fidl::encoding::Encoder<'_, D>,
8966            offset: usize,
8967            _depth: fidl::encoding::Depth,
8968        ) -> fidl::Result<()> {
8969            encoder.debug_check_bounds::<MlmeStartConfRequest>(offset);
8970            // Delegate to tuple encoding.
8971            fidl::encoding::Encode::<MlmeStartConfRequest, D>::encode(
8972                (<StartConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
8973                encoder,
8974                offset,
8975                _depth,
8976            )
8977        }
8978    }
8979    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartConfirm, D>>
8980        fidl::encoding::Encode<MlmeStartConfRequest, D> for (T0,)
8981    {
8982        #[inline]
8983        unsafe fn encode(
8984            self,
8985            encoder: &mut fidl::encoding::Encoder<'_, D>,
8986            offset: usize,
8987            depth: fidl::encoding::Depth,
8988        ) -> fidl::Result<()> {
8989            encoder.debug_check_bounds::<MlmeStartConfRequest>(offset);
8990            // Zero out padding regions. There's no need to apply masks
8991            // because the unmasked parts will be overwritten by fields.
8992            // Write the fields.
8993            self.0.encode(encoder, offset + 0, depth)?;
8994            Ok(())
8995        }
8996    }
8997
8998    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartConfRequest {
8999        #[inline(always)]
9000        fn new_empty() -> Self {
9001            Self { resp: fidl::new_empty!(StartConfirm, D) }
9002        }
9003
9004        #[inline]
9005        unsafe fn decode(
9006            &mut self,
9007            decoder: &mut fidl::encoding::Decoder<'_, D>,
9008            offset: usize,
9009            _depth: fidl::encoding::Depth,
9010        ) -> fidl::Result<()> {
9011            decoder.debug_check_bounds::<Self>(offset);
9012            // Verify that padding bytes are zero.
9013            fidl::decode!(StartConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
9014            Ok(())
9015        }
9016    }
9017
9018    impl fidl::encoding::ValueTypeMarker for MlmeStartReqRequest {
9019        type Borrowed<'a> = &'a Self;
9020        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9021            value
9022        }
9023    }
9024
9025    unsafe impl fidl::encoding::TypeMarker for MlmeStartReqRequest {
9026        type Owned = Self;
9027
9028        #[inline(always)]
9029        fn inline_align(_context: fidl::encoding::Context) -> usize {
9030            8
9031        }
9032
9033        #[inline(always)]
9034        fn inline_size(_context: fidl::encoding::Context) -> usize {
9035            96
9036        }
9037    }
9038
9039    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartReqRequest, D>
9040        for &MlmeStartReqRequest
9041    {
9042        #[inline]
9043        unsafe fn encode(
9044            self,
9045            encoder: &mut fidl::encoding::Encoder<'_, D>,
9046            offset: usize,
9047            _depth: fidl::encoding::Depth,
9048        ) -> fidl::Result<()> {
9049            encoder.debug_check_bounds::<MlmeStartReqRequest>(offset);
9050            // Delegate to tuple encoding.
9051            fidl::encoding::Encode::<MlmeStartReqRequest, D>::encode(
9052                (<StartRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9053                encoder,
9054                offset,
9055                _depth,
9056            )
9057        }
9058    }
9059    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartRequest, D>>
9060        fidl::encoding::Encode<MlmeStartReqRequest, D> for (T0,)
9061    {
9062        #[inline]
9063        unsafe fn encode(
9064            self,
9065            encoder: &mut fidl::encoding::Encoder<'_, D>,
9066            offset: usize,
9067            depth: fidl::encoding::Depth,
9068        ) -> fidl::Result<()> {
9069            encoder.debug_check_bounds::<MlmeStartReqRequest>(offset);
9070            // Zero out padding regions. There's no need to apply masks
9071            // because the unmasked parts will be overwritten by fields.
9072            // Write the fields.
9073            self.0.encode(encoder, offset + 0, depth)?;
9074            Ok(())
9075        }
9076    }
9077
9078    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartReqRequest {
9079        #[inline(always)]
9080        fn new_empty() -> Self {
9081            Self { req: fidl::new_empty!(StartRequest, D) }
9082        }
9083
9084        #[inline]
9085        unsafe fn decode(
9086            &mut self,
9087            decoder: &mut fidl::encoding::Decoder<'_, D>,
9088            offset: usize,
9089            _depth: fidl::encoding::Depth,
9090        ) -> fidl::Result<()> {
9091            decoder.debug_check_bounds::<Self>(offset);
9092            // Verify that padding bytes are zero.
9093            fidl::decode!(StartRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9094            Ok(())
9095        }
9096    }
9097
9098    impl fidl::encoding::ValueTypeMarker for MlmeStartScanRequest {
9099        type Borrowed<'a> = &'a Self;
9100        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9101            value
9102        }
9103    }
9104
9105    unsafe impl fidl::encoding::TypeMarker for MlmeStartScanRequest {
9106        type Owned = Self;
9107
9108        #[inline(always)]
9109        fn inline_align(_context: fidl::encoding::Context) -> usize {
9110            8
9111        }
9112
9113        #[inline(always)]
9114        fn inline_size(_context: fidl::encoding::Context) -> usize {
9115            64
9116        }
9117    }
9118
9119    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStartScanRequest, D>
9120        for &MlmeStartScanRequest
9121    {
9122        #[inline]
9123        unsafe fn encode(
9124            self,
9125            encoder: &mut fidl::encoding::Encoder<'_, D>,
9126            offset: usize,
9127            _depth: fidl::encoding::Depth,
9128        ) -> fidl::Result<()> {
9129            encoder.debug_check_bounds::<MlmeStartScanRequest>(offset);
9130            // Delegate to tuple encoding.
9131            fidl::encoding::Encode::<MlmeStartScanRequest, D>::encode(
9132                (<ScanRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9133                encoder,
9134                offset,
9135                _depth,
9136            )
9137        }
9138    }
9139    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<ScanRequest, D>>
9140        fidl::encoding::Encode<MlmeStartScanRequest, D> for (T0,)
9141    {
9142        #[inline]
9143        unsafe fn encode(
9144            self,
9145            encoder: &mut fidl::encoding::Encoder<'_, D>,
9146            offset: usize,
9147            depth: fidl::encoding::Depth,
9148        ) -> fidl::Result<()> {
9149            encoder.debug_check_bounds::<MlmeStartScanRequest>(offset);
9150            // Zero out padding regions. There's no need to apply masks
9151            // because the unmasked parts will be overwritten by fields.
9152            // Write the fields.
9153            self.0.encode(encoder, offset + 0, depth)?;
9154            Ok(())
9155        }
9156    }
9157
9158    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStartScanRequest {
9159        #[inline(always)]
9160        fn new_empty() -> Self {
9161            Self { req: fidl::new_empty!(ScanRequest, D) }
9162        }
9163
9164        #[inline]
9165        unsafe fn decode(
9166            &mut self,
9167            decoder: &mut fidl::encoding::Decoder<'_, D>,
9168            offset: usize,
9169            _depth: fidl::encoding::Depth,
9170        ) -> fidl::Result<()> {
9171            decoder.debug_check_bounds::<Self>(offset);
9172            // Verify that padding bytes are zero.
9173            fidl::decode!(ScanRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9174            Ok(())
9175        }
9176    }
9177
9178    impl fidl::encoding::ValueTypeMarker for MlmeStopConfRequest {
9179        type Borrowed<'a> = &'a Self;
9180        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9181            value
9182        }
9183    }
9184
9185    unsafe impl fidl::encoding::TypeMarker for MlmeStopConfRequest {
9186        type Owned = Self;
9187
9188        #[inline(always)]
9189        fn inline_align(_context: fidl::encoding::Context) -> usize {
9190            4
9191        }
9192
9193        #[inline(always)]
9194        fn inline_size(_context: fidl::encoding::Context) -> usize {
9195            4
9196        }
9197    }
9198
9199    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStopConfRequest, D>
9200        for &MlmeStopConfRequest
9201    {
9202        #[inline]
9203        unsafe fn encode(
9204            self,
9205            encoder: &mut fidl::encoding::Encoder<'_, D>,
9206            offset: usize,
9207            _depth: fidl::encoding::Depth,
9208        ) -> fidl::Result<()> {
9209            encoder.debug_check_bounds::<MlmeStopConfRequest>(offset);
9210            // Delegate to tuple encoding.
9211            fidl::encoding::Encode::<MlmeStopConfRequest, D>::encode(
9212                (<StopConfirm as fidl::encoding::ValueTypeMarker>::borrow(&self.resp),),
9213                encoder,
9214                offset,
9215                _depth,
9216            )
9217        }
9218    }
9219    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopConfirm, D>>
9220        fidl::encoding::Encode<MlmeStopConfRequest, D> for (T0,)
9221    {
9222        #[inline]
9223        unsafe fn encode(
9224            self,
9225            encoder: &mut fidl::encoding::Encoder<'_, D>,
9226            offset: usize,
9227            depth: fidl::encoding::Depth,
9228        ) -> fidl::Result<()> {
9229            encoder.debug_check_bounds::<MlmeStopConfRequest>(offset);
9230            // Zero out padding regions. There's no need to apply masks
9231            // because the unmasked parts will be overwritten by fields.
9232            // Write the fields.
9233            self.0.encode(encoder, offset + 0, depth)?;
9234            Ok(())
9235        }
9236    }
9237
9238    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStopConfRequest {
9239        #[inline(always)]
9240        fn new_empty() -> Self {
9241            Self { resp: fidl::new_empty!(StopConfirm, D) }
9242        }
9243
9244        #[inline]
9245        unsafe fn decode(
9246            &mut self,
9247            decoder: &mut fidl::encoding::Decoder<'_, D>,
9248            offset: usize,
9249            _depth: fidl::encoding::Depth,
9250        ) -> fidl::Result<()> {
9251            decoder.debug_check_bounds::<Self>(offset);
9252            // Verify that padding bytes are zero.
9253            fidl::decode!(StopConfirm, D, &mut self.resp, decoder, offset + 0, _depth)?;
9254            Ok(())
9255        }
9256    }
9257
9258    impl fidl::encoding::ValueTypeMarker for MlmeStopReqRequest {
9259        type Borrowed<'a> = &'a Self;
9260        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9261            value
9262        }
9263    }
9264
9265    unsafe impl fidl::encoding::TypeMarker for MlmeStopReqRequest {
9266        type Owned = Self;
9267
9268        #[inline(always)]
9269        fn inline_align(_context: fidl::encoding::Context) -> usize {
9270            8
9271        }
9272
9273        #[inline(always)]
9274        fn inline_size(_context: fidl::encoding::Context) -> usize {
9275            16
9276        }
9277    }
9278
9279    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MlmeStopReqRequest, D>
9280        for &MlmeStopReqRequest
9281    {
9282        #[inline]
9283        unsafe fn encode(
9284            self,
9285            encoder: &mut fidl::encoding::Encoder<'_, D>,
9286            offset: usize,
9287            _depth: fidl::encoding::Depth,
9288        ) -> fidl::Result<()> {
9289            encoder.debug_check_bounds::<MlmeStopReqRequest>(offset);
9290            // Delegate to tuple encoding.
9291            fidl::encoding::Encode::<MlmeStopReqRequest, D>::encode(
9292                (<StopRequest as fidl::encoding::ValueTypeMarker>::borrow(&self.req),),
9293                encoder,
9294                offset,
9295                _depth,
9296            )
9297        }
9298    }
9299    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopRequest, D>>
9300        fidl::encoding::Encode<MlmeStopReqRequest, D> for (T0,)
9301    {
9302        #[inline]
9303        unsafe fn encode(
9304            self,
9305            encoder: &mut fidl::encoding::Encoder<'_, D>,
9306            offset: usize,
9307            depth: fidl::encoding::Depth,
9308        ) -> fidl::Result<()> {
9309            encoder.debug_check_bounds::<MlmeStopReqRequest>(offset);
9310            // Zero out padding regions. There's no need to apply masks
9311            // because the unmasked parts will be overwritten by fields.
9312            // Write the fields.
9313            self.0.encode(encoder, offset + 0, depth)?;
9314            Ok(())
9315        }
9316    }
9317
9318    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MlmeStopReqRequest {
9319        #[inline(always)]
9320        fn new_empty() -> Self {
9321            Self { req: fidl::new_empty!(StopRequest, D) }
9322        }
9323
9324        #[inline]
9325        unsafe fn decode(
9326            &mut self,
9327            decoder: &mut fidl::encoding::Decoder<'_, D>,
9328            offset: usize,
9329            _depth: fidl::encoding::Depth,
9330        ) -> fidl::Result<()> {
9331            decoder.debug_check_bounds::<Self>(offset);
9332            // Verify that padding bytes are zero.
9333            fidl::decode!(StopRequest, D, &mut self.req, decoder, offset + 0, _depth)?;
9334            Ok(())
9335        }
9336    }
9337
9338    impl fidl::encoding::ValueTypeMarker for NegotiatedCapabilities {
9339        type Borrowed<'a> = &'a Self;
9340        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9341            value
9342        }
9343    }
9344
9345    unsafe impl fidl::encoding::TypeMarker for NegotiatedCapabilities {
9346        type Owned = Self;
9347
9348        #[inline(always)]
9349        fn inline_align(_context: fidl::encoding::Context) -> usize {
9350            8
9351        }
9352
9353        #[inline(always)]
9354        fn inline_size(_context: fidl::encoding::Context) -> usize {
9355            56
9356        }
9357    }
9358
9359    unsafe impl<D: fidl::encoding::ResourceDialect>
9360        fidl::encoding::Encode<NegotiatedCapabilities, D> for &NegotiatedCapabilities
9361    {
9362        #[inline]
9363        unsafe fn encode(
9364            self,
9365            encoder: &mut fidl::encoding::Encoder<'_, D>,
9366            offset: usize,
9367            _depth: fidl::encoding::Depth,
9368        ) -> fidl::Result<()> {
9369            encoder.debug_check_bounds::<NegotiatedCapabilities>(offset);
9370            // Delegate to tuple encoding.
9371            fidl::encoding::Encode::<NegotiatedCapabilities, D>::encode(
9372                (
9373                    <fidl_fuchsia_wlan_ieee80211__common::WlanChannel as fidl::encoding::ValueTypeMarker>::borrow(&self.channel),
9374                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
9375                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
9376                    <fidl::encoding::Boxed<WmmParameter> as fidl::encoding::ValueTypeMarker>::borrow(&self.wmm_param),
9377                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.ht_cap),
9378                    <fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities> as fidl::encoding::ValueTypeMarker>::borrow(&self.vht_cap),
9379                ),
9380                encoder, offset, _depth
9381            )
9382        }
9383    }
9384    unsafe impl<
9385        D: fidl::encoding::ResourceDialect,
9386        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::WlanChannel, D>,
9387        T1: fidl::encoding::Encode<u16, D>,
9388        T2: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
9389        T3: fidl::encoding::Encode<fidl::encoding::Boxed<WmmParameter>, D>,
9390        T4: fidl::encoding::Encode<
9391                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
9392                D,
9393            >,
9394        T5: fidl::encoding::Encode<
9395                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
9396                D,
9397            >,
9398    > fidl::encoding::Encode<NegotiatedCapabilities, D> for (T0, T1, T2, T3, T4, T5)
9399    {
9400        #[inline]
9401        unsafe fn encode(
9402            self,
9403            encoder: &mut fidl::encoding::Encoder<'_, D>,
9404            offset: usize,
9405            depth: fidl::encoding::Depth,
9406        ) -> fidl::Result<()> {
9407            encoder.debug_check_bounds::<NegotiatedCapabilities>(offset);
9408            // Zero out padding regions. There's no need to apply masks
9409            // because the unmasked parts will be overwritten by fields.
9410            unsafe {
9411                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
9412                (ptr as *mut u64).write_unaligned(0);
9413            }
9414            // Write the fields.
9415            self.0.encode(encoder, offset + 0, depth)?;
9416            self.1.encode(encoder, offset + 12, depth)?;
9417            self.2.encode(encoder, offset + 16, depth)?;
9418            self.3.encode(encoder, offset + 32, depth)?;
9419            self.4.encode(encoder, offset + 40, depth)?;
9420            self.5.encode(encoder, offset + 48, depth)?;
9421            Ok(())
9422        }
9423    }
9424
9425    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9426        for NegotiatedCapabilities
9427    {
9428        #[inline(always)]
9429        fn new_empty() -> Self {
9430            Self {
9431                channel: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanChannel, D),
9432                capability_info: fidl::new_empty!(u16, D),
9433                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
9434                wmm_param: fidl::new_empty!(fidl::encoding::Boxed<WmmParameter>, D),
9435                ht_cap: fidl::new_empty!(
9436                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
9437                    D
9438                ),
9439                vht_cap: fidl::new_empty!(
9440                    fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
9441                    D
9442                ),
9443            }
9444        }
9445
9446        #[inline]
9447        unsafe fn decode(
9448            &mut self,
9449            decoder: &mut fidl::encoding::Decoder<'_, D>,
9450            offset: usize,
9451            _depth: fidl::encoding::Depth,
9452        ) -> fidl::Result<()> {
9453            decoder.debug_check_bounds::<Self>(offset);
9454            // Verify that padding bytes are zero.
9455            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
9456            let padval = unsafe { (ptr as *const u64).read_unaligned() };
9457            let mask = 0xffff000000000000u64;
9458            let maskedval = padval & mask;
9459            if maskedval != 0 {
9460                return Err(fidl::Error::NonZeroPadding {
9461                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
9462                });
9463            }
9464            fidl::decode!(
9465                fidl_fuchsia_wlan_ieee80211__common::WlanChannel,
9466                D,
9467                &mut self.channel,
9468                decoder,
9469                offset + 0,
9470                _depth
9471            )?;
9472            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 12, _depth)?;
9473            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 16, _depth)?;
9474            fidl::decode!(
9475                fidl::encoding::Boxed<WmmParameter>,
9476                D,
9477                &mut self.wmm_param,
9478                decoder,
9479                offset + 32,
9480                _depth
9481            )?;
9482            fidl::decode!(
9483                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::HtCapabilities>,
9484                D,
9485                &mut self.ht_cap,
9486                decoder,
9487                offset + 40,
9488                _depth
9489            )?;
9490            fidl::decode!(
9491                fidl::encoding::Boxed<fidl_fuchsia_wlan_ieee80211__common::VhtCapabilities>,
9492                D,
9493                &mut self.vht_cap,
9494                decoder,
9495                offset + 48,
9496                _depth
9497            )?;
9498            Ok(())
9499        }
9500    }
9501
9502    impl fidl::encoding::ValueTypeMarker for PmkInfo {
9503        type Borrowed<'a> = &'a Self;
9504        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9505            value
9506        }
9507    }
9508
9509    unsafe impl fidl::encoding::TypeMarker for PmkInfo {
9510        type Owned = Self;
9511
9512        #[inline(always)]
9513        fn inline_align(_context: fidl::encoding::Context) -> usize {
9514            8
9515        }
9516
9517        #[inline(always)]
9518        fn inline_size(_context: fidl::encoding::Context) -> usize {
9519            32
9520        }
9521    }
9522
9523    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PmkInfo, D> for &PmkInfo {
9524        #[inline]
9525        unsafe fn encode(
9526            self,
9527            encoder: &mut fidl::encoding::Encoder<'_, D>,
9528            offset: usize,
9529            _depth: fidl::encoding::Depth,
9530        ) -> fidl::Result<()> {
9531            encoder.debug_check_bounds::<PmkInfo>(offset);
9532            // Delegate to tuple encoding.
9533            fidl::encoding::Encode::<PmkInfo, D>::encode(
9534                (
9535                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.pmk),
9536                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.pmkid),
9537                ),
9538                encoder, offset, _depth
9539            )
9540        }
9541    }
9542    unsafe impl<
9543        D: fidl::encoding::ResourceDialect,
9544        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
9545        T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
9546    > fidl::encoding::Encode<PmkInfo, D> for (T0, T1)
9547    {
9548        #[inline]
9549        unsafe fn encode(
9550            self,
9551            encoder: &mut fidl::encoding::Encoder<'_, D>,
9552            offset: usize,
9553            depth: fidl::encoding::Depth,
9554        ) -> fidl::Result<()> {
9555            encoder.debug_check_bounds::<PmkInfo>(offset);
9556            // Zero out padding regions. There's no need to apply masks
9557            // because the unmasked parts will be overwritten by fields.
9558            // Write the fields.
9559            self.0.encode(encoder, offset + 0, depth)?;
9560            self.1.encode(encoder, offset + 16, depth)?;
9561            Ok(())
9562        }
9563    }
9564
9565    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PmkInfo {
9566        #[inline(always)]
9567        fn new_empty() -> Self {
9568            Self {
9569                pmk: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
9570                pmkid: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
9571            }
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            // Verify that padding bytes are zero.
9583            fidl::decode!(
9584                fidl::encoding::UnboundedVector<u8>,
9585                D,
9586                &mut self.pmk,
9587                decoder,
9588                offset + 0,
9589                _depth
9590            )?;
9591            fidl::decode!(
9592                fidl::encoding::UnboundedVector<u8>,
9593                D,
9594                &mut self.pmkid,
9595                decoder,
9596                offset + 16,
9597                _depth
9598            )?;
9599            Ok(())
9600        }
9601    }
9602
9603    impl fidl::encoding::ValueTypeMarker for ReconnectRequest {
9604        type Borrowed<'a> = &'a Self;
9605        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9606            value
9607        }
9608    }
9609
9610    unsafe impl fidl::encoding::TypeMarker for ReconnectRequest {
9611        type Owned = Self;
9612
9613        #[inline(always)]
9614        fn inline_align(_context: fidl::encoding::Context) -> usize {
9615            1
9616        }
9617
9618        #[inline(always)]
9619        fn inline_size(_context: fidl::encoding::Context) -> usize {
9620            6
9621        }
9622        #[inline(always)]
9623        fn encode_is_copy() -> bool {
9624            true
9625        }
9626
9627        #[inline(always)]
9628        fn decode_is_copy() -> bool {
9629            true
9630        }
9631    }
9632
9633    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ReconnectRequest, D>
9634        for &ReconnectRequest
9635    {
9636        #[inline]
9637        unsafe fn encode(
9638            self,
9639            encoder: &mut fidl::encoding::Encoder<'_, D>,
9640            offset: usize,
9641            _depth: fidl::encoding::Depth,
9642        ) -> fidl::Result<()> {
9643            encoder.debug_check_bounds::<ReconnectRequest>(offset);
9644            unsafe {
9645                // Copy the object into the buffer.
9646                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
9647                (buf_ptr as *mut ReconnectRequest)
9648                    .write_unaligned((self as *const ReconnectRequest).read());
9649                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
9650                // done second because the memcpy will write garbage to these bytes.
9651            }
9652            Ok(())
9653        }
9654    }
9655    unsafe impl<
9656        D: fidl::encoding::ResourceDialect,
9657        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
9658    > fidl::encoding::Encode<ReconnectRequest, D> for (T0,)
9659    {
9660        #[inline]
9661        unsafe fn encode(
9662            self,
9663            encoder: &mut fidl::encoding::Encoder<'_, D>,
9664            offset: usize,
9665            depth: fidl::encoding::Depth,
9666        ) -> fidl::Result<()> {
9667            encoder.debug_check_bounds::<ReconnectRequest>(offset);
9668            // Zero out padding regions. There's no need to apply masks
9669            // because the unmasked parts will be overwritten by fields.
9670            // Write the fields.
9671            self.0.encode(encoder, offset + 0, depth)?;
9672            Ok(())
9673        }
9674    }
9675
9676    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ReconnectRequest {
9677        #[inline(always)]
9678        fn new_empty() -> Self {
9679            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
9680        }
9681
9682        #[inline]
9683        unsafe fn decode(
9684            &mut self,
9685            decoder: &mut fidl::encoding::Decoder<'_, D>,
9686            offset: usize,
9687            _depth: fidl::encoding::Depth,
9688        ) -> fidl::Result<()> {
9689            decoder.debug_check_bounds::<Self>(offset);
9690            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
9691            // Verify that padding bytes are zero.
9692            // Copy from the buffer into the object.
9693            unsafe {
9694                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
9695            }
9696            Ok(())
9697        }
9698    }
9699
9700    impl fidl::encoding::ValueTypeMarker for ResetRequest {
9701        type Borrowed<'a> = &'a Self;
9702        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9703            value
9704        }
9705    }
9706
9707    unsafe impl fidl::encoding::TypeMarker for ResetRequest {
9708        type Owned = Self;
9709
9710        #[inline(always)]
9711        fn inline_align(_context: fidl::encoding::Context) -> usize {
9712            1
9713        }
9714
9715        #[inline(always)]
9716        fn inline_size(_context: fidl::encoding::Context) -> usize {
9717            7
9718        }
9719    }
9720
9721    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResetRequest, D>
9722        for &ResetRequest
9723    {
9724        #[inline]
9725        unsafe fn encode(
9726            self,
9727            encoder: &mut fidl::encoding::Encoder<'_, D>,
9728            offset: usize,
9729            _depth: fidl::encoding::Depth,
9730        ) -> fidl::Result<()> {
9731            encoder.debug_check_bounds::<ResetRequest>(offset);
9732            // Delegate to tuple encoding.
9733            fidl::encoding::Encode::<ResetRequest, D>::encode(
9734                (
9735                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
9736                        &self.sta_address,
9737                    ),
9738                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.set_default_mib),
9739                ),
9740                encoder,
9741                offset,
9742                _depth,
9743            )
9744        }
9745    }
9746    unsafe impl<
9747        D: fidl::encoding::ResourceDialect,
9748        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
9749        T1: fidl::encoding::Encode<bool, D>,
9750    > fidl::encoding::Encode<ResetRequest, D> for (T0, T1)
9751    {
9752        #[inline]
9753        unsafe fn encode(
9754            self,
9755            encoder: &mut fidl::encoding::Encoder<'_, D>,
9756            offset: usize,
9757            depth: fidl::encoding::Depth,
9758        ) -> fidl::Result<()> {
9759            encoder.debug_check_bounds::<ResetRequest>(offset);
9760            // Zero out padding regions. There's no need to apply masks
9761            // because the unmasked parts will be overwritten by fields.
9762            // Write the fields.
9763            self.0.encode(encoder, offset + 0, depth)?;
9764            self.1.encode(encoder, offset + 6, depth)?;
9765            Ok(())
9766        }
9767    }
9768
9769    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResetRequest {
9770        #[inline(always)]
9771        fn new_empty() -> Self {
9772            Self {
9773                sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
9774                set_default_mib: fidl::new_empty!(bool, D),
9775            }
9776        }
9777
9778        #[inline]
9779        unsafe fn decode(
9780            &mut self,
9781            decoder: &mut fidl::encoding::Decoder<'_, D>,
9782            offset: usize,
9783            _depth: fidl::encoding::Depth,
9784        ) -> fidl::Result<()> {
9785            decoder.debug_check_bounds::<Self>(offset);
9786            // Verify that padding bytes are zero.
9787            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.sta_address, decoder, offset + 0, _depth)?;
9788            fidl::decode!(bool, D, &mut self.set_default_mib, decoder, offset + 6, _depth)?;
9789            Ok(())
9790        }
9791    }
9792
9793    impl fidl::encoding::ValueTypeMarker for RoamConfirm {
9794        type Borrowed<'a> = &'a Self;
9795        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9796            value
9797        }
9798    }
9799
9800    unsafe impl fidl::encoding::TypeMarker for RoamConfirm {
9801        type Owned = Self;
9802
9803        #[inline(always)]
9804        fn inline_align(_context: fidl::encoding::Context) -> usize {
9805            8
9806        }
9807
9808        #[inline(always)]
9809        fn inline_size(_context: fidl::encoding::Context) -> usize {
9810            32
9811        }
9812    }
9813
9814    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamConfirm, D>
9815        for &RoamConfirm
9816    {
9817        #[inline]
9818        unsafe fn encode(
9819            self,
9820            encoder: &mut fidl::encoding::Encoder<'_, D>,
9821            offset: usize,
9822            _depth: fidl::encoding::Depth,
9823        ) -> fidl::Result<()> {
9824            encoder.debug_check_bounds::<RoamConfirm>(offset);
9825            // Delegate to tuple encoding.
9826            fidl::encoding::Encode::<RoamConfirm, D>::encode(
9827                (
9828                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
9829                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
9830                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
9831                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.target_bss_authenticated),
9832                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
9833                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
9834                ),
9835                encoder, offset, _depth
9836            )
9837        }
9838    }
9839    unsafe impl<
9840        D: fidl::encoding::ResourceDialect,
9841        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
9842        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
9843        T2: fidl::encoding::Encode<bool, D>,
9844        T3: fidl::encoding::Encode<bool, D>,
9845        T4: fidl::encoding::Encode<u16, D>,
9846        T5: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
9847    > fidl::encoding::Encode<RoamConfirm, D> for (T0, T1, T2, T3, T4, T5)
9848    {
9849        #[inline]
9850        unsafe fn encode(
9851            self,
9852            encoder: &mut fidl::encoding::Encoder<'_, D>,
9853            offset: usize,
9854            depth: fidl::encoding::Depth,
9855        ) -> fidl::Result<()> {
9856            encoder.debug_check_bounds::<RoamConfirm>(offset);
9857            // Zero out padding regions. There's no need to apply masks
9858            // because the unmasked parts will be overwritten by fields.
9859            unsafe {
9860                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
9861                (ptr as *mut u64).write_unaligned(0);
9862            }
9863            // Write the fields.
9864            self.0.encode(encoder, offset + 0, depth)?;
9865            self.1.encode(encoder, offset + 6, depth)?;
9866            self.2.encode(encoder, offset + 8, depth)?;
9867            self.3.encode(encoder, offset + 9, depth)?;
9868            self.4.encode(encoder, offset + 10, depth)?;
9869            self.5.encode(encoder, offset + 16, depth)?;
9870            Ok(())
9871        }
9872    }
9873
9874    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamConfirm {
9875        #[inline(always)]
9876        fn new_empty() -> Self {
9877            Self {
9878                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
9879                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
9880                original_association_maintained: fidl::new_empty!(bool, D),
9881                target_bss_authenticated: fidl::new_empty!(bool, D),
9882                association_id: fidl::new_empty!(u16, D),
9883                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
9884            }
9885        }
9886
9887        #[inline]
9888        unsafe fn decode(
9889            &mut self,
9890            decoder: &mut fidl::encoding::Decoder<'_, D>,
9891            offset: usize,
9892            _depth: fidl::encoding::Depth,
9893        ) -> fidl::Result<()> {
9894            decoder.debug_check_bounds::<Self>(offset);
9895            // Verify that padding bytes are zero.
9896            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
9897            let padval = unsafe { (ptr as *const u64).read_unaligned() };
9898            let mask = 0xffffffff00000000u64;
9899            let maskedval = padval & mask;
9900            if maskedval != 0 {
9901                return Err(fidl::Error::NonZeroPadding {
9902                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
9903                });
9904            }
9905            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
9906            fidl::decode!(
9907                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
9908                D,
9909                &mut self.status_code,
9910                decoder,
9911                offset + 6,
9912                _depth
9913            )?;
9914            fidl::decode!(
9915                bool,
9916                D,
9917                &mut self.original_association_maintained,
9918                decoder,
9919                offset + 8,
9920                _depth
9921            )?;
9922            fidl::decode!(
9923                bool,
9924                D,
9925                &mut self.target_bss_authenticated,
9926                decoder,
9927                offset + 9,
9928                _depth
9929            )?;
9930            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 10, _depth)?;
9931            fidl::decode!(
9932                fidl::encoding::UnboundedVector<u8>,
9933                D,
9934                &mut self.association_ies,
9935                decoder,
9936                offset + 16,
9937                _depth
9938            )?;
9939            Ok(())
9940        }
9941    }
9942
9943    impl fidl::encoding::ValueTypeMarker for RoamRequest {
9944        type Borrowed<'a> = &'a Self;
9945        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9946            value
9947        }
9948    }
9949
9950    unsafe impl fidl::encoding::TypeMarker for RoamRequest {
9951        type Owned = Self;
9952
9953        #[inline(always)]
9954        fn inline_align(_context: fidl::encoding::Context) -> usize {
9955            8
9956        }
9957
9958        #[inline(always)]
9959        fn inline_size(_context: fidl::encoding::Context) -> usize {
9960            48
9961        }
9962    }
9963
9964    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamRequest, D>
9965        for &RoamRequest
9966    {
9967        #[inline]
9968        unsafe fn encode(
9969            self,
9970            encoder: &mut fidl::encoding::Encoder<'_, D>,
9971            offset: usize,
9972            _depth: fidl::encoding::Depth,
9973        ) -> fidl::Result<()> {
9974            encoder.debug_check_bounds::<RoamRequest>(offset);
9975            // Delegate to tuple encoding.
9976            fidl::encoding::Encode::<RoamRequest, D>::encode(
9977                (
9978                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
9979                ),
9980                encoder, offset, _depth
9981            )
9982        }
9983    }
9984    unsafe impl<
9985        D: fidl::encoding::ResourceDialect,
9986        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
9987    > fidl::encoding::Encode<RoamRequest, D> for (T0,)
9988    {
9989        #[inline]
9990        unsafe fn encode(
9991            self,
9992            encoder: &mut fidl::encoding::Encoder<'_, D>,
9993            offset: usize,
9994            depth: fidl::encoding::Depth,
9995        ) -> fidl::Result<()> {
9996            encoder.debug_check_bounds::<RoamRequest>(offset);
9997            // Zero out padding regions. There's no need to apply masks
9998            // because the unmasked parts will be overwritten by fields.
9999            // Write the fields.
10000            self.0.encode(encoder, offset + 0, depth)?;
10001            Ok(())
10002        }
10003    }
10004
10005    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamRequest {
10006        #[inline(always)]
10007        fn new_empty() -> Self {
10008            Self {
10009                selected_bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
10010            }
10011        }
10012
10013        #[inline]
10014        unsafe fn decode(
10015            &mut self,
10016            decoder: &mut fidl::encoding::Decoder<'_, D>,
10017            offset: usize,
10018            _depth: fidl::encoding::Depth,
10019        ) -> fidl::Result<()> {
10020            decoder.debug_check_bounds::<Self>(offset);
10021            // Verify that padding bytes are zero.
10022            fidl::decode!(
10023                fidl_fuchsia_wlan_common__common::BssDescription,
10024                D,
10025                &mut self.selected_bss,
10026                decoder,
10027                offset + 0,
10028                _depth
10029            )?;
10030            Ok(())
10031        }
10032    }
10033
10034    impl fidl::encoding::ValueTypeMarker for RoamResultIndication {
10035        type Borrowed<'a> = &'a Self;
10036        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10037            value
10038        }
10039    }
10040
10041    unsafe impl fidl::encoding::TypeMarker for RoamResultIndication {
10042        type Owned = Self;
10043
10044        #[inline(always)]
10045        fn inline_align(_context: fidl::encoding::Context) -> usize {
10046            8
10047        }
10048
10049        #[inline(always)]
10050        fn inline_size(_context: fidl::encoding::Context) -> usize {
10051            32
10052        }
10053    }
10054
10055    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamResultIndication, D>
10056        for &RoamResultIndication
10057    {
10058        #[inline]
10059        unsafe fn encode(
10060            self,
10061            encoder: &mut fidl::encoding::Encoder<'_, D>,
10062            offset: usize,
10063            _depth: fidl::encoding::Depth,
10064        ) -> fidl::Result<()> {
10065            encoder.debug_check_bounds::<RoamResultIndication>(offset);
10066            // Delegate to tuple encoding.
10067            fidl::encoding::Encode::<RoamResultIndication, D>::encode(
10068                (
10069                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
10070                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10071                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
10072                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.target_bss_authenticated),
10073                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.association_id),
10074                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.association_ies),
10075                ),
10076                encoder, offset, _depth
10077            )
10078        }
10079    }
10080    unsafe impl<
10081        D: fidl::encoding::ResourceDialect,
10082        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10083        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
10084        T2: fidl::encoding::Encode<bool, D>,
10085        T3: fidl::encoding::Encode<bool, D>,
10086        T4: fidl::encoding::Encode<u16, D>,
10087        T5: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10088    > fidl::encoding::Encode<RoamResultIndication, D> for (T0, T1, T2, T3, T4, T5)
10089    {
10090        #[inline]
10091        unsafe fn encode(
10092            self,
10093            encoder: &mut fidl::encoding::Encoder<'_, D>,
10094            offset: usize,
10095            depth: fidl::encoding::Depth,
10096        ) -> fidl::Result<()> {
10097            encoder.debug_check_bounds::<RoamResultIndication>(offset);
10098            // Zero out padding regions. There's no need to apply masks
10099            // because the unmasked parts will be overwritten by fields.
10100            unsafe {
10101                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10102                (ptr as *mut u64).write_unaligned(0);
10103            }
10104            // Write the fields.
10105            self.0.encode(encoder, offset + 0, depth)?;
10106            self.1.encode(encoder, offset + 6, depth)?;
10107            self.2.encode(encoder, offset + 8, depth)?;
10108            self.3.encode(encoder, offset + 9, depth)?;
10109            self.4.encode(encoder, offset + 10, depth)?;
10110            self.5.encode(encoder, offset + 16, depth)?;
10111            Ok(())
10112        }
10113    }
10114
10115    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamResultIndication {
10116        #[inline(always)]
10117        fn new_empty() -> Self {
10118            Self {
10119                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10120                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
10121                original_association_maintained: fidl::new_empty!(bool, D),
10122                target_bss_authenticated: fidl::new_empty!(bool, D),
10123                association_id: fidl::new_empty!(u16, D),
10124                association_ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10125            }
10126        }
10127
10128        #[inline]
10129        unsafe fn decode(
10130            &mut self,
10131            decoder: &mut fidl::encoding::Decoder<'_, D>,
10132            offset: usize,
10133            _depth: fidl::encoding::Depth,
10134        ) -> fidl::Result<()> {
10135            decoder.debug_check_bounds::<Self>(offset);
10136            // Verify that padding bytes are zero.
10137            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10138            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10139            let mask = 0xffffffff00000000u64;
10140            let maskedval = padval & mask;
10141            if maskedval != 0 {
10142                return Err(fidl::Error::NonZeroPadding {
10143                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10144                });
10145            }
10146            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
10147            fidl::decode!(
10148                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10149                D,
10150                &mut self.status_code,
10151                decoder,
10152                offset + 6,
10153                _depth
10154            )?;
10155            fidl::decode!(
10156                bool,
10157                D,
10158                &mut self.original_association_maintained,
10159                decoder,
10160                offset + 8,
10161                _depth
10162            )?;
10163            fidl::decode!(
10164                bool,
10165                D,
10166                &mut self.target_bss_authenticated,
10167                decoder,
10168                offset + 9,
10169                _depth
10170            )?;
10171            fidl::decode!(u16, D, &mut self.association_id, decoder, offset + 10, _depth)?;
10172            fidl::decode!(
10173                fidl::encoding::UnboundedVector<u8>,
10174                D,
10175                &mut self.association_ies,
10176                decoder,
10177                offset + 16,
10178                _depth
10179            )?;
10180            Ok(())
10181        }
10182    }
10183
10184    impl fidl::encoding::ValueTypeMarker for RoamStartIndication {
10185        type Borrowed<'a> = &'a Self;
10186        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10187            value
10188        }
10189    }
10190
10191    unsafe impl fidl::encoding::TypeMarker for RoamStartIndication {
10192        type Owned = Self;
10193
10194        #[inline(always)]
10195        fn inline_align(_context: fidl::encoding::Context) -> usize {
10196            8
10197        }
10198
10199        #[inline(always)]
10200        fn inline_size(_context: fidl::encoding::Context) -> usize {
10201            64
10202        }
10203    }
10204
10205    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RoamStartIndication, D>
10206        for &RoamStartIndication
10207    {
10208        #[inline]
10209        unsafe fn encode(
10210            self,
10211            encoder: &mut fidl::encoding::Encoder<'_, D>,
10212            offset: usize,
10213            _depth: fidl::encoding::Depth,
10214        ) -> fidl::Result<()> {
10215            encoder.debug_check_bounds::<RoamStartIndication>(offset);
10216            // Delegate to tuple encoding.
10217            fidl::encoding::Encode::<RoamStartIndication, D>::encode(
10218                (
10219                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bssid),
10220                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.selected_bss),
10221                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.original_association_maintained),
10222                ),
10223                encoder, offset, _depth
10224            )
10225        }
10226    }
10227    unsafe impl<
10228        D: fidl::encoding::ResourceDialect,
10229        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10230        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
10231        T2: fidl::encoding::Encode<bool, D>,
10232    > fidl::encoding::Encode<RoamStartIndication, D> for (T0, T1, T2)
10233    {
10234        #[inline]
10235        unsafe fn encode(
10236            self,
10237            encoder: &mut fidl::encoding::Encoder<'_, D>,
10238            offset: usize,
10239            depth: fidl::encoding::Depth,
10240        ) -> fidl::Result<()> {
10241            encoder.debug_check_bounds::<RoamStartIndication>(offset);
10242            // Zero out padding regions. There's no need to apply masks
10243            // because the unmasked parts will be overwritten by fields.
10244            unsafe {
10245                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
10246                (ptr as *mut u64).write_unaligned(0);
10247            }
10248            unsafe {
10249                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
10250                (ptr as *mut u64).write_unaligned(0);
10251            }
10252            // Write the fields.
10253            self.0.encode(encoder, offset + 0, depth)?;
10254            self.1.encode(encoder, offset + 8, depth)?;
10255            self.2.encode(encoder, offset + 56, depth)?;
10256            Ok(())
10257        }
10258    }
10259
10260    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RoamStartIndication {
10261        #[inline(always)]
10262        fn new_empty() -> Self {
10263            Self {
10264                selected_bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10265                selected_bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
10266                original_association_maintained: fidl::new_empty!(bool, D),
10267            }
10268        }
10269
10270        #[inline]
10271        unsafe fn decode(
10272            &mut self,
10273            decoder: &mut fidl::encoding::Decoder<'_, D>,
10274            offset: usize,
10275            _depth: fidl::encoding::Depth,
10276        ) -> fidl::Result<()> {
10277            decoder.debug_check_bounds::<Self>(offset);
10278            // Verify that padding bytes are zero.
10279            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
10280            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10281            let mask = 0xffff000000000000u64;
10282            let maskedval = padval & mask;
10283            if maskedval != 0 {
10284                return Err(fidl::Error::NonZeroPadding {
10285                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
10286                });
10287            }
10288            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
10289            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10290            let mask = 0xffffffffffffff00u64;
10291            let maskedval = padval & mask;
10292            if maskedval != 0 {
10293                return Err(fidl::Error::NonZeroPadding {
10294                    padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
10295                });
10296            }
10297            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.selected_bssid, decoder, offset + 0, _depth)?;
10298            fidl::decode!(
10299                fidl_fuchsia_wlan_common__common::BssDescription,
10300                D,
10301                &mut self.selected_bss,
10302                decoder,
10303                offset + 8,
10304                _depth
10305            )?;
10306            fidl::decode!(
10307                bool,
10308                D,
10309                &mut self.original_association_maintained,
10310                decoder,
10311                offset + 56,
10312                _depth
10313            )?;
10314            Ok(())
10315        }
10316    }
10317
10318    impl fidl::encoding::ValueTypeMarker for SaeFrame {
10319        type Borrowed<'a> = &'a Self;
10320        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10321            value
10322        }
10323    }
10324
10325    unsafe impl fidl::encoding::TypeMarker for SaeFrame {
10326        type Owned = Self;
10327
10328        #[inline(always)]
10329        fn inline_align(_context: fidl::encoding::Context) -> usize {
10330            8
10331        }
10332
10333        #[inline(always)]
10334        fn inline_size(_context: fidl::encoding::Context) -> usize {
10335            32
10336        }
10337    }
10338
10339    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFrame, D> for &SaeFrame {
10340        #[inline]
10341        unsafe fn encode(
10342            self,
10343            encoder: &mut fidl::encoding::Encoder<'_, D>,
10344            offset: usize,
10345            _depth: fidl::encoding::Depth,
10346        ) -> fidl::Result<()> {
10347            encoder.debug_check_bounds::<SaeFrame>(offset);
10348            // Delegate to tuple encoding.
10349            fidl::encoding::Encode::<SaeFrame, D>::encode(
10350                (
10351                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
10352                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10353                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.seq_num),
10354                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.sae_fields),
10355                ),
10356                encoder, offset, _depth
10357            )
10358        }
10359    }
10360    unsafe impl<
10361        D: fidl::encoding::ResourceDialect,
10362        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10363        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
10364        T2: fidl::encoding::Encode<u16, D>,
10365        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
10366    > fidl::encoding::Encode<SaeFrame, D> for (T0, T1, T2, T3)
10367    {
10368        #[inline]
10369        unsafe fn encode(
10370            self,
10371            encoder: &mut fidl::encoding::Encoder<'_, D>,
10372            offset: usize,
10373            depth: fidl::encoding::Depth,
10374        ) -> fidl::Result<()> {
10375            encoder.debug_check_bounds::<SaeFrame>(offset);
10376            // Zero out padding regions. There's no need to apply masks
10377            // because the unmasked parts will be overwritten by fields.
10378            unsafe {
10379                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10380                (ptr as *mut u64).write_unaligned(0);
10381            }
10382            // Write the fields.
10383            self.0.encode(encoder, offset + 0, depth)?;
10384            self.1.encode(encoder, offset + 6, depth)?;
10385            self.2.encode(encoder, offset + 8, depth)?;
10386            self.3.encode(encoder, offset + 16, depth)?;
10387            Ok(())
10388        }
10389    }
10390
10391    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFrame {
10392        #[inline(always)]
10393        fn new_empty() -> Self {
10394            Self {
10395                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10396                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
10397                seq_num: fidl::new_empty!(u16, D),
10398                sae_fields: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
10399            }
10400        }
10401
10402        #[inline]
10403        unsafe fn decode(
10404            &mut self,
10405            decoder: &mut fidl::encoding::Decoder<'_, D>,
10406            offset: usize,
10407            _depth: fidl::encoding::Depth,
10408        ) -> fidl::Result<()> {
10409            decoder.debug_check_bounds::<Self>(offset);
10410            // Verify that padding bytes are zero.
10411            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10412            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10413            let mask = 0xffffffffffff0000u64;
10414            let maskedval = padval & mask;
10415            if maskedval != 0 {
10416                return Err(fidl::Error::NonZeroPadding {
10417                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10418                });
10419            }
10420            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
10421            fidl::decode!(
10422                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10423                D,
10424                &mut self.status_code,
10425                decoder,
10426                offset + 6,
10427                _depth
10428            )?;
10429            fidl::decode!(u16, D, &mut self.seq_num, decoder, offset + 8, _depth)?;
10430            fidl::decode!(
10431                fidl::encoding::UnboundedVector<u8>,
10432                D,
10433                &mut self.sae_fields,
10434                decoder,
10435                offset + 16,
10436                _depth
10437            )?;
10438            Ok(())
10439        }
10440    }
10441
10442    impl fidl::encoding::ValueTypeMarker for SaeHandshakeIndication {
10443        type Borrowed<'a> = &'a Self;
10444        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10445            value
10446        }
10447    }
10448
10449    unsafe impl fidl::encoding::TypeMarker for SaeHandshakeIndication {
10450        type Owned = Self;
10451
10452        #[inline(always)]
10453        fn inline_align(_context: fidl::encoding::Context) -> usize {
10454            1
10455        }
10456
10457        #[inline(always)]
10458        fn inline_size(_context: fidl::encoding::Context) -> usize {
10459            6
10460        }
10461        #[inline(always)]
10462        fn encode_is_copy() -> bool {
10463            true
10464        }
10465
10466        #[inline(always)]
10467        fn decode_is_copy() -> bool {
10468            true
10469        }
10470    }
10471
10472    unsafe impl<D: fidl::encoding::ResourceDialect>
10473        fidl::encoding::Encode<SaeHandshakeIndication, D> for &SaeHandshakeIndication
10474    {
10475        #[inline]
10476        unsafe fn encode(
10477            self,
10478            encoder: &mut fidl::encoding::Encoder<'_, D>,
10479            offset: usize,
10480            _depth: fidl::encoding::Depth,
10481        ) -> fidl::Result<()> {
10482            encoder.debug_check_bounds::<SaeHandshakeIndication>(offset);
10483            unsafe {
10484                // Copy the object into the buffer.
10485                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
10486                (buf_ptr as *mut SaeHandshakeIndication)
10487                    .write_unaligned((self as *const SaeHandshakeIndication).read());
10488                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
10489                // done second because the memcpy will write garbage to these bytes.
10490            }
10491            Ok(())
10492        }
10493    }
10494    unsafe impl<
10495        D: fidl::encoding::ResourceDialect,
10496        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10497    > fidl::encoding::Encode<SaeHandshakeIndication, D> for (T0,)
10498    {
10499        #[inline]
10500        unsafe fn encode(
10501            self,
10502            encoder: &mut fidl::encoding::Encoder<'_, D>,
10503            offset: usize,
10504            depth: fidl::encoding::Depth,
10505        ) -> fidl::Result<()> {
10506            encoder.debug_check_bounds::<SaeHandshakeIndication>(offset);
10507            // Zero out padding regions. There's no need to apply masks
10508            // because the unmasked parts will be overwritten by fields.
10509            // Write the fields.
10510            self.0.encode(encoder, offset + 0, depth)?;
10511            Ok(())
10512        }
10513    }
10514
10515    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10516        for SaeHandshakeIndication
10517    {
10518        #[inline(always)]
10519        fn new_empty() -> Self {
10520            Self { peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
10521        }
10522
10523        #[inline]
10524        unsafe fn decode(
10525            &mut self,
10526            decoder: &mut fidl::encoding::Decoder<'_, D>,
10527            offset: usize,
10528            _depth: fidl::encoding::Depth,
10529        ) -> fidl::Result<()> {
10530            decoder.debug_check_bounds::<Self>(offset);
10531            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
10532            // Verify that padding bytes are zero.
10533            // Copy from the buffer into the object.
10534            unsafe {
10535                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
10536            }
10537            Ok(())
10538        }
10539    }
10540
10541    impl fidl::encoding::ValueTypeMarker for SaeHandshakeResponse {
10542        type Borrowed<'a> = &'a Self;
10543        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10544            value
10545        }
10546    }
10547
10548    unsafe impl fidl::encoding::TypeMarker for SaeHandshakeResponse {
10549        type Owned = Self;
10550
10551        #[inline(always)]
10552        fn inline_align(_context: fidl::encoding::Context) -> usize {
10553            2
10554        }
10555
10556        #[inline(always)]
10557        fn inline_size(_context: fidl::encoding::Context) -> usize {
10558            8
10559        }
10560    }
10561
10562    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeHandshakeResponse, D>
10563        for &SaeHandshakeResponse
10564    {
10565        #[inline]
10566        unsafe fn encode(
10567            self,
10568            encoder: &mut fidl::encoding::Encoder<'_, D>,
10569            offset: usize,
10570            _depth: fidl::encoding::Depth,
10571        ) -> fidl::Result<()> {
10572            encoder.debug_check_bounds::<SaeHandshakeResponse>(offset);
10573            // Delegate to tuple encoding.
10574            fidl::encoding::Encode::<SaeHandshakeResponse, D>::encode(
10575                (
10576                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_sta_address),
10577                    <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow(&self.status_code),
10578                ),
10579                encoder, offset, _depth
10580            )
10581        }
10582    }
10583    unsafe impl<
10584        D: fidl::encoding::ResourceDialect,
10585        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
10586        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>,
10587    > fidl::encoding::Encode<SaeHandshakeResponse, D> for (T0, T1)
10588    {
10589        #[inline]
10590        unsafe fn encode(
10591            self,
10592            encoder: &mut fidl::encoding::Encoder<'_, D>,
10593            offset: usize,
10594            depth: fidl::encoding::Depth,
10595        ) -> fidl::Result<()> {
10596            encoder.debug_check_bounds::<SaeHandshakeResponse>(offset);
10597            // Zero out padding regions. There's no need to apply masks
10598            // because the unmasked parts will be overwritten by fields.
10599            // Write the fields.
10600            self.0.encode(encoder, offset + 0, depth)?;
10601            self.1.encode(encoder, offset + 6, depth)?;
10602            Ok(())
10603        }
10604    }
10605
10606    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeHandshakeResponse {
10607        #[inline(always)]
10608        fn new_empty() -> Self {
10609            Self {
10610                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
10611                status_code: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D),
10612            }
10613        }
10614
10615        #[inline]
10616        unsafe fn decode(
10617            &mut self,
10618            decoder: &mut fidl::encoding::Decoder<'_, D>,
10619            offset: usize,
10620            _depth: fidl::encoding::Depth,
10621        ) -> fidl::Result<()> {
10622            decoder.debug_check_bounds::<Self>(offset);
10623            // Verify that padding bytes are zero.
10624            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
10625            fidl::decode!(
10626                fidl_fuchsia_wlan_ieee80211__common::StatusCode,
10627                D,
10628                &mut self.status_code,
10629                decoder,
10630                offset + 6,
10631                _depth
10632            )?;
10633            Ok(())
10634        }
10635    }
10636
10637    impl fidl::encoding::ValueTypeMarker for ScanEnd {
10638        type Borrowed<'a> = &'a Self;
10639        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10640            value
10641        }
10642    }
10643
10644    unsafe impl fidl::encoding::TypeMarker for ScanEnd {
10645        type Owned = Self;
10646
10647        #[inline(always)]
10648        fn inline_align(_context: fidl::encoding::Context) -> usize {
10649            8
10650        }
10651
10652        #[inline(always)]
10653        fn inline_size(_context: fidl::encoding::Context) -> usize {
10654            16
10655        }
10656    }
10657
10658    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanEnd, D> for &ScanEnd {
10659        #[inline]
10660        unsafe fn encode(
10661            self,
10662            encoder: &mut fidl::encoding::Encoder<'_, D>,
10663            offset: usize,
10664            _depth: fidl::encoding::Depth,
10665        ) -> fidl::Result<()> {
10666            encoder.debug_check_bounds::<ScanEnd>(offset);
10667            // Delegate to tuple encoding.
10668            fidl::encoding::Encode::<ScanEnd, D>::encode(
10669                (
10670                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
10671                    <ScanResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.code),
10672                ),
10673                encoder,
10674                offset,
10675                _depth,
10676            )
10677        }
10678    }
10679    unsafe impl<
10680        D: fidl::encoding::ResourceDialect,
10681        T0: fidl::encoding::Encode<u64, D>,
10682        T1: fidl::encoding::Encode<ScanResultCode, D>,
10683    > fidl::encoding::Encode<ScanEnd, D> for (T0, T1)
10684    {
10685        #[inline]
10686        unsafe fn encode(
10687            self,
10688            encoder: &mut fidl::encoding::Encoder<'_, D>,
10689            offset: usize,
10690            depth: fidl::encoding::Depth,
10691        ) -> fidl::Result<()> {
10692            encoder.debug_check_bounds::<ScanEnd>(offset);
10693            // Zero out padding regions. There's no need to apply masks
10694            // because the unmasked parts will be overwritten by fields.
10695            unsafe {
10696                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10697                (ptr as *mut u64).write_unaligned(0);
10698            }
10699            // Write the fields.
10700            self.0.encode(encoder, offset + 0, depth)?;
10701            self.1.encode(encoder, offset + 8, depth)?;
10702            Ok(())
10703        }
10704    }
10705
10706    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanEnd {
10707        #[inline(always)]
10708        fn new_empty() -> Self {
10709            Self { txn_id: fidl::new_empty!(u64, D), code: fidl::new_empty!(ScanResultCode, D) }
10710        }
10711
10712        #[inline]
10713        unsafe fn decode(
10714            &mut self,
10715            decoder: &mut fidl::encoding::Decoder<'_, D>,
10716            offset: usize,
10717            _depth: fidl::encoding::Depth,
10718        ) -> fidl::Result<()> {
10719            decoder.debug_check_bounds::<Self>(offset);
10720            // Verify that padding bytes are zero.
10721            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10722            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10723            let mask = 0xffffffff00000000u64;
10724            let maskedval = padval & mask;
10725            if maskedval != 0 {
10726                return Err(fidl::Error::NonZeroPadding {
10727                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10728                });
10729            }
10730            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
10731            fidl::decode!(ScanResultCode, D, &mut self.code, decoder, offset + 8, _depth)?;
10732            Ok(())
10733        }
10734    }
10735
10736    impl fidl::encoding::ValueTypeMarker for ScanRequest {
10737        type Borrowed<'a> = &'a Self;
10738        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10739            value
10740        }
10741    }
10742
10743    unsafe impl fidl::encoding::TypeMarker for ScanRequest {
10744        type Owned = Self;
10745
10746        #[inline(always)]
10747        fn inline_align(_context: fidl::encoding::Context) -> usize {
10748            8
10749        }
10750
10751        #[inline(always)]
10752        fn inline_size(_context: fidl::encoding::Context) -> usize {
10753            64
10754        }
10755    }
10756
10757    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanRequest, D>
10758        for &ScanRequest
10759    {
10760        #[inline]
10761        unsafe fn encode(
10762            self,
10763            encoder: &mut fidl::encoding::Encoder<'_, D>,
10764            offset: usize,
10765            _depth: fidl::encoding::Depth,
10766        ) -> fidl::Result<()> {
10767            encoder.debug_check_bounds::<ScanRequest>(offset);
10768            // Delegate to tuple encoding.
10769            fidl::encoding::Encode::<ScanRequest, D>::encode(
10770                (
10771                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
10772                    <ScanTypes as fidl::encoding::ValueTypeMarker>::borrow(&self.scan_type),
10773                    <fidl::encoding::Vector<u8, 256> as fidl::encoding::ValueTypeMarker>::borrow(&self.channel_list),
10774                    <fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid_list),
10775                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.probe_delay),
10776                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.min_channel_time),
10777                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.max_channel_time),
10778                ),
10779                encoder, offset, _depth
10780            )
10781        }
10782    }
10783    unsafe impl<
10784        D: fidl::encoding::ResourceDialect,
10785        T0: fidl::encoding::Encode<u64, D>,
10786        T1: fidl::encoding::Encode<ScanTypes, D>,
10787        T2: fidl::encoding::Encode<fidl::encoding::Vector<u8, 256>, D>,
10788        T3: fidl::encoding::Encode<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>,
10789        T4: fidl::encoding::Encode<u32, D>,
10790        T5: fidl::encoding::Encode<u32, D>,
10791        T6: fidl::encoding::Encode<u32, D>,
10792    > fidl::encoding::Encode<ScanRequest, D> for (T0, T1, T2, T3, T4, T5, T6)
10793    {
10794        #[inline]
10795        unsafe fn encode(
10796            self,
10797            encoder: &mut fidl::encoding::Encoder<'_, D>,
10798            offset: usize,
10799            depth: fidl::encoding::Depth,
10800        ) -> fidl::Result<()> {
10801            encoder.debug_check_bounds::<ScanRequest>(offset);
10802            // Zero out padding regions. There's no need to apply masks
10803            // because the unmasked parts will be overwritten by fields.
10804            unsafe {
10805                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
10806                (ptr as *mut u64).write_unaligned(0);
10807            }
10808            unsafe {
10809                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
10810                (ptr as *mut u64).write_unaligned(0);
10811            }
10812            // Write the fields.
10813            self.0.encode(encoder, offset + 0, depth)?;
10814            self.1.encode(encoder, offset + 8, depth)?;
10815            self.2.encode(encoder, offset + 16, depth)?;
10816            self.3.encode(encoder, offset + 32, depth)?;
10817            self.4.encode(encoder, offset + 48, depth)?;
10818            self.5.encode(encoder, offset + 52, depth)?;
10819            self.6.encode(encoder, offset + 56, depth)?;
10820            Ok(())
10821        }
10822    }
10823
10824    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanRequest {
10825        #[inline(always)]
10826        fn new_empty() -> Self {
10827            Self {
10828                txn_id: fidl::new_empty!(u64, D),
10829                scan_type: fidl::new_empty!(ScanTypes, D),
10830                channel_list: fidl::new_empty!(fidl::encoding::Vector<u8, 256>, D),
10831                ssid_list: fidl::new_empty!(
10832                    fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
10833                    D
10834                ),
10835                probe_delay: fidl::new_empty!(u32, D),
10836                min_channel_time: fidl::new_empty!(u32, D),
10837                max_channel_time: fidl::new_empty!(u32, D),
10838            }
10839        }
10840
10841        #[inline]
10842        unsafe fn decode(
10843            &mut self,
10844            decoder: &mut fidl::encoding::Decoder<'_, D>,
10845            offset: usize,
10846            _depth: fidl::encoding::Depth,
10847        ) -> fidl::Result<()> {
10848            decoder.debug_check_bounds::<Self>(offset);
10849            // Verify that padding bytes are zero.
10850            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
10851            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10852            let mask = 0xffffffff00000000u64;
10853            let maskedval = padval & mask;
10854            if maskedval != 0 {
10855                return Err(fidl::Error::NonZeroPadding {
10856                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
10857                });
10858            }
10859            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
10860            let padval = unsafe { (ptr as *const u64).read_unaligned() };
10861            let mask = 0xffffffff00000000u64;
10862            let maskedval = padval & mask;
10863            if maskedval != 0 {
10864                return Err(fidl::Error::NonZeroPadding {
10865                    padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
10866                });
10867            }
10868            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
10869            fidl::decode!(ScanTypes, D, &mut self.scan_type, decoder, offset + 8, _depth)?;
10870            fidl::decode!(fidl::encoding::Vector<u8, 256>, D, &mut self.channel_list, decoder, offset + 16, _depth)?;
10871            fidl::decode!(
10872                fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
10873                D,
10874                &mut self.ssid_list,
10875                decoder,
10876                offset + 32,
10877                _depth
10878            )?;
10879            fidl::decode!(u32, D, &mut self.probe_delay, decoder, offset + 48, _depth)?;
10880            fidl::decode!(u32, D, &mut self.min_channel_time, decoder, offset + 52, _depth)?;
10881            fidl::decode!(u32, D, &mut self.max_channel_time, decoder, offset + 56, _depth)?;
10882            Ok(())
10883        }
10884    }
10885
10886    impl fidl::encoding::ValueTypeMarker for ScanResult {
10887        type Borrowed<'a> = &'a Self;
10888        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10889            value
10890        }
10891    }
10892
10893    unsafe impl fidl::encoding::TypeMarker for ScanResult {
10894        type Owned = Self;
10895
10896        #[inline(always)]
10897        fn inline_align(_context: fidl::encoding::Context) -> usize {
10898            8
10899        }
10900
10901        #[inline(always)]
10902        fn inline_size(_context: fidl::encoding::Context) -> usize {
10903            64
10904        }
10905    }
10906
10907    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanResult, D>
10908        for &ScanResult
10909    {
10910        #[inline]
10911        unsafe fn encode(
10912            self,
10913            encoder: &mut fidl::encoding::Encoder<'_, D>,
10914            offset: usize,
10915            _depth: fidl::encoding::Depth,
10916        ) -> fidl::Result<()> {
10917            encoder.debug_check_bounds::<ScanResult>(offset);
10918            // Delegate to tuple encoding.
10919            fidl::encoding::Encode::<ScanResult, D>::encode(
10920                (
10921                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.txn_id),
10922                    <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timestamp_nanos),
10923                    <fidl_fuchsia_wlan_common__common::BssDescription as fidl::encoding::ValueTypeMarker>::borrow(&self.bss),
10924                ),
10925                encoder, offset, _depth
10926            )
10927        }
10928    }
10929    unsafe impl<
10930        D: fidl::encoding::ResourceDialect,
10931        T0: fidl::encoding::Encode<u64, D>,
10932        T1: fidl::encoding::Encode<i64, D>,
10933        T2: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssDescription, D>,
10934    > fidl::encoding::Encode<ScanResult, D> for (T0, T1, T2)
10935    {
10936        #[inline]
10937        unsafe fn encode(
10938            self,
10939            encoder: &mut fidl::encoding::Encoder<'_, D>,
10940            offset: usize,
10941            depth: fidl::encoding::Depth,
10942        ) -> fidl::Result<()> {
10943            encoder.debug_check_bounds::<ScanResult>(offset);
10944            // Zero out padding regions. There's no need to apply masks
10945            // because the unmasked parts will be overwritten by fields.
10946            // Write the fields.
10947            self.0.encode(encoder, offset + 0, depth)?;
10948            self.1.encode(encoder, offset + 8, depth)?;
10949            self.2.encode(encoder, offset + 16, depth)?;
10950            Ok(())
10951        }
10952    }
10953
10954    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanResult {
10955        #[inline(always)]
10956        fn new_empty() -> Self {
10957            Self {
10958                txn_id: fidl::new_empty!(u64, D),
10959                timestamp_nanos: fidl::new_empty!(i64, D),
10960                bss: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssDescription, D),
10961            }
10962        }
10963
10964        #[inline]
10965        unsafe fn decode(
10966            &mut self,
10967            decoder: &mut fidl::encoding::Decoder<'_, D>,
10968            offset: usize,
10969            _depth: fidl::encoding::Depth,
10970        ) -> fidl::Result<()> {
10971            decoder.debug_check_bounds::<Self>(offset);
10972            // Verify that padding bytes are zero.
10973            fidl::decode!(u64, D, &mut self.txn_id, decoder, offset + 0, _depth)?;
10974            fidl::decode!(i64, D, &mut self.timestamp_nanos, decoder, offset + 8, _depth)?;
10975            fidl::decode!(
10976                fidl_fuchsia_wlan_common__common::BssDescription,
10977                D,
10978                &mut self.bss,
10979                decoder,
10980                offset + 16,
10981                _depth
10982            )?;
10983            Ok(())
10984        }
10985    }
10986
10987    impl fidl::encoding::ValueTypeMarker for SetControlledPortRequest {
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 SetControlledPortRequest {
10995        type Owned = Self;
10996
10997        #[inline(always)]
10998        fn inline_align(_context: fidl::encoding::Context) -> usize {
10999            4
11000        }
11001
11002        #[inline(always)]
11003        fn inline_size(_context: fidl::encoding::Context) -> usize {
11004            12
11005        }
11006    }
11007
11008    unsafe impl<D: fidl::encoding::ResourceDialect>
11009        fidl::encoding::Encode<SetControlledPortRequest, D> for &SetControlledPortRequest
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::<SetControlledPortRequest>(offset);
11019            // Delegate to tuple encoding.
11020            fidl::encoding::Encode::<SetControlledPortRequest, D>::encode(
11021                (
11022                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(
11023                        &self.peer_sta_address,
11024                    ),
11025                    <ControlledPortState as fidl::encoding::ValueTypeMarker>::borrow(&self.state),
11026                ),
11027                encoder,
11028                offset,
11029                _depth,
11030            )
11031        }
11032    }
11033    unsafe impl<
11034        D: fidl::encoding::ResourceDialect,
11035        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11036        T1: fidl::encoding::Encode<ControlledPortState, D>,
11037    > fidl::encoding::Encode<SetControlledPortRequest, D> for (T0, T1)
11038    {
11039        #[inline]
11040        unsafe fn encode(
11041            self,
11042            encoder: &mut fidl::encoding::Encoder<'_, D>,
11043            offset: usize,
11044            depth: fidl::encoding::Depth,
11045        ) -> fidl::Result<()> {
11046            encoder.debug_check_bounds::<SetControlledPortRequest>(offset);
11047            // Zero out padding regions. There's no need to apply masks
11048            // because the unmasked parts will be overwritten by fields.
11049            unsafe {
11050                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
11051                (ptr as *mut u32).write_unaligned(0);
11052            }
11053            // Write the fields.
11054            self.0.encode(encoder, offset + 0, depth)?;
11055            self.1.encode(encoder, offset + 8, depth)?;
11056            Ok(())
11057        }
11058    }
11059
11060    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11061        for SetControlledPortRequest
11062    {
11063        #[inline(always)]
11064        fn new_empty() -> Self {
11065            Self {
11066                peer_sta_address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11067                state: fidl::new_empty!(ControlledPortState, D),
11068            }
11069        }
11070
11071        #[inline]
11072        unsafe fn decode(
11073            &mut self,
11074            decoder: &mut fidl::encoding::Decoder<'_, D>,
11075            offset: usize,
11076            _depth: fidl::encoding::Depth,
11077        ) -> fidl::Result<()> {
11078            decoder.debug_check_bounds::<Self>(offset);
11079            // Verify that padding bytes are zero.
11080            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(4) };
11081            let padval = unsafe { (ptr as *const u32).read_unaligned() };
11082            let mask = 0xffff0000u32;
11083            let maskedval = padval & mask;
11084            if maskedval != 0 {
11085                return Err(fidl::Error::NonZeroPadding {
11086                    padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
11087                });
11088            }
11089            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_sta_address, decoder, offset + 0, _depth)?;
11090            fidl::decode!(ControlledPortState, D, &mut self.state, decoder, offset + 8, _depth)?;
11091            Ok(())
11092        }
11093    }
11094
11095    impl fidl::encoding::ValueTypeMarker for SetKeyDescriptor {
11096        type Borrowed<'a> = &'a Self;
11097        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11098            value
11099        }
11100    }
11101
11102    unsafe impl fidl::encoding::TypeMarker for SetKeyDescriptor {
11103        type Owned = Self;
11104
11105        #[inline(always)]
11106        fn inline_align(_context: fidl::encoding::Context) -> usize {
11107            8
11108        }
11109
11110        #[inline(always)]
11111        fn inline_size(_context: fidl::encoding::Context) -> usize {
11112            48
11113        }
11114    }
11115
11116    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeyDescriptor, D>
11117        for &SetKeyDescriptor
11118    {
11119        #[inline]
11120        unsafe fn encode(
11121            self,
11122            encoder: &mut fidl::encoding::Encoder<'_, D>,
11123            offset: usize,
11124            _depth: fidl::encoding::Depth,
11125        ) -> fidl::Result<()> {
11126            encoder.debug_check_bounds::<SetKeyDescriptor>(offset);
11127            // Delegate to tuple encoding.
11128            fidl::encoding::Encode::<SetKeyDescriptor, D>::encode(
11129                (
11130                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.key),
11131                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.key_id),
11132                    <KeyType as fidl::encoding::ValueTypeMarker>::borrow(&self.key_type),
11133                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.address),
11134                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.rsc),
11135                    <fidl::encoding::Array<u8, 3> as fidl::encoding::ValueTypeMarker>::borrow(&self.cipher_suite_oui),
11136                    <fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType as fidl::encoding::ValueTypeMarker>::borrow(&self.cipher_suite_type),
11137                ),
11138                encoder, offset, _depth
11139            )
11140        }
11141    }
11142    unsafe impl<
11143        D: fidl::encoding::ResourceDialect,
11144        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
11145        T1: fidl::encoding::Encode<u16, D>,
11146        T2: fidl::encoding::Encode<KeyType, D>,
11147        T3: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
11148        T4: fidl::encoding::Encode<u64, D>,
11149        T5: fidl::encoding::Encode<fidl::encoding::Array<u8, 3>, D>,
11150        T6: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType, D>,
11151    > fidl::encoding::Encode<SetKeyDescriptor, D> for (T0, T1, T2, T3, T4, T5, T6)
11152    {
11153        #[inline]
11154        unsafe fn encode(
11155            self,
11156            encoder: &mut fidl::encoding::Encoder<'_, D>,
11157            offset: usize,
11158            depth: fidl::encoding::Depth,
11159        ) -> fidl::Result<()> {
11160            encoder.debug_check_bounds::<SetKeyDescriptor>(offset);
11161            // Zero out padding regions. There's no need to apply masks
11162            // because the unmasked parts will be overwritten by fields.
11163            unsafe {
11164                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
11165                (ptr as *mut u64).write_unaligned(0);
11166            }
11167            unsafe {
11168                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
11169                (ptr as *mut u64).write_unaligned(0);
11170            }
11171            unsafe {
11172                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(40);
11173                (ptr as *mut u64).write_unaligned(0);
11174            }
11175            // Write the fields.
11176            self.0.encode(encoder, offset + 0, depth)?;
11177            self.1.encode(encoder, offset + 16, depth)?;
11178            self.2.encode(encoder, offset + 20, depth)?;
11179            self.3.encode(encoder, offset + 24, depth)?;
11180            self.4.encode(encoder, offset + 32, depth)?;
11181            self.5.encode(encoder, offset + 40, depth)?;
11182            self.6.encode(encoder, offset + 44, depth)?;
11183            Ok(())
11184        }
11185    }
11186
11187    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeyDescriptor {
11188        #[inline(always)]
11189        fn new_empty() -> Self {
11190            Self {
11191                key: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
11192                key_id: fidl::new_empty!(u16, D),
11193                key_type: fidl::new_empty!(KeyType, D),
11194                address: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
11195                rsc: fidl::new_empty!(u64, D),
11196                cipher_suite_oui: fidl::new_empty!(fidl::encoding::Array<u8, 3>, D),
11197                cipher_suite_type: fidl::new_empty!(
11198                    fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
11199                    D
11200                ),
11201            }
11202        }
11203
11204        #[inline]
11205        unsafe fn decode(
11206            &mut self,
11207            decoder: &mut fidl::encoding::Decoder<'_, D>,
11208            offset: usize,
11209            _depth: fidl::encoding::Depth,
11210        ) -> fidl::Result<()> {
11211            decoder.debug_check_bounds::<Self>(offset);
11212            // Verify that padding bytes are zero.
11213            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
11214            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11215            let mask = 0xffff0000u64;
11216            let maskedval = padval & mask;
11217            if maskedval != 0 {
11218                return Err(fidl::Error::NonZeroPadding {
11219                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
11220                });
11221            }
11222            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
11223            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11224            let mask = 0xffff000000000000u64;
11225            let maskedval = padval & mask;
11226            if maskedval != 0 {
11227                return Err(fidl::Error::NonZeroPadding {
11228                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
11229                });
11230            }
11231            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(40) };
11232            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11233            let mask = 0xff000000u64;
11234            let maskedval = padval & mask;
11235            if maskedval != 0 {
11236                return Err(fidl::Error::NonZeroPadding {
11237                    padding_start: offset + 40 + ((mask as u64).trailing_zeros() / 8) as usize,
11238                });
11239            }
11240            fidl::decode!(
11241                fidl::encoding::UnboundedVector<u8>,
11242                D,
11243                &mut self.key,
11244                decoder,
11245                offset + 0,
11246                _depth
11247            )?;
11248            fidl::decode!(u16, D, &mut self.key_id, decoder, offset + 16, _depth)?;
11249            fidl::decode!(KeyType, D, &mut self.key_type, decoder, offset + 20, _depth)?;
11250            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.address, decoder, offset + 24, _depth)?;
11251            fidl::decode!(u64, D, &mut self.rsc, decoder, offset + 32, _depth)?;
11252            fidl::decode!(fidl::encoding::Array<u8, 3>, D, &mut self.cipher_suite_oui, decoder, offset + 40, _depth)?;
11253            fidl::decode!(
11254                fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
11255                D,
11256                &mut self.cipher_suite_type,
11257                decoder,
11258                offset + 44,
11259                _depth
11260            )?;
11261            Ok(())
11262        }
11263    }
11264
11265    impl fidl::encoding::ValueTypeMarker for SetKeyResult {
11266        type Borrowed<'a> = &'a Self;
11267        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11268            value
11269        }
11270    }
11271
11272    unsafe impl fidl::encoding::TypeMarker for SetKeyResult {
11273        type Owned = Self;
11274
11275        #[inline(always)]
11276        fn inline_align(_context: fidl::encoding::Context) -> usize {
11277            4
11278        }
11279
11280        #[inline(always)]
11281        fn inline_size(_context: fidl::encoding::Context) -> usize {
11282            8
11283        }
11284    }
11285
11286    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeyResult, D>
11287        for &SetKeyResult
11288    {
11289        #[inline]
11290        unsafe fn encode(
11291            self,
11292            encoder: &mut fidl::encoding::Encoder<'_, D>,
11293            offset: usize,
11294            _depth: fidl::encoding::Depth,
11295        ) -> fidl::Result<()> {
11296            encoder.debug_check_bounds::<SetKeyResult>(offset);
11297            unsafe {
11298                // Copy the object into the buffer.
11299                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
11300                (buf_ptr as *mut SetKeyResult)
11301                    .write_unaligned((self as *const SetKeyResult).read());
11302                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
11303                // done second because the memcpy will write garbage to these bytes.
11304                let padding_ptr = buf_ptr.offset(0) as *mut u32;
11305                let padding_mask = 0xffff0000u32;
11306                padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
11307            }
11308            Ok(())
11309        }
11310    }
11311    unsafe impl<
11312        D: fidl::encoding::ResourceDialect,
11313        T0: fidl::encoding::Encode<u16, D>,
11314        T1: fidl::encoding::Encode<i32, D>,
11315    > fidl::encoding::Encode<SetKeyResult, D> for (T0, T1)
11316    {
11317        #[inline]
11318        unsafe fn encode(
11319            self,
11320            encoder: &mut fidl::encoding::Encoder<'_, D>,
11321            offset: usize,
11322            depth: fidl::encoding::Depth,
11323        ) -> fidl::Result<()> {
11324            encoder.debug_check_bounds::<SetKeyResult>(offset);
11325            // Zero out padding regions. There's no need to apply masks
11326            // because the unmasked parts will be overwritten by fields.
11327            unsafe {
11328                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
11329                (ptr as *mut u32).write_unaligned(0);
11330            }
11331            // Write the fields.
11332            self.0.encode(encoder, offset + 0, depth)?;
11333            self.1.encode(encoder, offset + 4, depth)?;
11334            Ok(())
11335        }
11336    }
11337
11338    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeyResult {
11339        #[inline(always)]
11340        fn new_empty() -> Self {
11341            Self { key_id: fidl::new_empty!(u16, D), status: fidl::new_empty!(i32, D) }
11342        }
11343
11344        #[inline]
11345        unsafe fn decode(
11346            &mut self,
11347            decoder: &mut fidl::encoding::Decoder<'_, D>,
11348            offset: usize,
11349            _depth: fidl::encoding::Depth,
11350        ) -> fidl::Result<()> {
11351            decoder.debug_check_bounds::<Self>(offset);
11352            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
11353            // Verify that padding bytes are zero.
11354            let ptr = unsafe { buf_ptr.offset(0) };
11355            let padval = unsafe { (ptr as *const u32).read_unaligned() };
11356            let mask = 0xffff0000u32;
11357            let maskedval = padval & mask;
11358            if maskedval != 0 {
11359                return Err(fidl::Error::NonZeroPadding {
11360                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
11361                });
11362            }
11363            // Copy from the buffer into the object.
11364            unsafe {
11365                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
11366            }
11367            Ok(())
11368        }
11369    }
11370
11371    impl fidl::encoding::ValueTypeMarker for SetKeysConfirm {
11372        type Borrowed<'a> = &'a Self;
11373        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11374            value
11375        }
11376    }
11377
11378    unsafe impl fidl::encoding::TypeMarker for SetKeysConfirm {
11379        type Owned = Self;
11380
11381        #[inline(always)]
11382        fn inline_align(_context: fidl::encoding::Context) -> usize {
11383            8
11384        }
11385
11386        #[inline(always)]
11387        fn inline_size(_context: fidl::encoding::Context) -> usize {
11388            16
11389        }
11390    }
11391
11392    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeysConfirm, D>
11393        for &SetKeysConfirm
11394    {
11395        #[inline]
11396        unsafe fn encode(
11397            self,
11398            encoder: &mut fidl::encoding::Encoder<'_, D>,
11399            offset: usize,
11400            _depth: fidl::encoding::Depth,
11401        ) -> fidl::Result<()> {
11402            encoder.debug_check_bounds::<SetKeysConfirm>(offset);
11403            // Delegate to tuple encoding.
11404            fidl::encoding::Encode::<SetKeysConfirm, D>::encode(
11405                (
11406                    <fidl::encoding::UnboundedVector<SetKeyResult> as fidl::encoding::ValueTypeMarker>::borrow(&self.results),
11407                ),
11408                encoder, offset, _depth
11409            )
11410        }
11411    }
11412    unsafe impl<
11413        D: fidl::encoding::ResourceDialect,
11414        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<SetKeyResult>, D>,
11415    > fidl::encoding::Encode<SetKeysConfirm, D> for (T0,)
11416    {
11417        #[inline]
11418        unsafe fn encode(
11419            self,
11420            encoder: &mut fidl::encoding::Encoder<'_, D>,
11421            offset: usize,
11422            depth: fidl::encoding::Depth,
11423        ) -> fidl::Result<()> {
11424            encoder.debug_check_bounds::<SetKeysConfirm>(offset);
11425            // Zero out padding regions. There's no need to apply masks
11426            // because the unmasked parts will be overwritten by fields.
11427            // Write the fields.
11428            self.0.encode(encoder, offset + 0, depth)?;
11429            Ok(())
11430        }
11431    }
11432
11433    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeysConfirm {
11434        #[inline(always)]
11435        fn new_empty() -> Self {
11436            Self { results: fidl::new_empty!(fidl::encoding::UnboundedVector<SetKeyResult>, D) }
11437        }
11438
11439        #[inline]
11440        unsafe fn decode(
11441            &mut self,
11442            decoder: &mut fidl::encoding::Decoder<'_, D>,
11443            offset: usize,
11444            _depth: fidl::encoding::Depth,
11445        ) -> fidl::Result<()> {
11446            decoder.debug_check_bounds::<Self>(offset);
11447            // Verify that padding bytes are zero.
11448            fidl::decode!(
11449                fidl::encoding::UnboundedVector<SetKeyResult>,
11450                D,
11451                &mut self.results,
11452                decoder,
11453                offset + 0,
11454                _depth
11455            )?;
11456            Ok(())
11457        }
11458    }
11459
11460    impl fidl::encoding::ValueTypeMarker for SetKeysRequest {
11461        type Borrowed<'a> = &'a Self;
11462        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11463            value
11464        }
11465    }
11466
11467    unsafe impl fidl::encoding::TypeMarker for SetKeysRequest {
11468        type Owned = Self;
11469
11470        #[inline(always)]
11471        fn inline_align(_context: fidl::encoding::Context) -> usize {
11472            8
11473        }
11474
11475        #[inline(always)]
11476        fn inline_size(_context: fidl::encoding::Context) -> usize {
11477            16
11478        }
11479    }
11480
11481    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SetKeysRequest, D>
11482        for &SetKeysRequest
11483    {
11484        #[inline]
11485        unsafe fn encode(
11486            self,
11487            encoder: &mut fidl::encoding::Encoder<'_, D>,
11488            offset: usize,
11489            _depth: fidl::encoding::Depth,
11490        ) -> fidl::Result<()> {
11491            encoder.debug_check_bounds::<SetKeysRequest>(offset);
11492            // Delegate to tuple encoding.
11493            fidl::encoding::Encode::<SetKeysRequest, D>::encode(
11494                (
11495                    <fidl::encoding::UnboundedVector<SetKeyDescriptor> as fidl::encoding::ValueTypeMarker>::borrow(&self.keylist),
11496                ),
11497                encoder, offset, _depth
11498            )
11499        }
11500    }
11501    unsafe impl<
11502        D: fidl::encoding::ResourceDialect,
11503        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<SetKeyDescriptor>, D>,
11504    > fidl::encoding::Encode<SetKeysRequest, D> for (T0,)
11505    {
11506        #[inline]
11507        unsafe fn encode(
11508            self,
11509            encoder: &mut fidl::encoding::Encoder<'_, D>,
11510            offset: usize,
11511            depth: fidl::encoding::Depth,
11512        ) -> fidl::Result<()> {
11513            encoder.debug_check_bounds::<SetKeysRequest>(offset);
11514            // Zero out padding regions. There's no need to apply masks
11515            // because the unmasked parts will be overwritten by fields.
11516            // Write the fields.
11517            self.0.encode(encoder, offset + 0, depth)?;
11518            Ok(())
11519        }
11520    }
11521
11522    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SetKeysRequest {
11523        #[inline(always)]
11524        fn new_empty() -> Self {
11525            Self { keylist: fidl::new_empty!(fidl::encoding::UnboundedVector<SetKeyDescriptor>, D) }
11526        }
11527
11528        #[inline]
11529        unsafe fn decode(
11530            &mut self,
11531            decoder: &mut fidl::encoding::Decoder<'_, D>,
11532            offset: usize,
11533            _depth: fidl::encoding::Depth,
11534        ) -> fidl::Result<()> {
11535            decoder.debug_check_bounds::<Self>(offset);
11536            // Verify that padding bytes are zero.
11537            fidl::decode!(
11538                fidl::encoding::UnboundedVector<SetKeyDescriptor>,
11539                D,
11540                &mut self.keylist,
11541                decoder,
11542                offset + 0,
11543                _depth
11544            )?;
11545            Ok(())
11546        }
11547    }
11548
11549    impl fidl::encoding::ValueTypeMarker for StartCaptureFramesRequest {
11550        type Borrowed<'a> = &'a Self;
11551        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11552            value
11553        }
11554    }
11555
11556    unsafe impl fidl::encoding::TypeMarker for StartCaptureFramesRequest {
11557        type Owned = Self;
11558
11559        #[inline(always)]
11560        fn inline_align(_context: fidl::encoding::Context) -> usize {
11561            4
11562        }
11563
11564        #[inline(always)]
11565        fn inline_size(_context: fidl::encoding::Context) -> usize {
11566            4
11567        }
11568    }
11569
11570    unsafe impl<D: fidl::encoding::ResourceDialect>
11571        fidl::encoding::Encode<StartCaptureFramesRequest, D> for &StartCaptureFramesRequest
11572    {
11573        #[inline]
11574        unsafe fn encode(
11575            self,
11576            encoder: &mut fidl::encoding::Encoder<'_, D>,
11577            offset: usize,
11578            _depth: fidl::encoding::Depth,
11579        ) -> fidl::Result<()> {
11580            encoder.debug_check_bounds::<StartCaptureFramesRequest>(offset);
11581            // Delegate to tuple encoding.
11582            fidl::encoding::Encode::<StartCaptureFramesRequest, D>::encode(
11583                (<MgmtFrameCaptureFlags as fidl::encoding::ValueTypeMarker>::borrow(
11584                    &self.mgmt_frame_flags,
11585                ),),
11586                encoder,
11587                offset,
11588                _depth,
11589            )
11590        }
11591    }
11592    unsafe impl<
11593        D: fidl::encoding::ResourceDialect,
11594        T0: fidl::encoding::Encode<MgmtFrameCaptureFlags, D>,
11595    > fidl::encoding::Encode<StartCaptureFramesRequest, D> for (T0,)
11596    {
11597        #[inline]
11598        unsafe fn encode(
11599            self,
11600            encoder: &mut fidl::encoding::Encoder<'_, D>,
11601            offset: usize,
11602            depth: fidl::encoding::Depth,
11603        ) -> fidl::Result<()> {
11604            encoder.debug_check_bounds::<StartCaptureFramesRequest>(offset);
11605            // Zero out padding regions. There's no need to apply masks
11606            // because the unmasked parts will be overwritten by fields.
11607            // Write the fields.
11608            self.0.encode(encoder, offset + 0, depth)?;
11609            Ok(())
11610        }
11611    }
11612
11613    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11614        for StartCaptureFramesRequest
11615    {
11616        #[inline(always)]
11617        fn new_empty() -> Self {
11618            Self { mgmt_frame_flags: fidl::new_empty!(MgmtFrameCaptureFlags, D) }
11619        }
11620
11621        #[inline]
11622        unsafe fn decode(
11623            &mut self,
11624            decoder: &mut fidl::encoding::Decoder<'_, D>,
11625            offset: usize,
11626            _depth: fidl::encoding::Depth,
11627        ) -> fidl::Result<()> {
11628            decoder.debug_check_bounds::<Self>(offset);
11629            // Verify that padding bytes are zero.
11630            fidl::decode!(
11631                MgmtFrameCaptureFlags,
11632                D,
11633                &mut self.mgmt_frame_flags,
11634                decoder,
11635                offset + 0,
11636                _depth
11637            )?;
11638            Ok(())
11639        }
11640    }
11641
11642    impl fidl::encoding::ValueTypeMarker for StartCaptureFramesResponse {
11643        type Borrowed<'a> = &'a Self;
11644        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11645            value
11646        }
11647    }
11648
11649    unsafe impl fidl::encoding::TypeMarker for StartCaptureFramesResponse {
11650        type Owned = Self;
11651
11652        #[inline(always)]
11653        fn inline_align(_context: fidl::encoding::Context) -> usize {
11654            4
11655        }
11656
11657        #[inline(always)]
11658        fn inline_size(_context: fidl::encoding::Context) -> usize {
11659            8
11660        }
11661    }
11662
11663    unsafe impl<D: fidl::encoding::ResourceDialect>
11664        fidl::encoding::Encode<StartCaptureFramesResponse, D> for &StartCaptureFramesResponse
11665    {
11666        #[inline]
11667        unsafe fn encode(
11668            self,
11669            encoder: &mut fidl::encoding::Encoder<'_, D>,
11670            offset: usize,
11671            _depth: fidl::encoding::Depth,
11672        ) -> fidl::Result<()> {
11673            encoder.debug_check_bounds::<StartCaptureFramesResponse>(offset);
11674            // Delegate to tuple encoding.
11675            fidl::encoding::Encode::<StartCaptureFramesResponse, D>::encode(
11676                (
11677                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
11678                    <MgmtFrameCaptureFlags as fidl::encoding::ValueTypeMarker>::borrow(
11679                        &self.supported_mgmt_frames,
11680                    ),
11681                ),
11682                encoder,
11683                offset,
11684                _depth,
11685            )
11686        }
11687    }
11688    unsafe impl<
11689        D: fidl::encoding::ResourceDialect,
11690        T0: fidl::encoding::Encode<i32, D>,
11691        T1: fidl::encoding::Encode<MgmtFrameCaptureFlags, D>,
11692    > fidl::encoding::Encode<StartCaptureFramesResponse, D> for (T0, T1)
11693    {
11694        #[inline]
11695        unsafe fn encode(
11696            self,
11697            encoder: &mut fidl::encoding::Encoder<'_, D>,
11698            offset: usize,
11699            depth: fidl::encoding::Depth,
11700        ) -> fidl::Result<()> {
11701            encoder.debug_check_bounds::<StartCaptureFramesResponse>(offset);
11702            // Zero out padding regions. There's no need to apply masks
11703            // because the unmasked parts will be overwritten by fields.
11704            // Write the fields.
11705            self.0.encode(encoder, offset + 0, depth)?;
11706            self.1.encode(encoder, offset + 4, depth)?;
11707            Ok(())
11708        }
11709    }
11710
11711    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11712        for StartCaptureFramesResponse
11713    {
11714        #[inline(always)]
11715        fn new_empty() -> Self {
11716            Self {
11717                status: fidl::new_empty!(i32, D),
11718                supported_mgmt_frames: fidl::new_empty!(MgmtFrameCaptureFlags, D),
11719            }
11720        }
11721
11722        #[inline]
11723        unsafe fn decode(
11724            &mut self,
11725            decoder: &mut fidl::encoding::Decoder<'_, D>,
11726            offset: usize,
11727            _depth: fidl::encoding::Depth,
11728        ) -> fidl::Result<()> {
11729            decoder.debug_check_bounds::<Self>(offset);
11730            // Verify that padding bytes are zero.
11731            fidl::decode!(i32, D, &mut self.status, decoder, offset + 0, _depth)?;
11732            fidl::decode!(
11733                MgmtFrameCaptureFlags,
11734                D,
11735                &mut self.supported_mgmt_frames,
11736                decoder,
11737                offset + 4,
11738                _depth
11739            )?;
11740            Ok(())
11741        }
11742    }
11743
11744    impl fidl::encoding::ValueTypeMarker for StartConfirm {
11745        type Borrowed<'a> = &'a Self;
11746        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11747            value
11748        }
11749    }
11750
11751    unsafe impl fidl::encoding::TypeMarker for StartConfirm {
11752        type Owned = Self;
11753
11754        #[inline(always)]
11755        fn inline_align(_context: fidl::encoding::Context) -> usize {
11756            4
11757        }
11758
11759        #[inline(always)]
11760        fn inline_size(_context: fidl::encoding::Context) -> usize {
11761            4
11762        }
11763    }
11764
11765    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartConfirm, D>
11766        for &StartConfirm
11767    {
11768        #[inline]
11769        unsafe fn encode(
11770            self,
11771            encoder: &mut fidl::encoding::Encoder<'_, D>,
11772            offset: usize,
11773            _depth: fidl::encoding::Depth,
11774        ) -> fidl::Result<()> {
11775            encoder.debug_check_bounds::<StartConfirm>(offset);
11776            // Delegate to tuple encoding.
11777            fidl::encoding::Encode::<StartConfirm, D>::encode(
11778                (<StartResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),),
11779                encoder,
11780                offset,
11781                _depth,
11782            )
11783        }
11784    }
11785    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StartResultCode, D>>
11786        fidl::encoding::Encode<StartConfirm, D> for (T0,)
11787    {
11788        #[inline]
11789        unsafe fn encode(
11790            self,
11791            encoder: &mut fidl::encoding::Encoder<'_, D>,
11792            offset: usize,
11793            depth: fidl::encoding::Depth,
11794        ) -> fidl::Result<()> {
11795            encoder.debug_check_bounds::<StartConfirm>(offset);
11796            // Zero out padding regions. There's no need to apply masks
11797            // because the unmasked parts will be overwritten by fields.
11798            // Write the fields.
11799            self.0.encode(encoder, offset + 0, depth)?;
11800            Ok(())
11801        }
11802    }
11803
11804    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartConfirm {
11805        #[inline(always)]
11806        fn new_empty() -> Self {
11807            Self { result_code: fidl::new_empty!(StartResultCode, D) }
11808        }
11809
11810        #[inline]
11811        unsafe fn decode(
11812            &mut self,
11813            decoder: &mut fidl::encoding::Decoder<'_, D>,
11814            offset: usize,
11815            _depth: fidl::encoding::Depth,
11816        ) -> fidl::Result<()> {
11817            decoder.debug_check_bounds::<Self>(offset);
11818            // Verify that padding bytes are zero.
11819            fidl::decode!(StartResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
11820            Ok(())
11821        }
11822    }
11823
11824    impl fidl::encoding::ValueTypeMarker for StartRequest {
11825        type Borrowed<'a> = &'a Self;
11826        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11827            value
11828        }
11829    }
11830
11831    unsafe impl fidl::encoding::TypeMarker for StartRequest {
11832        type Owned = Self;
11833
11834        #[inline(always)]
11835        fn inline_align(_context: fidl::encoding::Context) -> usize {
11836            8
11837        }
11838
11839        #[inline(always)]
11840        fn inline_size(_context: fidl::encoding::Context) -> usize {
11841            96
11842        }
11843    }
11844
11845    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StartRequest, D>
11846        for &StartRequest
11847    {
11848        #[inline]
11849        unsafe fn encode(
11850            self,
11851            encoder: &mut fidl::encoding::Encoder<'_, D>,
11852            offset: usize,
11853            _depth: fidl::encoding::Depth,
11854        ) -> fidl::Result<()> {
11855            encoder.debug_check_bounds::<StartRequest>(offset);
11856            // Delegate to tuple encoding.
11857            fidl::encoding::Encode::<StartRequest, D>::encode(
11858                (
11859                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.ssid),
11860                    <fidl_fuchsia_wlan_common__common::BssType as fidl::encoding::ValueTypeMarker>::borrow(&self.bss_type),
11861                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.beacon_period),
11862                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.dtim_period),
11863                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.channel),
11864                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
11865                    <fidl::encoding::Vector<u8, 14> as fidl::encoding::ValueTypeMarker>::borrow(&self.rates),
11866                    <Country as fidl::encoding::ValueTypeMarker>::borrow(&self.country),
11867                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.mesh_id),
11868                    <fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>> as fidl::encoding::ValueTypeMarker>::borrow(&self.rsne),
11869                    <fidl_fuchsia_wlan_common__common::WlanPhyType as fidl::encoding::ValueTypeMarker>::borrow(&self.phy),
11870                    <fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth as fidl::encoding::ValueTypeMarker>::borrow(&self.channel_bandwidth),
11871                ),
11872                encoder, offset, _depth
11873            )
11874        }
11875    }
11876    unsafe impl<
11877        D: fidl::encoding::ResourceDialect,
11878        T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
11879        T1: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::BssType, D>,
11880        T2: fidl::encoding::Encode<u16, D>,
11881        T3: fidl::encoding::Encode<u8, D>,
11882        T4: fidl::encoding::Encode<u8, D>,
11883        T5: fidl::encoding::Encode<u16, D>,
11884        T6: fidl::encoding::Encode<fidl::encoding::Vector<u8, 14>, D>,
11885        T7: fidl::encoding::Encode<Country, D>,
11886        T8: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
11887        T9: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>, D>,
11888        T10: fidl::encoding::Encode<fidl_fuchsia_wlan_common__common::WlanPhyType, D>,
11889        T11: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth, D>,
11890    > fidl::encoding::Encode<StartRequest, D>
11891        for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
11892    {
11893        #[inline]
11894        unsafe fn encode(
11895            self,
11896            encoder: &mut fidl::encoding::Encoder<'_, D>,
11897            offset: usize,
11898            depth: fidl::encoding::Depth,
11899        ) -> fidl::Result<()> {
11900            encoder.debug_check_bounds::<StartRequest>(offset);
11901            // Zero out padding regions. There's no need to apply masks
11902            // because the unmasked parts will be overwritten by fields.
11903            unsafe {
11904                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
11905                (ptr as *mut u64).write_unaligned(0);
11906            }
11907            unsafe {
11908                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(48);
11909                (ptr as *mut u64).write_unaligned(0);
11910            }
11911            // Write the fields.
11912            self.0.encode(encoder, offset + 0, depth)?;
11913            self.1.encode(encoder, offset + 16, depth)?;
11914            self.2.encode(encoder, offset + 20, depth)?;
11915            self.3.encode(encoder, offset + 22, depth)?;
11916            self.4.encode(encoder, offset + 23, depth)?;
11917            self.5.encode(encoder, offset + 24, depth)?;
11918            self.6.encode(encoder, offset + 32, depth)?;
11919            self.7.encode(encoder, offset + 48, depth)?;
11920            self.8.encode(encoder, offset + 56, depth)?;
11921            self.9.encode(encoder, offset + 72, depth)?;
11922            self.10.encode(encoder, offset + 88, depth)?;
11923            self.11.encode(encoder, offset + 92, depth)?;
11924            Ok(())
11925        }
11926    }
11927
11928    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StartRequest {
11929        #[inline(always)]
11930        fn new_empty() -> Self {
11931            Self {
11932                ssid: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
11933                bss_type: fidl::new_empty!(fidl_fuchsia_wlan_common__common::BssType, D),
11934                beacon_period: fidl::new_empty!(u16, D),
11935                dtim_period: fidl::new_empty!(u8, D),
11936                channel: fidl::new_empty!(u8, D),
11937                capability_info: fidl::new_empty!(u16, D),
11938                rates: fidl::new_empty!(fidl::encoding::Vector<u8, 14>, D),
11939                country: fidl::new_empty!(Country, D),
11940                mesh_id: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
11941                rsne: fidl::new_empty!(
11942                    fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
11943                    D
11944                ),
11945                phy: fidl::new_empty!(fidl_fuchsia_wlan_common__common::WlanPhyType, D),
11946                channel_bandwidth: fidl::new_empty!(
11947                    fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth,
11948                    D
11949                ),
11950            }
11951        }
11952
11953        #[inline]
11954        unsafe fn decode(
11955            &mut self,
11956            decoder: &mut fidl::encoding::Decoder<'_, D>,
11957            offset: usize,
11958            _depth: fidl::encoding::Depth,
11959        ) -> fidl::Result<()> {
11960            decoder.debug_check_bounds::<Self>(offset);
11961            // Verify that padding bytes are zero.
11962            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
11963            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11964            let mask = 0xffffffffffff0000u64;
11965            let maskedval = padval & mask;
11966            if maskedval != 0 {
11967                return Err(fidl::Error::NonZeroPadding {
11968                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
11969                });
11970            }
11971            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(48) };
11972            let padval = unsafe { (ptr as *const u64).read_unaligned() };
11973            let mask = 0xffffffffff000000u64;
11974            let maskedval = padval & mask;
11975            if maskedval != 0 {
11976                return Err(fidl::Error::NonZeroPadding {
11977                    padding_start: offset + 48 + ((mask as u64).trailing_zeros() / 8) as usize,
11978                });
11979            }
11980            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.ssid, decoder, offset + 0, _depth)?;
11981            fidl::decode!(
11982                fidl_fuchsia_wlan_common__common::BssType,
11983                D,
11984                &mut self.bss_type,
11985                decoder,
11986                offset + 16,
11987                _depth
11988            )?;
11989            fidl::decode!(u16, D, &mut self.beacon_period, decoder, offset + 20, _depth)?;
11990            fidl::decode!(u8, D, &mut self.dtim_period, decoder, offset + 22, _depth)?;
11991            fidl::decode!(u8, D, &mut self.channel, decoder, offset + 23, _depth)?;
11992            fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 24, _depth)?;
11993            fidl::decode!(fidl::encoding::Vector<u8, 14>, D, &mut self.rates, decoder, offset + 32, _depth)?;
11994            fidl::decode!(Country, D, &mut self.country, decoder, offset + 48, _depth)?;
11995            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.mesh_id, decoder, offset + 56, _depth)?;
11996            fidl::decode!(
11997                fidl::encoding::Optional<fidl::encoding::Vector<u8, 257>>,
11998                D,
11999                &mut self.rsne,
12000                decoder,
12001                offset + 72,
12002                _depth
12003            )?;
12004            fidl::decode!(
12005                fidl_fuchsia_wlan_common__common::WlanPhyType,
12006                D,
12007                &mut self.phy,
12008                decoder,
12009                offset + 88,
12010                _depth
12011            )?;
12012            fidl::decode!(
12013                fidl_fuchsia_wlan_ieee80211__common::ChannelBandwidth,
12014                D,
12015                &mut self.channel_bandwidth,
12016                decoder,
12017                offset + 92,
12018                _depth
12019            )?;
12020            Ok(())
12021        }
12022    }
12023
12024    impl fidl::encoding::ValueTypeMarker for StopConfirm {
12025        type Borrowed<'a> = &'a Self;
12026        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12027            value
12028        }
12029    }
12030
12031    unsafe impl fidl::encoding::TypeMarker for StopConfirm {
12032        type Owned = Self;
12033
12034        #[inline(always)]
12035        fn inline_align(_context: fidl::encoding::Context) -> usize {
12036            4
12037        }
12038
12039        #[inline(always)]
12040        fn inline_size(_context: fidl::encoding::Context) -> usize {
12041            4
12042        }
12043    }
12044
12045    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopConfirm, D>
12046        for &StopConfirm
12047    {
12048        #[inline]
12049        unsafe fn encode(
12050            self,
12051            encoder: &mut fidl::encoding::Encoder<'_, D>,
12052            offset: usize,
12053            _depth: fidl::encoding::Depth,
12054        ) -> fidl::Result<()> {
12055            encoder.debug_check_bounds::<StopConfirm>(offset);
12056            // Delegate to tuple encoding.
12057            fidl::encoding::Encode::<StopConfirm, D>::encode(
12058                (<StopResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),),
12059                encoder,
12060                offset,
12061                _depth,
12062            )
12063        }
12064    }
12065    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<StopResultCode, D>>
12066        fidl::encoding::Encode<StopConfirm, D> for (T0,)
12067    {
12068        #[inline]
12069        unsafe fn encode(
12070            self,
12071            encoder: &mut fidl::encoding::Encoder<'_, D>,
12072            offset: usize,
12073            depth: fidl::encoding::Depth,
12074        ) -> fidl::Result<()> {
12075            encoder.debug_check_bounds::<StopConfirm>(offset);
12076            // Zero out padding regions. There's no need to apply masks
12077            // because the unmasked parts will be overwritten by fields.
12078            // Write the fields.
12079            self.0.encode(encoder, offset + 0, depth)?;
12080            Ok(())
12081        }
12082    }
12083
12084    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopConfirm {
12085        #[inline(always)]
12086        fn new_empty() -> Self {
12087            Self { result_code: fidl::new_empty!(StopResultCode, D) }
12088        }
12089
12090        #[inline]
12091        unsafe fn decode(
12092            &mut self,
12093            decoder: &mut fidl::encoding::Decoder<'_, D>,
12094            offset: usize,
12095            _depth: fidl::encoding::Depth,
12096        ) -> fidl::Result<()> {
12097            decoder.debug_check_bounds::<Self>(offset);
12098            // Verify that padding bytes are zero.
12099            fidl::decode!(StopResultCode, D, &mut self.result_code, decoder, offset + 0, _depth)?;
12100            Ok(())
12101        }
12102    }
12103
12104    impl fidl::encoding::ValueTypeMarker for StopRequest {
12105        type Borrowed<'a> = &'a Self;
12106        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12107            value
12108        }
12109    }
12110
12111    unsafe impl fidl::encoding::TypeMarker for StopRequest {
12112        type Owned = Self;
12113
12114        #[inline(always)]
12115        fn inline_align(_context: fidl::encoding::Context) -> usize {
12116            8
12117        }
12118
12119        #[inline(always)]
12120        fn inline_size(_context: fidl::encoding::Context) -> usize {
12121            16
12122        }
12123    }
12124
12125    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StopRequest, D>
12126        for &StopRequest
12127    {
12128        #[inline]
12129        unsafe fn encode(
12130            self,
12131            encoder: &mut fidl::encoding::Encoder<'_, D>,
12132            offset: usize,
12133            _depth: fidl::encoding::Depth,
12134        ) -> fidl::Result<()> {
12135            encoder.debug_check_bounds::<StopRequest>(offset);
12136            // Delegate to tuple encoding.
12137            fidl::encoding::Encode::<StopRequest, D>::encode(
12138                (<fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(
12139                    &self.ssid,
12140                ),),
12141                encoder,
12142                offset,
12143                _depth,
12144            )
12145        }
12146    }
12147    unsafe impl<
12148        D: fidl::encoding::ResourceDialect,
12149        T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
12150    > fidl::encoding::Encode<StopRequest, D> for (T0,)
12151    {
12152        #[inline]
12153        unsafe fn encode(
12154            self,
12155            encoder: &mut fidl::encoding::Encoder<'_, D>,
12156            offset: usize,
12157            depth: fidl::encoding::Depth,
12158        ) -> fidl::Result<()> {
12159            encoder.debug_check_bounds::<StopRequest>(offset);
12160            // Zero out padding regions. There's no need to apply masks
12161            // because the unmasked parts will be overwritten by fields.
12162            // Write the fields.
12163            self.0.encode(encoder, offset + 0, depth)?;
12164            Ok(())
12165        }
12166    }
12167
12168    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StopRequest {
12169        #[inline(always)]
12170        fn new_empty() -> Self {
12171            Self { ssid: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D) }
12172        }
12173
12174        #[inline]
12175        unsafe fn decode(
12176            &mut self,
12177            decoder: &mut fidl::encoding::Decoder<'_, D>,
12178            offset: usize,
12179            _depth: fidl::encoding::Depth,
12180        ) -> fidl::Result<()> {
12181            decoder.debug_check_bounds::<Self>(offset);
12182            // Verify that padding bytes are zero.
12183            fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.ssid, decoder, offset + 0, _depth)?;
12184            Ok(())
12185        }
12186    }
12187
12188    impl fidl::encoding::ValueTypeMarker for WmmParameter {
12189        type Borrowed<'a> = &'a Self;
12190        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12191            value
12192        }
12193    }
12194
12195    unsafe impl fidl::encoding::TypeMarker for WmmParameter {
12196        type Owned = Self;
12197
12198        #[inline(always)]
12199        fn inline_align(_context: fidl::encoding::Context) -> usize {
12200            1
12201        }
12202
12203        #[inline(always)]
12204        fn inline_size(_context: fidl::encoding::Context) -> usize {
12205            18
12206        }
12207        #[inline(always)]
12208        fn encode_is_copy() -> bool {
12209            true
12210        }
12211
12212        #[inline(always)]
12213        fn decode_is_copy() -> bool {
12214            true
12215        }
12216    }
12217
12218    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WmmParameter, D>
12219        for &WmmParameter
12220    {
12221        #[inline]
12222        unsafe fn encode(
12223            self,
12224            encoder: &mut fidl::encoding::Encoder<'_, D>,
12225            offset: usize,
12226            _depth: fidl::encoding::Depth,
12227        ) -> fidl::Result<()> {
12228            encoder.debug_check_bounds::<WmmParameter>(offset);
12229            unsafe {
12230                // Copy the object into the buffer.
12231                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
12232                (buf_ptr as *mut WmmParameter)
12233                    .write_unaligned((self as *const WmmParameter).read());
12234                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
12235                // done second because the memcpy will write garbage to these bytes.
12236            }
12237            Ok(())
12238        }
12239    }
12240    unsafe impl<
12241        D: fidl::encoding::ResourceDialect,
12242        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 18>, D>,
12243    > fidl::encoding::Encode<WmmParameter, D> for (T0,)
12244    {
12245        #[inline]
12246        unsafe fn encode(
12247            self,
12248            encoder: &mut fidl::encoding::Encoder<'_, D>,
12249            offset: usize,
12250            depth: fidl::encoding::Depth,
12251        ) -> fidl::Result<()> {
12252            encoder.debug_check_bounds::<WmmParameter>(offset);
12253            // Zero out padding regions. There's no need to apply masks
12254            // because the unmasked parts will be overwritten by fields.
12255            // Write the fields.
12256            self.0.encode(encoder, offset + 0, depth)?;
12257            Ok(())
12258        }
12259    }
12260
12261    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WmmParameter {
12262        #[inline(always)]
12263        fn new_empty() -> Self {
12264            Self { bytes: fidl::new_empty!(fidl::encoding::Array<u8, 18>, D) }
12265        }
12266
12267        #[inline]
12268        unsafe fn decode(
12269            &mut self,
12270            decoder: &mut fidl::encoding::Decoder<'_, D>,
12271            offset: usize,
12272            _depth: fidl::encoding::Depth,
12273        ) -> fidl::Result<()> {
12274            decoder.debug_check_bounds::<Self>(offset);
12275            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
12276            // Verify that padding bytes are zero.
12277            // Copy from the buffer into the object.
12278            unsafe {
12279                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 18);
12280            }
12281            Ok(())
12282        }
12283    }
12284
12285    impl fidl::encoding::ValueTypeMarker for GetIfaceHistogramStatsResponse {
12286        type Borrowed<'a> = &'a Self;
12287        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12288            value
12289        }
12290    }
12291
12292    unsafe impl fidl::encoding::TypeMarker for GetIfaceHistogramStatsResponse {
12293        type Owned = Self;
12294
12295        #[inline(always)]
12296        fn inline_align(_context: fidl::encoding::Context) -> usize {
12297            8
12298        }
12299
12300        #[inline(always)]
12301        fn inline_size(_context: fidl::encoding::Context) -> usize {
12302            16
12303        }
12304    }
12305
12306    unsafe impl<D: fidl::encoding::ResourceDialect>
12307        fidl::encoding::Encode<GetIfaceHistogramStatsResponse, D>
12308        for &GetIfaceHistogramStatsResponse
12309    {
12310        #[inline]
12311        unsafe fn encode(
12312            self,
12313            encoder: &mut fidl::encoding::Encoder<'_, D>,
12314            offset: usize,
12315            _depth: fidl::encoding::Depth,
12316        ) -> fidl::Result<()> {
12317            encoder.debug_check_bounds::<GetIfaceHistogramStatsResponse>(offset);
12318            encoder.write_num::<u64>(self.ordinal(), offset);
12319            match self {
12320            GetIfaceHistogramStatsResponse::Stats(ref val) => {
12321                fidl::encoding::encode_in_envelope::<fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D>(
12322                    <fidl_fuchsia_wlan_stats__common::IfaceHistogramStats as fidl::encoding::ValueTypeMarker>::borrow(val),
12323                    encoder, offset + 8, _depth
12324                )
12325            }
12326            GetIfaceHistogramStatsResponse::ErrorStatus(ref val) => {
12327                fidl::encoding::encode_in_envelope::<i32, D>(
12328                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
12329                    encoder, offset + 8, _depth
12330                )
12331            }
12332        }
12333        }
12334    }
12335
12336    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12337        for GetIfaceHistogramStatsResponse
12338    {
12339        #[inline(always)]
12340        fn new_empty() -> Self {
12341            Self::Stats(fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceHistogramStats, D))
12342        }
12343
12344        #[inline]
12345        unsafe fn decode(
12346            &mut self,
12347            decoder: &mut fidl::encoding::Decoder<'_, D>,
12348            offset: usize,
12349            mut depth: fidl::encoding::Depth,
12350        ) -> fidl::Result<()> {
12351            decoder.debug_check_bounds::<Self>(offset);
12352            #[allow(unused_variables)]
12353            let next_out_of_line = decoder.next_out_of_line();
12354            let handles_before = decoder.remaining_handles();
12355            let (ordinal, inlined, num_bytes, num_handles) =
12356                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12357
12358            let member_inline_size = match ordinal {
12359            1 => <fidl_fuchsia_wlan_stats__common::IfaceHistogramStats as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12360            2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12361            _ => return Err(fidl::Error::UnknownUnionTag),
12362        };
12363
12364            if inlined != (member_inline_size <= 4) {
12365                return Err(fidl::Error::InvalidInlineBitInEnvelope);
12366            }
12367            let _inner_offset;
12368            if inlined {
12369                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
12370                _inner_offset = offset + 8;
12371            } else {
12372                depth.increment()?;
12373                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12374            }
12375            match ordinal {
12376                1 => {
12377                    #[allow(irrefutable_let_patterns)]
12378                    if let GetIfaceHistogramStatsResponse::Stats(_) = self {
12379                        // Do nothing, read the value into the object
12380                    } else {
12381                        // Initialize `self` to the right variant
12382                        *self = GetIfaceHistogramStatsResponse::Stats(fidl::new_empty!(
12383                            fidl_fuchsia_wlan_stats__common::IfaceHistogramStats,
12384                            D
12385                        ));
12386                    }
12387                    #[allow(irrefutable_let_patterns)]
12388                    if let GetIfaceHistogramStatsResponse::Stats(ref mut val) = self {
12389                        fidl::decode!(
12390                            fidl_fuchsia_wlan_stats__common::IfaceHistogramStats,
12391                            D,
12392                            val,
12393                            decoder,
12394                            _inner_offset,
12395                            depth
12396                        )?;
12397                    } else {
12398                        unreachable!()
12399                    }
12400                }
12401                2 => {
12402                    #[allow(irrefutable_let_patterns)]
12403                    if let GetIfaceHistogramStatsResponse::ErrorStatus(_) = self {
12404                        // Do nothing, read the value into the object
12405                    } else {
12406                        // Initialize `self` to the right variant
12407                        *self =
12408                            GetIfaceHistogramStatsResponse::ErrorStatus(fidl::new_empty!(i32, D));
12409                    }
12410                    #[allow(irrefutable_let_patterns)]
12411                    if let GetIfaceHistogramStatsResponse::ErrorStatus(ref mut val) = self {
12412                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
12413                    } else {
12414                        unreachable!()
12415                    }
12416                }
12417                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12418            }
12419            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12420                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12421            }
12422            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12423                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12424            }
12425            Ok(())
12426        }
12427    }
12428
12429    impl fidl::encoding::ValueTypeMarker for GetIfaceStatsResponse {
12430        type Borrowed<'a> = &'a Self;
12431        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12432            value
12433        }
12434    }
12435
12436    unsafe impl fidl::encoding::TypeMarker for GetIfaceStatsResponse {
12437        type Owned = Self;
12438
12439        #[inline(always)]
12440        fn inline_align(_context: fidl::encoding::Context) -> usize {
12441            8
12442        }
12443
12444        #[inline(always)]
12445        fn inline_size(_context: fidl::encoding::Context) -> usize {
12446            16
12447        }
12448    }
12449
12450    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<GetIfaceStatsResponse, D>
12451        for &GetIfaceStatsResponse
12452    {
12453        #[inline]
12454        unsafe fn encode(
12455            self,
12456            encoder: &mut fidl::encoding::Encoder<'_, D>,
12457            offset: usize,
12458            _depth: fidl::encoding::Depth,
12459        ) -> fidl::Result<()> {
12460            encoder.debug_check_bounds::<GetIfaceStatsResponse>(offset);
12461            encoder.write_num::<u64>(self.ordinal(), offset);
12462            match self {
12463            GetIfaceStatsResponse::Stats(ref val) => {
12464                fidl::encoding::encode_in_envelope::<fidl_fuchsia_wlan_stats__common::IfaceStats, D>(
12465                    <fidl_fuchsia_wlan_stats__common::IfaceStats as fidl::encoding::ValueTypeMarker>::borrow(val),
12466                    encoder, offset + 8, _depth
12467                )
12468            }
12469            GetIfaceStatsResponse::ErrorStatus(ref val) => {
12470                fidl::encoding::encode_in_envelope::<i32, D>(
12471                    <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
12472                    encoder, offset + 8, _depth
12473                )
12474            }
12475        }
12476        }
12477    }
12478
12479    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GetIfaceStatsResponse {
12480        #[inline(always)]
12481        fn new_empty() -> Self {
12482            Self::Stats(fidl::new_empty!(fidl_fuchsia_wlan_stats__common::IfaceStats, D))
12483        }
12484
12485        #[inline]
12486        unsafe fn decode(
12487            &mut self,
12488            decoder: &mut fidl::encoding::Decoder<'_, D>,
12489            offset: usize,
12490            mut depth: fidl::encoding::Depth,
12491        ) -> fidl::Result<()> {
12492            decoder.debug_check_bounds::<Self>(offset);
12493            #[allow(unused_variables)]
12494            let next_out_of_line = decoder.next_out_of_line();
12495            let handles_before = decoder.remaining_handles();
12496            let (ordinal, inlined, num_bytes, num_handles) =
12497                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
12498
12499            let member_inline_size = match ordinal {
12500            1 => <fidl_fuchsia_wlan_stats__common::IfaceStats as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12501            2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
12502            _ => return Err(fidl::Error::UnknownUnionTag),
12503        };
12504
12505            if inlined != (member_inline_size <= 4) {
12506                return Err(fidl::Error::InvalidInlineBitInEnvelope);
12507            }
12508            let _inner_offset;
12509            if inlined {
12510                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
12511                _inner_offset = offset + 8;
12512            } else {
12513                depth.increment()?;
12514                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12515            }
12516            match ordinal {
12517                1 => {
12518                    #[allow(irrefutable_let_patterns)]
12519                    if let GetIfaceStatsResponse::Stats(_) = self {
12520                        // Do nothing, read the value into the object
12521                    } else {
12522                        // Initialize `self` to the right variant
12523                        *self = GetIfaceStatsResponse::Stats(fidl::new_empty!(
12524                            fidl_fuchsia_wlan_stats__common::IfaceStats,
12525                            D
12526                        ));
12527                    }
12528                    #[allow(irrefutable_let_patterns)]
12529                    if let GetIfaceStatsResponse::Stats(ref mut val) = self {
12530                        fidl::decode!(
12531                            fidl_fuchsia_wlan_stats__common::IfaceStats,
12532                            D,
12533                            val,
12534                            decoder,
12535                            _inner_offset,
12536                            depth
12537                        )?;
12538                    } else {
12539                        unreachable!()
12540                    }
12541                }
12542                2 => {
12543                    #[allow(irrefutable_let_patterns)]
12544                    if let GetIfaceStatsResponse::ErrorStatus(_) = self {
12545                        // Do nothing, read the value into the object
12546                    } else {
12547                        // Initialize `self` to the right variant
12548                        *self = GetIfaceStatsResponse::ErrorStatus(fidl::new_empty!(i32, D));
12549                    }
12550                    #[allow(irrefutable_let_patterns)]
12551                    if let GetIfaceStatsResponse::ErrorStatus(ref mut val) = self {
12552                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
12553                    } else {
12554                        unreachable!()
12555                    }
12556                }
12557                ordinal => panic!("unexpected ordinal {:?}", ordinal),
12558            }
12559            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
12560                return Err(fidl::Error::InvalidNumBytesInEnvelope);
12561            }
12562            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12563                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12564            }
12565            Ok(())
12566        }
12567    }
12568}