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