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