Skip to main content

fidl_fuchsia_wlan_wlanix__common/
fidl_fuchsia_wlan_wlanix__common.rs

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