Skip to main content

fidl_fuchsia_wlan_wlanix_common/
fidl_fuchsia_wlan_wlanix_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
11bitflags! {
12    #[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
13    pub struct KeyMgmtMask: u32 {
14        const WPA_EAP = 1;
15        const WPA_PSK = 2;
16        const NONE = 4;
17        const IEEE8021_X = 8;
18        const FT_EAP = 32;
19        const FT_PSK = 64;
20        const OSEN = 32768;
21        const WPA_EAP_SHA256 = 128;
22        const WPA_PSK_SHA256 = 256;
23        const SAE = 1024;
24        const SUITE_B_192 = 131072;
25        const OWE = 4194304;
26        const DPP = 8388608;
27        const WAPI_PSK = 4096;
28        const WAPI_CERT = 8192;
29        const FILS_SHA256 = 262144;
30        const FILS_SHA384 = 524288;
31        const PASN = 33554432;
32    }
33}
34
35impl KeyMgmtMask {
36    #[inline(always)]
37    pub fn from_bits_allow_unknown(bits: u32) -> Self {
38        Self::from_bits_retain(bits)
39    }
40
41    #[inline(always)]
42    pub fn has_unknown_bits(&self) -> bool {
43        self.get_unknown_bits() != 0
44    }
45
46    #[inline(always)]
47    pub fn get_unknown_bits(&self) -> u32 {
48        self.bits() & !Self::all().bits()
49    }
50}
51
52#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
53pub enum BtCoexistenceMode {
54    Enabled,
55    Disabled,
56    Sense,
57    #[doc(hidden)]
58    __SourceBreaking {
59        unknown_ordinal: u32,
60    },
61}
62
63/// Pattern that matches an unknown `BtCoexistenceMode` member.
64#[macro_export]
65macro_rules! BtCoexistenceModeUnknown {
66    () => {
67        _
68    };
69}
70
71impl BtCoexistenceMode {
72    #[inline]
73    pub fn from_primitive(prim: u32) -> Option<Self> {
74        match prim {
75            1 => Some(Self::Enabled),
76            2 => Some(Self::Disabled),
77            3 => Some(Self::Sense),
78            _ => None,
79        }
80    }
81
82    #[inline]
83    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
84        match prim {
85            1 => Self::Enabled,
86            2 => Self::Disabled,
87            3 => Self::Sense,
88            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
89        }
90    }
91
92    #[inline]
93    pub fn unknown() -> Self {
94        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
95    }
96
97    #[inline]
98    pub const fn into_primitive(self) -> u32 {
99        match self {
100            Self::Enabled => 1,
101            Self::Disabled => 2,
102            Self::Sense => 3,
103            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
104        }
105    }
106
107    #[inline]
108    pub fn is_unknown(&self) -> bool {
109        match self {
110            Self::__SourceBreaking { unknown_ordinal: _ } => true,
111            _ => false,
112        }
113    }
114}
115
116#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
117pub enum IfaceConcurrencyType {
118    Sta,
119    Ap,
120    ApBridged,
121    P2P,
122    NanIface,
123    #[doc(hidden)]
124    __SourceBreaking {
125        unknown_ordinal: u32,
126    },
127}
128
129/// Pattern that matches an unknown `IfaceConcurrencyType` member.
130#[macro_export]
131macro_rules! IfaceConcurrencyTypeUnknown {
132    () => {
133        _
134    };
135}
136
137impl IfaceConcurrencyType {
138    #[inline]
139    pub fn from_primitive(prim: u32) -> Option<Self> {
140        match prim {
141            1 => Some(Self::Sta),
142            2 => Some(Self::Ap),
143            3 => Some(Self::ApBridged),
144            4 => Some(Self::P2P),
145            5 => Some(Self::NanIface),
146            _ => None,
147        }
148    }
149
150    #[inline]
151    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
152        match prim {
153            1 => Self::Sta,
154            2 => Self::Ap,
155            3 => Self::ApBridged,
156            4 => Self::P2P,
157            5 => Self::NanIface,
158            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
159        }
160    }
161
162    #[inline]
163    pub fn unknown() -> Self {
164        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
165    }
166
167    #[inline]
168    pub const fn into_primitive(self) -> u32 {
169        match self {
170            Self::Sta => 1,
171            Self::Ap => 2,
172            Self::ApBridged => 3,
173            Self::P2P => 4,
174            Self::NanIface => 5,
175            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
176        }
177    }
178
179    #[inline]
180    pub fn is_unknown(&self) -> bool {
181        match self {
182            Self::__SourceBreaking { unknown_ordinal: _ } => true,
183            _ => false,
184        }
185    }
186}
187
188#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
189pub enum StaIfaceCallbackState {
190    Disconnected,
191    IfaceDisabled,
192    Inactive,
193    Scanning,
194    Authenticating,
195    Associating,
196    Associated,
197    FourwayHandshake,
198    GroupHandshake,
199    Completed,
200    #[doc(hidden)]
201    __SourceBreaking {
202        unknown_ordinal: u32,
203    },
204}
205
206/// Pattern that matches an unknown `StaIfaceCallbackState` member.
207#[macro_export]
208macro_rules! StaIfaceCallbackStateUnknown {
209    () => {
210        _
211    };
212}
213
214impl StaIfaceCallbackState {
215    #[inline]
216    pub fn from_primitive(prim: u32) -> Option<Self> {
217        match prim {
218            0 => Some(Self::Disconnected),
219            1 => Some(Self::IfaceDisabled),
220            2 => Some(Self::Inactive),
221            3 => Some(Self::Scanning),
222            4 => Some(Self::Authenticating),
223            5 => Some(Self::Associating),
224            6 => Some(Self::Associated),
225            7 => Some(Self::FourwayHandshake),
226            8 => Some(Self::GroupHandshake),
227            9 => Some(Self::Completed),
228            _ => None,
229        }
230    }
231
232    #[inline]
233    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
234        match prim {
235            0 => Self::Disconnected,
236            1 => Self::IfaceDisabled,
237            2 => Self::Inactive,
238            3 => Self::Scanning,
239            4 => Self::Authenticating,
240            5 => Self::Associating,
241            6 => Self::Associated,
242            7 => Self::FourwayHandshake,
243            8 => Self::GroupHandshake,
244            9 => Self::Completed,
245            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
246        }
247    }
248
249    #[inline]
250    pub fn unknown() -> Self {
251        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
252    }
253
254    #[inline]
255    pub const fn into_primitive(self) -> u32 {
256        match self {
257            Self::Disconnected => 0,
258            Self::IfaceDisabled => 1,
259            Self::Inactive => 2,
260            Self::Scanning => 3,
261            Self::Authenticating => 4,
262            Self::Associating => 5,
263            Self::Associated => 6,
264            Self::FourwayHandshake => 7,
265            Self::GroupHandshake => 8,
266            Self::Completed => 9,
267            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
268        }
269    }
270
271    #[inline]
272    pub fn is_unknown(&self) -> bool {
273        match self {
274            Self::__SourceBreaking { unknown_ordinal: _ } => true,
275            _ => false,
276        }
277    }
278}
279
280#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
281pub enum WifiChipTxPowerScenario {
282    VoiceCall,
283    OnHeadCellOff,
284    OnHeadCellOn,
285    OnBodyCellOff,
286    OnBodyCellOn,
287    #[doc(hidden)]
288    __SourceBreaking {
289        unknown_ordinal: u32,
290    },
291}
292
293/// Pattern that matches an unknown `WifiChipTxPowerScenario` member.
294#[macro_export]
295macro_rules! WifiChipTxPowerScenarioUnknown {
296    () => {
297        _
298    };
299}
300
301impl WifiChipTxPowerScenario {
302    #[inline]
303    pub fn from_primitive(prim: u32) -> Option<Self> {
304        match prim {
305            0 => Some(Self::VoiceCall),
306            1 => Some(Self::OnHeadCellOff),
307            2 => Some(Self::OnHeadCellOn),
308            3 => Some(Self::OnBodyCellOff),
309            4 => Some(Self::OnBodyCellOn),
310            _ => None,
311        }
312    }
313
314    #[inline]
315    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
316        match prim {
317            0 => Self::VoiceCall,
318            1 => Self::OnHeadCellOff,
319            2 => Self::OnHeadCellOn,
320            3 => Self::OnBodyCellOff,
321            4 => Self::OnBodyCellOn,
322            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
323        }
324    }
325
326    #[inline]
327    pub fn unknown() -> Self {
328        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
329    }
330
331    #[inline]
332    pub const fn into_primitive(self) -> u32 {
333        match self {
334            Self::VoiceCall => 0,
335            Self::OnHeadCellOff => 1,
336            Self::OnHeadCellOn => 2,
337            Self::OnBodyCellOff => 3,
338            Self::OnBodyCellOn => 4,
339            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
340        }
341    }
342
343    #[inline]
344    pub fn is_unknown(&self) -> bool {
345        match self {
346            Self::__SourceBreaking { unknown_ordinal: _ } => true,
347            _ => false,
348        }
349    }
350}
351
352#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
353pub enum WifiLegacyHalStatus {
354    NotSupported,
355    Internal,
356    InvalidArgument,
357    #[doc(hidden)]
358    __SourceBreaking {
359        unknown_ordinal: u32,
360    },
361}
362
363/// Pattern that matches an unknown `WifiLegacyHalStatus` member.
364#[macro_export]
365macro_rules! WifiLegacyHalStatusUnknown {
366    () => {
367        _
368    };
369}
370
371impl WifiLegacyHalStatus {
372    #[inline]
373    pub fn from_primitive(prim: u32) -> Option<Self> {
374        match prim {
375            1 => Some(Self::NotSupported),
376            2 => Some(Self::Internal),
377            3 => Some(Self::InvalidArgument),
378            _ => None,
379        }
380    }
381
382    #[inline]
383    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
384        match prim {
385            1 => Self::NotSupported,
386            2 => Self::Internal,
387            3 => Self::InvalidArgument,
388            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
389        }
390    }
391
392    #[inline]
393    pub fn unknown() -> Self {
394        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
395    }
396
397    #[inline]
398    pub const fn into_primitive(self) -> u32 {
399        match self {
400            Self::NotSupported => 1,
401            Self::Internal => 2,
402            Self::InvalidArgument => 3,
403            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
404        }
405    }
406
407    #[inline]
408    pub fn is_unknown(&self) -> bool {
409        match self {
410            Self::__SourceBreaking { unknown_ordinal: _ } => true,
411            _ => false,
412        }
413    }
414}
415
416#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
417pub enum WifiLegacyHalTxPowerScenario {
418    Invalid,
419    Default,
420    VoiceCallLegacy,
421    OnHeadCellOff,
422    OnHeadCellOn,
423    OnBodyCellOff,
424    OnBodyCellOn,
425    OnBodyBt,
426    OnHeadHotspot,
427    OnHeadHotspotMmw,
428    OnBodyCellOnBt,
429    OnBodyHotspot,
430    OnBodyHotspotBt,
431    OnBodyHotspotMmw,
432    OnBodyHotspotBtMmw,
433    OnHeadCellOffUnfolded,
434    OnHeadCellOnUnfolded,
435    OnHeadHotspotUnfolded,
436    OnHeadHotspotMmwUnfolded,
437    OnBodyCellOffUnfolded,
438    OnBodyBtUnfolded,
439    OnBodyCellOnUnfolded,
440    OnBodyCellOnBtUnfolded,
441    OnBodyHotspotUnfolded,
442    OnBodyHotspotBtUnfolded,
443    OnBodyHotspotMmwUnfolded,
444    OnBodyHotspotBtMmwUnfolded,
445    OnBodyRearCamera,
446    OnBodyCellOffUnfoldedCap,
447    OnBodyBtUnfoldedCap,
448    OnBodyCellOnUnfoldedCap,
449    OnBodyCellOnBtUnfoldedCap,
450    OnBodyVideoRecording,
451    #[doc(hidden)]
452    __SourceBreaking {
453        unknown_ordinal: i32,
454    },
455}
456
457/// Pattern that matches an unknown `WifiLegacyHalTxPowerScenario` member.
458#[macro_export]
459macro_rules! WifiLegacyHalTxPowerScenarioUnknown {
460    () => {
461        _
462    };
463}
464
465impl WifiLegacyHalTxPowerScenario {
466    #[inline]
467    pub fn from_primitive(prim: i32) -> Option<Self> {
468        match prim {
469            -2 => Some(Self::Invalid),
470            -1 => Some(Self::Default),
471            0 => Some(Self::VoiceCallLegacy),
472            1 => Some(Self::OnHeadCellOff),
473            2 => Some(Self::OnHeadCellOn),
474            3 => Some(Self::OnBodyCellOff),
475            4 => Some(Self::OnBodyCellOn),
476            5 => Some(Self::OnBodyBt),
477            6 => Some(Self::OnHeadHotspot),
478            7 => Some(Self::OnHeadHotspotMmw),
479            8 => Some(Self::OnBodyCellOnBt),
480            9 => Some(Self::OnBodyHotspot),
481            10 => Some(Self::OnBodyHotspotBt),
482            11 => Some(Self::OnBodyHotspotMmw),
483            12 => Some(Self::OnBodyHotspotBtMmw),
484            13 => Some(Self::OnHeadCellOffUnfolded),
485            14 => Some(Self::OnHeadCellOnUnfolded),
486            15 => Some(Self::OnHeadHotspotUnfolded),
487            16 => Some(Self::OnHeadHotspotMmwUnfolded),
488            17 => Some(Self::OnBodyCellOffUnfolded),
489            18 => Some(Self::OnBodyBtUnfolded),
490            19 => Some(Self::OnBodyCellOnUnfolded),
491            20 => Some(Self::OnBodyCellOnBtUnfolded),
492            21 => Some(Self::OnBodyHotspotUnfolded),
493            22 => Some(Self::OnBodyHotspotBtUnfolded),
494            23 => Some(Self::OnBodyHotspotMmwUnfolded),
495            24 => Some(Self::OnBodyHotspotBtMmwUnfolded),
496            25 => Some(Self::OnBodyRearCamera),
497            26 => Some(Self::OnBodyCellOffUnfoldedCap),
498            27 => Some(Self::OnBodyBtUnfoldedCap),
499            28 => Some(Self::OnBodyCellOnUnfoldedCap),
500            29 => Some(Self::OnBodyCellOnBtUnfoldedCap),
501            30 => Some(Self::OnBodyVideoRecording),
502            _ => None,
503        }
504    }
505
506    #[inline]
507    pub fn from_primitive_allow_unknown(prim: i32) -> Self {
508        match prim {
509            -2 => Self::Invalid,
510            -1 => Self::Default,
511            0 => Self::VoiceCallLegacy,
512            1 => Self::OnHeadCellOff,
513            2 => Self::OnHeadCellOn,
514            3 => Self::OnBodyCellOff,
515            4 => Self::OnBodyCellOn,
516            5 => Self::OnBodyBt,
517            6 => Self::OnHeadHotspot,
518            7 => Self::OnHeadHotspotMmw,
519            8 => Self::OnBodyCellOnBt,
520            9 => Self::OnBodyHotspot,
521            10 => Self::OnBodyHotspotBt,
522            11 => Self::OnBodyHotspotMmw,
523            12 => Self::OnBodyHotspotBtMmw,
524            13 => Self::OnHeadCellOffUnfolded,
525            14 => Self::OnHeadCellOnUnfolded,
526            15 => Self::OnHeadHotspotUnfolded,
527            16 => Self::OnHeadHotspotMmwUnfolded,
528            17 => Self::OnBodyCellOffUnfolded,
529            18 => Self::OnBodyBtUnfolded,
530            19 => Self::OnBodyCellOnUnfolded,
531            20 => Self::OnBodyCellOnBtUnfolded,
532            21 => Self::OnBodyHotspotUnfolded,
533            22 => Self::OnBodyHotspotBtUnfolded,
534            23 => Self::OnBodyHotspotMmwUnfolded,
535            24 => Self::OnBodyHotspotBtMmwUnfolded,
536            25 => Self::OnBodyRearCamera,
537            26 => Self::OnBodyCellOffUnfoldedCap,
538            27 => Self::OnBodyBtUnfoldedCap,
539            28 => Self::OnBodyCellOnUnfoldedCap,
540            29 => Self::OnBodyCellOnBtUnfoldedCap,
541            30 => Self::OnBodyVideoRecording,
542            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
543        }
544    }
545
546    #[inline]
547    pub fn unknown() -> Self {
548        Self::__SourceBreaking { unknown_ordinal: 0x7fffffff }
549    }
550
551    #[inline]
552    pub const fn into_primitive(self) -> i32 {
553        match self {
554            Self::Invalid => -2,
555            Self::Default => -1,
556            Self::VoiceCallLegacy => 0,
557            Self::OnHeadCellOff => 1,
558            Self::OnHeadCellOn => 2,
559            Self::OnBodyCellOff => 3,
560            Self::OnBodyCellOn => 4,
561            Self::OnBodyBt => 5,
562            Self::OnHeadHotspot => 6,
563            Self::OnHeadHotspotMmw => 7,
564            Self::OnBodyCellOnBt => 8,
565            Self::OnBodyHotspot => 9,
566            Self::OnBodyHotspotBt => 10,
567            Self::OnBodyHotspotMmw => 11,
568            Self::OnBodyHotspotBtMmw => 12,
569            Self::OnHeadCellOffUnfolded => 13,
570            Self::OnHeadCellOnUnfolded => 14,
571            Self::OnHeadHotspotUnfolded => 15,
572            Self::OnHeadHotspotMmwUnfolded => 16,
573            Self::OnBodyCellOffUnfolded => 17,
574            Self::OnBodyBtUnfolded => 18,
575            Self::OnBodyCellOnUnfolded => 19,
576            Self::OnBodyCellOnBtUnfolded => 20,
577            Self::OnBodyHotspotUnfolded => 21,
578            Self::OnBodyHotspotBtUnfolded => 22,
579            Self::OnBodyHotspotMmwUnfolded => 23,
580            Self::OnBodyHotspotBtMmwUnfolded => 24,
581            Self::OnBodyRearCamera => 25,
582            Self::OnBodyCellOffUnfoldedCap => 26,
583            Self::OnBodyBtUnfoldedCap => 27,
584            Self::OnBodyCellOnUnfoldedCap => 28,
585            Self::OnBodyCellOnBtUnfoldedCap => 29,
586            Self::OnBodyVideoRecording => 30,
587            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
588        }
589    }
590
591    #[inline]
592    pub fn is_unknown(&self) -> bool {
593        match self {
594            Self::__SourceBreaking { unknown_ordinal: _ } => true,
595            _ => false,
596        }
597    }
598}
599
600#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
601pub enum WlanixError {
602    InternalError,
603    InvalidArgs,
604    #[doc(hidden)]
605    __SourceBreaking {
606        unknown_ordinal: u32,
607    },
608}
609
610/// Pattern that matches an unknown `WlanixError` member.
611#[macro_export]
612macro_rules! WlanixErrorUnknown {
613    () => {
614        _
615    };
616}
617
618impl WlanixError {
619    #[inline]
620    pub fn from_primitive(prim: u32) -> Option<Self> {
621        match prim {
622            1 => Some(Self::InternalError),
623            2 => Some(Self::InvalidArgs),
624            _ => None,
625        }
626    }
627
628    #[inline]
629    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
630        match prim {
631            1 => Self::InternalError,
632            2 => Self::InvalidArgs,
633            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
634        }
635    }
636
637    #[inline]
638    pub fn unknown() -> Self {
639        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
640    }
641
642    #[inline]
643    pub const fn into_primitive(self) -> u32 {
644        match self {
645            Self::InternalError => 1,
646            Self::InvalidArgs => 2,
647            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
648        }
649    }
650
651    #[inline]
652    pub fn is_unknown(&self) -> bool {
653        match self {
654            Self::__SourceBreaking { unknown_ordinal: _ } => true,
655            _ => false,
656        }
657    }
658}
659
660#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
661pub struct Ack;
662
663impl fidl::Persistable for Ack {}
664
665#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
666pub struct Done;
667
668impl fidl::Persistable for Done {}
669
670#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
671#[repr(C)]
672pub struct Error {
673    pub error_code: i32,
674}
675
676impl fidl::Persistable for Error {}
677
678#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
679pub struct Message {
680    pub payload: Vec<u8>,
681}
682
683impl fidl::Persistable for Message {}
684
685#[derive(Clone, Debug, PartialEq)]
686pub struct Nl80211MessageArray {
687    pub messages: Vec<Nl80211Message>,
688}
689
690impl fidl::Persistable for Nl80211MessageArray {}
691
692#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
693#[repr(C)]
694pub struct SupplicantStaIfaceGetFactoryMacAddressResponse {
695    pub mac_addr: [u8; 6],
696}
697
698impl fidl::Persistable for SupplicantStaIfaceGetFactoryMacAddressResponse {}
699
700#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
701pub struct WifiChipSelectTxPowerScenarioRequest {
702    pub scenario: WifiChipTxPowerScenario,
703}
704
705impl fidl::Persistable for WifiChipSelectTxPowerScenarioRequest {}
706
707#[derive(Clone, Debug, Default, PartialEq)]
708pub struct ChipConcurrencyCombination {
709    pub limits: Option<Vec<ChipConcurrencyCombinationLimit>>,
710    #[doc(hidden)]
711    pub __source_breaking: fidl::marker::SourceBreaking,
712}
713
714impl fidl::Persistable for ChipConcurrencyCombination {}
715
716#[derive(Clone, Debug, Default, PartialEq)]
717pub struct ChipConcurrencyCombinationLimit {
718    pub types: Option<Vec<IfaceConcurrencyType>>,
719    pub max_ifaces: Option<u32>,
720    #[doc(hidden)]
721    pub __source_breaking: fidl::marker::SourceBreaking,
722}
723
724impl fidl::Persistable for ChipConcurrencyCombinationLimit {}
725
726#[derive(Clone, Debug, Default, PartialEq)]
727pub struct ChipMode {
728    pub id: Option<u32>,
729    pub available_combinations: Option<Vec<ChipConcurrencyCombination>>,
730    #[doc(hidden)]
731    pub __source_breaking: fidl::marker::SourceBreaking,
732}
733
734impl fidl::Persistable for ChipMode {}
735
736#[derive(Clone, Debug, Default, PartialEq)]
737pub struct LinkLayerStats {
738    pub wme: Option<fidl_fuchsia_wlan_stats_common::WmePacketStats>,
739    pub rssi_dbm: Option<i32>,
740    #[doc(hidden)]
741    pub __source_breaking: fidl::marker::SourceBreaking,
742}
743
744impl fidl::Persistable for LinkLayerStats {}
745
746#[derive(Clone, Debug, Default, PartialEq)]
747pub struct SupplicantStaIfaceCallbackOnAssociationRejectedRequest {
748    pub ssid: Option<Vec<u8>>,
749    pub bssid: Option<[u8; 6]>,
750    pub status_code: Option<fidl_fuchsia_wlan_ieee80211_common::StatusCode>,
751    pub timed_out: Option<bool>,
752    #[doc(hidden)]
753    pub __source_breaking: fidl::marker::SourceBreaking,
754}
755
756impl fidl::Persistable for SupplicantStaIfaceCallbackOnAssociationRejectedRequest {}
757
758#[derive(Clone, Debug, Default, PartialEq)]
759pub struct SupplicantStaIfaceCallbackOnDisconnectedRequest {
760    pub bssid: Option<[u8; 6]>,
761    pub locally_generated: Option<bool>,
762    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211_common::ReasonCode>,
763    #[doc(hidden)]
764    pub __source_breaking: fidl::marker::SourceBreaking,
765}
766
767impl fidl::Persistable for SupplicantStaIfaceCallbackOnDisconnectedRequest {}
768
769#[derive(Clone, Debug, Default, PartialEq)]
770pub struct SupplicantStaIfaceCallbackOnStateChangedRequest {
771    pub new_state: Option<StaIfaceCallbackState>,
772    pub bssid: Option<[u8; 6]>,
773    pub id: Option<u32>,
774    pub ssid: Option<Vec<u8>>,
775    #[doc(hidden)]
776    pub __source_breaking: fidl::marker::SourceBreaking,
777}
778
779impl fidl::Persistable for SupplicantStaIfaceCallbackOnStateChangedRequest {}
780
781#[derive(Clone, Debug, Default, PartialEq)]
782pub struct SupplicantStaIfaceSetBtCoexistenceModeRequest {
783    pub mode: Option<BtCoexistenceMode>,
784    #[doc(hidden)]
785    pub __source_breaking: fidl::marker::SourceBreaking,
786}
787
788impl fidl::Persistable for SupplicantStaIfaceSetBtCoexistenceModeRequest {}
789
790#[derive(Clone, Debug, Default, PartialEq)]
791pub struct SupplicantStaIfaceGetMacAddressResponse {
792    pub mac_addr: Option<[u8; 6]>,
793    #[doc(hidden)]
794    pub __source_breaking: fidl::marker::SourceBreaking,
795}
796
797impl fidl::Persistable for SupplicantStaIfaceGetMacAddressResponse {}
798
799#[derive(Clone, Debug, Default, PartialEq)]
800pub struct SupplicantStaIfaceGetSignalPollResultsResponse {
801    pub current_rssi_dbm: Option<i32>,
802    pub tx_bitrate_mbps: Option<u32>,
803    pub rx_bitrate_mbps: Option<u32>,
804    pub frequency_mhz: Option<u32>,
805    #[doc(hidden)]
806    pub __source_breaking: fidl::marker::SourceBreaking,
807}
808
809impl fidl::Persistable for SupplicantStaIfaceGetSignalPollResultsResponse {}
810
811#[derive(Clone, Debug, Default, PartialEq)]
812pub struct SupplicantStaNetworkSetBssidRequest {
813    pub bssid: Option<[u8; 6]>,
814    #[doc(hidden)]
815    pub __source_breaking: fidl::marker::SourceBreaking,
816}
817
818impl fidl::Persistable for SupplicantStaNetworkSetBssidRequest {}
819
820#[derive(Clone, Debug, Default, PartialEq)]
821pub struct SupplicantStaNetworkSetKeyMgmtRequest {
822    pub key_mgmt_mask: Option<KeyMgmtMask>,
823    #[doc(hidden)]
824    pub __source_breaking: fidl::marker::SourceBreaking,
825}
826
827impl fidl::Persistable for SupplicantStaNetworkSetKeyMgmtRequest {}
828
829#[derive(Clone, Debug, Default, PartialEq)]
830pub struct SupplicantStaNetworkSetPskPassphraseRequest {
831    pub passphrase: Option<Vec<u8>>,
832    #[doc(hidden)]
833    pub __source_breaking: fidl::marker::SourceBreaking,
834}
835
836impl fidl::Persistable for SupplicantStaNetworkSetPskPassphraseRequest {}
837
838#[derive(Clone, Debug, Default, PartialEq)]
839pub struct SupplicantStaNetworkSetSaePasswordRequest {
840    pub password: Option<Vec<u8>>,
841    #[doc(hidden)]
842    pub __source_breaking: fidl::marker::SourceBreaking,
843}
844
845impl fidl::Persistable for SupplicantStaNetworkSetSaePasswordRequest {}
846
847#[derive(Clone, Debug, Default, PartialEq)]
848pub struct SupplicantStaNetworkSetSsidRequest {
849    pub ssid: Option<Vec<u8>>,
850    #[doc(hidden)]
851    pub __source_breaking: fidl::marker::SourceBreaking,
852}
853
854impl fidl::Persistable for SupplicantStaNetworkSetSsidRequest {}
855
856#[derive(Clone, Debug, Default, PartialEq)]
857pub struct SupplicantStaNetworkSetWepKeyRequest {
858    pub key: Option<Vec<u8>>,
859    pub key_idx: Option<i32>,
860    #[doc(hidden)]
861    pub __source_breaking: fidl::marker::SourceBreaking,
862}
863
864impl fidl::Persistable for SupplicantStaNetworkSetWepKeyRequest {}
865
866#[derive(Clone, Debug, Default, PartialEq)]
867pub struct SupplicantStaNetworkSetWepTxKeyIdxRequest {
868    pub key_idx: Option<i32>,
869    #[doc(hidden)]
870    pub __source_breaking: fidl::marker::SourceBreaking,
871}
872
873impl fidl::Persistable for SupplicantStaNetworkSetWepTxKeyIdxRequest {}
874
875#[derive(Clone, Debug, Default, PartialEq)]
876pub struct WifiChipGetAvailableModesResponse {
877    pub chip_modes: Option<Vec<ChipMode>>,
878    #[doc(hidden)]
879    pub __source_breaking: fidl::marker::SourceBreaking,
880}
881
882impl fidl::Persistable for WifiChipGetAvailableModesResponse {}
883
884#[derive(Clone, Debug, Default, PartialEq)]
885pub struct WifiChipGetCapabilitiesResponse {
886    pub capabilities_mask: Option<u32>,
887    #[doc(hidden)]
888    pub __source_breaking: fidl::marker::SourceBreaking,
889}
890
891impl fidl::Persistable for WifiChipGetCapabilitiesResponse {}
892
893#[derive(Clone, Debug, Default, PartialEq)]
894pub struct WifiChipGetIdResponse {
895    pub id: Option<u32>,
896    #[doc(hidden)]
897    pub __source_breaking: fidl::marker::SourceBreaking,
898}
899
900impl fidl::Persistable for WifiChipGetIdResponse {}
901
902#[derive(Clone, Debug, Default, PartialEq)]
903pub struct WifiChipGetModeResponse {
904    pub mode: Option<u32>,
905    #[doc(hidden)]
906    pub __source_breaking: fidl::marker::SourceBreaking,
907}
908
909impl fidl::Persistable for WifiChipGetModeResponse {}
910
911#[derive(Clone, Debug, Default, PartialEq)]
912pub struct WifiChipGetStaIfaceNamesResponse {
913    pub iface_names: Option<Vec<String>>,
914    #[doc(hidden)]
915    pub __source_breaking: fidl::marker::SourceBreaking,
916}
917
918impl fidl::Persistable for WifiChipGetStaIfaceNamesResponse {}
919
920#[derive(Clone, Debug, Default, PartialEq)]
921pub struct WifiStaIfaceInstallApfPacketFilterRequest {
922    pub program: Option<Vec<u8>>,
923    #[doc(hidden)]
924    pub __source_breaking: fidl::marker::SourceBreaking,
925}
926
927impl fidl::Persistable for WifiStaIfaceInstallApfPacketFilterRequest {}
928
929#[derive(Clone, Debug, Default, PartialEq)]
930pub struct WifiStaIfaceGetApfPacketFilterSupportResponse {
931    pub version: Option<i32>,
932    pub max_filter_length: Option<i32>,
933    #[doc(hidden)]
934    pub __source_breaking: fidl::marker::SourceBreaking,
935}
936
937impl fidl::Persistable for WifiStaIfaceGetApfPacketFilterSupportResponse {}
938
939#[derive(Clone, Debug, Default, PartialEq)]
940pub struct WifiStaIfaceGetLinkLayerStatsResponse {
941    pub stats: Option<LinkLayerStats>,
942    #[doc(hidden)]
943    pub __source_breaking: fidl::marker::SourceBreaking,
944}
945
946impl fidl::Persistable for WifiStaIfaceGetLinkLayerStatsResponse {}
947
948#[derive(Clone, Debug, Default, PartialEq)]
949pub struct WifiStaIfaceGetNameResponse {
950    pub iface_name: Option<String>,
951    #[doc(hidden)]
952    pub __source_breaking: fidl::marker::SourceBreaking,
953}
954
955impl fidl::Persistable for WifiStaIfaceGetNameResponse {}
956
957#[derive(Clone, Debug, Default, PartialEq)]
958pub struct WifiStaIfaceReadApfPacketFilterDataResponse {
959    pub memory: Option<Vec<u8>>,
960    #[doc(hidden)]
961    pub __source_breaking: fidl::marker::SourceBreaking,
962}
963
964impl fidl::Persistable for WifiStaIfaceReadApfPacketFilterDataResponse {}
965
966#[derive(Clone, Debug, Default, PartialEq)]
967pub struct WifiGetChipIdsResponse {
968    pub chip_ids: Option<Vec<u32>>,
969    #[doc(hidden)]
970    pub __source_breaking: fidl::marker::SourceBreaking,
971}
972
973impl fidl::Persistable for WifiGetChipIdsResponse {}
974
975#[derive(Clone, Debug, Default, PartialEq)]
976pub struct WifiGetStateResponse {
977    pub is_started: Option<bool>,
978    #[doc(hidden)]
979    pub __source_breaking: fidl::marker::SourceBreaking,
980}
981
982impl fidl::Persistable for WifiGetStateResponse {}
983
984#[derive(Clone, Debug)]
985pub enum Nl80211Message {
986    Done(Done),
987    Error(Error),
988    Ack(Ack),
989    Message(Message),
990    #[doc(hidden)]
991    __SourceBreaking {
992        unknown_ordinal: u64,
993    },
994}
995
996/// Pattern that matches an unknown `Nl80211Message` member.
997#[macro_export]
998macro_rules! Nl80211MessageUnknown {
999    () => {
1000        _
1001    };
1002}
1003
1004// Custom PartialEq so that unknown variants are not equal to themselves.
1005impl PartialEq for Nl80211Message {
1006    fn eq(&self, other: &Self) -> bool {
1007        match (self, other) {
1008            (Self::Done(x), Self::Done(y)) => *x == *y,
1009            (Self::Error(x), Self::Error(y)) => *x == *y,
1010            (Self::Ack(x), Self::Ack(y)) => *x == *y,
1011            (Self::Message(x), Self::Message(y)) => *x == *y,
1012            _ => false,
1013        }
1014    }
1015}
1016
1017impl Nl80211Message {
1018    #[inline]
1019    pub fn ordinal(&self) -> u64 {
1020        match *self {
1021            Self::Done(_) => 1,
1022            Self::Error(_) => 2,
1023            Self::Ack(_) => 3,
1024            Self::Message(_) => 4,
1025            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1026        }
1027    }
1028
1029    #[inline]
1030    pub fn unknown_variant_for_testing() -> Self {
1031        Self::__SourceBreaking { unknown_ordinal: 0 }
1032    }
1033
1034    #[inline]
1035    pub fn is_unknown(&self) -> bool {
1036        match self {
1037            Self::__SourceBreaking { .. } => true,
1038            _ => false,
1039        }
1040    }
1041}
1042
1043impl fidl::Persistable for Nl80211Message {}
1044
1045pub mod nl80211_ordinals {
1046    pub const GET_MULTICAST: u64 = 0x58b73dd089681dc2;
1047    pub const MESSAGE: u64 = 0x6336259e15bb3795;
1048    pub const MESSAGE_V2: u64 = 0x4626796aba1e2987;
1049}
1050
1051pub mod nl80211_multicast_ordinals {
1052    pub const MESSAGE: u64 = 0x4cc9241f302f16c0;
1053}
1054
1055pub mod supplicant_ordinals {
1056    pub const ADD_STA_INTERFACE: u64 = 0x73194b2afe9b367e;
1057    pub const REMOVE_INTERFACE: u64 = 0x7f83e5b75b27d242;
1058}
1059
1060pub mod supplicant_sta_iface_ordinals {
1061    pub const REGISTER_CALLBACK: u64 = 0x1be680e863a8e71;
1062    pub const ADD_NETWORK: u64 = 0xa77cf60628766dc;
1063    pub const DISCONNECT: u64 = 0x52a1d38e0b4871fa;
1064    pub const GET_MAC_ADDRESS: u64 = 0x60591d204a3f537f;
1065    pub const GET_FACTORY_MAC_ADDRESS: u64 = 0x58857179ad71e624;
1066    pub const SET_BT_COEXISTENCE_MODE: u64 = 0x14567ff593a9b154;
1067    pub const SET_POWER_SAVE: u64 = 0x5a04c29320085298;
1068    pub const SET_SUSPEND_MODE_ENABLED: u64 = 0xaf10de85bb7023a;
1069    pub const SET_STA_COUNTRY_CODE: u64 = 0x977e22f9b79b26e;
1070    pub const GET_SIGNAL_POLL_RESULTS: u64 = 0x783512ea6925df61;
1071}
1072
1073pub mod supplicant_sta_iface_callback_ordinals {
1074    pub const ON_STATE_CHANGED: u64 = 0x27e086d26c49eb6c;
1075    pub const ON_DISCONNECTED: u64 = 0x69546475f4dee0cc;
1076    pub const ON_ASSOCIATION_REJECTED: u64 = 0x7ef3961518bed988;
1077}
1078
1079pub mod supplicant_sta_network_ordinals {
1080    pub const SET_BSSID: u64 = 0x10a91d044ee6374d;
1081    pub const CLEAR_BSSID: u64 = 0xbc7ad82f541b267;
1082    pub const SET_SSID: u64 = 0x6b598a7a802e3083;
1083    pub const SET_KEY_MGMT: u64 = 0xc67082685b75a5c;
1084    pub const SET_PSK_PASSPHRASE: u64 = 0xf6d438225979307;
1085    pub const SET_SAE_PASSWORD: u64 = 0x2982737e196747b8;
1086    pub const SET_WEP_KEY: u64 = 0x22a7e25ec81f2dee;
1087    pub const SET_WEP_TX_KEY_IDX: u64 = 0x4f25576c21fcb8cb;
1088    pub const SELECT: u64 = 0x354bc361a0c77b45;
1089}
1090
1091pub mod wifi_ordinals {
1092    pub const REGISTER_EVENT_CALLBACK: u64 = 0x12abbdea948dd67b;
1093    pub const START: u64 = 0x427030e4dc6ec07a;
1094    pub const STOP: u64 = 0x67c9bdf61b2888d;
1095    pub const GET_STATE: u64 = 0x4616114a937d1fb0;
1096    pub const GET_CHIP_IDS: u64 = 0x2fb4f92351d802b5;
1097    pub const GET_CHIP: u64 = 0xef95d8246612540;
1098}
1099
1100pub mod wifi_chip_ordinals {
1101    pub const CREATE_STA_IFACE: u64 = 0x6fb2d5892face7af;
1102    pub const GET_STA_IFACE_NAMES: u64 = 0x349257482df6a000;
1103    pub const GET_STA_IFACE: u64 = 0x6d9704eeb36f28a2;
1104    pub const REMOVE_STA_IFACE: u64 = 0x4cd8eee466f8b04c;
1105    pub const SET_COUNTRY_CODE: u64 = 0x1dfe372d1d61a490;
1106    pub const GET_AVAILABLE_MODES: u64 = 0x1701095b452a3acd;
1107    pub const GET_ID: u64 = 0x37d5197325bb3370;
1108    pub const GET_MODE: u64 = 0x4d209e0f3ac84d6f;
1109    pub const GET_CAPABILITIES: u64 = 0x1b253f396dcaa2e0;
1110    pub const TRIGGER_SUBSYSTEM_RESTART: u64 = 0x42ffcae5aad196f9;
1111    pub const SELECT_TX_POWER_SCENARIO: u64 = 0x19287ab52ea72281;
1112    pub const RESET_TX_POWER_SCENARIO: u64 = 0x46408a2fb1eb9d09;
1113}
1114
1115pub mod wifi_event_callback_ordinals {
1116    pub const ON_START: u64 = 0x61189ff44f9d35f3;
1117    pub const ON_STOP: u64 = 0x58b697bcd475e0f9;
1118    pub const ON_SUBSYSTEM_RESTART: u64 = 0x69dfee4d3475db21;
1119}
1120
1121pub mod wifi_legacy_hal_ordinals {
1122    pub const SELECT_TX_POWER_SCENARIO: u64 = 0x49f42620e0a3caf9;
1123    pub const RESET_TX_POWER_SCENARIO: u64 = 0x6c0f8e9203167d8e;
1124}
1125
1126pub mod wifi_sta_iface_ordinals {
1127    pub const GET_NAME: u64 = 0x5c150b91c80c5789;
1128    pub const SET_SCAN_ONLY_MODE: u64 = 0x22550328583bf0e3;
1129    pub const SET_MAC_ADDRESS: u64 = 0x39c4f355079421b9;
1130    pub const GET_APF_PACKET_FILTER_SUPPORT: u64 = 0x205c538d31d76c8c;
1131    pub const INSTALL_APF_PACKET_FILTER: u64 = 0x6306fbfdb65631ba;
1132    pub const READ_APF_PACKET_FILTER_DATA: u64 = 0x4f39e558ddbca39;
1133    pub const GET_LINK_LAYER_STATS: u64 = 0x6c38ee946b9048cd;
1134}
1135
1136pub mod wlanix_ordinals {
1137    pub const GET_WIFI: u64 = 0x142511f44b2c338c;
1138    pub const GET_SUPPLICANT: u64 = 0x55554b37c4021d3d;
1139    pub const GET_NL80211: u64 = 0x48028a25bd855ef9;
1140    pub const GET_WIFI_LEGACY_HAL: u64 = 0x7302d9bb3b8d1edc;
1141}
1142
1143mod internal {
1144    use super::*;
1145    unsafe impl fidl::encoding::TypeMarker for KeyMgmtMask {
1146        type Owned = Self;
1147
1148        #[inline(always)]
1149        fn inline_align(_context: fidl::encoding::Context) -> usize {
1150            4
1151        }
1152
1153        #[inline(always)]
1154        fn inline_size(_context: fidl::encoding::Context) -> usize {
1155            4
1156        }
1157    }
1158
1159    impl fidl::encoding::ValueTypeMarker for KeyMgmtMask {
1160        type Borrowed<'a> = Self;
1161        #[inline(always)]
1162        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1163            *value
1164        }
1165    }
1166
1167    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for KeyMgmtMask {
1168        #[inline]
1169        unsafe fn encode(
1170            self,
1171            encoder: &mut fidl::encoding::Encoder<'_, D>,
1172            offset: usize,
1173            _depth: fidl::encoding::Depth,
1174        ) -> fidl::Result<()> {
1175            encoder.debug_check_bounds::<Self>(offset);
1176            encoder.write_num(self.bits(), offset);
1177            Ok(())
1178        }
1179    }
1180
1181    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for KeyMgmtMask {
1182        #[inline(always)]
1183        fn new_empty() -> Self {
1184            Self::empty()
1185        }
1186
1187        #[inline]
1188        unsafe fn decode(
1189            &mut self,
1190            decoder: &mut fidl::encoding::Decoder<'_, D>,
1191            offset: usize,
1192            _depth: fidl::encoding::Depth,
1193        ) -> fidl::Result<()> {
1194            decoder.debug_check_bounds::<Self>(offset);
1195            let prim = decoder.read_num::<u32>(offset);
1196            *self = Self::from_bits_allow_unknown(prim);
1197            Ok(())
1198        }
1199    }
1200    unsafe impl fidl::encoding::TypeMarker for BtCoexistenceMode {
1201        type Owned = Self;
1202
1203        #[inline(always)]
1204        fn inline_align(_context: fidl::encoding::Context) -> usize {
1205            std::mem::align_of::<u32>()
1206        }
1207
1208        #[inline(always)]
1209        fn inline_size(_context: fidl::encoding::Context) -> usize {
1210            std::mem::size_of::<u32>()
1211        }
1212
1213        #[inline(always)]
1214        fn encode_is_copy() -> bool {
1215            false
1216        }
1217
1218        #[inline(always)]
1219        fn decode_is_copy() -> bool {
1220            false
1221        }
1222    }
1223
1224    impl fidl::encoding::ValueTypeMarker for BtCoexistenceMode {
1225        type Borrowed<'a> = Self;
1226        #[inline(always)]
1227        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1228            *value
1229        }
1230    }
1231
1232    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1233        for BtCoexistenceMode
1234    {
1235        #[inline]
1236        unsafe fn encode(
1237            self,
1238            encoder: &mut fidl::encoding::Encoder<'_, D>,
1239            offset: usize,
1240            _depth: fidl::encoding::Depth,
1241        ) -> fidl::Result<()> {
1242            encoder.debug_check_bounds::<Self>(offset);
1243            encoder.write_num(self.into_primitive(), offset);
1244            Ok(())
1245        }
1246    }
1247
1248    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BtCoexistenceMode {
1249        #[inline(always)]
1250        fn new_empty() -> Self {
1251            Self::unknown()
1252        }
1253
1254        #[inline]
1255        unsafe fn decode(
1256            &mut self,
1257            decoder: &mut fidl::encoding::Decoder<'_, D>,
1258            offset: usize,
1259            _depth: fidl::encoding::Depth,
1260        ) -> fidl::Result<()> {
1261            decoder.debug_check_bounds::<Self>(offset);
1262            let prim = decoder.read_num::<u32>(offset);
1263
1264            *self = Self::from_primitive_allow_unknown(prim);
1265            Ok(())
1266        }
1267    }
1268    unsafe impl fidl::encoding::TypeMarker for IfaceConcurrencyType {
1269        type Owned = Self;
1270
1271        #[inline(always)]
1272        fn inline_align(_context: fidl::encoding::Context) -> usize {
1273            std::mem::align_of::<u32>()
1274        }
1275
1276        #[inline(always)]
1277        fn inline_size(_context: fidl::encoding::Context) -> usize {
1278            std::mem::size_of::<u32>()
1279        }
1280
1281        #[inline(always)]
1282        fn encode_is_copy() -> bool {
1283            false
1284        }
1285
1286        #[inline(always)]
1287        fn decode_is_copy() -> bool {
1288            false
1289        }
1290    }
1291
1292    impl fidl::encoding::ValueTypeMarker for IfaceConcurrencyType {
1293        type Borrowed<'a> = Self;
1294        #[inline(always)]
1295        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1296            *value
1297        }
1298    }
1299
1300    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1301        for IfaceConcurrencyType
1302    {
1303        #[inline]
1304        unsafe fn encode(
1305            self,
1306            encoder: &mut fidl::encoding::Encoder<'_, D>,
1307            offset: usize,
1308            _depth: fidl::encoding::Depth,
1309        ) -> fidl::Result<()> {
1310            encoder.debug_check_bounds::<Self>(offset);
1311            encoder.write_num(self.into_primitive(), offset);
1312            Ok(())
1313        }
1314    }
1315
1316    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IfaceConcurrencyType {
1317        #[inline(always)]
1318        fn new_empty() -> Self {
1319            Self::unknown()
1320        }
1321
1322        #[inline]
1323        unsafe fn decode(
1324            &mut self,
1325            decoder: &mut fidl::encoding::Decoder<'_, D>,
1326            offset: usize,
1327            _depth: fidl::encoding::Depth,
1328        ) -> fidl::Result<()> {
1329            decoder.debug_check_bounds::<Self>(offset);
1330            let prim = decoder.read_num::<u32>(offset);
1331
1332            *self = Self::from_primitive_allow_unknown(prim);
1333            Ok(())
1334        }
1335    }
1336    unsafe impl fidl::encoding::TypeMarker for StaIfaceCallbackState {
1337        type Owned = Self;
1338
1339        #[inline(always)]
1340        fn inline_align(_context: fidl::encoding::Context) -> usize {
1341            std::mem::align_of::<u32>()
1342        }
1343
1344        #[inline(always)]
1345        fn inline_size(_context: fidl::encoding::Context) -> usize {
1346            std::mem::size_of::<u32>()
1347        }
1348
1349        #[inline(always)]
1350        fn encode_is_copy() -> bool {
1351            false
1352        }
1353
1354        #[inline(always)]
1355        fn decode_is_copy() -> bool {
1356            false
1357        }
1358    }
1359
1360    impl fidl::encoding::ValueTypeMarker for StaIfaceCallbackState {
1361        type Borrowed<'a> = Self;
1362        #[inline(always)]
1363        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1364            *value
1365        }
1366    }
1367
1368    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1369        for StaIfaceCallbackState
1370    {
1371        #[inline]
1372        unsafe fn encode(
1373            self,
1374            encoder: &mut fidl::encoding::Encoder<'_, D>,
1375            offset: usize,
1376            _depth: fidl::encoding::Depth,
1377        ) -> fidl::Result<()> {
1378            encoder.debug_check_bounds::<Self>(offset);
1379            encoder.write_num(self.into_primitive(), offset);
1380            Ok(())
1381        }
1382    }
1383
1384    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StaIfaceCallbackState {
1385        #[inline(always)]
1386        fn new_empty() -> Self {
1387            Self::unknown()
1388        }
1389
1390        #[inline]
1391        unsafe fn decode(
1392            &mut self,
1393            decoder: &mut fidl::encoding::Decoder<'_, D>,
1394            offset: usize,
1395            _depth: fidl::encoding::Depth,
1396        ) -> fidl::Result<()> {
1397            decoder.debug_check_bounds::<Self>(offset);
1398            let prim = decoder.read_num::<u32>(offset);
1399
1400            *self = Self::from_primitive_allow_unknown(prim);
1401            Ok(())
1402        }
1403    }
1404    unsafe impl fidl::encoding::TypeMarker for WifiChipTxPowerScenario {
1405        type Owned = Self;
1406
1407        #[inline(always)]
1408        fn inline_align(_context: fidl::encoding::Context) -> usize {
1409            std::mem::align_of::<u32>()
1410        }
1411
1412        #[inline(always)]
1413        fn inline_size(_context: fidl::encoding::Context) -> usize {
1414            std::mem::size_of::<u32>()
1415        }
1416
1417        #[inline(always)]
1418        fn encode_is_copy() -> bool {
1419            false
1420        }
1421
1422        #[inline(always)]
1423        fn decode_is_copy() -> bool {
1424            false
1425        }
1426    }
1427
1428    impl fidl::encoding::ValueTypeMarker for WifiChipTxPowerScenario {
1429        type Borrowed<'a> = Self;
1430        #[inline(always)]
1431        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1432            *value
1433        }
1434    }
1435
1436    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1437        for WifiChipTxPowerScenario
1438    {
1439        #[inline]
1440        unsafe fn encode(
1441            self,
1442            encoder: &mut fidl::encoding::Encoder<'_, D>,
1443            offset: usize,
1444            _depth: fidl::encoding::Depth,
1445        ) -> fidl::Result<()> {
1446            encoder.debug_check_bounds::<Self>(offset);
1447            encoder.write_num(self.into_primitive(), offset);
1448            Ok(())
1449        }
1450    }
1451
1452    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1453        for WifiChipTxPowerScenario
1454    {
1455        #[inline(always)]
1456        fn new_empty() -> Self {
1457            Self::unknown()
1458        }
1459
1460        #[inline]
1461        unsafe fn decode(
1462            &mut self,
1463            decoder: &mut fidl::encoding::Decoder<'_, D>,
1464            offset: usize,
1465            _depth: fidl::encoding::Depth,
1466        ) -> fidl::Result<()> {
1467            decoder.debug_check_bounds::<Self>(offset);
1468            let prim = decoder.read_num::<u32>(offset);
1469
1470            *self = Self::from_primitive_allow_unknown(prim);
1471            Ok(())
1472        }
1473    }
1474    unsafe impl fidl::encoding::TypeMarker for WifiLegacyHalStatus {
1475        type Owned = Self;
1476
1477        #[inline(always)]
1478        fn inline_align(_context: fidl::encoding::Context) -> usize {
1479            std::mem::align_of::<u32>()
1480        }
1481
1482        #[inline(always)]
1483        fn inline_size(_context: fidl::encoding::Context) -> usize {
1484            std::mem::size_of::<u32>()
1485        }
1486
1487        #[inline(always)]
1488        fn encode_is_copy() -> bool {
1489            false
1490        }
1491
1492        #[inline(always)]
1493        fn decode_is_copy() -> bool {
1494            false
1495        }
1496    }
1497
1498    impl fidl::encoding::ValueTypeMarker for WifiLegacyHalStatus {
1499        type Borrowed<'a> = Self;
1500        #[inline(always)]
1501        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1502            *value
1503        }
1504    }
1505
1506    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1507        for WifiLegacyHalStatus
1508    {
1509        #[inline]
1510        unsafe fn encode(
1511            self,
1512            encoder: &mut fidl::encoding::Encoder<'_, D>,
1513            offset: usize,
1514            _depth: fidl::encoding::Depth,
1515        ) -> fidl::Result<()> {
1516            encoder.debug_check_bounds::<Self>(offset);
1517            encoder.write_num(self.into_primitive(), offset);
1518            Ok(())
1519        }
1520    }
1521
1522    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WifiLegacyHalStatus {
1523        #[inline(always)]
1524        fn new_empty() -> Self {
1525            Self::unknown()
1526        }
1527
1528        #[inline]
1529        unsafe fn decode(
1530            &mut self,
1531            decoder: &mut fidl::encoding::Decoder<'_, D>,
1532            offset: usize,
1533            _depth: fidl::encoding::Depth,
1534        ) -> fidl::Result<()> {
1535            decoder.debug_check_bounds::<Self>(offset);
1536            let prim = decoder.read_num::<u32>(offset);
1537
1538            *self = Self::from_primitive_allow_unknown(prim);
1539            Ok(())
1540        }
1541    }
1542    unsafe impl fidl::encoding::TypeMarker for WifiLegacyHalTxPowerScenario {
1543        type Owned = Self;
1544
1545        #[inline(always)]
1546        fn inline_align(_context: fidl::encoding::Context) -> usize {
1547            std::mem::align_of::<i32>()
1548        }
1549
1550        #[inline(always)]
1551        fn inline_size(_context: fidl::encoding::Context) -> usize {
1552            std::mem::size_of::<i32>()
1553        }
1554
1555        #[inline(always)]
1556        fn encode_is_copy() -> bool {
1557            false
1558        }
1559
1560        #[inline(always)]
1561        fn decode_is_copy() -> bool {
1562            false
1563        }
1564    }
1565
1566    impl fidl::encoding::ValueTypeMarker for WifiLegacyHalTxPowerScenario {
1567        type Borrowed<'a> = Self;
1568        #[inline(always)]
1569        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1570            *value
1571        }
1572    }
1573
1574    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1575        for WifiLegacyHalTxPowerScenario
1576    {
1577        #[inline]
1578        unsafe fn encode(
1579            self,
1580            encoder: &mut fidl::encoding::Encoder<'_, D>,
1581            offset: usize,
1582            _depth: fidl::encoding::Depth,
1583        ) -> fidl::Result<()> {
1584            encoder.debug_check_bounds::<Self>(offset);
1585            encoder.write_num(self.into_primitive(), offset);
1586            Ok(())
1587        }
1588    }
1589
1590    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1591        for WifiLegacyHalTxPowerScenario
1592    {
1593        #[inline(always)]
1594        fn new_empty() -> Self {
1595            Self::unknown()
1596        }
1597
1598        #[inline]
1599        unsafe fn decode(
1600            &mut self,
1601            decoder: &mut fidl::encoding::Decoder<'_, D>,
1602            offset: usize,
1603            _depth: fidl::encoding::Depth,
1604        ) -> fidl::Result<()> {
1605            decoder.debug_check_bounds::<Self>(offset);
1606            let prim = decoder.read_num::<i32>(offset);
1607
1608            *self = Self::from_primitive_allow_unknown(prim);
1609            Ok(())
1610        }
1611    }
1612    unsafe impl fidl::encoding::TypeMarker for WlanixError {
1613        type Owned = Self;
1614
1615        #[inline(always)]
1616        fn inline_align(_context: fidl::encoding::Context) -> usize {
1617            std::mem::align_of::<u32>()
1618        }
1619
1620        #[inline(always)]
1621        fn inline_size(_context: fidl::encoding::Context) -> usize {
1622            std::mem::size_of::<u32>()
1623        }
1624
1625        #[inline(always)]
1626        fn encode_is_copy() -> bool {
1627            false
1628        }
1629
1630        #[inline(always)]
1631        fn decode_is_copy() -> bool {
1632            false
1633        }
1634    }
1635
1636    impl fidl::encoding::ValueTypeMarker for WlanixError {
1637        type Borrowed<'a> = Self;
1638        #[inline(always)]
1639        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1640            *value
1641        }
1642    }
1643
1644    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanixError {
1645        #[inline]
1646        unsafe fn encode(
1647            self,
1648            encoder: &mut fidl::encoding::Encoder<'_, D>,
1649            offset: usize,
1650            _depth: fidl::encoding::Depth,
1651        ) -> fidl::Result<()> {
1652            encoder.debug_check_bounds::<Self>(offset);
1653            encoder.write_num(self.into_primitive(), offset);
1654            Ok(())
1655        }
1656    }
1657
1658    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanixError {
1659        #[inline(always)]
1660        fn new_empty() -> Self {
1661            Self::unknown()
1662        }
1663
1664        #[inline]
1665        unsafe fn decode(
1666            &mut self,
1667            decoder: &mut fidl::encoding::Decoder<'_, D>,
1668            offset: usize,
1669            _depth: fidl::encoding::Depth,
1670        ) -> fidl::Result<()> {
1671            decoder.debug_check_bounds::<Self>(offset);
1672            let prim = decoder.read_num::<u32>(offset);
1673
1674            *self = Self::from_primitive_allow_unknown(prim);
1675            Ok(())
1676        }
1677    }
1678
1679    impl fidl::encoding::ValueTypeMarker for Ack {
1680        type Borrowed<'a> = &'a Self;
1681        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1682            value
1683        }
1684    }
1685
1686    unsafe impl fidl::encoding::TypeMarker for Ack {
1687        type Owned = Self;
1688
1689        #[inline(always)]
1690        fn inline_align(_context: fidl::encoding::Context) -> usize {
1691            1
1692        }
1693
1694        #[inline(always)]
1695        fn inline_size(_context: fidl::encoding::Context) -> usize {
1696            1
1697        }
1698    }
1699
1700    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Ack, D> for &Ack {
1701        #[inline]
1702        unsafe fn encode(
1703            self,
1704            encoder: &mut fidl::encoding::Encoder<'_, D>,
1705            offset: usize,
1706            _depth: fidl::encoding::Depth,
1707        ) -> fidl::Result<()> {
1708            encoder.debug_check_bounds::<Ack>(offset);
1709            encoder.write_num(0u8, offset);
1710            Ok(())
1711        }
1712    }
1713
1714    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Ack {
1715        #[inline(always)]
1716        fn new_empty() -> Self {
1717            Self
1718        }
1719
1720        #[inline]
1721        unsafe fn decode(
1722            &mut self,
1723            decoder: &mut fidl::encoding::Decoder<'_, D>,
1724            offset: usize,
1725            _depth: fidl::encoding::Depth,
1726        ) -> fidl::Result<()> {
1727            decoder.debug_check_bounds::<Self>(offset);
1728            match decoder.read_num::<u8>(offset) {
1729                0 => Ok(()),
1730                _ => Err(fidl::Error::Invalid),
1731            }
1732        }
1733    }
1734
1735    impl fidl::encoding::ValueTypeMarker for Done {
1736        type Borrowed<'a> = &'a Self;
1737        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1738            value
1739        }
1740    }
1741
1742    unsafe impl fidl::encoding::TypeMarker for Done {
1743        type Owned = Self;
1744
1745        #[inline(always)]
1746        fn inline_align(_context: fidl::encoding::Context) -> usize {
1747            1
1748        }
1749
1750        #[inline(always)]
1751        fn inline_size(_context: fidl::encoding::Context) -> usize {
1752            1
1753        }
1754    }
1755
1756    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Done, D> for &Done {
1757        #[inline]
1758        unsafe fn encode(
1759            self,
1760            encoder: &mut fidl::encoding::Encoder<'_, D>,
1761            offset: usize,
1762            _depth: fidl::encoding::Depth,
1763        ) -> fidl::Result<()> {
1764            encoder.debug_check_bounds::<Done>(offset);
1765            encoder.write_num(0u8, offset);
1766            Ok(())
1767        }
1768    }
1769
1770    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Done {
1771        #[inline(always)]
1772        fn new_empty() -> Self {
1773            Self
1774        }
1775
1776        #[inline]
1777        unsafe fn decode(
1778            &mut self,
1779            decoder: &mut fidl::encoding::Decoder<'_, D>,
1780            offset: usize,
1781            _depth: fidl::encoding::Depth,
1782        ) -> fidl::Result<()> {
1783            decoder.debug_check_bounds::<Self>(offset);
1784            match decoder.read_num::<u8>(offset) {
1785                0 => Ok(()),
1786                _ => Err(fidl::Error::Invalid),
1787            }
1788        }
1789    }
1790
1791    impl fidl::encoding::ValueTypeMarker for Error {
1792        type Borrowed<'a> = &'a Self;
1793        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1794            value
1795        }
1796    }
1797
1798    unsafe impl fidl::encoding::TypeMarker for Error {
1799        type Owned = Self;
1800
1801        #[inline(always)]
1802        fn inline_align(_context: fidl::encoding::Context) -> usize {
1803            4
1804        }
1805
1806        #[inline(always)]
1807        fn inline_size(_context: fidl::encoding::Context) -> usize {
1808            4
1809        }
1810        #[inline(always)]
1811        fn encode_is_copy() -> bool {
1812            true
1813        }
1814
1815        #[inline(always)]
1816        fn decode_is_copy() -> bool {
1817            true
1818        }
1819    }
1820
1821    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Error, D> for &Error {
1822        #[inline]
1823        unsafe fn encode(
1824            self,
1825            encoder: &mut fidl::encoding::Encoder<'_, D>,
1826            offset: usize,
1827            _depth: fidl::encoding::Depth,
1828        ) -> fidl::Result<()> {
1829            encoder.debug_check_bounds::<Error>(offset);
1830            unsafe {
1831                // Copy the object into the buffer.
1832                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1833                (buf_ptr as *mut Error).write_unaligned((self as *const Error).read());
1834                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
1835                // done second because the memcpy will write garbage to these bytes.
1836            }
1837            Ok(())
1838        }
1839    }
1840    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
1841        fidl::encoding::Encode<Error, D> for (T0,)
1842    {
1843        #[inline]
1844        unsafe fn encode(
1845            self,
1846            encoder: &mut fidl::encoding::Encoder<'_, D>,
1847            offset: usize,
1848            depth: fidl::encoding::Depth,
1849        ) -> fidl::Result<()> {
1850            encoder.debug_check_bounds::<Error>(offset);
1851            // Zero out padding regions. There's no need to apply masks
1852            // because the unmasked parts will be overwritten by fields.
1853            // Write the fields.
1854            self.0.encode(encoder, offset + 0, depth)?;
1855            Ok(())
1856        }
1857    }
1858
1859    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Error {
1860        #[inline(always)]
1861        fn new_empty() -> Self {
1862            Self { error_code: fidl::new_empty!(i32, D) }
1863        }
1864
1865        #[inline]
1866        unsafe fn decode(
1867            &mut self,
1868            decoder: &mut fidl::encoding::Decoder<'_, D>,
1869            offset: usize,
1870            _depth: fidl::encoding::Depth,
1871        ) -> fidl::Result<()> {
1872            decoder.debug_check_bounds::<Self>(offset);
1873            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1874            // Verify that padding bytes are zero.
1875            // Copy from the buffer into the object.
1876            unsafe {
1877                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1878            }
1879            Ok(())
1880        }
1881    }
1882
1883    impl fidl::encoding::ValueTypeMarker for Message {
1884        type Borrowed<'a> = &'a Self;
1885        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1886            value
1887        }
1888    }
1889
1890    unsafe impl fidl::encoding::TypeMarker for Message {
1891        type Owned = Self;
1892
1893        #[inline(always)]
1894        fn inline_align(_context: fidl::encoding::Context) -> usize {
1895            8
1896        }
1897
1898        #[inline(always)]
1899        fn inline_size(_context: fidl::encoding::Context) -> usize {
1900            16
1901        }
1902    }
1903
1904    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Message, D> for &Message {
1905        #[inline]
1906        unsafe fn encode(
1907            self,
1908            encoder: &mut fidl::encoding::Encoder<'_, D>,
1909            offset: usize,
1910            _depth: fidl::encoding::Depth,
1911        ) -> fidl::Result<()> {
1912            encoder.debug_check_bounds::<Message>(offset);
1913            // Delegate to tuple encoding.
1914            fidl::encoding::Encode::<Message, D>::encode(
1915                (<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(
1916                    &self.payload,
1917                ),),
1918                encoder,
1919                offset,
1920                _depth,
1921            )
1922        }
1923    }
1924    unsafe impl<
1925        D: fidl::encoding::ResourceDialect,
1926        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
1927    > fidl::encoding::Encode<Message, D> for (T0,)
1928    {
1929        #[inline]
1930        unsafe fn encode(
1931            self,
1932            encoder: &mut fidl::encoding::Encoder<'_, D>,
1933            offset: usize,
1934            depth: fidl::encoding::Depth,
1935        ) -> fidl::Result<()> {
1936            encoder.debug_check_bounds::<Message>(offset);
1937            // Zero out padding regions. There's no need to apply masks
1938            // because the unmasked parts will be overwritten by fields.
1939            // Write the fields.
1940            self.0.encode(encoder, offset + 0, depth)?;
1941            Ok(())
1942        }
1943    }
1944
1945    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Message {
1946        #[inline(always)]
1947        fn new_empty() -> Self {
1948            Self { payload: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D) }
1949        }
1950
1951        #[inline]
1952        unsafe fn decode(
1953            &mut self,
1954            decoder: &mut fidl::encoding::Decoder<'_, D>,
1955            offset: usize,
1956            _depth: fidl::encoding::Depth,
1957        ) -> fidl::Result<()> {
1958            decoder.debug_check_bounds::<Self>(offset);
1959            // Verify that padding bytes are zero.
1960            fidl::decode!(
1961                fidl::encoding::UnboundedVector<u8>,
1962                D,
1963                &mut self.payload,
1964                decoder,
1965                offset + 0,
1966                _depth
1967            )?;
1968            Ok(())
1969        }
1970    }
1971
1972    impl fidl::encoding::ValueTypeMarker for Nl80211MessageArray {
1973        type Borrowed<'a> = &'a Self;
1974        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1975            value
1976        }
1977    }
1978
1979    unsafe impl fidl::encoding::TypeMarker for Nl80211MessageArray {
1980        type Owned = Self;
1981
1982        #[inline(always)]
1983        fn inline_align(_context: fidl::encoding::Context) -> usize {
1984            8
1985        }
1986
1987        #[inline(always)]
1988        fn inline_size(_context: fidl::encoding::Context) -> usize {
1989            16
1990        }
1991    }
1992
1993    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nl80211MessageArray, D>
1994        for &Nl80211MessageArray
1995    {
1996        #[inline]
1997        unsafe fn encode(
1998            self,
1999            encoder: &mut fidl::encoding::Encoder<'_, D>,
2000            offset: usize,
2001            _depth: fidl::encoding::Depth,
2002        ) -> fidl::Result<()> {
2003            encoder.debug_check_bounds::<Nl80211MessageArray>(offset);
2004            // Delegate to tuple encoding.
2005            fidl::encoding::Encode::<Nl80211MessageArray, D>::encode(
2006                (
2007                    <fidl::encoding::UnboundedVector<Nl80211Message> as fidl::encoding::ValueTypeMarker>::borrow(&self.messages),
2008                ),
2009                encoder, offset, _depth
2010            )
2011        }
2012    }
2013    unsafe impl<
2014        D: fidl::encoding::ResourceDialect,
2015        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Nl80211Message>, D>,
2016    > fidl::encoding::Encode<Nl80211MessageArray, D> for (T0,)
2017    {
2018        #[inline]
2019        unsafe fn encode(
2020            self,
2021            encoder: &mut fidl::encoding::Encoder<'_, D>,
2022            offset: usize,
2023            depth: fidl::encoding::Depth,
2024        ) -> fidl::Result<()> {
2025            encoder.debug_check_bounds::<Nl80211MessageArray>(offset);
2026            // Zero out padding regions. There's no need to apply masks
2027            // because the unmasked parts will be overwritten by fields.
2028            // Write the fields.
2029            self.0.encode(encoder, offset + 0, depth)?;
2030            Ok(())
2031        }
2032    }
2033
2034    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nl80211MessageArray {
2035        #[inline(always)]
2036        fn new_empty() -> Self {
2037            Self { messages: fidl::new_empty!(fidl::encoding::UnboundedVector<Nl80211Message>, D) }
2038        }
2039
2040        #[inline]
2041        unsafe fn decode(
2042            &mut self,
2043            decoder: &mut fidl::encoding::Decoder<'_, D>,
2044            offset: usize,
2045            _depth: fidl::encoding::Depth,
2046        ) -> fidl::Result<()> {
2047            decoder.debug_check_bounds::<Self>(offset);
2048            // Verify that padding bytes are zero.
2049            fidl::decode!(
2050                fidl::encoding::UnboundedVector<Nl80211Message>,
2051                D,
2052                &mut self.messages,
2053                decoder,
2054                offset + 0,
2055                _depth
2056            )?;
2057            Ok(())
2058        }
2059    }
2060
2061    impl fidl::encoding::ValueTypeMarker for SupplicantStaIfaceGetFactoryMacAddressResponse {
2062        type Borrowed<'a> = &'a Self;
2063        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2064            value
2065        }
2066    }
2067
2068    unsafe impl fidl::encoding::TypeMarker for SupplicantStaIfaceGetFactoryMacAddressResponse {
2069        type Owned = Self;
2070
2071        #[inline(always)]
2072        fn inline_align(_context: fidl::encoding::Context) -> usize {
2073            1
2074        }
2075
2076        #[inline(always)]
2077        fn inline_size(_context: fidl::encoding::Context) -> usize {
2078            6
2079        }
2080        #[inline(always)]
2081        fn encode_is_copy() -> bool {
2082            true
2083        }
2084
2085        #[inline(always)]
2086        fn decode_is_copy() -> bool {
2087            true
2088        }
2089    }
2090
2091    unsafe impl<D: fidl::encoding::ResourceDialect>
2092        fidl::encoding::Encode<SupplicantStaIfaceGetFactoryMacAddressResponse, D>
2093        for &SupplicantStaIfaceGetFactoryMacAddressResponse
2094    {
2095        #[inline]
2096        unsafe fn encode(
2097            self,
2098            encoder: &mut fidl::encoding::Encoder<'_, D>,
2099            offset: usize,
2100            _depth: fidl::encoding::Depth,
2101        ) -> fidl::Result<()> {
2102            encoder.debug_check_bounds::<SupplicantStaIfaceGetFactoryMacAddressResponse>(offset);
2103            unsafe {
2104                // Copy the object into the buffer.
2105                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2106                (buf_ptr as *mut SupplicantStaIfaceGetFactoryMacAddressResponse).write_unaligned(
2107                    (self as *const SupplicantStaIfaceGetFactoryMacAddressResponse).read(),
2108                );
2109                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
2110                // done second because the memcpy will write garbage to these bytes.
2111            }
2112            Ok(())
2113        }
2114    }
2115    unsafe impl<
2116        D: fidl::encoding::ResourceDialect,
2117        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2118    > fidl::encoding::Encode<SupplicantStaIfaceGetFactoryMacAddressResponse, D> for (T0,)
2119    {
2120        #[inline]
2121        unsafe fn encode(
2122            self,
2123            encoder: &mut fidl::encoding::Encoder<'_, D>,
2124            offset: usize,
2125            depth: fidl::encoding::Depth,
2126        ) -> fidl::Result<()> {
2127            encoder.debug_check_bounds::<SupplicantStaIfaceGetFactoryMacAddressResponse>(offset);
2128            // Zero out padding regions. There's no need to apply masks
2129            // because the unmasked parts will be overwritten by fields.
2130            // Write the fields.
2131            self.0.encode(encoder, offset + 0, depth)?;
2132            Ok(())
2133        }
2134    }
2135
2136    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2137        for SupplicantStaIfaceGetFactoryMacAddressResponse
2138    {
2139        #[inline(always)]
2140        fn new_empty() -> Self {
2141            Self { mac_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D) }
2142        }
2143
2144        #[inline]
2145        unsafe fn decode(
2146            &mut self,
2147            decoder: &mut fidl::encoding::Decoder<'_, D>,
2148            offset: usize,
2149            _depth: fidl::encoding::Depth,
2150        ) -> fidl::Result<()> {
2151            decoder.debug_check_bounds::<Self>(offset);
2152            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2153            // Verify that padding bytes are zero.
2154            // Copy from the buffer into the object.
2155            unsafe {
2156                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 6);
2157            }
2158            Ok(())
2159        }
2160    }
2161
2162    impl fidl::encoding::ValueTypeMarker for WifiChipSelectTxPowerScenarioRequest {
2163        type Borrowed<'a> = &'a Self;
2164        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2165            value
2166        }
2167    }
2168
2169    unsafe impl fidl::encoding::TypeMarker for WifiChipSelectTxPowerScenarioRequest {
2170        type Owned = Self;
2171
2172        #[inline(always)]
2173        fn inline_align(_context: fidl::encoding::Context) -> usize {
2174            4
2175        }
2176
2177        #[inline(always)]
2178        fn inline_size(_context: fidl::encoding::Context) -> usize {
2179            4
2180        }
2181    }
2182
2183    unsafe impl<D: fidl::encoding::ResourceDialect>
2184        fidl::encoding::Encode<WifiChipSelectTxPowerScenarioRequest, D>
2185        for &WifiChipSelectTxPowerScenarioRequest
2186    {
2187        #[inline]
2188        unsafe fn encode(
2189            self,
2190            encoder: &mut fidl::encoding::Encoder<'_, D>,
2191            offset: usize,
2192            _depth: fidl::encoding::Depth,
2193        ) -> fidl::Result<()> {
2194            encoder.debug_check_bounds::<WifiChipSelectTxPowerScenarioRequest>(offset);
2195            // Delegate to tuple encoding.
2196            fidl::encoding::Encode::<WifiChipSelectTxPowerScenarioRequest, D>::encode(
2197                (<WifiChipTxPowerScenario as fidl::encoding::ValueTypeMarker>::borrow(
2198                    &self.scenario,
2199                ),),
2200                encoder,
2201                offset,
2202                _depth,
2203            )
2204        }
2205    }
2206    unsafe impl<
2207        D: fidl::encoding::ResourceDialect,
2208        T0: fidl::encoding::Encode<WifiChipTxPowerScenario, D>,
2209    > fidl::encoding::Encode<WifiChipSelectTxPowerScenarioRequest, D> for (T0,)
2210    {
2211        #[inline]
2212        unsafe fn encode(
2213            self,
2214            encoder: &mut fidl::encoding::Encoder<'_, D>,
2215            offset: usize,
2216            depth: fidl::encoding::Depth,
2217        ) -> fidl::Result<()> {
2218            encoder.debug_check_bounds::<WifiChipSelectTxPowerScenarioRequest>(offset);
2219            // Zero out padding regions. There's no need to apply masks
2220            // because the unmasked parts will be overwritten by fields.
2221            // Write the fields.
2222            self.0.encode(encoder, offset + 0, depth)?;
2223            Ok(())
2224        }
2225    }
2226
2227    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2228        for WifiChipSelectTxPowerScenarioRequest
2229    {
2230        #[inline(always)]
2231        fn new_empty() -> Self {
2232            Self { scenario: fidl::new_empty!(WifiChipTxPowerScenario, D) }
2233        }
2234
2235        #[inline]
2236        unsafe fn decode(
2237            &mut self,
2238            decoder: &mut fidl::encoding::Decoder<'_, D>,
2239            offset: usize,
2240            _depth: fidl::encoding::Depth,
2241        ) -> fidl::Result<()> {
2242            decoder.debug_check_bounds::<Self>(offset);
2243            // Verify that padding bytes are zero.
2244            fidl::decode!(
2245                WifiChipTxPowerScenario,
2246                D,
2247                &mut self.scenario,
2248                decoder,
2249                offset + 0,
2250                _depth
2251            )?;
2252            Ok(())
2253        }
2254    }
2255
2256    impl ChipConcurrencyCombination {
2257        #[inline(always)]
2258        fn max_ordinal_present(&self) -> u64 {
2259            if let Some(_) = self.limits {
2260                return 1;
2261            }
2262            0
2263        }
2264    }
2265
2266    impl fidl::encoding::ValueTypeMarker for ChipConcurrencyCombination {
2267        type Borrowed<'a> = &'a Self;
2268        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2269            value
2270        }
2271    }
2272
2273    unsafe impl fidl::encoding::TypeMarker for ChipConcurrencyCombination {
2274        type Owned = Self;
2275
2276        #[inline(always)]
2277        fn inline_align(_context: fidl::encoding::Context) -> usize {
2278            8
2279        }
2280
2281        #[inline(always)]
2282        fn inline_size(_context: fidl::encoding::Context) -> usize {
2283            16
2284        }
2285    }
2286
2287    unsafe impl<D: fidl::encoding::ResourceDialect>
2288        fidl::encoding::Encode<ChipConcurrencyCombination, D> for &ChipConcurrencyCombination
2289    {
2290        unsafe fn encode(
2291            self,
2292            encoder: &mut fidl::encoding::Encoder<'_, D>,
2293            offset: usize,
2294            mut depth: fidl::encoding::Depth,
2295        ) -> fidl::Result<()> {
2296            encoder.debug_check_bounds::<ChipConcurrencyCombination>(offset);
2297            // Vector header
2298            let max_ordinal: u64 = self.max_ordinal_present();
2299            encoder.write_num(max_ordinal, offset);
2300            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2301            // Calling encoder.out_of_line_offset(0) is not allowed.
2302            if max_ordinal == 0 {
2303                return Ok(());
2304            }
2305            depth.increment()?;
2306            let envelope_size = 8;
2307            let bytes_len = max_ordinal as usize * envelope_size;
2308            #[allow(unused_variables)]
2309            let offset = encoder.out_of_line_offset(bytes_len);
2310            let mut _prev_end_offset: usize = 0;
2311            if 1 > max_ordinal {
2312                return Ok(());
2313            }
2314
2315            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2316            // are envelope_size bytes.
2317            let cur_offset: usize = (1 - 1) * envelope_size;
2318
2319            // Zero reserved fields.
2320            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2321
2322            // Safety:
2323            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2324            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2325            //   envelope_size bytes, there is always sufficient room.
2326            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ChipConcurrencyCombinationLimit>, D>(
2327            self.limits.as_ref().map(<fidl::encoding::UnboundedVector<ChipConcurrencyCombinationLimit> as fidl::encoding::ValueTypeMarker>::borrow),
2328            encoder, offset + cur_offset, depth
2329        )?;
2330
2331            _prev_end_offset = cur_offset + envelope_size;
2332
2333            Ok(())
2334        }
2335    }
2336
2337    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2338        for ChipConcurrencyCombination
2339    {
2340        #[inline(always)]
2341        fn new_empty() -> Self {
2342            Self::default()
2343        }
2344
2345        unsafe fn decode(
2346            &mut self,
2347            decoder: &mut fidl::encoding::Decoder<'_, D>,
2348            offset: usize,
2349            mut depth: fidl::encoding::Depth,
2350        ) -> fidl::Result<()> {
2351            decoder.debug_check_bounds::<Self>(offset);
2352            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2353                None => return Err(fidl::Error::NotNullable),
2354                Some(len) => len,
2355            };
2356            // Calling decoder.out_of_line_offset(0) is not allowed.
2357            if len == 0 {
2358                return Ok(());
2359            };
2360            depth.increment()?;
2361            let envelope_size = 8;
2362            let bytes_len = len * envelope_size;
2363            let offset = decoder.out_of_line_offset(bytes_len)?;
2364            // Decode the envelope for each type.
2365            let mut _next_ordinal_to_read = 0;
2366            let mut next_offset = offset;
2367            let end_offset = offset + bytes_len;
2368            _next_ordinal_to_read += 1;
2369            if next_offset >= end_offset {
2370                return Ok(());
2371            }
2372
2373            // Decode unknown envelopes for gaps in ordinals.
2374            while _next_ordinal_to_read < 1 {
2375                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2376                _next_ordinal_to_read += 1;
2377                next_offset += envelope_size;
2378            }
2379
2380            let next_out_of_line = decoder.next_out_of_line();
2381            let handles_before = decoder.remaining_handles();
2382            if let Some((inlined, num_bytes, num_handles)) =
2383                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2384            {
2385                let member_inline_size = <fidl::encoding::UnboundedVector<
2386                    ChipConcurrencyCombinationLimit,
2387                > as fidl::encoding::TypeMarker>::inline_size(
2388                    decoder.context
2389                );
2390                if inlined != (member_inline_size <= 4) {
2391                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2392                }
2393                let inner_offset;
2394                let mut inner_depth = depth.clone();
2395                if inlined {
2396                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2397                    inner_offset = next_offset;
2398                } else {
2399                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2400                    inner_depth.increment()?;
2401                }
2402                let val_ref = self.limits.get_or_insert_with(|| {
2403                    fidl::new_empty!(
2404                        fidl::encoding::UnboundedVector<ChipConcurrencyCombinationLimit>,
2405                        D
2406                    )
2407                });
2408                fidl::decode!(
2409                    fidl::encoding::UnboundedVector<ChipConcurrencyCombinationLimit>,
2410                    D,
2411                    val_ref,
2412                    decoder,
2413                    inner_offset,
2414                    inner_depth
2415                )?;
2416                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2417                {
2418                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2419                }
2420                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2421                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2422                }
2423            }
2424
2425            next_offset += envelope_size;
2426
2427            // Decode the remaining unknown envelopes.
2428            while next_offset < end_offset {
2429                _next_ordinal_to_read += 1;
2430                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2431                next_offset += envelope_size;
2432            }
2433
2434            Ok(())
2435        }
2436    }
2437
2438    impl ChipConcurrencyCombinationLimit {
2439        #[inline(always)]
2440        fn max_ordinal_present(&self) -> u64 {
2441            if let Some(_) = self.max_ifaces {
2442                return 2;
2443            }
2444            if let Some(_) = self.types {
2445                return 1;
2446            }
2447            0
2448        }
2449    }
2450
2451    impl fidl::encoding::ValueTypeMarker for ChipConcurrencyCombinationLimit {
2452        type Borrowed<'a> = &'a Self;
2453        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2454            value
2455        }
2456    }
2457
2458    unsafe impl fidl::encoding::TypeMarker for ChipConcurrencyCombinationLimit {
2459        type Owned = Self;
2460
2461        #[inline(always)]
2462        fn inline_align(_context: fidl::encoding::Context) -> usize {
2463            8
2464        }
2465
2466        #[inline(always)]
2467        fn inline_size(_context: fidl::encoding::Context) -> usize {
2468            16
2469        }
2470    }
2471
2472    unsafe impl<D: fidl::encoding::ResourceDialect>
2473        fidl::encoding::Encode<ChipConcurrencyCombinationLimit, D>
2474        for &ChipConcurrencyCombinationLimit
2475    {
2476        unsafe fn encode(
2477            self,
2478            encoder: &mut fidl::encoding::Encoder<'_, D>,
2479            offset: usize,
2480            mut depth: fidl::encoding::Depth,
2481        ) -> fidl::Result<()> {
2482            encoder.debug_check_bounds::<ChipConcurrencyCombinationLimit>(offset);
2483            // Vector header
2484            let max_ordinal: u64 = self.max_ordinal_present();
2485            encoder.write_num(max_ordinal, offset);
2486            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2487            // Calling encoder.out_of_line_offset(0) is not allowed.
2488            if max_ordinal == 0 {
2489                return Ok(());
2490            }
2491            depth.increment()?;
2492            let envelope_size = 8;
2493            let bytes_len = max_ordinal as usize * envelope_size;
2494            #[allow(unused_variables)]
2495            let offset = encoder.out_of_line_offset(bytes_len);
2496            let mut _prev_end_offset: usize = 0;
2497            if 1 > max_ordinal {
2498                return Ok(());
2499            }
2500
2501            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2502            // are envelope_size bytes.
2503            let cur_offset: usize = (1 - 1) * envelope_size;
2504
2505            // Zero reserved fields.
2506            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2507
2508            // Safety:
2509            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2510            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2511            //   envelope_size bytes, there is always sufficient room.
2512            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<IfaceConcurrencyType>, D>(
2513            self.types.as_ref().map(<fidl::encoding::UnboundedVector<IfaceConcurrencyType> as fidl::encoding::ValueTypeMarker>::borrow),
2514            encoder, offset + cur_offset, depth
2515        )?;
2516
2517            _prev_end_offset = cur_offset + envelope_size;
2518            if 2 > max_ordinal {
2519                return Ok(());
2520            }
2521
2522            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2523            // are envelope_size bytes.
2524            let cur_offset: usize = (2 - 1) * envelope_size;
2525
2526            // Zero reserved fields.
2527            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2528
2529            // Safety:
2530            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2531            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2532            //   envelope_size bytes, there is always sufficient room.
2533            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2534                self.max_ifaces.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2535                encoder,
2536                offset + cur_offset,
2537                depth,
2538            )?;
2539
2540            _prev_end_offset = cur_offset + envelope_size;
2541
2542            Ok(())
2543        }
2544    }
2545
2546    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2547        for ChipConcurrencyCombinationLimit
2548    {
2549        #[inline(always)]
2550        fn new_empty() -> Self {
2551            Self::default()
2552        }
2553
2554        unsafe fn decode(
2555            &mut self,
2556            decoder: &mut fidl::encoding::Decoder<'_, D>,
2557            offset: usize,
2558            mut depth: fidl::encoding::Depth,
2559        ) -> fidl::Result<()> {
2560            decoder.debug_check_bounds::<Self>(offset);
2561            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2562                None => return Err(fidl::Error::NotNullable),
2563                Some(len) => len,
2564            };
2565            // Calling decoder.out_of_line_offset(0) is not allowed.
2566            if len == 0 {
2567                return Ok(());
2568            };
2569            depth.increment()?;
2570            let envelope_size = 8;
2571            let bytes_len = len * envelope_size;
2572            let offset = decoder.out_of_line_offset(bytes_len)?;
2573            // Decode the envelope for each type.
2574            let mut _next_ordinal_to_read = 0;
2575            let mut next_offset = offset;
2576            let end_offset = offset + bytes_len;
2577            _next_ordinal_to_read += 1;
2578            if next_offset >= end_offset {
2579                return Ok(());
2580            }
2581
2582            // Decode unknown envelopes for gaps in ordinals.
2583            while _next_ordinal_to_read < 1 {
2584                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2585                _next_ordinal_to_read += 1;
2586                next_offset += envelope_size;
2587            }
2588
2589            let next_out_of_line = decoder.next_out_of_line();
2590            let handles_before = decoder.remaining_handles();
2591            if let Some((inlined, num_bytes, num_handles)) =
2592                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2593            {
2594                let member_inline_size = <fidl::encoding::UnboundedVector<IfaceConcurrencyType> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2595                if inlined != (member_inline_size <= 4) {
2596                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2597                }
2598                let inner_offset;
2599                let mut inner_depth = depth.clone();
2600                if inlined {
2601                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2602                    inner_offset = next_offset;
2603                } else {
2604                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2605                    inner_depth.increment()?;
2606                }
2607                let val_ref = self.types.get_or_insert_with(|| {
2608                    fidl::new_empty!(fidl::encoding::UnboundedVector<IfaceConcurrencyType>, D)
2609                });
2610                fidl::decode!(
2611                    fidl::encoding::UnboundedVector<IfaceConcurrencyType>,
2612                    D,
2613                    val_ref,
2614                    decoder,
2615                    inner_offset,
2616                    inner_depth
2617                )?;
2618                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2619                {
2620                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2621                }
2622                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2623                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2624                }
2625            }
2626
2627            next_offset += envelope_size;
2628            _next_ordinal_to_read += 1;
2629            if next_offset >= end_offset {
2630                return Ok(());
2631            }
2632
2633            // Decode unknown envelopes for gaps in ordinals.
2634            while _next_ordinal_to_read < 2 {
2635                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2636                _next_ordinal_to_read += 1;
2637                next_offset += envelope_size;
2638            }
2639
2640            let next_out_of_line = decoder.next_out_of_line();
2641            let handles_before = decoder.remaining_handles();
2642            if let Some((inlined, num_bytes, num_handles)) =
2643                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2644            {
2645                let member_inline_size =
2646                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2647                if inlined != (member_inline_size <= 4) {
2648                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2649                }
2650                let inner_offset;
2651                let mut inner_depth = depth.clone();
2652                if inlined {
2653                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2654                    inner_offset = next_offset;
2655                } else {
2656                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2657                    inner_depth.increment()?;
2658                }
2659                let val_ref = self.max_ifaces.get_or_insert_with(|| fidl::new_empty!(u32, D));
2660                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2661                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2662                {
2663                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2664                }
2665                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2666                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2667                }
2668            }
2669
2670            next_offset += envelope_size;
2671
2672            // Decode the remaining unknown envelopes.
2673            while next_offset < end_offset {
2674                _next_ordinal_to_read += 1;
2675                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2676                next_offset += envelope_size;
2677            }
2678
2679            Ok(())
2680        }
2681    }
2682
2683    impl ChipMode {
2684        #[inline(always)]
2685        fn max_ordinal_present(&self) -> u64 {
2686            if let Some(_) = self.available_combinations {
2687                return 2;
2688            }
2689            if let Some(_) = self.id {
2690                return 1;
2691            }
2692            0
2693        }
2694    }
2695
2696    impl fidl::encoding::ValueTypeMarker for ChipMode {
2697        type Borrowed<'a> = &'a Self;
2698        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2699            value
2700        }
2701    }
2702
2703    unsafe impl fidl::encoding::TypeMarker for ChipMode {
2704        type Owned = Self;
2705
2706        #[inline(always)]
2707        fn inline_align(_context: fidl::encoding::Context) -> usize {
2708            8
2709        }
2710
2711        #[inline(always)]
2712        fn inline_size(_context: fidl::encoding::Context) -> usize {
2713            16
2714        }
2715    }
2716
2717    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChipMode, D> for &ChipMode {
2718        unsafe fn encode(
2719            self,
2720            encoder: &mut fidl::encoding::Encoder<'_, D>,
2721            offset: usize,
2722            mut depth: fidl::encoding::Depth,
2723        ) -> fidl::Result<()> {
2724            encoder.debug_check_bounds::<ChipMode>(offset);
2725            // Vector header
2726            let max_ordinal: u64 = self.max_ordinal_present();
2727            encoder.write_num(max_ordinal, offset);
2728            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2729            // Calling encoder.out_of_line_offset(0) is not allowed.
2730            if max_ordinal == 0 {
2731                return Ok(());
2732            }
2733            depth.increment()?;
2734            let envelope_size = 8;
2735            let bytes_len = max_ordinal as usize * envelope_size;
2736            #[allow(unused_variables)]
2737            let offset = encoder.out_of_line_offset(bytes_len);
2738            let mut _prev_end_offset: usize = 0;
2739            if 1 > max_ordinal {
2740                return Ok(());
2741            }
2742
2743            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2744            // are envelope_size bytes.
2745            let cur_offset: usize = (1 - 1) * envelope_size;
2746
2747            // Zero reserved fields.
2748            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2749
2750            // Safety:
2751            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2752            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2753            //   envelope_size bytes, there is always sufficient room.
2754            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2755                self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2756                encoder,
2757                offset + cur_offset,
2758                depth,
2759            )?;
2760
2761            _prev_end_offset = cur_offset + envelope_size;
2762            if 2 > max_ordinal {
2763                return Ok(());
2764            }
2765
2766            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2767            // are envelope_size bytes.
2768            let cur_offset: usize = (2 - 1) * envelope_size;
2769
2770            // Zero reserved fields.
2771            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2772
2773            // Safety:
2774            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2775            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2776            //   envelope_size bytes, there is always sufficient room.
2777            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ChipConcurrencyCombination>, D>(
2778            self.available_combinations.as_ref().map(<fidl::encoding::UnboundedVector<ChipConcurrencyCombination> as fidl::encoding::ValueTypeMarker>::borrow),
2779            encoder, offset + cur_offset, depth
2780        )?;
2781
2782            _prev_end_offset = cur_offset + envelope_size;
2783
2784            Ok(())
2785        }
2786    }
2787
2788    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChipMode {
2789        #[inline(always)]
2790        fn new_empty() -> Self {
2791            Self::default()
2792        }
2793
2794        unsafe fn decode(
2795            &mut self,
2796            decoder: &mut fidl::encoding::Decoder<'_, D>,
2797            offset: usize,
2798            mut depth: fidl::encoding::Depth,
2799        ) -> fidl::Result<()> {
2800            decoder.debug_check_bounds::<Self>(offset);
2801            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2802                None => return Err(fidl::Error::NotNullable),
2803                Some(len) => len,
2804            };
2805            // Calling decoder.out_of_line_offset(0) is not allowed.
2806            if len == 0 {
2807                return Ok(());
2808            };
2809            depth.increment()?;
2810            let envelope_size = 8;
2811            let bytes_len = len * envelope_size;
2812            let offset = decoder.out_of_line_offset(bytes_len)?;
2813            // Decode the envelope for each type.
2814            let mut _next_ordinal_to_read = 0;
2815            let mut next_offset = offset;
2816            let end_offset = offset + bytes_len;
2817            _next_ordinal_to_read += 1;
2818            if next_offset >= end_offset {
2819                return Ok(());
2820            }
2821
2822            // Decode unknown envelopes for gaps in ordinals.
2823            while _next_ordinal_to_read < 1 {
2824                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2825                _next_ordinal_to_read += 1;
2826                next_offset += envelope_size;
2827            }
2828
2829            let next_out_of_line = decoder.next_out_of_line();
2830            let handles_before = decoder.remaining_handles();
2831            if let Some((inlined, num_bytes, num_handles)) =
2832                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2833            {
2834                let member_inline_size =
2835                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2836                if inlined != (member_inline_size <= 4) {
2837                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2838                }
2839                let inner_offset;
2840                let mut inner_depth = depth.clone();
2841                if inlined {
2842                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2843                    inner_offset = next_offset;
2844                } else {
2845                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2846                    inner_depth.increment()?;
2847                }
2848                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2849                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2850                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2851                {
2852                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2853                }
2854                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2855                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2856                }
2857            }
2858
2859            next_offset += envelope_size;
2860            _next_ordinal_to_read += 1;
2861            if next_offset >= end_offset {
2862                return Ok(());
2863            }
2864
2865            // Decode unknown envelopes for gaps in ordinals.
2866            while _next_ordinal_to_read < 2 {
2867                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2868                _next_ordinal_to_read += 1;
2869                next_offset += envelope_size;
2870            }
2871
2872            let next_out_of_line = decoder.next_out_of_line();
2873            let handles_before = decoder.remaining_handles();
2874            if let Some((inlined, num_bytes, num_handles)) =
2875                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2876            {
2877                let member_inline_size = <fidl::encoding::UnboundedVector<
2878                    ChipConcurrencyCombination,
2879                > as fidl::encoding::TypeMarker>::inline_size(
2880                    decoder.context
2881                );
2882                if inlined != (member_inline_size <= 4) {
2883                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2884                }
2885                let inner_offset;
2886                let mut inner_depth = depth.clone();
2887                if inlined {
2888                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2889                    inner_offset = next_offset;
2890                } else {
2891                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2892                    inner_depth.increment()?;
2893                }
2894                let val_ref = self.available_combinations.get_or_insert_with(|| {
2895                    fidl::new_empty!(fidl::encoding::UnboundedVector<ChipConcurrencyCombination>, D)
2896                });
2897                fidl::decode!(
2898                    fidl::encoding::UnboundedVector<ChipConcurrencyCombination>,
2899                    D,
2900                    val_ref,
2901                    decoder,
2902                    inner_offset,
2903                    inner_depth
2904                )?;
2905                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2906                {
2907                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2908                }
2909                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2910                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2911                }
2912            }
2913
2914            next_offset += envelope_size;
2915
2916            // Decode the remaining unknown envelopes.
2917            while next_offset < end_offset {
2918                _next_ordinal_to_read += 1;
2919                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2920                next_offset += envelope_size;
2921            }
2922
2923            Ok(())
2924        }
2925    }
2926
2927    impl LinkLayerStats {
2928        #[inline(always)]
2929        fn max_ordinal_present(&self) -> u64 {
2930            if let Some(_) = self.rssi_dbm {
2931                return 2;
2932            }
2933            if let Some(_) = self.wme {
2934                return 1;
2935            }
2936            0
2937        }
2938    }
2939
2940    impl fidl::encoding::ValueTypeMarker for LinkLayerStats {
2941        type Borrowed<'a> = &'a Self;
2942        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2943            value
2944        }
2945    }
2946
2947    unsafe impl fidl::encoding::TypeMarker for LinkLayerStats {
2948        type Owned = Self;
2949
2950        #[inline(always)]
2951        fn inline_align(_context: fidl::encoding::Context) -> usize {
2952            8
2953        }
2954
2955        #[inline(always)]
2956        fn inline_size(_context: fidl::encoding::Context) -> usize {
2957            16
2958        }
2959    }
2960
2961    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LinkLayerStats, D>
2962        for &LinkLayerStats
2963    {
2964        unsafe fn encode(
2965            self,
2966            encoder: &mut fidl::encoding::Encoder<'_, D>,
2967            offset: usize,
2968            mut depth: fidl::encoding::Depth,
2969        ) -> fidl::Result<()> {
2970            encoder.debug_check_bounds::<LinkLayerStats>(offset);
2971            // Vector header
2972            let max_ordinal: u64 = self.max_ordinal_present();
2973            encoder.write_num(max_ordinal, offset);
2974            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2975            // Calling encoder.out_of_line_offset(0) is not allowed.
2976            if max_ordinal == 0 {
2977                return Ok(());
2978            }
2979            depth.increment()?;
2980            let envelope_size = 8;
2981            let bytes_len = max_ordinal as usize * envelope_size;
2982            #[allow(unused_variables)]
2983            let offset = encoder.out_of_line_offset(bytes_len);
2984            let mut _prev_end_offset: usize = 0;
2985            if 1 > max_ordinal {
2986                return Ok(());
2987            }
2988
2989            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2990            // are envelope_size bytes.
2991            let cur_offset: usize = (1 - 1) * envelope_size;
2992
2993            // Zero reserved fields.
2994            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2995
2996            // Safety:
2997            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2998            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2999            //   envelope_size bytes, there is always sufficient room.
3000            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_stats_common::WmePacketStats, D>(
3001            self.wme.as_ref().map(<fidl_fuchsia_wlan_stats_common::WmePacketStats as fidl::encoding::ValueTypeMarker>::borrow),
3002            encoder, offset + cur_offset, depth
3003        )?;
3004
3005            _prev_end_offset = cur_offset + envelope_size;
3006            if 2 > max_ordinal {
3007                return Ok(());
3008            }
3009
3010            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3011            // are envelope_size bytes.
3012            let cur_offset: usize = (2 - 1) * envelope_size;
3013
3014            // Zero reserved fields.
3015            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3016
3017            // Safety:
3018            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3019            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3020            //   envelope_size bytes, there is always sufficient room.
3021            fidl::encoding::encode_in_envelope_optional::<i32, D>(
3022                self.rssi_dbm.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
3023                encoder,
3024                offset + cur_offset,
3025                depth,
3026            )?;
3027
3028            _prev_end_offset = cur_offset + envelope_size;
3029
3030            Ok(())
3031        }
3032    }
3033
3034    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LinkLayerStats {
3035        #[inline(always)]
3036        fn new_empty() -> Self {
3037            Self::default()
3038        }
3039
3040        unsafe fn decode(
3041            &mut self,
3042            decoder: &mut fidl::encoding::Decoder<'_, D>,
3043            offset: usize,
3044            mut depth: fidl::encoding::Depth,
3045        ) -> fidl::Result<()> {
3046            decoder.debug_check_bounds::<Self>(offset);
3047            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3048                None => return Err(fidl::Error::NotNullable),
3049                Some(len) => len,
3050            };
3051            // Calling decoder.out_of_line_offset(0) is not allowed.
3052            if len == 0 {
3053                return Ok(());
3054            };
3055            depth.increment()?;
3056            let envelope_size = 8;
3057            let bytes_len = len * envelope_size;
3058            let offset = decoder.out_of_line_offset(bytes_len)?;
3059            // Decode the envelope for each type.
3060            let mut _next_ordinal_to_read = 0;
3061            let mut next_offset = offset;
3062            let end_offset = offset + bytes_len;
3063            _next_ordinal_to_read += 1;
3064            if next_offset >= end_offset {
3065                return Ok(());
3066            }
3067
3068            // Decode unknown envelopes for gaps in ordinals.
3069            while _next_ordinal_to_read < 1 {
3070                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3071                _next_ordinal_to_read += 1;
3072                next_offset += envelope_size;
3073            }
3074
3075            let next_out_of_line = decoder.next_out_of_line();
3076            let handles_before = decoder.remaining_handles();
3077            if let Some((inlined, num_bytes, num_handles)) =
3078                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3079            {
3080                let member_inline_size = <fidl_fuchsia_wlan_stats_common::WmePacketStats as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3081                if inlined != (member_inline_size <= 4) {
3082                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3083                }
3084                let inner_offset;
3085                let mut inner_depth = depth.clone();
3086                if inlined {
3087                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3088                    inner_offset = next_offset;
3089                } else {
3090                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3091                    inner_depth.increment()?;
3092                }
3093                let val_ref = self.wme.get_or_insert_with(|| {
3094                    fidl::new_empty!(fidl_fuchsia_wlan_stats_common::WmePacketStats, D)
3095                });
3096                fidl::decode!(
3097                    fidl_fuchsia_wlan_stats_common::WmePacketStats,
3098                    D,
3099                    val_ref,
3100                    decoder,
3101                    inner_offset,
3102                    inner_depth
3103                )?;
3104                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3105                {
3106                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3107                }
3108                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3109                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3110                }
3111            }
3112
3113            next_offset += envelope_size;
3114            _next_ordinal_to_read += 1;
3115            if next_offset >= end_offset {
3116                return Ok(());
3117            }
3118
3119            // Decode unknown envelopes for gaps in ordinals.
3120            while _next_ordinal_to_read < 2 {
3121                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3122                _next_ordinal_to_read += 1;
3123                next_offset += envelope_size;
3124            }
3125
3126            let next_out_of_line = decoder.next_out_of_line();
3127            let handles_before = decoder.remaining_handles();
3128            if let Some((inlined, num_bytes, num_handles)) =
3129                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3130            {
3131                let member_inline_size =
3132                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3133                if inlined != (member_inline_size <= 4) {
3134                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3135                }
3136                let inner_offset;
3137                let mut inner_depth = depth.clone();
3138                if inlined {
3139                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3140                    inner_offset = next_offset;
3141                } else {
3142                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3143                    inner_depth.increment()?;
3144                }
3145                let val_ref = self.rssi_dbm.get_or_insert_with(|| fidl::new_empty!(i32, D));
3146                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
3147                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3148                {
3149                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3150                }
3151                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3152                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3153                }
3154            }
3155
3156            next_offset += envelope_size;
3157
3158            // Decode the remaining unknown envelopes.
3159            while next_offset < end_offset {
3160                _next_ordinal_to_read += 1;
3161                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3162                next_offset += envelope_size;
3163            }
3164
3165            Ok(())
3166        }
3167    }
3168
3169    impl SupplicantStaIfaceCallbackOnAssociationRejectedRequest {
3170        #[inline(always)]
3171        fn max_ordinal_present(&self) -> u64 {
3172            if let Some(_) = self.timed_out {
3173                return 4;
3174            }
3175            if let Some(_) = self.status_code {
3176                return 3;
3177            }
3178            if let Some(_) = self.bssid {
3179                return 2;
3180            }
3181            if let Some(_) = self.ssid {
3182                return 1;
3183            }
3184            0
3185        }
3186    }
3187
3188    impl fidl::encoding::ValueTypeMarker for SupplicantStaIfaceCallbackOnAssociationRejectedRequest {
3189        type Borrowed<'a> = &'a Self;
3190        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3191            value
3192        }
3193    }
3194
3195    unsafe impl fidl::encoding::TypeMarker for SupplicantStaIfaceCallbackOnAssociationRejectedRequest {
3196        type Owned = Self;
3197
3198        #[inline(always)]
3199        fn inline_align(_context: fidl::encoding::Context) -> usize {
3200            8
3201        }
3202
3203        #[inline(always)]
3204        fn inline_size(_context: fidl::encoding::Context) -> usize {
3205            16
3206        }
3207    }
3208
3209    unsafe impl<D: fidl::encoding::ResourceDialect>
3210        fidl::encoding::Encode<SupplicantStaIfaceCallbackOnAssociationRejectedRequest, D>
3211        for &SupplicantStaIfaceCallbackOnAssociationRejectedRequest
3212    {
3213        unsafe fn encode(
3214            self,
3215            encoder: &mut fidl::encoding::Encoder<'_, D>,
3216            offset: usize,
3217            mut depth: fidl::encoding::Depth,
3218        ) -> fidl::Result<()> {
3219            encoder.debug_check_bounds::<SupplicantStaIfaceCallbackOnAssociationRejectedRequest>(
3220                offset,
3221            );
3222            // Vector header
3223            let max_ordinal: u64 = self.max_ordinal_present();
3224            encoder.write_num(max_ordinal, offset);
3225            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3226            // Calling encoder.out_of_line_offset(0) is not allowed.
3227            if max_ordinal == 0 {
3228                return Ok(());
3229            }
3230            depth.increment()?;
3231            let envelope_size = 8;
3232            let bytes_len = max_ordinal as usize * envelope_size;
3233            #[allow(unused_variables)]
3234            let offset = encoder.out_of_line_offset(bytes_len);
3235            let mut _prev_end_offset: usize = 0;
3236            if 1 > max_ordinal {
3237                return Ok(());
3238            }
3239
3240            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3241            // are envelope_size bytes.
3242            let cur_offset: usize = (1 - 1) * envelope_size;
3243
3244            // Zero reserved fields.
3245            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3246
3247            // Safety:
3248            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3249            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3250            //   envelope_size bytes, there is always sufficient room.
3251            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
3252                self.ssid.as_ref().map(
3253                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
3254                ),
3255                encoder,
3256                offset + cur_offset,
3257                depth,
3258            )?;
3259
3260            _prev_end_offset = cur_offset + envelope_size;
3261            if 2 > max_ordinal {
3262                return Ok(());
3263            }
3264
3265            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3266            // are envelope_size bytes.
3267            let cur_offset: usize = (2 - 1) * envelope_size;
3268
3269            // Zero reserved fields.
3270            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3271
3272            // Safety:
3273            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3274            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3275            //   envelope_size bytes, there is always sufficient room.
3276            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3277                self.bssid
3278                    .as_ref()
3279                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3280                encoder,
3281                offset + cur_offset,
3282                depth,
3283            )?;
3284
3285            _prev_end_offset = cur_offset + envelope_size;
3286            if 3 > max_ordinal {
3287                return Ok(());
3288            }
3289
3290            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3291            // are envelope_size bytes.
3292            let cur_offset: usize = (3 - 1) * envelope_size;
3293
3294            // Zero reserved fields.
3295            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3296
3297            // Safety:
3298            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3299            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3300            //   envelope_size bytes, there is always sufficient room.
3301            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::StatusCode, D>(
3302            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
3303            encoder, offset + cur_offset, depth
3304        )?;
3305
3306            _prev_end_offset = cur_offset + envelope_size;
3307            if 4 > max_ordinal {
3308                return Ok(());
3309            }
3310
3311            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3312            // are envelope_size bytes.
3313            let cur_offset: usize = (4 - 1) * envelope_size;
3314
3315            // Zero reserved fields.
3316            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3317
3318            // Safety:
3319            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3320            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3321            //   envelope_size bytes, there is always sufficient room.
3322            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3323                self.timed_out.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3324                encoder,
3325                offset + cur_offset,
3326                depth,
3327            )?;
3328
3329            _prev_end_offset = cur_offset + envelope_size;
3330
3331            Ok(())
3332        }
3333    }
3334
3335    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3336        for SupplicantStaIfaceCallbackOnAssociationRejectedRequest
3337    {
3338        #[inline(always)]
3339        fn new_empty() -> Self {
3340            Self::default()
3341        }
3342
3343        unsafe fn decode(
3344            &mut self,
3345            decoder: &mut fidl::encoding::Decoder<'_, D>,
3346            offset: usize,
3347            mut depth: fidl::encoding::Depth,
3348        ) -> fidl::Result<()> {
3349            decoder.debug_check_bounds::<Self>(offset);
3350            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3351                None => return Err(fidl::Error::NotNullable),
3352                Some(len) => len,
3353            };
3354            // Calling decoder.out_of_line_offset(0) is not allowed.
3355            if len == 0 {
3356                return Ok(());
3357            };
3358            depth.increment()?;
3359            let envelope_size = 8;
3360            let bytes_len = len * envelope_size;
3361            let offset = decoder.out_of_line_offset(bytes_len)?;
3362            // Decode the envelope for each type.
3363            let mut _next_ordinal_to_read = 0;
3364            let mut next_offset = offset;
3365            let end_offset = offset + bytes_len;
3366            _next_ordinal_to_read += 1;
3367            if next_offset >= end_offset {
3368                return Ok(());
3369            }
3370
3371            // Decode unknown envelopes for gaps in ordinals.
3372            while _next_ordinal_to_read < 1 {
3373                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3374                _next_ordinal_to_read += 1;
3375                next_offset += envelope_size;
3376            }
3377
3378            let next_out_of_line = decoder.next_out_of_line();
3379            let handles_before = decoder.remaining_handles();
3380            if let Some((inlined, num_bytes, num_handles)) =
3381                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3382            {
3383                let member_inline_size =
3384                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
3385                        decoder.context,
3386                    );
3387                if inlined != (member_inline_size <= 4) {
3388                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3389                }
3390                let inner_offset;
3391                let mut inner_depth = depth.clone();
3392                if inlined {
3393                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3394                    inner_offset = next_offset;
3395                } else {
3396                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3397                    inner_depth.increment()?;
3398                }
3399                let val_ref = self
3400                    .ssid
3401                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
3402                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
3403                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3404                {
3405                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3406                }
3407                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3408                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3409                }
3410            }
3411
3412            next_offset += envelope_size;
3413            _next_ordinal_to_read += 1;
3414            if next_offset >= end_offset {
3415                return Ok(());
3416            }
3417
3418            // Decode unknown envelopes for gaps in ordinals.
3419            while _next_ordinal_to_read < 2 {
3420                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3421                _next_ordinal_to_read += 1;
3422                next_offset += envelope_size;
3423            }
3424
3425            let next_out_of_line = decoder.next_out_of_line();
3426            let handles_before = decoder.remaining_handles();
3427            if let Some((inlined, num_bytes, num_handles)) =
3428                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3429            {
3430                let member_inline_size =
3431                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3432                        decoder.context,
3433                    );
3434                if inlined != (member_inline_size <= 4) {
3435                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3436                }
3437                let inner_offset;
3438                let mut inner_depth = depth.clone();
3439                if inlined {
3440                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3441                    inner_offset = next_offset;
3442                } else {
3443                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3444                    inner_depth.increment()?;
3445                }
3446                let val_ref = self
3447                    .bssid
3448                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
3449                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
3450                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3451                {
3452                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3453                }
3454                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3455                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3456                }
3457            }
3458
3459            next_offset += envelope_size;
3460            _next_ordinal_to_read += 1;
3461            if next_offset >= end_offset {
3462                return Ok(());
3463            }
3464
3465            // Decode unknown envelopes for gaps in ordinals.
3466            while _next_ordinal_to_read < 3 {
3467                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3468                _next_ordinal_to_read += 1;
3469                next_offset += envelope_size;
3470            }
3471
3472            let next_out_of_line = decoder.next_out_of_line();
3473            let handles_before = decoder.remaining_handles();
3474            if let Some((inlined, num_bytes, num_handles)) =
3475                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3476            {
3477                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3478                if inlined != (member_inline_size <= 4) {
3479                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3480                }
3481                let inner_offset;
3482                let mut inner_depth = depth.clone();
3483                if inlined {
3484                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3485                    inner_offset = next_offset;
3486                } else {
3487                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3488                    inner_depth.increment()?;
3489                }
3490                let val_ref = self.status_code.get_or_insert_with(|| {
3491                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::StatusCode, D)
3492                });
3493                fidl::decode!(
3494                    fidl_fuchsia_wlan_ieee80211_common::StatusCode,
3495                    D,
3496                    val_ref,
3497                    decoder,
3498                    inner_offset,
3499                    inner_depth
3500                )?;
3501                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3502                {
3503                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3504                }
3505                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3506                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3507                }
3508            }
3509
3510            next_offset += envelope_size;
3511            _next_ordinal_to_read += 1;
3512            if next_offset >= end_offset {
3513                return Ok(());
3514            }
3515
3516            // Decode unknown envelopes for gaps in ordinals.
3517            while _next_ordinal_to_read < 4 {
3518                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3519                _next_ordinal_to_read += 1;
3520                next_offset += envelope_size;
3521            }
3522
3523            let next_out_of_line = decoder.next_out_of_line();
3524            let handles_before = decoder.remaining_handles();
3525            if let Some((inlined, num_bytes, num_handles)) =
3526                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3527            {
3528                let member_inline_size =
3529                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3530                if inlined != (member_inline_size <= 4) {
3531                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3532                }
3533                let inner_offset;
3534                let mut inner_depth = depth.clone();
3535                if inlined {
3536                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3537                    inner_offset = next_offset;
3538                } else {
3539                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3540                    inner_depth.increment()?;
3541                }
3542                let val_ref = self.timed_out.get_or_insert_with(|| fidl::new_empty!(bool, D));
3543                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3544                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3545                {
3546                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3547                }
3548                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3549                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3550                }
3551            }
3552
3553            next_offset += envelope_size;
3554
3555            // Decode the remaining unknown envelopes.
3556            while next_offset < end_offset {
3557                _next_ordinal_to_read += 1;
3558                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3559                next_offset += envelope_size;
3560            }
3561
3562            Ok(())
3563        }
3564    }
3565
3566    impl SupplicantStaIfaceCallbackOnDisconnectedRequest {
3567        #[inline(always)]
3568        fn max_ordinal_present(&self) -> u64 {
3569            if let Some(_) = self.reason_code {
3570                return 3;
3571            }
3572            if let Some(_) = self.locally_generated {
3573                return 2;
3574            }
3575            if let Some(_) = self.bssid {
3576                return 1;
3577            }
3578            0
3579        }
3580    }
3581
3582    impl fidl::encoding::ValueTypeMarker for SupplicantStaIfaceCallbackOnDisconnectedRequest {
3583        type Borrowed<'a> = &'a Self;
3584        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3585            value
3586        }
3587    }
3588
3589    unsafe impl fidl::encoding::TypeMarker for SupplicantStaIfaceCallbackOnDisconnectedRequest {
3590        type Owned = Self;
3591
3592        #[inline(always)]
3593        fn inline_align(_context: fidl::encoding::Context) -> usize {
3594            8
3595        }
3596
3597        #[inline(always)]
3598        fn inline_size(_context: fidl::encoding::Context) -> usize {
3599            16
3600        }
3601    }
3602
3603    unsafe impl<D: fidl::encoding::ResourceDialect>
3604        fidl::encoding::Encode<SupplicantStaIfaceCallbackOnDisconnectedRequest, D>
3605        for &SupplicantStaIfaceCallbackOnDisconnectedRequest
3606    {
3607        unsafe fn encode(
3608            self,
3609            encoder: &mut fidl::encoding::Encoder<'_, D>,
3610            offset: usize,
3611            mut depth: fidl::encoding::Depth,
3612        ) -> fidl::Result<()> {
3613            encoder.debug_check_bounds::<SupplicantStaIfaceCallbackOnDisconnectedRequest>(offset);
3614            // Vector header
3615            let max_ordinal: u64 = self.max_ordinal_present();
3616            encoder.write_num(max_ordinal, offset);
3617            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3618            // Calling encoder.out_of_line_offset(0) is not allowed.
3619            if max_ordinal == 0 {
3620                return Ok(());
3621            }
3622            depth.increment()?;
3623            let envelope_size = 8;
3624            let bytes_len = max_ordinal as usize * envelope_size;
3625            #[allow(unused_variables)]
3626            let offset = encoder.out_of_line_offset(bytes_len);
3627            let mut _prev_end_offset: usize = 0;
3628            if 1 > max_ordinal {
3629                return Ok(());
3630            }
3631
3632            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3633            // are envelope_size bytes.
3634            let cur_offset: usize = (1 - 1) * envelope_size;
3635
3636            // Zero reserved fields.
3637            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3638
3639            // Safety:
3640            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3641            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3642            //   envelope_size bytes, there is always sufficient room.
3643            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3644                self.bssid
3645                    .as_ref()
3646                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3647                encoder,
3648                offset + cur_offset,
3649                depth,
3650            )?;
3651
3652            _prev_end_offset = cur_offset + envelope_size;
3653            if 2 > max_ordinal {
3654                return Ok(());
3655            }
3656
3657            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3658            // are envelope_size bytes.
3659            let cur_offset: usize = (2 - 1) * envelope_size;
3660
3661            // Zero reserved fields.
3662            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3663
3664            // Safety:
3665            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3666            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3667            //   envelope_size bytes, there is always sufficient room.
3668            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3669                self.locally_generated
3670                    .as_ref()
3671                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3672                encoder,
3673                offset + cur_offset,
3674                depth,
3675            )?;
3676
3677            _prev_end_offset = cur_offset + envelope_size;
3678            if 3 > max_ordinal {
3679                return Ok(());
3680            }
3681
3682            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3683            // are envelope_size bytes.
3684            let cur_offset: usize = (3 - 1) * envelope_size;
3685
3686            // Zero reserved fields.
3687            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3688
3689            // Safety:
3690            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3691            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3692            //   envelope_size bytes, there is always sufficient room.
3693            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D>(
3694            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
3695            encoder, offset + cur_offset, depth
3696        )?;
3697
3698            _prev_end_offset = cur_offset + envelope_size;
3699
3700            Ok(())
3701        }
3702    }
3703
3704    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3705        for SupplicantStaIfaceCallbackOnDisconnectedRequest
3706    {
3707        #[inline(always)]
3708        fn new_empty() -> Self {
3709            Self::default()
3710        }
3711
3712        unsafe fn decode(
3713            &mut self,
3714            decoder: &mut fidl::encoding::Decoder<'_, D>,
3715            offset: usize,
3716            mut depth: fidl::encoding::Depth,
3717        ) -> fidl::Result<()> {
3718            decoder.debug_check_bounds::<Self>(offset);
3719            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3720                None => return Err(fidl::Error::NotNullable),
3721                Some(len) => len,
3722            };
3723            // Calling decoder.out_of_line_offset(0) is not allowed.
3724            if len == 0 {
3725                return Ok(());
3726            };
3727            depth.increment()?;
3728            let envelope_size = 8;
3729            let bytes_len = len * envelope_size;
3730            let offset = decoder.out_of_line_offset(bytes_len)?;
3731            // Decode the envelope for each type.
3732            let mut _next_ordinal_to_read = 0;
3733            let mut next_offset = offset;
3734            let end_offset = offset + bytes_len;
3735            _next_ordinal_to_read += 1;
3736            if next_offset >= end_offset {
3737                return Ok(());
3738            }
3739
3740            // Decode unknown envelopes for gaps in ordinals.
3741            while _next_ordinal_to_read < 1 {
3742                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3743                _next_ordinal_to_read += 1;
3744                next_offset += envelope_size;
3745            }
3746
3747            let next_out_of_line = decoder.next_out_of_line();
3748            let handles_before = decoder.remaining_handles();
3749            if let Some((inlined, num_bytes, num_handles)) =
3750                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3751            {
3752                let member_inline_size =
3753                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3754                        decoder.context,
3755                    );
3756                if inlined != (member_inline_size <= 4) {
3757                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3758                }
3759                let inner_offset;
3760                let mut inner_depth = depth.clone();
3761                if inlined {
3762                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3763                    inner_offset = next_offset;
3764                } else {
3765                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3766                    inner_depth.increment()?;
3767                }
3768                let val_ref = self
3769                    .bssid
3770                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
3771                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
3772                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3773                {
3774                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3775                }
3776                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3777                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3778                }
3779            }
3780
3781            next_offset += envelope_size;
3782            _next_ordinal_to_read += 1;
3783            if next_offset >= end_offset {
3784                return Ok(());
3785            }
3786
3787            // Decode unknown envelopes for gaps in ordinals.
3788            while _next_ordinal_to_read < 2 {
3789                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3790                _next_ordinal_to_read += 1;
3791                next_offset += envelope_size;
3792            }
3793
3794            let next_out_of_line = decoder.next_out_of_line();
3795            let handles_before = decoder.remaining_handles();
3796            if let Some((inlined, num_bytes, num_handles)) =
3797                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3798            {
3799                let member_inline_size =
3800                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3801                if inlined != (member_inline_size <= 4) {
3802                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3803                }
3804                let inner_offset;
3805                let mut inner_depth = depth.clone();
3806                if inlined {
3807                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3808                    inner_offset = next_offset;
3809                } else {
3810                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3811                    inner_depth.increment()?;
3812                }
3813                let val_ref =
3814                    self.locally_generated.get_or_insert_with(|| fidl::new_empty!(bool, D));
3815                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3816                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3817                {
3818                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3819                }
3820                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3821                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3822                }
3823            }
3824
3825            next_offset += envelope_size;
3826            _next_ordinal_to_read += 1;
3827            if next_offset >= end_offset {
3828                return Ok(());
3829            }
3830
3831            // Decode unknown envelopes for gaps in ordinals.
3832            while _next_ordinal_to_read < 3 {
3833                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3834                _next_ordinal_to_read += 1;
3835                next_offset += envelope_size;
3836            }
3837
3838            let next_out_of_line = decoder.next_out_of_line();
3839            let handles_before = decoder.remaining_handles();
3840            if let Some((inlined, num_bytes, num_handles)) =
3841                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3842            {
3843                let member_inline_size = <fidl_fuchsia_wlan_ieee80211_common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3844                if inlined != (member_inline_size <= 4) {
3845                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3846                }
3847                let inner_offset;
3848                let mut inner_depth = depth.clone();
3849                if inlined {
3850                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3851                    inner_offset = next_offset;
3852                } else {
3853                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3854                    inner_depth.increment()?;
3855                }
3856                let val_ref = self.reason_code.get_or_insert_with(|| {
3857                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::ReasonCode, D)
3858                });
3859                fidl::decode!(
3860                    fidl_fuchsia_wlan_ieee80211_common::ReasonCode,
3861                    D,
3862                    val_ref,
3863                    decoder,
3864                    inner_offset,
3865                    inner_depth
3866                )?;
3867                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3868                {
3869                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3870                }
3871                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3872                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3873                }
3874            }
3875
3876            next_offset += envelope_size;
3877
3878            // Decode the remaining unknown envelopes.
3879            while next_offset < end_offset {
3880                _next_ordinal_to_read += 1;
3881                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3882                next_offset += envelope_size;
3883            }
3884
3885            Ok(())
3886        }
3887    }
3888
3889    impl SupplicantStaIfaceCallbackOnStateChangedRequest {
3890        #[inline(always)]
3891        fn max_ordinal_present(&self) -> u64 {
3892            if let Some(_) = self.ssid {
3893                return 4;
3894            }
3895            if let Some(_) = self.id {
3896                return 3;
3897            }
3898            if let Some(_) = self.bssid {
3899                return 2;
3900            }
3901            if let Some(_) = self.new_state {
3902                return 1;
3903            }
3904            0
3905        }
3906    }
3907
3908    impl fidl::encoding::ValueTypeMarker for SupplicantStaIfaceCallbackOnStateChangedRequest {
3909        type Borrowed<'a> = &'a Self;
3910        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3911            value
3912        }
3913    }
3914
3915    unsafe impl fidl::encoding::TypeMarker for SupplicantStaIfaceCallbackOnStateChangedRequest {
3916        type Owned = Self;
3917
3918        #[inline(always)]
3919        fn inline_align(_context: fidl::encoding::Context) -> usize {
3920            8
3921        }
3922
3923        #[inline(always)]
3924        fn inline_size(_context: fidl::encoding::Context) -> usize {
3925            16
3926        }
3927    }
3928
3929    unsafe impl<D: fidl::encoding::ResourceDialect>
3930        fidl::encoding::Encode<SupplicantStaIfaceCallbackOnStateChangedRequest, D>
3931        for &SupplicantStaIfaceCallbackOnStateChangedRequest
3932    {
3933        unsafe fn encode(
3934            self,
3935            encoder: &mut fidl::encoding::Encoder<'_, D>,
3936            offset: usize,
3937            mut depth: fidl::encoding::Depth,
3938        ) -> fidl::Result<()> {
3939            encoder.debug_check_bounds::<SupplicantStaIfaceCallbackOnStateChangedRequest>(offset);
3940            // Vector header
3941            let max_ordinal: u64 = self.max_ordinal_present();
3942            encoder.write_num(max_ordinal, offset);
3943            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3944            // Calling encoder.out_of_line_offset(0) is not allowed.
3945            if max_ordinal == 0 {
3946                return Ok(());
3947            }
3948            depth.increment()?;
3949            let envelope_size = 8;
3950            let bytes_len = max_ordinal as usize * envelope_size;
3951            #[allow(unused_variables)]
3952            let offset = encoder.out_of_line_offset(bytes_len);
3953            let mut _prev_end_offset: usize = 0;
3954            if 1 > max_ordinal {
3955                return Ok(());
3956            }
3957
3958            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3959            // are envelope_size bytes.
3960            let cur_offset: usize = (1 - 1) * envelope_size;
3961
3962            // Zero reserved fields.
3963            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3964
3965            // Safety:
3966            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3967            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3968            //   envelope_size bytes, there is always sufficient room.
3969            fidl::encoding::encode_in_envelope_optional::<StaIfaceCallbackState, D>(
3970                self.new_state
3971                    .as_ref()
3972                    .map(<StaIfaceCallbackState as fidl::encoding::ValueTypeMarker>::borrow),
3973                encoder,
3974                offset + cur_offset,
3975                depth,
3976            )?;
3977
3978            _prev_end_offset = cur_offset + envelope_size;
3979            if 2 > max_ordinal {
3980                return Ok(());
3981            }
3982
3983            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3984            // are envelope_size bytes.
3985            let cur_offset: usize = (2 - 1) * envelope_size;
3986
3987            // Zero reserved fields.
3988            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3989
3990            // Safety:
3991            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3992            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3993            //   envelope_size bytes, there is always sufficient room.
3994            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3995                self.bssid
3996                    .as_ref()
3997                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3998                encoder,
3999                offset + cur_offset,
4000                depth,
4001            )?;
4002
4003            _prev_end_offset = cur_offset + envelope_size;
4004            if 3 > max_ordinal {
4005                return Ok(());
4006            }
4007
4008            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4009            // are envelope_size bytes.
4010            let cur_offset: usize = (3 - 1) * envelope_size;
4011
4012            // Zero reserved fields.
4013            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4014
4015            // Safety:
4016            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4017            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4018            //   envelope_size bytes, there is always sufficient room.
4019            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4020                self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4021                encoder,
4022                offset + cur_offset,
4023                depth,
4024            )?;
4025
4026            _prev_end_offset = cur_offset + envelope_size;
4027            if 4 > max_ordinal {
4028                return Ok(());
4029            }
4030
4031            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4032            // are envelope_size bytes.
4033            let cur_offset: usize = (4 - 1) * envelope_size;
4034
4035            // Zero reserved fields.
4036            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4037
4038            // Safety:
4039            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4040            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4041            //   envelope_size bytes, there is always sufficient room.
4042            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
4043                self.ssid.as_ref().map(
4044                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
4045                ),
4046                encoder,
4047                offset + cur_offset,
4048                depth,
4049            )?;
4050
4051            _prev_end_offset = cur_offset + envelope_size;
4052
4053            Ok(())
4054        }
4055    }
4056
4057    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4058        for SupplicantStaIfaceCallbackOnStateChangedRequest
4059    {
4060        #[inline(always)]
4061        fn new_empty() -> Self {
4062            Self::default()
4063        }
4064
4065        unsafe fn decode(
4066            &mut self,
4067            decoder: &mut fidl::encoding::Decoder<'_, D>,
4068            offset: usize,
4069            mut depth: fidl::encoding::Depth,
4070        ) -> fidl::Result<()> {
4071            decoder.debug_check_bounds::<Self>(offset);
4072            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4073                None => return Err(fidl::Error::NotNullable),
4074                Some(len) => len,
4075            };
4076            // Calling decoder.out_of_line_offset(0) is not allowed.
4077            if len == 0 {
4078                return Ok(());
4079            };
4080            depth.increment()?;
4081            let envelope_size = 8;
4082            let bytes_len = len * envelope_size;
4083            let offset = decoder.out_of_line_offset(bytes_len)?;
4084            // Decode the envelope for each type.
4085            let mut _next_ordinal_to_read = 0;
4086            let mut next_offset = offset;
4087            let end_offset = offset + bytes_len;
4088            _next_ordinal_to_read += 1;
4089            if next_offset >= end_offset {
4090                return Ok(());
4091            }
4092
4093            // Decode unknown envelopes for gaps in ordinals.
4094            while _next_ordinal_to_read < 1 {
4095                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4096                _next_ordinal_to_read += 1;
4097                next_offset += envelope_size;
4098            }
4099
4100            let next_out_of_line = decoder.next_out_of_line();
4101            let handles_before = decoder.remaining_handles();
4102            if let Some((inlined, num_bytes, num_handles)) =
4103                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4104            {
4105                let member_inline_size =
4106                    <StaIfaceCallbackState as fidl::encoding::TypeMarker>::inline_size(
4107                        decoder.context,
4108                    );
4109                if inlined != (member_inline_size <= 4) {
4110                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4111                }
4112                let inner_offset;
4113                let mut inner_depth = depth.clone();
4114                if inlined {
4115                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4116                    inner_offset = next_offset;
4117                } else {
4118                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4119                    inner_depth.increment()?;
4120                }
4121                let val_ref = self
4122                    .new_state
4123                    .get_or_insert_with(|| fidl::new_empty!(StaIfaceCallbackState, D));
4124                fidl::decode!(
4125                    StaIfaceCallbackState,
4126                    D,
4127                    val_ref,
4128                    decoder,
4129                    inner_offset,
4130                    inner_depth
4131                )?;
4132                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4133                {
4134                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4135                }
4136                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4137                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4138                }
4139            }
4140
4141            next_offset += envelope_size;
4142            _next_ordinal_to_read += 1;
4143            if next_offset >= end_offset {
4144                return Ok(());
4145            }
4146
4147            // Decode unknown envelopes for gaps in ordinals.
4148            while _next_ordinal_to_read < 2 {
4149                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4150                _next_ordinal_to_read += 1;
4151                next_offset += envelope_size;
4152            }
4153
4154            let next_out_of_line = decoder.next_out_of_line();
4155            let handles_before = decoder.remaining_handles();
4156            if let Some((inlined, num_bytes, num_handles)) =
4157                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4158            {
4159                let member_inline_size =
4160                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4161                        decoder.context,
4162                    );
4163                if inlined != (member_inline_size <= 4) {
4164                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4165                }
4166                let inner_offset;
4167                let mut inner_depth = depth.clone();
4168                if inlined {
4169                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4170                    inner_offset = next_offset;
4171                } else {
4172                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4173                    inner_depth.increment()?;
4174                }
4175                let val_ref = self
4176                    .bssid
4177                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4178                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4179                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4180                {
4181                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4182                }
4183                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4184                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4185                }
4186            }
4187
4188            next_offset += envelope_size;
4189            _next_ordinal_to_read += 1;
4190            if next_offset >= end_offset {
4191                return Ok(());
4192            }
4193
4194            // Decode unknown envelopes for gaps in ordinals.
4195            while _next_ordinal_to_read < 3 {
4196                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4197                _next_ordinal_to_read += 1;
4198                next_offset += envelope_size;
4199            }
4200
4201            let next_out_of_line = decoder.next_out_of_line();
4202            let handles_before = decoder.remaining_handles();
4203            if let Some((inlined, num_bytes, num_handles)) =
4204                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4205            {
4206                let member_inline_size =
4207                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4208                if inlined != (member_inline_size <= 4) {
4209                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4210                }
4211                let inner_offset;
4212                let mut inner_depth = depth.clone();
4213                if inlined {
4214                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4215                    inner_offset = next_offset;
4216                } else {
4217                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4218                    inner_depth.increment()?;
4219                }
4220                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
4221                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4222                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4223                {
4224                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4225                }
4226                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4227                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4228                }
4229            }
4230
4231            next_offset += envelope_size;
4232            _next_ordinal_to_read += 1;
4233            if next_offset >= end_offset {
4234                return Ok(());
4235            }
4236
4237            // Decode unknown envelopes for gaps in ordinals.
4238            while _next_ordinal_to_read < 4 {
4239                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4240                _next_ordinal_to_read += 1;
4241                next_offset += envelope_size;
4242            }
4243
4244            let next_out_of_line = decoder.next_out_of_line();
4245            let handles_before = decoder.remaining_handles();
4246            if let Some((inlined, num_bytes, num_handles)) =
4247                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4248            {
4249                let member_inline_size =
4250                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
4251                        decoder.context,
4252                    );
4253                if inlined != (member_inline_size <= 4) {
4254                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4255                }
4256                let inner_offset;
4257                let mut inner_depth = depth.clone();
4258                if inlined {
4259                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4260                    inner_offset = next_offset;
4261                } else {
4262                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4263                    inner_depth.increment()?;
4264                }
4265                let val_ref = self
4266                    .ssid
4267                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
4268                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
4269                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4270                {
4271                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4272                }
4273                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4274                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4275                }
4276            }
4277
4278            next_offset += envelope_size;
4279
4280            // Decode the remaining unknown envelopes.
4281            while next_offset < end_offset {
4282                _next_ordinal_to_read += 1;
4283                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4284                next_offset += envelope_size;
4285            }
4286
4287            Ok(())
4288        }
4289    }
4290
4291    impl SupplicantStaIfaceSetBtCoexistenceModeRequest {
4292        #[inline(always)]
4293        fn max_ordinal_present(&self) -> u64 {
4294            if let Some(_) = self.mode {
4295                return 1;
4296            }
4297            0
4298        }
4299    }
4300
4301    impl fidl::encoding::ValueTypeMarker for SupplicantStaIfaceSetBtCoexistenceModeRequest {
4302        type Borrowed<'a> = &'a Self;
4303        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4304            value
4305        }
4306    }
4307
4308    unsafe impl fidl::encoding::TypeMarker for SupplicantStaIfaceSetBtCoexistenceModeRequest {
4309        type Owned = Self;
4310
4311        #[inline(always)]
4312        fn inline_align(_context: fidl::encoding::Context) -> usize {
4313            8
4314        }
4315
4316        #[inline(always)]
4317        fn inline_size(_context: fidl::encoding::Context) -> usize {
4318            16
4319        }
4320    }
4321
4322    unsafe impl<D: fidl::encoding::ResourceDialect>
4323        fidl::encoding::Encode<SupplicantStaIfaceSetBtCoexistenceModeRequest, D>
4324        for &SupplicantStaIfaceSetBtCoexistenceModeRequest
4325    {
4326        unsafe fn encode(
4327            self,
4328            encoder: &mut fidl::encoding::Encoder<'_, D>,
4329            offset: usize,
4330            mut depth: fidl::encoding::Depth,
4331        ) -> fidl::Result<()> {
4332            encoder.debug_check_bounds::<SupplicantStaIfaceSetBtCoexistenceModeRequest>(offset);
4333            // Vector header
4334            let max_ordinal: u64 = self.max_ordinal_present();
4335            encoder.write_num(max_ordinal, offset);
4336            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4337            // Calling encoder.out_of_line_offset(0) is not allowed.
4338            if max_ordinal == 0 {
4339                return Ok(());
4340            }
4341            depth.increment()?;
4342            let envelope_size = 8;
4343            let bytes_len = max_ordinal as usize * envelope_size;
4344            #[allow(unused_variables)]
4345            let offset = encoder.out_of_line_offset(bytes_len);
4346            let mut _prev_end_offset: usize = 0;
4347            if 1 > max_ordinal {
4348                return Ok(());
4349            }
4350
4351            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4352            // are envelope_size bytes.
4353            let cur_offset: usize = (1 - 1) * envelope_size;
4354
4355            // Zero reserved fields.
4356            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4357
4358            // Safety:
4359            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4360            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4361            //   envelope_size bytes, there is always sufficient room.
4362            fidl::encoding::encode_in_envelope_optional::<BtCoexistenceMode, D>(
4363                self.mode
4364                    .as_ref()
4365                    .map(<BtCoexistenceMode as fidl::encoding::ValueTypeMarker>::borrow),
4366                encoder,
4367                offset + cur_offset,
4368                depth,
4369            )?;
4370
4371            _prev_end_offset = cur_offset + envelope_size;
4372
4373            Ok(())
4374        }
4375    }
4376
4377    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4378        for SupplicantStaIfaceSetBtCoexistenceModeRequest
4379    {
4380        #[inline(always)]
4381        fn new_empty() -> Self {
4382            Self::default()
4383        }
4384
4385        unsafe fn decode(
4386            &mut self,
4387            decoder: &mut fidl::encoding::Decoder<'_, D>,
4388            offset: usize,
4389            mut depth: fidl::encoding::Depth,
4390        ) -> fidl::Result<()> {
4391            decoder.debug_check_bounds::<Self>(offset);
4392            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4393                None => return Err(fidl::Error::NotNullable),
4394                Some(len) => len,
4395            };
4396            // Calling decoder.out_of_line_offset(0) is not allowed.
4397            if len == 0 {
4398                return Ok(());
4399            };
4400            depth.increment()?;
4401            let envelope_size = 8;
4402            let bytes_len = len * envelope_size;
4403            let offset = decoder.out_of_line_offset(bytes_len)?;
4404            // Decode the envelope for each type.
4405            let mut _next_ordinal_to_read = 0;
4406            let mut next_offset = offset;
4407            let end_offset = offset + bytes_len;
4408            _next_ordinal_to_read += 1;
4409            if next_offset >= end_offset {
4410                return Ok(());
4411            }
4412
4413            // Decode unknown envelopes for gaps in ordinals.
4414            while _next_ordinal_to_read < 1 {
4415                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4416                _next_ordinal_to_read += 1;
4417                next_offset += envelope_size;
4418            }
4419
4420            let next_out_of_line = decoder.next_out_of_line();
4421            let handles_before = decoder.remaining_handles();
4422            if let Some((inlined, num_bytes, num_handles)) =
4423                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4424            {
4425                let member_inline_size =
4426                    <BtCoexistenceMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4427                if inlined != (member_inline_size <= 4) {
4428                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4429                }
4430                let inner_offset;
4431                let mut inner_depth = depth.clone();
4432                if inlined {
4433                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4434                    inner_offset = next_offset;
4435                } else {
4436                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4437                    inner_depth.increment()?;
4438                }
4439                let val_ref =
4440                    self.mode.get_or_insert_with(|| fidl::new_empty!(BtCoexistenceMode, D));
4441                fidl::decode!(BtCoexistenceMode, D, val_ref, decoder, inner_offset, inner_depth)?;
4442                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4443                {
4444                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4445                }
4446                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4447                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4448                }
4449            }
4450
4451            next_offset += envelope_size;
4452
4453            // Decode the remaining unknown envelopes.
4454            while next_offset < end_offset {
4455                _next_ordinal_to_read += 1;
4456                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4457                next_offset += envelope_size;
4458            }
4459
4460            Ok(())
4461        }
4462    }
4463
4464    impl SupplicantStaIfaceGetMacAddressResponse {
4465        #[inline(always)]
4466        fn max_ordinal_present(&self) -> u64 {
4467            if let Some(_) = self.mac_addr {
4468                return 1;
4469            }
4470            0
4471        }
4472    }
4473
4474    impl fidl::encoding::ValueTypeMarker for SupplicantStaIfaceGetMacAddressResponse {
4475        type Borrowed<'a> = &'a Self;
4476        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4477            value
4478        }
4479    }
4480
4481    unsafe impl fidl::encoding::TypeMarker for SupplicantStaIfaceGetMacAddressResponse {
4482        type Owned = Self;
4483
4484        #[inline(always)]
4485        fn inline_align(_context: fidl::encoding::Context) -> usize {
4486            8
4487        }
4488
4489        #[inline(always)]
4490        fn inline_size(_context: fidl::encoding::Context) -> usize {
4491            16
4492        }
4493    }
4494
4495    unsafe impl<D: fidl::encoding::ResourceDialect>
4496        fidl::encoding::Encode<SupplicantStaIfaceGetMacAddressResponse, D>
4497        for &SupplicantStaIfaceGetMacAddressResponse
4498    {
4499        unsafe fn encode(
4500            self,
4501            encoder: &mut fidl::encoding::Encoder<'_, D>,
4502            offset: usize,
4503            mut depth: fidl::encoding::Depth,
4504        ) -> fidl::Result<()> {
4505            encoder.debug_check_bounds::<SupplicantStaIfaceGetMacAddressResponse>(offset);
4506            // Vector header
4507            let max_ordinal: u64 = self.max_ordinal_present();
4508            encoder.write_num(max_ordinal, offset);
4509            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4510            // Calling encoder.out_of_line_offset(0) is not allowed.
4511            if max_ordinal == 0 {
4512                return Ok(());
4513            }
4514            depth.increment()?;
4515            let envelope_size = 8;
4516            let bytes_len = max_ordinal as usize * envelope_size;
4517            #[allow(unused_variables)]
4518            let offset = encoder.out_of_line_offset(bytes_len);
4519            let mut _prev_end_offset: usize = 0;
4520            if 1 > max_ordinal {
4521                return Ok(());
4522            }
4523
4524            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4525            // are envelope_size bytes.
4526            let cur_offset: usize = (1 - 1) * envelope_size;
4527
4528            // Zero reserved fields.
4529            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4530
4531            // Safety:
4532            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4533            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4534            //   envelope_size bytes, there is always sufficient room.
4535            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4536                self.mac_addr
4537                    .as_ref()
4538                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4539                encoder,
4540                offset + cur_offset,
4541                depth,
4542            )?;
4543
4544            _prev_end_offset = cur_offset + envelope_size;
4545
4546            Ok(())
4547        }
4548    }
4549
4550    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4551        for SupplicantStaIfaceGetMacAddressResponse
4552    {
4553        #[inline(always)]
4554        fn new_empty() -> Self {
4555            Self::default()
4556        }
4557
4558        unsafe fn decode(
4559            &mut self,
4560            decoder: &mut fidl::encoding::Decoder<'_, D>,
4561            offset: usize,
4562            mut depth: fidl::encoding::Depth,
4563        ) -> fidl::Result<()> {
4564            decoder.debug_check_bounds::<Self>(offset);
4565            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4566                None => return Err(fidl::Error::NotNullable),
4567                Some(len) => len,
4568            };
4569            // Calling decoder.out_of_line_offset(0) is not allowed.
4570            if len == 0 {
4571                return Ok(());
4572            };
4573            depth.increment()?;
4574            let envelope_size = 8;
4575            let bytes_len = len * envelope_size;
4576            let offset = decoder.out_of_line_offset(bytes_len)?;
4577            // Decode the envelope for each type.
4578            let mut _next_ordinal_to_read = 0;
4579            let mut next_offset = offset;
4580            let end_offset = offset + bytes_len;
4581            _next_ordinal_to_read += 1;
4582            if next_offset >= end_offset {
4583                return Ok(());
4584            }
4585
4586            // Decode unknown envelopes for gaps in ordinals.
4587            while _next_ordinal_to_read < 1 {
4588                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4589                _next_ordinal_to_read += 1;
4590                next_offset += envelope_size;
4591            }
4592
4593            let next_out_of_line = decoder.next_out_of_line();
4594            let handles_before = decoder.remaining_handles();
4595            if let Some((inlined, num_bytes, num_handles)) =
4596                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4597            {
4598                let member_inline_size =
4599                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4600                        decoder.context,
4601                    );
4602                if inlined != (member_inline_size <= 4) {
4603                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4604                }
4605                let inner_offset;
4606                let mut inner_depth = depth.clone();
4607                if inlined {
4608                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4609                    inner_offset = next_offset;
4610                } else {
4611                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4612                    inner_depth.increment()?;
4613                }
4614                let val_ref = self
4615                    .mac_addr
4616                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4617                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4618                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4619                {
4620                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4621                }
4622                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4623                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4624                }
4625            }
4626
4627            next_offset += envelope_size;
4628
4629            // Decode the remaining unknown envelopes.
4630            while next_offset < end_offset {
4631                _next_ordinal_to_read += 1;
4632                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4633                next_offset += envelope_size;
4634            }
4635
4636            Ok(())
4637        }
4638    }
4639
4640    impl SupplicantStaIfaceGetSignalPollResultsResponse {
4641        #[inline(always)]
4642        fn max_ordinal_present(&self) -> u64 {
4643            if let Some(_) = self.frequency_mhz {
4644                return 4;
4645            }
4646            if let Some(_) = self.rx_bitrate_mbps {
4647                return 3;
4648            }
4649            if let Some(_) = self.tx_bitrate_mbps {
4650                return 2;
4651            }
4652            if let Some(_) = self.current_rssi_dbm {
4653                return 1;
4654            }
4655            0
4656        }
4657    }
4658
4659    impl fidl::encoding::ValueTypeMarker for SupplicantStaIfaceGetSignalPollResultsResponse {
4660        type Borrowed<'a> = &'a Self;
4661        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4662            value
4663        }
4664    }
4665
4666    unsafe impl fidl::encoding::TypeMarker for SupplicantStaIfaceGetSignalPollResultsResponse {
4667        type Owned = Self;
4668
4669        #[inline(always)]
4670        fn inline_align(_context: fidl::encoding::Context) -> usize {
4671            8
4672        }
4673
4674        #[inline(always)]
4675        fn inline_size(_context: fidl::encoding::Context) -> usize {
4676            16
4677        }
4678    }
4679
4680    unsafe impl<D: fidl::encoding::ResourceDialect>
4681        fidl::encoding::Encode<SupplicantStaIfaceGetSignalPollResultsResponse, D>
4682        for &SupplicantStaIfaceGetSignalPollResultsResponse
4683    {
4684        unsafe fn encode(
4685            self,
4686            encoder: &mut fidl::encoding::Encoder<'_, D>,
4687            offset: usize,
4688            mut depth: fidl::encoding::Depth,
4689        ) -> fidl::Result<()> {
4690            encoder.debug_check_bounds::<SupplicantStaIfaceGetSignalPollResultsResponse>(offset);
4691            // Vector header
4692            let max_ordinal: u64 = self.max_ordinal_present();
4693            encoder.write_num(max_ordinal, offset);
4694            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4695            // Calling encoder.out_of_line_offset(0) is not allowed.
4696            if max_ordinal == 0 {
4697                return Ok(());
4698            }
4699            depth.increment()?;
4700            let envelope_size = 8;
4701            let bytes_len = max_ordinal as usize * envelope_size;
4702            #[allow(unused_variables)]
4703            let offset = encoder.out_of_line_offset(bytes_len);
4704            let mut _prev_end_offset: usize = 0;
4705            if 1 > max_ordinal {
4706                return Ok(());
4707            }
4708
4709            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4710            // are envelope_size bytes.
4711            let cur_offset: usize = (1 - 1) * envelope_size;
4712
4713            // Zero reserved fields.
4714            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4715
4716            // Safety:
4717            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4718            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4719            //   envelope_size bytes, there is always sufficient room.
4720            fidl::encoding::encode_in_envelope_optional::<i32, D>(
4721                self.current_rssi_dbm
4722                    .as_ref()
4723                    .map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
4724                encoder,
4725                offset + cur_offset,
4726                depth,
4727            )?;
4728
4729            _prev_end_offset = cur_offset + envelope_size;
4730            if 2 > max_ordinal {
4731                return Ok(());
4732            }
4733
4734            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4735            // are envelope_size bytes.
4736            let cur_offset: usize = (2 - 1) * envelope_size;
4737
4738            // Zero reserved fields.
4739            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4740
4741            // Safety:
4742            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4743            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4744            //   envelope_size bytes, there is always sufficient room.
4745            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4746                self.tx_bitrate_mbps.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4747                encoder,
4748                offset + cur_offset,
4749                depth,
4750            )?;
4751
4752            _prev_end_offset = cur_offset + envelope_size;
4753            if 3 > max_ordinal {
4754                return Ok(());
4755            }
4756
4757            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4758            // are envelope_size bytes.
4759            let cur_offset: usize = (3 - 1) * envelope_size;
4760
4761            // Zero reserved fields.
4762            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4763
4764            // Safety:
4765            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4766            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4767            //   envelope_size bytes, there is always sufficient room.
4768            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4769                self.rx_bitrate_mbps.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4770                encoder,
4771                offset + cur_offset,
4772                depth,
4773            )?;
4774
4775            _prev_end_offset = cur_offset + envelope_size;
4776            if 4 > max_ordinal {
4777                return Ok(());
4778            }
4779
4780            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4781            // are envelope_size bytes.
4782            let cur_offset: usize = (4 - 1) * envelope_size;
4783
4784            // Zero reserved fields.
4785            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4786
4787            // Safety:
4788            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4789            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4790            //   envelope_size bytes, there is always sufficient room.
4791            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4792                self.frequency_mhz.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4793                encoder,
4794                offset + cur_offset,
4795                depth,
4796            )?;
4797
4798            _prev_end_offset = cur_offset + envelope_size;
4799
4800            Ok(())
4801        }
4802    }
4803
4804    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4805        for SupplicantStaIfaceGetSignalPollResultsResponse
4806    {
4807        #[inline(always)]
4808        fn new_empty() -> Self {
4809            Self::default()
4810        }
4811
4812        unsafe fn decode(
4813            &mut self,
4814            decoder: &mut fidl::encoding::Decoder<'_, D>,
4815            offset: usize,
4816            mut depth: fidl::encoding::Depth,
4817        ) -> fidl::Result<()> {
4818            decoder.debug_check_bounds::<Self>(offset);
4819            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4820                None => return Err(fidl::Error::NotNullable),
4821                Some(len) => len,
4822            };
4823            // Calling decoder.out_of_line_offset(0) is not allowed.
4824            if len == 0 {
4825                return Ok(());
4826            };
4827            depth.increment()?;
4828            let envelope_size = 8;
4829            let bytes_len = len * envelope_size;
4830            let offset = decoder.out_of_line_offset(bytes_len)?;
4831            // Decode the envelope for each type.
4832            let mut _next_ordinal_to_read = 0;
4833            let mut next_offset = offset;
4834            let end_offset = offset + bytes_len;
4835            _next_ordinal_to_read += 1;
4836            if next_offset >= end_offset {
4837                return Ok(());
4838            }
4839
4840            // Decode unknown envelopes for gaps in ordinals.
4841            while _next_ordinal_to_read < 1 {
4842                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4843                _next_ordinal_to_read += 1;
4844                next_offset += envelope_size;
4845            }
4846
4847            let next_out_of_line = decoder.next_out_of_line();
4848            let handles_before = decoder.remaining_handles();
4849            if let Some((inlined, num_bytes, num_handles)) =
4850                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4851            {
4852                let member_inline_size =
4853                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4854                if inlined != (member_inline_size <= 4) {
4855                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4856                }
4857                let inner_offset;
4858                let mut inner_depth = depth.clone();
4859                if inlined {
4860                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4861                    inner_offset = next_offset;
4862                } else {
4863                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4864                    inner_depth.increment()?;
4865                }
4866                let val_ref = self.current_rssi_dbm.get_or_insert_with(|| fidl::new_empty!(i32, D));
4867                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
4868                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4869                {
4870                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4871                }
4872                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4873                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4874                }
4875            }
4876
4877            next_offset += envelope_size;
4878            _next_ordinal_to_read += 1;
4879            if next_offset >= end_offset {
4880                return Ok(());
4881            }
4882
4883            // Decode unknown envelopes for gaps in ordinals.
4884            while _next_ordinal_to_read < 2 {
4885                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4886                _next_ordinal_to_read += 1;
4887                next_offset += envelope_size;
4888            }
4889
4890            let next_out_of_line = decoder.next_out_of_line();
4891            let handles_before = decoder.remaining_handles();
4892            if let Some((inlined, num_bytes, num_handles)) =
4893                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4894            {
4895                let member_inline_size =
4896                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4897                if inlined != (member_inline_size <= 4) {
4898                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4899                }
4900                let inner_offset;
4901                let mut inner_depth = depth.clone();
4902                if inlined {
4903                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4904                    inner_offset = next_offset;
4905                } else {
4906                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4907                    inner_depth.increment()?;
4908                }
4909                let val_ref = self.tx_bitrate_mbps.get_or_insert_with(|| fidl::new_empty!(u32, D));
4910                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4911                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4912                {
4913                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4914                }
4915                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4916                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4917                }
4918            }
4919
4920            next_offset += envelope_size;
4921            _next_ordinal_to_read += 1;
4922            if next_offset >= end_offset {
4923                return Ok(());
4924            }
4925
4926            // Decode unknown envelopes for gaps in ordinals.
4927            while _next_ordinal_to_read < 3 {
4928                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4929                _next_ordinal_to_read += 1;
4930                next_offset += envelope_size;
4931            }
4932
4933            let next_out_of_line = decoder.next_out_of_line();
4934            let handles_before = decoder.remaining_handles();
4935            if let Some((inlined, num_bytes, num_handles)) =
4936                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4937            {
4938                let member_inline_size =
4939                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4940                if inlined != (member_inline_size <= 4) {
4941                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4942                }
4943                let inner_offset;
4944                let mut inner_depth = depth.clone();
4945                if inlined {
4946                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4947                    inner_offset = next_offset;
4948                } else {
4949                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4950                    inner_depth.increment()?;
4951                }
4952                let val_ref = self.rx_bitrate_mbps.get_or_insert_with(|| fidl::new_empty!(u32, D));
4953                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4954                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4955                {
4956                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4957                }
4958                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4959                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4960                }
4961            }
4962
4963            next_offset += envelope_size;
4964            _next_ordinal_to_read += 1;
4965            if next_offset >= end_offset {
4966                return Ok(());
4967            }
4968
4969            // Decode unknown envelopes for gaps in ordinals.
4970            while _next_ordinal_to_read < 4 {
4971                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4972                _next_ordinal_to_read += 1;
4973                next_offset += envelope_size;
4974            }
4975
4976            let next_out_of_line = decoder.next_out_of_line();
4977            let handles_before = decoder.remaining_handles();
4978            if let Some((inlined, num_bytes, num_handles)) =
4979                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4980            {
4981                let member_inline_size =
4982                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4983                if inlined != (member_inline_size <= 4) {
4984                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4985                }
4986                let inner_offset;
4987                let mut inner_depth = depth.clone();
4988                if inlined {
4989                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4990                    inner_offset = next_offset;
4991                } else {
4992                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4993                    inner_depth.increment()?;
4994                }
4995                let val_ref = self.frequency_mhz.get_or_insert_with(|| fidl::new_empty!(u32, D));
4996                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4997                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4998                {
4999                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5000                }
5001                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5002                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5003                }
5004            }
5005
5006            next_offset += envelope_size;
5007
5008            // Decode the remaining unknown envelopes.
5009            while next_offset < end_offset {
5010                _next_ordinal_to_read += 1;
5011                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5012                next_offset += envelope_size;
5013            }
5014
5015            Ok(())
5016        }
5017    }
5018
5019    impl SupplicantStaNetworkSetBssidRequest {
5020        #[inline(always)]
5021        fn max_ordinal_present(&self) -> u64 {
5022            if let Some(_) = self.bssid {
5023                return 1;
5024            }
5025            0
5026        }
5027    }
5028
5029    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetBssidRequest {
5030        type Borrowed<'a> = &'a Self;
5031        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5032            value
5033        }
5034    }
5035
5036    unsafe impl fidl::encoding::TypeMarker for SupplicantStaNetworkSetBssidRequest {
5037        type Owned = Self;
5038
5039        #[inline(always)]
5040        fn inline_align(_context: fidl::encoding::Context) -> usize {
5041            8
5042        }
5043
5044        #[inline(always)]
5045        fn inline_size(_context: fidl::encoding::Context) -> usize {
5046            16
5047        }
5048    }
5049
5050    unsafe impl<D: fidl::encoding::ResourceDialect>
5051        fidl::encoding::Encode<SupplicantStaNetworkSetBssidRequest, D>
5052        for &SupplicantStaNetworkSetBssidRequest
5053    {
5054        unsafe fn encode(
5055            self,
5056            encoder: &mut fidl::encoding::Encoder<'_, D>,
5057            offset: usize,
5058            mut depth: fidl::encoding::Depth,
5059        ) -> fidl::Result<()> {
5060            encoder.debug_check_bounds::<SupplicantStaNetworkSetBssidRequest>(offset);
5061            // Vector header
5062            let max_ordinal: u64 = self.max_ordinal_present();
5063            encoder.write_num(max_ordinal, offset);
5064            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5065            // Calling encoder.out_of_line_offset(0) is not allowed.
5066            if max_ordinal == 0 {
5067                return Ok(());
5068            }
5069            depth.increment()?;
5070            let envelope_size = 8;
5071            let bytes_len = max_ordinal as usize * envelope_size;
5072            #[allow(unused_variables)]
5073            let offset = encoder.out_of_line_offset(bytes_len);
5074            let mut _prev_end_offset: usize = 0;
5075            if 1 > max_ordinal {
5076                return Ok(());
5077            }
5078
5079            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5080            // are envelope_size bytes.
5081            let cur_offset: usize = (1 - 1) * envelope_size;
5082
5083            // Zero reserved fields.
5084            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5085
5086            // Safety:
5087            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5088            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5089            //   envelope_size bytes, there is always sufficient room.
5090            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5091                self.bssid
5092                    .as_ref()
5093                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5094                encoder,
5095                offset + cur_offset,
5096                depth,
5097            )?;
5098
5099            _prev_end_offset = cur_offset + envelope_size;
5100
5101            Ok(())
5102        }
5103    }
5104
5105    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5106        for SupplicantStaNetworkSetBssidRequest
5107    {
5108        #[inline(always)]
5109        fn new_empty() -> Self {
5110            Self::default()
5111        }
5112
5113        unsafe fn decode(
5114            &mut self,
5115            decoder: &mut fidl::encoding::Decoder<'_, D>,
5116            offset: usize,
5117            mut depth: fidl::encoding::Depth,
5118        ) -> fidl::Result<()> {
5119            decoder.debug_check_bounds::<Self>(offset);
5120            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5121                None => return Err(fidl::Error::NotNullable),
5122                Some(len) => len,
5123            };
5124            // Calling decoder.out_of_line_offset(0) is not allowed.
5125            if len == 0 {
5126                return Ok(());
5127            };
5128            depth.increment()?;
5129            let envelope_size = 8;
5130            let bytes_len = len * envelope_size;
5131            let offset = decoder.out_of_line_offset(bytes_len)?;
5132            // Decode the envelope for each type.
5133            let mut _next_ordinal_to_read = 0;
5134            let mut next_offset = offset;
5135            let end_offset = offset + bytes_len;
5136            _next_ordinal_to_read += 1;
5137            if next_offset >= end_offset {
5138                return Ok(());
5139            }
5140
5141            // Decode unknown envelopes for gaps in ordinals.
5142            while _next_ordinal_to_read < 1 {
5143                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5144                _next_ordinal_to_read += 1;
5145                next_offset += envelope_size;
5146            }
5147
5148            let next_out_of_line = decoder.next_out_of_line();
5149            let handles_before = decoder.remaining_handles();
5150            if let Some((inlined, num_bytes, num_handles)) =
5151                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5152            {
5153                let member_inline_size =
5154                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5155                        decoder.context,
5156                    );
5157                if inlined != (member_inline_size <= 4) {
5158                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5159                }
5160                let inner_offset;
5161                let mut inner_depth = depth.clone();
5162                if inlined {
5163                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5164                    inner_offset = next_offset;
5165                } else {
5166                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5167                    inner_depth.increment()?;
5168                }
5169                let val_ref = self
5170                    .bssid
5171                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5172                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5173                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5174                {
5175                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5176                }
5177                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5178                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5179                }
5180            }
5181
5182            next_offset += envelope_size;
5183
5184            // Decode the remaining unknown envelopes.
5185            while next_offset < end_offset {
5186                _next_ordinal_to_read += 1;
5187                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5188                next_offset += envelope_size;
5189            }
5190
5191            Ok(())
5192        }
5193    }
5194
5195    impl SupplicantStaNetworkSetKeyMgmtRequest {
5196        #[inline(always)]
5197        fn max_ordinal_present(&self) -> u64 {
5198            if let Some(_) = self.key_mgmt_mask {
5199                return 1;
5200            }
5201            0
5202        }
5203    }
5204
5205    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetKeyMgmtRequest {
5206        type Borrowed<'a> = &'a Self;
5207        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5208            value
5209        }
5210    }
5211
5212    unsafe impl fidl::encoding::TypeMarker for SupplicantStaNetworkSetKeyMgmtRequest {
5213        type Owned = Self;
5214
5215        #[inline(always)]
5216        fn inline_align(_context: fidl::encoding::Context) -> usize {
5217            8
5218        }
5219
5220        #[inline(always)]
5221        fn inline_size(_context: fidl::encoding::Context) -> usize {
5222            16
5223        }
5224    }
5225
5226    unsafe impl<D: fidl::encoding::ResourceDialect>
5227        fidl::encoding::Encode<SupplicantStaNetworkSetKeyMgmtRequest, D>
5228        for &SupplicantStaNetworkSetKeyMgmtRequest
5229    {
5230        unsafe fn encode(
5231            self,
5232            encoder: &mut fidl::encoding::Encoder<'_, D>,
5233            offset: usize,
5234            mut depth: fidl::encoding::Depth,
5235        ) -> fidl::Result<()> {
5236            encoder.debug_check_bounds::<SupplicantStaNetworkSetKeyMgmtRequest>(offset);
5237            // Vector header
5238            let max_ordinal: u64 = self.max_ordinal_present();
5239            encoder.write_num(max_ordinal, offset);
5240            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5241            // Calling encoder.out_of_line_offset(0) is not allowed.
5242            if max_ordinal == 0 {
5243                return Ok(());
5244            }
5245            depth.increment()?;
5246            let envelope_size = 8;
5247            let bytes_len = max_ordinal as usize * envelope_size;
5248            #[allow(unused_variables)]
5249            let offset = encoder.out_of_line_offset(bytes_len);
5250            let mut _prev_end_offset: usize = 0;
5251            if 1 > max_ordinal {
5252                return Ok(());
5253            }
5254
5255            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5256            // are envelope_size bytes.
5257            let cur_offset: usize = (1 - 1) * envelope_size;
5258
5259            // Zero reserved fields.
5260            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5261
5262            // Safety:
5263            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5264            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5265            //   envelope_size bytes, there is always sufficient room.
5266            fidl::encoding::encode_in_envelope_optional::<KeyMgmtMask, D>(
5267                self.key_mgmt_mask
5268                    .as_ref()
5269                    .map(<KeyMgmtMask as fidl::encoding::ValueTypeMarker>::borrow),
5270                encoder,
5271                offset + cur_offset,
5272                depth,
5273            )?;
5274
5275            _prev_end_offset = cur_offset + envelope_size;
5276
5277            Ok(())
5278        }
5279    }
5280
5281    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5282        for SupplicantStaNetworkSetKeyMgmtRequest
5283    {
5284        #[inline(always)]
5285        fn new_empty() -> Self {
5286            Self::default()
5287        }
5288
5289        unsafe fn decode(
5290            &mut self,
5291            decoder: &mut fidl::encoding::Decoder<'_, D>,
5292            offset: usize,
5293            mut depth: fidl::encoding::Depth,
5294        ) -> fidl::Result<()> {
5295            decoder.debug_check_bounds::<Self>(offset);
5296            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5297                None => return Err(fidl::Error::NotNullable),
5298                Some(len) => len,
5299            };
5300            // Calling decoder.out_of_line_offset(0) is not allowed.
5301            if len == 0 {
5302                return Ok(());
5303            };
5304            depth.increment()?;
5305            let envelope_size = 8;
5306            let bytes_len = len * envelope_size;
5307            let offset = decoder.out_of_line_offset(bytes_len)?;
5308            // Decode the envelope for each type.
5309            let mut _next_ordinal_to_read = 0;
5310            let mut next_offset = offset;
5311            let end_offset = offset + bytes_len;
5312            _next_ordinal_to_read += 1;
5313            if next_offset >= end_offset {
5314                return Ok(());
5315            }
5316
5317            // Decode unknown envelopes for gaps in ordinals.
5318            while _next_ordinal_to_read < 1 {
5319                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5320                _next_ordinal_to_read += 1;
5321                next_offset += envelope_size;
5322            }
5323
5324            let next_out_of_line = decoder.next_out_of_line();
5325            let handles_before = decoder.remaining_handles();
5326            if let Some((inlined, num_bytes, num_handles)) =
5327                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5328            {
5329                let member_inline_size =
5330                    <KeyMgmtMask as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5331                if inlined != (member_inline_size <= 4) {
5332                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5333                }
5334                let inner_offset;
5335                let mut inner_depth = depth.clone();
5336                if inlined {
5337                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5338                    inner_offset = next_offset;
5339                } else {
5340                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5341                    inner_depth.increment()?;
5342                }
5343                let val_ref =
5344                    self.key_mgmt_mask.get_or_insert_with(|| fidl::new_empty!(KeyMgmtMask, D));
5345                fidl::decode!(KeyMgmtMask, D, val_ref, decoder, inner_offset, inner_depth)?;
5346                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5347                {
5348                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5349                }
5350                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5351                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5352                }
5353            }
5354
5355            next_offset += envelope_size;
5356
5357            // Decode the remaining unknown envelopes.
5358            while next_offset < end_offset {
5359                _next_ordinal_to_read += 1;
5360                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5361                next_offset += envelope_size;
5362            }
5363
5364            Ok(())
5365        }
5366    }
5367
5368    impl SupplicantStaNetworkSetPskPassphraseRequest {
5369        #[inline(always)]
5370        fn max_ordinal_present(&self) -> u64 {
5371            if let Some(_) = self.passphrase {
5372                return 1;
5373            }
5374            0
5375        }
5376    }
5377
5378    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetPskPassphraseRequest {
5379        type Borrowed<'a> = &'a Self;
5380        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5381            value
5382        }
5383    }
5384
5385    unsafe impl fidl::encoding::TypeMarker for SupplicantStaNetworkSetPskPassphraseRequest {
5386        type Owned = Self;
5387
5388        #[inline(always)]
5389        fn inline_align(_context: fidl::encoding::Context) -> usize {
5390            8
5391        }
5392
5393        #[inline(always)]
5394        fn inline_size(_context: fidl::encoding::Context) -> usize {
5395            16
5396        }
5397    }
5398
5399    unsafe impl<D: fidl::encoding::ResourceDialect>
5400        fidl::encoding::Encode<SupplicantStaNetworkSetPskPassphraseRequest, D>
5401        for &SupplicantStaNetworkSetPskPassphraseRequest
5402    {
5403        unsafe fn encode(
5404            self,
5405            encoder: &mut fidl::encoding::Encoder<'_, D>,
5406            offset: usize,
5407            mut depth: fidl::encoding::Depth,
5408        ) -> fidl::Result<()> {
5409            encoder.debug_check_bounds::<SupplicantStaNetworkSetPskPassphraseRequest>(offset);
5410            // Vector header
5411            let max_ordinal: u64 = self.max_ordinal_present();
5412            encoder.write_num(max_ordinal, offset);
5413            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5414            // Calling encoder.out_of_line_offset(0) is not allowed.
5415            if max_ordinal == 0 {
5416                return Ok(());
5417            }
5418            depth.increment()?;
5419            let envelope_size = 8;
5420            let bytes_len = max_ordinal as usize * envelope_size;
5421            #[allow(unused_variables)]
5422            let offset = encoder.out_of_line_offset(bytes_len);
5423            let mut _prev_end_offset: usize = 0;
5424            if 1 > max_ordinal {
5425                return Ok(());
5426            }
5427
5428            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5429            // are envelope_size bytes.
5430            let cur_offset: usize = (1 - 1) * envelope_size;
5431
5432            // Zero reserved fields.
5433            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5434
5435            // Safety:
5436            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5437            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5438            //   envelope_size bytes, there is always sufficient room.
5439            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
5440            self.passphrase.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
5441            encoder, offset + cur_offset, depth
5442        )?;
5443
5444            _prev_end_offset = cur_offset + envelope_size;
5445
5446            Ok(())
5447        }
5448    }
5449
5450    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5451        for SupplicantStaNetworkSetPskPassphraseRequest
5452    {
5453        #[inline(always)]
5454        fn new_empty() -> Self {
5455            Self::default()
5456        }
5457
5458        unsafe fn decode(
5459            &mut self,
5460            decoder: &mut fidl::encoding::Decoder<'_, D>,
5461            offset: usize,
5462            mut depth: fidl::encoding::Depth,
5463        ) -> fidl::Result<()> {
5464            decoder.debug_check_bounds::<Self>(offset);
5465            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5466                None => return Err(fidl::Error::NotNullable),
5467                Some(len) => len,
5468            };
5469            // Calling decoder.out_of_line_offset(0) is not allowed.
5470            if len == 0 {
5471                return Ok(());
5472            };
5473            depth.increment()?;
5474            let envelope_size = 8;
5475            let bytes_len = len * envelope_size;
5476            let offset = decoder.out_of_line_offset(bytes_len)?;
5477            // Decode the envelope for each type.
5478            let mut _next_ordinal_to_read = 0;
5479            let mut next_offset = offset;
5480            let end_offset = offset + bytes_len;
5481            _next_ordinal_to_read += 1;
5482            if next_offset >= end_offset {
5483                return Ok(());
5484            }
5485
5486            // Decode unknown envelopes for gaps in ordinals.
5487            while _next_ordinal_to_read < 1 {
5488                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5489                _next_ordinal_to_read += 1;
5490                next_offset += envelope_size;
5491            }
5492
5493            let next_out_of_line = decoder.next_out_of_line();
5494            let handles_before = decoder.remaining_handles();
5495            if let Some((inlined, num_bytes, num_handles)) =
5496                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5497            {
5498                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5499                if inlined != (member_inline_size <= 4) {
5500                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5501                }
5502                let inner_offset;
5503                let mut inner_depth = depth.clone();
5504                if inlined {
5505                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5506                    inner_offset = next_offset;
5507                } else {
5508                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5509                    inner_depth.increment()?;
5510                }
5511                let val_ref = self.passphrase.get_or_insert_with(|| {
5512                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
5513                });
5514                fidl::decode!(
5515                    fidl::encoding::UnboundedVector<u8>,
5516                    D,
5517                    val_ref,
5518                    decoder,
5519                    inner_offset,
5520                    inner_depth
5521                )?;
5522                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5523                {
5524                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5525                }
5526                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5527                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5528                }
5529            }
5530
5531            next_offset += envelope_size;
5532
5533            // Decode the remaining unknown envelopes.
5534            while next_offset < end_offset {
5535                _next_ordinal_to_read += 1;
5536                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5537                next_offset += envelope_size;
5538            }
5539
5540            Ok(())
5541        }
5542    }
5543
5544    impl SupplicantStaNetworkSetSaePasswordRequest {
5545        #[inline(always)]
5546        fn max_ordinal_present(&self) -> u64 {
5547            if let Some(_) = self.password {
5548                return 1;
5549            }
5550            0
5551        }
5552    }
5553
5554    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetSaePasswordRequest {
5555        type Borrowed<'a> = &'a Self;
5556        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5557            value
5558        }
5559    }
5560
5561    unsafe impl fidl::encoding::TypeMarker for SupplicantStaNetworkSetSaePasswordRequest {
5562        type Owned = Self;
5563
5564        #[inline(always)]
5565        fn inline_align(_context: fidl::encoding::Context) -> usize {
5566            8
5567        }
5568
5569        #[inline(always)]
5570        fn inline_size(_context: fidl::encoding::Context) -> usize {
5571            16
5572        }
5573    }
5574
5575    unsafe impl<D: fidl::encoding::ResourceDialect>
5576        fidl::encoding::Encode<SupplicantStaNetworkSetSaePasswordRequest, D>
5577        for &SupplicantStaNetworkSetSaePasswordRequest
5578    {
5579        unsafe fn encode(
5580            self,
5581            encoder: &mut fidl::encoding::Encoder<'_, D>,
5582            offset: usize,
5583            mut depth: fidl::encoding::Depth,
5584        ) -> fidl::Result<()> {
5585            encoder.debug_check_bounds::<SupplicantStaNetworkSetSaePasswordRequest>(offset);
5586            // Vector header
5587            let max_ordinal: u64 = self.max_ordinal_present();
5588            encoder.write_num(max_ordinal, offset);
5589            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5590            // Calling encoder.out_of_line_offset(0) is not allowed.
5591            if max_ordinal == 0 {
5592                return Ok(());
5593            }
5594            depth.increment()?;
5595            let envelope_size = 8;
5596            let bytes_len = max_ordinal as usize * envelope_size;
5597            #[allow(unused_variables)]
5598            let offset = encoder.out_of_line_offset(bytes_len);
5599            let mut _prev_end_offset: usize = 0;
5600            if 1 > max_ordinal {
5601                return Ok(());
5602            }
5603
5604            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5605            // are envelope_size bytes.
5606            let cur_offset: usize = (1 - 1) * envelope_size;
5607
5608            // Zero reserved fields.
5609            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5610
5611            // Safety:
5612            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5613            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5614            //   envelope_size bytes, there is always sufficient room.
5615            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
5616            self.password.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
5617            encoder, offset + cur_offset, depth
5618        )?;
5619
5620            _prev_end_offset = cur_offset + envelope_size;
5621
5622            Ok(())
5623        }
5624    }
5625
5626    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5627        for SupplicantStaNetworkSetSaePasswordRequest
5628    {
5629        #[inline(always)]
5630        fn new_empty() -> Self {
5631            Self::default()
5632        }
5633
5634        unsafe fn decode(
5635            &mut self,
5636            decoder: &mut fidl::encoding::Decoder<'_, D>,
5637            offset: usize,
5638            mut depth: fidl::encoding::Depth,
5639        ) -> fidl::Result<()> {
5640            decoder.debug_check_bounds::<Self>(offset);
5641            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5642                None => return Err(fidl::Error::NotNullable),
5643                Some(len) => len,
5644            };
5645            // Calling decoder.out_of_line_offset(0) is not allowed.
5646            if len == 0 {
5647                return Ok(());
5648            };
5649            depth.increment()?;
5650            let envelope_size = 8;
5651            let bytes_len = len * envelope_size;
5652            let offset = decoder.out_of_line_offset(bytes_len)?;
5653            // Decode the envelope for each type.
5654            let mut _next_ordinal_to_read = 0;
5655            let mut next_offset = offset;
5656            let end_offset = offset + bytes_len;
5657            _next_ordinal_to_read += 1;
5658            if next_offset >= end_offset {
5659                return Ok(());
5660            }
5661
5662            // Decode unknown envelopes for gaps in ordinals.
5663            while _next_ordinal_to_read < 1 {
5664                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5665                _next_ordinal_to_read += 1;
5666                next_offset += envelope_size;
5667            }
5668
5669            let next_out_of_line = decoder.next_out_of_line();
5670            let handles_before = decoder.remaining_handles();
5671            if let Some((inlined, num_bytes, num_handles)) =
5672                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5673            {
5674                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5675                if inlined != (member_inline_size <= 4) {
5676                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5677                }
5678                let inner_offset;
5679                let mut inner_depth = depth.clone();
5680                if inlined {
5681                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5682                    inner_offset = next_offset;
5683                } else {
5684                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5685                    inner_depth.increment()?;
5686                }
5687                let val_ref = self.password.get_or_insert_with(|| {
5688                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
5689                });
5690                fidl::decode!(
5691                    fidl::encoding::UnboundedVector<u8>,
5692                    D,
5693                    val_ref,
5694                    decoder,
5695                    inner_offset,
5696                    inner_depth
5697                )?;
5698                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5699                {
5700                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5701                }
5702                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5703                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5704                }
5705            }
5706
5707            next_offset += envelope_size;
5708
5709            // Decode the remaining unknown envelopes.
5710            while next_offset < end_offset {
5711                _next_ordinal_to_read += 1;
5712                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5713                next_offset += envelope_size;
5714            }
5715
5716            Ok(())
5717        }
5718    }
5719
5720    impl SupplicantStaNetworkSetSsidRequest {
5721        #[inline(always)]
5722        fn max_ordinal_present(&self) -> u64 {
5723            if let Some(_) = self.ssid {
5724                return 1;
5725            }
5726            0
5727        }
5728    }
5729
5730    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetSsidRequest {
5731        type Borrowed<'a> = &'a Self;
5732        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5733            value
5734        }
5735    }
5736
5737    unsafe impl fidl::encoding::TypeMarker for SupplicantStaNetworkSetSsidRequest {
5738        type Owned = Self;
5739
5740        #[inline(always)]
5741        fn inline_align(_context: fidl::encoding::Context) -> usize {
5742            8
5743        }
5744
5745        #[inline(always)]
5746        fn inline_size(_context: fidl::encoding::Context) -> usize {
5747            16
5748        }
5749    }
5750
5751    unsafe impl<D: fidl::encoding::ResourceDialect>
5752        fidl::encoding::Encode<SupplicantStaNetworkSetSsidRequest, D>
5753        for &SupplicantStaNetworkSetSsidRequest
5754    {
5755        unsafe fn encode(
5756            self,
5757            encoder: &mut fidl::encoding::Encoder<'_, D>,
5758            offset: usize,
5759            mut depth: fidl::encoding::Depth,
5760        ) -> fidl::Result<()> {
5761            encoder.debug_check_bounds::<SupplicantStaNetworkSetSsidRequest>(offset);
5762            // Vector header
5763            let max_ordinal: u64 = self.max_ordinal_present();
5764            encoder.write_num(max_ordinal, offset);
5765            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5766            // Calling encoder.out_of_line_offset(0) is not allowed.
5767            if max_ordinal == 0 {
5768                return Ok(());
5769            }
5770            depth.increment()?;
5771            let envelope_size = 8;
5772            let bytes_len = max_ordinal as usize * envelope_size;
5773            #[allow(unused_variables)]
5774            let offset = encoder.out_of_line_offset(bytes_len);
5775            let mut _prev_end_offset: usize = 0;
5776            if 1 > max_ordinal {
5777                return Ok(());
5778            }
5779
5780            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5781            // are envelope_size bytes.
5782            let cur_offset: usize = (1 - 1) * envelope_size;
5783
5784            // Zero reserved fields.
5785            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5786
5787            // Safety:
5788            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5789            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5790            //   envelope_size bytes, there is always sufficient room.
5791            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
5792                self.ssid.as_ref().map(
5793                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
5794                ),
5795                encoder,
5796                offset + cur_offset,
5797                depth,
5798            )?;
5799
5800            _prev_end_offset = cur_offset + envelope_size;
5801
5802            Ok(())
5803        }
5804    }
5805
5806    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5807        for SupplicantStaNetworkSetSsidRequest
5808    {
5809        #[inline(always)]
5810        fn new_empty() -> Self {
5811            Self::default()
5812        }
5813
5814        unsafe fn decode(
5815            &mut self,
5816            decoder: &mut fidl::encoding::Decoder<'_, D>,
5817            offset: usize,
5818            mut depth: fidl::encoding::Depth,
5819        ) -> fidl::Result<()> {
5820            decoder.debug_check_bounds::<Self>(offset);
5821            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5822                None => return Err(fidl::Error::NotNullable),
5823                Some(len) => len,
5824            };
5825            // Calling decoder.out_of_line_offset(0) is not allowed.
5826            if len == 0 {
5827                return Ok(());
5828            };
5829            depth.increment()?;
5830            let envelope_size = 8;
5831            let bytes_len = len * envelope_size;
5832            let offset = decoder.out_of_line_offset(bytes_len)?;
5833            // Decode the envelope for each type.
5834            let mut _next_ordinal_to_read = 0;
5835            let mut next_offset = offset;
5836            let end_offset = offset + bytes_len;
5837            _next_ordinal_to_read += 1;
5838            if next_offset >= end_offset {
5839                return Ok(());
5840            }
5841
5842            // Decode unknown envelopes for gaps in ordinals.
5843            while _next_ordinal_to_read < 1 {
5844                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5845                _next_ordinal_to_read += 1;
5846                next_offset += envelope_size;
5847            }
5848
5849            let next_out_of_line = decoder.next_out_of_line();
5850            let handles_before = decoder.remaining_handles();
5851            if let Some((inlined, num_bytes, num_handles)) =
5852                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5853            {
5854                let member_inline_size =
5855                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
5856                        decoder.context,
5857                    );
5858                if inlined != (member_inline_size <= 4) {
5859                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5860                }
5861                let inner_offset;
5862                let mut inner_depth = depth.clone();
5863                if inlined {
5864                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5865                    inner_offset = next_offset;
5866                } else {
5867                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5868                    inner_depth.increment()?;
5869                }
5870                let val_ref = self
5871                    .ssid
5872                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
5873                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
5874                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5875                {
5876                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5877                }
5878                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5879                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5880                }
5881            }
5882
5883            next_offset += envelope_size;
5884
5885            // Decode the remaining unknown envelopes.
5886            while next_offset < end_offset {
5887                _next_ordinal_to_read += 1;
5888                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5889                next_offset += envelope_size;
5890            }
5891
5892            Ok(())
5893        }
5894    }
5895
5896    impl SupplicantStaNetworkSetWepKeyRequest {
5897        #[inline(always)]
5898        fn max_ordinal_present(&self) -> u64 {
5899            if let Some(_) = self.key_idx {
5900                return 2;
5901            }
5902            if let Some(_) = self.key {
5903                return 1;
5904            }
5905            0
5906        }
5907    }
5908
5909    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetWepKeyRequest {
5910        type Borrowed<'a> = &'a Self;
5911        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5912            value
5913        }
5914    }
5915
5916    unsafe impl fidl::encoding::TypeMarker for SupplicantStaNetworkSetWepKeyRequest {
5917        type Owned = Self;
5918
5919        #[inline(always)]
5920        fn inline_align(_context: fidl::encoding::Context) -> usize {
5921            8
5922        }
5923
5924        #[inline(always)]
5925        fn inline_size(_context: fidl::encoding::Context) -> usize {
5926            16
5927        }
5928    }
5929
5930    unsafe impl<D: fidl::encoding::ResourceDialect>
5931        fidl::encoding::Encode<SupplicantStaNetworkSetWepKeyRequest, D>
5932        for &SupplicantStaNetworkSetWepKeyRequest
5933    {
5934        unsafe fn encode(
5935            self,
5936            encoder: &mut fidl::encoding::Encoder<'_, D>,
5937            offset: usize,
5938            mut depth: fidl::encoding::Depth,
5939        ) -> fidl::Result<()> {
5940            encoder.debug_check_bounds::<SupplicantStaNetworkSetWepKeyRequest>(offset);
5941            // Vector header
5942            let max_ordinal: u64 = self.max_ordinal_present();
5943            encoder.write_num(max_ordinal, offset);
5944            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5945            // Calling encoder.out_of_line_offset(0) is not allowed.
5946            if max_ordinal == 0 {
5947                return Ok(());
5948            }
5949            depth.increment()?;
5950            let envelope_size = 8;
5951            let bytes_len = max_ordinal as usize * envelope_size;
5952            #[allow(unused_variables)]
5953            let offset = encoder.out_of_line_offset(bytes_len);
5954            let mut _prev_end_offset: usize = 0;
5955            if 1 > max_ordinal {
5956                return Ok(());
5957            }
5958
5959            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5960            // are envelope_size bytes.
5961            let cur_offset: usize = (1 - 1) * envelope_size;
5962
5963            // Zero reserved fields.
5964            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5965
5966            // Safety:
5967            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5968            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5969            //   envelope_size bytes, there is always sufficient room.
5970            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
5971            self.key.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
5972            encoder, offset + cur_offset, depth
5973        )?;
5974
5975            _prev_end_offset = cur_offset + envelope_size;
5976            if 2 > max_ordinal {
5977                return Ok(());
5978            }
5979
5980            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5981            // are envelope_size bytes.
5982            let cur_offset: usize = (2 - 1) * envelope_size;
5983
5984            // Zero reserved fields.
5985            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5986
5987            // Safety:
5988            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5989            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5990            //   envelope_size bytes, there is always sufficient room.
5991            fidl::encoding::encode_in_envelope_optional::<i32, D>(
5992                self.key_idx.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
5993                encoder,
5994                offset + cur_offset,
5995                depth,
5996            )?;
5997
5998            _prev_end_offset = cur_offset + envelope_size;
5999
6000            Ok(())
6001        }
6002    }
6003
6004    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6005        for SupplicantStaNetworkSetWepKeyRequest
6006    {
6007        #[inline(always)]
6008        fn new_empty() -> Self {
6009            Self::default()
6010        }
6011
6012        unsafe fn decode(
6013            &mut self,
6014            decoder: &mut fidl::encoding::Decoder<'_, D>,
6015            offset: usize,
6016            mut depth: fidl::encoding::Depth,
6017        ) -> fidl::Result<()> {
6018            decoder.debug_check_bounds::<Self>(offset);
6019            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6020                None => return Err(fidl::Error::NotNullable),
6021                Some(len) => len,
6022            };
6023            // Calling decoder.out_of_line_offset(0) is not allowed.
6024            if len == 0 {
6025                return Ok(());
6026            };
6027            depth.increment()?;
6028            let envelope_size = 8;
6029            let bytes_len = len * envelope_size;
6030            let offset = decoder.out_of_line_offset(bytes_len)?;
6031            // Decode the envelope for each type.
6032            let mut _next_ordinal_to_read = 0;
6033            let mut next_offset = offset;
6034            let end_offset = offset + bytes_len;
6035            _next_ordinal_to_read += 1;
6036            if next_offset >= end_offset {
6037                return Ok(());
6038            }
6039
6040            // Decode unknown envelopes for gaps in ordinals.
6041            while _next_ordinal_to_read < 1 {
6042                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6043                _next_ordinal_to_read += 1;
6044                next_offset += envelope_size;
6045            }
6046
6047            let next_out_of_line = decoder.next_out_of_line();
6048            let handles_before = decoder.remaining_handles();
6049            if let Some((inlined, num_bytes, num_handles)) =
6050                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6051            {
6052                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6053                if inlined != (member_inline_size <= 4) {
6054                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6055                }
6056                let inner_offset;
6057                let mut inner_depth = depth.clone();
6058                if inlined {
6059                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6060                    inner_offset = next_offset;
6061                } else {
6062                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6063                    inner_depth.increment()?;
6064                }
6065                let val_ref = self.key.get_or_insert_with(|| {
6066                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
6067                });
6068                fidl::decode!(
6069                    fidl::encoding::UnboundedVector<u8>,
6070                    D,
6071                    val_ref,
6072                    decoder,
6073                    inner_offset,
6074                    inner_depth
6075                )?;
6076                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6077                {
6078                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6079                }
6080                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6081                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6082                }
6083            }
6084
6085            next_offset += envelope_size;
6086            _next_ordinal_to_read += 1;
6087            if next_offset >= end_offset {
6088                return Ok(());
6089            }
6090
6091            // Decode unknown envelopes for gaps in ordinals.
6092            while _next_ordinal_to_read < 2 {
6093                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6094                _next_ordinal_to_read += 1;
6095                next_offset += envelope_size;
6096            }
6097
6098            let next_out_of_line = decoder.next_out_of_line();
6099            let handles_before = decoder.remaining_handles();
6100            if let Some((inlined, num_bytes, num_handles)) =
6101                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6102            {
6103                let member_inline_size =
6104                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6105                if inlined != (member_inline_size <= 4) {
6106                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6107                }
6108                let inner_offset;
6109                let mut inner_depth = depth.clone();
6110                if inlined {
6111                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6112                    inner_offset = next_offset;
6113                } else {
6114                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6115                    inner_depth.increment()?;
6116                }
6117                let val_ref = self.key_idx.get_or_insert_with(|| fidl::new_empty!(i32, D));
6118                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
6119                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6120                {
6121                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6122                }
6123                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6124                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6125                }
6126            }
6127
6128            next_offset += envelope_size;
6129
6130            // Decode the remaining unknown envelopes.
6131            while next_offset < end_offset {
6132                _next_ordinal_to_read += 1;
6133                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6134                next_offset += envelope_size;
6135            }
6136
6137            Ok(())
6138        }
6139    }
6140
6141    impl SupplicantStaNetworkSetWepTxKeyIdxRequest {
6142        #[inline(always)]
6143        fn max_ordinal_present(&self) -> u64 {
6144            if let Some(_) = self.key_idx {
6145                return 1;
6146            }
6147            0
6148        }
6149    }
6150
6151    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetWepTxKeyIdxRequest {
6152        type Borrowed<'a> = &'a Self;
6153        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6154            value
6155        }
6156    }
6157
6158    unsafe impl fidl::encoding::TypeMarker for SupplicantStaNetworkSetWepTxKeyIdxRequest {
6159        type Owned = Self;
6160
6161        #[inline(always)]
6162        fn inline_align(_context: fidl::encoding::Context) -> usize {
6163            8
6164        }
6165
6166        #[inline(always)]
6167        fn inline_size(_context: fidl::encoding::Context) -> usize {
6168            16
6169        }
6170    }
6171
6172    unsafe impl<D: fidl::encoding::ResourceDialect>
6173        fidl::encoding::Encode<SupplicantStaNetworkSetWepTxKeyIdxRequest, D>
6174        for &SupplicantStaNetworkSetWepTxKeyIdxRequest
6175    {
6176        unsafe fn encode(
6177            self,
6178            encoder: &mut fidl::encoding::Encoder<'_, D>,
6179            offset: usize,
6180            mut depth: fidl::encoding::Depth,
6181        ) -> fidl::Result<()> {
6182            encoder.debug_check_bounds::<SupplicantStaNetworkSetWepTxKeyIdxRequest>(offset);
6183            // Vector header
6184            let max_ordinal: u64 = self.max_ordinal_present();
6185            encoder.write_num(max_ordinal, offset);
6186            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6187            // Calling encoder.out_of_line_offset(0) is not allowed.
6188            if max_ordinal == 0 {
6189                return Ok(());
6190            }
6191            depth.increment()?;
6192            let envelope_size = 8;
6193            let bytes_len = max_ordinal as usize * envelope_size;
6194            #[allow(unused_variables)]
6195            let offset = encoder.out_of_line_offset(bytes_len);
6196            let mut _prev_end_offset: usize = 0;
6197            if 1 > max_ordinal {
6198                return Ok(());
6199            }
6200
6201            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6202            // are envelope_size bytes.
6203            let cur_offset: usize = (1 - 1) * envelope_size;
6204
6205            // Zero reserved fields.
6206            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6207
6208            // Safety:
6209            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6210            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6211            //   envelope_size bytes, there is always sufficient room.
6212            fidl::encoding::encode_in_envelope_optional::<i32, D>(
6213                self.key_idx.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
6214                encoder,
6215                offset + cur_offset,
6216                depth,
6217            )?;
6218
6219            _prev_end_offset = cur_offset + envelope_size;
6220
6221            Ok(())
6222        }
6223    }
6224
6225    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6226        for SupplicantStaNetworkSetWepTxKeyIdxRequest
6227    {
6228        #[inline(always)]
6229        fn new_empty() -> Self {
6230            Self::default()
6231        }
6232
6233        unsafe fn decode(
6234            &mut self,
6235            decoder: &mut fidl::encoding::Decoder<'_, D>,
6236            offset: usize,
6237            mut depth: fidl::encoding::Depth,
6238        ) -> fidl::Result<()> {
6239            decoder.debug_check_bounds::<Self>(offset);
6240            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6241                None => return Err(fidl::Error::NotNullable),
6242                Some(len) => len,
6243            };
6244            // Calling decoder.out_of_line_offset(0) is not allowed.
6245            if len == 0 {
6246                return Ok(());
6247            };
6248            depth.increment()?;
6249            let envelope_size = 8;
6250            let bytes_len = len * envelope_size;
6251            let offset = decoder.out_of_line_offset(bytes_len)?;
6252            // Decode the envelope for each type.
6253            let mut _next_ordinal_to_read = 0;
6254            let mut next_offset = offset;
6255            let end_offset = offset + bytes_len;
6256            _next_ordinal_to_read += 1;
6257            if next_offset >= end_offset {
6258                return Ok(());
6259            }
6260
6261            // Decode unknown envelopes for gaps in ordinals.
6262            while _next_ordinal_to_read < 1 {
6263                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6264                _next_ordinal_to_read += 1;
6265                next_offset += envelope_size;
6266            }
6267
6268            let next_out_of_line = decoder.next_out_of_line();
6269            let handles_before = decoder.remaining_handles();
6270            if let Some((inlined, num_bytes, num_handles)) =
6271                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6272            {
6273                let member_inline_size =
6274                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6275                if inlined != (member_inline_size <= 4) {
6276                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6277                }
6278                let inner_offset;
6279                let mut inner_depth = depth.clone();
6280                if inlined {
6281                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6282                    inner_offset = next_offset;
6283                } else {
6284                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6285                    inner_depth.increment()?;
6286                }
6287                let val_ref = self.key_idx.get_or_insert_with(|| fidl::new_empty!(i32, D));
6288                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
6289                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6290                {
6291                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6292                }
6293                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6294                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6295                }
6296            }
6297
6298            next_offset += envelope_size;
6299
6300            // Decode the remaining unknown envelopes.
6301            while next_offset < end_offset {
6302                _next_ordinal_to_read += 1;
6303                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6304                next_offset += envelope_size;
6305            }
6306
6307            Ok(())
6308        }
6309    }
6310
6311    impl WifiChipGetAvailableModesResponse {
6312        #[inline(always)]
6313        fn max_ordinal_present(&self) -> u64 {
6314            if let Some(_) = self.chip_modes {
6315                return 1;
6316            }
6317            0
6318        }
6319    }
6320
6321    impl fidl::encoding::ValueTypeMarker for WifiChipGetAvailableModesResponse {
6322        type Borrowed<'a> = &'a Self;
6323        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6324            value
6325        }
6326    }
6327
6328    unsafe impl fidl::encoding::TypeMarker for WifiChipGetAvailableModesResponse {
6329        type Owned = Self;
6330
6331        #[inline(always)]
6332        fn inline_align(_context: fidl::encoding::Context) -> usize {
6333            8
6334        }
6335
6336        #[inline(always)]
6337        fn inline_size(_context: fidl::encoding::Context) -> usize {
6338            16
6339        }
6340    }
6341
6342    unsafe impl<D: fidl::encoding::ResourceDialect>
6343        fidl::encoding::Encode<WifiChipGetAvailableModesResponse, D>
6344        for &WifiChipGetAvailableModesResponse
6345    {
6346        unsafe fn encode(
6347            self,
6348            encoder: &mut fidl::encoding::Encoder<'_, D>,
6349            offset: usize,
6350            mut depth: fidl::encoding::Depth,
6351        ) -> fidl::Result<()> {
6352            encoder.debug_check_bounds::<WifiChipGetAvailableModesResponse>(offset);
6353            // Vector header
6354            let max_ordinal: u64 = self.max_ordinal_present();
6355            encoder.write_num(max_ordinal, offset);
6356            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6357            // Calling encoder.out_of_line_offset(0) is not allowed.
6358            if max_ordinal == 0 {
6359                return Ok(());
6360            }
6361            depth.increment()?;
6362            let envelope_size = 8;
6363            let bytes_len = max_ordinal as usize * envelope_size;
6364            #[allow(unused_variables)]
6365            let offset = encoder.out_of_line_offset(bytes_len);
6366            let mut _prev_end_offset: usize = 0;
6367            if 1 > max_ordinal {
6368                return Ok(());
6369            }
6370
6371            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6372            // are envelope_size bytes.
6373            let cur_offset: usize = (1 - 1) * envelope_size;
6374
6375            // Zero reserved fields.
6376            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6377
6378            // Safety:
6379            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6380            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6381            //   envelope_size bytes, there is always sufficient room.
6382            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ChipMode>, D>(
6383            self.chip_modes.as_ref().map(<fidl::encoding::UnboundedVector<ChipMode> as fidl::encoding::ValueTypeMarker>::borrow),
6384            encoder, offset + cur_offset, depth
6385        )?;
6386
6387            _prev_end_offset = cur_offset + envelope_size;
6388
6389            Ok(())
6390        }
6391    }
6392
6393    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6394        for WifiChipGetAvailableModesResponse
6395    {
6396        #[inline(always)]
6397        fn new_empty() -> Self {
6398            Self::default()
6399        }
6400
6401        unsafe fn decode(
6402            &mut self,
6403            decoder: &mut fidl::encoding::Decoder<'_, D>,
6404            offset: usize,
6405            mut depth: fidl::encoding::Depth,
6406        ) -> fidl::Result<()> {
6407            decoder.debug_check_bounds::<Self>(offset);
6408            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6409                None => return Err(fidl::Error::NotNullable),
6410                Some(len) => len,
6411            };
6412            // Calling decoder.out_of_line_offset(0) is not allowed.
6413            if len == 0 {
6414                return Ok(());
6415            };
6416            depth.increment()?;
6417            let envelope_size = 8;
6418            let bytes_len = len * envelope_size;
6419            let offset = decoder.out_of_line_offset(bytes_len)?;
6420            // Decode the envelope for each type.
6421            let mut _next_ordinal_to_read = 0;
6422            let mut next_offset = offset;
6423            let end_offset = offset + bytes_len;
6424            _next_ordinal_to_read += 1;
6425            if next_offset >= end_offset {
6426                return Ok(());
6427            }
6428
6429            // Decode unknown envelopes for gaps in ordinals.
6430            while _next_ordinal_to_read < 1 {
6431                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6432                _next_ordinal_to_read += 1;
6433                next_offset += envelope_size;
6434            }
6435
6436            let next_out_of_line = decoder.next_out_of_line();
6437            let handles_before = decoder.remaining_handles();
6438            if let Some((inlined, num_bytes, num_handles)) =
6439                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6440            {
6441                let member_inline_size = <fidl::encoding::UnboundedVector<ChipMode> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6442                if inlined != (member_inline_size <= 4) {
6443                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6444                }
6445                let inner_offset;
6446                let mut inner_depth = depth.clone();
6447                if inlined {
6448                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6449                    inner_offset = next_offset;
6450                } else {
6451                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6452                    inner_depth.increment()?;
6453                }
6454                let val_ref = self.chip_modes.get_or_insert_with(|| {
6455                    fidl::new_empty!(fidl::encoding::UnboundedVector<ChipMode>, D)
6456                });
6457                fidl::decode!(
6458                    fidl::encoding::UnboundedVector<ChipMode>,
6459                    D,
6460                    val_ref,
6461                    decoder,
6462                    inner_offset,
6463                    inner_depth
6464                )?;
6465                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6466                {
6467                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6468                }
6469                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6470                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6471                }
6472            }
6473
6474            next_offset += envelope_size;
6475
6476            // Decode the remaining unknown envelopes.
6477            while next_offset < end_offset {
6478                _next_ordinal_to_read += 1;
6479                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6480                next_offset += envelope_size;
6481            }
6482
6483            Ok(())
6484        }
6485    }
6486
6487    impl WifiChipGetCapabilitiesResponse {
6488        #[inline(always)]
6489        fn max_ordinal_present(&self) -> u64 {
6490            if let Some(_) = self.capabilities_mask {
6491                return 1;
6492            }
6493            0
6494        }
6495    }
6496
6497    impl fidl::encoding::ValueTypeMarker for WifiChipGetCapabilitiesResponse {
6498        type Borrowed<'a> = &'a Self;
6499        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6500            value
6501        }
6502    }
6503
6504    unsafe impl fidl::encoding::TypeMarker for WifiChipGetCapabilitiesResponse {
6505        type Owned = Self;
6506
6507        #[inline(always)]
6508        fn inline_align(_context: fidl::encoding::Context) -> usize {
6509            8
6510        }
6511
6512        #[inline(always)]
6513        fn inline_size(_context: fidl::encoding::Context) -> usize {
6514            16
6515        }
6516    }
6517
6518    unsafe impl<D: fidl::encoding::ResourceDialect>
6519        fidl::encoding::Encode<WifiChipGetCapabilitiesResponse, D>
6520        for &WifiChipGetCapabilitiesResponse
6521    {
6522        unsafe fn encode(
6523            self,
6524            encoder: &mut fidl::encoding::Encoder<'_, D>,
6525            offset: usize,
6526            mut depth: fidl::encoding::Depth,
6527        ) -> fidl::Result<()> {
6528            encoder.debug_check_bounds::<WifiChipGetCapabilitiesResponse>(offset);
6529            // Vector header
6530            let max_ordinal: u64 = self.max_ordinal_present();
6531            encoder.write_num(max_ordinal, offset);
6532            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6533            // Calling encoder.out_of_line_offset(0) is not allowed.
6534            if max_ordinal == 0 {
6535                return Ok(());
6536            }
6537            depth.increment()?;
6538            let envelope_size = 8;
6539            let bytes_len = max_ordinal as usize * envelope_size;
6540            #[allow(unused_variables)]
6541            let offset = encoder.out_of_line_offset(bytes_len);
6542            let mut _prev_end_offset: usize = 0;
6543            if 1 > max_ordinal {
6544                return Ok(());
6545            }
6546
6547            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6548            // are envelope_size bytes.
6549            let cur_offset: usize = (1 - 1) * envelope_size;
6550
6551            // Zero reserved fields.
6552            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6553
6554            // Safety:
6555            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6556            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6557            //   envelope_size bytes, there is always sufficient room.
6558            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6559                self.capabilities_mask
6560                    .as_ref()
6561                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6562                encoder,
6563                offset + cur_offset,
6564                depth,
6565            )?;
6566
6567            _prev_end_offset = cur_offset + envelope_size;
6568
6569            Ok(())
6570        }
6571    }
6572
6573    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6574        for WifiChipGetCapabilitiesResponse
6575    {
6576        #[inline(always)]
6577        fn new_empty() -> Self {
6578            Self::default()
6579        }
6580
6581        unsafe fn decode(
6582            &mut self,
6583            decoder: &mut fidl::encoding::Decoder<'_, D>,
6584            offset: usize,
6585            mut depth: fidl::encoding::Depth,
6586        ) -> fidl::Result<()> {
6587            decoder.debug_check_bounds::<Self>(offset);
6588            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6589                None => return Err(fidl::Error::NotNullable),
6590                Some(len) => len,
6591            };
6592            // Calling decoder.out_of_line_offset(0) is not allowed.
6593            if len == 0 {
6594                return Ok(());
6595            };
6596            depth.increment()?;
6597            let envelope_size = 8;
6598            let bytes_len = len * envelope_size;
6599            let offset = decoder.out_of_line_offset(bytes_len)?;
6600            // Decode the envelope for each type.
6601            let mut _next_ordinal_to_read = 0;
6602            let mut next_offset = offset;
6603            let end_offset = offset + bytes_len;
6604            _next_ordinal_to_read += 1;
6605            if next_offset >= end_offset {
6606                return Ok(());
6607            }
6608
6609            // Decode unknown envelopes for gaps in ordinals.
6610            while _next_ordinal_to_read < 1 {
6611                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6612                _next_ordinal_to_read += 1;
6613                next_offset += envelope_size;
6614            }
6615
6616            let next_out_of_line = decoder.next_out_of_line();
6617            let handles_before = decoder.remaining_handles();
6618            if let Some((inlined, num_bytes, num_handles)) =
6619                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6620            {
6621                let member_inline_size =
6622                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6623                if inlined != (member_inline_size <= 4) {
6624                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6625                }
6626                let inner_offset;
6627                let mut inner_depth = depth.clone();
6628                if inlined {
6629                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6630                    inner_offset = next_offset;
6631                } else {
6632                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6633                    inner_depth.increment()?;
6634                }
6635                let val_ref =
6636                    self.capabilities_mask.get_or_insert_with(|| fidl::new_empty!(u32, D));
6637                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6638                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6639                {
6640                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6641                }
6642                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6643                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6644                }
6645            }
6646
6647            next_offset += envelope_size;
6648
6649            // Decode the remaining unknown envelopes.
6650            while next_offset < end_offset {
6651                _next_ordinal_to_read += 1;
6652                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6653                next_offset += envelope_size;
6654            }
6655
6656            Ok(())
6657        }
6658    }
6659
6660    impl WifiChipGetIdResponse {
6661        #[inline(always)]
6662        fn max_ordinal_present(&self) -> u64 {
6663            if let Some(_) = self.id {
6664                return 1;
6665            }
6666            0
6667        }
6668    }
6669
6670    impl fidl::encoding::ValueTypeMarker for WifiChipGetIdResponse {
6671        type Borrowed<'a> = &'a Self;
6672        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6673            value
6674        }
6675    }
6676
6677    unsafe impl fidl::encoding::TypeMarker for WifiChipGetIdResponse {
6678        type Owned = Self;
6679
6680        #[inline(always)]
6681        fn inline_align(_context: fidl::encoding::Context) -> usize {
6682            8
6683        }
6684
6685        #[inline(always)]
6686        fn inline_size(_context: fidl::encoding::Context) -> usize {
6687            16
6688        }
6689    }
6690
6691    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WifiChipGetIdResponse, D>
6692        for &WifiChipGetIdResponse
6693    {
6694        unsafe fn encode(
6695            self,
6696            encoder: &mut fidl::encoding::Encoder<'_, D>,
6697            offset: usize,
6698            mut depth: fidl::encoding::Depth,
6699        ) -> fidl::Result<()> {
6700            encoder.debug_check_bounds::<WifiChipGetIdResponse>(offset);
6701            // Vector header
6702            let max_ordinal: u64 = self.max_ordinal_present();
6703            encoder.write_num(max_ordinal, offset);
6704            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6705            // Calling encoder.out_of_line_offset(0) is not allowed.
6706            if max_ordinal == 0 {
6707                return Ok(());
6708            }
6709            depth.increment()?;
6710            let envelope_size = 8;
6711            let bytes_len = max_ordinal as usize * envelope_size;
6712            #[allow(unused_variables)]
6713            let offset = encoder.out_of_line_offset(bytes_len);
6714            let mut _prev_end_offset: usize = 0;
6715            if 1 > max_ordinal {
6716                return Ok(());
6717            }
6718
6719            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6720            // are envelope_size bytes.
6721            let cur_offset: usize = (1 - 1) * envelope_size;
6722
6723            // Zero reserved fields.
6724            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6725
6726            // Safety:
6727            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6728            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6729            //   envelope_size bytes, there is always sufficient room.
6730            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6731                self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6732                encoder,
6733                offset + cur_offset,
6734                depth,
6735            )?;
6736
6737            _prev_end_offset = cur_offset + envelope_size;
6738
6739            Ok(())
6740        }
6741    }
6742
6743    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WifiChipGetIdResponse {
6744        #[inline(always)]
6745        fn new_empty() -> Self {
6746            Self::default()
6747        }
6748
6749        unsafe fn decode(
6750            &mut self,
6751            decoder: &mut fidl::encoding::Decoder<'_, D>,
6752            offset: usize,
6753            mut depth: fidl::encoding::Depth,
6754        ) -> fidl::Result<()> {
6755            decoder.debug_check_bounds::<Self>(offset);
6756            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6757                None => return Err(fidl::Error::NotNullable),
6758                Some(len) => len,
6759            };
6760            // Calling decoder.out_of_line_offset(0) is not allowed.
6761            if len == 0 {
6762                return Ok(());
6763            };
6764            depth.increment()?;
6765            let envelope_size = 8;
6766            let bytes_len = len * envelope_size;
6767            let offset = decoder.out_of_line_offset(bytes_len)?;
6768            // Decode the envelope for each type.
6769            let mut _next_ordinal_to_read = 0;
6770            let mut next_offset = offset;
6771            let end_offset = offset + bytes_len;
6772            _next_ordinal_to_read += 1;
6773            if next_offset >= end_offset {
6774                return Ok(());
6775            }
6776
6777            // Decode unknown envelopes for gaps in ordinals.
6778            while _next_ordinal_to_read < 1 {
6779                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6780                _next_ordinal_to_read += 1;
6781                next_offset += envelope_size;
6782            }
6783
6784            let next_out_of_line = decoder.next_out_of_line();
6785            let handles_before = decoder.remaining_handles();
6786            if let Some((inlined, num_bytes, num_handles)) =
6787                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6788            {
6789                let member_inline_size =
6790                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6791                if inlined != (member_inline_size <= 4) {
6792                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6793                }
6794                let inner_offset;
6795                let mut inner_depth = depth.clone();
6796                if inlined {
6797                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6798                    inner_offset = next_offset;
6799                } else {
6800                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6801                    inner_depth.increment()?;
6802                }
6803                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
6804                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6805                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6806                {
6807                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6808                }
6809                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6810                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6811                }
6812            }
6813
6814            next_offset += envelope_size;
6815
6816            // Decode the remaining unknown envelopes.
6817            while next_offset < end_offset {
6818                _next_ordinal_to_read += 1;
6819                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6820                next_offset += envelope_size;
6821            }
6822
6823            Ok(())
6824        }
6825    }
6826
6827    impl WifiChipGetModeResponse {
6828        #[inline(always)]
6829        fn max_ordinal_present(&self) -> u64 {
6830            if let Some(_) = self.mode {
6831                return 1;
6832            }
6833            0
6834        }
6835    }
6836
6837    impl fidl::encoding::ValueTypeMarker for WifiChipGetModeResponse {
6838        type Borrowed<'a> = &'a Self;
6839        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6840            value
6841        }
6842    }
6843
6844    unsafe impl fidl::encoding::TypeMarker for WifiChipGetModeResponse {
6845        type Owned = Self;
6846
6847        #[inline(always)]
6848        fn inline_align(_context: fidl::encoding::Context) -> usize {
6849            8
6850        }
6851
6852        #[inline(always)]
6853        fn inline_size(_context: fidl::encoding::Context) -> usize {
6854            16
6855        }
6856    }
6857
6858    unsafe impl<D: fidl::encoding::ResourceDialect>
6859        fidl::encoding::Encode<WifiChipGetModeResponse, D> for &WifiChipGetModeResponse
6860    {
6861        unsafe fn encode(
6862            self,
6863            encoder: &mut fidl::encoding::Encoder<'_, D>,
6864            offset: usize,
6865            mut depth: fidl::encoding::Depth,
6866        ) -> fidl::Result<()> {
6867            encoder.debug_check_bounds::<WifiChipGetModeResponse>(offset);
6868            // Vector header
6869            let max_ordinal: u64 = self.max_ordinal_present();
6870            encoder.write_num(max_ordinal, offset);
6871            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6872            // Calling encoder.out_of_line_offset(0) is not allowed.
6873            if max_ordinal == 0 {
6874                return Ok(());
6875            }
6876            depth.increment()?;
6877            let envelope_size = 8;
6878            let bytes_len = max_ordinal as usize * envelope_size;
6879            #[allow(unused_variables)]
6880            let offset = encoder.out_of_line_offset(bytes_len);
6881            let mut _prev_end_offset: usize = 0;
6882            if 1 > max_ordinal {
6883                return Ok(());
6884            }
6885
6886            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6887            // are envelope_size bytes.
6888            let cur_offset: usize = (1 - 1) * envelope_size;
6889
6890            // Zero reserved fields.
6891            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6892
6893            // Safety:
6894            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6895            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6896            //   envelope_size bytes, there is always sufficient room.
6897            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6898                self.mode.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6899                encoder,
6900                offset + cur_offset,
6901                depth,
6902            )?;
6903
6904            _prev_end_offset = cur_offset + envelope_size;
6905
6906            Ok(())
6907        }
6908    }
6909
6910    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6911        for WifiChipGetModeResponse
6912    {
6913        #[inline(always)]
6914        fn new_empty() -> Self {
6915            Self::default()
6916        }
6917
6918        unsafe fn decode(
6919            &mut self,
6920            decoder: &mut fidl::encoding::Decoder<'_, D>,
6921            offset: usize,
6922            mut depth: fidl::encoding::Depth,
6923        ) -> fidl::Result<()> {
6924            decoder.debug_check_bounds::<Self>(offset);
6925            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6926                None => return Err(fidl::Error::NotNullable),
6927                Some(len) => len,
6928            };
6929            // Calling decoder.out_of_line_offset(0) is not allowed.
6930            if len == 0 {
6931                return Ok(());
6932            };
6933            depth.increment()?;
6934            let envelope_size = 8;
6935            let bytes_len = len * envelope_size;
6936            let offset = decoder.out_of_line_offset(bytes_len)?;
6937            // Decode the envelope for each type.
6938            let mut _next_ordinal_to_read = 0;
6939            let mut next_offset = offset;
6940            let end_offset = offset + bytes_len;
6941            _next_ordinal_to_read += 1;
6942            if next_offset >= end_offset {
6943                return Ok(());
6944            }
6945
6946            // Decode unknown envelopes for gaps in ordinals.
6947            while _next_ordinal_to_read < 1 {
6948                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6949                _next_ordinal_to_read += 1;
6950                next_offset += envelope_size;
6951            }
6952
6953            let next_out_of_line = decoder.next_out_of_line();
6954            let handles_before = decoder.remaining_handles();
6955            if let Some((inlined, num_bytes, num_handles)) =
6956                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6957            {
6958                let member_inline_size =
6959                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6960                if inlined != (member_inline_size <= 4) {
6961                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6962                }
6963                let inner_offset;
6964                let mut inner_depth = depth.clone();
6965                if inlined {
6966                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6967                    inner_offset = next_offset;
6968                } else {
6969                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6970                    inner_depth.increment()?;
6971                }
6972                let val_ref = self.mode.get_or_insert_with(|| fidl::new_empty!(u32, D));
6973                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6974                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6975                {
6976                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6977                }
6978                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6979                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6980                }
6981            }
6982
6983            next_offset += envelope_size;
6984
6985            // Decode the remaining unknown envelopes.
6986            while next_offset < end_offset {
6987                _next_ordinal_to_read += 1;
6988                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6989                next_offset += envelope_size;
6990            }
6991
6992            Ok(())
6993        }
6994    }
6995
6996    impl WifiChipGetStaIfaceNamesResponse {
6997        #[inline(always)]
6998        fn max_ordinal_present(&self) -> u64 {
6999            if let Some(_) = self.iface_names {
7000                return 1;
7001            }
7002            0
7003        }
7004    }
7005
7006    impl fidl::encoding::ValueTypeMarker for WifiChipGetStaIfaceNamesResponse {
7007        type Borrowed<'a> = &'a Self;
7008        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7009            value
7010        }
7011    }
7012
7013    unsafe impl fidl::encoding::TypeMarker for WifiChipGetStaIfaceNamesResponse {
7014        type Owned = Self;
7015
7016        #[inline(always)]
7017        fn inline_align(_context: fidl::encoding::Context) -> usize {
7018            8
7019        }
7020
7021        #[inline(always)]
7022        fn inline_size(_context: fidl::encoding::Context) -> usize {
7023            16
7024        }
7025    }
7026
7027    unsafe impl<D: fidl::encoding::ResourceDialect>
7028        fidl::encoding::Encode<WifiChipGetStaIfaceNamesResponse, D>
7029        for &WifiChipGetStaIfaceNamesResponse
7030    {
7031        unsafe fn encode(
7032            self,
7033            encoder: &mut fidl::encoding::Encoder<'_, D>,
7034            offset: usize,
7035            mut depth: fidl::encoding::Depth,
7036        ) -> fidl::Result<()> {
7037            encoder.debug_check_bounds::<WifiChipGetStaIfaceNamesResponse>(offset);
7038            // Vector header
7039            let max_ordinal: u64 = self.max_ordinal_present();
7040            encoder.write_num(max_ordinal, offset);
7041            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7042            // Calling encoder.out_of_line_offset(0) is not allowed.
7043            if max_ordinal == 0 {
7044                return Ok(());
7045            }
7046            depth.increment()?;
7047            let envelope_size = 8;
7048            let bytes_len = max_ordinal as usize * envelope_size;
7049            #[allow(unused_variables)]
7050            let offset = encoder.out_of_line_offset(bytes_len);
7051            let mut _prev_end_offset: usize = 0;
7052            if 1 > max_ordinal {
7053                return Ok(());
7054            }
7055
7056            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7057            // are envelope_size bytes.
7058            let cur_offset: usize = (1 - 1) * envelope_size;
7059
7060            // Zero reserved fields.
7061            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7062
7063            // Safety:
7064            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7065            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7066            //   envelope_size bytes, there is always sufficient room.
7067            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<16>>, D>(
7068            self.iface_names.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<16>> as fidl::encoding::ValueTypeMarker>::borrow),
7069            encoder, offset + cur_offset, depth
7070        )?;
7071
7072            _prev_end_offset = cur_offset + envelope_size;
7073
7074            Ok(())
7075        }
7076    }
7077
7078    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7079        for WifiChipGetStaIfaceNamesResponse
7080    {
7081        #[inline(always)]
7082        fn new_empty() -> Self {
7083            Self::default()
7084        }
7085
7086        unsafe fn decode(
7087            &mut self,
7088            decoder: &mut fidl::encoding::Decoder<'_, D>,
7089            offset: usize,
7090            mut depth: fidl::encoding::Depth,
7091        ) -> fidl::Result<()> {
7092            decoder.debug_check_bounds::<Self>(offset);
7093            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7094                None => return Err(fidl::Error::NotNullable),
7095                Some(len) => len,
7096            };
7097            // Calling decoder.out_of_line_offset(0) is not allowed.
7098            if len == 0 {
7099                return Ok(());
7100            };
7101            depth.increment()?;
7102            let envelope_size = 8;
7103            let bytes_len = len * envelope_size;
7104            let offset = decoder.out_of_line_offset(bytes_len)?;
7105            // Decode the envelope for each type.
7106            let mut _next_ordinal_to_read = 0;
7107            let mut next_offset = offset;
7108            let end_offset = offset + bytes_len;
7109            _next_ordinal_to_read += 1;
7110            if next_offset >= end_offset {
7111                return Ok(());
7112            }
7113
7114            // Decode unknown envelopes for gaps in ordinals.
7115            while _next_ordinal_to_read < 1 {
7116                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7117                _next_ordinal_to_read += 1;
7118                next_offset += envelope_size;
7119            }
7120
7121            let next_out_of_line = decoder.next_out_of_line();
7122            let handles_before = decoder.remaining_handles();
7123            if let Some((inlined, num_bytes, num_handles)) =
7124                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7125            {
7126                let member_inline_size = <fidl::encoding::UnboundedVector<
7127                    fidl::encoding::BoundedString<16>,
7128                > as fidl::encoding::TypeMarker>::inline_size(
7129                    decoder.context
7130                );
7131                if inlined != (member_inline_size <= 4) {
7132                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7133                }
7134                let inner_offset;
7135                let mut inner_depth = depth.clone();
7136                if inlined {
7137                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7138                    inner_offset = next_offset;
7139                } else {
7140                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7141                    inner_depth.increment()?;
7142                }
7143                let val_ref = self.iface_names.get_or_insert_with(|| {
7144                    fidl::new_empty!(
7145                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<16>>,
7146                        D
7147                    )
7148                });
7149                fidl::decode!(
7150                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<16>>,
7151                    D,
7152                    val_ref,
7153                    decoder,
7154                    inner_offset,
7155                    inner_depth
7156                )?;
7157                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7158                {
7159                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7160                }
7161                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7162                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7163                }
7164            }
7165
7166            next_offset += envelope_size;
7167
7168            // Decode the remaining unknown envelopes.
7169            while next_offset < end_offset {
7170                _next_ordinal_to_read += 1;
7171                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7172                next_offset += envelope_size;
7173            }
7174
7175            Ok(())
7176        }
7177    }
7178
7179    impl WifiStaIfaceInstallApfPacketFilterRequest {
7180        #[inline(always)]
7181        fn max_ordinal_present(&self) -> u64 {
7182            if let Some(_) = self.program {
7183                return 1;
7184            }
7185            0
7186        }
7187    }
7188
7189    impl fidl::encoding::ValueTypeMarker for WifiStaIfaceInstallApfPacketFilterRequest {
7190        type Borrowed<'a> = &'a Self;
7191        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7192            value
7193        }
7194    }
7195
7196    unsafe impl fidl::encoding::TypeMarker for WifiStaIfaceInstallApfPacketFilterRequest {
7197        type Owned = Self;
7198
7199        #[inline(always)]
7200        fn inline_align(_context: fidl::encoding::Context) -> usize {
7201            8
7202        }
7203
7204        #[inline(always)]
7205        fn inline_size(_context: fidl::encoding::Context) -> usize {
7206            16
7207        }
7208    }
7209
7210    unsafe impl<D: fidl::encoding::ResourceDialect>
7211        fidl::encoding::Encode<WifiStaIfaceInstallApfPacketFilterRequest, D>
7212        for &WifiStaIfaceInstallApfPacketFilterRequest
7213    {
7214        unsafe fn encode(
7215            self,
7216            encoder: &mut fidl::encoding::Encoder<'_, D>,
7217            offset: usize,
7218            mut depth: fidl::encoding::Depth,
7219        ) -> fidl::Result<()> {
7220            encoder.debug_check_bounds::<WifiStaIfaceInstallApfPacketFilterRequest>(offset);
7221            // Vector header
7222            let max_ordinal: u64 = self.max_ordinal_present();
7223            encoder.write_num(max_ordinal, offset);
7224            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7225            // Calling encoder.out_of_line_offset(0) is not allowed.
7226            if max_ordinal == 0 {
7227                return Ok(());
7228            }
7229            depth.increment()?;
7230            let envelope_size = 8;
7231            let bytes_len = max_ordinal as usize * envelope_size;
7232            #[allow(unused_variables)]
7233            let offset = encoder.out_of_line_offset(bytes_len);
7234            let mut _prev_end_offset: usize = 0;
7235            if 1 > max_ordinal {
7236                return Ok(());
7237            }
7238
7239            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7240            // are envelope_size bytes.
7241            let cur_offset: usize = (1 - 1) * envelope_size;
7242
7243            // Zero reserved fields.
7244            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7245
7246            // Safety:
7247            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7248            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7249            //   envelope_size bytes, there is always sufficient room.
7250            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
7251            self.program.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
7252            encoder, offset + cur_offset, depth
7253        )?;
7254
7255            _prev_end_offset = cur_offset + envelope_size;
7256
7257            Ok(())
7258        }
7259    }
7260
7261    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7262        for WifiStaIfaceInstallApfPacketFilterRequest
7263    {
7264        #[inline(always)]
7265        fn new_empty() -> Self {
7266            Self::default()
7267        }
7268
7269        unsafe fn decode(
7270            &mut self,
7271            decoder: &mut fidl::encoding::Decoder<'_, D>,
7272            offset: usize,
7273            mut depth: fidl::encoding::Depth,
7274        ) -> fidl::Result<()> {
7275            decoder.debug_check_bounds::<Self>(offset);
7276            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7277                None => return Err(fidl::Error::NotNullable),
7278                Some(len) => len,
7279            };
7280            // Calling decoder.out_of_line_offset(0) is not allowed.
7281            if len == 0 {
7282                return Ok(());
7283            };
7284            depth.increment()?;
7285            let envelope_size = 8;
7286            let bytes_len = len * envelope_size;
7287            let offset = decoder.out_of_line_offset(bytes_len)?;
7288            // Decode the envelope for each type.
7289            let mut _next_ordinal_to_read = 0;
7290            let mut next_offset = offset;
7291            let end_offset = offset + bytes_len;
7292            _next_ordinal_to_read += 1;
7293            if next_offset >= end_offset {
7294                return Ok(());
7295            }
7296
7297            // Decode unknown envelopes for gaps in ordinals.
7298            while _next_ordinal_to_read < 1 {
7299                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7300                _next_ordinal_to_read += 1;
7301                next_offset += envelope_size;
7302            }
7303
7304            let next_out_of_line = decoder.next_out_of_line();
7305            let handles_before = decoder.remaining_handles();
7306            if let Some((inlined, num_bytes, num_handles)) =
7307                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7308            {
7309                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7310                if inlined != (member_inline_size <= 4) {
7311                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7312                }
7313                let inner_offset;
7314                let mut inner_depth = depth.clone();
7315                if inlined {
7316                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7317                    inner_offset = next_offset;
7318                } else {
7319                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7320                    inner_depth.increment()?;
7321                }
7322                let val_ref = self.program.get_or_insert_with(|| {
7323                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
7324                });
7325                fidl::decode!(
7326                    fidl::encoding::UnboundedVector<u8>,
7327                    D,
7328                    val_ref,
7329                    decoder,
7330                    inner_offset,
7331                    inner_depth
7332                )?;
7333                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7334                {
7335                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7336                }
7337                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7338                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7339                }
7340            }
7341
7342            next_offset += envelope_size;
7343
7344            // Decode the remaining unknown envelopes.
7345            while next_offset < end_offset {
7346                _next_ordinal_to_read += 1;
7347                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7348                next_offset += envelope_size;
7349            }
7350
7351            Ok(())
7352        }
7353    }
7354
7355    impl WifiStaIfaceGetApfPacketFilterSupportResponse {
7356        #[inline(always)]
7357        fn max_ordinal_present(&self) -> u64 {
7358            if let Some(_) = self.max_filter_length {
7359                return 2;
7360            }
7361            if let Some(_) = self.version {
7362                return 1;
7363            }
7364            0
7365        }
7366    }
7367
7368    impl fidl::encoding::ValueTypeMarker for WifiStaIfaceGetApfPacketFilterSupportResponse {
7369        type Borrowed<'a> = &'a Self;
7370        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7371            value
7372        }
7373    }
7374
7375    unsafe impl fidl::encoding::TypeMarker for WifiStaIfaceGetApfPacketFilterSupportResponse {
7376        type Owned = Self;
7377
7378        #[inline(always)]
7379        fn inline_align(_context: fidl::encoding::Context) -> usize {
7380            8
7381        }
7382
7383        #[inline(always)]
7384        fn inline_size(_context: fidl::encoding::Context) -> usize {
7385            16
7386        }
7387    }
7388
7389    unsafe impl<D: fidl::encoding::ResourceDialect>
7390        fidl::encoding::Encode<WifiStaIfaceGetApfPacketFilterSupportResponse, D>
7391        for &WifiStaIfaceGetApfPacketFilterSupportResponse
7392    {
7393        unsafe fn encode(
7394            self,
7395            encoder: &mut fidl::encoding::Encoder<'_, D>,
7396            offset: usize,
7397            mut depth: fidl::encoding::Depth,
7398        ) -> fidl::Result<()> {
7399            encoder.debug_check_bounds::<WifiStaIfaceGetApfPacketFilterSupportResponse>(offset);
7400            // Vector header
7401            let max_ordinal: u64 = self.max_ordinal_present();
7402            encoder.write_num(max_ordinal, offset);
7403            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7404            // Calling encoder.out_of_line_offset(0) is not allowed.
7405            if max_ordinal == 0 {
7406                return Ok(());
7407            }
7408            depth.increment()?;
7409            let envelope_size = 8;
7410            let bytes_len = max_ordinal as usize * envelope_size;
7411            #[allow(unused_variables)]
7412            let offset = encoder.out_of_line_offset(bytes_len);
7413            let mut _prev_end_offset: usize = 0;
7414            if 1 > max_ordinal {
7415                return Ok(());
7416            }
7417
7418            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7419            // are envelope_size bytes.
7420            let cur_offset: usize = (1 - 1) * envelope_size;
7421
7422            // Zero reserved fields.
7423            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7424
7425            // Safety:
7426            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7427            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7428            //   envelope_size bytes, there is always sufficient room.
7429            fidl::encoding::encode_in_envelope_optional::<i32, D>(
7430                self.version.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
7431                encoder,
7432                offset + cur_offset,
7433                depth,
7434            )?;
7435
7436            _prev_end_offset = cur_offset + envelope_size;
7437            if 2 > max_ordinal {
7438                return Ok(());
7439            }
7440
7441            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7442            // are envelope_size bytes.
7443            let cur_offset: usize = (2 - 1) * envelope_size;
7444
7445            // Zero reserved fields.
7446            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7447
7448            // Safety:
7449            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7450            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7451            //   envelope_size bytes, there is always sufficient room.
7452            fidl::encoding::encode_in_envelope_optional::<i32, D>(
7453                self.max_filter_length
7454                    .as_ref()
7455                    .map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
7456                encoder,
7457                offset + cur_offset,
7458                depth,
7459            )?;
7460
7461            _prev_end_offset = cur_offset + envelope_size;
7462
7463            Ok(())
7464        }
7465    }
7466
7467    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7468        for WifiStaIfaceGetApfPacketFilterSupportResponse
7469    {
7470        #[inline(always)]
7471        fn new_empty() -> Self {
7472            Self::default()
7473        }
7474
7475        unsafe fn decode(
7476            &mut self,
7477            decoder: &mut fidl::encoding::Decoder<'_, D>,
7478            offset: usize,
7479            mut depth: fidl::encoding::Depth,
7480        ) -> fidl::Result<()> {
7481            decoder.debug_check_bounds::<Self>(offset);
7482            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7483                None => return Err(fidl::Error::NotNullable),
7484                Some(len) => len,
7485            };
7486            // Calling decoder.out_of_line_offset(0) is not allowed.
7487            if len == 0 {
7488                return Ok(());
7489            };
7490            depth.increment()?;
7491            let envelope_size = 8;
7492            let bytes_len = len * envelope_size;
7493            let offset = decoder.out_of_line_offset(bytes_len)?;
7494            // Decode the envelope for each type.
7495            let mut _next_ordinal_to_read = 0;
7496            let mut next_offset = offset;
7497            let end_offset = offset + bytes_len;
7498            _next_ordinal_to_read += 1;
7499            if next_offset >= end_offset {
7500                return Ok(());
7501            }
7502
7503            // Decode unknown envelopes for gaps in ordinals.
7504            while _next_ordinal_to_read < 1 {
7505                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7506                _next_ordinal_to_read += 1;
7507                next_offset += envelope_size;
7508            }
7509
7510            let next_out_of_line = decoder.next_out_of_line();
7511            let handles_before = decoder.remaining_handles();
7512            if let Some((inlined, num_bytes, num_handles)) =
7513                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7514            {
7515                let member_inline_size =
7516                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7517                if inlined != (member_inline_size <= 4) {
7518                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7519                }
7520                let inner_offset;
7521                let mut inner_depth = depth.clone();
7522                if inlined {
7523                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7524                    inner_offset = next_offset;
7525                } else {
7526                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7527                    inner_depth.increment()?;
7528                }
7529                let val_ref = self.version.get_or_insert_with(|| fidl::new_empty!(i32, D));
7530                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
7531                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7532                {
7533                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7534                }
7535                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7536                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7537                }
7538            }
7539
7540            next_offset += envelope_size;
7541            _next_ordinal_to_read += 1;
7542            if next_offset >= end_offset {
7543                return Ok(());
7544            }
7545
7546            // Decode unknown envelopes for gaps in ordinals.
7547            while _next_ordinal_to_read < 2 {
7548                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7549                _next_ordinal_to_read += 1;
7550                next_offset += envelope_size;
7551            }
7552
7553            let next_out_of_line = decoder.next_out_of_line();
7554            let handles_before = decoder.remaining_handles();
7555            if let Some((inlined, num_bytes, num_handles)) =
7556                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7557            {
7558                let member_inline_size =
7559                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7560                if inlined != (member_inline_size <= 4) {
7561                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7562                }
7563                let inner_offset;
7564                let mut inner_depth = depth.clone();
7565                if inlined {
7566                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7567                    inner_offset = next_offset;
7568                } else {
7569                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7570                    inner_depth.increment()?;
7571                }
7572                let val_ref =
7573                    self.max_filter_length.get_or_insert_with(|| fidl::new_empty!(i32, D));
7574                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
7575                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7576                {
7577                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7578                }
7579                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7580                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7581                }
7582            }
7583
7584            next_offset += envelope_size;
7585
7586            // Decode the remaining unknown envelopes.
7587            while next_offset < end_offset {
7588                _next_ordinal_to_read += 1;
7589                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7590                next_offset += envelope_size;
7591            }
7592
7593            Ok(())
7594        }
7595    }
7596
7597    impl WifiStaIfaceGetLinkLayerStatsResponse {
7598        #[inline(always)]
7599        fn max_ordinal_present(&self) -> u64 {
7600            if let Some(_) = self.stats {
7601                return 1;
7602            }
7603            0
7604        }
7605    }
7606
7607    impl fidl::encoding::ValueTypeMarker for WifiStaIfaceGetLinkLayerStatsResponse {
7608        type Borrowed<'a> = &'a Self;
7609        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7610            value
7611        }
7612    }
7613
7614    unsafe impl fidl::encoding::TypeMarker for WifiStaIfaceGetLinkLayerStatsResponse {
7615        type Owned = Self;
7616
7617        #[inline(always)]
7618        fn inline_align(_context: fidl::encoding::Context) -> usize {
7619            8
7620        }
7621
7622        #[inline(always)]
7623        fn inline_size(_context: fidl::encoding::Context) -> usize {
7624            16
7625        }
7626    }
7627
7628    unsafe impl<D: fidl::encoding::ResourceDialect>
7629        fidl::encoding::Encode<WifiStaIfaceGetLinkLayerStatsResponse, D>
7630        for &WifiStaIfaceGetLinkLayerStatsResponse
7631    {
7632        unsafe fn encode(
7633            self,
7634            encoder: &mut fidl::encoding::Encoder<'_, D>,
7635            offset: usize,
7636            mut depth: fidl::encoding::Depth,
7637        ) -> fidl::Result<()> {
7638            encoder.debug_check_bounds::<WifiStaIfaceGetLinkLayerStatsResponse>(offset);
7639            // Vector header
7640            let max_ordinal: u64 = self.max_ordinal_present();
7641            encoder.write_num(max_ordinal, offset);
7642            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7643            // Calling encoder.out_of_line_offset(0) is not allowed.
7644            if max_ordinal == 0 {
7645                return Ok(());
7646            }
7647            depth.increment()?;
7648            let envelope_size = 8;
7649            let bytes_len = max_ordinal as usize * envelope_size;
7650            #[allow(unused_variables)]
7651            let offset = encoder.out_of_line_offset(bytes_len);
7652            let mut _prev_end_offset: usize = 0;
7653            if 1 > max_ordinal {
7654                return Ok(());
7655            }
7656
7657            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7658            // are envelope_size bytes.
7659            let cur_offset: usize = (1 - 1) * envelope_size;
7660
7661            // Zero reserved fields.
7662            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7663
7664            // Safety:
7665            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7666            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7667            //   envelope_size bytes, there is always sufficient room.
7668            fidl::encoding::encode_in_envelope_optional::<LinkLayerStats, D>(
7669                self.stats
7670                    .as_ref()
7671                    .map(<LinkLayerStats as fidl::encoding::ValueTypeMarker>::borrow),
7672                encoder,
7673                offset + cur_offset,
7674                depth,
7675            )?;
7676
7677            _prev_end_offset = cur_offset + envelope_size;
7678
7679            Ok(())
7680        }
7681    }
7682
7683    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7684        for WifiStaIfaceGetLinkLayerStatsResponse
7685    {
7686        #[inline(always)]
7687        fn new_empty() -> Self {
7688            Self::default()
7689        }
7690
7691        unsafe fn decode(
7692            &mut self,
7693            decoder: &mut fidl::encoding::Decoder<'_, D>,
7694            offset: usize,
7695            mut depth: fidl::encoding::Depth,
7696        ) -> fidl::Result<()> {
7697            decoder.debug_check_bounds::<Self>(offset);
7698            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7699                None => return Err(fidl::Error::NotNullable),
7700                Some(len) => len,
7701            };
7702            // Calling decoder.out_of_line_offset(0) is not allowed.
7703            if len == 0 {
7704                return Ok(());
7705            };
7706            depth.increment()?;
7707            let envelope_size = 8;
7708            let bytes_len = len * envelope_size;
7709            let offset = decoder.out_of_line_offset(bytes_len)?;
7710            // Decode the envelope for each type.
7711            let mut _next_ordinal_to_read = 0;
7712            let mut next_offset = offset;
7713            let end_offset = offset + bytes_len;
7714            _next_ordinal_to_read += 1;
7715            if next_offset >= end_offset {
7716                return Ok(());
7717            }
7718
7719            // Decode unknown envelopes for gaps in ordinals.
7720            while _next_ordinal_to_read < 1 {
7721                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7722                _next_ordinal_to_read += 1;
7723                next_offset += envelope_size;
7724            }
7725
7726            let next_out_of_line = decoder.next_out_of_line();
7727            let handles_before = decoder.remaining_handles();
7728            if let Some((inlined, num_bytes, num_handles)) =
7729                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7730            {
7731                let member_inline_size =
7732                    <LinkLayerStats as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7733                if inlined != (member_inline_size <= 4) {
7734                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7735                }
7736                let inner_offset;
7737                let mut inner_depth = depth.clone();
7738                if inlined {
7739                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7740                    inner_offset = next_offset;
7741                } else {
7742                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7743                    inner_depth.increment()?;
7744                }
7745                let val_ref = self.stats.get_or_insert_with(|| fidl::new_empty!(LinkLayerStats, D));
7746                fidl::decode!(LinkLayerStats, D, val_ref, decoder, inner_offset, inner_depth)?;
7747                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7748                {
7749                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7750                }
7751                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7752                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7753                }
7754            }
7755
7756            next_offset += envelope_size;
7757
7758            // Decode the remaining unknown envelopes.
7759            while next_offset < end_offset {
7760                _next_ordinal_to_read += 1;
7761                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7762                next_offset += envelope_size;
7763            }
7764
7765            Ok(())
7766        }
7767    }
7768
7769    impl WifiStaIfaceGetNameResponse {
7770        #[inline(always)]
7771        fn max_ordinal_present(&self) -> u64 {
7772            if let Some(_) = self.iface_name {
7773                return 1;
7774            }
7775            0
7776        }
7777    }
7778
7779    impl fidl::encoding::ValueTypeMarker for WifiStaIfaceGetNameResponse {
7780        type Borrowed<'a> = &'a Self;
7781        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7782            value
7783        }
7784    }
7785
7786    unsafe impl fidl::encoding::TypeMarker for WifiStaIfaceGetNameResponse {
7787        type Owned = Self;
7788
7789        #[inline(always)]
7790        fn inline_align(_context: fidl::encoding::Context) -> usize {
7791            8
7792        }
7793
7794        #[inline(always)]
7795        fn inline_size(_context: fidl::encoding::Context) -> usize {
7796            16
7797        }
7798    }
7799
7800    unsafe impl<D: fidl::encoding::ResourceDialect>
7801        fidl::encoding::Encode<WifiStaIfaceGetNameResponse, D> for &WifiStaIfaceGetNameResponse
7802    {
7803        unsafe fn encode(
7804            self,
7805            encoder: &mut fidl::encoding::Encoder<'_, D>,
7806            offset: usize,
7807            mut depth: fidl::encoding::Depth,
7808        ) -> fidl::Result<()> {
7809            encoder.debug_check_bounds::<WifiStaIfaceGetNameResponse>(offset);
7810            // Vector header
7811            let max_ordinal: u64 = self.max_ordinal_present();
7812            encoder.write_num(max_ordinal, offset);
7813            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7814            // Calling encoder.out_of_line_offset(0) is not allowed.
7815            if max_ordinal == 0 {
7816                return Ok(());
7817            }
7818            depth.increment()?;
7819            let envelope_size = 8;
7820            let bytes_len = max_ordinal as usize * envelope_size;
7821            #[allow(unused_variables)]
7822            let offset = encoder.out_of_line_offset(bytes_len);
7823            let mut _prev_end_offset: usize = 0;
7824            if 1 > max_ordinal {
7825                return Ok(());
7826            }
7827
7828            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7829            // are envelope_size bytes.
7830            let cur_offset: usize = (1 - 1) * envelope_size;
7831
7832            // Zero reserved fields.
7833            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7834
7835            // Safety:
7836            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7837            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7838            //   envelope_size bytes, there is always sufficient room.
7839            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
7840                self.iface_name.as_ref().map(
7841                    <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
7842                ),
7843                encoder,
7844                offset + cur_offset,
7845                depth,
7846            )?;
7847
7848            _prev_end_offset = cur_offset + envelope_size;
7849
7850            Ok(())
7851        }
7852    }
7853
7854    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7855        for WifiStaIfaceGetNameResponse
7856    {
7857        #[inline(always)]
7858        fn new_empty() -> Self {
7859            Self::default()
7860        }
7861
7862        unsafe fn decode(
7863            &mut self,
7864            decoder: &mut fidl::encoding::Decoder<'_, D>,
7865            offset: usize,
7866            mut depth: fidl::encoding::Depth,
7867        ) -> fidl::Result<()> {
7868            decoder.debug_check_bounds::<Self>(offset);
7869            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7870                None => return Err(fidl::Error::NotNullable),
7871                Some(len) => len,
7872            };
7873            // Calling decoder.out_of_line_offset(0) is not allowed.
7874            if len == 0 {
7875                return Ok(());
7876            };
7877            depth.increment()?;
7878            let envelope_size = 8;
7879            let bytes_len = len * envelope_size;
7880            let offset = decoder.out_of_line_offset(bytes_len)?;
7881            // Decode the envelope for each type.
7882            let mut _next_ordinal_to_read = 0;
7883            let mut next_offset = offset;
7884            let end_offset = offset + bytes_len;
7885            _next_ordinal_to_read += 1;
7886            if next_offset >= end_offset {
7887                return Ok(());
7888            }
7889
7890            // Decode unknown envelopes for gaps in ordinals.
7891            while _next_ordinal_to_read < 1 {
7892                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7893                _next_ordinal_to_read += 1;
7894                next_offset += envelope_size;
7895            }
7896
7897            let next_out_of_line = decoder.next_out_of_line();
7898            let handles_before = decoder.remaining_handles();
7899            if let Some((inlined, num_bytes, num_handles)) =
7900                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7901            {
7902                let member_inline_size =
7903                    <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
7904                        decoder.context,
7905                    );
7906                if inlined != (member_inline_size <= 4) {
7907                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7908                }
7909                let inner_offset;
7910                let mut inner_depth = depth.clone();
7911                if inlined {
7912                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7913                    inner_offset = next_offset;
7914                } else {
7915                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7916                    inner_depth.increment()?;
7917                }
7918                let val_ref = self
7919                    .iface_name
7920                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
7921                fidl::decode!(
7922                    fidl::encoding::BoundedString<16>,
7923                    D,
7924                    val_ref,
7925                    decoder,
7926                    inner_offset,
7927                    inner_depth
7928                )?;
7929                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7930                {
7931                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7932                }
7933                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7934                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7935                }
7936            }
7937
7938            next_offset += envelope_size;
7939
7940            // Decode the remaining unknown envelopes.
7941            while next_offset < end_offset {
7942                _next_ordinal_to_read += 1;
7943                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7944                next_offset += envelope_size;
7945            }
7946
7947            Ok(())
7948        }
7949    }
7950
7951    impl WifiStaIfaceReadApfPacketFilterDataResponse {
7952        #[inline(always)]
7953        fn max_ordinal_present(&self) -> u64 {
7954            if let Some(_) = self.memory {
7955                return 1;
7956            }
7957            0
7958        }
7959    }
7960
7961    impl fidl::encoding::ValueTypeMarker for WifiStaIfaceReadApfPacketFilterDataResponse {
7962        type Borrowed<'a> = &'a Self;
7963        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7964            value
7965        }
7966    }
7967
7968    unsafe impl fidl::encoding::TypeMarker for WifiStaIfaceReadApfPacketFilterDataResponse {
7969        type Owned = Self;
7970
7971        #[inline(always)]
7972        fn inline_align(_context: fidl::encoding::Context) -> usize {
7973            8
7974        }
7975
7976        #[inline(always)]
7977        fn inline_size(_context: fidl::encoding::Context) -> usize {
7978            16
7979        }
7980    }
7981
7982    unsafe impl<D: fidl::encoding::ResourceDialect>
7983        fidl::encoding::Encode<WifiStaIfaceReadApfPacketFilterDataResponse, D>
7984        for &WifiStaIfaceReadApfPacketFilterDataResponse
7985    {
7986        unsafe fn encode(
7987            self,
7988            encoder: &mut fidl::encoding::Encoder<'_, D>,
7989            offset: usize,
7990            mut depth: fidl::encoding::Depth,
7991        ) -> fidl::Result<()> {
7992            encoder.debug_check_bounds::<WifiStaIfaceReadApfPacketFilterDataResponse>(offset);
7993            // Vector header
7994            let max_ordinal: u64 = self.max_ordinal_present();
7995            encoder.write_num(max_ordinal, offset);
7996            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7997            // Calling encoder.out_of_line_offset(0) is not allowed.
7998            if max_ordinal == 0 {
7999                return Ok(());
8000            }
8001            depth.increment()?;
8002            let envelope_size = 8;
8003            let bytes_len = max_ordinal as usize * envelope_size;
8004            #[allow(unused_variables)]
8005            let offset = encoder.out_of_line_offset(bytes_len);
8006            let mut _prev_end_offset: usize = 0;
8007            if 1 > max_ordinal {
8008                return Ok(());
8009            }
8010
8011            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8012            // are envelope_size bytes.
8013            let cur_offset: usize = (1 - 1) * envelope_size;
8014
8015            // Zero reserved fields.
8016            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8017
8018            // Safety:
8019            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8020            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8021            //   envelope_size bytes, there is always sufficient room.
8022            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
8023            self.memory.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
8024            encoder, offset + cur_offset, depth
8025        )?;
8026
8027            _prev_end_offset = cur_offset + envelope_size;
8028
8029            Ok(())
8030        }
8031    }
8032
8033    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8034        for WifiStaIfaceReadApfPacketFilterDataResponse
8035    {
8036        #[inline(always)]
8037        fn new_empty() -> Self {
8038            Self::default()
8039        }
8040
8041        unsafe fn decode(
8042            &mut self,
8043            decoder: &mut fidl::encoding::Decoder<'_, D>,
8044            offset: usize,
8045            mut depth: fidl::encoding::Depth,
8046        ) -> fidl::Result<()> {
8047            decoder.debug_check_bounds::<Self>(offset);
8048            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8049                None => return Err(fidl::Error::NotNullable),
8050                Some(len) => len,
8051            };
8052            // Calling decoder.out_of_line_offset(0) is not allowed.
8053            if len == 0 {
8054                return Ok(());
8055            };
8056            depth.increment()?;
8057            let envelope_size = 8;
8058            let bytes_len = len * envelope_size;
8059            let offset = decoder.out_of_line_offset(bytes_len)?;
8060            // Decode the envelope for each type.
8061            let mut _next_ordinal_to_read = 0;
8062            let mut next_offset = offset;
8063            let end_offset = offset + bytes_len;
8064            _next_ordinal_to_read += 1;
8065            if next_offset >= end_offset {
8066                return Ok(());
8067            }
8068
8069            // Decode unknown envelopes for gaps in ordinals.
8070            while _next_ordinal_to_read < 1 {
8071                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8072                _next_ordinal_to_read += 1;
8073                next_offset += envelope_size;
8074            }
8075
8076            let next_out_of_line = decoder.next_out_of_line();
8077            let handles_before = decoder.remaining_handles();
8078            if let Some((inlined, num_bytes, num_handles)) =
8079                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8080            {
8081                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8082                if inlined != (member_inline_size <= 4) {
8083                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8084                }
8085                let inner_offset;
8086                let mut inner_depth = depth.clone();
8087                if inlined {
8088                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8089                    inner_offset = next_offset;
8090                } else {
8091                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8092                    inner_depth.increment()?;
8093                }
8094                let val_ref = self.memory.get_or_insert_with(|| {
8095                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
8096                });
8097                fidl::decode!(
8098                    fidl::encoding::UnboundedVector<u8>,
8099                    D,
8100                    val_ref,
8101                    decoder,
8102                    inner_offset,
8103                    inner_depth
8104                )?;
8105                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8106                {
8107                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8108                }
8109                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8110                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8111                }
8112            }
8113
8114            next_offset += envelope_size;
8115
8116            // Decode the remaining unknown envelopes.
8117            while next_offset < end_offset {
8118                _next_ordinal_to_read += 1;
8119                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8120                next_offset += envelope_size;
8121            }
8122
8123            Ok(())
8124        }
8125    }
8126
8127    impl WifiGetChipIdsResponse {
8128        #[inline(always)]
8129        fn max_ordinal_present(&self) -> u64 {
8130            if let Some(_) = self.chip_ids {
8131                return 1;
8132            }
8133            0
8134        }
8135    }
8136
8137    impl fidl::encoding::ValueTypeMarker for WifiGetChipIdsResponse {
8138        type Borrowed<'a> = &'a Self;
8139        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8140            value
8141        }
8142    }
8143
8144    unsafe impl fidl::encoding::TypeMarker for WifiGetChipIdsResponse {
8145        type Owned = Self;
8146
8147        #[inline(always)]
8148        fn inline_align(_context: fidl::encoding::Context) -> usize {
8149            8
8150        }
8151
8152        #[inline(always)]
8153        fn inline_size(_context: fidl::encoding::Context) -> usize {
8154            16
8155        }
8156    }
8157
8158    unsafe impl<D: fidl::encoding::ResourceDialect>
8159        fidl::encoding::Encode<WifiGetChipIdsResponse, D> for &WifiGetChipIdsResponse
8160    {
8161        unsafe fn encode(
8162            self,
8163            encoder: &mut fidl::encoding::Encoder<'_, D>,
8164            offset: usize,
8165            mut depth: fidl::encoding::Depth,
8166        ) -> fidl::Result<()> {
8167            encoder.debug_check_bounds::<WifiGetChipIdsResponse>(offset);
8168            // Vector header
8169            let max_ordinal: u64 = self.max_ordinal_present();
8170            encoder.write_num(max_ordinal, offset);
8171            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8172            // Calling encoder.out_of_line_offset(0) is not allowed.
8173            if max_ordinal == 0 {
8174                return Ok(());
8175            }
8176            depth.increment()?;
8177            let envelope_size = 8;
8178            let bytes_len = max_ordinal as usize * envelope_size;
8179            #[allow(unused_variables)]
8180            let offset = encoder.out_of_line_offset(bytes_len);
8181            let mut _prev_end_offset: usize = 0;
8182            if 1 > max_ordinal {
8183                return Ok(());
8184            }
8185
8186            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8187            // are envelope_size bytes.
8188            let cur_offset: usize = (1 - 1) * envelope_size;
8189
8190            // Zero reserved fields.
8191            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8192
8193            // Safety:
8194            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8195            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8196            //   envelope_size bytes, there is always sufficient room.
8197            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u32>, D>(
8198            self.chip_ids.as_ref().map(<fidl::encoding::UnboundedVector<u32> as fidl::encoding::ValueTypeMarker>::borrow),
8199            encoder, offset + cur_offset, depth
8200        )?;
8201
8202            _prev_end_offset = cur_offset + envelope_size;
8203
8204            Ok(())
8205        }
8206    }
8207
8208    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8209        for WifiGetChipIdsResponse
8210    {
8211        #[inline(always)]
8212        fn new_empty() -> Self {
8213            Self::default()
8214        }
8215
8216        unsafe fn decode(
8217            &mut self,
8218            decoder: &mut fidl::encoding::Decoder<'_, D>,
8219            offset: usize,
8220            mut depth: fidl::encoding::Depth,
8221        ) -> fidl::Result<()> {
8222            decoder.debug_check_bounds::<Self>(offset);
8223            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8224                None => return Err(fidl::Error::NotNullable),
8225                Some(len) => len,
8226            };
8227            // Calling decoder.out_of_line_offset(0) is not allowed.
8228            if len == 0 {
8229                return Ok(());
8230            };
8231            depth.increment()?;
8232            let envelope_size = 8;
8233            let bytes_len = len * envelope_size;
8234            let offset = decoder.out_of_line_offset(bytes_len)?;
8235            // Decode the envelope for each type.
8236            let mut _next_ordinal_to_read = 0;
8237            let mut next_offset = offset;
8238            let end_offset = offset + bytes_len;
8239            _next_ordinal_to_read += 1;
8240            if next_offset >= end_offset {
8241                return Ok(());
8242            }
8243
8244            // Decode unknown envelopes for gaps in ordinals.
8245            while _next_ordinal_to_read < 1 {
8246                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8247                _next_ordinal_to_read += 1;
8248                next_offset += envelope_size;
8249            }
8250
8251            let next_out_of_line = decoder.next_out_of_line();
8252            let handles_before = decoder.remaining_handles();
8253            if let Some((inlined, num_bytes, num_handles)) =
8254                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8255            {
8256                let member_inline_size = <fidl::encoding::UnboundedVector<u32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8257                if inlined != (member_inline_size <= 4) {
8258                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8259                }
8260                let inner_offset;
8261                let mut inner_depth = depth.clone();
8262                if inlined {
8263                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8264                    inner_offset = next_offset;
8265                } else {
8266                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8267                    inner_depth.increment()?;
8268                }
8269                let val_ref = self.chip_ids.get_or_insert_with(|| {
8270                    fidl::new_empty!(fidl::encoding::UnboundedVector<u32>, D)
8271                });
8272                fidl::decode!(
8273                    fidl::encoding::UnboundedVector<u32>,
8274                    D,
8275                    val_ref,
8276                    decoder,
8277                    inner_offset,
8278                    inner_depth
8279                )?;
8280                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8281                {
8282                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8283                }
8284                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8285                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8286                }
8287            }
8288
8289            next_offset += envelope_size;
8290
8291            // Decode the remaining unknown envelopes.
8292            while next_offset < end_offset {
8293                _next_ordinal_to_read += 1;
8294                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8295                next_offset += envelope_size;
8296            }
8297
8298            Ok(())
8299        }
8300    }
8301
8302    impl WifiGetStateResponse {
8303        #[inline(always)]
8304        fn max_ordinal_present(&self) -> u64 {
8305            if let Some(_) = self.is_started {
8306                return 1;
8307            }
8308            0
8309        }
8310    }
8311
8312    impl fidl::encoding::ValueTypeMarker for WifiGetStateResponse {
8313        type Borrowed<'a> = &'a Self;
8314        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8315            value
8316        }
8317    }
8318
8319    unsafe impl fidl::encoding::TypeMarker for WifiGetStateResponse {
8320        type Owned = Self;
8321
8322        #[inline(always)]
8323        fn inline_align(_context: fidl::encoding::Context) -> usize {
8324            8
8325        }
8326
8327        #[inline(always)]
8328        fn inline_size(_context: fidl::encoding::Context) -> usize {
8329            16
8330        }
8331    }
8332
8333    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WifiGetStateResponse, D>
8334        for &WifiGetStateResponse
8335    {
8336        unsafe fn encode(
8337            self,
8338            encoder: &mut fidl::encoding::Encoder<'_, D>,
8339            offset: usize,
8340            mut depth: fidl::encoding::Depth,
8341        ) -> fidl::Result<()> {
8342            encoder.debug_check_bounds::<WifiGetStateResponse>(offset);
8343            // Vector header
8344            let max_ordinal: u64 = self.max_ordinal_present();
8345            encoder.write_num(max_ordinal, offset);
8346            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8347            // Calling encoder.out_of_line_offset(0) is not allowed.
8348            if max_ordinal == 0 {
8349                return Ok(());
8350            }
8351            depth.increment()?;
8352            let envelope_size = 8;
8353            let bytes_len = max_ordinal as usize * envelope_size;
8354            #[allow(unused_variables)]
8355            let offset = encoder.out_of_line_offset(bytes_len);
8356            let mut _prev_end_offset: usize = 0;
8357            if 1 > max_ordinal {
8358                return Ok(());
8359            }
8360
8361            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8362            // are envelope_size bytes.
8363            let cur_offset: usize = (1 - 1) * envelope_size;
8364
8365            // Zero reserved fields.
8366            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8367
8368            // Safety:
8369            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8370            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8371            //   envelope_size bytes, there is always sufficient room.
8372            fidl::encoding::encode_in_envelope_optional::<bool, D>(
8373                self.is_started.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
8374                encoder,
8375                offset + cur_offset,
8376                depth,
8377            )?;
8378
8379            _prev_end_offset = cur_offset + envelope_size;
8380
8381            Ok(())
8382        }
8383    }
8384
8385    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WifiGetStateResponse {
8386        #[inline(always)]
8387        fn new_empty() -> Self {
8388            Self::default()
8389        }
8390
8391        unsafe fn decode(
8392            &mut self,
8393            decoder: &mut fidl::encoding::Decoder<'_, D>,
8394            offset: usize,
8395            mut depth: fidl::encoding::Depth,
8396        ) -> fidl::Result<()> {
8397            decoder.debug_check_bounds::<Self>(offset);
8398            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8399                None => return Err(fidl::Error::NotNullable),
8400                Some(len) => len,
8401            };
8402            // Calling decoder.out_of_line_offset(0) is not allowed.
8403            if len == 0 {
8404                return Ok(());
8405            };
8406            depth.increment()?;
8407            let envelope_size = 8;
8408            let bytes_len = len * envelope_size;
8409            let offset = decoder.out_of_line_offset(bytes_len)?;
8410            // Decode the envelope for each type.
8411            let mut _next_ordinal_to_read = 0;
8412            let mut next_offset = offset;
8413            let end_offset = offset + bytes_len;
8414            _next_ordinal_to_read += 1;
8415            if next_offset >= end_offset {
8416                return Ok(());
8417            }
8418
8419            // Decode unknown envelopes for gaps in ordinals.
8420            while _next_ordinal_to_read < 1 {
8421                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8422                _next_ordinal_to_read += 1;
8423                next_offset += envelope_size;
8424            }
8425
8426            let next_out_of_line = decoder.next_out_of_line();
8427            let handles_before = decoder.remaining_handles();
8428            if let Some((inlined, num_bytes, num_handles)) =
8429                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8430            {
8431                let member_inline_size =
8432                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8433                if inlined != (member_inline_size <= 4) {
8434                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8435                }
8436                let inner_offset;
8437                let mut inner_depth = depth.clone();
8438                if inlined {
8439                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8440                    inner_offset = next_offset;
8441                } else {
8442                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8443                    inner_depth.increment()?;
8444                }
8445                let val_ref = self.is_started.get_or_insert_with(|| fidl::new_empty!(bool, D));
8446                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
8447                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8448                {
8449                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8450                }
8451                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8452                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8453                }
8454            }
8455
8456            next_offset += envelope_size;
8457
8458            // Decode the remaining unknown envelopes.
8459            while next_offset < end_offset {
8460                _next_ordinal_to_read += 1;
8461                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8462                next_offset += envelope_size;
8463            }
8464
8465            Ok(())
8466        }
8467    }
8468
8469    impl fidl::encoding::ValueTypeMarker for Nl80211Message {
8470        type Borrowed<'a> = &'a Self;
8471        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8472            value
8473        }
8474    }
8475
8476    unsafe impl fidl::encoding::TypeMarker for Nl80211Message {
8477        type Owned = Self;
8478
8479        #[inline(always)]
8480        fn inline_align(_context: fidl::encoding::Context) -> usize {
8481            8
8482        }
8483
8484        #[inline(always)]
8485        fn inline_size(_context: fidl::encoding::Context) -> usize {
8486            16
8487        }
8488    }
8489
8490    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nl80211Message, D>
8491        for &Nl80211Message
8492    {
8493        #[inline]
8494        unsafe fn encode(
8495            self,
8496            encoder: &mut fidl::encoding::Encoder<'_, D>,
8497            offset: usize,
8498            _depth: fidl::encoding::Depth,
8499        ) -> fidl::Result<()> {
8500            encoder.debug_check_bounds::<Nl80211Message>(offset);
8501            encoder.write_num::<u64>(self.ordinal(), offset);
8502            match self {
8503                Nl80211Message::Done(ref val) => fidl::encoding::encode_in_envelope::<Done, D>(
8504                    <Done as fidl::encoding::ValueTypeMarker>::borrow(val),
8505                    encoder,
8506                    offset + 8,
8507                    _depth,
8508                ),
8509                Nl80211Message::Error(ref val) => fidl::encoding::encode_in_envelope::<Error, D>(
8510                    <Error as fidl::encoding::ValueTypeMarker>::borrow(val),
8511                    encoder,
8512                    offset + 8,
8513                    _depth,
8514                ),
8515                Nl80211Message::Ack(ref val) => fidl::encoding::encode_in_envelope::<Ack, D>(
8516                    <Ack as fidl::encoding::ValueTypeMarker>::borrow(val),
8517                    encoder,
8518                    offset + 8,
8519                    _depth,
8520                ),
8521                Nl80211Message::Message(ref val) => {
8522                    fidl::encoding::encode_in_envelope::<Message, D>(
8523                        <Message as fidl::encoding::ValueTypeMarker>::borrow(val),
8524                        encoder,
8525                        offset + 8,
8526                        _depth,
8527                    )
8528                }
8529                Nl80211Message::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
8530            }
8531        }
8532    }
8533
8534    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nl80211Message {
8535        #[inline(always)]
8536        fn new_empty() -> Self {
8537            Self::__SourceBreaking { unknown_ordinal: 0 }
8538        }
8539
8540        #[inline]
8541        unsafe fn decode(
8542            &mut self,
8543            decoder: &mut fidl::encoding::Decoder<'_, D>,
8544            offset: usize,
8545            mut depth: fidl::encoding::Depth,
8546        ) -> fidl::Result<()> {
8547            decoder.debug_check_bounds::<Self>(offset);
8548            #[allow(unused_variables)]
8549            let next_out_of_line = decoder.next_out_of_line();
8550            let handles_before = decoder.remaining_handles();
8551            let (ordinal, inlined, num_bytes, num_handles) =
8552                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
8553
8554            let member_inline_size = match ordinal {
8555                1 => <Done as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8556                2 => <Error as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8557                3 => <Ack as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8558                4 => <Message as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8559                0 => return Err(fidl::Error::UnknownUnionTag),
8560                _ => num_bytes as usize,
8561            };
8562
8563            if inlined != (member_inline_size <= 4) {
8564                return Err(fidl::Error::InvalidInlineBitInEnvelope);
8565            }
8566            let _inner_offset;
8567            if inlined {
8568                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
8569                _inner_offset = offset + 8;
8570            } else {
8571                depth.increment()?;
8572                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8573            }
8574            match ordinal {
8575                1 => {
8576                    #[allow(irrefutable_let_patterns)]
8577                    if let Nl80211Message::Done(_) = self {
8578                        // Do nothing, read the value into the object
8579                    } else {
8580                        // Initialize `self` to the right variant
8581                        *self = Nl80211Message::Done(fidl::new_empty!(Done, D));
8582                    }
8583                    #[allow(irrefutable_let_patterns)]
8584                    if let Nl80211Message::Done(ref mut val) = self {
8585                        fidl::decode!(Done, D, val, decoder, _inner_offset, depth)?;
8586                    } else {
8587                        unreachable!()
8588                    }
8589                }
8590                2 => {
8591                    #[allow(irrefutable_let_patterns)]
8592                    if let Nl80211Message::Error(_) = self {
8593                        // Do nothing, read the value into the object
8594                    } else {
8595                        // Initialize `self` to the right variant
8596                        *self = Nl80211Message::Error(fidl::new_empty!(Error, D));
8597                    }
8598                    #[allow(irrefutable_let_patterns)]
8599                    if let Nl80211Message::Error(ref mut val) = self {
8600                        fidl::decode!(Error, D, val, decoder, _inner_offset, depth)?;
8601                    } else {
8602                        unreachable!()
8603                    }
8604                }
8605                3 => {
8606                    #[allow(irrefutable_let_patterns)]
8607                    if let Nl80211Message::Ack(_) = self {
8608                        // Do nothing, read the value into the object
8609                    } else {
8610                        // Initialize `self` to the right variant
8611                        *self = Nl80211Message::Ack(fidl::new_empty!(Ack, D));
8612                    }
8613                    #[allow(irrefutable_let_patterns)]
8614                    if let Nl80211Message::Ack(ref mut val) = self {
8615                        fidl::decode!(Ack, D, val, decoder, _inner_offset, depth)?;
8616                    } else {
8617                        unreachable!()
8618                    }
8619                }
8620                4 => {
8621                    #[allow(irrefutable_let_patterns)]
8622                    if let Nl80211Message::Message(_) = self {
8623                        // Do nothing, read the value into the object
8624                    } else {
8625                        // Initialize `self` to the right variant
8626                        *self = Nl80211Message::Message(fidl::new_empty!(Message, D));
8627                    }
8628                    #[allow(irrefutable_let_patterns)]
8629                    if let Nl80211Message::Message(ref mut val) = self {
8630                        fidl::decode!(Message, D, val, decoder, _inner_offset, depth)?;
8631                    } else {
8632                        unreachable!()
8633                    }
8634                }
8635                #[allow(deprecated)]
8636                ordinal => {
8637                    for _ in 0..num_handles {
8638                        decoder.drop_next_handle()?;
8639                    }
8640                    *self = Nl80211Message::__SourceBreaking { unknown_ordinal: ordinal };
8641                }
8642            }
8643            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8644                return Err(fidl::Error::InvalidNumBytesInEnvelope);
8645            }
8646            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8647                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8648            }
8649            Ok(())
8650        }
8651    }
8652}