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
11#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
12pub enum BtCoexistenceMode {
13    Enabled,
14    Disabled,
15    Sense,
16    #[doc(hidden)]
17    __SourceBreaking {
18        unknown_ordinal: u32,
19    },
20}
21
22/// Pattern that matches an unknown `BtCoexistenceMode` member.
23#[macro_export]
24macro_rules! BtCoexistenceModeUnknown {
25    () => {
26        _
27    };
28}
29
30impl BtCoexistenceMode {
31    #[inline]
32    pub fn from_primitive(prim: u32) -> Option<Self> {
33        match prim {
34            1 => Some(Self::Enabled),
35            2 => Some(Self::Disabled),
36            3 => Some(Self::Sense),
37            _ => None,
38        }
39    }
40
41    #[inline]
42    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
43        match prim {
44            1 => Self::Enabled,
45            2 => Self::Disabled,
46            3 => Self::Sense,
47            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
48        }
49    }
50
51    #[inline]
52    pub fn unknown() -> Self {
53        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
54    }
55
56    #[inline]
57    pub const fn into_primitive(self) -> u32 {
58        match self {
59            Self::Enabled => 1,
60            Self::Disabled => 2,
61            Self::Sense => 3,
62            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
63        }
64    }
65
66    #[inline]
67    pub fn is_unknown(&self) -> bool {
68        match self {
69            Self::__SourceBreaking { unknown_ordinal: _ } => true,
70            _ => false,
71        }
72    }
73}
74
75#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
76pub enum IfaceConcurrencyType {
77    Sta,
78    Ap,
79    ApBridged,
80    P2P,
81    NanIface,
82    #[doc(hidden)]
83    __SourceBreaking {
84        unknown_ordinal: u32,
85    },
86}
87
88/// Pattern that matches an unknown `IfaceConcurrencyType` member.
89#[macro_export]
90macro_rules! IfaceConcurrencyTypeUnknown {
91    () => {
92        _
93    };
94}
95
96impl IfaceConcurrencyType {
97    #[inline]
98    pub fn from_primitive(prim: u32) -> Option<Self> {
99        match prim {
100            1 => Some(Self::Sta),
101            2 => Some(Self::Ap),
102            3 => Some(Self::ApBridged),
103            4 => Some(Self::P2P),
104            5 => Some(Self::NanIface),
105            _ => None,
106        }
107    }
108
109    #[inline]
110    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
111        match prim {
112            1 => Self::Sta,
113            2 => Self::Ap,
114            3 => Self::ApBridged,
115            4 => Self::P2P,
116            5 => Self::NanIface,
117            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
118        }
119    }
120
121    #[inline]
122    pub fn unknown() -> Self {
123        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
124    }
125
126    #[inline]
127    pub const fn into_primitive(self) -> u32 {
128        match self {
129            Self::Sta => 1,
130            Self::Ap => 2,
131            Self::ApBridged => 3,
132            Self::P2P => 4,
133            Self::NanIface => 5,
134            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
135        }
136    }
137
138    #[inline]
139    pub fn is_unknown(&self) -> bool {
140        match self {
141            Self::__SourceBreaking { unknown_ordinal: _ } => true,
142            _ => false,
143        }
144    }
145}
146
147#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
148pub enum Nl80211MessageType {
149    Done,
150    Error,
151    Ack,
152    NoOp,
153    Overrun,
154    Message,
155    #[doc(hidden)]
156    __SourceBreaking {
157        unknown_ordinal: u32,
158    },
159}
160
161/// Pattern that matches an unknown `Nl80211MessageType` member.
162#[macro_export]
163macro_rules! Nl80211MessageTypeUnknown {
164    () => {
165        _
166    };
167}
168
169impl Nl80211MessageType {
170    #[inline]
171    pub fn from_primitive(prim: u32) -> Option<Self> {
172        match prim {
173            1 => Some(Self::Done),
174            2 => Some(Self::Error),
175            3 => Some(Self::Ack),
176            4 => Some(Self::NoOp),
177            5 => Some(Self::Overrun),
178            6 => Some(Self::Message),
179            _ => None,
180        }
181    }
182
183    #[inline]
184    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
185        match prim {
186            1 => Self::Done,
187            2 => Self::Error,
188            3 => Self::Ack,
189            4 => Self::NoOp,
190            5 => Self::Overrun,
191            6 => Self::Message,
192            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
193        }
194    }
195
196    #[inline]
197    pub fn unknown() -> Self {
198        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
199    }
200
201    #[inline]
202    pub const fn into_primitive(self) -> u32 {
203        match self {
204            Self::Done => 1,
205            Self::Error => 2,
206            Self::Ack => 3,
207            Self::NoOp => 4,
208            Self::Overrun => 5,
209            Self::Message => 6,
210            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
211        }
212    }
213
214    #[inline]
215    pub fn is_unknown(&self) -> bool {
216        match self {
217            Self::__SourceBreaking { unknown_ordinal: _ } => true,
218            _ => false,
219        }
220    }
221}
222
223#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
224pub enum StaIfaceCallbackState {
225    Disconnected,
226    IfaceDisabled,
227    Inactive,
228    Scanning,
229    Authenticating,
230    Associating,
231    Associated,
232    FourwayHandshake,
233    GroupHandshake,
234    Completed,
235    #[doc(hidden)]
236    __SourceBreaking {
237        unknown_ordinal: u32,
238    },
239}
240
241/// Pattern that matches an unknown `StaIfaceCallbackState` member.
242#[macro_export]
243macro_rules! StaIfaceCallbackStateUnknown {
244    () => {
245        _
246    };
247}
248
249impl StaIfaceCallbackState {
250    #[inline]
251    pub fn from_primitive(prim: u32) -> Option<Self> {
252        match prim {
253            0 => Some(Self::Disconnected),
254            1 => Some(Self::IfaceDisabled),
255            2 => Some(Self::Inactive),
256            3 => Some(Self::Scanning),
257            4 => Some(Self::Authenticating),
258            5 => Some(Self::Associating),
259            6 => Some(Self::Associated),
260            7 => Some(Self::FourwayHandshake),
261            8 => Some(Self::GroupHandshake),
262            9 => Some(Self::Completed),
263            _ => None,
264        }
265    }
266
267    #[inline]
268    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
269        match prim {
270            0 => Self::Disconnected,
271            1 => Self::IfaceDisabled,
272            2 => Self::Inactive,
273            3 => Self::Scanning,
274            4 => Self::Authenticating,
275            5 => Self::Associating,
276            6 => Self::Associated,
277            7 => Self::FourwayHandshake,
278            8 => Self::GroupHandshake,
279            9 => Self::Completed,
280            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
281        }
282    }
283
284    #[inline]
285    pub fn unknown() -> Self {
286        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
287    }
288
289    #[inline]
290    pub const fn into_primitive(self) -> u32 {
291        match self {
292            Self::Disconnected => 0,
293            Self::IfaceDisabled => 1,
294            Self::Inactive => 2,
295            Self::Scanning => 3,
296            Self::Authenticating => 4,
297            Self::Associating => 5,
298            Self::Associated => 6,
299            Self::FourwayHandshake => 7,
300            Self::GroupHandshake => 8,
301            Self::Completed => 9,
302            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
303        }
304    }
305
306    #[inline]
307    pub fn is_unknown(&self) -> bool {
308        match self {
309            Self::__SourceBreaking { unknown_ordinal: _ } => true,
310            _ => false,
311        }
312    }
313}
314
315#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
316pub enum WifiChipTxPowerScenario {
317    VoiceCall,
318    OnHeadCellOff,
319    OnHeadCellOn,
320    OnBodyCellOff,
321    OnBodyCellOn,
322    #[doc(hidden)]
323    __SourceBreaking {
324        unknown_ordinal: u32,
325    },
326}
327
328/// Pattern that matches an unknown `WifiChipTxPowerScenario` member.
329#[macro_export]
330macro_rules! WifiChipTxPowerScenarioUnknown {
331    () => {
332        _
333    };
334}
335
336impl WifiChipTxPowerScenario {
337    #[inline]
338    pub fn from_primitive(prim: u32) -> Option<Self> {
339        match prim {
340            0 => Some(Self::VoiceCall),
341            1 => Some(Self::OnHeadCellOff),
342            2 => Some(Self::OnHeadCellOn),
343            3 => Some(Self::OnBodyCellOff),
344            4 => Some(Self::OnBodyCellOn),
345            _ => None,
346        }
347    }
348
349    #[inline]
350    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
351        match prim {
352            0 => Self::VoiceCall,
353            1 => Self::OnHeadCellOff,
354            2 => Self::OnHeadCellOn,
355            3 => Self::OnBodyCellOff,
356            4 => Self::OnBodyCellOn,
357            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
358        }
359    }
360
361    #[inline]
362    pub fn unknown() -> Self {
363        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
364    }
365
366    #[inline]
367    pub const fn into_primitive(self) -> u32 {
368        match self {
369            Self::VoiceCall => 0,
370            Self::OnHeadCellOff => 1,
371            Self::OnHeadCellOn => 2,
372            Self::OnBodyCellOff => 3,
373            Self::OnBodyCellOn => 4,
374            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
375        }
376    }
377
378    #[inline]
379    pub fn is_unknown(&self) -> bool {
380        match self {
381            Self::__SourceBreaking { unknown_ordinal: _ } => true,
382            _ => false,
383        }
384    }
385}
386
387#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
388pub enum WifiLegacyHalStatus {
389    NotSupported,
390    Internal,
391    InvalidArgument,
392    #[doc(hidden)]
393    __SourceBreaking {
394        unknown_ordinal: u32,
395    },
396}
397
398/// Pattern that matches an unknown `WifiLegacyHalStatus` member.
399#[macro_export]
400macro_rules! WifiLegacyHalStatusUnknown {
401    () => {
402        _
403    };
404}
405
406impl WifiLegacyHalStatus {
407    #[inline]
408    pub fn from_primitive(prim: u32) -> Option<Self> {
409        match prim {
410            1 => Some(Self::NotSupported),
411            2 => Some(Self::Internal),
412            3 => Some(Self::InvalidArgument),
413            _ => None,
414        }
415    }
416
417    #[inline]
418    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
419        match prim {
420            1 => Self::NotSupported,
421            2 => Self::Internal,
422            3 => Self::InvalidArgument,
423            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
424        }
425    }
426
427    #[inline]
428    pub fn unknown() -> Self {
429        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
430    }
431
432    #[inline]
433    pub const fn into_primitive(self) -> u32 {
434        match self {
435            Self::NotSupported => 1,
436            Self::Internal => 2,
437            Self::InvalidArgument => 3,
438            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
439        }
440    }
441
442    #[inline]
443    pub fn is_unknown(&self) -> bool {
444        match self {
445            Self::__SourceBreaking { unknown_ordinal: _ } => true,
446            _ => false,
447        }
448    }
449}
450
451#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
452pub enum WifiLegacyHalTxPowerScenario {
453    Invalid,
454    Default,
455    VoiceCallLegacy,
456    OnHeadCellOff,
457    OnHeadCellOn,
458    OnBodyCellOff,
459    OnBodyCellOn,
460    OnBodyBt,
461    OnHeadHotspot,
462    OnHeadHotspotMmw,
463    OnBodyCellOnBt,
464    OnBodyHotspot,
465    OnBodyHotspotBt,
466    OnBodyHotspotMmw,
467    OnBodyHotspotBtMmw,
468    OnHeadCellOffUnfolded,
469    OnHeadCellOnUnfolded,
470    OnHeadHotspotUnfolded,
471    OnHeadHotspotMmwUnfolded,
472    OnBodyCellOffUnfolded,
473    OnBodyBtUnfolded,
474    OnBodyCellOnUnfolded,
475    OnBodyCellOnBtUnfolded,
476    OnBodyHotspotUnfolded,
477    OnBodyHotspotBtUnfolded,
478    OnBodyHotspotMmwUnfolded,
479    OnBodyHotspotBtMmwUnfolded,
480    OnBodyRearCamera,
481    OnBodyCellOffUnfoldedCap,
482    OnBodyBtUnfoldedCap,
483    OnBodyCellOnUnfoldedCap,
484    OnBodyCellOnBtUnfoldedCap,
485    OnBodyVideoRecording,
486    #[doc(hidden)]
487    __SourceBreaking {
488        unknown_ordinal: i32,
489    },
490}
491
492/// Pattern that matches an unknown `WifiLegacyHalTxPowerScenario` member.
493#[macro_export]
494macro_rules! WifiLegacyHalTxPowerScenarioUnknown {
495    () => {
496        _
497    };
498}
499
500impl WifiLegacyHalTxPowerScenario {
501    #[inline]
502    pub fn from_primitive(prim: i32) -> Option<Self> {
503        match prim {
504            -2 => Some(Self::Invalid),
505            -1 => Some(Self::Default),
506            0 => Some(Self::VoiceCallLegacy),
507            1 => Some(Self::OnHeadCellOff),
508            2 => Some(Self::OnHeadCellOn),
509            3 => Some(Self::OnBodyCellOff),
510            4 => Some(Self::OnBodyCellOn),
511            5 => Some(Self::OnBodyBt),
512            6 => Some(Self::OnHeadHotspot),
513            7 => Some(Self::OnHeadHotspotMmw),
514            8 => Some(Self::OnBodyCellOnBt),
515            9 => Some(Self::OnBodyHotspot),
516            10 => Some(Self::OnBodyHotspotBt),
517            11 => Some(Self::OnBodyHotspotMmw),
518            12 => Some(Self::OnBodyHotspotBtMmw),
519            13 => Some(Self::OnHeadCellOffUnfolded),
520            14 => Some(Self::OnHeadCellOnUnfolded),
521            15 => Some(Self::OnHeadHotspotUnfolded),
522            16 => Some(Self::OnHeadHotspotMmwUnfolded),
523            17 => Some(Self::OnBodyCellOffUnfolded),
524            18 => Some(Self::OnBodyBtUnfolded),
525            19 => Some(Self::OnBodyCellOnUnfolded),
526            20 => Some(Self::OnBodyCellOnBtUnfolded),
527            21 => Some(Self::OnBodyHotspotUnfolded),
528            22 => Some(Self::OnBodyHotspotBtUnfolded),
529            23 => Some(Self::OnBodyHotspotMmwUnfolded),
530            24 => Some(Self::OnBodyHotspotBtMmwUnfolded),
531            25 => Some(Self::OnBodyRearCamera),
532            26 => Some(Self::OnBodyCellOffUnfoldedCap),
533            27 => Some(Self::OnBodyBtUnfoldedCap),
534            28 => Some(Self::OnBodyCellOnUnfoldedCap),
535            29 => Some(Self::OnBodyCellOnBtUnfoldedCap),
536            30 => Some(Self::OnBodyVideoRecording),
537            _ => None,
538        }
539    }
540
541    #[inline]
542    pub fn from_primitive_allow_unknown(prim: i32) -> Self {
543        match prim {
544            -2 => Self::Invalid,
545            -1 => Self::Default,
546            0 => Self::VoiceCallLegacy,
547            1 => Self::OnHeadCellOff,
548            2 => Self::OnHeadCellOn,
549            3 => Self::OnBodyCellOff,
550            4 => Self::OnBodyCellOn,
551            5 => Self::OnBodyBt,
552            6 => Self::OnHeadHotspot,
553            7 => Self::OnHeadHotspotMmw,
554            8 => Self::OnBodyCellOnBt,
555            9 => Self::OnBodyHotspot,
556            10 => Self::OnBodyHotspotBt,
557            11 => Self::OnBodyHotspotMmw,
558            12 => Self::OnBodyHotspotBtMmw,
559            13 => Self::OnHeadCellOffUnfolded,
560            14 => Self::OnHeadCellOnUnfolded,
561            15 => Self::OnHeadHotspotUnfolded,
562            16 => Self::OnHeadHotspotMmwUnfolded,
563            17 => Self::OnBodyCellOffUnfolded,
564            18 => Self::OnBodyBtUnfolded,
565            19 => Self::OnBodyCellOnUnfolded,
566            20 => Self::OnBodyCellOnBtUnfolded,
567            21 => Self::OnBodyHotspotUnfolded,
568            22 => Self::OnBodyHotspotBtUnfolded,
569            23 => Self::OnBodyHotspotMmwUnfolded,
570            24 => Self::OnBodyHotspotBtMmwUnfolded,
571            25 => Self::OnBodyRearCamera,
572            26 => Self::OnBodyCellOffUnfoldedCap,
573            27 => Self::OnBodyBtUnfoldedCap,
574            28 => Self::OnBodyCellOnUnfoldedCap,
575            29 => Self::OnBodyCellOnBtUnfoldedCap,
576            30 => Self::OnBodyVideoRecording,
577            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
578        }
579    }
580
581    #[inline]
582    pub fn unknown() -> Self {
583        Self::__SourceBreaking { unknown_ordinal: 0x7fffffff }
584    }
585
586    #[inline]
587    pub const fn into_primitive(self) -> i32 {
588        match self {
589            Self::Invalid => -2,
590            Self::Default => -1,
591            Self::VoiceCallLegacy => 0,
592            Self::OnHeadCellOff => 1,
593            Self::OnHeadCellOn => 2,
594            Self::OnBodyCellOff => 3,
595            Self::OnBodyCellOn => 4,
596            Self::OnBodyBt => 5,
597            Self::OnHeadHotspot => 6,
598            Self::OnHeadHotspotMmw => 7,
599            Self::OnBodyCellOnBt => 8,
600            Self::OnBodyHotspot => 9,
601            Self::OnBodyHotspotBt => 10,
602            Self::OnBodyHotspotMmw => 11,
603            Self::OnBodyHotspotBtMmw => 12,
604            Self::OnHeadCellOffUnfolded => 13,
605            Self::OnHeadCellOnUnfolded => 14,
606            Self::OnHeadHotspotUnfolded => 15,
607            Self::OnHeadHotspotMmwUnfolded => 16,
608            Self::OnBodyCellOffUnfolded => 17,
609            Self::OnBodyBtUnfolded => 18,
610            Self::OnBodyCellOnUnfolded => 19,
611            Self::OnBodyCellOnBtUnfolded => 20,
612            Self::OnBodyHotspotUnfolded => 21,
613            Self::OnBodyHotspotBtUnfolded => 22,
614            Self::OnBodyHotspotMmwUnfolded => 23,
615            Self::OnBodyHotspotBtMmwUnfolded => 24,
616            Self::OnBodyRearCamera => 25,
617            Self::OnBodyCellOffUnfoldedCap => 26,
618            Self::OnBodyBtUnfoldedCap => 27,
619            Self::OnBodyCellOnUnfoldedCap => 28,
620            Self::OnBodyCellOnBtUnfoldedCap => 29,
621            Self::OnBodyVideoRecording => 30,
622            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
623        }
624    }
625
626    #[inline]
627    pub fn is_unknown(&self) -> bool {
628        match self {
629            Self::__SourceBreaking { unknown_ordinal: _ } => true,
630            _ => false,
631        }
632    }
633}
634
635#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
636pub enum WlanixError {
637    InternalError,
638    InvalidArgs,
639    #[doc(hidden)]
640    __SourceBreaking {
641        unknown_ordinal: u32,
642    },
643}
644
645/// Pattern that matches an unknown `WlanixError` member.
646#[macro_export]
647macro_rules! WlanixErrorUnknown {
648    () => {
649        _
650    };
651}
652
653impl WlanixError {
654    #[inline]
655    pub fn from_primitive(prim: u32) -> Option<Self> {
656        match prim {
657            1 => Some(Self::InternalError),
658            2 => Some(Self::InvalidArgs),
659            _ => None,
660        }
661    }
662
663    #[inline]
664    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
665        match prim {
666            1 => Self::InternalError,
667            2 => Self::InvalidArgs,
668            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
669        }
670    }
671
672    #[inline]
673    pub fn unknown() -> Self {
674        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
675    }
676
677    #[inline]
678    pub const fn into_primitive(self) -> u32 {
679        match self {
680            Self::InternalError => 1,
681            Self::InvalidArgs => 2,
682            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
683        }
684    }
685
686    #[inline]
687    pub fn is_unknown(&self) -> bool {
688        match self {
689            Self::__SourceBreaking { unknown_ordinal: _ } => true,
690            _ => false,
691        }
692    }
693}
694
695#[derive(Clone, Debug, PartialEq)]
696pub struct Nl80211MessageArray {
697    pub messages: Vec<Nl80211Message>,
698}
699
700impl fidl::Persistable for Nl80211MessageArray {}
701
702#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
703pub struct WifiChipSelectTxPowerScenarioRequest {
704    pub scenario: WifiChipTxPowerScenario,
705}
706
707impl fidl::Persistable for WifiChipSelectTxPowerScenarioRequest {}
708
709#[derive(Clone, Debug, Default, PartialEq)]
710pub struct ChipConcurrencyCombination {
711    pub limits: Option<Vec<ChipConcurrencyCombinationLimit>>,
712    #[doc(hidden)]
713    pub __source_breaking: fidl::marker::SourceBreaking,
714}
715
716impl fidl::Persistable for ChipConcurrencyCombination {}
717
718#[derive(Clone, Debug, Default, PartialEq)]
719pub struct ChipConcurrencyCombinationLimit {
720    pub types: Option<Vec<IfaceConcurrencyType>>,
721    pub max_ifaces: Option<u32>,
722    #[doc(hidden)]
723    pub __source_breaking: fidl::marker::SourceBreaking,
724}
725
726impl fidl::Persistable for ChipConcurrencyCombinationLimit {}
727
728#[derive(Clone, Debug, Default, PartialEq)]
729pub struct ChipMode {
730    pub id: Option<u32>,
731    pub available_combinations: Option<Vec<ChipConcurrencyCombination>>,
732    #[doc(hidden)]
733    pub __source_breaking: fidl::marker::SourceBreaking,
734}
735
736impl fidl::Persistable for ChipMode {}
737
738#[derive(Clone, Debug, Default, PartialEq)]
739pub struct Nl80211Message {
740    pub message_type: Option<Nl80211MessageType>,
741    pub payload: Option<Vec<u8>>,
742    #[doc(hidden)]
743    pub __source_breaking: fidl::marker::SourceBreaking,
744}
745
746impl fidl::Persistable for Nl80211Message {}
747
748#[derive(Clone, Debug, Default, PartialEq)]
749pub struct SupplicantStaIfaceCallbackOnAssociationRejectedRequest {
750    pub ssid: Option<Vec<u8>>,
751    pub bssid: Option<[u8; 6]>,
752    pub status_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
753    pub timed_out: Option<bool>,
754    #[doc(hidden)]
755    pub __source_breaking: fidl::marker::SourceBreaking,
756}
757
758impl fidl::Persistable for SupplicantStaIfaceCallbackOnAssociationRejectedRequest {}
759
760#[derive(Clone, Debug, Default, PartialEq)]
761pub struct SupplicantStaIfaceCallbackOnDisconnectedRequest {
762    pub bssid: Option<[u8; 6]>,
763    pub locally_generated: Option<bool>,
764    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
765    #[doc(hidden)]
766    pub __source_breaking: fidl::marker::SourceBreaking,
767}
768
769impl fidl::Persistable for SupplicantStaIfaceCallbackOnDisconnectedRequest {}
770
771#[derive(Clone, Debug, Default, PartialEq)]
772pub struct SupplicantStaIfaceCallbackOnStateChangedRequest {
773    pub new_state: Option<StaIfaceCallbackState>,
774    pub bssid: Option<[u8; 6]>,
775    pub id: Option<u32>,
776    pub ssid: Option<Vec<u8>>,
777    #[doc(hidden)]
778    pub __source_breaking: fidl::marker::SourceBreaking,
779}
780
781impl fidl::Persistable for SupplicantStaIfaceCallbackOnStateChangedRequest {}
782
783#[derive(Clone, Debug, Default, PartialEq)]
784pub struct SupplicantStaIfaceSetBtCoexistenceModeRequest {
785    pub mode: Option<BtCoexistenceMode>,
786    #[doc(hidden)]
787    pub __source_breaking: fidl::marker::SourceBreaking,
788}
789
790impl fidl::Persistable for SupplicantStaIfaceSetBtCoexistenceModeRequest {}
791
792#[derive(Clone, Debug, Default, PartialEq)]
793pub struct SupplicantStaIfaceGetMacAddressResponse {
794    pub mac_addr: Option<[u8; 6]>,
795    #[doc(hidden)]
796    pub __source_breaking: fidl::marker::SourceBreaking,
797}
798
799impl fidl::Persistable for SupplicantStaIfaceGetMacAddressResponse {}
800
801#[derive(Clone, Debug, Default, PartialEq)]
802pub struct SupplicantStaNetworkSetBssidRequest {
803    pub bssid: Option<[u8; 6]>,
804    #[doc(hidden)]
805    pub __source_breaking: fidl::marker::SourceBreaking,
806}
807
808impl fidl::Persistable for SupplicantStaNetworkSetBssidRequest {}
809
810#[derive(Clone, Debug, Default, PartialEq)]
811pub struct SupplicantStaNetworkSetPskPassphraseRequest {
812    pub passphrase: Option<Vec<u8>>,
813    #[doc(hidden)]
814    pub __source_breaking: fidl::marker::SourceBreaking,
815}
816
817impl fidl::Persistable for SupplicantStaNetworkSetPskPassphraseRequest {}
818
819#[derive(Clone, Debug, Default, PartialEq)]
820pub struct SupplicantStaNetworkSetSaePasswordRequest {
821    pub password: Option<Vec<u8>>,
822    #[doc(hidden)]
823    pub __source_breaking: fidl::marker::SourceBreaking,
824}
825
826impl fidl::Persistable for SupplicantStaNetworkSetSaePasswordRequest {}
827
828#[derive(Clone, Debug, Default, PartialEq)]
829pub struct SupplicantStaNetworkSetSsidRequest {
830    pub ssid: Option<Vec<u8>>,
831    #[doc(hidden)]
832    pub __source_breaking: fidl::marker::SourceBreaking,
833}
834
835impl fidl::Persistable for SupplicantStaNetworkSetSsidRequest {}
836
837#[derive(Clone, Debug, Default, PartialEq)]
838pub struct SupplicantStaNetworkSetWepKeyRequest {
839    pub key: Option<Vec<u8>>,
840    pub key_idx: Option<i32>,
841    #[doc(hidden)]
842    pub __source_breaking: fidl::marker::SourceBreaking,
843}
844
845impl fidl::Persistable for SupplicantStaNetworkSetWepKeyRequest {}
846
847#[derive(Clone, Debug, Default, PartialEq)]
848pub struct SupplicantStaNetworkSetWepTxKeyIdxRequest {
849    pub key_idx: Option<i32>,
850    #[doc(hidden)]
851    pub __source_breaking: fidl::marker::SourceBreaking,
852}
853
854impl fidl::Persistable for SupplicantStaNetworkSetWepTxKeyIdxRequest {}
855
856#[derive(Clone, Debug, Default, PartialEq)]
857pub struct WifiChipGetAvailableModesResponse {
858    pub chip_modes: Option<Vec<ChipMode>>,
859    #[doc(hidden)]
860    pub __source_breaking: fidl::marker::SourceBreaking,
861}
862
863impl fidl::Persistable for WifiChipGetAvailableModesResponse {}
864
865#[derive(Clone, Debug, Default, PartialEq)]
866pub struct WifiChipGetCapabilitiesResponse {
867    pub capabilities_mask: Option<u32>,
868    #[doc(hidden)]
869    pub __source_breaking: fidl::marker::SourceBreaking,
870}
871
872impl fidl::Persistable for WifiChipGetCapabilitiesResponse {}
873
874#[derive(Clone, Debug, Default, PartialEq)]
875pub struct WifiChipGetIdResponse {
876    pub id: Option<u32>,
877    #[doc(hidden)]
878    pub __source_breaking: fidl::marker::SourceBreaking,
879}
880
881impl fidl::Persistable for WifiChipGetIdResponse {}
882
883#[derive(Clone, Debug, Default, PartialEq)]
884pub struct WifiChipGetModeResponse {
885    pub mode: Option<u32>,
886    #[doc(hidden)]
887    pub __source_breaking: fidl::marker::SourceBreaking,
888}
889
890impl fidl::Persistable for WifiChipGetModeResponse {}
891
892#[derive(Clone, Debug, Default, PartialEq)]
893pub struct WifiChipGetStaIfaceNamesResponse {
894    pub iface_names: Option<Vec<String>>,
895    #[doc(hidden)]
896    pub __source_breaking: fidl::marker::SourceBreaking,
897}
898
899impl fidl::Persistable for WifiChipGetStaIfaceNamesResponse {}
900
901#[derive(Clone, Debug, Default, PartialEq)]
902pub struct WifiStaIfaceGetNameResponse {
903    pub iface_name: Option<String>,
904    #[doc(hidden)]
905    pub __source_breaking: fidl::marker::SourceBreaking,
906}
907
908impl fidl::Persistable for WifiStaIfaceGetNameResponse {}
909
910#[derive(Clone, Debug, Default, PartialEq)]
911pub struct WifiGetChipIdsResponse {
912    pub chip_ids: Option<Vec<u32>>,
913    #[doc(hidden)]
914    pub __source_breaking: fidl::marker::SourceBreaking,
915}
916
917impl fidl::Persistable for WifiGetChipIdsResponse {}
918
919#[derive(Clone, Debug, Default, PartialEq)]
920pub struct WifiGetStateResponse {
921    pub is_started: Option<bool>,
922    #[doc(hidden)]
923    pub __source_breaking: fidl::marker::SourceBreaking,
924}
925
926impl fidl::Persistable for WifiGetStateResponse {}
927
928pub mod nl80211_ordinals {
929    pub const GET_MULTICAST: u64 = 0x58b73dd089681dc2;
930    pub const MESSAGE: u64 = 0x6336259e15bb3795;
931    pub const MESSAGE_V2: u64 = 0x4626796aba1e2987;
932}
933
934pub mod nl80211_multicast_ordinals {
935    pub const MESSAGE: u64 = 0x4cc9241f302f16c0;
936}
937
938pub mod supplicant_ordinals {
939    pub const ADD_STA_INTERFACE: u64 = 0x73194b2afe9b367e;
940    pub const REMOVE_INTERFACE: u64 = 0x7f83e5b75b27d242;
941}
942
943pub mod supplicant_sta_iface_ordinals {
944    pub const REGISTER_CALLBACK: u64 = 0x1be680e863a8e71;
945    pub const ADD_NETWORK: u64 = 0xa77cf60628766dc;
946    pub const DISCONNECT: u64 = 0x52a1d38e0b4871fa;
947    pub const GET_MAC_ADDRESS: u64 = 0x60591d204a3f537f;
948    pub const SET_BT_COEXISTENCE_MODE: u64 = 0x14567ff593a9b154;
949    pub const SET_POWER_SAVE: u64 = 0x5a04c29320085298;
950    pub const SET_SUSPEND_MODE_ENABLED: u64 = 0xaf10de85bb7023a;
951    pub const SET_STA_COUNTRY_CODE: u64 = 0x977e22f9b79b26e;
952}
953
954pub mod supplicant_sta_iface_callback_ordinals {
955    pub const ON_STATE_CHANGED: u64 = 0x27e086d26c49eb6c;
956    pub const ON_DISCONNECTED: u64 = 0x69546475f4dee0cc;
957    pub const ON_ASSOCIATION_REJECTED: u64 = 0x7ef3961518bed988;
958}
959
960pub mod supplicant_sta_network_ordinals {
961    pub const SET_BSSID: u64 = 0x10a91d044ee6374d;
962    pub const CLEAR_BSSID: u64 = 0xbc7ad82f541b267;
963    pub const SET_SSID: u64 = 0x6b598a7a802e3083;
964    pub const SET_PSK_PASSPHRASE: u64 = 0xf6d438225979307;
965    pub const SET_SAE_PASSWORD: u64 = 0x2982737e196747b8;
966    pub const SET_WEP_KEY: u64 = 0x22a7e25ec81f2dee;
967    pub const SET_WEP_TX_KEY_IDX: u64 = 0x4f25576c21fcb8cb;
968    pub const SELECT: u64 = 0x354bc361a0c77b45;
969}
970
971pub mod wifi_ordinals {
972    pub const REGISTER_EVENT_CALLBACK: u64 = 0x12abbdea948dd67b;
973    pub const START: u64 = 0x427030e4dc6ec07a;
974    pub const STOP: u64 = 0x67c9bdf61b2888d;
975    pub const GET_STATE: u64 = 0x4616114a937d1fb0;
976    pub const GET_CHIP_IDS: u64 = 0x2fb4f92351d802b5;
977    pub const GET_CHIP: u64 = 0xef95d8246612540;
978}
979
980pub mod wifi_chip_ordinals {
981    pub const CREATE_STA_IFACE: u64 = 0x6fb2d5892face7af;
982    pub const GET_STA_IFACE_NAMES: u64 = 0x349257482df6a000;
983    pub const GET_STA_IFACE: u64 = 0x6d9704eeb36f28a2;
984    pub const REMOVE_STA_IFACE: u64 = 0x4cd8eee466f8b04c;
985    pub const SET_COUNTRY_CODE: u64 = 0x1dfe372d1d61a490;
986    pub const GET_AVAILABLE_MODES: u64 = 0x1701095b452a3acd;
987    pub const GET_ID: u64 = 0x37d5197325bb3370;
988    pub const GET_MODE: u64 = 0x4d209e0f3ac84d6f;
989    pub const GET_CAPABILITIES: u64 = 0x1b253f396dcaa2e0;
990    pub const TRIGGER_SUBSYSTEM_RESTART: u64 = 0x42ffcae5aad196f9;
991    pub const SELECT_TX_POWER_SCENARIO: u64 = 0x19287ab52ea72281;
992    pub const RESET_TX_POWER_SCENARIO: u64 = 0x46408a2fb1eb9d09;
993}
994
995pub mod wifi_event_callback_ordinals {
996    pub const ON_START: u64 = 0x61189ff44f9d35f3;
997    pub const ON_STOP: u64 = 0x58b697bcd475e0f9;
998}
999
1000pub mod wifi_legacy_hal_ordinals {
1001    pub const SELECT_TX_POWER_SCENARIO: u64 = 0x49f42620e0a3caf9;
1002    pub const RESET_TX_POWER_SCENARIO: u64 = 0x6c0f8e9203167d8e;
1003}
1004
1005pub mod wifi_sta_iface_ordinals {
1006    pub const GET_NAME: u64 = 0x5c150b91c80c5789;
1007    pub const SET_SCAN_ONLY_MODE: u64 = 0x22550328583bf0e3;
1008}
1009
1010pub mod wlanix_ordinals {
1011    pub const GET_WIFI: u64 = 0x142511f44b2c338c;
1012    pub const GET_SUPPLICANT: u64 = 0x55554b37c4021d3d;
1013    pub const GET_NL80211: u64 = 0x48028a25bd855ef9;
1014    pub const GET_WIFI_LEGACY_HAL: u64 = 0x7302d9bb3b8d1edc;
1015}
1016
1017mod internal {
1018    use super::*;
1019    unsafe impl fidl::encoding::TypeMarker for BtCoexistenceMode {
1020        type Owned = Self;
1021
1022        #[inline(always)]
1023        fn inline_align(_context: fidl::encoding::Context) -> usize {
1024            std::mem::align_of::<u32>()
1025        }
1026
1027        #[inline(always)]
1028        fn inline_size(_context: fidl::encoding::Context) -> usize {
1029            std::mem::size_of::<u32>()
1030        }
1031
1032        #[inline(always)]
1033        fn encode_is_copy() -> bool {
1034            false
1035        }
1036
1037        #[inline(always)]
1038        fn decode_is_copy() -> bool {
1039            false
1040        }
1041    }
1042
1043    impl fidl::encoding::ValueTypeMarker for BtCoexistenceMode {
1044        type Borrowed<'a> = Self;
1045        #[inline(always)]
1046        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1047            *value
1048        }
1049    }
1050
1051    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1052        for BtCoexistenceMode
1053    {
1054        #[inline]
1055        unsafe fn encode(
1056            self,
1057            encoder: &mut fidl::encoding::Encoder<'_, D>,
1058            offset: usize,
1059            _depth: fidl::encoding::Depth,
1060        ) -> fidl::Result<()> {
1061            encoder.debug_check_bounds::<Self>(offset);
1062            encoder.write_num(self.into_primitive(), offset);
1063            Ok(())
1064        }
1065    }
1066
1067    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BtCoexistenceMode {
1068        #[inline(always)]
1069        fn new_empty() -> Self {
1070            Self::unknown()
1071        }
1072
1073        #[inline]
1074        unsafe fn decode(
1075            &mut self,
1076            decoder: &mut fidl::encoding::Decoder<'_, D>,
1077            offset: usize,
1078            _depth: fidl::encoding::Depth,
1079        ) -> fidl::Result<()> {
1080            decoder.debug_check_bounds::<Self>(offset);
1081            let prim = decoder.read_num::<u32>(offset);
1082
1083            *self = Self::from_primitive_allow_unknown(prim);
1084            Ok(())
1085        }
1086    }
1087    unsafe impl fidl::encoding::TypeMarker for IfaceConcurrencyType {
1088        type Owned = Self;
1089
1090        #[inline(always)]
1091        fn inline_align(_context: fidl::encoding::Context) -> usize {
1092            std::mem::align_of::<u32>()
1093        }
1094
1095        #[inline(always)]
1096        fn inline_size(_context: fidl::encoding::Context) -> usize {
1097            std::mem::size_of::<u32>()
1098        }
1099
1100        #[inline(always)]
1101        fn encode_is_copy() -> bool {
1102            false
1103        }
1104
1105        #[inline(always)]
1106        fn decode_is_copy() -> bool {
1107            false
1108        }
1109    }
1110
1111    impl fidl::encoding::ValueTypeMarker for IfaceConcurrencyType {
1112        type Borrowed<'a> = Self;
1113        #[inline(always)]
1114        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1115            *value
1116        }
1117    }
1118
1119    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1120        for IfaceConcurrencyType
1121    {
1122        #[inline]
1123        unsafe fn encode(
1124            self,
1125            encoder: &mut fidl::encoding::Encoder<'_, D>,
1126            offset: usize,
1127            _depth: fidl::encoding::Depth,
1128        ) -> fidl::Result<()> {
1129            encoder.debug_check_bounds::<Self>(offset);
1130            encoder.write_num(self.into_primitive(), offset);
1131            Ok(())
1132        }
1133    }
1134
1135    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IfaceConcurrencyType {
1136        #[inline(always)]
1137        fn new_empty() -> Self {
1138            Self::unknown()
1139        }
1140
1141        #[inline]
1142        unsafe fn decode(
1143            &mut self,
1144            decoder: &mut fidl::encoding::Decoder<'_, D>,
1145            offset: usize,
1146            _depth: fidl::encoding::Depth,
1147        ) -> fidl::Result<()> {
1148            decoder.debug_check_bounds::<Self>(offset);
1149            let prim = decoder.read_num::<u32>(offset);
1150
1151            *self = Self::from_primitive_allow_unknown(prim);
1152            Ok(())
1153        }
1154    }
1155    unsafe impl fidl::encoding::TypeMarker for Nl80211MessageType {
1156        type Owned = Self;
1157
1158        #[inline(always)]
1159        fn inline_align(_context: fidl::encoding::Context) -> usize {
1160            std::mem::align_of::<u32>()
1161        }
1162
1163        #[inline(always)]
1164        fn inline_size(_context: fidl::encoding::Context) -> usize {
1165            std::mem::size_of::<u32>()
1166        }
1167
1168        #[inline(always)]
1169        fn encode_is_copy() -> bool {
1170            false
1171        }
1172
1173        #[inline(always)]
1174        fn decode_is_copy() -> bool {
1175            false
1176        }
1177    }
1178
1179    impl fidl::encoding::ValueTypeMarker for Nl80211MessageType {
1180        type Borrowed<'a> = Self;
1181        #[inline(always)]
1182        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1183            *value
1184        }
1185    }
1186
1187    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1188        for Nl80211MessageType
1189    {
1190        #[inline]
1191        unsafe fn encode(
1192            self,
1193            encoder: &mut fidl::encoding::Encoder<'_, D>,
1194            offset: usize,
1195            _depth: fidl::encoding::Depth,
1196        ) -> fidl::Result<()> {
1197            encoder.debug_check_bounds::<Self>(offset);
1198            encoder.write_num(self.into_primitive(), offset);
1199            Ok(())
1200        }
1201    }
1202
1203    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nl80211MessageType {
1204        #[inline(always)]
1205        fn new_empty() -> Self {
1206            Self::unknown()
1207        }
1208
1209        #[inline]
1210        unsafe fn decode(
1211            &mut self,
1212            decoder: &mut fidl::encoding::Decoder<'_, D>,
1213            offset: usize,
1214            _depth: fidl::encoding::Depth,
1215        ) -> fidl::Result<()> {
1216            decoder.debug_check_bounds::<Self>(offset);
1217            let prim = decoder.read_num::<u32>(offset);
1218
1219            *self = Self::from_primitive_allow_unknown(prim);
1220            Ok(())
1221        }
1222    }
1223    unsafe impl fidl::encoding::TypeMarker for StaIfaceCallbackState {
1224        type Owned = Self;
1225
1226        #[inline(always)]
1227        fn inline_align(_context: fidl::encoding::Context) -> usize {
1228            std::mem::align_of::<u32>()
1229        }
1230
1231        #[inline(always)]
1232        fn inline_size(_context: fidl::encoding::Context) -> usize {
1233            std::mem::size_of::<u32>()
1234        }
1235
1236        #[inline(always)]
1237        fn encode_is_copy() -> bool {
1238            false
1239        }
1240
1241        #[inline(always)]
1242        fn decode_is_copy() -> bool {
1243            false
1244        }
1245    }
1246
1247    impl fidl::encoding::ValueTypeMarker for StaIfaceCallbackState {
1248        type Borrowed<'a> = Self;
1249        #[inline(always)]
1250        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1251            *value
1252        }
1253    }
1254
1255    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1256        for StaIfaceCallbackState
1257    {
1258        #[inline]
1259        unsafe fn encode(
1260            self,
1261            encoder: &mut fidl::encoding::Encoder<'_, D>,
1262            offset: usize,
1263            _depth: fidl::encoding::Depth,
1264        ) -> fidl::Result<()> {
1265            encoder.debug_check_bounds::<Self>(offset);
1266            encoder.write_num(self.into_primitive(), offset);
1267            Ok(())
1268        }
1269    }
1270
1271    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StaIfaceCallbackState {
1272        #[inline(always)]
1273        fn new_empty() -> Self {
1274            Self::unknown()
1275        }
1276
1277        #[inline]
1278        unsafe fn decode(
1279            &mut self,
1280            decoder: &mut fidl::encoding::Decoder<'_, D>,
1281            offset: usize,
1282            _depth: fidl::encoding::Depth,
1283        ) -> fidl::Result<()> {
1284            decoder.debug_check_bounds::<Self>(offset);
1285            let prim = decoder.read_num::<u32>(offset);
1286
1287            *self = Self::from_primitive_allow_unknown(prim);
1288            Ok(())
1289        }
1290    }
1291    unsafe impl fidl::encoding::TypeMarker for WifiChipTxPowerScenario {
1292        type Owned = Self;
1293
1294        #[inline(always)]
1295        fn inline_align(_context: fidl::encoding::Context) -> usize {
1296            std::mem::align_of::<u32>()
1297        }
1298
1299        #[inline(always)]
1300        fn inline_size(_context: fidl::encoding::Context) -> usize {
1301            std::mem::size_of::<u32>()
1302        }
1303
1304        #[inline(always)]
1305        fn encode_is_copy() -> bool {
1306            false
1307        }
1308
1309        #[inline(always)]
1310        fn decode_is_copy() -> bool {
1311            false
1312        }
1313    }
1314
1315    impl fidl::encoding::ValueTypeMarker for WifiChipTxPowerScenario {
1316        type Borrowed<'a> = Self;
1317        #[inline(always)]
1318        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1319            *value
1320        }
1321    }
1322
1323    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1324        for WifiChipTxPowerScenario
1325    {
1326        #[inline]
1327        unsafe fn encode(
1328            self,
1329            encoder: &mut fidl::encoding::Encoder<'_, D>,
1330            offset: usize,
1331            _depth: fidl::encoding::Depth,
1332        ) -> fidl::Result<()> {
1333            encoder.debug_check_bounds::<Self>(offset);
1334            encoder.write_num(self.into_primitive(), offset);
1335            Ok(())
1336        }
1337    }
1338
1339    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1340        for WifiChipTxPowerScenario
1341    {
1342        #[inline(always)]
1343        fn new_empty() -> Self {
1344            Self::unknown()
1345        }
1346
1347        #[inline]
1348        unsafe fn decode(
1349            &mut self,
1350            decoder: &mut fidl::encoding::Decoder<'_, D>,
1351            offset: usize,
1352            _depth: fidl::encoding::Depth,
1353        ) -> fidl::Result<()> {
1354            decoder.debug_check_bounds::<Self>(offset);
1355            let prim = decoder.read_num::<u32>(offset);
1356
1357            *self = Self::from_primitive_allow_unknown(prim);
1358            Ok(())
1359        }
1360    }
1361    unsafe impl fidl::encoding::TypeMarker for WifiLegacyHalStatus {
1362        type Owned = Self;
1363
1364        #[inline(always)]
1365        fn inline_align(_context: fidl::encoding::Context) -> usize {
1366            std::mem::align_of::<u32>()
1367        }
1368
1369        #[inline(always)]
1370        fn inline_size(_context: fidl::encoding::Context) -> usize {
1371            std::mem::size_of::<u32>()
1372        }
1373
1374        #[inline(always)]
1375        fn encode_is_copy() -> bool {
1376            false
1377        }
1378
1379        #[inline(always)]
1380        fn decode_is_copy() -> bool {
1381            false
1382        }
1383    }
1384
1385    impl fidl::encoding::ValueTypeMarker for WifiLegacyHalStatus {
1386        type Borrowed<'a> = Self;
1387        #[inline(always)]
1388        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1389            *value
1390        }
1391    }
1392
1393    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1394        for WifiLegacyHalStatus
1395    {
1396        #[inline]
1397        unsafe fn encode(
1398            self,
1399            encoder: &mut fidl::encoding::Encoder<'_, D>,
1400            offset: usize,
1401            _depth: fidl::encoding::Depth,
1402        ) -> fidl::Result<()> {
1403            encoder.debug_check_bounds::<Self>(offset);
1404            encoder.write_num(self.into_primitive(), offset);
1405            Ok(())
1406        }
1407    }
1408
1409    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WifiLegacyHalStatus {
1410        #[inline(always)]
1411        fn new_empty() -> Self {
1412            Self::unknown()
1413        }
1414
1415        #[inline]
1416        unsafe fn decode(
1417            &mut self,
1418            decoder: &mut fidl::encoding::Decoder<'_, D>,
1419            offset: usize,
1420            _depth: fidl::encoding::Depth,
1421        ) -> fidl::Result<()> {
1422            decoder.debug_check_bounds::<Self>(offset);
1423            let prim = decoder.read_num::<u32>(offset);
1424
1425            *self = Self::from_primitive_allow_unknown(prim);
1426            Ok(())
1427        }
1428    }
1429    unsafe impl fidl::encoding::TypeMarker for WifiLegacyHalTxPowerScenario {
1430        type Owned = Self;
1431
1432        #[inline(always)]
1433        fn inline_align(_context: fidl::encoding::Context) -> usize {
1434            std::mem::align_of::<i32>()
1435        }
1436
1437        #[inline(always)]
1438        fn inline_size(_context: fidl::encoding::Context) -> usize {
1439            std::mem::size_of::<i32>()
1440        }
1441
1442        #[inline(always)]
1443        fn encode_is_copy() -> bool {
1444            false
1445        }
1446
1447        #[inline(always)]
1448        fn decode_is_copy() -> bool {
1449            false
1450        }
1451    }
1452
1453    impl fidl::encoding::ValueTypeMarker for WifiLegacyHalTxPowerScenario {
1454        type Borrowed<'a> = Self;
1455        #[inline(always)]
1456        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1457            *value
1458        }
1459    }
1460
1461    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1462        for WifiLegacyHalTxPowerScenario
1463    {
1464        #[inline]
1465        unsafe fn encode(
1466            self,
1467            encoder: &mut fidl::encoding::Encoder<'_, D>,
1468            offset: usize,
1469            _depth: fidl::encoding::Depth,
1470        ) -> fidl::Result<()> {
1471            encoder.debug_check_bounds::<Self>(offset);
1472            encoder.write_num(self.into_primitive(), offset);
1473            Ok(())
1474        }
1475    }
1476
1477    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1478        for WifiLegacyHalTxPowerScenario
1479    {
1480        #[inline(always)]
1481        fn new_empty() -> Self {
1482            Self::unknown()
1483        }
1484
1485        #[inline]
1486        unsafe fn decode(
1487            &mut self,
1488            decoder: &mut fidl::encoding::Decoder<'_, D>,
1489            offset: usize,
1490            _depth: fidl::encoding::Depth,
1491        ) -> fidl::Result<()> {
1492            decoder.debug_check_bounds::<Self>(offset);
1493            let prim = decoder.read_num::<i32>(offset);
1494
1495            *self = Self::from_primitive_allow_unknown(prim);
1496            Ok(())
1497        }
1498    }
1499    unsafe impl fidl::encoding::TypeMarker for WlanixError {
1500        type Owned = Self;
1501
1502        #[inline(always)]
1503        fn inline_align(_context: fidl::encoding::Context) -> usize {
1504            std::mem::align_of::<u32>()
1505        }
1506
1507        #[inline(always)]
1508        fn inline_size(_context: fidl::encoding::Context) -> usize {
1509            std::mem::size_of::<u32>()
1510        }
1511
1512        #[inline(always)]
1513        fn encode_is_copy() -> bool {
1514            false
1515        }
1516
1517        #[inline(always)]
1518        fn decode_is_copy() -> bool {
1519            false
1520        }
1521    }
1522
1523    impl fidl::encoding::ValueTypeMarker for WlanixError {
1524        type Borrowed<'a> = Self;
1525        #[inline(always)]
1526        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1527            *value
1528        }
1529    }
1530
1531    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanixError {
1532        #[inline]
1533        unsafe fn encode(
1534            self,
1535            encoder: &mut fidl::encoding::Encoder<'_, D>,
1536            offset: usize,
1537            _depth: fidl::encoding::Depth,
1538        ) -> fidl::Result<()> {
1539            encoder.debug_check_bounds::<Self>(offset);
1540            encoder.write_num(self.into_primitive(), offset);
1541            Ok(())
1542        }
1543    }
1544
1545    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanixError {
1546        #[inline(always)]
1547        fn new_empty() -> Self {
1548            Self::unknown()
1549        }
1550
1551        #[inline]
1552        unsafe fn decode(
1553            &mut self,
1554            decoder: &mut fidl::encoding::Decoder<'_, D>,
1555            offset: usize,
1556            _depth: fidl::encoding::Depth,
1557        ) -> fidl::Result<()> {
1558            decoder.debug_check_bounds::<Self>(offset);
1559            let prim = decoder.read_num::<u32>(offset);
1560
1561            *self = Self::from_primitive_allow_unknown(prim);
1562            Ok(())
1563        }
1564    }
1565
1566    impl fidl::encoding::ValueTypeMarker for Nl80211MessageArray {
1567        type Borrowed<'a> = &'a Self;
1568        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1569            value
1570        }
1571    }
1572
1573    unsafe impl fidl::encoding::TypeMarker for Nl80211MessageArray {
1574        type Owned = Self;
1575
1576        #[inline(always)]
1577        fn inline_align(_context: fidl::encoding::Context) -> usize {
1578            8
1579        }
1580
1581        #[inline(always)]
1582        fn inline_size(_context: fidl::encoding::Context) -> usize {
1583            16
1584        }
1585    }
1586
1587    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nl80211MessageArray, D>
1588        for &Nl80211MessageArray
1589    {
1590        #[inline]
1591        unsafe fn encode(
1592            self,
1593            encoder: &mut fidl::encoding::Encoder<'_, D>,
1594            offset: usize,
1595            _depth: fidl::encoding::Depth,
1596        ) -> fidl::Result<()> {
1597            encoder.debug_check_bounds::<Nl80211MessageArray>(offset);
1598            // Delegate to tuple encoding.
1599            fidl::encoding::Encode::<Nl80211MessageArray, D>::encode(
1600                (
1601                    <fidl::encoding::UnboundedVector<Nl80211Message> as fidl::encoding::ValueTypeMarker>::borrow(&self.messages),
1602                ),
1603                encoder, offset, _depth
1604            )
1605        }
1606    }
1607    unsafe impl<
1608        D: fidl::encoding::ResourceDialect,
1609        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Nl80211Message>, D>,
1610    > fidl::encoding::Encode<Nl80211MessageArray, D> for (T0,)
1611    {
1612        #[inline]
1613        unsafe fn encode(
1614            self,
1615            encoder: &mut fidl::encoding::Encoder<'_, D>,
1616            offset: usize,
1617            depth: fidl::encoding::Depth,
1618        ) -> fidl::Result<()> {
1619            encoder.debug_check_bounds::<Nl80211MessageArray>(offset);
1620            // Zero out padding regions. There's no need to apply masks
1621            // because the unmasked parts will be overwritten by fields.
1622            // Write the fields.
1623            self.0.encode(encoder, offset + 0, depth)?;
1624            Ok(())
1625        }
1626    }
1627
1628    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nl80211MessageArray {
1629        #[inline(always)]
1630        fn new_empty() -> Self {
1631            Self { messages: fidl::new_empty!(fidl::encoding::UnboundedVector<Nl80211Message>, D) }
1632        }
1633
1634        #[inline]
1635        unsafe fn decode(
1636            &mut self,
1637            decoder: &mut fidl::encoding::Decoder<'_, D>,
1638            offset: usize,
1639            _depth: fidl::encoding::Depth,
1640        ) -> fidl::Result<()> {
1641            decoder.debug_check_bounds::<Self>(offset);
1642            // Verify that padding bytes are zero.
1643            fidl::decode!(
1644                fidl::encoding::UnboundedVector<Nl80211Message>,
1645                D,
1646                &mut self.messages,
1647                decoder,
1648                offset + 0,
1649                _depth
1650            )?;
1651            Ok(())
1652        }
1653    }
1654
1655    impl fidl::encoding::ValueTypeMarker for WifiChipSelectTxPowerScenarioRequest {
1656        type Borrowed<'a> = &'a Self;
1657        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1658            value
1659        }
1660    }
1661
1662    unsafe impl fidl::encoding::TypeMarker for WifiChipSelectTxPowerScenarioRequest {
1663        type Owned = Self;
1664
1665        #[inline(always)]
1666        fn inline_align(_context: fidl::encoding::Context) -> usize {
1667            4
1668        }
1669
1670        #[inline(always)]
1671        fn inline_size(_context: fidl::encoding::Context) -> usize {
1672            4
1673        }
1674    }
1675
1676    unsafe impl<D: fidl::encoding::ResourceDialect>
1677        fidl::encoding::Encode<WifiChipSelectTxPowerScenarioRequest, D>
1678        for &WifiChipSelectTxPowerScenarioRequest
1679    {
1680        #[inline]
1681        unsafe fn encode(
1682            self,
1683            encoder: &mut fidl::encoding::Encoder<'_, D>,
1684            offset: usize,
1685            _depth: fidl::encoding::Depth,
1686        ) -> fidl::Result<()> {
1687            encoder.debug_check_bounds::<WifiChipSelectTxPowerScenarioRequest>(offset);
1688            // Delegate to tuple encoding.
1689            fidl::encoding::Encode::<WifiChipSelectTxPowerScenarioRequest, D>::encode(
1690                (<WifiChipTxPowerScenario as fidl::encoding::ValueTypeMarker>::borrow(
1691                    &self.scenario,
1692                ),),
1693                encoder,
1694                offset,
1695                _depth,
1696            )
1697        }
1698    }
1699    unsafe impl<
1700        D: fidl::encoding::ResourceDialect,
1701        T0: fidl::encoding::Encode<WifiChipTxPowerScenario, D>,
1702    > fidl::encoding::Encode<WifiChipSelectTxPowerScenarioRequest, D> for (T0,)
1703    {
1704        #[inline]
1705        unsafe fn encode(
1706            self,
1707            encoder: &mut fidl::encoding::Encoder<'_, D>,
1708            offset: usize,
1709            depth: fidl::encoding::Depth,
1710        ) -> fidl::Result<()> {
1711            encoder.debug_check_bounds::<WifiChipSelectTxPowerScenarioRequest>(offset);
1712            // Zero out padding regions. There's no need to apply masks
1713            // because the unmasked parts will be overwritten by fields.
1714            // Write the fields.
1715            self.0.encode(encoder, offset + 0, depth)?;
1716            Ok(())
1717        }
1718    }
1719
1720    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1721        for WifiChipSelectTxPowerScenarioRequest
1722    {
1723        #[inline(always)]
1724        fn new_empty() -> Self {
1725            Self { scenario: fidl::new_empty!(WifiChipTxPowerScenario, D) }
1726        }
1727
1728        #[inline]
1729        unsafe fn decode(
1730            &mut self,
1731            decoder: &mut fidl::encoding::Decoder<'_, D>,
1732            offset: usize,
1733            _depth: fidl::encoding::Depth,
1734        ) -> fidl::Result<()> {
1735            decoder.debug_check_bounds::<Self>(offset);
1736            // Verify that padding bytes are zero.
1737            fidl::decode!(
1738                WifiChipTxPowerScenario,
1739                D,
1740                &mut self.scenario,
1741                decoder,
1742                offset + 0,
1743                _depth
1744            )?;
1745            Ok(())
1746        }
1747    }
1748
1749    impl ChipConcurrencyCombination {
1750        #[inline(always)]
1751        fn max_ordinal_present(&self) -> u64 {
1752            if let Some(_) = self.limits {
1753                return 1;
1754            }
1755            0
1756        }
1757    }
1758
1759    impl fidl::encoding::ValueTypeMarker for ChipConcurrencyCombination {
1760        type Borrowed<'a> = &'a Self;
1761        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1762            value
1763        }
1764    }
1765
1766    unsafe impl fidl::encoding::TypeMarker for ChipConcurrencyCombination {
1767        type Owned = Self;
1768
1769        #[inline(always)]
1770        fn inline_align(_context: fidl::encoding::Context) -> usize {
1771            8
1772        }
1773
1774        #[inline(always)]
1775        fn inline_size(_context: fidl::encoding::Context) -> usize {
1776            16
1777        }
1778    }
1779
1780    unsafe impl<D: fidl::encoding::ResourceDialect>
1781        fidl::encoding::Encode<ChipConcurrencyCombination, D> for &ChipConcurrencyCombination
1782    {
1783        unsafe fn encode(
1784            self,
1785            encoder: &mut fidl::encoding::Encoder<'_, D>,
1786            offset: usize,
1787            mut depth: fidl::encoding::Depth,
1788        ) -> fidl::Result<()> {
1789            encoder.debug_check_bounds::<ChipConcurrencyCombination>(offset);
1790            // Vector header
1791            let max_ordinal: u64 = self.max_ordinal_present();
1792            encoder.write_num(max_ordinal, offset);
1793            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1794            // Calling encoder.out_of_line_offset(0) is not allowed.
1795            if max_ordinal == 0 {
1796                return Ok(());
1797            }
1798            depth.increment()?;
1799            let envelope_size = 8;
1800            let bytes_len = max_ordinal as usize * envelope_size;
1801            #[allow(unused_variables)]
1802            let offset = encoder.out_of_line_offset(bytes_len);
1803            let mut _prev_end_offset: usize = 0;
1804            if 1 > max_ordinal {
1805                return Ok(());
1806            }
1807
1808            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1809            // are envelope_size bytes.
1810            let cur_offset: usize = (1 - 1) * envelope_size;
1811
1812            // Zero reserved fields.
1813            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1814
1815            // Safety:
1816            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1817            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1818            //   envelope_size bytes, there is always sufficient room.
1819            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ChipConcurrencyCombinationLimit>, D>(
1820            self.limits.as_ref().map(<fidl::encoding::UnboundedVector<ChipConcurrencyCombinationLimit> as fidl::encoding::ValueTypeMarker>::borrow),
1821            encoder, offset + cur_offset, depth
1822        )?;
1823
1824            _prev_end_offset = cur_offset + envelope_size;
1825
1826            Ok(())
1827        }
1828    }
1829
1830    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1831        for ChipConcurrencyCombination
1832    {
1833        #[inline(always)]
1834        fn new_empty() -> Self {
1835            Self::default()
1836        }
1837
1838        unsafe fn decode(
1839            &mut self,
1840            decoder: &mut fidl::encoding::Decoder<'_, D>,
1841            offset: usize,
1842            mut depth: fidl::encoding::Depth,
1843        ) -> fidl::Result<()> {
1844            decoder.debug_check_bounds::<Self>(offset);
1845            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1846                None => return Err(fidl::Error::NotNullable),
1847                Some(len) => len,
1848            };
1849            // Calling decoder.out_of_line_offset(0) is not allowed.
1850            if len == 0 {
1851                return Ok(());
1852            };
1853            depth.increment()?;
1854            let envelope_size = 8;
1855            let bytes_len = len * envelope_size;
1856            let offset = decoder.out_of_line_offset(bytes_len)?;
1857            // Decode the envelope for each type.
1858            let mut _next_ordinal_to_read = 0;
1859            let mut next_offset = offset;
1860            let end_offset = offset + bytes_len;
1861            _next_ordinal_to_read += 1;
1862            if next_offset >= end_offset {
1863                return Ok(());
1864            }
1865
1866            // Decode unknown envelopes for gaps in ordinals.
1867            while _next_ordinal_to_read < 1 {
1868                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1869                _next_ordinal_to_read += 1;
1870                next_offset += envelope_size;
1871            }
1872
1873            let next_out_of_line = decoder.next_out_of_line();
1874            let handles_before = decoder.remaining_handles();
1875            if let Some((inlined, num_bytes, num_handles)) =
1876                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1877            {
1878                let member_inline_size = <fidl::encoding::UnboundedVector<
1879                    ChipConcurrencyCombinationLimit,
1880                > as fidl::encoding::TypeMarker>::inline_size(
1881                    decoder.context
1882                );
1883                if inlined != (member_inline_size <= 4) {
1884                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1885                }
1886                let inner_offset;
1887                let mut inner_depth = depth.clone();
1888                if inlined {
1889                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1890                    inner_offset = next_offset;
1891                } else {
1892                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1893                    inner_depth.increment()?;
1894                }
1895                let val_ref = self.limits.get_or_insert_with(|| {
1896                    fidl::new_empty!(
1897                        fidl::encoding::UnboundedVector<ChipConcurrencyCombinationLimit>,
1898                        D
1899                    )
1900                });
1901                fidl::decode!(
1902                    fidl::encoding::UnboundedVector<ChipConcurrencyCombinationLimit>,
1903                    D,
1904                    val_ref,
1905                    decoder,
1906                    inner_offset,
1907                    inner_depth
1908                )?;
1909                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1910                {
1911                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1912                }
1913                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1914                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1915                }
1916            }
1917
1918            next_offset += envelope_size;
1919
1920            // Decode the remaining unknown envelopes.
1921            while next_offset < end_offset {
1922                _next_ordinal_to_read += 1;
1923                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1924                next_offset += envelope_size;
1925            }
1926
1927            Ok(())
1928        }
1929    }
1930
1931    impl ChipConcurrencyCombinationLimit {
1932        #[inline(always)]
1933        fn max_ordinal_present(&self) -> u64 {
1934            if let Some(_) = self.max_ifaces {
1935                return 2;
1936            }
1937            if let Some(_) = self.types {
1938                return 1;
1939            }
1940            0
1941        }
1942    }
1943
1944    impl fidl::encoding::ValueTypeMarker for ChipConcurrencyCombinationLimit {
1945        type Borrowed<'a> = &'a Self;
1946        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1947            value
1948        }
1949    }
1950
1951    unsafe impl fidl::encoding::TypeMarker for ChipConcurrencyCombinationLimit {
1952        type Owned = Self;
1953
1954        #[inline(always)]
1955        fn inline_align(_context: fidl::encoding::Context) -> usize {
1956            8
1957        }
1958
1959        #[inline(always)]
1960        fn inline_size(_context: fidl::encoding::Context) -> usize {
1961            16
1962        }
1963    }
1964
1965    unsafe impl<D: fidl::encoding::ResourceDialect>
1966        fidl::encoding::Encode<ChipConcurrencyCombinationLimit, D>
1967        for &ChipConcurrencyCombinationLimit
1968    {
1969        unsafe fn encode(
1970            self,
1971            encoder: &mut fidl::encoding::Encoder<'_, D>,
1972            offset: usize,
1973            mut depth: fidl::encoding::Depth,
1974        ) -> fidl::Result<()> {
1975            encoder.debug_check_bounds::<ChipConcurrencyCombinationLimit>(offset);
1976            // Vector header
1977            let max_ordinal: u64 = self.max_ordinal_present();
1978            encoder.write_num(max_ordinal, offset);
1979            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1980            // Calling encoder.out_of_line_offset(0) is not allowed.
1981            if max_ordinal == 0 {
1982                return Ok(());
1983            }
1984            depth.increment()?;
1985            let envelope_size = 8;
1986            let bytes_len = max_ordinal as usize * envelope_size;
1987            #[allow(unused_variables)]
1988            let offset = encoder.out_of_line_offset(bytes_len);
1989            let mut _prev_end_offset: usize = 0;
1990            if 1 > max_ordinal {
1991                return Ok(());
1992            }
1993
1994            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1995            // are envelope_size bytes.
1996            let cur_offset: usize = (1 - 1) * envelope_size;
1997
1998            // Zero reserved fields.
1999            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2000
2001            // Safety:
2002            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2003            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2004            //   envelope_size bytes, there is always sufficient room.
2005            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<IfaceConcurrencyType>, D>(
2006            self.types.as_ref().map(<fidl::encoding::UnboundedVector<IfaceConcurrencyType> as fidl::encoding::ValueTypeMarker>::borrow),
2007            encoder, offset + cur_offset, depth
2008        )?;
2009
2010            _prev_end_offset = cur_offset + envelope_size;
2011            if 2 > max_ordinal {
2012                return Ok(());
2013            }
2014
2015            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2016            // are envelope_size bytes.
2017            let cur_offset: usize = (2 - 1) * envelope_size;
2018
2019            // Zero reserved fields.
2020            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2021
2022            // Safety:
2023            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2024            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2025            //   envelope_size bytes, there is always sufficient room.
2026            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2027                self.max_ifaces.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2028                encoder,
2029                offset + cur_offset,
2030                depth,
2031            )?;
2032
2033            _prev_end_offset = cur_offset + envelope_size;
2034
2035            Ok(())
2036        }
2037    }
2038
2039    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2040        for ChipConcurrencyCombinationLimit
2041    {
2042        #[inline(always)]
2043        fn new_empty() -> Self {
2044            Self::default()
2045        }
2046
2047        unsafe fn decode(
2048            &mut self,
2049            decoder: &mut fidl::encoding::Decoder<'_, D>,
2050            offset: usize,
2051            mut depth: fidl::encoding::Depth,
2052        ) -> fidl::Result<()> {
2053            decoder.debug_check_bounds::<Self>(offset);
2054            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2055                None => return Err(fidl::Error::NotNullable),
2056                Some(len) => len,
2057            };
2058            // Calling decoder.out_of_line_offset(0) is not allowed.
2059            if len == 0 {
2060                return Ok(());
2061            };
2062            depth.increment()?;
2063            let envelope_size = 8;
2064            let bytes_len = len * envelope_size;
2065            let offset = decoder.out_of_line_offset(bytes_len)?;
2066            // Decode the envelope for each type.
2067            let mut _next_ordinal_to_read = 0;
2068            let mut next_offset = offset;
2069            let end_offset = offset + bytes_len;
2070            _next_ordinal_to_read += 1;
2071            if next_offset >= end_offset {
2072                return Ok(());
2073            }
2074
2075            // Decode unknown envelopes for gaps in ordinals.
2076            while _next_ordinal_to_read < 1 {
2077                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2078                _next_ordinal_to_read += 1;
2079                next_offset += envelope_size;
2080            }
2081
2082            let next_out_of_line = decoder.next_out_of_line();
2083            let handles_before = decoder.remaining_handles();
2084            if let Some((inlined, num_bytes, num_handles)) =
2085                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2086            {
2087                let member_inline_size = <fidl::encoding::UnboundedVector<IfaceConcurrencyType> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2088                if inlined != (member_inline_size <= 4) {
2089                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2090                }
2091                let inner_offset;
2092                let mut inner_depth = depth.clone();
2093                if inlined {
2094                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2095                    inner_offset = next_offset;
2096                } else {
2097                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2098                    inner_depth.increment()?;
2099                }
2100                let val_ref = self.types.get_or_insert_with(|| {
2101                    fidl::new_empty!(fidl::encoding::UnboundedVector<IfaceConcurrencyType>, D)
2102                });
2103                fidl::decode!(
2104                    fidl::encoding::UnboundedVector<IfaceConcurrencyType>,
2105                    D,
2106                    val_ref,
2107                    decoder,
2108                    inner_offset,
2109                    inner_depth
2110                )?;
2111                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2112                {
2113                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2114                }
2115                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2116                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2117                }
2118            }
2119
2120            next_offset += envelope_size;
2121            _next_ordinal_to_read += 1;
2122            if next_offset >= end_offset {
2123                return Ok(());
2124            }
2125
2126            // Decode unknown envelopes for gaps in ordinals.
2127            while _next_ordinal_to_read < 2 {
2128                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2129                _next_ordinal_to_read += 1;
2130                next_offset += envelope_size;
2131            }
2132
2133            let next_out_of_line = decoder.next_out_of_line();
2134            let handles_before = decoder.remaining_handles();
2135            if let Some((inlined, num_bytes, num_handles)) =
2136                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2137            {
2138                let member_inline_size =
2139                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2140                if inlined != (member_inline_size <= 4) {
2141                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2142                }
2143                let inner_offset;
2144                let mut inner_depth = depth.clone();
2145                if inlined {
2146                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2147                    inner_offset = next_offset;
2148                } else {
2149                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2150                    inner_depth.increment()?;
2151                }
2152                let val_ref = self.max_ifaces.get_or_insert_with(|| fidl::new_empty!(u32, D));
2153                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2154                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2155                {
2156                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2157                }
2158                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2159                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2160                }
2161            }
2162
2163            next_offset += envelope_size;
2164
2165            // Decode the remaining unknown envelopes.
2166            while next_offset < end_offset {
2167                _next_ordinal_to_read += 1;
2168                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2169                next_offset += envelope_size;
2170            }
2171
2172            Ok(())
2173        }
2174    }
2175
2176    impl ChipMode {
2177        #[inline(always)]
2178        fn max_ordinal_present(&self) -> u64 {
2179            if let Some(_) = self.available_combinations {
2180                return 2;
2181            }
2182            if let Some(_) = self.id {
2183                return 1;
2184            }
2185            0
2186        }
2187    }
2188
2189    impl fidl::encoding::ValueTypeMarker for ChipMode {
2190        type Borrowed<'a> = &'a Self;
2191        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2192            value
2193        }
2194    }
2195
2196    unsafe impl fidl::encoding::TypeMarker for ChipMode {
2197        type Owned = Self;
2198
2199        #[inline(always)]
2200        fn inline_align(_context: fidl::encoding::Context) -> usize {
2201            8
2202        }
2203
2204        #[inline(always)]
2205        fn inline_size(_context: fidl::encoding::Context) -> usize {
2206            16
2207        }
2208    }
2209
2210    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChipMode, D> for &ChipMode {
2211        unsafe fn encode(
2212            self,
2213            encoder: &mut fidl::encoding::Encoder<'_, D>,
2214            offset: usize,
2215            mut depth: fidl::encoding::Depth,
2216        ) -> fidl::Result<()> {
2217            encoder.debug_check_bounds::<ChipMode>(offset);
2218            // Vector header
2219            let max_ordinal: u64 = self.max_ordinal_present();
2220            encoder.write_num(max_ordinal, offset);
2221            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2222            // Calling encoder.out_of_line_offset(0) is not allowed.
2223            if max_ordinal == 0 {
2224                return Ok(());
2225            }
2226            depth.increment()?;
2227            let envelope_size = 8;
2228            let bytes_len = max_ordinal as usize * envelope_size;
2229            #[allow(unused_variables)]
2230            let offset = encoder.out_of_line_offset(bytes_len);
2231            let mut _prev_end_offset: usize = 0;
2232            if 1 > max_ordinal {
2233                return Ok(());
2234            }
2235
2236            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2237            // are envelope_size bytes.
2238            let cur_offset: usize = (1 - 1) * envelope_size;
2239
2240            // Zero reserved fields.
2241            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2242
2243            // Safety:
2244            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2245            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2246            //   envelope_size bytes, there is always sufficient room.
2247            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2248                self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2249                encoder,
2250                offset + cur_offset,
2251                depth,
2252            )?;
2253
2254            _prev_end_offset = cur_offset + envelope_size;
2255            if 2 > max_ordinal {
2256                return Ok(());
2257            }
2258
2259            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2260            // are envelope_size bytes.
2261            let cur_offset: usize = (2 - 1) * envelope_size;
2262
2263            // Zero reserved fields.
2264            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2265
2266            // Safety:
2267            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2268            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2269            //   envelope_size bytes, there is always sufficient room.
2270            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ChipConcurrencyCombination>, D>(
2271            self.available_combinations.as_ref().map(<fidl::encoding::UnboundedVector<ChipConcurrencyCombination> as fidl::encoding::ValueTypeMarker>::borrow),
2272            encoder, offset + cur_offset, depth
2273        )?;
2274
2275            _prev_end_offset = cur_offset + envelope_size;
2276
2277            Ok(())
2278        }
2279    }
2280
2281    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChipMode {
2282        #[inline(always)]
2283        fn new_empty() -> Self {
2284            Self::default()
2285        }
2286
2287        unsafe fn decode(
2288            &mut self,
2289            decoder: &mut fidl::encoding::Decoder<'_, D>,
2290            offset: usize,
2291            mut depth: fidl::encoding::Depth,
2292        ) -> fidl::Result<()> {
2293            decoder.debug_check_bounds::<Self>(offset);
2294            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2295                None => return Err(fidl::Error::NotNullable),
2296                Some(len) => len,
2297            };
2298            // Calling decoder.out_of_line_offset(0) is not allowed.
2299            if len == 0 {
2300                return Ok(());
2301            };
2302            depth.increment()?;
2303            let envelope_size = 8;
2304            let bytes_len = len * envelope_size;
2305            let offset = decoder.out_of_line_offset(bytes_len)?;
2306            // Decode the envelope for each type.
2307            let mut _next_ordinal_to_read = 0;
2308            let mut next_offset = offset;
2309            let end_offset = offset + bytes_len;
2310            _next_ordinal_to_read += 1;
2311            if next_offset >= end_offset {
2312                return Ok(());
2313            }
2314
2315            // Decode unknown envelopes for gaps in ordinals.
2316            while _next_ordinal_to_read < 1 {
2317                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2318                _next_ordinal_to_read += 1;
2319                next_offset += envelope_size;
2320            }
2321
2322            let next_out_of_line = decoder.next_out_of_line();
2323            let handles_before = decoder.remaining_handles();
2324            if let Some((inlined, num_bytes, num_handles)) =
2325                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2326            {
2327                let member_inline_size =
2328                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2329                if inlined != (member_inline_size <= 4) {
2330                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2331                }
2332                let inner_offset;
2333                let mut inner_depth = depth.clone();
2334                if inlined {
2335                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2336                    inner_offset = next_offset;
2337                } else {
2338                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2339                    inner_depth.increment()?;
2340                }
2341                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2342                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2343                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2344                {
2345                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2346                }
2347                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2348                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2349                }
2350            }
2351
2352            next_offset += envelope_size;
2353            _next_ordinal_to_read += 1;
2354            if next_offset >= end_offset {
2355                return Ok(());
2356            }
2357
2358            // Decode unknown envelopes for gaps in ordinals.
2359            while _next_ordinal_to_read < 2 {
2360                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2361                _next_ordinal_to_read += 1;
2362                next_offset += envelope_size;
2363            }
2364
2365            let next_out_of_line = decoder.next_out_of_line();
2366            let handles_before = decoder.remaining_handles();
2367            if let Some((inlined, num_bytes, num_handles)) =
2368                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2369            {
2370                let member_inline_size = <fidl::encoding::UnboundedVector<
2371                    ChipConcurrencyCombination,
2372                > as fidl::encoding::TypeMarker>::inline_size(
2373                    decoder.context
2374                );
2375                if inlined != (member_inline_size <= 4) {
2376                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2377                }
2378                let inner_offset;
2379                let mut inner_depth = depth.clone();
2380                if inlined {
2381                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2382                    inner_offset = next_offset;
2383                } else {
2384                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2385                    inner_depth.increment()?;
2386                }
2387                let val_ref = self.available_combinations.get_or_insert_with(|| {
2388                    fidl::new_empty!(fidl::encoding::UnboundedVector<ChipConcurrencyCombination>, D)
2389                });
2390                fidl::decode!(
2391                    fidl::encoding::UnboundedVector<ChipConcurrencyCombination>,
2392                    D,
2393                    val_ref,
2394                    decoder,
2395                    inner_offset,
2396                    inner_depth
2397                )?;
2398                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2399                {
2400                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2401                }
2402                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2403                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2404                }
2405            }
2406
2407            next_offset += envelope_size;
2408
2409            // Decode the remaining unknown envelopes.
2410            while next_offset < end_offset {
2411                _next_ordinal_to_read += 1;
2412                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2413                next_offset += envelope_size;
2414            }
2415
2416            Ok(())
2417        }
2418    }
2419
2420    impl Nl80211Message {
2421        #[inline(always)]
2422        fn max_ordinal_present(&self) -> u64 {
2423            if let Some(_) = self.payload {
2424                return 2;
2425            }
2426            if let Some(_) = self.message_type {
2427                return 1;
2428            }
2429            0
2430        }
2431    }
2432
2433    impl fidl::encoding::ValueTypeMarker for Nl80211Message {
2434        type Borrowed<'a> = &'a Self;
2435        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2436            value
2437        }
2438    }
2439
2440    unsafe impl fidl::encoding::TypeMarker for Nl80211Message {
2441        type Owned = Self;
2442
2443        #[inline(always)]
2444        fn inline_align(_context: fidl::encoding::Context) -> usize {
2445            8
2446        }
2447
2448        #[inline(always)]
2449        fn inline_size(_context: fidl::encoding::Context) -> usize {
2450            16
2451        }
2452    }
2453
2454    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nl80211Message, D>
2455        for &Nl80211Message
2456    {
2457        unsafe fn encode(
2458            self,
2459            encoder: &mut fidl::encoding::Encoder<'_, D>,
2460            offset: usize,
2461            mut depth: fidl::encoding::Depth,
2462        ) -> fidl::Result<()> {
2463            encoder.debug_check_bounds::<Nl80211Message>(offset);
2464            // Vector header
2465            let max_ordinal: u64 = self.max_ordinal_present();
2466            encoder.write_num(max_ordinal, offset);
2467            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2468            // Calling encoder.out_of_line_offset(0) is not allowed.
2469            if max_ordinal == 0 {
2470                return Ok(());
2471            }
2472            depth.increment()?;
2473            let envelope_size = 8;
2474            let bytes_len = max_ordinal as usize * envelope_size;
2475            #[allow(unused_variables)]
2476            let offset = encoder.out_of_line_offset(bytes_len);
2477            let mut _prev_end_offset: usize = 0;
2478            if 1 > max_ordinal {
2479                return Ok(());
2480            }
2481
2482            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2483            // are envelope_size bytes.
2484            let cur_offset: usize = (1 - 1) * envelope_size;
2485
2486            // Zero reserved fields.
2487            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2488
2489            // Safety:
2490            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2491            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2492            //   envelope_size bytes, there is always sufficient room.
2493            fidl::encoding::encode_in_envelope_optional::<Nl80211MessageType, D>(
2494                self.message_type
2495                    .as_ref()
2496                    .map(<Nl80211MessageType as fidl::encoding::ValueTypeMarker>::borrow),
2497                encoder,
2498                offset + cur_offset,
2499                depth,
2500            )?;
2501
2502            _prev_end_offset = cur_offset + envelope_size;
2503            if 2 > max_ordinal {
2504                return Ok(());
2505            }
2506
2507            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2508            // are envelope_size bytes.
2509            let cur_offset: usize = (2 - 1) * envelope_size;
2510
2511            // Zero reserved fields.
2512            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2513
2514            // Safety:
2515            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2516            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2517            //   envelope_size bytes, there is always sufficient room.
2518            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
2519            self.payload.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
2520            encoder, offset + cur_offset, depth
2521        )?;
2522
2523            _prev_end_offset = cur_offset + envelope_size;
2524
2525            Ok(())
2526        }
2527    }
2528
2529    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nl80211Message {
2530        #[inline(always)]
2531        fn new_empty() -> Self {
2532            Self::default()
2533        }
2534
2535        unsafe fn decode(
2536            &mut self,
2537            decoder: &mut fidl::encoding::Decoder<'_, D>,
2538            offset: usize,
2539            mut depth: fidl::encoding::Depth,
2540        ) -> fidl::Result<()> {
2541            decoder.debug_check_bounds::<Self>(offset);
2542            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2543                None => return Err(fidl::Error::NotNullable),
2544                Some(len) => len,
2545            };
2546            // Calling decoder.out_of_line_offset(0) is not allowed.
2547            if len == 0 {
2548                return Ok(());
2549            };
2550            depth.increment()?;
2551            let envelope_size = 8;
2552            let bytes_len = len * envelope_size;
2553            let offset = decoder.out_of_line_offset(bytes_len)?;
2554            // Decode the envelope for each type.
2555            let mut _next_ordinal_to_read = 0;
2556            let mut next_offset = offset;
2557            let end_offset = offset + bytes_len;
2558            _next_ordinal_to_read += 1;
2559            if next_offset >= end_offset {
2560                return Ok(());
2561            }
2562
2563            // Decode unknown envelopes for gaps in ordinals.
2564            while _next_ordinal_to_read < 1 {
2565                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2566                _next_ordinal_to_read += 1;
2567                next_offset += envelope_size;
2568            }
2569
2570            let next_out_of_line = decoder.next_out_of_line();
2571            let handles_before = decoder.remaining_handles();
2572            if let Some((inlined, num_bytes, num_handles)) =
2573                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2574            {
2575                let member_inline_size =
2576                    <Nl80211MessageType as fidl::encoding::TypeMarker>::inline_size(
2577                        decoder.context,
2578                    );
2579                if inlined != (member_inline_size <= 4) {
2580                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2581                }
2582                let inner_offset;
2583                let mut inner_depth = depth.clone();
2584                if inlined {
2585                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2586                    inner_offset = next_offset;
2587                } else {
2588                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2589                    inner_depth.increment()?;
2590                }
2591                let val_ref = self
2592                    .message_type
2593                    .get_or_insert_with(|| fidl::new_empty!(Nl80211MessageType, D));
2594                fidl::decode!(Nl80211MessageType, D, val_ref, decoder, inner_offset, inner_depth)?;
2595                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2596                {
2597                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2598                }
2599                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2600                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2601                }
2602            }
2603
2604            next_offset += envelope_size;
2605            _next_ordinal_to_read += 1;
2606            if next_offset >= end_offset {
2607                return Ok(());
2608            }
2609
2610            // Decode unknown envelopes for gaps in ordinals.
2611            while _next_ordinal_to_read < 2 {
2612                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2613                _next_ordinal_to_read += 1;
2614                next_offset += envelope_size;
2615            }
2616
2617            let next_out_of_line = decoder.next_out_of_line();
2618            let handles_before = decoder.remaining_handles();
2619            if let Some((inlined, num_bytes, num_handles)) =
2620                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2621            {
2622                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2623                if inlined != (member_inline_size <= 4) {
2624                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2625                }
2626                let inner_offset;
2627                let mut inner_depth = depth.clone();
2628                if inlined {
2629                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2630                    inner_offset = next_offset;
2631                } else {
2632                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2633                    inner_depth.increment()?;
2634                }
2635                let val_ref = self.payload.get_or_insert_with(|| {
2636                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
2637                });
2638                fidl::decode!(
2639                    fidl::encoding::UnboundedVector<u8>,
2640                    D,
2641                    val_ref,
2642                    decoder,
2643                    inner_offset,
2644                    inner_depth
2645                )?;
2646                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2647                {
2648                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2649                }
2650                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2651                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2652                }
2653            }
2654
2655            next_offset += envelope_size;
2656
2657            // Decode the remaining unknown envelopes.
2658            while next_offset < end_offset {
2659                _next_ordinal_to_read += 1;
2660                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2661                next_offset += envelope_size;
2662            }
2663
2664            Ok(())
2665        }
2666    }
2667
2668    impl SupplicantStaIfaceCallbackOnAssociationRejectedRequest {
2669        #[inline(always)]
2670        fn max_ordinal_present(&self) -> u64 {
2671            if let Some(_) = self.timed_out {
2672                return 4;
2673            }
2674            if let Some(_) = self.status_code {
2675                return 3;
2676            }
2677            if let Some(_) = self.bssid {
2678                return 2;
2679            }
2680            if let Some(_) = self.ssid {
2681                return 1;
2682            }
2683            0
2684        }
2685    }
2686
2687    impl fidl::encoding::ValueTypeMarker for SupplicantStaIfaceCallbackOnAssociationRejectedRequest {
2688        type Borrowed<'a> = &'a Self;
2689        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2690            value
2691        }
2692    }
2693
2694    unsafe impl fidl::encoding::TypeMarker for SupplicantStaIfaceCallbackOnAssociationRejectedRequest {
2695        type Owned = Self;
2696
2697        #[inline(always)]
2698        fn inline_align(_context: fidl::encoding::Context) -> usize {
2699            8
2700        }
2701
2702        #[inline(always)]
2703        fn inline_size(_context: fidl::encoding::Context) -> usize {
2704            16
2705        }
2706    }
2707
2708    unsafe impl<D: fidl::encoding::ResourceDialect>
2709        fidl::encoding::Encode<SupplicantStaIfaceCallbackOnAssociationRejectedRequest, D>
2710        for &SupplicantStaIfaceCallbackOnAssociationRejectedRequest
2711    {
2712        unsafe fn encode(
2713            self,
2714            encoder: &mut fidl::encoding::Encoder<'_, D>,
2715            offset: usize,
2716            mut depth: fidl::encoding::Depth,
2717        ) -> fidl::Result<()> {
2718            encoder.debug_check_bounds::<SupplicantStaIfaceCallbackOnAssociationRejectedRequest>(
2719                offset,
2720            );
2721            // Vector header
2722            let max_ordinal: u64 = self.max_ordinal_present();
2723            encoder.write_num(max_ordinal, offset);
2724            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2725            // Calling encoder.out_of_line_offset(0) is not allowed.
2726            if max_ordinal == 0 {
2727                return Ok(());
2728            }
2729            depth.increment()?;
2730            let envelope_size = 8;
2731            let bytes_len = max_ordinal as usize * envelope_size;
2732            #[allow(unused_variables)]
2733            let offset = encoder.out_of_line_offset(bytes_len);
2734            let mut _prev_end_offset: usize = 0;
2735            if 1 > max_ordinal {
2736                return Ok(());
2737            }
2738
2739            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2740            // are envelope_size bytes.
2741            let cur_offset: usize = (1 - 1) * envelope_size;
2742
2743            // Zero reserved fields.
2744            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2745
2746            // Safety:
2747            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2748            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2749            //   envelope_size bytes, there is always sufficient room.
2750            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
2751                self.ssid.as_ref().map(
2752                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
2753                ),
2754                encoder,
2755                offset + cur_offset,
2756                depth,
2757            )?;
2758
2759            _prev_end_offset = cur_offset + envelope_size;
2760            if 2 > max_ordinal {
2761                return Ok(());
2762            }
2763
2764            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2765            // are envelope_size bytes.
2766            let cur_offset: usize = (2 - 1) * envelope_size;
2767
2768            // Zero reserved fields.
2769            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2770
2771            // Safety:
2772            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2773            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2774            //   envelope_size bytes, there is always sufficient room.
2775            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
2776                self.bssid
2777                    .as_ref()
2778                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
2779                encoder,
2780                offset + cur_offset,
2781                depth,
2782            )?;
2783
2784            _prev_end_offset = cur_offset + envelope_size;
2785            if 3 > max_ordinal {
2786                return Ok(());
2787            }
2788
2789            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2790            // are envelope_size bytes.
2791            let cur_offset: usize = (3 - 1) * envelope_size;
2792
2793            // Zero reserved fields.
2794            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2795
2796            // Safety:
2797            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2798            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2799            //   envelope_size bytes, there is always sufficient room.
2800            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
2801            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
2802            encoder, offset + cur_offset, depth
2803        )?;
2804
2805            _prev_end_offset = cur_offset + envelope_size;
2806            if 4 > max_ordinal {
2807                return Ok(());
2808            }
2809
2810            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2811            // are envelope_size bytes.
2812            let cur_offset: usize = (4 - 1) * envelope_size;
2813
2814            // Zero reserved fields.
2815            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2816
2817            // Safety:
2818            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2819            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2820            //   envelope_size bytes, there is always sufficient room.
2821            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2822                self.timed_out.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2823                encoder,
2824                offset + cur_offset,
2825                depth,
2826            )?;
2827
2828            _prev_end_offset = cur_offset + envelope_size;
2829
2830            Ok(())
2831        }
2832    }
2833
2834    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2835        for SupplicantStaIfaceCallbackOnAssociationRejectedRequest
2836    {
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                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
2884                        decoder.context,
2885                    );
2886                if inlined != (member_inline_size <= 4) {
2887                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2888                }
2889                let inner_offset;
2890                let mut inner_depth = depth.clone();
2891                if inlined {
2892                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2893                    inner_offset = next_offset;
2894                } else {
2895                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2896                    inner_depth.increment()?;
2897                }
2898                let val_ref = self
2899                    .ssid
2900                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
2901                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
2902                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2903                {
2904                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2905                }
2906                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2907                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2908                }
2909            }
2910
2911            next_offset += envelope_size;
2912            _next_ordinal_to_read += 1;
2913            if next_offset >= end_offset {
2914                return Ok(());
2915            }
2916
2917            // Decode unknown envelopes for gaps in ordinals.
2918            while _next_ordinal_to_read < 2 {
2919                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2920                _next_ordinal_to_read += 1;
2921                next_offset += envelope_size;
2922            }
2923
2924            let next_out_of_line = decoder.next_out_of_line();
2925            let handles_before = decoder.remaining_handles();
2926            if let Some((inlined, num_bytes, num_handles)) =
2927                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2928            {
2929                let member_inline_size =
2930                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
2931                        decoder.context,
2932                    );
2933                if inlined != (member_inline_size <= 4) {
2934                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2935                }
2936                let inner_offset;
2937                let mut inner_depth = depth.clone();
2938                if inlined {
2939                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2940                    inner_offset = next_offset;
2941                } else {
2942                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2943                    inner_depth.increment()?;
2944                }
2945                let val_ref = self
2946                    .bssid
2947                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
2948                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
2949                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2950                {
2951                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2952                }
2953                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2954                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2955                }
2956            }
2957
2958            next_offset += envelope_size;
2959            _next_ordinal_to_read += 1;
2960            if next_offset >= end_offset {
2961                return Ok(());
2962            }
2963
2964            // Decode unknown envelopes for gaps in ordinals.
2965            while _next_ordinal_to_read < 3 {
2966                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2967                _next_ordinal_to_read += 1;
2968                next_offset += envelope_size;
2969            }
2970
2971            let next_out_of_line = decoder.next_out_of_line();
2972            let handles_before = decoder.remaining_handles();
2973            if let Some((inlined, num_bytes, num_handles)) =
2974                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2975            {
2976                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2977                if inlined != (member_inline_size <= 4) {
2978                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2979                }
2980                let inner_offset;
2981                let mut inner_depth = depth.clone();
2982                if inlined {
2983                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2984                    inner_offset = next_offset;
2985                } else {
2986                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2987                    inner_depth.increment()?;
2988                }
2989                let val_ref = self.status_code.get_or_insert_with(|| {
2990                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
2991                });
2992                fidl::decode!(
2993                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
2994                    D,
2995                    val_ref,
2996                    decoder,
2997                    inner_offset,
2998                    inner_depth
2999                )?;
3000                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3001                {
3002                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3003                }
3004                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3005                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3006                }
3007            }
3008
3009            next_offset += envelope_size;
3010            _next_ordinal_to_read += 1;
3011            if next_offset >= end_offset {
3012                return Ok(());
3013            }
3014
3015            // Decode unknown envelopes for gaps in ordinals.
3016            while _next_ordinal_to_read < 4 {
3017                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3018                _next_ordinal_to_read += 1;
3019                next_offset += envelope_size;
3020            }
3021
3022            let next_out_of_line = decoder.next_out_of_line();
3023            let handles_before = decoder.remaining_handles();
3024            if let Some((inlined, num_bytes, num_handles)) =
3025                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3026            {
3027                let member_inline_size =
3028                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3029                if inlined != (member_inline_size <= 4) {
3030                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3031                }
3032                let inner_offset;
3033                let mut inner_depth = depth.clone();
3034                if inlined {
3035                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3036                    inner_offset = next_offset;
3037                } else {
3038                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3039                    inner_depth.increment()?;
3040                }
3041                let val_ref = self.timed_out.get_or_insert_with(|| fidl::new_empty!(bool, D));
3042                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3043                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3044                {
3045                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3046                }
3047                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3048                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3049                }
3050            }
3051
3052            next_offset += envelope_size;
3053
3054            // Decode the remaining unknown envelopes.
3055            while next_offset < end_offset {
3056                _next_ordinal_to_read += 1;
3057                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3058                next_offset += envelope_size;
3059            }
3060
3061            Ok(())
3062        }
3063    }
3064
3065    impl SupplicantStaIfaceCallbackOnDisconnectedRequest {
3066        #[inline(always)]
3067        fn max_ordinal_present(&self) -> u64 {
3068            if let Some(_) = self.reason_code {
3069                return 3;
3070            }
3071            if let Some(_) = self.locally_generated {
3072                return 2;
3073            }
3074            if let Some(_) = self.bssid {
3075                return 1;
3076            }
3077            0
3078        }
3079    }
3080
3081    impl fidl::encoding::ValueTypeMarker for SupplicantStaIfaceCallbackOnDisconnectedRequest {
3082        type Borrowed<'a> = &'a Self;
3083        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3084            value
3085        }
3086    }
3087
3088    unsafe impl fidl::encoding::TypeMarker for SupplicantStaIfaceCallbackOnDisconnectedRequest {
3089        type Owned = Self;
3090
3091        #[inline(always)]
3092        fn inline_align(_context: fidl::encoding::Context) -> usize {
3093            8
3094        }
3095
3096        #[inline(always)]
3097        fn inline_size(_context: fidl::encoding::Context) -> usize {
3098            16
3099        }
3100    }
3101
3102    unsafe impl<D: fidl::encoding::ResourceDialect>
3103        fidl::encoding::Encode<SupplicantStaIfaceCallbackOnDisconnectedRequest, D>
3104        for &SupplicantStaIfaceCallbackOnDisconnectedRequest
3105    {
3106        unsafe fn encode(
3107            self,
3108            encoder: &mut fidl::encoding::Encoder<'_, D>,
3109            offset: usize,
3110            mut depth: fidl::encoding::Depth,
3111        ) -> fidl::Result<()> {
3112            encoder.debug_check_bounds::<SupplicantStaIfaceCallbackOnDisconnectedRequest>(offset);
3113            // Vector header
3114            let max_ordinal: u64 = self.max_ordinal_present();
3115            encoder.write_num(max_ordinal, offset);
3116            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3117            // Calling encoder.out_of_line_offset(0) is not allowed.
3118            if max_ordinal == 0 {
3119                return Ok(());
3120            }
3121            depth.increment()?;
3122            let envelope_size = 8;
3123            let bytes_len = max_ordinal as usize * envelope_size;
3124            #[allow(unused_variables)]
3125            let offset = encoder.out_of_line_offset(bytes_len);
3126            let mut _prev_end_offset: usize = 0;
3127            if 1 > max_ordinal {
3128                return Ok(());
3129            }
3130
3131            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3132            // are envelope_size bytes.
3133            let cur_offset: usize = (1 - 1) * envelope_size;
3134
3135            // Zero reserved fields.
3136            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3137
3138            // Safety:
3139            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3140            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3141            //   envelope_size bytes, there is always sufficient room.
3142            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3143                self.bssid
3144                    .as_ref()
3145                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3146                encoder,
3147                offset + cur_offset,
3148                depth,
3149            )?;
3150
3151            _prev_end_offset = cur_offset + envelope_size;
3152            if 2 > max_ordinal {
3153                return Ok(());
3154            }
3155
3156            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3157            // are envelope_size bytes.
3158            let cur_offset: usize = (2 - 1) * envelope_size;
3159
3160            // Zero reserved fields.
3161            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3162
3163            // Safety:
3164            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3165            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3166            //   envelope_size bytes, there is always sufficient room.
3167            fidl::encoding::encode_in_envelope_optional::<bool, D>(
3168                self.locally_generated
3169                    .as_ref()
3170                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3171                encoder,
3172                offset + cur_offset,
3173                depth,
3174            )?;
3175
3176            _prev_end_offset = cur_offset + envelope_size;
3177            if 3 > max_ordinal {
3178                return Ok(());
3179            }
3180
3181            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3182            // are envelope_size bytes.
3183            let cur_offset: usize = (3 - 1) * envelope_size;
3184
3185            // Zero reserved fields.
3186            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3187
3188            // Safety:
3189            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3190            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3191            //   envelope_size bytes, there is always sufficient room.
3192            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
3193            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
3194            encoder, offset + cur_offset, depth
3195        )?;
3196
3197            _prev_end_offset = cur_offset + envelope_size;
3198
3199            Ok(())
3200        }
3201    }
3202
3203    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3204        for SupplicantStaIfaceCallbackOnDisconnectedRequest
3205    {
3206        #[inline(always)]
3207        fn new_empty() -> Self {
3208            Self::default()
3209        }
3210
3211        unsafe fn decode(
3212            &mut self,
3213            decoder: &mut fidl::encoding::Decoder<'_, D>,
3214            offset: usize,
3215            mut depth: fidl::encoding::Depth,
3216        ) -> fidl::Result<()> {
3217            decoder.debug_check_bounds::<Self>(offset);
3218            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3219                None => return Err(fidl::Error::NotNullable),
3220                Some(len) => len,
3221            };
3222            // Calling decoder.out_of_line_offset(0) is not allowed.
3223            if len == 0 {
3224                return Ok(());
3225            };
3226            depth.increment()?;
3227            let envelope_size = 8;
3228            let bytes_len = len * envelope_size;
3229            let offset = decoder.out_of_line_offset(bytes_len)?;
3230            // Decode the envelope for each type.
3231            let mut _next_ordinal_to_read = 0;
3232            let mut next_offset = offset;
3233            let end_offset = offset + bytes_len;
3234            _next_ordinal_to_read += 1;
3235            if next_offset >= end_offset {
3236                return Ok(());
3237            }
3238
3239            // Decode unknown envelopes for gaps in ordinals.
3240            while _next_ordinal_to_read < 1 {
3241                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3242                _next_ordinal_to_read += 1;
3243                next_offset += envelope_size;
3244            }
3245
3246            let next_out_of_line = decoder.next_out_of_line();
3247            let handles_before = decoder.remaining_handles();
3248            if let Some((inlined, num_bytes, num_handles)) =
3249                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3250            {
3251                let member_inline_size =
3252                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3253                        decoder.context,
3254                    );
3255                if inlined != (member_inline_size <= 4) {
3256                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3257                }
3258                let inner_offset;
3259                let mut inner_depth = depth.clone();
3260                if inlined {
3261                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3262                    inner_offset = next_offset;
3263                } else {
3264                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3265                    inner_depth.increment()?;
3266                }
3267                let val_ref = self
3268                    .bssid
3269                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
3270                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
3271                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3272                {
3273                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3274                }
3275                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3276                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3277                }
3278            }
3279
3280            next_offset += envelope_size;
3281            _next_ordinal_to_read += 1;
3282            if next_offset >= end_offset {
3283                return Ok(());
3284            }
3285
3286            // Decode unknown envelopes for gaps in ordinals.
3287            while _next_ordinal_to_read < 2 {
3288                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3289                _next_ordinal_to_read += 1;
3290                next_offset += envelope_size;
3291            }
3292
3293            let next_out_of_line = decoder.next_out_of_line();
3294            let handles_before = decoder.remaining_handles();
3295            if let Some((inlined, num_bytes, num_handles)) =
3296                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3297            {
3298                let member_inline_size =
3299                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3300                if inlined != (member_inline_size <= 4) {
3301                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3302                }
3303                let inner_offset;
3304                let mut inner_depth = depth.clone();
3305                if inlined {
3306                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3307                    inner_offset = next_offset;
3308                } else {
3309                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3310                    inner_depth.increment()?;
3311                }
3312                let val_ref =
3313                    self.locally_generated.get_or_insert_with(|| fidl::new_empty!(bool, D));
3314                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3315                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3316                {
3317                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3318                }
3319                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3320                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3321                }
3322            }
3323
3324            next_offset += envelope_size;
3325            _next_ordinal_to_read += 1;
3326            if next_offset >= end_offset {
3327                return Ok(());
3328            }
3329
3330            // Decode unknown envelopes for gaps in ordinals.
3331            while _next_ordinal_to_read < 3 {
3332                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3333                _next_ordinal_to_read += 1;
3334                next_offset += envelope_size;
3335            }
3336
3337            let next_out_of_line = decoder.next_out_of_line();
3338            let handles_before = decoder.remaining_handles();
3339            if let Some((inlined, num_bytes, num_handles)) =
3340                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3341            {
3342                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3343                if inlined != (member_inline_size <= 4) {
3344                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3345                }
3346                let inner_offset;
3347                let mut inner_depth = depth.clone();
3348                if inlined {
3349                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3350                    inner_offset = next_offset;
3351                } else {
3352                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3353                    inner_depth.increment()?;
3354                }
3355                let val_ref = self.reason_code.get_or_insert_with(|| {
3356                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
3357                });
3358                fidl::decode!(
3359                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
3360                    D,
3361                    val_ref,
3362                    decoder,
3363                    inner_offset,
3364                    inner_depth
3365                )?;
3366                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3367                {
3368                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3369                }
3370                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3371                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3372                }
3373            }
3374
3375            next_offset += envelope_size;
3376
3377            // Decode the remaining unknown envelopes.
3378            while next_offset < end_offset {
3379                _next_ordinal_to_read += 1;
3380                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3381                next_offset += envelope_size;
3382            }
3383
3384            Ok(())
3385        }
3386    }
3387
3388    impl SupplicantStaIfaceCallbackOnStateChangedRequest {
3389        #[inline(always)]
3390        fn max_ordinal_present(&self) -> u64 {
3391            if let Some(_) = self.ssid {
3392                return 4;
3393            }
3394            if let Some(_) = self.id {
3395                return 3;
3396            }
3397            if let Some(_) = self.bssid {
3398                return 2;
3399            }
3400            if let Some(_) = self.new_state {
3401                return 1;
3402            }
3403            0
3404        }
3405    }
3406
3407    impl fidl::encoding::ValueTypeMarker for SupplicantStaIfaceCallbackOnStateChangedRequest {
3408        type Borrowed<'a> = &'a Self;
3409        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3410            value
3411        }
3412    }
3413
3414    unsafe impl fidl::encoding::TypeMarker for SupplicantStaIfaceCallbackOnStateChangedRequest {
3415        type Owned = Self;
3416
3417        #[inline(always)]
3418        fn inline_align(_context: fidl::encoding::Context) -> usize {
3419            8
3420        }
3421
3422        #[inline(always)]
3423        fn inline_size(_context: fidl::encoding::Context) -> usize {
3424            16
3425        }
3426    }
3427
3428    unsafe impl<D: fidl::encoding::ResourceDialect>
3429        fidl::encoding::Encode<SupplicantStaIfaceCallbackOnStateChangedRequest, D>
3430        for &SupplicantStaIfaceCallbackOnStateChangedRequest
3431    {
3432        unsafe fn encode(
3433            self,
3434            encoder: &mut fidl::encoding::Encoder<'_, D>,
3435            offset: usize,
3436            mut depth: fidl::encoding::Depth,
3437        ) -> fidl::Result<()> {
3438            encoder.debug_check_bounds::<SupplicantStaIfaceCallbackOnStateChangedRequest>(offset);
3439            // Vector header
3440            let max_ordinal: u64 = self.max_ordinal_present();
3441            encoder.write_num(max_ordinal, offset);
3442            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3443            // Calling encoder.out_of_line_offset(0) is not allowed.
3444            if max_ordinal == 0 {
3445                return Ok(());
3446            }
3447            depth.increment()?;
3448            let envelope_size = 8;
3449            let bytes_len = max_ordinal as usize * envelope_size;
3450            #[allow(unused_variables)]
3451            let offset = encoder.out_of_line_offset(bytes_len);
3452            let mut _prev_end_offset: usize = 0;
3453            if 1 > max_ordinal {
3454                return Ok(());
3455            }
3456
3457            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3458            // are envelope_size bytes.
3459            let cur_offset: usize = (1 - 1) * envelope_size;
3460
3461            // Zero reserved fields.
3462            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3463
3464            // Safety:
3465            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3466            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3467            //   envelope_size bytes, there is always sufficient room.
3468            fidl::encoding::encode_in_envelope_optional::<StaIfaceCallbackState, D>(
3469                self.new_state
3470                    .as_ref()
3471                    .map(<StaIfaceCallbackState as fidl::encoding::ValueTypeMarker>::borrow),
3472                encoder,
3473                offset + cur_offset,
3474                depth,
3475            )?;
3476
3477            _prev_end_offset = cur_offset + envelope_size;
3478            if 2 > max_ordinal {
3479                return Ok(());
3480            }
3481
3482            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3483            // are envelope_size bytes.
3484            let cur_offset: usize = (2 - 1) * envelope_size;
3485
3486            // Zero reserved fields.
3487            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3488
3489            // Safety:
3490            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3491            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3492            //   envelope_size bytes, there is always sufficient room.
3493            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3494                self.bssid
3495                    .as_ref()
3496                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3497                encoder,
3498                offset + cur_offset,
3499                depth,
3500            )?;
3501
3502            _prev_end_offset = cur_offset + envelope_size;
3503            if 3 > max_ordinal {
3504                return Ok(());
3505            }
3506
3507            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3508            // are envelope_size bytes.
3509            let cur_offset: usize = (3 - 1) * envelope_size;
3510
3511            // Zero reserved fields.
3512            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3513
3514            // Safety:
3515            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3516            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3517            //   envelope_size bytes, there is always sufficient room.
3518            fidl::encoding::encode_in_envelope_optional::<u32, D>(
3519                self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3520                encoder,
3521                offset + cur_offset,
3522                depth,
3523            )?;
3524
3525            _prev_end_offset = cur_offset + envelope_size;
3526            if 4 > max_ordinal {
3527                return Ok(());
3528            }
3529
3530            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3531            // are envelope_size bytes.
3532            let cur_offset: usize = (4 - 1) * envelope_size;
3533
3534            // Zero reserved fields.
3535            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3536
3537            // Safety:
3538            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3539            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3540            //   envelope_size bytes, there is always sufficient room.
3541            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
3542                self.ssid.as_ref().map(
3543                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
3544                ),
3545                encoder,
3546                offset + cur_offset,
3547                depth,
3548            )?;
3549
3550            _prev_end_offset = cur_offset + envelope_size;
3551
3552            Ok(())
3553        }
3554    }
3555
3556    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3557        for SupplicantStaIfaceCallbackOnStateChangedRequest
3558    {
3559        #[inline(always)]
3560        fn new_empty() -> Self {
3561            Self::default()
3562        }
3563
3564        unsafe fn decode(
3565            &mut self,
3566            decoder: &mut fidl::encoding::Decoder<'_, D>,
3567            offset: usize,
3568            mut depth: fidl::encoding::Depth,
3569        ) -> fidl::Result<()> {
3570            decoder.debug_check_bounds::<Self>(offset);
3571            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3572                None => return Err(fidl::Error::NotNullable),
3573                Some(len) => len,
3574            };
3575            // Calling decoder.out_of_line_offset(0) is not allowed.
3576            if len == 0 {
3577                return Ok(());
3578            };
3579            depth.increment()?;
3580            let envelope_size = 8;
3581            let bytes_len = len * envelope_size;
3582            let offset = decoder.out_of_line_offset(bytes_len)?;
3583            // Decode the envelope for each type.
3584            let mut _next_ordinal_to_read = 0;
3585            let mut next_offset = offset;
3586            let end_offset = offset + bytes_len;
3587            _next_ordinal_to_read += 1;
3588            if next_offset >= end_offset {
3589                return Ok(());
3590            }
3591
3592            // Decode unknown envelopes for gaps in ordinals.
3593            while _next_ordinal_to_read < 1 {
3594                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3595                _next_ordinal_to_read += 1;
3596                next_offset += envelope_size;
3597            }
3598
3599            let next_out_of_line = decoder.next_out_of_line();
3600            let handles_before = decoder.remaining_handles();
3601            if let Some((inlined, num_bytes, num_handles)) =
3602                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3603            {
3604                let member_inline_size =
3605                    <StaIfaceCallbackState as fidl::encoding::TypeMarker>::inline_size(
3606                        decoder.context,
3607                    );
3608                if inlined != (member_inline_size <= 4) {
3609                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3610                }
3611                let inner_offset;
3612                let mut inner_depth = depth.clone();
3613                if inlined {
3614                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3615                    inner_offset = next_offset;
3616                } else {
3617                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3618                    inner_depth.increment()?;
3619                }
3620                let val_ref = self
3621                    .new_state
3622                    .get_or_insert_with(|| fidl::new_empty!(StaIfaceCallbackState, D));
3623                fidl::decode!(
3624                    StaIfaceCallbackState,
3625                    D,
3626                    val_ref,
3627                    decoder,
3628                    inner_offset,
3629                    inner_depth
3630                )?;
3631                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3632                {
3633                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3634                }
3635                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3636                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3637                }
3638            }
3639
3640            next_offset += envelope_size;
3641            _next_ordinal_to_read += 1;
3642            if next_offset >= end_offset {
3643                return Ok(());
3644            }
3645
3646            // Decode unknown envelopes for gaps in ordinals.
3647            while _next_ordinal_to_read < 2 {
3648                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3649                _next_ordinal_to_read += 1;
3650                next_offset += envelope_size;
3651            }
3652
3653            let next_out_of_line = decoder.next_out_of_line();
3654            let handles_before = decoder.remaining_handles();
3655            if let Some((inlined, num_bytes, num_handles)) =
3656                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3657            {
3658                let member_inline_size =
3659                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3660                        decoder.context,
3661                    );
3662                if inlined != (member_inline_size <= 4) {
3663                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3664                }
3665                let inner_offset;
3666                let mut inner_depth = depth.clone();
3667                if inlined {
3668                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3669                    inner_offset = next_offset;
3670                } else {
3671                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3672                    inner_depth.increment()?;
3673                }
3674                let val_ref = self
3675                    .bssid
3676                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
3677                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
3678                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3679                {
3680                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3681                }
3682                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3683                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3684                }
3685            }
3686
3687            next_offset += envelope_size;
3688            _next_ordinal_to_read += 1;
3689            if next_offset >= end_offset {
3690                return Ok(());
3691            }
3692
3693            // Decode unknown envelopes for gaps in ordinals.
3694            while _next_ordinal_to_read < 3 {
3695                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3696                _next_ordinal_to_read += 1;
3697                next_offset += envelope_size;
3698            }
3699
3700            let next_out_of_line = decoder.next_out_of_line();
3701            let handles_before = decoder.remaining_handles();
3702            if let Some((inlined, num_bytes, num_handles)) =
3703                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3704            {
3705                let member_inline_size =
3706                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3707                if inlined != (member_inline_size <= 4) {
3708                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3709                }
3710                let inner_offset;
3711                let mut inner_depth = depth.clone();
3712                if inlined {
3713                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3714                    inner_offset = next_offset;
3715                } else {
3716                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3717                    inner_depth.increment()?;
3718                }
3719                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
3720                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3721                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3722                {
3723                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3724                }
3725                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3726                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3727                }
3728            }
3729
3730            next_offset += envelope_size;
3731            _next_ordinal_to_read += 1;
3732            if next_offset >= end_offset {
3733                return Ok(());
3734            }
3735
3736            // Decode unknown envelopes for gaps in ordinals.
3737            while _next_ordinal_to_read < 4 {
3738                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3739                _next_ordinal_to_read += 1;
3740                next_offset += envelope_size;
3741            }
3742
3743            let next_out_of_line = decoder.next_out_of_line();
3744            let handles_before = decoder.remaining_handles();
3745            if let Some((inlined, num_bytes, num_handles)) =
3746                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3747            {
3748                let member_inline_size =
3749                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
3750                        decoder.context,
3751                    );
3752                if inlined != (member_inline_size <= 4) {
3753                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3754                }
3755                let inner_offset;
3756                let mut inner_depth = depth.clone();
3757                if inlined {
3758                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3759                    inner_offset = next_offset;
3760                } else {
3761                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3762                    inner_depth.increment()?;
3763                }
3764                let val_ref = self
3765                    .ssid
3766                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
3767                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
3768                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3769                {
3770                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3771                }
3772                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3773                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3774                }
3775            }
3776
3777            next_offset += envelope_size;
3778
3779            // Decode the remaining unknown envelopes.
3780            while next_offset < end_offset {
3781                _next_ordinal_to_read += 1;
3782                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3783                next_offset += envelope_size;
3784            }
3785
3786            Ok(())
3787        }
3788    }
3789
3790    impl SupplicantStaIfaceSetBtCoexistenceModeRequest {
3791        #[inline(always)]
3792        fn max_ordinal_present(&self) -> u64 {
3793            if let Some(_) = self.mode {
3794                return 1;
3795            }
3796            0
3797        }
3798    }
3799
3800    impl fidl::encoding::ValueTypeMarker for SupplicantStaIfaceSetBtCoexistenceModeRequest {
3801        type Borrowed<'a> = &'a Self;
3802        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3803            value
3804        }
3805    }
3806
3807    unsafe impl fidl::encoding::TypeMarker for SupplicantStaIfaceSetBtCoexistenceModeRequest {
3808        type Owned = Self;
3809
3810        #[inline(always)]
3811        fn inline_align(_context: fidl::encoding::Context) -> usize {
3812            8
3813        }
3814
3815        #[inline(always)]
3816        fn inline_size(_context: fidl::encoding::Context) -> usize {
3817            16
3818        }
3819    }
3820
3821    unsafe impl<D: fidl::encoding::ResourceDialect>
3822        fidl::encoding::Encode<SupplicantStaIfaceSetBtCoexistenceModeRequest, D>
3823        for &SupplicantStaIfaceSetBtCoexistenceModeRequest
3824    {
3825        unsafe fn encode(
3826            self,
3827            encoder: &mut fidl::encoding::Encoder<'_, D>,
3828            offset: usize,
3829            mut depth: fidl::encoding::Depth,
3830        ) -> fidl::Result<()> {
3831            encoder.debug_check_bounds::<SupplicantStaIfaceSetBtCoexistenceModeRequest>(offset);
3832            // Vector header
3833            let max_ordinal: u64 = self.max_ordinal_present();
3834            encoder.write_num(max_ordinal, offset);
3835            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3836            // Calling encoder.out_of_line_offset(0) is not allowed.
3837            if max_ordinal == 0 {
3838                return Ok(());
3839            }
3840            depth.increment()?;
3841            let envelope_size = 8;
3842            let bytes_len = max_ordinal as usize * envelope_size;
3843            #[allow(unused_variables)]
3844            let offset = encoder.out_of_line_offset(bytes_len);
3845            let mut _prev_end_offset: usize = 0;
3846            if 1 > max_ordinal {
3847                return Ok(());
3848            }
3849
3850            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3851            // are envelope_size bytes.
3852            let cur_offset: usize = (1 - 1) * envelope_size;
3853
3854            // Zero reserved fields.
3855            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3856
3857            // Safety:
3858            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3859            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3860            //   envelope_size bytes, there is always sufficient room.
3861            fidl::encoding::encode_in_envelope_optional::<BtCoexistenceMode, D>(
3862                self.mode
3863                    .as_ref()
3864                    .map(<BtCoexistenceMode as fidl::encoding::ValueTypeMarker>::borrow),
3865                encoder,
3866                offset + cur_offset,
3867                depth,
3868            )?;
3869
3870            _prev_end_offset = cur_offset + envelope_size;
3871
3872            Ok(())
3873        }
3874    }
3875
3876    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3877        for SupplicantStaIfaceSetBtCoexistenceModeRequest
3878    {
3879        #[inline(always)]
3880        fn new_empty() -> Self {
3881            Self::default()
3882        }
3883
3884        unsafe fn decode(
3885            &mut self,
3886            decoder: &mut fidl::encoding::Decoder<'_, D>,
3887            offset: usize,
3888            mut depth: fidl::encoding::Depth,
3889        ) -> fidl::Result<()> {
3890            decoder.debug_check_bounds::<Self>(offset);
3891            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3892                None => return Err(fidl::Error::NotNullable),
3893                Some(len) => len,
3894            };
3895            // Calling decoder.out_of_line_offset(0) is not allowed.
3896            if len == 0 {
3897                return Ok(());
3898            };
3899            depth.increment()?;
3900            let envelope_size = 8;
3901            let bytes_len = len * envelope_size;
3902            let offset = decoder.out_of_line_offset(bytes_len)?;
3903            // Decode the envelope for each type.
3904            let mut _next_ordinal_to_read = 0;
3905            let mut next_offset = offset;
3906            let end_offset = offset + bytes_len;
3907            _next_ordinal_to_read += 1;
3908            if next_offset >= end_offset {
3909                return Ok(());
3910            }
3911
3912            // Decode unknown envelopes for gaps in ordinals.
3913            while _next_ordinal_to_read < 1 {
3914                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3915                _next_ordinal_to_read += 1;
3916                next_offset += envelope_size;
3917            }
3918
3919            let next_out_of_line = decoder.next_out_of_line();
3920            let handles_before = decoder.remaining_handles();
3921            if let Some((inlined, num_bytes, num_handles)) =
3922                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3923            {
3924                let member_inline_size =
3925                    <BtCoexistenceMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3926                if inlined != (member_inline_size <= 4) {
3927                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3928                }
3929                let inner_offset;
3930                let mut inner_depth = depth.clone();
3931                if inlined {
3932                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3933                    inner_offset = next_offset;
3934                } else {
3935                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3936                    inner_depth.increment()?;
3937                }
3938                let val_ref =
3939                    self.mode.get_or_insert_with(|| fidl::new_empty!(BtCoexistenceMode, D));
3940                fidl::decode!(BtCoexistenceMode, D, val_ref, decoder, inner_offset, inner_depth)?;
3941                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3942                {
3943                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3944                }
3945                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3946                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3947                }
3948            }
3949
3950            next_offset += envelope_size;
3951
3952            // Decode the remaining unknown envelopes.
3953            while next_offset < end_offset {
3954                _next_ordinal_to_read += 1;
3955                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3956                next_offset += envelope_size;
3957            }
3958
3959            Ok(())
3960        }
3961    }
3962
3963    impl SupplicantStaIfaceGetMacAddressResponse {
3964        #[inline(always)]
3965        fn max_ordinal_present(&self) -> u64 {
3966            if let Some(_) = self.mac_addr {
3967                return 1;
3968            }
3969            0
3970        }
3971    }
3972
3973    impl fidl::encoding::ValueTypeMarker for SupplicantStaIfaceGetMacAddressResponse {
3974        type Borrowed<'a> = &'a Self;
3975        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3976            value
3977        }
3978    }
3979
3980    unsafe impl fidl::encoding::TypeMarker for SupplicantStaIfaceGetMacAddressResponse {
3981        type Owned = Self;
3982
3983        #[inline(always)]
3984        fn inline_align(_context: fidl::encoding::Context) -> usize {
3985            8
3986        }
3987
3988        #[inline(always)]
3989        fn inline_size(_context: fidl::encoding::Context) -> usize {
3990            16
3991        }
3992    }
3993
3994    unsafe impl<D: fidl::encoding::ResourceDialect>
3995        fidl::encoding::Encode<SupplicantStaIfaceGetMacAddressResponse, D>
3996        for &SupplicantStaIfaceGetMacAddressResponse
3997    {
3998        unsafe fn encode(
3999            self,
4000            encoder: &mut fidl::encoding::Encoder<'_, D>,
4001            offset: usize,
4002            mut depth: fidl::encoding::Depth,
4003        ) -> fidl::Result<()> {
4004            encoder.debug_check_bounds::<SupplicantStaIfaceGetMacAddressResponse>(offset);
4005            // Vector header
4006            let max_ordinal: u64 = self.max_ordinal_present();
4007            encoder.write_num(max_ordinal, offset);
4008            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4009            // Calling encoder.out_of_line_offset(0) is not allowed.
4010            if max_ordinal == 0 {
4011                return Ok(());
4012            }
4013            depth.increment()?;
4014            let envelope_size = 8;
4015            let bytes_len = max_ordinal as usize * envelope_size;
4016            #[allow(unused_variables)]
4017            let offset = encoder.out_of_line_offset(bytes_len);
4018            let mut _prev_end_offset: usize = 0;
4019            if 1 > max_ordinal {
4020                return Ok(());
4021            }
4022
4023            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4024            // are envelope_size bytes.
4025            let cur_offset: usize = (1 - 1) * envelope_size;
4026
4027            // Zero reserved fields.
4028            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4029
4030            // Safety:
4031            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4032            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4033            //   envelope_size bytes, there is always sufficient room.
4034            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4035                self.mac_addr
4036                    .as_ref()
4037                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4038                encoder,
4039                offset + cur_offset,
4040                depth,
4041            )?;
4042
4043            _prev_end_offset = cur_offset + envelope_size;
4044
4045            Ok(())
4046        }
4047    }
4048
4049    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4050        for SupplicantStaIfaceGetMacAddressResponse
4051    {
4052        #[inline(always)]
4053        fn new_empty() -> Self {
4054            Self::default()
4055        }
4056
4057        unsafe fn decode(
4058            &mut self,
4059            decoder: &mut fidl::encoding::Decoder<'_, D>,
4060            offset: usize,
4061            mut depth: fidl::encoding::Depth,
4062        ) -> fidl::Result<()> {
4063            decoder.debug_check_bounds::<Self>(offset);
4064            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4065                None => return Err(fidl::Error::NotNullable),
4066                Some(len) => len,
4067            };
4068            // Calling decoder.out_of_line_offset(0) is not allowed.
4069            if len == 0 {
4070                return Ok(());
4071            };
4072            depth.increment()?;
4073            let envelope_size = 8;
4074            let bytes_len = len * envelope_size;
4075            let offset = decoder.out_of_line_offset(bytes_len)?;
4076            // Decode the envelope for each type.
4077            let mut _next_ordinal_to_read = 0;
4078            let mut next_offset = offset;
4079            let end_offset = offset + bytes_len;
4080            _next_ordinal_to_read += 1;
4081            if next_offset >= end_offset {
4082                return Ok(());
4083            }
4084
4085            // Decode unknown envelopes for gaps in ordinals.
4086            while _next_ordinal_to_read < 1 {
4087                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4088                _next_ordinal_to_read += 1;
4089                next_offset += envelope_size;
4090            }
4091
4092            let next_out_of_line = decoder.next_out_of_line();
4093            let handles_before = decoder.remaining_handles();
4094            if let Some((inlined, num_bytes, num_handles)) =
4095                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4096            {
4097                let member_inline_size =
4098                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4099                        decoder.context,
4100                    );
4101                if inlined != (member_inline_size <= 4) {
4102                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4103                }
4104                let inner_offset;
4105                let mut inner_depth = depth.clone();
4106                if inlined {
4107                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4108                    inner_offset = next_offset;
4109                } else {
4110                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4111                    inner_depth.increment()?;
4112                }
4113                let val_ref = self
4114                    .mac_addr
4115                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4116                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4117                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4118                {
4119                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4120                }
4121                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4122                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4123                }
4124            }
4125
4126            next_offset += envelope_size;
4127
4128            // Decode the remaining unknown envelopes.
4129            while next_offset < end_offset {
4130                _next_ordinal_to_read += 1;
4131                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4132                next_offset += envelope_size;
4133            }
4134
4135            Ok(())
4136        }
4137    }
4138
4139    impl SupplicantStaNetworkSetBssidRequest {
4140        #[inline(always)]
4141        fn max_ordinal_present(&self) -> u64 {
4142            if let Some(_) = self.bssid {
4143                return 1;
4144            }
4145            0
4146        }
4147    }
4148
4149    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetBssidRequest {
4150        type Borrowed<'a> = &'a Self;
4151        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4152            value
4153        }
4154    }
4155
4156    unsafe impl fidl::encoding::TypeMarker for SupplicantStaNetworkSetBssidRequest {
4157        type Owned = Self;
4158
4159        #[inline(always)]
4160        fn inline_align(_context: fidl::encoding::Context) -> usize {
4161            8
4162        }
4163
4164        #[inline(always)]
4165        fn inline_size(_context: fidl::encoding::Context) -> usize {
4166            16
4167        }
4168    }
4169
4170    unsafe impl<D: fidl::encoding::ResourceDialect>
4171        fidl::encoding::Encode<SupplicantStaNetworkSetBssidRequest, D>
4172        for &SupplicantStaNetworkSetBssidRequest
4173    {
4174        unsafe fn encode(
4175            self,
4176            encoder: &mut fidl::encoding::Encoder<'_, D>,
4177            offset: usize,
4178            mut depth: fidl::encoding::Depth,
4179        ) -> fidl::Result<()> {
4180            encoder.debug_check_bounds::<SupplicantStaNetworkSetBssidRequest>(offset);
4181            // Vector header
4182            let max_ordinal: u64 = self.max_ordinal_present();
4183            encoder.write_num(max_ordinal, offset);
4184            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4185            // Calling encoder.out_of_line_offset(0) is not allowed.
4186            if max_ordinal == 0 {
4187                return Ok(());
4188            }
4189            depth.increment()?;
4190            let envelope_size = 8;
4191            let bytes_len = max_ordinal as usize * envelope_size;
4192            #[allow(unused_variables)]
4193            let offset = encoder.out_of_line_offset(bytes_len);
4194            let mut _prev_end_offset: usize = 0;
4195            if 1 > max_ordinal {
4196                return Ok(());
4197            }
4198
4199            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4200            // are envelope_size bytes.
4201            let cur_offset: usize = (1 - 1) * envelope_size;
4202
4203            // Zero reserved fields.
4204            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4205
4206            // Safety:
4207            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4208            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4209            //   envelope_size bytes, there is always sufficient room.
4210            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4211                self.bssid
4212                    .as_ref()
4213                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4214                encoder,
4215                offset + cur_offset,
4216                depth,
4217            )?;
4218
4219            _prev_end_offset = cur_offset + envelope_size;
4220
4221            Ok(())
4222        }
4223    }
4224
4225    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4226        for SupplicantStaNetworkSetBssidRequest
4227    {
4228        #[inline(always)]
4229        fn new_empty() -> Self {
4230            Self::default()
4231        }
4232
4233        unsafe fn decode(
4234            &mut self,
4235            decoder: &mut fidl::encoding::Decoder<'_, D>,
4236            offset: usize,
4237            mut depth: fidl::encoding::Depth,
4238        ) -> fidl::Result<()> {
4239            decoder.debug_check_bounds::<Self>(offset);
4240            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4241                None => return Err(fidl::Error::NotNullable),
4242                Some(len) => len,
4243            };
4244            // Calling decoder.out_of_line_offset(0) is not allowed.
4245            if len == 0 {
4246                return Ok(());
4247            };
4248            depth.increment()?;
4249            let envelope_size = 8;
4250            let bytes_len = len * envelope_size;
4251            let offset = decoder.out_of_line_offset(bytes_len)?;
4252            // Decode the envelope for each type.
4253            let mut _next_ordinal_to_read = 0;
4254            let mut next_offset = offset;
4255            let end_offset = offset + bytes_len;
4256            _next_ordinal_to_read += 1;
4257            if next_offset >= end_offset {
4258                return Ok(());
4259            }
4260
4261            // Decode unknown envelopes for gaps in ordinals.
4262            while _next_ordinal_to_read < 1 {
4263                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4264                _next_ordinal_to_read += 1;
4265                next_offset += envelope_size;
4266            }
4267
4268            let next_out_of_line = decoder.next_out_of_line();
4269            let handles_before = decoder.remaining_handles();
4270            if let Some((inlined, num_bytes, num_handles)) =
4271                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4272            {
4273                let member_inline_size =
4274                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4275                        decoder.context,
4276                    );
4277                if inlined != (member_inline_size <= 4) {
4278                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4279                }
4280                let inner_offset;
4281                let mut inner_depth = depth.clone();
4282                if inlined {
4283                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4284                    inner_offset = next_offset;
4285                } else {
4286                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4287                    inner_depth.increment()?;
4288                }
4289                let val_ref = self
4290                    .bssid
4291                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4292                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4293                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4294                {
4295                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4296                }
4297                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4298                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4299                }
4300            }
4301
4302            next_offset += envelope_size;
4303
4304            // Decode the remaining unknown envelopes.
4305            while next_offset < end_offset {
4306                _next_ordinal_to_read += 1;
4307                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4308                next_offset += envelope_size;
4309            }
4310
4311            Ok(())
4312        }
4313    }
4314
4315    impl SupplicantStaNetworkSetPskPassphraseRequest {
4316        #[inline(always)]
4317        fn max_ordinal_present(&self) -> u64 {
4318            if let Some(_) = self.passphrase {
4319                return 1;
4320            }
4321            0
4322        }
4323    }
4324
4325    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetPskPassphraseRequest {
4326        type Borrowed<'a> = &'a Self;
4327        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4328            value
4329        }
4330    }
4331
4332    unsafe impl fidl::encoding::TypeMarker for SupplicantStaNetworkSetPskPassphraseRequest {
4333        type Owned = Self;
4334
4335        #[inline(always)]
4336        fn inline_align(_context: fidl::encoding::Context) -> usize {
4337            8
4338        }
4339
4340        #[inline(always)]
4341        fn inline_size(_context: fidl::encoding::Context) -> usize {
4342            16
4343        }
4344    }
4345
4346    unsafe impl<D: fidl::encoding::ResourceDialect>
4347        fidl::encoding::Encode<SupplicantStaNetworkSetPskPassphraseRequest, D>
4348        for &SupplicantStaNetworkSetPskPassphraseRequest
4349    {
4350        unsafe fn encode(
4351            self,
4352            encoder: &mut fidl::encoding::Encoder<'_, D>,
4353            offset: usize,
4354            mut depth: fidl::encoding::Depth,
4355        ) -> fidl::Result<()> {
4356            encoder.debug_check_bounds::<SupplicantStaNetworkSetPskPassphraseRequest>(offset);
4357            // Vector header
4358            let max_ordinal: u64 = self.max_ordinal_present();
4359            encoder.write_num(max_ordinal, offset);
4360            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4361            // Calling encoder.out_of_line_offset(0) is not allowed.
4362            if max_ordinal == 0 {
4363                return Ok(());
4364            }
4365            depth.increment()?;
4366            let envelope_size = 8;
4367            let bytes_len = max_ordinal as usize * envelope_size;
4368            #[allow(unused_variables)]
4369            let offset = encoder.out_of_line_offset(bytes_len);
4370            let mut _prev_end_offset: usize = 0;
4371            if 1 > max_ordinal {
4372                return Ok(());
4373            }
4374
4375            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4376            // are envelope_size bytes.
4377            let cur_offset: usize = (1 - 1) * envelope_size;
4378
4379            // Zero reserved fields.
4380            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4381
4382            // Safety:
4383            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4384            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4385            //   envelope_size bytes, there is always sufficient room.
4386            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
4387            self.passphrase.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
4388            encoder, offset + cur_offset, depth
4389        )?;
4390
4391            _prev_end_offset = cur_offset + envelope_size;
4392
4393            Ok(())
4394        }
4395    }
4396
4397    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4398        for SupplicantStaNetworkSetPskPassphraseRequest
4399    {
4400        #[inline(always)]
4401        fn new_empty() -> Self {
4402            Self::default()
4403        }
4404
4405        unsafe fn decode(
4406            &mut self,
4407            decoder: &mut fidl::encoding::Decoder<'_, D>,
4408            offset: usize,
4409            mut depth: fidl::encoding::Depth,
4410        ) -> fidl::Result<()> {
4411            decoder.debug_check_bounds::<Self>(offset);
4412            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4413                None => return Err(fidl::Error::NotNullable),
4414                Some(len) => len,
4415            };
4416            // Calling decoder.out_of_line_offset(0) is not allowed.
4417            if len == 0 {
4418                return Ok(());
4419            };
4420            depth.increment()?;
4421            let envelope_size = 8;
4422            let bytes_len = len * envelope_size;
4423            let offset = decoder.out_of_line_offset(bytes_len)?;
4424            // Decode the envelope for each type.
4425            let mut _next_ordinal_to_read = 0;
4426            let mut next_offset = offset;
4427            let end_offset = offset + bytes_len;
4428            _next_ordinal_to_read += 1;
4429            if next_offset >= end_offset {
4430                return Ok(());
4431            }
4432
4433            // Decode unknown envelopes for gaps in ordinals.
4434            while _next_ordinal_to_read < 1 {
4435                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4436                _next_ordinal_to_read += 1;
4437                next_offset += envelope_size;
4438            }
4439
4440            let next_out_of_line = decoder.next_out_of_line();
4441            let handles_before = decoder.remaining_handles();
4442            if let Some((inlined, num_bytes, num_handles)) =
4443                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4444            {
4445                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4446                if inlined != (member_inline_size <= 4) {
4447                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4448                }
4449                let inner_offset;
4450                let mut inner_depth = depth.clone();
4451                if inlined {
4452                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4453                    inner_offset = next_offset;
4454                } else {
4455                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4456                    inner_depth.increment()?;
4457                }
4458                let val_ref = self.passphrase.get_or_insert_with(|| {
4459                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
4460                });
4461                fidl::decode!(
4462                    fidl::encoding::UnboundedVector<u8>,
4463                    D,
4464                    val_ref,
4465                    decoder,
4466                    inner_offset,
4467                    inner_depth
4468                )?;
4469                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4470                {
4471                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4472                }
4473                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4474                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4475                }
4476            }
4477
4478            next_offset += envelope_size;
4479
4480            // Decode the remaining unknown envelopes.
4481            while next_offset < end_offset {
4482                _next_ordinal_to_read += 1;
4483                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4484                next_offset += envelope_size;
4485            }
4486
4487            Ok(())
4488        }
4489    }
4490
4491    impl SupplicantStaNetworkSetSaePasswordRequest {
4492        #[inline(always)]
4493        fn max_ordinal_present(&self) -> u64 {
4494            if let Some(_) = self.password {
4495                return 1;
4496            }
4497            0
4498        }
4499    }
4500
4501    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetSaePasswordRequest {
4502        type Borrowed<'a> = &'a Self;
4503        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4504            value
4505        }
4506    }
4507
4508    unsafe impl fidl::encoding::TypeMarker for SupplicantStaNetworkSetSaePasswordRequest {
4509        type Owned = Self;
4510
4511        #[inline(always)]
4512        fn inline_align(_context: fidl::encoding::Context) -> usize {
4513            8
4514        }
4515
4516        #[inline(always)]
4517        fn inline_size(_context: fidl::encoding::Context) -> usize {
4518            16
4519        }
4520    }
4521
4522    unsafe impl<D: fidl::encoding::ResourceDialect>
4523        fidl::encoding::Encode<SupplicantStaNetworkSetSaePasswordRequest, D>
4524        for &SupplicantStaNetworkSetSaePasswordRequest
4525    {
4526        unsafe fn encode(
4527            self,
4528            encoder: &mut fidl::encoding::Encoder<'_, D>,
4529            offset: usize,
4530            mut depth: fidl::encoding::Depth,
4531        ) -> fidl::Result<()> {
4532            encoder.debug_check_bounds::<SupplicantStaNetworkSetSaePasswordRequest>(offset);
4533            // Vector header
4534            let max_ordinal: u64 = self.max_ordinal_present();
4535            encoder.write_num(max_ordinal, offset);
4536            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4537            // Calling encoder.out_of_line_offset(0) is not allowed.
4538            if max_ordinal == 0 {
4539                return Ok(());
4540            }
4541            depth.increment()?;
4542            let envelope_size = 8;
4543            let bytes_len = max_ordinal as usize * envelope_size;
4544            #[allow(unused_variables)]
4545            let offset = encoder.out_of_line_offset(bytes_len);
4546            let mut _prev_end_offset: usize = 0;
4547            if 1 > max_ordinal {
4548                return Ok(());
4549            }
4550
4551            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4552            // are envelope_size bytes.
4553            let cur_offset: usize = (1 - 1) * envelope_size;
4554
4555            // Zero reserved fields.
4556            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4557
4558            // Safety:
4559            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4560            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4561            //   envelope_size bytes, there is always sufficient room.
4562            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
4563            self.password.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
4564            encoder, offset + cur_offset, depth
4565        )?;
4566
4567            _prev_end_offset = cur_offset + envelope_size;
4568
4569            Ok(())
4570        }
4571    }
4572
4573    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4574        for SupplicantStaNetworkSetSaePasswordRequest
4575    {
4576        #[inline(always)]
4577        fn new_empty() -> Self {
4578            Self::default()
4579        }
4580
4581        unsafe fn decode(
4582            &mut self,
4583            decoder: &mut fidl::encoding::Decoder<'_, D>,
4584            offset: usize,
4585            mut depth: fidl::encoding::Depth,
4586        ) -> fidl::Result<()> {
4587            decoder.debug_check_bounds::<Self>(offset);
4588            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4589                None => return Err(fidl::Error::NotNullable),
4590                Some(len) => len,
4591            };
4592            // Calling decoder.out_of_line_offset(0) is not allowed.
4593            if len == 0 {
4594                return Ok(());
4595            };
4596            depth.increment()?;
4597            let envelope_size = 8;
4598            let bytes_len = len * envelope_size;
4599            let offset = decoder.out_of_line_offset(bytes_len)?;
4600            // Decode the envelope for each type.
4601            let mut _next_ordinal_to_read = 0;
4602            let mut next_offset = offset;
4603            let end_offset = offset + bytes_len;
4604            _next_ordinal_to_read += 1;
4605            if next_offset >= end_offset {
4606                return Ok(());
4607            }
4608
4609            // Decode unknown envelopes for gaps in ordinals.
4610            while _next_ordinal_to_read < 1 {
4611                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4612                _next_ordinal_to_read += 1;
4613                next_offset += envelope_size;
4614            }
4615
4616            let next_out_of_line = decoder.next_out_of_line();
4617            let handles_before = decoder.remaining_handles();
4618            if let Some((inlined, num_bytes, num_handles)) =
4619                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4620            {
4621                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4622                if inlined != (member_inline_size <= 4) {
4623                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4624                }
4625                let inner_offset;
4626                let mut inner_depth = depth.clone();
4627                if inlined {
4628                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4629                    inner_offset = next_offset;
4630                } else {
4631                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4632                    inner_depth.increment()?;
4633                }
4634                let val_ref = self.password.get_or_insert_with(|| {
4635                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
4636                });
4637                fidl::decode!(
4638                    fidl::encoding::UnboundedVector<u8>,
4639                    D,
4640                    val_ref,
4641                    decoder,
4642                    inner_offset,
4643                    inner_depth
4644                )?;
4645                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4646                {
4647                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4648                }
4649                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4650                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4651                }
4652            }
4653
4654            next_offset += envelope_size;
4655
4656            // Decode the remaining unknown envelopes.
4657            while next_offset < end_offset {
4658                _next_ordinal_to_read += 1;
4659                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4660                next_offset += envelope_size;
4661            }
4662
4663            Ok(())
4664        }
4665    }
4666
4667    impl SupplicantStaNetworkSetSsidRequest {
4668        #[inline(always)]
4669        fn max_ordinal_present(&self) -> u64 {
4670            if let Some(_) = self.ssid {
4671                return 1;
4672            }
4673            0
4674        }
4675    }
4676
4677    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetSsidRequest {
4678        type Borrowed<'a> = &'a Self;
4679        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4680            value
4681        }
4682    }
4683
4684    unsafe impl fidl::encoding::TypeMarker for SupplicantStaNetworkSetSsidRequest {
4685        type Owned = Self;
4686
4687        #[inline(always)]
4688        fn inline_align(_context: fidl::encoding::Context) -> usize {
4689            8
4690        }
4691
4692        #[inline(always)]
4693        fn inline_size(_context: fidl::encoding::Context) -> usize {
4694            16
4695        }
4696    }
4697
4698    unsafe impl<D: fidl::encoding::ResourceDialect>
4699        fidl::encoding::Encode<SupplicantStaNetworkSetSsidRequest, D>
4700        for &SupplicantStaNetworkSetSsidRequest
4701    {
4702        unsafe fn encode(
4703            self,
4704            encoder: &mut fidl::encoding::Encoder<'_, D>,
4705            offset: usize,
4706            mut depth: fidl::encoding::Depth,
4707        ) -> fidl::Result<()> {
4708            encoder.debug_check_bounds::<SupplicantStaNetworkSetSsidRequest>(offset);
4709            // Vector header
4710            let max_ordinal: u64 = self.max_ordinal_present();
4711            encoder.write_num(max_ordinal, offset);
4712            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4713            // Calling encoder.out_of_line_offset(0) is not allowed.
4714            if max_ordinal == 0 {
4715                return Ok(());
4716            }
4717            depth.increment()?;
4718            let envelope_size = 8;
4719            let bytes_len = max_ordinal as usize * envelope_size;
4720            #[allow(unused_variables)]
4721            let offset = encoder.out_of_line_offset(bytes_len);
4722            let mut _prev_end_offset: usize = 0;
4723            if 1 > max_ordinal {
4724                return Ok(());
4725            }
4726
4727            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4728            // are envelope_size bytes.
4729            let cur_offset: usize = (1 - 1) * envelope_size;
4730
4731            // Zero reserved fields.
4732            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4733
4734            // Safety:
4735            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4736            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4737            //   envelope_size bytes, there is always sufficient room.
4738            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
4739                self.ssid.as_ref().map(
4740                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
4741                ),
4742                encoder,
4743                offset + cur_offset,
4744                depth,
4745            )?;
4746
4747            _prev_end_offset = cur_offset + envelope_size;
4748
4749            Ok(())
4750        }
4751    }
4752
4753    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4754        for SupplicantStaNetworkSetSsidRequest
4755    {
4756        #[inline(always)]
4757        fn new_empty() -> Self {
4758            Self::default()
4759        }
4760
4761        unsafe fn decode(
4762            &mut self,
4763            decoder: &mut fidl::encoding::Decoder<'_, D>,
4764            offset: usize,
4765            mut depth: fidl::encoding::Depth,
4766        ) -> fidl::Result<()> {
4767            decoder.debug_check_bounds::<Self>(offset);
4768            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4769                None => return Err(fidl::Error::NotNullable),
4770                Some(len) => len,
4771            };
4772            // Calling decoder.out_of_line_offset(0) is not allowed.
4773            if len == 0 {
4774                return Ok(());
4775            };
4776            depth.increment()?;
4777            let envelope_size = 8;
4778            let bytes_len = len * envelope_size;
4779            let offset = decoder.out_of_line_offset(bytes_len)?;
4780            // Decode the envelope for each type.
4781            let mut _next_ordinal_to_read = 0;
4782            let mut next_offset = offset;
4783            let end_offset = offset + bytes_len;
4784            _next_ordinal_to_read += 1;
4785            if next_offset >= end_offset {
4786                return Ok(());
4787            }
4788
4789            // Decode unknown envelopes for gaps in ordinals.
4790            while _next_ordinal_to_read < 1 {
4791                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4792                _next_ordinal_to_read += 1;
4793                next_offset += envelope_size;
4794            }
4795
4796            let next_out_of_line = decoder.next_out_of_line();
4797            let handles_before = decoder.remaining_handles();
4798            if let Some((inlined, num_bytes, num_handles)) =
4799                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4800            {
4801                let member_inline_size =
4802                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
4803                        decoder.context,
4804                    );
4805                if inlined != (member_inline_size <= 4) {
4806                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4807                }
4808                let inner_offset;
4809                let mut inner_depth = depth.clone();
4810                if inlined {
4811                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4812                    inner_offset = next_offset;
4813                } else {
4814                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4815                    inner_depth.increment()?;
4816                }
4817                let val_ref = self
4818                    .ssid
4819                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
4820                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
4821                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4822                {
4823                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4824                }
4825                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4826                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4827                }
4828            }
4829
4830            next_offset += envelope_size;
4831
4832            // Decode the remaining unknown envelopes.
4833            while next_offset < end_offset {
4834                _next_ordinal_to_read += 1;
4835                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4836                next_offset += envelope_size;
4837            }
4838
4839            Ok(())
4840        }
4841    }
4842
4843    impl SupplicantStaNetworkSetWepKeyRequest {
4844        #[inline(always)]
4845        fn max_ordinal_present(&self) -> u64 {
4846            if let Some(_) = self.key_idx {
4847                return 2;
4848            }
4849            if let Some(_) = self.key {
4850                return 1;
4851            }
4852            0
4853        }
4854    }
4855
4856    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetWepKeyRequest {
4857        type Borrowed<'a> = &'a Self;
4858        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4859            value
4860        }
4861    }
4862
4863    unsafe impl fidl::encoding::TypeMarker for SupplicantStaNetworkSetWepKeyRequest {
4864        type Owned = Self;
4865
4866        #[inline(always)]
4867        fn inline_align(_context: fidl::encoding::Context) -> usize {
4868            8
4869        }
4870
4871        #[inline(always)]
4872        fn inline_size(_context: fidl::encoding::Context) -> usize {
4873            16
4874        }
4875    }
4876
4877    unsafe impl<D: fidl::encoding::ResourceDialect>
4878        fidl::encoding::Encode<SupplicantStaNetworkSetWepKeyRequest, D>
4879        for &SupplicantStaNetworkSetWepKeyRequest
4880    {
4881        unsafe fn encode(
4882            self,
4883            encoder: &mut fidl::encoding::Encoder<'_, D>,
4884            offset: usize,
4885            mut depth: fidl::encoding::Depth,
4886        ) -> fidl::Result<()> {
4887            encoder.debug_check_bounds::<SupplicantStaNetworkSetWepKeyRequest>(offset);
4888            // Vector header
4889            let max_ordinal: u64 = self.max_ordinal_present();
4890            encoder.write_num(max_ordinal, offset);
4891            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4892            // Calling encoder.out_of_line_offset(0) is not allowed.
4893            if max_ordinal == 0 {
4894                return Ok(());
4895            }
4896            depth.increment()?;
4897            let envelope_size = 8;
4898            let bytes_len = max_ordinal as usize * envelope_size;
4899            #[allow(unused_variables)]
4900            let offset = encoder.out_of_line_offset(bytes_len);
4901            let mut _prev_end_offset: usize = 0;
4902            if 1 > max_ordinal {
4903                return Ok(());
4904            }
4905
4906            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4907            // are envelope_size bytes.
4908            let cur_offset: usize = (1 - 1) * envelope_size;
4909
4910            // Zero reserved fields.
4911            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4912
4913            // Safety:
4914            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4915            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4916            //   envelope_size bytes, there is always sufficient room.
4917            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
4918            self.key.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
4919            encoder, offset + cur_offset, depth
4920        )?;
4921
4922            _prev_end_offset = cur_offset + envelope_size;
4923            if 2 > max_ordinal {
4924                return Ok(());
4925            }
4926
4927            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4928            // are envelope_size bytes.
4929            let cur_offset: usize = (2 - 1) * envelope_size;
4930
4931            // Zero reserved fields.
4932            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4933
4934            // Safety:
4935            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4936            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4937            //   envelope_size bytes, there is always sufficient room.
4938            fidl::encoding::encode_in_envelope_optional::<i32, D>(
4939                self.key_idx.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
4940                encoder,
4941                offset + cur_offset,
4942                depth,
4943            )?;
4944
4945            _prev_end_offset = cur_offset + envelope_size;
4946
4947            Ok(())
4948        }
4949    }
4950
4951    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4952        for SupplicantStaNetworkSetWepKeyRequest
4953    {
4954        #[inline(always)]
4955        fn new_empty() -> Self {
4956            Self::default()
4957        }
4958
4959        unsafe fn decode(
4960            &mut self,
4961            decoder: &mut fidl::encoding::Decoder<'_, D>,
4962            offset: usize,
4963            mut depth: fidl::encoding::Depth,
4964        ) -> fidl::Result<()> {
4965            decoder.debug_check_bounds::<Self>(offset);
4966            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4967                None => return Err(fidl::Error::NotNullable),
4968                Some(len) => len,
4969            };
4970            // Calling decoder.out_of_line_offset(0) is not allowed.
4971            if len == 0 {
4972                return Ok(());
4973            };
4974            depth.increment()?;
4975            let envelope_size = 8;
4976            let bytes_len = len * envelope_size;
4977            let offset = decoder.out_of_line_offset(bytes_len)?;
4978            // Decode the envelope for each type.
4979            let mut _next_ordinal_to_read = 0;
4980            let mut next_offset = offset;
4981            let end_offset = offset + bytes_len;
4982            _next_ordinal_to_read += 1;
4983            if next_offset >= end_offset {
4984                return Ok(());
4985            }
4986
4987            // Decode unknown envelopes for gaps in ordinals.
4988            while _next_ordinal_to_read < 1 {
4989                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4990                _next_ordinal_to_read += 1;
4991                next_offset += envelope_size;
4992            }
4993
4994            let next_out_of_line = decoder.next_out_of_line();
4995            let handles_before = decoder.remaining_handles();
4996            if let Some((inlined, num_bytes, num_handles)) =
4997                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4998            {
4999                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5000                if inlined != (member_inline_size <= 4) {
5001                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5002                }
5003                let inner_offset;
5004                let mut inner_depth = depth.clone();
5005                if inlined {
5006                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5007                    inner_offset = next_offset;
5008                } else {
5009                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5010                    inner_depth.increment()?;
5011                }
5012                let val_ref = self.key.get_or_insert_with(|| {
5013                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
5014                });
5015                fidl::decode!(
5016                    fidl::encoding::UnboundedVector<u8>,
5017                    D,
5018                    val_ref,
5019                    decoder,
5020                    inner_offset,
5021                    inner_depth
5022                )?;
5023                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5024                {
5025                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5026                }
5027                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5028                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5029                }
5030            }
5031
5032            next_offset += envelope_size;
5033            _next_ordinal_to_read += 1;
5034            if next_offset >= end_offset {
5035                return Ok(());
5036            }
5037
5038            // Decode unknown envelopes for gaps in ordinals.
5039            while _next_ordinal_to_read < 2 {
5040                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5041                _next_ordinal_to_read += 1;
5042                next_offset += envelope_size;
5043            }
5044
5045            let next_out_of_line = decoder.next_out_of_line();
5046            let handles_before = decoder.remaining_handles();
5047            if let Some((inlined, num_bytes, num_handles)) =
5048                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5049            {
5050                let member_inline_size =
5051                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5052                if inlined != (member_inline_size <= 4) {
5053                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5054                }
5055                let inner_offset;
5056                let mut inner_depth = depth.clone();
5057                if inlined {
5058                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5059                    inner_offset = next_offset;
5060                } else {
5061                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5062                    inner_depth.increment()?;
5063                }
5064                let val_ref = self.key_idx.get_or_insert_with(|| fidl::new_empty!(i32, D));
5065                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
5066                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5067                {
5068                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5069                }
5070                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5071                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5072                }
5073            }
5074
5075            next_offset += envelope_size;
5076
5077            // Decode the remaining unknown envelopes.
5078            while next_offset < end_offset {
5079                _next_ordinal_to_read += 1;
5080                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5081                next_offset += envelope_size;
5082            }
5083
5084            Ok(())
5085        }
5086    }
5087
5088    impl SupplicantStaNetworkSetWepTxKeyIdxRequest {
5089        #[inline(always)]
5090        fn max_ordinal_present(&self) -> u64 {
5091            if let Some(_) = self.key_idx {
5092                return 1;
5093            }
5094            0
5095        }
5096    }
5097
5098    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetWepTxKeyIdxRequest {
5099        type Borrowed<'a> = &'a Self;
5100        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5101            value
5102        }
5103    }
5104
5105    unsafe impl fidl::encoding::TypeMarker for SupplicantStaNetworkSetWepTxKeyIdxRequest {
5106        type Owned = Self;
5107
5108        #[inline(always)]
5109        fn inline_align(_context: fidl::encoding::Context) -> usize {
5110            8
5111        }
5112
5113        #[inline(always)]
5114        fn inline_size(_context: fidl::encoding::Context) -> usize {
5115            16
5116        }
5117    }
5118
5119    unsafe impl<D: fidl::encoding::ResourceDialect>
5120        fidl::encoding::Encode<SupplicantStaNetworkSetWepTxKeyIdxRequest, D>
5121        for &SupplicantStaNetworkSetWepTxKeyIdxRequest
5122    {
5123        unsafe fn encode(
5124            self,
5125            encoder: &mut fidl::encoding::Encoder<'_, D>,
5126            offset: usize,
5127            mut depth: fidl::encoding::Depth,
5128        ) -> fidl::Result<()> {
5129            encoder.debug_check_bounds::<SupplicantStaNetworkSetWepTxKeyIdxRequest>(offset);
5130            // Vector header
5131            let max_ordinal: u64 = self.max_ordinal_present();
5132            encoder.write_num(max_ordinal, offset);
5133            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5134            // Calling encoder.out_of_line_offset(0) is not allowed.
5135            if max_ordinal == 0 {
5136                return Ok(());
5137            }
5138            depth.increment()?;
5139            let envelope_size = 8;
5140            let bytes_len = max_ordinal as usize * envelope_size;
5141            #[allow(unused_variables)]
5142            let offset = encoder.out_of_line_offset(bytes_len);
5143            let mut _prev_end_offset: usize = 0;
5144            if 1 > max_ordinal {
5145                return Ok(());
5146            }
5147
5148            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5149            // are envelope_size bytes.
5150            let cur_offset: usize = (1 - 1) * envelope_size;
5151
5152            // Zero reserved fields.
5153            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5154
5155            // Safety:
5156            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5157            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5158            //   envelope_size bytes, there is always sufficient room.
5159            fidl::encoding::encode_in_envelope_optional::<i32, D>(
5160                self.key_idx.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
5161                encoder,
5162                offset + cur_offset,
5163                depth,
5164            )?;
5165
5166            _prev_end_offset = cur_offset + envelope_size;
5167
5168            Ok(())
5169        }
5170    }
5171
5172    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5173        for SupplicantStaNetworkSetWepTxKeyIdxRequest
5174    {
5175        #[inline(always)]
5176        fn new_empty() -> Self {
5177            Self::default()
5178        }
5179
5180        unsafe fn decode(
5181            &mut self,
5182            decoder: &mut fidl::encoding::Decoder<'_, D>,
5183            offset: usize,
5184            mut depth: fidl::encoding::Depth,
5185        ) -> fidl::Result<()> {
5186            decoder.debug_check_bounds::<Self>(offset);
5187            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5188                None => return Err(fidl::Error::NotNullable),
5189                Some(len) => len,
5190            };
5191            // Calling decoder.out_of_line_offset(0) is not allowed.
5192            if len == 0 {
5193                return Ok(());
5194            };
5195            depth.increment()?;
5196            let envelope_size = 8;
5197            let bytes_len = len * envelope_size;
5198            let offset = decoder.out_of_line_offset(bytes_len)?;
5199            // Decode the envelope for each type.
5200            let mut _next_ordinal_to_read = 0;
5201            let mut next_offset = offset;
5202            let end_offset = offset + bytes_len;
5203            _next_ordinal_to_read += 1;
5204            if next_offset >= end_offset {
5205                return Ok(());
5206            }
5207
5208            // Decode unknown envelopes for gaps in ordinals.
5209            while _next_ordinal_to_read < 1 {
5210                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5211                _next_ordinal_to_read += 1;
5212                next_offset += envelope_size;
5213            }
5214
5215            let next_out_of_line = decoder.next_out_of_line();
5216            let handles_before = decoder.remaining_handles();
5217            if let Some((inlined, num_bytes, num_handles)) =
5218                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5219            {
5220                let member_inline_size =
5221                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5222                if inlined != (member_inline_size <= 4) {
5223                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5224                }
5225                let inner_offset;
5226                let mut inner_depth = depth.clone();
5227                if inlined {
5228                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5229                    inner_offset = next_offset;
5230                } else {
5231                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5232                    inner_depth.increment()?;
5233                }
5234                let val_ref = self.key_idx.get_or_insert_with(|| fidl::new_empty!(i32, D));
5235                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
5236                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5237                {
5238                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5239                }
5240                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5241                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5242                }
5243            }
5244
5245            next_offset += envelope_size;
5246
5247            // Decode the remaining unknown envelopes.
5248            while next_offset < end_offset {
5249                _next_ordinal_to_read += 1;
5250                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5251                next_offset += envelope_size;
5252            }
5253
5254            Ok(())
5255        }
5256    }
5257
5258    impl WifiChipGetAvailableModesResponse {
5259        #[inline(always)]
5260        fn max_ordinal_present(&self) -> u64 {
5261            if let Some(_) = self.chip_modes {
5262                return 1;
5263            }
5264            0
5265        }
5266    }
5267
5268    impl fidl::encoding::ValueTypeMarker for WifiChipGetAvailableModesResponse {
5269        type Borrowed<'a> = &'a Self;
5270        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5271            value
5272        }
5273    }
5274
5275    unsafe impl fidl::encoding::TypeMarker for WifiChipGetAvailableModesResponse {
5276        type Owned = Self;
5277
5278        #[inline(always)]
5279        fn inline_align(_context: fidl::encoding::Context) -> usize {
5280            8
5281        }
5282
5283        #[inline(always)]
5284        fn inline_size(_context: fidl::encoding::Context) -> usize {
5285            16
5286        }
5287    }
5288
5289    unsafe impl<D: fidl::encoding::ResourceDialect>
5290        fidl::encoding::Encode<WifiChipGetAvailableModesResponse, D>
5291        for &WifiChipGetAvailableModesResponse
5292    {
5293        unsafe fn encode(
5294            self,
5295            encoder: &mut fidl::encoding::Encoder<'_, D>,
5296            offset: usize,
5297            mut depth: fidl::encoding::Depth,
5298        ) -> fidl::Result<()> {
5299            encoder.debug_check_bounds::<WifiChipGetAvailableModesResponse>(offset);
5300            // Vector header
5301            let max_ordinal: u64 = self.max_ordinal_present();
5302            encoder.write_num(max_ordinal, offset);
5303            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5304            // Calling encoder.out_of_line_offset(0) is not allowed.
5305            if max_ordinal == 0 {
5306                return Ok(());
5307            }
5308            depth.increment()?;
5309            let envelope_size = 8;
5310            let bytes_len = max_ordinal as usize * envelope_size;
5311            #[allow(unused_variables)]
5312            let offset = encoder.out_of_line_offset(bytes_len);
5313            let mut _prev_end_offset: usize = 0;
5314            if 1 > max_ordinal {
5315                return Ok(());
5316            }
5317
5318            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5319            // are envelope_size bytes.
5320            let cur_offset: usize = (1 - 1) * envelope_size;
5321
5322            // Zero reserved fields.
5323            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5324
5325            // Safety:
5326            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5327            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5328            //   envelope_size bytes, there is always sufficient room.
5329            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ChipMode>, D>(
5330            self.chip_modes.as_ref().map(<fidl::encoding::UnboundedVector<ChipMode> as fidl::encoding::ValueTypeMarker>::borrow),
5331            encoder, offset + cur_offset, depth
5332        )?;
5333
5334            _prev_end_offset = cur_offset + envelope_size;
5335
5336            Ok(())
5337        }
5338    }
5339
5340    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5341        for WifiChipGetAvailableModesResponse
5342    {
5343        #[inline(always)]
5344        fn new_empty() -> Self {
5345            Self::default()
5346        }
5347
5348        unsafe fn decode(
5349            &mut self,
5350            decoder: &mut fidl::encoding::Decoder<'_, D>,
5351            offset: usize,
5352            mut depth: fidl::encoding::Depth,
5353        ) -> fidl::Result<()> {
5354            decoder.debug_check_bounds::<Self>(offset);
5355            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5356                None => return Err(fidl::Error::NotNullable),
5357                Some(len) => len,
5358            };
5359            // Calling decoder.out_of_line_offset(0) is not allowed.
5360            if len == 0 {
5361                return Ok(());
5362            };
5363            depth.increment()?;
5364            let envelope_size = 8;
5365            let bytes_len = len * envelope_size;
5366            let offset = decoder.out_of_line_offset(bytes_len)?;
5367            // Decode the envelope for each type.
5368            let mut _next_ordinal_to_read = 0;
5369            let mut next_offset = offset;
5370            let end_offset = offset + bytes_len;
5371            _next_ordinal_to_read += 1;
5372            if next_offset >= end_offset {
5373                return Ok(());
5374            }
5375
5376            // Decode unknown envelopes for gaps in ordinals.
5377            while _next_ordinal_to_read < 1 {
5378                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5379                _next_ordinal_to_read += 1;
5380                next_offset += envelope_size;
5381            }
5382
5383            let next_out_of_line = decoder.next_out_of_line();
5384            let handles_before = decoder.remaining_handles();
5385            if let Some((inlined, num_bytes, num_handles)) =
5386                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5387            {
5388                let member_inline_size = <fidl::encoding::UnboundedVector<ChipMode> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5389                if inlined != (member_inline_size <= 4) {
5390                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5391                }
5392                let inner_offset;
5393                let mut inner_depth = depth.clone();
5394                if inlined {
5395                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5396                    inner_offset = next_offset;
5397                } else {
5398                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5399                    inner_depth.increment()?;
5400                }
5401                let val_ref = self.chip_modes.get_or_insert_with(|| {
5402                    fidl::new_empty!(fidl::encoding::UnboundedVector<ChipMode>, D)
5403                });
5404                fidl::decode!(
5405                    fidl::encoding::UnboundedVector<ChipMode>,
5406                    D,
5407                    val_ref,
5408                    decoder,
5409                    inner_offset,
5410                    inner_depth
5411                )?;
5412                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5413                {
5414                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5415                }
5416                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5417                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5418                }
5419            }
5420
5421            next_offset += envelope_size;
5422
5423            // Decode the remaining unknown envelopes.
5424            while next_offset < end_offset {
5425                _next_ordinal_to_read += 1;
5426                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5427                next_offset += envelope_size;
5428            }
5429
5430            Ok(())
5431        }
5432    }
5433
5434    impl WifiChipGetCapabilitiesResponse {
5435        #[inline(always)]
5436        fn max_ordinal_present(&self) -> u64 {
5437            if let Some(_) = self.capabilities_mask {
5438                return 1;
5439            }
5440            0
5441        }
5442    }
5443
5444    impl fidl::encoding::ValueTypeMarker for WifiChipGetCapabilitiesResponse {
5445        type Borrowed<'a> = &'a Self;
5446        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5447            value
5448        }
5449    }
5450
5451    unsafe impl fidl::encoding::TypeMarker for WifiChipGetCapabilitiesResponse {
5452        type Owned = Self;
5453
5454        #[inline(always)]
5455        fn inline_align(_context: fidl::encoding::Context) -> usize {
5456            8
5457        }
5458
5459        #[inline(always)]
5460        fn inline_size(_context: fidl::encoding::Context) -> usize {
5461            16
5462        }
5463    }
5464
5465    unsafe impl<D: fidl::encoding::ResourceDialect>
5466        fidl::encoding::Encode<WifiChipGetCapabilitiesResponse, D>
5467        for &WifiChipGetCapabilitiesResponse
5468    {
5469        unsafe fn encode(
5470            self,
5471            encoder: &mut fidl::encoding::Encoder<'_, D>,
5472            offset: usize,
5473            mut depth: fidl::encoding::Depth,
5474        ) -> fidl::Result<()> {
5475            encoder.debug_check_bounds::<WifiChipGetCapabilitiesResponse>(offset);
5476            // Vector header
5477            let max_ordinal: u64 = self.max_ordinal_present();
5478            encoder.write_num(max_ordinal, offset);
5479            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5480            // Calling encoder.out_of_line_offset(0) is not allowed.
5481            if max_ordinal == 0 {
5482                return Ok(());
5483            }
5484            depth.increment()?;
5485            let envelope_size = 8;
5486            let bytes_len = max_ordinal as usize * envelope_size;
5487            #[allow(unused_variables)]
5488            let offset = encoder.out_of_line_offset(bytes_len);
5489            let mut _prev_end_offset: usize = 0;
5490            if 1 > max_ordinal {
5491                return Ok(());
5492            }
5493
5494            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5495            // are envelope_size bytes.
5496            let cur_offset: usize = (1 - 1) * envelope_size;
5497
5498            // Zero reserved fields.
5499            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5500
5501            // Safety:
5502            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5503            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5504            //   envelope_size bytes, there is always sufficient room.
5505            fidl::encoding::encode_in_envelope_optional::<u32, D>(
5506                self.capabilities_mask
5507                    .as_ref()
5508                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5509                encoder,
5510                offset + cur_offset,
5511                depth,
5512            )?;
5513
5514            _prev_end_offset = cur_offset + envelope_size;
5515
5516            Ok(())
5517        }
5518    }
5519
5520    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5521        for WifiChipGetCapabilitiesResponse
5522    {
5523        #[inline(always)]
5524        fn new_empty() -> Self {
5525            Self::default()
5526        }
5527
5528        unsafe fn decode(
5529            &mut self,
5530            decoder: &mut fidl::encoding::Decoder<'_, D>,
5531            offset: usize,
5532            mut depth: fidl::encoding::Depth,
5533        ) -> fidl::Result<()> {
5534            decoder.debug_check_bounds::<Self>(offset);
5535            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5536                None => return Err(fidl::Error::NotNullable),
5537                Some(len) => len,
5538            };
5539            // Calling decoder.out_of_line_offset(0) is not allowed.
5540            if len == 0 {
5541                return Ok(());
5542            };
5543            depth.increment()?;
5544            let envelope_size = 8;
5545            let bytes_len = len * envelope_size;
5546            let offset = decoder.out_of_line_offset(bytes_len)?;
5547            // Decode the envelope for each type.
5548            let mut _next_ordinal_to_read = 0;
5549            let mut next_offset = offset;
5550            let end_offset = offset + bytes_len;
5551            _next_ordinal_to_read += 1;
5552            if next_offset >= end_offset {
5553                return Ok(());
5554            }
5555
5556            // Decode unknown envelopes for gaps in ordinals.
5557            while _next_ordinal_to_read < 1 {
5558                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5559                _next_ordinal_to_read += 1;
5560                next_offset += envelope_size;
5561            }
5562
5563            let next_out_of_line = decoder.next_out_of_line();
5564            let handles_before = decoder.remaining_handles();
5565            if let Some((inlined, num_bytes, num_handles)) =
5566                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5567            {
5568                let member_inline_size =
5569                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5570                if inlined != (member_inline_size <= 4) {
5571                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5572                }
5573                let inner_offset;
5574                let mut inner_depth = depth.clone();
5575                if inlined {
5576                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5577                    inner_offset = next_offset;
5578                } else {
5579                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5580                    inner_depth.increment()?;
5581                }
5582                let val_ref =
5583                    self.capabilities_mask.get_or_insert_with(|| fidl::new_empty!(u32, D));
5584                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
5585                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5586                {
5587                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5588                }
5589                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5590                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5591                }
5592            }
5593
5594            next_offset += envelope_size;
5595
5596            // Decode the remaining unknown envelopes.
5597            while next_offset < end_offset {
5598                _next_ordinal_to_read += 1;
5599                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5600                next_offset += envelope_size;
5601            }
5602
5603            Ok(())
5604        }
5605    }
5606
5607    impl WifiChipGetIdResponse {
5608        #[inline(always)]
5609        fn max_ordinal_present(&self) -> u64 {
5610            if let Some(_) = self.id {
5611                return 1;
5612            }
5613            0
5614        }
5615    }
5616
5617    impl fidl::encoding::ValueTypeMarker for WifiChipGetIdResponse {
5618        type Borrowed<'a> = &'a Self;
5619        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5620            value
5621        }
5622    }
5623
5624    unsafe impl fidl::encoding::TypeMarker for WifiChipGetIdResponse {
5625        type Owned = Self;
5626
5627        #[inline(always)]
5628        fn inline_align(_context: fidl::encoding::Context) -> usize {
5629            8
5630        }
5631
5632        #[inline(always)]
5633        fn inline_size(_context: fidl::encoding::Context) -> usize {
5634            16
5635        }
5636    }
5637
5638    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WifiChipGetIdResponse, D>
5639        for &WifiChipGetIdResponse
5640    {
5641        unsafe fn encode(
5642            self,
5643            encoder: &mut fidl::encoding::Encoder<'_, D>,
5644            offset: usize,
5645            mut depth: fidl::encoding::Depth,
5646        ) -> fidl::Result<()> {
5647            encoder.debug_check_bounds::<WifiChipGetIdResponse>(offset);
5648            // Vector header
5649            let max_ordinal: u64 = self.max_ordinal_present();
5650            encoder.write_num(max_ordinal, offset);
5651            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5652            // Calling encoder.out_of_line_offset(0) is not allowed.
5653            if max_ordinal == 0 {
5654                return Ok(());
5655            }
5656            depth.increment()?;
5657            let envelope_size = 8;
5658            let bytes_len = max_ordinal as usize * envelope_size;
5659            #[allow(unused_variables)]
5660            let offset = encoder.out_of_line_offset(bytes_len);
5661            let mut _prev_end_offset: usize = 0;
5662            if 1 > max_ordinal {
5663                return Ok(());
5664            }
5665
5666            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5667            // are envelope_size bytes.
5668            let cur_offset: usize = (1 - 1) * envelope_size;
5669
5670            // Zero reserved fields.
5671            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5672
5673            // Safety:
5674            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5675            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5676            //   envelope_size bytes, there is always sufficient room.
5677            fidl::encoding::encode_in_envelope_optional::<u32, D>(
5678                self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5679                encoder,
5680                offset + cur_offset,
5681                depth,
5682            )?;
5683
5684            _prev_end_offset = cur_offset + envelope_size;
5685
5686            Ok(())
5687        }
5688    }
5689
5690    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WifiChipGetIdResponse {
5691        #[inline(always)]
5692        fn new_empty() -> Self {
5693            Self::default()
5694        }
5695
5696        unsafe fn decode(
5697            &mut self,
5698            decoder: &mut fidl::encoding::Decoder<'_, D>,
5699            offset: usize,
5700            mut depth: fidl::encoding::Depth,
5701        ) -> fidl::Result<()> {
5702            decoder.debug_check_bounds::<Self>(offset);
5703            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5704                None => return Err(fidl::Error::NotNullable),
5705                Some(len) => len,
5706            };
5707            // Calling decoder.out_of_line_offset(0) is not allowed.
5708            if len == 0 {
5709                return Ok(());
5710            };
5711            depth.increment()?;
5712            let envelope_size = 8;
5713            let bytes_len = len * envelope_size;
5714            let offset = decoder.out_of_line_offset(bytes_len)?;
5715            // Decode the envelope for each type.
5716            let mut _next_ordinal_to_read = 0;
5717            let mut next_offset = offset;
5718            let end_offset = offset + bytes_len;
5719            _next_ordinal_to_read += 1;
5720            if next_offset >= end_offset {
5721                return Ok(());
5722            }
5723
5724            // Decode unknown envelopes for gaps in ordinals.
5725            while _next_ordinal_to_read < 1 {
5726                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5727                _next_ordinal_to_read += 1;
5728                next_offset += envelope_size;
5729            }
5730
5731            let next_out_of_line = decoder.next_out_of_line();
5732            let handles_before = decoder.remaining_handles();
5733            if let Some((inlined, num_bytes, num_handles)) =
5734                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5735            {
5736                let member_inline_size =
5737                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5738                if inlined != (member_inline_size <= 4) {
5739                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5740                }
5741                let inner_offset;
5742                let mut inner_depth = depth.clone();
5743                if inlined {
5744                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5745                    inner_offset = next_offset;
5746                } else {
5747                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5748                    inner_depth.increment()?;
5749                }
5750                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
5751                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
5752                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5753                {
5754                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5755                }
5756                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5757                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5758                }
5759            }
5760
5761            next_offset += envelope_size;
5762
5763            // Decode the remaining unknown envelopes.
5764            while next_offset < end_offset {
5765                _next_ordinal_to_read += 1;
5766                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5767                next_offset += envelope_size;
5768            }
5769
5770            Ok(())
5771        }
5772    }
5773
5774    impl WifiChipGetModeResponse {
5775        #[inline(always)]
5776        fn max_ordinal_present(&self) -> u64 {
5777            if let Some(_) = self.mode {
5778                return 1;
5779            }
5780            0
5781        }
5782    }
5783
5784    impl fidl::encoding::ValueTypeMarker for WifiChipGetModeResponse {
5785        type Borrowed<'a> = &'a Self;
5786        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5787            value
5788        }
5789    }
5790
5791    unsafe impl fidl::encoding::TypeMarker for WifiChipGetModeResponse {
5792        type Owned = Self;
5793
5794        #[inline(always)]
5795        fn inline_align(_context: fidl::encoding::Context) -> usize {
5796            8
5797        }
5798
5799        #[inline(always)]
5800        fn inline_size(_context: fidl::encoding::Context) -> usize {
5801            16
5802        }
5803    }
5804
5805    unsafe impl<D: fidl::encoding::ResourceDialect>
5806        fidl::encoding::Encode<WifiChipGetModeResponse, D> for &WifiChipGetModeResponse
5807    {
5808        unsafe fn encode(
5809            self,
5810            encoder: &mut fidl::encoding::Encoder<'_, D>,
5811            offset: usize,
5812            mut depth: fidl::encoding::Depth,
5813        ) -> fidl::Result<()> {
5814            encoder.debug_check_bounds::<WifiChipGetModeResponse>(offset);
5815            // Vector header
5816            let max_ordinal: u64 = self.max_ordinal_present();
5817            encoder.write_num(max_ordinal, offset);
5818            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5819            // Calling encoder.out_of_line_offset(0) is not allowed.
5820            if max_ordinal == 0 {
5821                return Ok(());
5822            }
5823            depth.increment()?;
5824            let envelope_size = 8;
5825            let bytes_len = max_ordinal as usize * envelope_size;
5826            #[allow(unused_variables)]
5827            let offset = encoder.out_of_line_offset(bytes_len);
5828            let mut _prev_end_offset: usize = 0;
5829            if 1 > max_ordinal {
5830                return Ok(());
5831            }
5832
5833            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5834            // are envelope_size bytes.
5835            let cur_offset: usize = (1 - 1) * envelope_size;
5836
5837            // Zero reserved fields.
5838            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5839
5840            // Safety:
5841            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5842            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5843            //   envelope_size bytes, there is always sufficient room.
5844            fidl::encoding::encode_in_envelope_optional::<u32, D>(
5845                self.mode.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5846                encoder,
5847                offset + cur_offset,
5848                depth,
5849            )?;
5850
5851            _prev_end_offset = cur_offset + envelope_size;
5852
5853            Ok(())
5854        }
5855    }
5856
5857    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5858        for WifiChipGetModeResponse
5859    {
5860        #[inline(always)]
5861        fn new_empty() -> Self {
5862            Self::default()
5863        }
5864
5865        unsafe fn decode(
5866            &mut self,
5867            decoder: &mut fidl::encoding::Decoder<'_, D>,
5868            offset: usize,
5869            mut depth: fidl::encoding::Depth,
5870        ) -> fidl::Result<()> {
5871            decoder.debug_check_bounds::<Self>(offset);
5872            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5873                None => return Err(fidl::Error::NotNullable),
5874                Some(len) => len,
5875            };
5876            // Calling decoder.out_of_line_offset(0) is not allowed.
5877            if len == 0 {
5878                return Ok(());
5879            };
5880            depth.increment()?;
5881            let envelope_size = 8;
5882            let bytes_len = len * envelope_size;
5883            let offset = decoder.out_of_line_offset(bytes_len)?;
5884            // Decode the envelope for each type.
5885            let mut _next_ordinal_to_read = 0;
5886            let mut next_offset = offset;
5887            let end_offset = offset + bytes_len;
5888            _next_ordinal_to_read += 1;
5889            if next_offset >= end_offset {
5890                return Ok(());
5891            }
5892
5893            // Decode unknown envelopes for gaps in ordinals.
5894            while _next_ordinal_to_read < 1 {
5895                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5896                _next_ordinal_to_read += 1;
5897                next_offset += envelope_size;
5898            }
5899
5900            let next_out_of_line = decoder.next_out_of_line();
5901            let handles_before = decoder.remaining_handles();
5902            if let Some((inlined, num_bytes, num_handles)) =
5903                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5904            {
5905                let member_inline_size =
5906                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5907                if inlined != (member_inline_size <= 4) {
5908                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5909                }
5910                let inner_offset;
5911                let mut inner_depth = depth.clone();
5912                if inlined {
5913                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5914                    inner_offset = next_offset;
5915                } else {
5916                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5917                    inner_depth.increment()?;
5918                }
5919                let val_ref = self.mode.get_or_insert_with(|| fidl::new_empty!(u32, D));
5920                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
5921                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5922                {
5923                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5924                }
5925                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5926                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5927                }
5928            }
5929
5930            next_offset += envelope_size;
5931
5932            // Decode the remaining unknown envelopes.
5933            while next_offset < end_offset {
5934                _next_ordinal_to_read += 1;
5935                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5936                next_offset += envelope_size;
5937            }
5938
5939            Ok(())
5940        }
5941    }
5942
5943    impl WifiChipGetStaIfaceNamesResponse {
5944        #[inline(always)]
5945        fn max_ordinal_present(&self) -> u64 {
5946            if let Some(_) = self.iface_names {
5947                return 1;
5948            }
5949            0
5950        }
5951    }
5952
5953    impl fidl::encoding::ValueTypeMarker for WifiChipGetStaIfaceNamesResponse {
5954        type Borrowed<'a> = &'a Self;
5955        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5956            value
5957        }
5958    }
5959
5960    unsafe impl fidl::encoding::TypeMarker for WifiChipGetStaIfaceNamesResponse {
5961        type Owned = Self;
5962
5963        #[inline(always)]
5964        fn inline_align(_context: fidl::encoding::Context) -> usize {
5965            8
5966        }
5967
5968        #[inline(always)]
5969        fn inline_size(_context: fidl::encoding::Context) -> usize {
5970            16
5971        }
5972    }
5973
5974    unsafe impl<D: fidl::encoding::ResourceDialect>
5975        fidl::encoding::Encode<WifiChipGetStaIfaceNamesResponse, D>
5976        for &WifiChipGetStaIfaceNamesResponse
5977    {
5978        unsafe fn encode(
5979            self,
5980            encoder: &mut fidl::encoding::Encoder<'_, D>,
5981            offset: usize,
5982            mut depth: fidl::encoding::Depth,
5983        ) -> fidl::Result<()> {
5984            encoder.debug_check_bounds::<WifiChipGetStaIfaceNamesResponse>(offset);
5985            // Vector header
5986            let max_ordinal: u64 = self.max_ordinal_present();
5987            encoder.write_num(max_ordinal, offset);
5988            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5989            // Calling encoder.out_of_line_offset(0) is not allowed.
5990            if max_ordinal == 0 {
5991                return Ok(());
5992            }
5993            depth.increment()?;
5994            let envelope_size = 8;
5995            let bytes_len = max_ordinal as usize * envelope_size;
5996            #[allow(unused_variables)]
5997            let offset = encoder.out_of_line_offset(bytes_len);
5998            let mut _prev_end_offset: usize = 0;
5999            if 1 > max_ordinal {
6000                return Ok(());
6001            }
6002
6003            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6004            // are envelope_size bytes.
6005            let cur_offset: usize = (1 - 1) * envelope_size;
6006
6007            // Zero reserved fields.
6008            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6009
6010            // Safety:
6011            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6012            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6013            //   envelope_size bytes, there is always sufficient room.
6014            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<16>>, D>(
6015            self.iface_names.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<16>> as fidl::encoding::ValueTypeMarker>::borrow),
6016            encoder, offset + cur_offset, depth
6017        )?;
6018
6019            _prev_end_offset = cur_offset + envelope_size;
6020
6021            Ok(())
6022        }
6023    }
6024
6025    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6026        for WifiChipGetStaIfaceNamesResponse
6027    {
6028        #[inline(always)]
6029        fn new_empty() -> Self {
6030            Self::default()
6031        }
6032
6033        unsafe fn decode(
6034            &mut self,
6035            decoder: &mut fidl::encoding::Decoder<'_, D>,
6036            offset: usize,
6037            mut depth: fidl::encoding::Depth,
6038        ) -> fidl::Result<()> {
6039            decoder.debug_check_bounds::<Self>(offset);
6040            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6041                None => return Err(fidl::Error::NotNullable),
6042                Some(len) => len,
6043            };
6044            // Calling decoder.out_of_line_offset(0) is not allowed.
6045            if len == 0 {
6046                return Ok(());
6047            };
6048            depth.increment()?;
6049            let envelope_size = 8;
6050            let bytes_len = len * envelope_size;
6051            let offset = decoder.out_of_line_offset(bytes_len)?;
6052            // Decode the envelope for each type.
6053            let mut _next_ordinal_to_read = 0;
6054            let mut next_offset = offset;
6055            let end_offset = offset + bytes_len;
6056            _next_ordinal_to_read += 1;
6057            if next_offset >= end_offset {
6058                return Ok(());
6059            }
6060
6061            // Decode unknown envelopes for gaps in ordinals.
6062            while _next_ordinal_to_read < 1 {
6063                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6064                _next_ordinal_to_read += 1;
6065                next_offset += envelope_size;
6066            }
6067
6068            let next_out_of_line = decoder.next_out_of_line();
6069            let handles_before = decoder.remaining_handles();
6070            if let Some((inlined, num_bytes, num_handles)) =
6071                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6072            {
6073                let member_inline_size = <fidl::encoding::UnboundedVector<
6074                    fidl::encoding::BoundedString<16>,
6075                > as fidl::encoding::TypeMarker>::inline_size(
6076                    decoder.context
6077                );
6078                if inlined != (member_inline_size <= 4) {
6079                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6080                }
6081                let inner_offset;
6082                let mut inner_depth = depth.clone();
6083                if inlined {
6084                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6085                    inner_offset = next_offset;
6086                } else {
6087                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6088                    inner_depth.increment()?;
6089                }
6090                let val_ref = self.iface_names.get_or_insert_with(|| {
6091                    fidl::new_empty!(
6092                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<16>>,
6093                        D
6094                    )
6095                });
6096                fidl::decode!(
6097                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<16>>,
6098                    D,
6099                    val_ref,
6100                    decoder,
6101                    inner_offset,
6102                    inner_depth
6103                )?;
6104                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6105                {
6106                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6107                }
6108                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6109                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6110                }
6111            }
6112
6113            next_offset += envelope_size;
6114
6115            // Decode the remaining unknown envelopes.
6116            while next_offset < end_offset {
6117                _next_ordinal_to_read += 1;
6118                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6119                next_offset += envelope_size;
6120            }
6121
6122            Ok(())
6123        }
6124    }
6125
6126    impl WifiStaIfaceGetNameResponse {
6127        #[inline(always)]
6128        fn max_ordinal_present(&self) -> u64 {
6129            if let Some(_) = self.iface_name {
6130                return 1;
6131            }
6132            0
6133        }
6134    }
6135
6136    impl fidl::encoding::ValueTypeMarker for WifiStaIfaceGetNameResponse {
6137        type Borrowed<'a> = &'a Self;
6138        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6139            value
6140        }
6141    }
6142
6143    unsafe impl fidl::encoding::TypeMarker for WifiStaIfaceGetNameResponse {
6144        type Owned = Self;
6145
6146        #[inline(always)]
6147        fn inline_align(_context: fidl::encoding::Context) -> usize {
6148            8
6149        }
6150
6151        #[inline(always)]
6152        fn inline_size(_context: fidl::encoding::Context) -> usize {
6153            16
6154        }
6155    }
6156
6157    unsafe impl<D: fidl::encoding::ResourceDialect>
6158        fidl::encoding::Encode<WifiStaIfaceGetNameResponse, D> for &WifiStaIfaceGetNameResponse
6159    {
6160        unsafe fn encode(
6161            self,
6162            encoder: &mut fidl::encoding::Encoder<'_, D>,
6163            offset: usize,
6164            mut depth: fidl::encoding::Depth,
6165        ) -> fidl::Result<()> {
6166            encoder.debug_check_bounds::<WifiStaIfaceGetNameResponse>(offset);
6167            // Vector header
6168            let max_ordinal: u64 = self.max_ordinal_present();
6169            encoder.write_num(max_ordinal, offset);
6170            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6171            // Calling encoder.out_of_line_offset(0) is not allowed.
6172            if max_ordinal == 0 {
6173                return Ok(());
6174            }
6175            depth.increment()?;
6176            let envelope_size = 8;
6177            let bytes_len = max_ordinal as usize * envelope_size;
6178            #[allow(unused_variables)]
6179            let offset = encoder.out_of_line_offset(bytes_len);
6180            let mut _prev_end_offset: usize = 0;
6181            if 1 > max_ordinal {
6182                return Ok(());
6183            }
6184
6185            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6186            // are envelope_size bytes.
6187            let cur_offset: usize = (1 - 1) * envelope_size;
6188
6189            // Zero reserved fields.
6190            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6191
6192            // Safety:
6193            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6194            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6195            //   envelope_size bytes, there is always sufficient room.
6196            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
6197                self.iface_name.as_ref().map(
6198                    <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
6199                ),
6200                encoder,
6201                offset + cur_offset,
6202                depth,
6203            )?;
6204
6205            _prev_end_offset = cur_offset + envelope_size;
6206
6207            Ok(())
6208        }
6209    }
6210
6211    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6212        for WifiStaIfaceGetNameResponse
6213    {
6214        #[inline(always)]
6215        fn new_empty() -> Self {
6216            Self::default()
6217        }
6218
6219        unsafe fn decode(
6220            &mut self,
6221            decoder: &mut fidl::encoding::Decoder<'_, D>,
6222            offset: usize,
6223            mut depth: fidl::encoding::Depth,
6224        ) -> fidl::Result<()> {
6225            decoder.debug_check_bounds::<Self>(offset);
6226            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6227                None => return Err(fidl::Error::NotNullable),
6228                Some(len) => len,
6229            };
6230            // Calling decoder.out_of_line_offset(0) is not allowed.
6231            if len == 0 {
6232                return Ok(());
6233            };
6234            depth.increment()?;
6235            let envelope_size = 8;
6236            let bytes_len = len * envelope_size;
6237            let offset = decoder.out_of_line_offset(bytes_len)?;
6238            // Decode the envelope for each type.
6239            let mut _next_ordinal_to_read = 0;
6240            let mut next_offset = offset;
6241            let end_offset = offset + bytes_len;
6242            _next_ordinal_to_read += 1;
6243            if next_offset >= end_offset {
6244                return Ok(());
6245            }
6246
6247            // Decode unknown envelopes for gaps in ordinals.
6248            while _next_ordinal_to_read < 1 {
6249                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6250                _next_ordinal_to_read += 1;
6251                next_offset += envelope_size;
6252            }
6253
6254            let next_out_of_line = decoder.next_out_of_line();
6255            let handles_before = decoder.remaining_handles();
6256            if let Some((inlined, num_bytes, num_handles)) =
6257                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6258            {
6259                let member_inline_size =
6260                    <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
6261                        decoder.context,
6262                    );
6263                if inlined != (member_inline_size <= 4) {
6264                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6265                }
6266                let inner_offset;
6267                let mut inner_depth = depth.clone();
6268                if inlined {
6269                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6270                    inner_offset = next_offset;
6271                } else {
6272                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6273                    inner_depth.increment()?;
6274                }
6275                let val_ref = self
6276                    .iface_name
6277                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
6278                fidl::decode!(
6279                    fidl::encoding::BoundedString<16>,
6280                    D,
6281                    val_ref,
6282                    decoder,
6283                    inner_offset,
6284                    inner_depth
6285                )?;
6286                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6287                {
6288                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6289                }
6290                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6291                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6292                }
6293            }
6294
6295            next_offset += envelope_size;
6296
6297            // Decode the remaining unknown envelopes.
6298            while next_offset < end_offset {
6299                _next_ordinal_to_read += 1;
6300                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6301                next_offset += envelope_size;
6302            }
6303
6304            Ok(())
6305        }
6306    }
6307
6308    impl WifiGetChipIdsResponse {
6309        #[inline(always)]
6310        fn max_ordinal_present(&self) -> u64 {
6311            if let Some(_) = self.chip_ids {
6312                return 1;
6313            }
6314            0
6315        }
6316    }
6317
6318    impl fidl::encoding::ValueTypeMarker for WifiGetChipIdsResponse {
6319        type Borrowed<'a> = &'a Self;
6320        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6321            value
6322        }
6323    }
6324
6325    unsafe impl fidl::encoding::TypeMarker for WifiGetChipIdsResponse {
6326        type Owned = Self;
6327
6328        #[inline(always)]
6329        fn inline_align(_context: fidl::encoding::Context) -> usize {
6330            8
6331        }
6332
6333        #[inline(always)]
6334        fn inline_size(_context: fidl::encoding::Context) -> usize {
6335            16
6336        }
6337    }
6338
6339    unsafe impl<D: fidl::encoding::ResourceDialect>
6340        fidl::encoding::Encode<WifiGetChipIdsResponse, D> for &WifiGetChipIdsResponse
6341    {
6342        unsafe fn encode(
6343            self,
6344            encoder: &mut fidl::encoding::Encoder<'_, D>,
6345            offset: usize,
6346            mut depth: fidl::encoding::Depth,
6347        ) -> fidl::Result<()> {
6348            encoder.debug_check_bounds::<WifiGetChipIdsResponse>(offset);
6349            // Vector header
6350            let max_ordinal: u64 = self.max_ordinal_present();
6351            encoder.write_num(max_ordinal, offset);
6352            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6353            // Calling encoder.out_of_line_offset(0) is not allowed.
6354            if max_ordinal == 0 {
6355                return Ok(());
6356            }
6357            depth.increment()?;
6358            let envelope_size = 8;
6359            let bytes_len = max_ordinal as usize * envelope_size;
6360            #[allow(unused_variables)]
6361            let offset = encoder.out_of_line_offset(bytes_len);
6362            let mut _prev_end_offset: usize = 0;
6363            if 1 > max_ordinal {
6364                return Ok(());
6365            }
6366
6367            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6368            // are envelope_size bytes.
6369            let cur_offset: usize = (1 - 1) * envelope_size;
6370
6371            // Zero reserved fields.
6372            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6373
6374            // Safety:
6375            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6376            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6377            //   envelope_size bytes, there is always sufficient room.
6378            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u32>, D>(
6379            self.chip_ids.as_ref().map(<fidl::encoding::UnboundedVector<u32> as fidl::encoding::ValueTypeMarker>::borrow),
6380            encoder, offset + cur_offset, depth
6381        )?;
6382
6383            _prev_end_offset = cur_offset + envelope_size;
6384
6385            Ok(())
6386        }
6387    }
6388
6389    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6390        for WifiGetChipIdsResponse
6391    {
6392        #[inline(always)]
6393        fn new_empty() -> Self {
6394            Self::default()
6395        }
6396
6397        unsafe fn decode(
6398            &mut self,
6399            decoder: &mut fidl::encoding::Decoder<'_, D>,
6400            offset: usize,
6401            mut depth: fidl::encoding::Depth,
6402        ) -> fidl::Result<()> {
6403            decoder.debug_check_bounds::<Self>(offset);
6404            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6405                None => return Err(fidl::Error::NotNullable),
6406                Some(len) => len,
6407            };
6408            // Calling decoder.out_of_line_offset(0) is not allowed.
6409            if len == 0 {
6410                return Ok(());
6411            };
6412            depth.increment()?;
6413            let envelope_size = 8;
6414            let bytes_len = len * envelope_size;
6415            let offset = decoder.out_of_line_offset(bytes_len)?;
6416            // Decode the envelope for each type.
6417            let mut _next_ordinal_to_read = 0;
6418            let mut next_offset = offset;
6419            let end_offset = offset + bytes_len;
6420            _next_ordinal_to_read += 1;
6421            if next_offset >= end_offset {
6422                return Ok(());
6423            }
6424
6425            // Decode unknown envelopes for gaps in ordinals.
6426            while _next_ordinal_to_read < 1 {
6427                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6428                _next_ordinal_to_read += 1;
6429                next_offset += envelope_size;
6430            }
6431
6432            let next_out_of_line = decoder.next_out_of_line();
6433            let handles_before = decoder.remaining_handles();
6434            if let Some((inlined, num_bytes, num_handles)) =
6435                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6436            {
6437                let member_inline_size = <fidl::encoding::UnboundedVector<u32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6438                if inlined != (member_inline_size <= 4) {
6439                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6440                }
6441                let inner_offset;
6442                let mut inner_depth = depth.clone();
6443                if inlined {
6444                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6445                    inner_offset = next_offset;
6446                } else {
6447                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6448                    inner_depth.increment()?;
6449                }
6450                let val_ref = self.chip_ids.get_or_insert_with(|| {
6451                    fidl::new_empty!(fidl::encoding::UnboundedVector<u32>, D)
6452                });
6453                fidl::decode!(
6454                    fidl::encoding::UnboundedVector<u32>,
6455                    D,
6456                    val_ref,
6457                    decoder,
6458                    inner_offset,
6459                    inner_depth
6460                )?;
6461                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6462                {
6463                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6464                }
6465                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6466                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6467                }
6468            }
6469
6470            next_offset += envelope_size;
6471
6472            // Decode the remaining unknown envelopes.
6473            while next_offset < end_offset {
6474                _next_ordinal_to_read += 1;
6475                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6476                next_offset += envelope_size;
6477            }
6478
6479            Ok(())
6480        }
6481    }
6482
6483    impl WifiGetStateResponse {
6484        #[inline(always)]
6485        fn max_ordinal_present(&self) -> u64 {
6486            if let Some(_) = self.is_started {
6487                return 1;
6488            }
6489            0
6490        }
6491    }
6492
6493    impl fidl::encoding::ValueTypeMarker for WifiGetStateResponse {
6494        type Borrowed<'a> = &'a Self;
6495        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6496            value
6497        }
6498    }
6499
6500    unsafe impl fidl::encoding::TypeMarker for WifiGetStateResponse {
6501        type Owned = Self;
6502
6503        #[inline(always)]
6504        fn inline_align(_context: fidl::encoding::Context) -> usize {
6505            8
6506        }
6507
6508        #[inline(always)]
6509        fn inline_size(_context: fidl::encoding::Context) -> usize {
6510            16
6511        }
6512    }
6513
6514    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WifiGetStateResponse, D>
6515        for &WifiGetStateResponse
6516    {
6517        unsafe fn encode(
6518            self,
6519            encoder: &mut fidl::encoding::Encoder<'_, D>,
6520            offset: usize,
6521            mut depth: fidl::encoding::Depth,
6522        ) -> fidl::Result<()> {
6523            encoder.debug_check_bounds::<WifiGetStateResponse>(offset);
6524            // Vector header
6525            let max_ordinal: u64 = self.max_ordinal_present();
6526            encoder.write_num(max_ordinal, offset);
6527            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6528            // Calling encoder.out_of_line_offset(0) is not allowed.
6529            if max_ordinal == 0 {
6530                return Ok(());
6531            }
6532            depth.increment()?;
6533            let envelope_size = 8;
6534            let bytes_len = max_ordinal as usize * envelope_size;
6535            #[allow(unused_variables)]
6536            let offset = encoder.out_of_line_offset(bytes_len);
6537            let mut _prev_end_offset: usize = 0;
6538            if 1 > max_ordinal {
6539                return Ok(());
6540            }
6541
6542            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6543            // are envelope_size bytes.
6544            let cur_offset: usize = (1 - 1) * envelope_size;
6545
6546            // Zero reserved fields.
6547            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6548
6549            // Safety:
6550            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6551            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6552            //   envelope_size bytes, there is always sufficient room.
6553            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6554                self.is_started.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6555                encoder,
6556                offset + cur_offset,
6557                depth,
6558            )?;
6559
6560            _prev_end_offset = cur_offset + envelope_size;
6561
6562            Ok(())
6563        }
6564    }
6565
6566    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WifiGetStateResponse {
6567        #[inline(always)]
6568        fn new_empty() -> Self {
6569            Self::default()
6570        }
6571
6572        unsafe fn decode(
6573            &mut self,
6574            decoder: &mut fidl::encoding::Decoder<'_, D>,
6575            offset: usize,
6576            mut depth: fidl::encoding::Depth,
6577        ) -> fidl::Result<()> {
6578            decoder.debug_check_bounds::<Self>(offset);
6579            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6580                None => return Err(fidl::Error::NotNullable),
6581                Some(len) => len,
6582            };
6583            // Calling decoder.out_of_line_offset(0) is not allowed.
6584            if len == 0 {
6585                return Ok(());
6586            };
6587            depth.increment()?;
6588            let envelope_size = 8;
6589            let bytes_len = len * envelope_size;
6590            let offset = decoder.out_of_line_offset(bytes_len)?;
6591            // Decode the envelope for each type.
6592            let mut _next_ordinal_to_read = 0;
6593            let mut next_offset = offset;
6594            let end_offset = offset + bytes_len;
6595            _next_ordinal_to_read += 1;
6596            if next_offset >= end_offset {
6597                return Ok(());
6598            }
6599
6600            // Decode unknown envelopes for gaps in ordinals.
6601            while _next_ordinal_to_read < 1 {
6602                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6603                _next_ordinal_to_read += 1;
6604                next_offset += envelope_size;
6605            }
6606
6607            let next_out_of_line = decoder.next_out_of_line();
6608            let handles_before = decoder.remaining_handles();
6609            if let Some((inlined, num_bytes, num_handles)) =
6610                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6611            {
6612                let member_inline_size =
6613                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6614                if inlined != (member_inline_size <= 4) {
6615                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6616                }
6617                let inner_offset;
6618                let mut inner_depth = depth.clone();
6619                if inlined {
6620                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6621                    inner_offset = next_offset;
6622                } else {
6623                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6624                    inner_depth.increment()?;
6625                }
6626                let val_ref = self.is_started.get_or_insert_with(|| fidl::new_empty!(bool, D));
6627                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6628                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6629                {
6630                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6631                }
6632                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6633                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6634                }
6635            }
6636
6637            next_offset += envelope_size;
6638
6639            // Decode the remaining unknown envelopes.
6640            while next_offset < end_offset {
6641                _next_ordinal_to_read += 1;
6642                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6643                next_offset += envelope_size;
6644            }
6645
6646            Ok(())
6647        }
6648    }
6649}