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