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