Skip to main content

fidl_fuchsia_wlan_wlanix_common/
fidl_fuchsia_wlan_wlanix_common.rs

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