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 IfaceConcurrencyType {
13    Sta,
14    Ap,
15    ApBridged,
16    P2P,
17    NanIface,
18    #[doc(hidden)]
19    __SourceBreaking {
20        unknown_ordinal: u32,
21    },
22}
23
24/// Pattern that matches an unknown `IfaceConcurrencyType` member.
25#[macro_export]
26macro_rules! IfaceConcurrencyTypeUnknown {
27    () => {
28        _
29    };
30}
31
32impl IfaceConcurrencyType {
33    #[inline]
34    pub fn from_primitive(prim: u32) -> Option<Self> {
35        match prim {
36            1 => Some(Self::Sta),
37            2 => Some(Self::Ap),
38            3 => Some(Self::ApBridged),
39            4 => Some(Self::P2P),
40            5 => Some(Self::NanIface),
41            _ => None,
42        }
43    }
44
45    #[inline]
46    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
47        match prim {
48            1 => Self::Sta,
49            2 => Self::Ap,
50            3 => Self::ApBridged,
51            4 => Self::P2P,
52            5 => Self::NanIface,
53            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
54        }
55    }
56
57    #[inline]
58    pub fn unknown() -> Self {
59        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
60    }
61
62    #[inline]
63    pub const fn into_primitive(self) -> u32 {
64        match self {
65            Self::Sta => 1,
66            Self::Ap => 2,
67            Self::ApBridged => 3,
68            Self::P2P => 4,
69            Self::NanIface => 5,
70            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
71        }
72    }
73
74    #[inline]
75    pub fn is_unknown(&self) -> bool {
76        match self {
77            Self::__SourceBreaking { unknown_ordinal: _ } => true,
78            _ => false,
79        }
80    }
81}
82
83#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
84pub enum Nl80211MessageType {
85    Done,
86    Error,
87    Ack,
88    NoOp,
89    Overrun,
90    Message,
91    #[doc(hidden)]
92    __SourceBreaking {
93        unknown_ordinal: u32,
94    },
95}
96
97/// Pattern that matches an unknown `Nl80211MessageType` member.
98#[macro_export]
99macro_rules! Nl80211MessageTypeUnknown {
100    () => {
101        _
102    };
103}
104
105impl Nl80211MessageType {
106    #[inline]
107    pub fn from_primitive(prim: u32) -> Option<Self> {
108        match prim {
109            1 => Some(Self::Done),
110            2 => Some(Self::Error),
111            3 => Some(Self::Ack),
112            4 => Some(Self::NoOp),
113            5 => Some(Self::Overrun),
114            6 => Some(Self::Message),
115            _ => None,
116        }
117    }
118
119    #[inline]
120    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
121        match prim {
122            1 => Self::Done,
123            2 => Self::Error,
124            3 => Self::Ack,
125            4 => Self::NoOp,
126            5 => Self::Overrun,
127            6 => Self::Message,
128            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
129        }
130    }
131
132    #[inline]
133    pub fn unknown() -> Self {
134        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
135    }
136
137    #[inline]
138    pub const fn into_primitive(self) -> u32 {
139        match self {
140            Self::Done => 1,
141            Self::Error => 2,
142            Self::Ack => 3,
143            Self::NoOp => 4,
144            Self::Overrun => 5,
145            Self::Message => 6,
146            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
147        }
148    }
149
150    #[inline]
151    pub fn is_unknown(&self) -> bool {
152        match self {
153            Self::__SourceBreaking { unknown_ordinal: _ } => true,
154            _ => false,
155        }
156    }
157}
158
159#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
160pub enum StaIfaceCallbackState {
161    Disconnected,
162    IfaceDisabled,
163    Inactive,
164    Scanning,
165    Authenticating,
166    Associating,
167    Associated,
168    FourwayHandshake,
169    GroupHandshake,
170    Completed,
171    #[doc(hidden)]
172    __SourceBreaking {
173        unknown_ordinal: u32,
174    },
175}
176
177/// Pattern that matches an unknown `StaIfaceCallbackState` member.
178#[macro_export]
179macro_rules! StaIfaceCallbackStateUnknown {
180    () => {
181        _
182    };
183}
184
185impl StaIfaceCallbackState {
186    #[inline]
187    pub fn from_primitive(prim: u32) -> Option<Self> {
188        match prim {
189            0 => Some(Self::Disconnected),
190            1 => Some(Self::IfaceDisabled),
191            2 => Some(Self::Inactive),
192            3 => Some(Self::Scanning),
193            4 => Some(Self::Authenticating),
194            5 => Some(Self::Associating),
195            6 => Some(Self::Associated),
196            7 => Some(Self::FourwayHandshake),
197            8 => Some(Self::GroupHandshake),
198            9 => Some(Self::Completed),
199            _ => None,
200        }
201    }
202
203    #[inline]
204    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
205        match prim {
206            0 => Self::Disconnected,
207            1 => Self::IfaceDisabled,
208            2 => Self::Inactive,
209            3 => Self::Scanning,
210            4 => Self::Authenticating,
211            5 => Self::Associating,
212            6 => Self::Associated,
213            7 => Self::FourwayHandshake,
214            8 => Self::GroupHandshake,
215            9 => Self::Completed,
216            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
217        }
218    }
219
220    #[inline]
221    pub fn unknown() -> Self {
222        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
223    }
224
225    #[inline]
226    pub const fn into_primitive(self) -> u32 {
227        match self {
228            Self::Disconnected => 0,
229            Self::IfaceDisabled => 1,
230            Self::Inactive => 2,
231            Self::Scanning => 3,
232            Self::Authenticating => 4,
233            Self::Associating => 5,
234            Self::Associated => 6,
235            Self::FourwayHandshake => 7,
236            Self::GroupHandshake => 8,
237            Self::Completed => 9,
238            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
239        }
240    }
241
242    #[inline]
243    pub fn is_unknown(&self) -> bool {
244        match self {
245            Self::__SourceBreaking { unknown_ordinal: _ } => true,
246            _ => false,
247        }
248    }
249}
250
251#[derive(Clone, Debug, PartialEq)]
252pub struct Nl80211MessageArray {
253    pub messages: Vec<Nl80211Message>,
254}
255
256impl fidl::Persistable for Nl80211MessageArray {}
257
258#[derive(Clone, Debug, Default, PartialEq)]
259pub struct ChipConcurrencyCombination {
260    pub limits: Option<Vec<ChipConcurrencyCombinationLimit>>,
261    #[doc(hidden)]
262    pub __source_breaking: fidl::marker::SourceBreaking,
263}
264
265impl fidl::Persistable for ChipConcurrencyCombination {}
266
267#[derive(Clone, Debug, Default, PartialEq)]
268pub struct ChipConcurrencyCombinationLimit {
269    pub types: Option<Vec<IfaceConcurrencyType>>,
270    pub max_ifaces: Option<u32>,
271    #[doc(hidden)]
272    pub __source_breaking: fidl::marker::SourceBreaking,
273}
274
275impl fidl::Persistable for ChipConcurrencyCombinationLimit {}
276
277#[derive(Clone, Debug, Default, PartialEq)]
278pub struct ChipMode {
279    pub id: Option<u32>,
280    pub available_combinations: Option<Vec<ChipConcurrencyCombination>>,
281    #[doc(hidden)]
282    pub __source_breaking: fidl::marker::SourceBreaking,
283}
284
285impl fidl::Persistable for ChipMode {}
286
287#[derive(Clone, Debug, Default, PartialEq)]
288pub struct Nl80211Message {
289    pub message_type: Option<Nl80211MessageType>,
290    pub payload: Option<Vec<u8>>,
291    #[doc(hidden)]
292    pub __source_breaking: fidl::marker::SourceBreaking,
293}
294
295impl fidl::Persistable for Nl80211Message {}
296
297#[derive(Clone, Debug, Default, PartialEq)]
298pub struct SupplicantStaIfaceCallbackOnAssociationRejectedRequest {
299    pub ssid: Option<Vec<u8>>,
300    pub bssid: Option<[u8; 6]>,
301    pub status_code: Option<fidl_fuchsia_wlan_ieee80211__common::StatusCode>,
302    pub timed_out: Option<bool>,
303    #[doc(hidden)]
304    pub __source_breaking: fidl::marker::SourceBreaking,
305}
306
307impl fidl::Persistable for SupplicantStaIfaceCallbackOnAssociationRejectedRequest {}
308
309#[derive(Clone, Debug, Default, PartialEq)]
310pub struct SupplicantStaIfaceCallbackOnDisconnectedRequest {
311    pub bssid: Option<[u8; 6]>,
312    pub locally_generated: Option<bool>,
313    pub reason_code: Option<fidl_fuchsia_wlan_ieee80211__common::ReasonCode>,
314    #[doc(hidden)]
315    pub __source_breaking: fidl::marker::SourceBreaking,
316}
317
318impl fidl::Persistable for SupplicantStaIfaceCallbackOnDisconnectedRequest {}
319
320#[derive(Clone, Debug, Default, PartialEq)]
321pub struct SupplicantStaIfaceCallbackOnStateChangedRequest {
322    pub new_state: Option<StaIfaceCallbackState>,
323    pub bssid: Option<[u8; 6]>,
324    pub id: Option<u32>,
325    pub ssid: Option<Vec<u8>>,
326    #[doc(hidden)]
327    pub __source_breaking: fidl::marker::SourceBreaking,
328}
329
330impl fidl::Persistable for SupplicantStaIfaceCallbackOnStateChangedRequest {}
331
332#[derive(Clone, Debug, Default, PartialEq)]
333pub struct SupplicantStaIfaceGetMacAddressResponse {
334    pub mac_addr: Option<[u8; 6]>,
335    #[doc(hidden)]
336    pub __source_breaking: fidl::marker::SourceBreaking,
337}
338
339impl fidl::Persistable for SupplicantStaIfaceGetMacAddressResponse {}
340
341#[derive(Clone, Debug, Default, PartialEq)]
342pub struct SupplicantStaNetworkSetBssidRequest {
343    pub bssid: Option<[u8; 6]>,
344    #[doc(hidden)]
345    pub __source_breaking: fidl::marker::SourceBreaking,
346}
347
348impl fidl::Persistable for SupplicantStaNetworkSetBssidRequest {}
349
350#[derive(Clone, Debug, Default, PartialEq)]
351pub struct SupplicantStaNetworkSetPskPassphraseRequest {
352    pub passphrase: Option<Vec<u8>>,
353    #[doc(hidden)]
354    pub __source_breaking: fidl::marker::SourceBreaking,
355}
356
357impl fidl::Persistable for SupplicantStaNetworkSetPskPassphraseRequest {}
358
359#[derive(Clone, Debug, Default, PartialEq)]
360pub struct SupplicantStaNetworkSetSsidRequest {
361    pub ssid: Option<Vec<u8>>,
362    #[doc(hidden)]
363    pub __source_breaking: fidl::marker::SourceBreaking,
364}
365
366impl fidl::Persistable for SupplicantStaNetworkSetSsidRequest {}
367
368#[derive(Clone, Debug, Default, PartialEq)]
369pub struct SupplicantStaNetworkSetWepKeyRequest {
370    pub key: Option<Vec<u8>>,
371    pub key_idx: Option<i32>,
372    #[doc(hidden)]
373    pub __source_breaking: fidl::marker::SourceBreaking,
374}
375
376impl fidl::Persistable for SupplicantStaNetworkSetWepKeyRequest {}
377
378#[derive(Clone, Debug, Default, PartialEq)]
379pub struct SupplicantStaNetworkSetWepTxKeyIdxRequest {
380    pub key_idx: Option<i32>,
381    #[doc(hidden)]
382    pub __source_breaking: fidl::marker::SourceBreaking,
383}
384
385impl fidl::Persistable for SupplicantStaNetworkSetWepTxKeyIdxRequest {}
386
387#[derive(Clone, Debug, Default, PartialEq)]
388pub struct WifiChipGetAvailableModesResponse {
389    pub chip_modes: Option<Vec<ChipMode>>,
390    #[doc(hidden)]
391    pub __source_breaking: fidl::marker::SourceBreaking,
392}
393
394impl fidl::Persistable for WifiChipGetAvailableModesResponse {}
395
396#[derive(Clone, Debug, Default, PartialEq)]
397pub struct WifiChipGetCapabilitiesResponse {
398    pub capabilities_mask: Option<u32>,
399    #[doc(hidden)]
400    pub __source_breaking: fidl::marker::SourceBreaking,
401}
402
403impl fidl::Persistable for WifiChipGetCapabilitiesResponse {}
404
405#[derive(Clone, Debug, Default, PartialEq)]
406pub struct WifiChipGetIdResponse {
407    pub id: Option<u32>,
408    #[doc(hidden)]
409    pub __source_breaking: fidl::marker::SourceBreaking,
410}
411
412impl fidl::Persistable for WifiChipGetIdResponse {}
413
414#[derive(Clone, Debug, Default, PartialEq)]
415pub struct WifiChipGetModeResponse {
416    pub mode: Option<u32>,
417    #[doc(hidden)]
418    pub __source_breaking: fidl::marker::SourceBreaking,
419}
420
421impl fidl::Persistable for WifiChipGetModeResponse {}
422
423#[derive(Clone, Debug, Default, PartialEq)]
424pub struct WifiChipGetStaIfaceNamesResponse {
425    pub iface_names: Option<Vec<String>>,
426    #[doc(hidden)]
427    pub __source_breaking: fidl::marker::SourceBreaking,
428}
429
430impl fidl::Persistable for WifiChipGetStaIfaceNamesResponse {}
431
432#[derive(Clone, Debug, Default, PartialEq)]
433pub struct WifiStaIfaceGetNameResponse {
434    pub iface_name: Option<String>,
435    #[doc(hidden)]
436    pub __source_breaking: fidl::marker::SourceBreaking,
437}
438
439impl fidl::Persistable for WifiStaIfaceGetNameResponse {}
440
441#[derive(Clone, Debug, Default, PartialEq)]
442pub struct WifiGetChipIdsResponse {
443    pub chip_ids: Option<Vec<u32>>,
444    #[doc(hidden)]
445    pub __source_breaking: fidl::marker::SourceBreaking,
446}
447
448impl fidl::Persistable for WifiGetChipIdsResponse {}
449
450#[derive(Clone, Debug, Default, PartialEq)]
451pub struct WifiGetStateResponse {
452    pub is_started: Option<bool>,
453    #[doc(hidden)]
454    pub __source_breaking: fidl::marker::SourceBreaking,
455}
456
457impl fidl::Persistable for WifiGetStateResponse {}
458
459pub mod nl80211_ordinals {
460    pub const GET_MULTICAST: u64 = 0x58b73dd089681dc2;
461    pub const MESSAGE: u64 = 0x6336259e15bb3795;
462    pub const MESSAGE_V2: u64 = 0x4626796aba1e2987;
463}
464
465pub mod nl80211_multicast_ordinals {
466    pub const MESSAGE: u64 = 0x4cc9241f302f16c0;
467}
468
469pub mod supplicant_ordinals {
470    pub const ADD_STA_INTERFACE: u64 = 0x73194b2afe9b367e;
471    pub const REMOVE_INTERFACE: u64 = 0x7f83e5b75b27d242;
472}
473
474pub mod supplicant_sta_iface_ordinals {
475    pub const REGISTER_CALLBACK: u64 = 0x1be680e863a8e71;
476    pub const ADD_NETWORK: u64 = 0xa77cf60628766dc;
477    pub const DISCONNECT: u64 = 0x52a1d38e0b4871fa;
478    pub const GET_MAC_ADDRESS: u64 = 0x60591d204a3f537f;
479    pub const SET_POWER_SAVE: u64 = 0x5a04c29320085298;
480    pub const SET_SUSPEND_MODE_ENABLED: u64 = 0xaf10de85bb7023a;
481    pub const SET_STA_COUNTRY_CODE: u64 = 0x977e22f9b79b26e;
482}
483
484pub mod supplicant_sta_iface_callback_ordinals {
485    pub const ON_STATE_CHANGED: u64 = 0x27e086d26c49eb6c;
486    pub const ON_DISCONNECTED: u64 = 0x69546475f4dee0cc;
487    pub const ON_ASSOCIATION_REJECTED: u64 = 0x7ef3961518bed988;
488}
489
490pub mod supplicant_sta_network_ordinals {
491    pub const SET_BSSID: u64 = 0x10a91d044ee6374d;
492    pub const CLEAR_BSSID: u64 = 0xbc7ad82f541b267;
493    pub const SET_SSID: u64 = 0x6b598a7a802e3083;
494    pub const SET_PSK_PASSPHRASE: u64 = 0xf6d438225979307;
495    pub const SET_WEP_KEY: u64 = 0x22a7e25ec81f2dee;
496    pub const SET_WEP_TX_KEY_IDX: u64 = 0x4f25576c21fcb8cb;
497    pub const SELECT: u64 = 0x354bc361a0c77b45;
498}
499
500pub mod wifi_ordinals {
501    pub const REGISTER_EVENT_CALLBACK: u64 = 0x12abbdea948dd67b;
502    pub const START: u64 = 0x427030e4dc6ec07a;
503    pub const STOP: u64 = 0x67c9bdf61b2888d;
504    pub const GET_STATE: u64 = 0x4616114a937d1fb0;
505    pub const GET_CHIP_IDS: u64 = 0x2fb4f92351d802b5;
506    pub const GET_CHIP: u64 = 0xef95d8246612540;
507}
508
509pub mod wifi_chip_ordinals {
510    pub const CREATE_STA_IFACE: u64 = 0x6fb2d5892face7af;
511    pub const GET_STA_IFACE_NAMES: u64 = 0x349257482df6a000;
512    pub const GET_STA_IFACE: u64 = 0x6d9704eeb36f28a2;
513    pub const REMOVE_STA_IFACE: u64 = 0x4cd8eee466f8b04c;
514    pub const SET_COUNTRY_CODE: u64 = 0x1dfe372d1d61a490;
515    pub const GET_AVAILABLE_MODES: u64 = 0x1701095b452a3acd;
516    pub const GET_ID: u64 = 0x37d5197325bb3370;
517    pub const GET_MODE: u64 = 0x4d209e0f3ac84d6f;
518    pub const GET_CAPABILITIES: u64 = 0x1b253f396dcaa2e0;
519    pub const TRIGGER_SUBSYSTEM_RESTART: u64 = 0x42ffcae5aad196f9;
520}
521
522pub mod wifi_event_callback_ordinals {
523    pub const ON_START: u64 = 0x61189ff44f9d35f3;
524    pub const ON_STOP: u64 = 0x58b697bcd475e0f9;
525}
526
527pub mod wifi_sta_iface_ordinals {
528    pub const GET_NAME: u64 = 0x5c150b91c80c5789;
529}
530
531pub mod wlanix_ordinals {
532    pub const GET_WIFI: u64 = 0x142511f44b2c338c;
533    pub const GET_SUPPLICANT: u64 = 0x55554b37c4021d3d;
534    pub const GET_NL80211: u64 = 0x48028a25bd855ef9;
535}
536
537mod internal {
538    use super::*;
539    unsafe impl fidl::encoding::TypeMarker for IfaceConcurrencyType {
540        type Owned = Self;
541
542        #[inline(always)]
543        fn inline_align(_context: fidl::encoding::Context) -> usize {
544            std::mem::align_of::<u32>()
545        }
546
547        #[inline(always)]
548        fn inline_size(_context: fidl::encoding::Context) -> usize {
549            std::mem::size_of::<u32>()
550        }
551
552        #[inline(always)]
553        fn encode_is_copy() -> bool {
554            false
555        }
556
557        #[inline(always)]
558        fn decode_is_copy() -> bool {
559            false
560        }
561    }
562
563    impl fidl::encoding::ValueTypeMarker for IfaceConcurrencyType {
564        type Borrowed<'a> = Self;
565        #[inline(always)]
566        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
567            *value
568        }
569    }
570
571    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
572        for IfaceConcurrencyType
573    {
574        #[inline]
575        unsafe fn encode(
576            self,
577            encoder: &mut fidl::encoding::Encoder<'_, D>,
578            offset: usize,
579            _depth: fidl::encoding::Depth,
580        ) -> fidl::Result<()> {
581            encoder.debug_check_bounds::<Self>(offset);
582            encoder.write_num(self.into_primitive(), offset);
583            Ok(())
584        }
585    }
586
587    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IfaceConcurrencyType {
588        #[inline(always)]
589        fn new_empty() -> Self {
590            Self::unknown()
591        }
592
593        #[inline]
594        unsafe fn decode(
595            &mut self,
596            decoder: &mut fidl::encoding::Decoder<'_, D>,
597            offset: usize,
598            _depth: fidl::encoding::Depth,
599        ) -> fidl::Result<()> {
600            decoder.debug_check_bounds::<Self>(offset);
601            let prim = decoder.read_num::<u32>(offset);
602
603            *self = Self::from_primitive_allow_unknown(prim);
604            Ok(())
605        }
606    }
607    unsafe impl fidl::encoding::TypeMarker for Nl80211MessageType {
608        type Owned = Self;
609
610        #[inline(always)]
611        fn inline_align(_context: fidl::encoding::Context) -> usize {
612            std::mem::align_of::<u32>()
613        }
614
615        #[inline(always)]
616        fn inline_size(_context: fidl::encoding::Context) -> usize {
617            std::mem::size_of::<u32>()
618        }
619
620        #[inline(always)]
621        fn encode_is_copy() -> bool {
622            false
623        }
624
625        #[inline(always)]
626        fn decode_is_copy() -> bool {
627            false
628        }
629    }
630
631    impl fidl::encoding::ValueTypeMarker for Nl80211MessageType {
632        type Borrowed<'a> = Self;
633        #[inline(always)]
634        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
635            *value
636        }
637    }
638
639    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
640        for Nl80211MessageType
641    {
642        #[inline]
643        unsafe fn encode(
644            self,
645            encoder: &mut fidl::encoding::Encoder<'_, D>,
646            offset: usize,
647            _depth: fidl::encoding::Depth,
648        ) -> fidl::Result<()> {
649            encoder.debug_check_bounds::<Self>(offset);
650            encoder.write_num(self.into_primitive(), offset);
651            Ok(())
652        }
653    }
654
655    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nl80211MessageType {
656        #[inline(always)]
657        fn new_empty() -> Self {
658            Self::unknown()
659        }
660
661        #[inline]
662        unsafe fn decode(
663            &mut self,
664            decoder: &mut fidl::encoding::Decoder<'_, D>,
665            offset: usize,
666            _depth: fidl::encoding::Depth,
667        ) -> fidl::Result<()> {
668            decoder.debug_check_bounds::<Self>(offset);
669            let prim = decoder.read_num::<u32>(offset);
670
671            *self = Self::from_primitive_allow_unknown(prim);
672            Ok(())
673        }
674    }
675    unsafe impl fidl::encoding::TypeMarker for StaIfaceCallbackState {
676        type Owned = Self;
677
678        #[inline(always)]
679        fn inline_align(_context: fidl::encoding::Context) -> usize {
680            std::mem::align_of::<u32>()
681        }
682
683        #[inline(always)]
684        fn inline_size(_context: fidl::encoding::Context) -> usize {
685            std::mem::size_of::<u32>()
686        }
687
688        #[inline(always)]
689        fn encode_is_copy() -> bool {
690            false
691        }
692
693        #[inline(always)]
694        fn decode_is_copy() -> bool {
695            false
696        }
697    }
698
699    impl fidl::encoding::ValueTypeMarker for StaIfaceCallbackState {
700        type Borrowed<'a> = Self;
701        #[inline(always)]
702        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
703            *value
704        }
705    }
706
707    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
708        for StaIfaceCallbackState
709    {
710        #[inline]
711        unsafe fn encode(
712            self,
713            encoder: &mut fidl::encoding::Encoder<'_, D>,
714            offset: usize,
715            _depth: fidl::encoding::Depth,
716        ) -> fidl::Result<()> {
717            encoder.debug_check_bounds::<Self>(offset);
718            encoder.write_num(self.into_primitive(), offset);
719            Ok(())
720        }
721    }
722
723    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StaIfaceCallbackState {
724        #[inline(always)]
725        fn new_empty() -> Self {
726            Self::unknown()
727        }
728
729        #[inline]
730        unsafe fn decode(
731            &mut self,
732            decoder: &mut fidl::encoding::Decoder<'_, D>,
733            offset: usize,
734            _depth: fidl::encoding::Depth,
735        ) -> fidl::Result<()> {
736            decoder.debug_check_bounds::<Self>(offset);
737            let prim = decoder.read_num::<u32>(offset);
738
739            *self = Self::from_primitive_allow_unknown(prim);
740            Ok(())
741        }
742    }
743
744    impl fidl::encoding::ValueTypeMarker for Nl80211MessageArray {
745        type Borrowed<'a> = &'a Self;
746        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
747            value
748        }
749    }
750
751    unsafe impl fidl::encoding::TypeMarker for Nl80211MessageArray {
752        type Owned = Self;
753
754        #[inline(always)]
755        fn inline_align(_context: fidl::encoding::Context) -> usize {
756            8
757        }
758
759        #[inline(always)]
760        fn inline_size(_context: fidl::encoding::Context) -> usize {
761            16
762        }
763    }
764
765    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nl80211MessageArray, D>
766        for &Nl80211MessageArray
767    {
768        #[inline]
769        unsafe fn encode(
770            self,
771            encoder: &mut fidl::encoding::Encoder<'_, D>,
772            offset: usize,
773            _depth: fidl::encoding::Depth,
774        ) -> fidl::Result<()> {
775            encoder.debug_check_bounds::<Nl80211MessageArray>(offset);
776            // Delegate to tuple encoding.
777            fidl::encoding::Encode::<Nl80211MessageArray, D>::encode(
778                (
779                    <fidl::encoding::UnboundedVector<Nl80211Message> as fidl::encoding::ValueTypeMarker>::borrow(&self.messages),
780                ),
781                encoder, offset, _depth
782            )
783        }
784    }
785    unsafe impl<
786        D: fidl::encoding::ResourceDialect,
787        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Nl80211Message>, D>,
788    > fidl::encoding::Encode<Nl80211MessageArray, D> for (T0,)
789    {
790        #[inline]
791        unsafe fn encode(
792            self,
793            encoder: &mut fidl::encoding::Encoder<'_, D>,
794            offset: usize,
795            depth: fidl::encoding::Depth,
796        ) -> fidl::Result<()> {
797            encoder.debug_check_bounds::<Nl80211MessageArray>(offset);
798            // Zero out padding regions. There's no need to apply masks
799            // because the unmasked parts will be overwritten by fields.
800            // Write the fields.
801            self.0.encode(encoder, offset + 0, depth)?;
802            Ok(())
803        }
804    }
805
806    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nl80211MessageArray {
807        #[inline(always)]
808        fn new_empty() -> Self {
809            Self { messages: fidl::new_empty!(fidl::encoding::UnboundedVector<Nl80211Message>, D) }
810        }
811
812        #[inline]
813        unsafe fn decode(
814            &mut self,
815            decoder: &mut fidl::encoding::Decoder<'_, D>,
816            offset: usize,
817            _depth: fidl::encoding::Depth,
818        ) -> fidl::Result<()> {
819            decoder.debug_check_bounds::<Self>(offset);
820            // Verify that padding bytes are zero.
821            fidl::decode!(
822                fidl::encoding::UnboundedVector<Nl80211Message>,
823                D,
824                &mut self.messages,
825                decoder,
826                offset + 0,
827                _depth
828            )?;
829            Ok(())
830        }
831    }
832
833    impl ChipConcurrencyCombination {
834        #[inline(always)]
835        fn max_ordinal_present(&self) -> u64 {
836            if let Some(_) = self.limits {
837                return 1;
838            }
839            0
840        }
841    }
842
843    impl fidl::encoding::ValueTypeMarker for ChipConcurrencyCombination {
844        type Borrowed<'a> = &'a Self;
845        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
846            value
847        }
848    }
849
850    unsafe impl fidl::encoding::TypeMarker for ChipConcurrencyCombination {
851        type Owned = Self;
852
853        #[inline(always)]
854        fn inline_align(_context: fidl::encoding::Context) -> usize {
855            8
856        }
857
858        #[inline(always)]
859        fn inline_size(_context: fidl::encoding::Context) -> usize {
860            16
861        }
862    }
863
864    unsafe impl<D: fidl::encoding::ResourceDialect>
865        fidl::encoding::Encode<ChipConcurrencyCombination, D> for &ChipConcurrencyCombination
866    {
867        unsafe fn encode(
868            self,
869            encoder: &mut fidl::encoding::Encoder<'_, D>,
870            offset: usize,
871            mut depth: fidl::encoding::Depth,
872        ) -> fidl::Result<()> {
873            encoder.debug_check_bounds::<ChipConcurrencyCombination>(offset);
874            // Vector header
875            let max_ordinal: u64 = self.max_ordinal_present();
876            encoder.write_num(max_ordinal, offset);
877            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
878            // Calling encoder.out_of_line_offset(0) is not allowed.
879            if max_ordinal == 0 {
880                return Ok(());
881            }
882            depth.increment()?;
883            let envelope_size = 8;
884            let bytes_len = max_ordinal as usize * envelope_size;
885            #[allow(unused_variables)]
886            let offset = encoder.out_of_line_offset(bytes_len);
887            let mut _prev_end_offset: usize = 0;
888            if 1 > max_ordinal {
889                return Ok(());
890            }
891
892            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
893            // are envelope_size bytes.
894            let cur_offset: usize = (1 - 1) * envelope_size;
895
896            // Zero reserved fields.
897            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
898
899            // Safety:
900            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
901            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
902            //   envelope_size bytes, there is always sufficient room.
903            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ChipConcurrencyCombinationLimit>, D>(
904            self.limits.as_ref().map(<fidl::encoding::UnboundedVector<ChipConcurrencyCombinationLimit> as fidl::encoding::ValueTypeMarker>::borrow),
905            encoder, offset + cur_offset, depth
906        )?;
907
908            _prev_end_offset = cur_offset + envelope_size;
909
910            Ok(())
911        }
912    }
913
914    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
915        for ChipConcurrencyCombination
916    {
917        #[inline(always)]
918        fn new_empty() -> Self {
919            Self::default()
920        }
921
922        unsafe fn decode(
923            &mut self,
924            decoder: &mut fidl::encoding::Decoder<'_, D>,
925            offset: usize,
926            mut depth: fidl::encoding::Depth,
927        ) -> fidl::Result<()> {
928            decoder.debug_check_bounds::<Self>(offset);
929            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
930                None => return Err(fidl::Error::NotNullable),
931                Some(len) => len,
932            };
933            // Calling decoder.out_of_line_offset(0) is not allowed.
934            if len == 0 {
935                return Ok(());
936            };
937            depth.increment()?;
938            let envelope_size = 8;
939            let bytes_len = len * envelope_size;
940            let offset = decoder.out_of_line_offset(bytes_len)?;
941            // Decode the envelope for each type.
942            let mut _next_ordinal_to_read = 0;
943            let mut next_offset = offset;
944            let end_offset = offset + bytes_len;
945            _next_ordinal_to_read += 1;
946            if next_offset >= end_offset {
947                return Ok(());
948            }
949
950            // Decode unknown envelopes for gaps in ordinals.
951            while _next_ordinal_to_read < 1 {
952                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
953                _next_ordinal_to_read += 1;
954                next_offset += envelope_size;
955            }
956
957            let next_out_of_line = decoder.next_out_of_line();
958            let handles_before = decoder.remaining_handles();
959            if let Some((inlined, num_bytes, num_handles)) =
960                fidl::encoding::decode_envelope_header(decoder, next_offset)?
961            {
962                let member_inline_size = <fidl::encoding::UnboundedVector<
963                    ChipConcurrencyCombinationLimit,
964                > as fidl::encoding::TypeMarker>::inline_size(
965                    decoder.context
966                );
967                if inlined != (member_inline_size <= 4) {
968                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
969                }
970                let inner_offset;
971                let mut inner_depth = depth.clone();
972                if inlined {
973                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
974                    inner_offset = next_offset;
975                } else {
976                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
977                    inner_depth.increment()?;
978                }
979                let val_ref = self.limits.get_or_insert_with(|| {
980                    fidl::new_empty!(
981                        fidl::encoding::UnboundedVector<ChipConcurrencyCombinationLimit>,
982                        D
983                    )
984                });
985                fidl::decode!(
986                    fidl::encoding::UnboundedVector<ChipConcurrencyCombinationLimit>,
987                    D,
988                    val_ref,
989                    decoder,
990                    inner_offset,
991                    inner_depth
992                )?;
993                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
994                {
995                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
996                }
997                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
998                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
999                }
1000            }
1001
1002            next_offset += envelope_size;
1003
1004            // Decode the remaining unknown envelopes.
1005            while next_offset < end_offset {
1006                _next_ordinal_to_read += 1;
1007                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1008                next_offset += envelope_size;
1009            }
1010
1011            Ok(())
1012        }
1013    }
1014
1015    impl ChipConcurrencyCombinationLimit {
1016        #[inline(always)]
1017        fn max_ordinal_present(&self) -> u64 {
1018            if let Some(_) = self.max_ifaces {
1019                return 2;
1020            }
1021            if let Some(_) = self.types {
1022                return 1;
1023            }
1024            0
1025        }
1026    }
1027
1028    impl fidl::encoding::ValueTypeMarker for ChipConcurrencyCombinationLimit {
1029        type Borrowed<'a> = &'a Self;
1030        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1031            value
1032        }
1033    }
1034
1035    unsafe impl fidl::encoding::TypeMarker for ChipConcurrencyCombinationLimit {
1036        type Owned = Self;
1037
1038        #[inline(always)]
1039        fn inline_align(_context: fidl::encoding::Context) -> usize {
1040            8
1041        }
1042
1043        #[inline(always)]
1044        fn inline_size(_context: fidl::encoding::Context) -> usize {
1045            16
1046        }
1047    }
1048
1049    unsafe impl<D: fidl::encoding::ResourceDialect>
1050        fidl::encoding::Encode<ChipConcurrencyCombinationLimit, D>
1051        for &ChipConcurrencyCombinationLimit
1052    {
1053        unsafe fn encode(
1054            self,
1055            encoder: &mut fidl::encoding::Encoder<'_, D>,
1056            offset: usize,
1057            mut depth: fidl::encoding::Depth,
1058        ) -> fidl::Result<()> {
1059            encoder.debug_check_bounds::<ChipConcurrencyCombinationLimit>(offset);
1060            // Vector header
1061            let max_ordinal: u64 = self.max_ordinal_present();
1062            encoder.write_num(max_ordinal, offset);
1063            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1064            // Calling encoder.out_of_line_offset(0) is not allowed.
1065            if max_ordinal == 0 {
1066                return Ok(());
1067            }
1068            depth.increment()?;
1069            let envelope_size = 8;
1070            let bytes_len = max_ordinal as usize * envelope_size;
1071            #[allow(unused_variables)]
1072            let offset = encoder.out_of_line_offset(bytes_len);
1073            let mut _prev_end_offset: usize = 0;
1074            if 1 > max_ordinal {
1075                return Ok(());
1076            }
1077
1078            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1079            // are envelope_size bytes.
1080            let cur_offset: usize = (1 - 1) * envelope_size;
1081
1082            // Zero reserved fields.
1083            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1084
1085            // Safety:
1086            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1087            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1088            //   envelope_size bytes, there is always sufficient room.
1089            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<IfaceConcurrencyType>, D>(
1090            self.types.as_ref().map(<fidl::encoding::UnboundedVector<IfaceConcurrencyType> as fidl::encoding::ValueTypeMarker>::borrow),
1091            encoder, offset + cur_offset, depth
1092        )?;
1093
1094            _prev_end_offset = cur_offset + envelope_size;
1095            if 2 > max_ordinal {
1096                return Ok(());
1097            }
1098
1099            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1100            // are envelope_size bytes.
1101            let cur_offset: usize = (2 - 1) * envelope_size;
1102
1103            // Zero reserved fields.
1104            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1105
1106            // Safety:
1107            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1108            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1109            //   envelope_size bytes, there is always sufficient room.
1110            fidl::encoding::encode_in_envelope_optional::<u32, D>(
1111                self.max_ifaces.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1112                encoder,
1113                offset + cur_offset,
1114                depth,
1115            )?;
1116
1117            _prev_end_offset = cur_offset + envelope_size;
1118
1119            Ok(())
1120        }
1121    }
1122
1123    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1124        for ChipConcurrencyCombinationLimit
1125    {
1126        #[inline(always)]
1127        fn new_empty() -> Self {
1128            Self::default()
1129        }
1130
1131        unsafe fn decode(
1132            &mut self,
1133            decoder: &mut fidl::encoding::Decoder<'_, D>,
1134            offset: usize,
1135            mut depth: fidl::encoding::Depth,
1136        ) -> fidl::Result<()> {
1137            decoder.debug_check_bounds::<Self>(offset);
1138            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1139                None => return Err(fidl::Error::NotNullable),
1140                Some(len) => len,
1141            };
1142            // Calling decoder.out_of_line_offset(0) is not allowed.
1143            if len == 0 {
1144                return Ok(());
1145            };
1146            depth.increment()?;
1147            let envelope_size = 8;
1148            let bytes_len = len * envelope_size;
1149            let offset = decoder.out_of_line_offset(bytes_len)?;
1150            // Decode the envelope for each type.
1151            let mut _next_ordinal_to_read = 0;
1152            let mut next_offset = offset;
1153            let end_offset = offset + bytes_len;
1154            _next_ordinal_to_read += 1;
1155            if next_offset >= end_offset {
1156                return Ok(());
1157            }
1158
1159            // Decode unknown envelopes for gaps in ordinals.
1160            while _next_ordinal_to_read < 1 {
1161                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1162                _next_ordinal_to_read += 1;
1163                next_offset += envelope_size;
1164            }
1165
1166            let next_out_of_line = decoder.next_out_of_line();
1167            let handles_before = decoder.remaining_handles();
1168            if let Some((inlined, num_bytes, num_handles)) =
1169                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1170            {
1171                let member_inline_size = <fidl::encoding::UnboundedVector<IfaceConcurrencyType> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1172                if inlined != (member_inline_size <= 4) {
1173                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1174                }
1175                let inner_offset;
1176                let mut inner_depth = depth.clone();
1177                if inlined {
1178                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1179                    inner_offset = next_offset;
1180                } else {
1181                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1182                    inner_depth.increment()?;
1183                }
1184                let val_ref = self.types.get_or_insert_with(|| {
1185                    fidl::new_empty!(fidl::encoding::UnboundedVector<IfaceConcurrencyType>, D)
1186                });
1187                fidl::decode!(
1188                    fidl::encoding::UnboundedVector<IfaceConcurrencyType>,
1189                    D,
1190                    val_ref,
1191                    decoder,
1192                    inner_offset,
1193                    inner_depth
1194                )?;
1195                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1196                {
1197                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1198                }
1199                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1200                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1201                }
1202            }
1203
1204            next_offset += envelope_size;
1205            _next_ordinal_to_read += 1;
1206            if next_offset >= end_offset {
1207                return Ok(());
1208            }
1209
1210            // Decode unknown envelopes for gaps in ordinals.
1211            while _next_ordinal_to_read < 2 {
1212                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1213                _next_ordinal_to_read += 1;
1214                next_offset += envelope_size;
1215            }
1216
1217            let next_out_of_line = decoder.next_out_of_line();
1218            let handles_before = decoder.remaining_handles();
1219            if let Some((inlined, num_bytes, num_handles)) =
1220                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1221            {
1222                let member_inline_size =
1223                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1224                if inlined != (member_inline_size <= 4) {
1225                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1226                }
1227                let inner_offset;
1228                let mut inner_depth = depth.clone();
1229                if inlined {
1230                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1231                    inner_offset = next_offset;
1232                } else {
1233                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1234                    inner_depth.increment()?;
1235                }
1236                let val_ref = self.max_ifaces.get_or_insert_with(|| fidl::new_empty!(u32, D));
1237                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1238                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1239                {
1240                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1241                }
1242                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1243                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1244                }
1245            }
1246
1247            next_offset += envelope_size;
1248
1249            // Decode the remaining unknown envelopes.
1250            while next_offset < end_offset {
1251                _next_ordinal_to_read += 1;
1252                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1253                next_offset += envelope_size;
1254            }
1255
1256            Ok(())
1257        }
1258    }
1259
1260    impl ChipMode {
1261        #[inline(always)]
1262        fn max_ordinal_present(&self) -> u64 {
1263            if let Some(_) = self.available_combinations {
1264                return 2;
1265            }
1266            if let Some(_) = self.id {
1267                return 1;
1268            }
1269            0
1270        }
1271    }
1272
1273    impl fidl::encoding::ValueTypeMarker for ChipMode {
1274        type Borrowed<'a> = &'a Self;
1275        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1276            value
1277        }
1278    }
1279
1280    unsafe impl fidl::encoding::TypeMarker for ChipMode {
1281        type Owned = Self;
1282
1283        #[inline(always)]
1284        fn inline_align(_context: fidl::encoding::Context) -> usize {
1285            8
1286        }
1287
1288        #[inline(always)]
1289        fn inline_size(_context: fidl::encoding::Context) -> usize {
1290            16
1291        }
1292    }
1293
1294    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ChipMode, D> for &ChipMode {
1295        unsafe fn encode(
1296            self,
1297            encoder: &mut fidl::encoding::Encoder<'_, D>,
1298            offset: usize,
1299            mut depth: fidl::encoding::Depth,
1300        ) -> fidl::Result<()> {
1301            encoder.debug_check_bounds::<ChipMode>(offset);
1302            // Vector header
1303            let max_ordinal: u64 = self.max_ordinal_present();
1304            encoder.write_num(max_ordinal, offset);
1305            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1306            // Calling encoder.out_of_line_offset(0) is not allowed.
1307            if max_ordinal == 0 {
1308                return Ok(());
1309            }
1310            depth.increment()?;
1311            let envelope_size = 8;
1312            let bytes_len = max_ordinal as usize * envelope_size;
1313            #[allow(unused_variables)]
1314            let offset = encoder.out_of_line_offset(bytes_len);
1315            let mut _prev_end_offset: usize = 0;
1316            if 1 > max_ordinal {
1317                return Ok(());
1318            }
1319
1320            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1321            // are envelope_size bytes.
1322            let cur_offset: usize = (1 - 1) * envelope_size;
1323
1324            // Zero reserved fields.
1325            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1326
1327            // Safety:
1328            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1329            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1330            //   envelope_size bytes, there is always sufficient room.
1331            fidl::encoding::encode_in_envelope_optional::<u32, D>(
1332                self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1333                encoder,
1334                offset + cur_offset,
1335                depth,
1336            )?;
1337
1338            _prev_end_offset = cur_offset + envelope_size;
1339            if 2 > max_ordinal {
1340                return Ok(());
1341            }
1342
1343            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1344            // are envelope_size bytes.
1345            let cur_offset: usize = (2 - 1) * envelope_size;
1346
1347            // Zero reserved fields.
1348            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1349
1350            // Safety:
1351            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1352            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1353            //   envelope_size bytes, there is always sufficient room.
1354            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ChipConcurrencyCombination>, D>(
1355            self.available_combinations.as_ref().map(<fidl::encoding::UnboundedVector<ChipConcurrencyCombination> as fidl::encoding::ValueTypeMarker>::borrow),
1356            encoder, offset + cur_offset, depth
1357        )?;
1358
1359            _prev_end_offset = cur_offset + envelope_size;
1360
1361            Ok(())
1362        }
1363    }
1364
1365    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChipMode {
1366        #[inline(always)]
1367        fn new_empty() -> Self {
1368            Self::default()
1369        }
1370
1371        unsafe fn decode(
1372            &mut self,
1373            decoder: &mut fidl::encoding::Decoder<'_, D>,
1374            offset: usize,
1375            mut depth: fidl::encoding::Depth,
1376        ) -> fidl::Result<()> {
1377            decoder.debug_check_bounds::<Self>(offset);
1378            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1379                None => return Err(fidl::Error::NotNullable),
1380                Some(len) => len,
1381            };
1382            // Calling decoder.out_of_line_offset(0) is not allowed.
1383            if len == 0 {
1384                return Ok(());
1385            };
1386            depth.increment()?;
1387            let envelope_size = 8;
1388            let bytes_len = len * envelope_size;
1389            let offset = decoder.out_of_line_offset(bytes_len)?;
1390            // Decode the envelope for each type.
1391            let mut _next_ordinal_to_read = 0;
1392            let mut next_offset = offset;
1393            let end_offset = offset + bytes_len;
1394            _next_ordinal_to_read += 1;
1395            if next_offset >= end_offset {
1396                return Ok(());
1397            }
1398
1399            // Decode unknown envelopes for gaps in ordinals.
1400            while _next_ordinal_to_read < 1 {
1401                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1402                _next_ordinal_to_read += 1;
1403                next_offset += envelope_size;
1404            }
1405
1406            let next_out_of_line = decoder.next_out_of_line();
1407            let handles_before = decoder.remaining_handles();
1408            if let Some((inlined, num_bytes, num_handles)) =
1409                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1410            {
1411                let member_inline_size =
1412                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1413                if inlined != (member_inline_size <= 4) {
1414                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1415                }
1416                let inner_offset;
1417                let mut inner_depth = depth.clone();
1418                if inlined {
1419                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1420                    inner_offset = next_offset;
1421                } else {
1422                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1423                    inner_depth.increment()?;
1424                }
1425                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1426                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1427                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1428                {
1429                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1430                }
1431                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1432                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1433                }
1434            }
1435
1436            next_offset += envelope_size;
1437            _next_ordinal_to_read += 1;
1438            if next_offset >= end_offset {
1439                return Ok(());
1440            }
1441
1442            // Decode unknown envelopes for gaps in ordinals.
1443            while _next_ordinal_to_read < 2 {
1444                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1445                _next_ordinal_to_read += 1;
1446                next_offset += envelope_size;
1447            }
1448
1449            let next_out_of_line = decoder.next_out_of_line();
1450            let handles_before = decoder.remaining_handles();
1451            if let Some((inlined, num_bytes, num_handles)) =
1452                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1453            {
1454                let member_inline_size = <fidl::encoding::UnboundedVector<
1455                    ChipConcurrencyCombination,
1456                > as fidl::encoding::TypeMarker>::inline_size(
1457                    decoder.context
1458                );
1459                if inlined != (member_inline_size <= 4) {
1460                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1461                }
1462                let inner_offset;
1463                let mut inner_depth = depth.clone();
1464                if inlined {
1465                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1466                    inner_offset = next_offset;
1467                } else {
1468                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1469                    inner_depth.increment()?;
1470                }
1471                let val_ref = self.available_combinations.get_or_insert_with(|| {
1472                    fidl::new_empty!(fidl::encoding::UnboundedVector<ChipConcurrencyCombination>, D)
1473                });
1474                fidl::decode!(
1475                    fidl::encoding::UnboundedVector<ChipConcurrencyCombination>,
1476                    D,
1477                    val_ref,
1478                    decoder,
1479                    inner_offset,
1480                    inner_depth
1481                )?;
1482                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1483                {
1484                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1485                }
1486                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1487                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1488                }
1489            }
1490
1491            next_offset += envelope_size;
1492
1493            // Decode the remaining unknown envelopes.
1494            while next_offset < end_offset {
1495                _next_ordinal_to_read += 1;
1496                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1497                next_offset += envelope_size;
1498            }
1499
1500            Ok(())
1501        }
1502    }
1503
1504    impl Nl80211Message {
1505        #[inline(always)]
1506        fn max_ordinal_present(&self) -> u64 {
1507            if let Some(_) = self.payload {
1508                return 2;
1509            }
1510            if let Some(_) = self.message_type {
1511                return 1;
1512            }
1513            0
1514        }
1515    }
1516
1517    impl fidl::encoding::ValueTypeMarker for Nl80211Message {
1518        type Borrowed<'a> = &'a Self;
1519        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1520            value
1521        }
1522    }
1523
1524    unsafe impl fidl::encoding::TypeMarker for Nl80211Message {
1525        type Owned = Self;
1526
1527        #[inline(always)]
1528        fn inline_align(_context: fidl::encoding::Context) -> usize {
1529            8
1530        }
1531
1532        #[inline(always)]
1533        fn inline_size(_context: fidl::encoding::Context) -> usize {
1534            16
1535        }
1536    }
1537
1538    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Nl80211Message, D>
1539        for &Nl80211Message
1540    {
1541        unsafe fn encode(
1542            self,
1543            encoder: &mut fidl::encoding::Encoder<'_, D>,
1544            offset: usize,
1545            mut depth: fidl::encoding::Depth,
1546        ) -> fidl::Result<()> {
1547            encoder.debug_check_bounds::<Nl80211Message>(offset);
1548            // Vector header
1549            let max_ordinal: u64 = self.max_ordinal_present();
1550            encoder.write_num(max_ordinal, offset);
1551            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1552            // Calling encoder.out_of_line_offset(0) is not allowed.
1553            if max_ordinal == 0 {
1554                return Ok(());
1555            }
1556            depth.increment()?;
1557            let envelope_size = 8;
1558            let bytes_len = max_ordinal as usize * envelope_size;
1559            #[allow(unused_variables)]
1560            let offset = encoder.out_of_line_offset(bytes_len);
1561            let mut _prev_end_offset: usize = 0;
1562            if 1 > max_ordinal {
1563                return Ok(());
1564            }
1565
1566            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1567            // are envelope_size bytes.
1568            let cur_offset: usize = (1 - 1) * envelope_size;
1569
1570            // Zero reserved fields.
1571            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1572
1573            // Safety:
1574            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1575            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1576            //   envelope_size bytes, there is always sufficient room.
1577            fidl::encoding::encode_in_envelope_optional::<Nl80211MessageType, D>(
1578                self.message_type
1579                    .as_ref()
1580                    .map(<Nl80211MessageType as fidl::encoding::ValueTypeMarker>::borrow),
1581                encoder,
1582                offset + cur_offset,
1583                depth,
1584            )?;
1585
1586            _prev_end_offset = cur_offset + envelope_size;
1587            if 2 > max_ordinal {
1588                return Ok(());
1589            }
1590
1591            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1592            // are envelope_size bytes.
1593            let cur_offset: usize = (2 - 1) * envelope_size;
1594
1595            // Zero reserved fields.
1596            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1597
1598            // Safety:
1599            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1600            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1601            //   envelope_size bytes, there is always sufficient room.
1602            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
1603            self.payload.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
1604            encoder, offset + cur_offset, depth
1605        )?;
1606
1607            _prev_end_offset = cur_offset + envelope_size;
1608
1609            Ok(())
1610        }
1611    }
1612
1613    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Nl80211Message {
1614        #[inline(always)]
1615        fn new_empty() -> Self {
1616            Self::default()
1617        }
1618
1619        unsafe fn decode(
1620            &mut self,
1621            decoder: &mut fidl::encoding::Decoder<'_, D>,
1622            offset: usize,
1623            mut depth: fidl::encoding::Depth,
1624        ) -> fidl::Result<()> {
1625            decoder.debug_check_bounds::<Self>(offset);
1626            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1627                None => return Err(fidl::Error::NotNullable),
1628                Some(len) => len,
1629            };
1630            // Calling decoder.out_of_line_offset(0) is not allowed.
1631            if len == 0 {
1632                return Ok(());
1633            };
1634            depth.increment()?;
1635            let envelope_size = 8;
1636            let bytes_len = len * envelope_size;
1637            let offset = decoder.out_of_line_offset(bytes_len)?;
1638            // Decode the envelope for each type.
1639            let mut _next_ordinal_to_read = 0;
1640            let mut next_offset = offset;
1641            let end_offset = offset + bytes_len;
1642            _next_ordinal_to_read += 1;
1643            if next_offset >= end_offset {
1644                return Ok(());
1645            }
1646
1647            // Decode unknown envelopes for gaps in ordinals.
1648            while _next_ordinal_to_read < 1 {
1649                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1650                _next_ordinal_to_read += 1;
1651                next_offset += envelope_size;
1652            }
1653
1654            let next_out_of_line = decoder.next_out_of_line();
1655            let handles_before = decoder.remaining_handles();
1656            if let Some((inlined, num_bytes, num_handles)) =
1657                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1658            {
1659                let member_inline_size =
1660                    <Nl80211MessageType as fidl::encoding::TypeMarker>::inline_size(
1661                        decoder.context,
1662                    );
1663                if inlined != (member_inline_size <= 4) {
1664                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1665                }
1666                let inner_offset;
1667                let mut inner_depth = depth.clone();
1668                if inlined {
1669                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1670                    inner_offset = next_offset;
1671                } else {
1672                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1673                    inner_depth.increment()?;
1674                }
1675                let val_ref = self
1676                    .message_type
1677                    .get_or_insert_with(|| fidl::new_empty!(Nl80211MessageType, D));
1678                fidl::decode!(Nl80211MessageType, D, val_ref, decoder, inner_offset, inner_depth)?;
1679                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1680                {
1681                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1682                }
1683                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1684                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1685                }
1686            }
1687
1688            next_offset += envelope_size;
1689            _next_ordinal_to_read += 1;
1690            if next_offset >= end_offset {
1691                return Ok(());
1692            }
1693
1694            // Decode unknown envelopes for gaps in ordinals.
1695            while _next_ordinal_to_read < 2 {
1696                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1697                _next_ordinal_to_read += 1;
1698                next_offset += envelope_size;
1699            }
1700
1701            let next_out_of_line = decoder.next_out_of_line();
1702            let handles_before = decoder.remaining_handles();
1703            if let Some((inlined, num_bytes, num_handles)) =
1704                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1705            {
1706                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1707                if inlined != (member_inline_size <= 4) {
1708                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1709                }
1710                let inner_offset;
1711                let mut inner_depth = depth.clone();
1712                if inlined {
1713                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1714                    inner_offset = next_offset;
1715                } else {
1716                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1717                    inner_depth.increment()?;
1718                }
1719                let val_ref = self.payload.get_or_insert_with(|| {
1720                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
1721                });
1722                fidl::decode!(
1723                    fidl::encoding::UnboundedVector<u8>,
1724                    D,
1725                    val_ref,
1726                    decoder,
1727                    inner_offset,
1728                    inner_depth
1729                )?;
1730                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1731                {
1732                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1733                }
1734                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1735                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1736                }
1737            }
1738
1739            next_offset += envelope_size;
1740
1741            // Decode the remaining unknown envelopes.
1742            while next_offset < end_offset {
1743                _next_ordinal_to_read += 1;
1744                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1745                next_offset += envelope_size;
1746            }
1747
1748            Ok(())
1749        }
1750    }
1751
1752    impl SupplicantStaIfaceCallbackOnAssociationRejectedRequest {
1753        #[inline(always)]
1754        fn max_ordinal_present(&self) -> u64 {
1755            if let Some(_) = self.timed_out {
1756                return 4;
1757            }
1758            if let Some(_) = self.status_code {
1759                return 3;
1760            }
1761            if let Some(_) = self.bssid {
1762                return 2;
1763            }
1764            if let Some(_) = self.ssid {
1765                return 1;
1766            }
1767            0
1768        }
1769    }
1770
1771    impl fidl::encoding::ValueTypeMarker for SupplicantStaIfaceCallbackOnAssociationRejectedRequest {
1772        type Borrowed<'a> = &'a Self;
1773        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1774            value
1775        }
1776    }
1777
1778    unsafe impl fidl::encoding::TypeMarker for SupplicantStaIfaceCallbackOnAssociationRejectedRequest {
1779        type Owned = Self;
1780
1781        #[inline(always)]
1782        fn inline_align(_context: fidl::encoding::Context) -> usize {
1783            8
1784        }
1785
1786        #[inline(always)]
1787        fn inline_size(_context: fidl::encoding::Context) -> usize {
1788            16
1789        }
1790    }
1791
1792    unsafe impl<D: fidl::encoding::ResourceDialect>
1793        fidl::encoding::Encode<SupplicantStaIfaceCallbackOnAssociationRejectedRequest, D>
1794        for &SupplicantStaIfaceCallbackOnAssociationRejectedRequest
1795    {
1796        unsafe fn encode(
1797            self,
1798            encoder: &mut fidl::encoding::Encoder<'_, D>,
1799            offset: usize,
1800            mut depth: fidl::encoding::Depth,
1801        ) -> fidl::Result<()> {
1802            encoder.debug_check_bounds::<SupplicantStaIfaceCallbackOnAssociationRejectedRequest>(
1803                offset,
1804            );
1805            // Vector header
1806            let max_ordinal: u64 = self.max_ordinal_present();
1807            encoder.write_num(max_ordinal, offset);
1808            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1809            // Calling encoder.out_of_line_offset(0) is not allowed.
1810            if max_ordinal == 0 {
1811                return Ok(());
1812            }
1813            depth.increment()?;
1814            let envelope_size = 8;
1815            let bytes_len = max_ordinal as usize * envelope_size;
1816            #[allow(unused_variables)]
1817            let offset = encoder.out_of_line_offset(bytes_len);
1818            let mut _prev_end_offset: usize = 0;
1819            if 1 > max_ordinal {
1820                return Ok(());
1821            }
1822
1823            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1824            // are envelope_size bytes.
1825            let cur_offset: usize = (1 - 1) * envelope_size;
1826
1827            // Zero reserved fields.
1828            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1829
1830            // Safety:
1831            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1832            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1833            //   envelope_size bytes, there is always sufficient room.
1834            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
1835                self.ssid.as_ref().map(
1836                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
1837                ),
1838                encoder,
1839                offset + cur_offset,
1840                depth,
1841            )?;
1842
1843            _prev_end_offset = cur_offset + envelope_size;
1844            if 2 > max_ordinal {
1845                return Ok(());
1846            }
1847
1848            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1849            // are envelope_size bytes.
1850            let cur_offset: usize = (2 - 1) * envelope_size;
1851
1852            // Zero reserved fields.
1853            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1854
1855            // Safety:
1856            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1857            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1858            //   envelope_size bytes, there is always sufficient room.
1859            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
1860                self.bssid
1861                    .as_ref()
1862                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
1863                encoder,
1864                offset + cur_offset,
1865                depth,
1866            )?;
1867
1868            _prev_end_offset = cur_offset + envelope_size;
1869            if 3 > max_ordinal {
1870                return Ok(());
1871            }
1872
1873            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1874            // are envelope_size bytes.
1875            let cur_offset: usize = (3 - 1) * envelope_size;
1876
1877            // Zero reserved fields.
1878            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1879
1880            // Safety:
1881            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1882            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1883            //   envelope_size bytes, there is always sufficient room.
1884            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::StatusCode, D>(
1885            self.status_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::ValueTypeMarker>::borrow),
1886            encoder, offset + cur_offset, depth
1887        )?;
1888
1889            _prev_end_offset = cur_offset + envelope_size;
1890            if 4 > max_ordinal {
1891                return Ok(());
1892            }
1893
1894            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1895            // are envelope_size bytes.
1896            let cur_offset: usize = (4 - 1) * envelope_size;
1897
1898            // Zero reserved fields.
1899            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1900
1901            // Safety:
1902            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1903            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1904            //   envelope_size bytes, there is always sufficient room.
1905            fidl::encoding::encode_in_envelope_optional::<bool, D>(
1906                self.timed_out.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1907                encoder,
1908                offset + cur_offset,
1909                depth,
1910            )?;
1911
1912            _prev_end_offset = cur_offset + envelope_size;
1913
1914            Ok(())
1915        }
1916    }
1917
1918    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1919        for SupplicantStaIfaceCallbackOnAssociationRejectedRequest
1920    {
1921        #[inline(always)]
1922        fn new_empty() -> Self {
1923            Self::default()
1924        }
1925
1926        unsafe fn decode(
1927            &mut self,
1928            decoder: &mut fidl::encoding::Decoder<'_, D>,
1929            offset: usize,
1930            mut depth: fidl::encoding::Depth,
1931        ) -> fidl::Result<()> {
1932            decoder.debug_check_bounds::<Self>(offset);
1933            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1934                None => return Err(fidl::Error::NotNullable),
1935                Some(len) => len,
1936            };
1937            // Calling decoder.out_of_line_offset(0) is not allowed.
1938            if len == 0 {
1939                return Ok(());
1940            };
1941            depth.increment()?;
1942            let envelope_size = 8;
1943            let bytes_len = len * envelope_size;
1944            let offset = decoder.out_of_line_offset(bytes_len)?;
1945            // Decode the envelope for each type.
1946            let mut _next_ordinal_to_read = 0;
1947            let mut next_offset = offset;
1948            let end_offset = offset + bytes_len;
1949            _next_ordinal_to_read += 1;
1950            if next_offset >= end_offset {
1951                return Ok(());
1952            }
1953
1954            // Decode unknown envelopes for gaps in ordinals.
1955            while _next_ordinal_to_read < 1 {
1956                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1957                _next_ordinal_to_read += 1;
1958                next_offset += envelope_size;
1959            }
1960
1961            let next_out_of_line = decoder.next_out_of_line();
1962            let handles_before = decoder.remaining_handles();
1963            if let Some((inlined, num_bytes, num_handles)) =
1964                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1965            {
1966                let member_inline_size =
1967                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
1968                        decoder.context,
1969                    );
1970                if inlined != (member_inline_size <= 4) {
1971                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1972                }
1973                let inner_offset;
1974                let mut inner_depth = depth.clone();
1975                if inlined {
1976                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1977                    inner_offset = next_offset;
1978                } else {
1979                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1980                    inner_depth.increment()?;
1981                }
1982                let val_ref = self
1983                    .ssid
1984                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
1985                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
1986                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1987                {
1988                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1989                }
1990                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1991                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1992                }
1993            }
1994
1995            next_offset += envelope_size;
1996            _next_ordinal_to_read += 1;
1997            if next_offset >= end_offset {
1998                return Ok(());
1999            }
2000
2001            // Decode unknown envelopes for gaps in ordinals.
2002            while _next_ordinal_to_read < 2 {
2003                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2004                _next_ordinal_to_read += 1;
2005                next_offset += envelope_size;
2006            }
2007
2008            let next_out_of_line = decoder.next_out_of_line();
2009            let handles_before = decoder.remaining_handles();
2010            if let Some((inlined, num_bytes, num_handles)) =
2011                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2012            {
2013                let member_inline_size =
2014                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
2015                        decoder.context,
2016                    );
2017                if inlined != (member_inline_size <= 4) {
2018                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2019                }
2020                let inner_offset;
2021                let mut inner_depth = depth.clone();
2022                if inlined {
2023                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2024                    inner_offset = next_offset;
2025                } else {
2026                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2027                    inner_depth.increment()?;
2028                }
2029                let val_ref = self
2030                    .bssid
2031                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
2032                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
2033                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2034                {
2035                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2036                }
2037                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2038                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2039                }
2040            }
2041
2042            next_offset += envelope_size;
2043            _next_ordinal_to_read += 1;
2044            if next_offset >= end_offset {
2045                return Ok(());
2046            }
2047
2048            // Decode unknown envelopes for gaps in ordinals.
2049            while _next_ordinal_to_read < 3 {
2050                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2051                _next_ordinal_to_read += 1;
2052                next_offset += envelope_size;
2053            }
2054
2055            let next_out_of_line = decoder.next_out_of_line();
2056            let handles_before = decoder.remaining_handles();
2057            if let Some((inlined, num_bytes, num_handles)) =
2058                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2059            {
2060                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::StatusCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2061                if inlined != (member_inline_size <= 4) {
2062                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2063                }
2064                let inner_offset;
2065                let mut inner_depth = depth.clone();
2066                if inlined {
2067                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2068                    inner_offset = next_offset;
2069                } else {
2070                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2071                    inner_depth.increment()?;
2072                }
2073                let val_ref = self.status_code.get_or_insert_with(|| {
2074                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::StatusCode, D)
2075                });
2076                fidl::decode!(
2077                    fidl_fuchsia_wlan_ieee80211__common::StatusCode,
2078                    D,
2079                    val_ref,
2080                    decoder,
2081                    inner_offset,
2082                    inner_depth
2083                )?;
2084                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2085                {
2086                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2087                }
2088                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2089                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2090                }
2091            }
2092
2093            next_offset += envelope_size;
2094            _next_ordinal_to_read += 1;
2095            if next_offset >= end_offset {
2096                return Ok(());
2097            }
2098
2099            // Decode unknown envelopes for gaps in ordinals.
2100            while _next_ordinal_to_read < 4 {
2101                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2102                _next_ordinal_to_read += 1;
2103                next_offset += envelope_size;
2104            }
2105
2106            let next_out_of_line = decoder.next_out_of_line();
2107            let handles_before = decoder.remaining_handles();
2108            if let Some((inlined, num_bytes, num_handles)) =
2109                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2110            {
2111                let member_inline_size =
2112                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2113                if inlined != (member_inline_size <= 4) {
2114                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2115                }
2116                let inner_offset;
2117                let mut inner_depth = depth.clone();
2118                if inlined {
2119                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2120                    inner_offset = next_offset;
2121                } else {
2122                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2123                    inner_depth.increment()?;
2124                }
2125                let val_ref = self.timed_out.get_or_insert_with(|| fidl::new_empty!(bool, D));
2126                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2127                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2128                {
2129                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2130                }
2131                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2132                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2133                }
2134            }
2135
2136            next_offset += envelope_size;
2137
2138            // Decode the remaining unknown envelopes.
2139            while next_offset < end_offset {
2140                _next_ordinal_to_read += 1;
2141                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2142                next_offset += envelope_size;
2143            }
2144
2145            Ok(())
2146        }
2147    }
2148
2149    impl SupplicantStaIfaceCallbackOnDisconnectedRequest {
2150        #[inline(always)]
2151        fn max_ordinal_present(&self) -> u64 {
2152            if let Some(_) = self.reason_code {
2153                return 3;
2154            }
2155            if let Some(_) = self.locally_generated {
2156                return 2;
2157            }
2158            if let Some(_) = self.bssid {
2159                return 1;
2160            }
2161            0
2162        }
2163    }
2164
2165    impl fidl::encoding::ValueTypeMarker for SupplicantStaIfaceCallbackOnDisconnectedRequest {
2166        type Borrowed<'a> = &'a Self;
2167        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2168            value
2169        }
2170    }
2171
2172    unsafe impl fidl::encoding::TypeMarker for SupplicantStaIfaceCallbackOnDisconnectedRequest {
2173        type Owned = Self;
2174
2175        #[inline(always)]
2176        fn inline_align(_context: fidl::encoding::Context) -> usize {
2177            8
2178        }
2179
2180        #[inline(always)]
2181        fn inline_size(_context: fidl::encoding::Context) -> usize {
2182            16
2183        }
2184    }
2185
2186    unsafe impl<D: fidl::encoding::ResourceDialect>
2187        fidl::encoding::Encode<SupplicantStaIfaceCallbackOnDisconnectedRequest, D>
2188        for &SupplicantStaIfaceCallbackOnDisconnectedRequest
2189    {
2190        unsafe fn encode(
2191            self,
2192            encoder: &mut fidl::encoding::Encoder<'_, D>,
2193            offset: usize,
2194            mut depth: fidl::encoding::Depth,
2195        ) -> fidl::Result<()> {
2196            encoder.debug_check_bounds::<SupplicantStaIfaceCallbackOnDisconnectedRequest>(offset);
2197            // Vector header
2198            let max_ordinal: u64 = self.max_ordinal_present();
2199            encoder.write_num(max_ordinal, offset);
2200            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2201            // Calling encoder.out_of_line_offset(0) is not allowed.
2202            if max_ordinal == 0 {
2203                return Ok(());
2204            }
2205            depth.increment()?;
2206            let envelope_size = 8;
2207            let bytes_len = max_ordinal as usize * envelope_size;
2208            #[allow(unused_variables)]
2209            let offset = encoder.out_of_line_offset(bytes_len);
2210            let mut _prev_end_offset: usize = 0;
2211            if 1 > max_ordinal {
2212                return Ok(());
2213            }
2214
2215            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2216            // are envelope_size bytes.
2217            let cur_offset: usize = (1 - 1) * envelope_size;
2218
2219            // Zero reserved fields.
2220            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2221
2222            // Safety:
2223            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2224            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2225            //   envelope_size bytes, there is always sufficient room.
2226            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
2227                self.bssid
2228                    .as_ref()
2229                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
2230                encoder,
2231                offset + cur_offset,
2232                depth,
2233            )?;
2234
2235            _prev_end_offset = cur_offset + envelope_size;
2236            if 2 > max_ordinal {
2237                return Ok(());
2238            }
2239
2240            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2241            // are envelope_size bytes.
2242            let cur_offset: usize = (2 - 1) * envelope_size;
2243
2244            // Zero reserved fields.
2245            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2246
2247            // Safety:
2248            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2249            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2250            //   envelope_size bytes, there is always sufficient room.
2251            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2252                self.locally_generated
2253                    .as_ref()
2254                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2255                encoder,
2256                offset + cur_offset,
2257                depth,
2258            )?;
2259
2260            _prev_end_offset = cur_offset + envelope_size;
2261            if 3 > max_ordinal {
2262                return Ok(());
2263            }
2264
2265            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2266            // are envelope_size bytes.
2267            let cur_offset: usize = (3 - 1) * envelope_size;
2268
2269            // Zero reserved fields.
2270            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2271
2272            // Safety:
2273            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2274            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2275            //   envelope_size bytes, there is always sufficient room.
2276            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D>(
2277            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::ValueTypeMarker>::borrow),
2278            encoder, offset + cur_offset, depth
2279        )?;
2280
2281            _prev_end_offset = cur_offset + envelope_size;
2282
2283            Ok(())
2284        }
2285    }
2286
2287    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2288        for SupplicantStaIfaceCallbackOnDisconnectedRequest
2289    {
2290        #[inline(always)]
2291        fn new_empty() -> Self {
2292            Self::default()
2293        }
2294
2295        unsafe fn decode(
2296            &mut self,
2297            decoder: &mut fidl::encoding::Decoder<'_, D>,
2298            offset: usize,
2299            mut depth: fidl::encoding::Depth,
2300        ) -> fidl::Result<()> {
2301            decoder.debug_check_bounds::<Self>(offset);
2302            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2303                None => return Err(fidl::Error::NotNullable),
2304                Some(len) => len,
2305            };
2306            // Calling decoder.out_of_line_offset(0) is not allowed.
2307            if len == 0 {
2308                return Ok(());
2309            };
2310            depth.increment()?;
2311            let envelope_size = 8;
2312            let bytes_len = len * envelope_size;
2313            let offset = decoder.out_of_line_offset(bytes_len)?;
2314            // Decode the envelope for each type.
2315            let mut _next_ordinal_to_read = 0;
2316            let mut next_offset = offset;
2317            let end_offset = offset + bytes_len;
2318            _next_ordinal_to_read += 1;
2319            if next_offset >= end_offset {
2320                return Ok(());
2321            }
2322
2323            // Decode unknown envelopes for gaps in ordinals.
2324            while _next_ordinal_to_read < 1 {
2325                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2326                _next_ordinal_to_read += 1;
2327                next_offset += envelope_size;
2328            }
2329
2330            let next_out_of_line = decoder.next_out_of_line();
2331            let handles_before = decoder.remaining_handles();
2332            if let Some((inlined, num_bytes, num_handles)) =
2333                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2334            {
2335                let member_inline_size =
2336                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
2337                        decoder.context,
2338                    );
2339                if inlined != (member_inline_size <= 4) {
2340                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2341                }
2342                let inner_offset;
2343                let mut inner_depth = depth.clone();
2344                if inlined {
2345                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2346                    inner_offset = next_offset;
2347                } else {
2348                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2349                    inner_depth.increment()?;
2350                }
2351                let val_ref = self
2352                    .bssid
2353                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
2354                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
2355                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2356                {
2357                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2358                }
2359                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2360                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2361                }
2362            }
2363
2364            next_offset += envelope_size;
2365            _next_ordinal_to_read += 1;
2366            if next_offset >= end_offset {
2367                return Ok(());
2368            }
2369
2370            // Decode unknown envelopes for gaps in ordinals.
2371            while _next_ordinal_to_read < 2 {
2372                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2373                _next_ordinal_to_read += 1;
2374                next_offset += envelope_size;
2375            }
2376
2377            let next_out_of_line = decoder.next_out_of_line();
2378            let handles_before = decoder.remaining_handles();
2379            if let Some((inlined, num_bytes, num_handles)) =
2380                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2381            {
2382                let member_inline_size =
2383                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2384                if inlined != (member_inline_size <= 4) {
2385                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2386                }
2387                let inner_offset;
2388                let mut inner_depth = depth.clone();
2389                if inlined {
2390                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2391                    inner_offset = next_offset;
2392                } else {
2393                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2394                    inner_depth.increment()?;
2395                }
2396                let val_ref =
2397                    self.locally_generated.get_or_insert_with(|| fidl::new_empty!(bool, D));
2398                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2399                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2400                {
2401                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2402                }
2403                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2404                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2405                }
2406            }
2407
2408            next_offset += envelope_size;
2409            _next_ordinal_to_read += 1;
2410            if next_offset >= end_offset {
2411                return Ok(());
2412            }
2413
2414            // Decode unknown envelopes for gaps in ordinals.
2415            while _next_ordinal_to_read < 3 {
2416                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2417                _next_ordinal_to_read += 1;
2418                next_offset += envelope_size;
2419            }
2420
2421            let next_out_of_line = decoder.next_out_of_line();
2422            let handles_before = decoder.remaining_handles();
2423            if let Some((inlined, num_bytes, num_handles)) =
2424                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2425            {
2426                let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::ReasonCode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2427                if inlined != (member_inline_size <= 4) {
2428                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2429                }
2430                let inner_offset;
2431                let mut inner_depth = depth.clone();
2432                if inlined {
2433                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2434                    inner_offset = next_offset;
2435                } else {
2436                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2437                    inner_depth.increment()?;
2438                }
2439                let val_ref = self.reason_code.get_or_insert_with(|| {
2440                    fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::ReasonCode, D)
2441                });
2442                fidl::decode!(
2443                    fidl_fuchsia_wlan_ieee80211__common::ReasonCode,
2444                    D,
2445                    val_ref,
2446                    decoder,
2447                    inner_offset,
2448                    inner_depth
2449                )?;
2450                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2451                {
2452                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2453                }
2454                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2455                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2456                }
2457            }
2458
2459            next_offset += envelope_size;
2460
2461            // Decode the remaining unknown envelopes.
2462            while next_offset < end_offset {
2463                _next_ordinal_to_read += 1;
2464                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2465                next_offset += envelope_size;
2466            }
2467
2468            Ok(())
2469        }
2470    }
2471
2472    impl SupplicantStaIfaceCallbackOnStateChangedRequest {
2473        #[inline(always)]
2474        fn max_ordinal_present(&self) -> u64 {
2475            if let Some(_) = self.ssid {
2476                return 4;
2477            }
2478            if let Some(_) = self.id {
2479                return 3;
2480            }
2481            if let Some(_) = self.bssid {
2482                return 2;
2483            }
2484            if let Some(_) = self.new_state {
2485                return 1;
2486            }
2487            0
2488        }
2489    }
2490
2491    impl fidl::encoding::ValueTypeMarker for SupplicantStaIfaceCallbackOnStateChangedRequest {
2492        type Borrowed<'a> = &'a Self;
2493        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2494            value
2495        }
2496    }
2497
2498    unsafe impl fidl::encoding::TypeMarker for SupplicantStaIfaceCallbackOnStateChangedRequest {
2499        type Owned = Self;
2500
2501        #[inline(always)]
2502        fn inline_align(_context: fidl::encoding::Context) -> usize {
2503            8
2504        }
2505
2506        #[inline(always)]
2507        fn inline_size(_context: fidl::encoding::Context) -> usize {
2508            16
2509        }
2510    }
2511
2512    unsafe impl<D: fidl::encoding::ResourceDialect>
2513        fidl::encoding::Encode<SupplicantStaIfaceCallbackOnStateChangedRequest, D>
2514        for &SupplicantStaIfaceCallbackOnStateChangedRequest
2515    {
2516        unsafe fn encode(
2517            self,
2518            encoder: &mut fidl::encoding::Encoder<'_, D>,
2519            offset: usize,
2520            mut depth: fidl::encoding::Depth,
2521        ) -> fidl::Result<()> {
2522            encoder.debug_check_bounds::<SupplicantStaIfaceCallbackOnStateChangedRequest>(offset);
2523            // Vector header
2524            let max_ordinal: u64 = self.max_ordinal_present();
2525            encoder.write_num(max_ordinal, offset);
2526            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2527            // Calling encoder.out_of_line_offset(0) is not allowed.
2528            if max_ordinal == 0 {
2529                return Ok(());
2530            }
2531            depth.increment()?;
2532            let envelope_size = 8;
2533            let bytes_len = max_ordinal as usize * envelope_size;
2534            #[allow(unused_variables)]
2535            let offset = encoder.out_of_line_offset(bytes_len);
2536            let mut _prev_end_offset: usize = 0;
2537            if 1 > max_ordinal {
2538                return Ok(());
2539            }
2540
2541            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2542            // are envelope_size bytes.
2543            let cur_offset: usize = (1 - 1) * envelope_size;
2544
2545            // Zero reserved fields.
2546            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2547
2548            // Safety:
2549            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2550            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2551            //   envelope_size bytes, there is always sufficient room.
2552            fidl::encoding::encode_in_envelope_optional::<StaIfaceCallbackState, D>(
2553                self.new_state
2554                    .as_ref()
2555                    .map(<StaIfaceCallbackState as fidl::encoding::ValueTypeMarker>::borrow),
2556                encoder,
2557                offset + cur_offset,
2558                depth,
2559            )?;
2560
2561            _prev_end_offset = cur_offset + envelope_size;
2562            if 2 > max_ordinal {
2563                return Ok(());
2564            }
2565
2566            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2567            // are envelope_size bytes.
2568            let cur_offset: usize = (2 - 1) * envelope_size;
2569
2570            // Zero reserved fields.
2571            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2572
2573            // Safety:
2574            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2575            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2576            //   envelope_size bytes, there is always sufficient room.
2577            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
2578                self.bssid
2579                    .as_ref()
2580                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
2581                encoder,
2582                offset + cur_offset,
2583                depth,
2584            )?;
2585
2586            _prev_end_offset = cur_offset + envelope_size;
2587            if 3 > max_ordinal {
2588                return Ok(());
2589            }
2590
2591            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2592            // are envelope_size bytes.
2593            let cur_offset: usize = (3 - 1) * envelope_size;
2594
2595            // Zero reserved fields.
2596            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2597
2598            // Safety:
2599            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2600            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2601            //   envelope_size bytes, there is always sufficient room.
2602            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2603                self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2604                encoder,
2605                offset + cur_offset,
2606                depth,
2607            )?;
2608
2609            _prev_end_offset = cur_offset + envelope_size;
2610            if 4 > max_ordinal {
2611                return Ok(());
2612            }
2613
2614            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2615            // are envelope_size bytes.
2616            let cur_offset: usize = (4 - 1) * envelope_size;
2617
2618            // Zero reserved fields.
2619            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2620
2621            // Safety:
2622            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2623            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2624            //   envelope_size bytes, there is always sufficient room.
2625            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
2626                self.ssid.as_ref().map(
2627                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
2628                ),
2629                encoder,
2630                offset + cur_offset,
2631                depth,
2632            )?;
2633
2634            _prev_end_offset = cur_offset + envelope_size;
2635
2636            Ok(())
2637        }
2638    }
2639
2640    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2641        for SupplicantStaIfaceCallbackOnStateChangedRequest
2642    {
2643        #[inline(always)]
2644        fn new_empty() -> Self {
2645            Self::default()
2646        }
2647
2648        unsafe fn decode(
2649            &mut self,
2650            decoder: &mut fidl::encoding::Decoder<'_, D>,
2651            offset: usize,
2652            mut depth: fidl::encoding::Depth,
2653        ) -> fidl::Result<()> {
2654            decoder.debug_check_bounds::<Self>(offset);
2655            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2656                None => return Err(fidl::Error::NotNullable),
2657                Some(len) => len,
2658            };
2659            // Calling decoder.out_of_line_offset(0) is not allowed.
2660            if len == 0 {
2661                return Ok(());
2662            };
2663            depth.increment()?;
2664            let envelope_size = 8;
2665            let bytes_len = len * envelope_size;
2666            let offset = decoder.out_of_line_offset(bytes_len)?;
2667            // Decode the envelope for each type.
2668            let mut _next_ordinal_to_read = 0;
2669            let mut next_offset = offset;
2670            let end_offset = offset + bytes_len;
2671            _next_ordinal_to_read += 1;
2672            if next_offset >= end_offset {
2673                return Ok(());
2674            }
2675
2676            // Decode unknown envelopes for gaps in ordinals.
2677            while _next_ordinal_to_read < 1 {
2678                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2679                _next_ordinal_to_read += 1;
2680                next_offset += envelope_size;
2681            }
2682
2683            let next_out_of_line = decoder.next_out_of_line();
2684            let handles_before = decoder.remaining_handles();
2685            if let Some((inlined, num_bytes, num_handles)) =
2686                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2687            {
2688                let member_inline_size =
2689                    <StaIfaceCallbackState as fidl::encoding::TypeMarker>::inline_size(
2690                        decoder.context,
2691                    );
2692                if inlined != (member_inline_size <= 4) {
2693                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2694                }
2695                let inner_offset;
2696                let mut inner_depth = depth.clone();
2697                if inlined {
2698                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2699                    inner_offset = next_offset;
2700                } else {
2701                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2702                    inner_depth.increment()?;
2703                }
2704                let val_ref = self
2705                    .new_state
2706                    .get_or_insert_with(|| fidl::new_empty!(StaIfaceCallbackState, D));
2707                fidl::decode!(
2708                    StaIfaceCallbackState,
2709                    D,
2710                    val_ref,
2711                    decoder,
2712                    inner_offset,
2713                    inner_depth
2714                )?;
2715                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2716                {
2717                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2718                }
2719                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2720                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2721                }
2722            }
2723
2724            next_offset += envelope_size;
2725            _next_ordinal_to_read += 1;
2726            if next_offset >= end_offset {
2727                return Ok(());
2728            }
2729
2730            // Decode unknown envelopes for gaps in ordinals.
2731            while _next_ordinal_to_read < 2 {
2732                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2733                _next_ordinal_to_read += 1;
2734                next_offset += envelope_size;
2735            }
2736
2737            let next_out_of_line = decoder.next_out_of_line();
2738            let handles_before = decoder.remaining_handles();
2739            if let Some((inlined, num_bytes, num_handles)) =
2740                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2741            {
2742                let member_inline_size =
2743                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
2744                        decoder.context,
2745                    );
2746                if inlined != (member_inline_size <= 4) {
2747                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2748                }
2749                let inner_offset;
2750                let mut inner_depth = depth.clone();
2751                if inlined {
2752                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2753                    inner_offset = next_offset;
2754                } else {
2755                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2756                    inner_depth.increment()?;
2757                }
2758                let val_ref = self
2759                    .bssid
2760                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
2761                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
2762                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2763                {
2764                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2765                }
2766                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2767                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2768                }
2769            }
2770
2771            next_offset += envelope_size;
2772            _next_ordinal_to_read += 1;
2773            if next_offset >= end_offset {
2774                return Ok(());
2775            }
2776
2777            // Decode unknown envelopes for gaps in ordinals.
2778            while _next_ordinal_to_read < 3 {
2779                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2780                _next_ordinal_to_read += 1;
2781                next_offset += envelope_size;
2782            }
2783
2784            let next_out_of_line = decoder.next_out_of_line();
2785            let handles_before = decoder.remaining_handles();
2786            if let Some((inlined, num_bytes, num_handles)) =
2787                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2788            {
2789                let member_inline_size =
2790                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2791                if inlined != (member_inline_size <= 4) {
2792                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2793                }
2794                let inner_offset;
2795                let mut inner_depth = depth.clone();
2796                if inlined {
2797                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2798                    inner_offset = next_offset;
2799                } else {
2800                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2801                    inner_depth.increment()?;
2802                }
2803                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2804                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2805                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2806                {
2807                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2808                }
2809                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2810                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2811                }
2812            }
2813
2814            next_offset += envelope_size;
2815            _next_ordinal_to_read += 1;
2816            if next_offset >= end_offset {
2817                return Ok(());
2818            }
2819
2820            // Decode unknown envelopes for gaps in ordinals.
2821            while _next_ordinal_to_read < 4 {
2822                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2823                _next_ordinal_to_read += 1;
2824                next_offset += envelope_size;
2825            }
2826
2827            let next_out_of_line = decoder.next_out_of_line();
2828            let handles_before = decoder.remaining_handles();
2829            if let Some((inlined, num_bytes, num_handles)) =
2830                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2831            {
2832                let member_inline_size =
2833                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
2834                        decoder.context,
2835                    );
2836                if inlined != (member_inline_size <= 4) {
2837                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2838                }
2839                let inner_offset;
2840                let mut inner_depth = depth.clone();
2841                if inlined {
2842                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2843                    inner_offset = next_offset;
2844                } else {
2845                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2846                    inner_depth.increment()?;
2847                }
2848                let val_ref = self
2849                    .ssid
2850                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
2851                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
2852                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2853                {
2854                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2855                }
2856                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2857                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2858                }
2859            }
2860
2861            next_offset += envelope_size;
2862
2863            // Decode the remaining unknown envelopes.
2864            while next_offset < end_offset {
2865                _next_ordinal_to_read += 1;
2866                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2867                next_offset += envelope_size;
2868            }
2869
2870            Ok(())
2871        }
2872    }
2873
2874    impl SupplicantStaIfaceGetMacAddressResponse {
2875        #[inline(always)]
2876        fn max_ordinal_present(&self) -> u64 {
2877            if let Some(_) = self.mac_addr {
2878                return 1;
2879            }
2880            0
2881        }
2882    }
2883
2884    impl fidl::encoding::ValueTypeMarker for SupplicantStaIfaceGetMacAddressResponse {
2885        type Borrowed<'a> = &'a Self;
2886        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2887            value
2888        }
2889    }
2890
2891    unsafe impl fidl::encoding::TypeMarker for SupplicantStaIfaceGetMacAddressResponse {
2892        type Owned = Self;
2893
2894        #[inline(always)]
2895        fn inline_align(_context: fidl::encoding::Context) -> usize {
2896            8
2897        }
2898
2899        #[inline(always)]
2900        fn inline_size(_context: fidl::encoding::Context) -> usize {
2901            16
2902        }
2903    }
2904
2905    unsafe impl<D: fidl::encoding::ResourceDialect>
2906        fidl::encoding::Encode<SupplicantStaIfaceGetMacAddressResponse, D>
2907        for &SupplicantStaIfaceGetMacAddressResponse
2908    {
2909        unsafe fn encode(
2910            self,
2911            encoder: &mut fidl::encoding::Encoder<'_, D>,
2912            offset: usize,
2913            mut depth: fidl::encoding::Depth,
2914        ) -> fidl::Result<()> {
2915            encoder.debug_check_bounds::<SupplicantStaIfaceGetMacAddressResponse>(offset);
2916            // Vector header
2917            let max_ordinal: u64 = self.max_ordinal_present();
2918            encoder.write_num(max_ordinal, offset);
2919            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2920            // Calling encoder.out_of_line_offset(0) is not allowed.
2921            if max_ordinal == 0 {
2922                return Ok(());
2923            }
2924            depth.increment()?;
2925            let envelope_size = 8;
2926            let bytes_len = max_ordinal as usize * envelope_size;
2927            #[allow(unused_variables)]
2928            let offset = encoder.out_of_line_offset(bytes_len);
2929            let mut _prev_end_offset: usize = 0;
2930            if 1 > max_ordinal {
2931                return Ok(());
2932            }
2933
2934            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2935            // are envelope_size bytes.
2936            let cur_offset: usize = (1 - 1) * envelope_size;
2937
2938            // Zero reserved fields.
2939            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2940
2941            // Safety:
2942            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2943            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2944            //   envelope_size bytes, there is always sufficient room.
2945            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
2946                self.mac_addr
2947                    .as_ref()
2948                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
2949                encoder,
2950                offset + cur_offset,
2951                depth,
2952            )?;
2953
2954            _prev_end_offset = cur_offset + envelope_size;
2955
2956            Ok(())
2957        }
2958    }
2959
2960    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2961        for SupplicantStaIfaceGetMacAddressResponse
2962    {
2963        #[inline(always)]
2964        fn new_empty() -> Self {
2965            Self::default()
2966        }
2967
2968        unsafe fn decode(
2969            &mut self,
2970            decoder: &mut fidl::encoding::Decoder<'_, D>,
2971            offset: usize,
2972            mut depth: fidl::encoding::Depth,
2973        ) -> fidl::Result<()> {
2974            decoder.debug_check_bounds::<Self>(offset);
2975            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2976                None => return Err(fidl::Error::NotNullable),
2977                Some(len) => len,
2978            };
2979            // Calling decoder.out_of_line_offset(0) is not allowed.
2980            if len == 0 {
2981                return Ok(());
2982            };
2983            depth.increment()?;
2984            let envelope_size = 8;
2985            let bytes_len = len * envelope_size;
2986            let offset = decoder.out_of_line_offset(bytes_len)?;
2987            // Decode the envelope for each type.
2988            let mut _next_ordinal_to_read = 0;
2989            let mut next_offset = offset;
2990            let end_offset = offset + bytes_len;
2991            _next_ordinal_to_read += 1;
2992            if next_offset >= end_offset {
2993                return Ok(());
2994            }
2995
2996            // Decode unknown envelopes for gaps in ordinals.
2997            while _next_ordinal_to_read < 1 {
2998                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2999                _next_ordinal_to_read += 1;
3000                next_offset += envelope_size;
3001            }
3002
3003            let next_out_of_line = decoder.next_out_of_line();
3004            let handles_before = decoder.remaining_handles();
3005            if let Some((inlined, num_bytes, num_handles)) =
3006                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3007            {
3008                let member_inline_size =
3009                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3010                        decoder.context,
3011                    );
3012                if inlined != (member_inline_size <= 4) {
3013                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3014                }
3015                let inner_offset;
3016                let mut inner_depth = depth.clone();
3017                if inlined {
3018                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3019                    inner_offset = next_offset;
3020                } else {
3021                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3022                    inner_depth.increment()?;
3023                }
3024                let val_ref = self
3025                    .mac_addr
3026                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
3027                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
3028                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3029                {
3030                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3031                }
3032                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3033                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3034                }
3035            }
3036
3037            next_offset += envelope_size;
3038
3039            // Decode the remaining unknown envelopes.
3040            while next_offset < end_offset {
3041                _next_ordinal_to_read += 1;
3042                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3043                next_offset += envelope_size;
3044            }
3045
3046            Ok(())
3047        }
3048    }
3049
3050    impl SupplicantStaNetworkSetBssidRequest {
3051        #[inline(always)]
3052        fn max_ordinal_present(&self) -> u64 {
3053            if let Some(_) = self.bssid {
3054                return 1;
3055            }
3056            0
3057        }
3058    }
3059
3060    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetBssidRequest {
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 SupplicantStaNetworkSetBssidRequest {
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<SupplicantStaNetworkSetBssidRequest, D>
3083        for &SupplicantStaNetworkSetBssidRequest
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::<SupplicantStaNetworkSetBssidRequest>(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
3132            Ok(())
3133        }
3134    }
3135
3136    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3137        for SupplicantStaNetworkSetBssidRequest
3138    {
3139        #[inline(always)]
3140        fn new_empty() -> Self {
3141            Self::default()
3142        }
3143
3144        unsafe fn decode(
3145            &mut self,
3146            decoder: &mut fidl::encoding::Decoder<'_, D>,
3147            offset: usize,
3148            mut depth: fidl::encoding::Depth,
3149        ) -> fidl::Result<()> {
3150            decoder.debug_check_bounds::<Self>(offset);
3151            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3152                None => return Err(fidl::Error::NotNullable),
3153                Some(len) => len,
3154            };
3155            // Calling decoder.out_of_line_offset(0) is not allowed.
3156            if len == 0 {
3157                return Ok(());
3158            };
3159            depth.increment()?;
3160            let envelope_size = 8;
3161            let bytes_len = len * envelope_size;
3162            let offset = decoder.out_of_line_offset(bytes_len)?;
3163            // Decode the envelope for each type.
3164            let mut _next_ordinal_to_read = 0;
3165            let mut next_offset = offset;
3166            let end_offset = offset + bytes_len;
3167            _next_ordinal_to_read += 1;
3168            if next_offset >= end_offset {
3169                return Ok(());
3170            }
3171
3172            // Decode unknown envelopes for gaps in ordinals.
3173            while _next_ordinal_to_read < 1 {
3174                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3175                _next_ordinal_to_read += 1;
3176                next_offset += envelope_size;
3177            }
3178
3179            let next_out_of_line = decoder.next_out_of_line();
3180            let handles_before = decoder.remaining_handles();
3181            if let Some((inlined, num_bytes, num_handles)) =
3182                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3183            {
3184                let member_inline_size =
3185                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3186                        decoder.context,
3187                    );
3188                if inlined != (member_inline_size <= 4) {
3189                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3190                }
3191                let inner_offset;
3192                let mut inner_depth = depth.clone();
3193                if inlined {
3194                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3195                    inner_offset = next_offset;
3196                } else {
3197                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3198                    inner_depth.increment()?;
3199                }
3200                let val_ref = self
3201                    .bssid
3202                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
3203                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
3204                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3205                {
3206                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3207                }
3208                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3209                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3210                }
3211            }
3212
3213            next_offset += envelope_size;
3214
3215            // Decode the remaining unknown envelopes.
3216            while next_offset < end_offset {
3217                _next_ordinal_to_read += 1;
3218                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3219                next_offset += envelope_size;
3220            }
3221
3222            Ok(())
3223        }
3224    }
3225
3226    impl SupplicantStaNetworkSetPskPassphraseRequest {
3227        #[inline(always)]
3228        fn max_ordinal_present(&self) -> u64 {
3229            if let Some(_) = self.passphrase {
3230                return 1;
3231            }
3232            0
3233        }
3234    }
3235
3236    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetPskPassphraseRequest {
3237        type Borrowed<'a> = &'a Self;
3238        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3239            value
3240        }
3241    }
3242
3243    unsafe impl fidl::encoding::TypeMarker for SupplicantStaNetworkSetPskPassphraseRequest {
3244        type Owned = Self;
3245
3246        #[inline(always)]
3247        fn inline_align(_context: fidl::encoding::Context) -> usize {
3248            8
3249        }
3250
3251        #[inline(always)]
3252        fn inline_size(_context: fidl::encoding::Context) -> usize {
3253            16
3254        }
3255    }
3256
3257    unsafe impl<D: fidl::encoding::ResourceDialect>
3258        fidl::encoding::Encode<SupplicantStaNetworkSetPskPassphraseRequest, D>
3259        for &SupplicantStaNetworkSetPskPassphraseRequest
3260    {
3261        unsafe fn encode(
3262            self,
3263            encoder: &mut fidl::encoding::Encoder<'_, D>,
3264            offset: usize,
3265            mut depth: fidl::encoding::Depth,
3266        ) -> fidl::Result<()> {
3267            encoder.debug_check_bounds::<SupplicantStaNetworkSetPskPassphraseRequest>(offset);
3268            // Vector header
3269            let max_ordinal: u64 = self.max_ordinal_present();
3270            encoder.write_num(max_ordinal, offset);
3271            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3272            // Calling encoder.out_of_line_offset(0) is not allowed.
3273            if max_ordinal == 0 {
3274                return Ok(());
3275            }
3276            depth.increment()?;
3277            let envelope_size = 8;
3278            let bytes_len = max_ordinal as usize * envelope_size;
3279            #[allow(unused_variables)]
3280            let offset = encoder.out_of_line_offset(bytes_len);
3281            let mut _prev_end_offset: usize = 0;
3282            if 1 > max_ordinal {
3283                return Ok(());
3284            }
3285
3286            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3287            // are envelope_size bytes.
3288            let cur_offset: usize = (1 - 1) * envelope_size;
3289
3290            // Zero reserved fields.
3291            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3292
3293            // Safety:
3294            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3295            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3296            //   envelope_size bytes, there is always sufficient room.
3297            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
3298            self.passphrase.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
3299            encoder, offset + cur_offset, depth
3300        )?;
3301
3302            _prev_end_offset = cur_offset + envelope_size;
3303
3304            Ok(())
3305        }
3306    }
3307
3308    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3309        for SupplicantStaNetworkSetPskPassphraseRequest
3310    {
3311        #[inline(always)]
3312        fn new_empty() -> Self {
3313            Self::default()
3314        }
3315
3316        unsafe fn decode(
3317            &mut self,
3318            decoder: &mut fidl::encoding::Decoder<'_, D>,
3319            offset: usize,
3320            mut depth: fidl::encoding::Depth,
3321        ) -> fidl::Result<()> {
3322            decoder.debug_check_bounds::<Self>(offset);
3323            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3324                None => return Err(fidl::Error::NotNullable),
3325                Some(len) => len,
3326            };
3327            // Calling decoder.out_of_line_offset(0) is not allowed.
3328            if len == 0 {
3329                return Ok(());
3330            };
3331            depth.increment()?;
3332            let envelope_size = 8;
3333            let bytes_len = len * envelope_size;
3334            let offset = decoder.out_of_line_offset(bytes_len)?;
3335            // Decode the envelope for each type.
3336            let mut _next_ordinal_to_read = 0;
3337            let mut next_offset = offset;
3338            let end_offset = offset + bytes_len;
3339            _next_ordinal_to_read += 1;
3340            if next_offset >= end_offset {
3341                return Ok(());
3342            }
3343
3344            // Decode unknown envelopes for gaps in ordinals.
3345            while _next_ordinal_to_read < 1 {
3346                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3347                _next_ordinal_to_read += 1;
3348                next_offset += envelope_size;
3349            }
3350
3351            let next_out_of_line = decoder.next_out_of_line();
3352            let handles_before = decoder.remaining_handles();
3353            if let Some((inlined, num_bytes, num_handles)) =
3354                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3355            {
3356                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3357                if inlined != (member_inline_size <= 4) {
3358                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3359                }
3360                let inner_offset;
3361                let mut inner_depth = depth.clone();
3362                if inlined {
3363                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3364                    inner_offset = next_offset;
3365                } else {
3366                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3367                    inner_depth.increment()?;
3368                }
3369                let val_ref = self.passphrase.get_or_insert_with(|| {
3370                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
3371                });
3372                fidl::decode!(
3373                    fidl::encoding::UnboundedVector<u8>,
3374                    D,
3375                    val_ref,
3376                    decoder,
3377                    inner_offset,
3378                    inner_depth
3379                )?;
3380                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3381                {
3382                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3383                }
3384                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3385                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3386                }
3387            }
3388
3389            next_offset += envelope_size;
3390
3391            // Decode the remaining unknown envelopes.
3392            while next_offset < end_offset {
3393                _next_ordinal_to_read += 1;
3394                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3395                next_offset += envelope_size;
3396            }
3397
3398            Ok(())
3399        }
3400    }
3401
3402    impl SupplicantStaNetworkSetSsidRequest {
3403        #[inline(always)]
3404        fn max_ordinal_present(&self) -> u64 {
3405            if let Some(_) = self.ssid {
3406                return 1;
3407            }
3408            0
3409        }
3410    }
3411
3412    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetSsidRequest {
3413        type Borrowed<'a> = &'a Self;
3414        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3415            value
3416        }
3417    }
3418
3419    unsafe impl fidl::encoding::TypeMarker for SupplicantStaNetworkSetSsidRequest {
3420        type Owned = Self;
3421
3422        #[inline(always)]
3423        fn inline_align(_context: fidl::encoding::Context) -> usize {
3424            8
3425        }
3426
3427        #[inline(always)]
3428        fn inline_size(_context: fidl::encoding::Context) -> usize {
3429            16
3430        }
3431    }
3432
3433    unsafe impl<D: fidl::encoding::ResourceDialect>
3434        fidl::encoding::Encode<SupplicantStaNetworkSetSsidRequest, D>
3435        for &SupplicantStaNetworkSetSsidRequest
3436    {
3437        unsafe fn encode(
3438            self,
3439            encoder: &mut fidl::encoding::Encoder<'_, D>,
3440            offset: usize,
3441            mut depth: fidl::encoding::Depth,
3442        ) -> fidl::Result<()> {
3443            encoder.debug_check_bounds::<SupplicantStaNetworkSetSsidRequest>(offset);
3444            // Vector header
3445            let max_ordinal: u64 = self.max_ordinal_present();
3446            encoder.write_num(max_ordinal, offset);
3447            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3448            // Calling encoder.out_of_line_offset(0) is not allowed.
3449            if max_ordinal == 0 {
3450                return Ok(());
3451            }
3452            depth.increment()?;
3453            let envelope_size = 8;
3454            let bytes_len = max_ordinal as usize * envelope_size;
3455            #[allow(unused_variables)]
3456            let offset = encoder.out_of_line_offset(bytes_len);
3457            let mut _prev_end_offset: usize = 0;
3458            if 1 > max_ordinal {
3459                return Ok(());
3460            }
3461
3462            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3463            // are envelope_size bytes.
3464            let cur_offset: usize = (1 - 1) * envelope_size;
3465
3466            // Zero reserved fields.
3467            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3468
3469            // Safety:
3470            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3471            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3472            //   envelope_size bytes, there is always sufficient room.
3473            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
3474                self.ssid.as_ref().map(
3475                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
3476                ),
3477                encoder,
3478                offset + cur_offset,
3479                depth,
3480            )?;
3481
3482            _prev_end_offset = cur_offset + envelope_size;
3483
3484            Ok(())
3485        }
3486    }
3487
3488    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3489        for SupplicantStaNetworkSetSsidRequest
3490    {
3491        #[inline(always)]
3492        fn new_empty() -> Self {
3493            Self::default()
3494        }
3495
3496        unsafe fn decode(
3497            &mut self,
3498            decoder: &mut fidl::encoding::Decoder<'_, D>,
3499            offset: usize,
3500            mut depth: fidl::encoding::Depth,
3501        ) -> fidl::Result<()> {
3502            decoder.debug_check_bounds::<Self>(offset);
3503            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3504                None => return Err(fidl::Error::NotNullable),
3505                Some(len) => len,
3506            };
3507            // Calling decoder.out_of_line_offset(0) is not allowed.
3508            if len == 0 {
3509                return Ok(());
3510            };
3511            depth.increment()?;
3512            let envelope_size = 8;
3513            let bytes_len = len * envelope_size;
3514            let offset = decoder.out_of_line_offset(bytes_len)?;
3515            // Decode the envelope for each type.
3516            let mut _next_ordinal_to_read = 0;
3517            let mut next_offset = offset;
3518            let end_offset = offset + bytes_len;
3519            _next_ordinal_to_read += 1;
3520            if next_offset >= end_offset {
3521                return Ok(());
3522            }
3523
3524            // Decode unknown envelopes for gaps in ordinals.
3525            while _next_ordinal_to_read < 1 {
3526                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3527                _next_ordinal_to_read += 1;
3528                next_offset += envelope_size;
3529            }
3530
3531            let next_out_of_line = decoder.next_out_of_line();
3532            let handles_before = decoder.remaining_handles();
3533            if let Some((inlined, num_bytes, num_handles)) =
3534                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3535            {
3536                let member_inline_size =
3537                    <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
3538                        decoder.context,
3539                    );
3540                if inlined != (member_inline_size <= 4) {
3541                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3542                }
3543                let inner_offset;
3544                let mut inner_depth = depth.clone();
3545                if inlined {
3546                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3547                    inner_offset = next_offset;
3548                } else {
3549                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3550                    inner_depth.increment()?;
3551                }
3552                let val_ref = self
3553                    .ssid
3554                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
3555                fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
3556                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3557                {
3558                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3559                }
3560                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3561                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3562                }
3563            }
3564
3565            next_offset += envelope_size;
3566
3567            // Decode the remaining unknown envelopes.
3568            while next_offset < end_offset {
3569                _next_ordinal_to_read += 1;
3570                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3571                next_offset += envelope_size;
3572            }
3573
3574            Ok(())
3575        }
3576    }
3577
3578    impl SupplicantStaNetworkSetWepKeyRequest {
3579        #[inline(always)]
3580        fn max_ordinal_present(&self) -> u64 {
3581            if let Some(_) = self.key_idx {
3582                return 2;
3583            }
3584            if let Some(_) = self.key {
3585                return 1;
3586            }
3587            0
3588        }
3589    }
3590
3591    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetWepKeyRequest {
3592        type Borrowed<'a> = &'a Self;
3593        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3594            value
3595        }
3596    }
3597
3598    unsafe impl fidl::encoding::TypeMarker for SupplicantStaNetworkSetWepKeyRequest {
3599        type Owned = Self;
3600
3601        #[inline(always)]
3602        fn inline_align(_context: fidl::encoding::Context) -> usize {
3603            8
3604        }
3605
3606        #[inline(always)]
3607        fn inline_size(_context: fidl::encoding::Context) -> usize {
3608            16
3609        }
3610    }
3611
3612    unsafe impl<D: fidl::encoding::ResourceDialect>
3613        fidl::encoding::Encode<SupplicantStaNetworkSetWepKeyRequest, D>
3614        for &SupplicantStaNetworkSetWepKeyRequest
3615    {
3616        unsafe fn encode(
3617            self,
3618            encoder: &mut fidl::encoding::Encoder<'_, D>,
3619            offset: usize,
3620            mut depth: fidl::encoding::Depth,
3621        ) -> fidl::Result<()> {
3622            encoder.debug_check_bounds::<SupplicantStaNetworkSetWepKeyRequest>(offset);
3623            // Vector header
3624            let max_ordinal: u64 = self.max_ordinal_present();
3625            encoder.write_num(max_ordinal, offset);
3626            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3627            // Calling encoder.out_of_line_offset(0) is not allowed.
3628            if max_ordinal == 0 {
3629                return Ok(());
3630            }
3631            depth.increment()?;
3632            let envelope_size = 8;
3633            let bytes_len = max_ordinal as usize * envelope_size;
3634            #[allow(unused_variables)]
3635            let offset = encoder.out_of_line_offset(bytes_len);
3636            let mut _prev_end_offset: usize = 0;
3637            if 1 > max_ordinal {
3638                return Ok(());
3639            }
3640
3641            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3642            // are envelope_size bytes.
3643            let cur_offset: usize = (1 - 1) * envelope_size;
3644
3645            // Zero reserved fields.
3646            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3647
3648            // Safety:
3649            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3650            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3651            //   envelope_size bytes, there is always sufficient room.
3652            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
3653            self.key.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
3654            encoder, offset + cur_offset, depth
3655        )?;
3656
3657            _prev_end_offset = cur_offset + envelope_size;
3658            if 2 > max_ordinal {
3659                return Ok(());
3660            }
3661
3662            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3663            // are envelope_size bytes.
3664            let cur_offset: usize = (2 - 1) * envelope_size;
3665
3666            // Zero reserved fields.
3667            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3668
3669            // Safety:
3670            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3671            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3672            //   envelope_size bytes, there is always sufficient room.
3673            fidl::encoding::encode_in_envelope_optional::<i32, D>(
3674                self.key_idx.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
3675                encoder,
3676                offset + cur_offset,
3677                depth,
3678            )?;
3679
3680            _prev_end_offset = cur_offset + envelope_size;
3681
3682            Ok(())
3683        }
3684    }
3685
3686    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3687        for SupplicantStaNetworkSetWepKeyRequest
3688    {
3689        #[inline(always)]
3690        fn new_empty() -> Self {
3691            Self::default()
3692        }
3693
3694        unsafe fn decode(
3695            &mut self,
3696            decoder: &mut fidl::encoding::Decoder<'_, D>,
3697            offset: usize,
3698            mut depth: fidl::encoding::Depth,
3699        ) -> fidl::Result<()> {
3700            decoder.debug_check_bounds::<Self>(offset);
3701            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3702                None => return Err(fidl::Error::NotNullable),
3703                Some(len) => len,
3704            };
3705            // Calling decoder.out_of_line_offset(0) is not allowed.
3706            if len == 0 {
3707                return Ok(());
3708            };
3709            depth.increment()?;
3710            let envelope_size = 8;
3711            let bytes_len = len * envelope_size;
3712            let offset = decoder.out_of_line_offset(bytes_len)?;
3713            // Decode the envelope for each type.
3714            let mut _next_ordinal_to_read = 0;
3715            let mut next_offset = offset;
3716            let end_offset = offset + bytes_len;
3717            _next_ordinal_to_read += 1;
3718            if next_offset >= end_offset {
3719                return Ok(());
3720            }
3721
3722            // Decode unknown envelopes for gaps in ordinals.
3723            while _next_ordinal_to_read < 1 {
3724                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3725                _next_ordinal_to_read += 1;
3726                next_offset += envelope_size;
3727            }
3728
3729            let next_out_of_line = decoder.next_out_of_line();
3730            let handles_before = decoder.remaining_handles();
3731            if let Some((inlined, num_bytes, num_handles)) =
3732                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3733            {
3734                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3735                if inlined != (member_inline_size <= 4) {
3736                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3737                }
3738                let inner_offset;
3739                let mut inner_depth = depth.clone();
3740                if inlined {
3741                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3742                    inner_offset = next_offset;
3743                } else {
3744                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3745                    inner_depth.increment()?;
3746                }
3747                let val_ref = self.key.get_or_insert_with(|| {
3748                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
3749                });
3750                fidl::decode!(
3751                    fidl::encoding::UnboundedVector<u8>,
3752                    D,
3753                    val_ref,
3754                    decoder,
3755                    inner_offset,
3756                    inner_depth
3757                )?;
3758                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3759                {
3760                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3761                }
3762                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3763                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3764                }
3765            }
3766
3767            next_offset += envelope_size;
3768            _next_ordinal_to_read += 1;
3769            if next_offset >= end_offset {
3770                return Ok(());
3771            }
3772
3773            // Decode unknown envelopes for gaps in ordinals.
3774            while _next_ordinal_to_read < 2 {
3775                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3776                _next_ordinal_to_read += 1;
3777                next_offset += envelope_size;
3778            }
3779
3780            let next_out_of_line = decoder.next_out_of_line();
3781            let handles_before = decoder.remaining_handles();
3782            if let Some((inlined, num_bytes, num_handles)) =
3783                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3784            {
3785                let member_inline_size =
3786                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3787                if inlined != (member_inline_size <= 4) {
3788                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3789                }
3790                let inner_offset;
3791                let mut inner_depth = depth.clone();
3792                if inlined {
3793                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3794                    inner_offset = next_offset;
3795                } else {
3796                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3797                    inner_depth.increment()?;
3798                }
3799                let val_ref = self.key_idx.get_or_insert_with(|| fidl::new_empty!(i32, D));
3800                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
3801                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3802                {
3803                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3804                }
3805                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3806                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3807                }
3808            }
3809
3810            next_offset += envelope_size;
3811
3812            // Decode the remaining unknown envelopes.
3813            while next_offset < end_offset {
3814                _next_ordinal_to_read += 1;
3815                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3816                next_offset += envelope_size;
3817            }
3818
3819            Ok(())
3820        }
3821    }
3822
3823    impl SupplicantStaNetworkSetWepTxKeyIdxRequest {
3824        #[inline(always)]
3825        fn max_ordinal_present(&self) -> u64 {
3826            if let Some(_) = self.key_idx {
3827                return 1;
3828            }
3829            0
3830        }
3831    }
3832
3833    impl fidl::encoding::ValueTypeMarker for SupplicantStaNetworkSetWepTxKeyIdxRequest {
3834        type Borrowed<'a> = &'a Self;
3835        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3836            value
3837        }
3838    }
3839
3840    unsafe impl fidl::encoding::TypeMarker for SupplicantStaNetworkSetWepTxKeyIdxRequest {
3841        type Owned = Self;
3842
3843        #[inline(always)]
3844        fn inline_align(_context: fidl::encoding::Context) -> usize {
3845            8
3846        }
3847
3848        #[inline(always)]
3849        fn inline_size(_context: fidl::encoding::Context) -> usize {
3850            16
3851        }
3852    }
3853
3854    unsafe impl<D: fidl::encoding::ResourceDialect>
3855        fidl::encoding::Encode<SupplicantStaNetworkSetWepTxKeyIdxRequest, D>
3856        for &SupplicantStaNetworkSetWepTxKeyIdxRequest
3857    {
3858        unsafe fn encode(
3859            self,
3860            encoder: &mut fidl::encoding::Encoder<'_, D>,
3861            offset: usize,
3862            mut depth: fidl::encoding::Depth,
3863        ) -> fidl::Result<()> {
3864            encoder.debug_check_bounds::<SupplicantStaNetworkSetWepTxKeyIdxRequest>(offset);
3865            // Vector header
3866            let max_ordinal: u64 = self.max_ordinal_present();
3867            encoder.write_num(max_ordinal, offset);
3868            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3869            // Calling encoder.out_of_line_offset(0) is not allowed.
3870            if max_ordinal == 0 {
3871                return Ok(());
3872            }
3873            depth.increment()?;
3874            let envelope_size = 8;
3875            let bytes_len = max_ordinal as usize * envelope_size;
3876            #[allow(unused_variables)]
3877            let offset = encoder.out_of_line_offset(bytes_len);
3878            let mut _prev_end_offset: usize = 0;
3879            if 1 > max_ordinal {
3880                return Ok(());
3881            }
3882
3883            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3884            // are envelope_size bytes.
3885            let cur_offset: usize = (1 - 1) * envelope_size;
3886
3887            // Zero reserved fields.
3888            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3889
3890            // Safety:
3891            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3892            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3893            //   envelope_size bytes, there is always sufficient room.
3894            fidl::encoding::encode_in_envelope_optional::<i32, D>(
3895                self.key_idx.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
3896                encoder,
3897                offset + cur_offset,
3898                depth,
3899            )?;
3900
3901            _prev_end_offset = cur_offset + envelope_size;
3902
3903            Ok(())
3904        }
3905    }
3906
3907    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3908        for SupplicantStaNetworkSetWepTxKeyIdxRequest
3909    {
3910        #[inline(always)]
3911        fn new_empty() -> Self {
3912            Self::default()
3913        }
3914
3915        unsafe fn decode(
3916            &mut self,
3917            decoder: &mut fidl::encoding::Decoder<'_, D>,
3918            offset: usize,
3919            mut depth: fidl::encoding::Depth,
3920        ) -> fidl::Result<()> {
3921            decoder.debug_check_bounds::<Self>(offset);
3922            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3923                None => return Err(fidl::Error::NotNullable),
3924                Some(len) => len,
3925            };
3926            // Calling decoder.out_of_line_offset(0) is not allowed.
3927            if len == 0 {
3928                return Ok(());
3929            };
3930            depth.increment()?;
3931            let envelope_size = 8;
3932            let bytes_len = len * envelope_size;
3933            let offset = decoder.out_of_line_offset(bytes_len)?;
3934            // Decode the envelope for each type.
3935            let mut _next_ordinal_to_read = 0;
3936            let mut next_offset = offset;
3937            let end_offset = offset + bytes_len;
3938            _next_ordinal_to_read += 1;
3939            if next_offset >= end_offset {
3940                return Ok(());
3941            }
3942
3943            // Decode unknown envelopes for gaps in ordinals.
3944            while _next_ordinal_to_read < 1 {
3945                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3946                _next_ordinal_to_read += 1;
3947                next_offset += envelope_size;
3948            }
3949
3950            let next_out_of_line = decoder.next_out_of_line();
3951            let handles_before = decoder.remaining_handles();
3952            if let Some((inlined, num_bytes, num_handles)) =
3953                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3954            {
3955                let member_inline_size =
3956                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3957                if inlined != (member_inline_size <= 4) {
3958                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3959                }
3960                let inner_offset;
3961                let mut inner_depth = depth.clone();
3962                if inlined {
3963                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3964                    inner_offset = next_offset;
3965                } else {
3966                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3967                    inner_depth.increment()?;
3968                }
3969                let val_ref = self.key_idx.get_or_insert_with(|| fidl::new_empty!(i32, D));
3970                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
3971                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3972                {
3973                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3974                }
3975                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3976                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3977                }
3978            }
3979
3980            next_offset += envelope_size;
3981
3982            // Decode the remaining unknown envelopes.
3983            while next_offset < end_offset {
3984                _next_ordinal_to_read += 1;
3985                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3986                next_offset += envelope_size;
3987            }
3988
3989            Ok(())
3990        }
3991    }
3992
3993    impl WifiChipGetAvailableModesResponse {
3994        #[inline(always)]
3995        fn max_ordinal_present(&self) -> u64 {
3996            if let Some(_) = self.chip_modes {
3997                return 1;
3998            }
3999            0
4000        }
4001    }
4002
4003    impl fidl::encoding::ValueTypeMarker for WifiChipGetAvailableModesResponse {
4004        type Borrowed<'a> = &'a Self;
4005        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4006            value
4007        }
4008    }
4009
4010    unsafe impl fidl::encoding::TypeMarker for WifiChipGetAvailableModesResponse {
4011        type Owned = Self;
4012
4013        #[inline(always)]
4014        fn inline_align(_context: fidl::encoding::Context) -> usize {
4015            8
4016        }
4017
4018        #[inline(always)]
4019        fn inline_size(_context: fidl::encoding::Context) -> usize {
4020            16
4021        }
4022    }
4023
4024    unsafe impl<D: fidl::encoding::ResourceDialect>
4025        fidl::encoding::Encode<WifiChipGetAvailableModesResponse, D>
4026        for &WifiChipGetAvailableModesResponse
4027    {
4028        unsafe fn encode(
4029            self,
4030            encoder: &mut fidl::encoding::Encoder<'_, D>,
4031            offset: usize,
4032            mut depth: fidl::encoding::Depth,
4033        ) -> fidl::Result<()> {
4034            encoder.debug_check_bounds::<WifiChipGetAvailableModesResponse>(offset);
4035            // Vector header
4036            let max_ordinal: u64 = self.max_ordinal_present();
4037            encoder.write_num(max_ordinal, offset);
4038            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4039            // Calling encoder.out_of_line_offset(0) is not allowed.
4040            if max_ordinal == 0 {
4041                return Ok(());
4042            }
4043            depth.increment()?;
4044            let envelope_size = 8;
4045            let bytes_len = max_ordinal as usize * envelope_size;
4046            #[allow(unused_variables)]
4047            let offset = encoder.out_of_line_offset(bytes_len);
4048            let mut _prev_end_offset: usize = 0;
4049            if 1 > max_ordinal {
4050                return Ok(());
4051            }
4052
4053            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4054            // are envelope_size bytes.
4055            let cur_offset: usize = (1 - 1) * envelope_size;
4056
4057            // Zero reserved fields.
4058            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4059
4060            // Safety:
4061            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4062            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4063            //   envelope_size bytes, there is always sufficient room.
4064            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ChipMode>, D>(
4065            self.chip_modes.as_ref().map(<fidl::encoding::UnboundedVector<ChipMode> as fidl::encoding::ValueTypeMarker>::borrow),
4066            encoder, offset + cur_offset, depth
4067        )?;
4068
4069            _prev_end_offset = cur_offset + envelope_size;
4070
4071            Ok(())
4072        }
4073    }
4074
4075    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4076        for WifiChipGetAvailableModesResponse
4077    {
4078        #[inline(always)]
4079        fn new_empty() -> Self {
4080            Self::default()
4081        }
4082
4083        unsafe fn decode(
4084            &mut self,
4085            decoder: &mut fidl::encoding::Decoder<'_, D>,
4086            offset: usize,
4087            mut depth: fidl::encoding::Depth,
4088        ) -> fidl::Result<()> {
4089            decoder.debug_check_bounds::<Self>(offset);
4090            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4091                None => return Err(fidl::Error::NotNullable),
4092                Some(len) => len,
4093            };
4094            // Calling decoder.out_of_line_offset(0) is not allowed.
4095            if len == 0 {
4096                return Ok(());
4097            };
4098            depth.increment()?;
4099            let envelope_size = 8;
4100            let bytes_len = len * envelope_size;
4101            let offset = decoder.out_of_line_offset(bytes_len)?;
4102            // Decode the envelope for each type.
4103            let mut _next_ordinal_to_read = 0;
4104            let mut next_offset = offset;
4105            let end_offset = offset + bytes_len;
4106            _next_ordinal_to_read += 1;
4107            if next_offset >= end_offset {
4108                return Ok(());
4109            }
4110
4111            // Decode unknown envelopes for gaps in ordinals.
4112            while _next_ordinal_to_read < 1 {
4113                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4114                _next_ordinal_to_read += 1;
4115                next_offset += envelope_size;
4116            }
4117
4118            let next_out_of_line = decoder.next_out_of_line();
4119            let handles_before = decoder.remaining_handles();
4120            if let Some((inlined, num_bytes, num_handles)) =
4121                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4122            {
4123                let member_inline_size = <fidl::encoding::UnboundedVector<ChipMode> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4124                if inlined != (member_inline_size <= 4) {
4125                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4126                }
4127                let inner_offset;
4128                let mut inner_depth = depth.clone();
4129                if inlined {
4130                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4131                    inner_offset = next_offset;
4132                } else {
4133                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4134                    inner_depth.increment()?;
4135                }
4136                let val_ref = self.chip_modes.get_or_insert_with(|| {
4137                    fidl::new_empty!(fidl::encoding::UnboundedVector<ChipMode>, D)
4138                });
4139                fidl::decode!(
4140                    fidl::encoding::UnboundedVector<ChipMode>,
4141                    D,
4142                    val_ref,
4143                    decoder,
4144                    inner_offset,
4145                    inner_depth
4146                )?;
4147                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4148                {
4149                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4150                }
4151                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4152                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4153                }
4154            }
4155
4156            next_offset += envelope_size;
4157
4158            // Decode the remaining unknown envelopes.
4159            while next_offset < end_offset {
4160                _next_ordinal_to_read += 1;
4161                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4162                next_offset += envelope_size;
4163            }
4164
4165            Ok(())
4166        }
4167    }
4168
4169    impl WifiChipGetCapabilitiesResponse {
4170        #[inline(always)]
4171        fn max_ordinal_present(&self) -> u64 {
4172            if let Some(_) = self.capabilities_mask {
4173                return 1;
4174            }
4175            0
4176        }
4177    }
4178
4179    impl fidl::encoding::ValueTypeMarker for WifiChipGetCapabilitiesResponse {
4180        type Borrowed<'a> = &'a Self;
4181        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4182            value
4183        }
4184    }
4185
4186    unsafe impl fidl::encoding::TypeMarker for WifiChipGetCapabilitiesResponse {
4187        type Owned = Self;
4188
4189        #[inline(always)]
4190        fn inline_align(_context: fidl::encoding::Context) -> usize {
4191            8
4192        }
4193
4194        #[inline(always)]
4195        fn inline_size(_context: fidl::encoding::Context) -> usize {
4196            16
4197        }
4198    }
4199
4200    unsafe impl<D: fidl::encoding::ResourceDialect>
4201        fidl::encoding::Encode<WifiChipGetCapabilitiesResponse, D>
4202        for &WifiChipGetCapabilitiesResponse
4203    {
4204        unsafe fn encode(
4205            self,
4206            encoder: &mut fidl::encoding::Encoder<'_, D>,
4207            offset: usize,
4208            mut depth: fidl::encoding::Depth,
4209        ) -> fidl::Result<()> {
4210            encoder.debug_check_bounds::<WifiChipGetCapabilitiesResponse>(offset);
4211            // Vector header
4212            let max_ordinal: u64 = self.max_ordinal_present();
4213            encoder.write_num(max_ordinal, offset);
4214            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4215            // Calling encoder.out_of_line_offset(0) is not allowed.
4216            if max_ordinal == 0 {
4217                return Ok(());
4218            }
4219            depth.increment()?;
4220            let envelope_size = 8;
4221            let bytes_len = max_ordinal as usize * envelope_size;
4222            #[allow(unused_variables)]
4223            let offset = encoder.out_of_line_offset(bytes_len);
4224            let mut _prev_end_offset: usize = 0;
4225            if 1 > max_ordinal {
4226                return Ok(());
4227            }
4228
4229            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4230            // are envelope_size bytes.
4231            let cur_offset: usize = (1 - 1) * envelope_size;
4232
4233            // Zero reserved fields.
4234            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4235
4236            // Safety:
4237            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4238            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4239            //   envelope_size bytes, there is always sufficient room.
4240            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4241                self.capabilities_mask
4242                    .as_ref()
4243                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4244                encoder,
4245                offset + cur_offset,
4246                depth,
4247            )?;
4248
4249            _prev_end_offset = cur_offset + envelope_size;
4250
4251            Ok(())
4252        }
4253    }
4254
4255    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4256        for WifiChipGetCapabilitiesResponse
4257    {
4258        #[inline(always)]
4259        fn new_empty() -> Self {
4260            Self::default()
4261        }
4262
4263        unsafe fn decode(
4264            &mut self,
4265            decoder: &mut fidl::encoding::Decoder<'_, D>,
4266            offset: usize,
4267            mut depth: fidl::encoding::Depth,
4268        ) -> fidl::Result<()> {
4269            decoder.debug_check_bounds::<Self>(offset);
4270            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4271                None => return Err(fidl::Error::NotNullable),
4272                Some(len) => len,
4273            };
4274            // Calling decoder.out_of_line_offset(0) is not allowed.
4275            if len == 0 {
4276                return Ok(());
4277            };
4278            depth.increment()?;
4279            let envelope_size = 8;
4280            let bytes_len = len * envelope_size;
4281            let offset = decoder.out_of_line_offset(bytes_len)?;
4282            // Decode the envelope for each type.
4283            let mut _next_ordinal_to_read = 0;
4284            let mut next_offset = offset;
4285            let end_offset = offset + bytes_len;
4286            _next_ordinal_to_read += 1;
4287            if next_offset >= end_offset {
4288                return Ok(());
4289            }
4290
4291            // Decode unknown envelopes for gaps in ordinals.
4292            while _next_ordinal_to_read < 1 {
4293                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4294                _next_ordinal_to_read += 1;
4295                next_offset += envelope_size;
4296            }
4297
4298            let next_out_of_line = decoder.next_out_of_line();
4299            let handles_before = decoder.remaining_handles();
4300            if let Some((inlined, num_bytes, num_handles)) =
4301                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4302            {
4303                let member_inline_size =
4304                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4305                if inlined != (member_inline_size <= 4) {
4306                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4307                }
4308                let inner_offset;
4309                let mut inner_depth = depth.clone();
4310                if inlined {
4311                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4312                    inner_offset = next_offset;
4313                } else {
4314                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4315                    inner_depth.increment()?;
4316                }
4317                let val_ref =
4318                    self.capabilities_mask.get_or_insert_with(|| fidl::new_empty!(u32, D));
4319                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4320                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4321                {
4322                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4323                }
4324                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4325                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4326                }
4327            }
4328
4329            next_offset += envelope_size;
4330
4331            // Decode the remaining unknown envelopes.
4332            while next_offset < end_offset {
4333                _next_ordinal_to_read += 1;
4334                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4335                next_offset += envelope_size;
4336            }
4337
4338            Ok(())
4339        }
4340    }
4341
4342    impl WifiChipGetIdResponse {
4343        #[inline(always)]
4344        fn max_ordinal_present(&self) -> u64 {
4345            if let Some(_) = self.id {
4346                return 1;
4347            }
4348            0
4349        }
4350    }
4351
4352    impl fidl::encoding::ValueTypeMarker for WifiChipGetIdResponse {
4353        type Borrowed<'a> = &'a Self;
4354        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4355            value
4356        }
4357    }
4358
4359    unsafe impl fidl::encoding::TypeMarker for WifiChipGetIdResponse {
4360        type Owned = Self;
4361
4362        #[inline(always)]
4363        fn inline_align(_context: fidl::encoding::Context) -> usize {
4364            8
4365        }
4366
4367        #[inline(always)]
4368        fn inline_size(_context: fidl::encoding::Context) -> usize {
4369            16
4370        }
4371    }
4372
4373    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WifiChipGetIdResponse, D>
4374        for &WifiChipGetIdResponse
4375    {
4376        unsafe fn encode(
4377            self,
4378            encoder: &mut fidl::encoding::Encoder<'_, D>,
4379            offset: usize,
4380            mut depth: fidl::encoding::Depth,
4381        ) -> fidl::Result<()> {
4382            encoder.debug_check_bounds::<WifiChipGetIdResponse>(offset);
4383            // Vector header
4384            let max_ordinal: u64 = self.max_ordinal_present();
4385            encoder.write_num(max_ordinal, offset);
4386            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4387            // Calling encoder.out_of_line_offset(0) is not allowed.
4388            if max_ordinal == 0 {
4389                return Ok(());
4390            }
4391            depth.increment()?;
4392            let envelope_size = 8;
4393            let bytes_len = max_ordinal as usize * envelope_size;
4394            #[allow(unused_variables)]
4395            let offset = encoder.out_of_line_offset(bytes_len);
4396            let mut _prev_end_offset: usize = 0;
4397            if 1 > max_ordinal {
4398                return Ok(());
4399            }
4400
4401            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4402            // are envelope_size bytes.
4403            let cur_offset: usize = (1 - 1) * envelope_size;
4404
4405            // Zero reserved fields.
4406            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4407
4408            // Safety:
4409            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4410            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4411            //   envelope_size bytes, there is always sufficient room.
4412            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4413                self.id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4414                encoder,
4415                offset + cur_offset,
4416                depth,
4417            )?;
4418
4419            _prev_end_offset = cur_offset + envelope_size;
4420
4421            Ok(())
4422        }
4423    }
4424
4425    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WifiChipGetIdResponse {
4426        #[inline(always)]
4427        fn new_empty() -> Self {
4428            Self::default()
4429        }
4430
4431        unsafe fn decode(
4432            &mut self,
4433            decoder: &mut fidl::encoding::Decoder<'_, D>,
4434            offset: usize,
4435            mut depth: fidl::encoding::Depth,
4436        ) -> fidl::Result<()> {
4437            decoder.debug_check_bounds::<Self>(offset);
4438            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4439                None => return Err(fidl::Error::NotNullable),
4440                Some(len) => len,
4441            };
4442            // Calling decoder.out_of_line_offset(0) is not allowed.
4443            if len == 0 {
4444                return Ok(());
4445            };
4446            depth.increment()?;
4447            let envelope_size = 8;
4448            let bytes_len = len * envelope_size;
4449            let offset = decoder.out_of_line_offset(bytes_len)?;
4450            // Decode the envelope for each type.
4451            let mut _next_ordinal_to_read = 0;
4452            let mut next_offset = offset;
4453            let end_offset = offset + bytes_len;
4454            _next_ordinal_to_read += 1;
4455            if next_offset >= end_offset {
4456                return Ok(());
4457            }
4458
4459            // Decode unknown envelopes for gaps in ordinals.
4460            while _next_ordinal_to_read < 1 {
4461                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4462                _next_ordinal_to_read += 1;
4463                next_offset += envelope_size;
4464            }
4465
4466            let next_out_of_line = decoder.next_out_of_line();
4467            let handles_before = decoder.remaining_handles();
4468            if let Some((inlined, num_bytes, num_handles)) =
4469                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4470            {
4471                let member_inline_size =
4472                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4473                if inlined != (member_inline_size <= 4) {
4474                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4475                }
4476                let inner_offset;
4477                let mut inner_depth = depth.clone();
4478                if inlined {
4479                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4480                    inner_offset = next_offset;
4481                } else {
4482                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4483                    inner_depth.increment()?;
4484                }
4485                let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u32, D));
4486                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4487                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4488                {
4489                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4490                }
4491                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4492                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4493                }
4494            }
4495
4496            next_offset += envelope_size;
4497
4498            // Decode the remaining unknown envelopes.
4499            while next_offset < end_offset {
4500                _next_ordinal_to_read += 1;
4501                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4502                next_offset += envelope_size;
4503            }
4504
4505            Ok(())
4506        }
4507    }
4508
4509    impl WifiChipGetModeResponse {
4510        #[inline(always)]
4511        fn max_ordinal_present(&self) -> u64 {
4512            if let Some(_) = self.mode {
4513                return 1;
4514            }
4515            0
4516        }
4517    }
4518
4519    impl fidl::encoding::ValueTypeMarker for WifiChipGetModeResponse {
4520        type Borrowed<'a> = &'a Self;
4521        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4522            value
4523        }
4524    }
4525
4526    unsafe impl fidl::encoding::TypeMarker for WifiChipGetModeResponse {
4527        type Owned = Self;
4528
4529        #[inline(always)]
4530        fn inline_align(_context: fidl::encoding::Context) -> usize {
4531            8
4532        }
4533
4534        #[inline(always)]
4535        fn inline_size(_context: fidl::encoding::Context) -> usize {
4536            16
4537        }
4538    }
4539
4540    unsafe impl<D: fidl::encoding::ResourceDialect>
4541        fidl::encoding::Encode<WifiChipGetModeResponse, D> for &WifiChipGetModeResponse
4542    {
4543        unsafe fn encode(
4544            self,
4545            encoder: &mut fidl::encoding::Encoder<'_, D>,
4546            offset: usize,
4547            mut depth: fidl::encoding::Depth,
4548        ) -> fidl::Result<()> {
4549            encoder.debug_check_bounds::<WifiChipGetModeResponse>(offset);
4550            // Vector header
4551            let max_ordinal: u64 = self.max_ordinal_present();
4552            encoder.write_num(max_ordinal, offset);
4553            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4554            // Calling encoder.out_of_line_offset(0) is not allowed.
4555            if max_ordinal == 0 {
4556                return Ok(());
4557            }
4558            depth.increment()?;
4559            let envelope_size = 8;
4560            let bytes_len = max_ordinal as usize * envelope_size;
4561            #[allow(unused_variables)]
4562            let offset = encoder.out_of_line_offset(bytes_len);
4563            let mut _prev_end_offset: usize = 0;
4564            if 1 > max_ordinal {
4565                return Ok(());
4566            }
4567
4568            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4569            // are envelope_size bytes.
4570            let cur_offset: usize = (1 - 1) * envelope_size;
4571
4572            // Zero reserved fields.
4573            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4574
4575            // Safety:
4576            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4577            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4578            //   envelope_size bytes, there is always sufficient room.
4579            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4580                self.mode.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4581                encoder,
4582                offset + cur_offset,
4583                depth,
4584            )?;
4585
4586            _prev_end_offset = cur_offset + envelope_size;
4587
4588            Ok(())
4589        }
4590    }
4591
4592    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4593        for WifiChipGetModeResponse
4594    {
4595        #[inline(always)]
4596        fn new_empty() -> Self {
4597            Self::default()
4598        }
4599
4600        unsafe fn decode(
4601            &mut self,
4602            decoder: &mut fidl::encoding::Decoder<'_, D>,
4603            offset: usize,
4604            mut depth: fidl::encoding::Depth,
4605        ) -> fidl::Result<()> {
4606            decoder.debug_check_bounds::<Self>(offset);
4607            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4608                None => return Err(fidl::Error::NotNullable),
4609                Some(len) => len,
4610            };
4611            // Calling decoder.out_of_line_offset(0) is not allowed.
4612            if len == 0 {
4613                return Ok(());
4614            };
4615            depth.increment()?;
4616            let envelope_size = 8;
4617            let bytes_len = len * envelope_size;
4618            let offset = decoder.out_of_line_offset(bytes_len)?;
4619            // Decode the envelope for each type.
4620            let mut _next_ordinal_to_read = 0;
4621            let mut next_offset = offset;
4622            let end_offset = offset + bytes_len;
4623            _next_ordinal_to_read += 1;
4624            if next_offset >= end_offset {
4625                return Ok(());
4626            }
4627
4628            // Decode unknown envelopes for gaps in ordinals.
4629            while _next_ordinal_to_read < 1 {
4630                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4631                _next_ordinal_to_read += 1;
4632                next_offset += envelope_size;
4633            }
4634
4635            let next_out_of_line = decoder.next_out_of_line();
4636            let handles_before = decoder.remaining_handles();
4637            if let Some((inlined, num_bytes, num_handles)) =
4638                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4639            {
4640                let member_inline_size =
4641                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4642                if inlined != (member_inline_size <= 4) {
4643                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4644                }
4645                let inner_offset;
4646                let mut inner_depth = depth.clone();
4647                if inlined {
4648                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4649                    inner_offset = next_offset;
4650                } else {
4651                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4652                    inner_depth.increment()?;
4653                }
4654                let val_ref = self.mode.get_or_insert_with(|| fidl::new_empty!(u32, D));
4655                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4656                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4657                {
4658                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4659                }
4660                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4661                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4662                }
4663            }
4664
4665            next_offset += envelope_size;
4666
4667            // Decode the remaining unknown envelopes.
4668            while next_offset < end_offset {
4669                _next_ordinal_to_read += 1;
4670                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4671                next_offset += envelope_size;
4672            }
4673
4674            Ok(())
4675        }
4676    }
4677
4678    impl WifiChipGetStaIfaceNamesResponse {
4679        #[inline(always)]
4680        fn max_ordinal_present(&self) -> u64 {
4681            if let Some(_) = self.iface_names {
4682                return 1;
4683            }
4684            0
4685        }
4686    }
4687
4688    impl fidl::encoding::ValueTypeMarker for WifiChipGetStaIfaceNamesResponse {
4689        type Borrowed<'a> = &'a Self;
4690        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4691            value
4692        }
4693    }
4694
4695    unsafe impl fidl::encoding::TypeMarker for WifiChipGetStaIfaceNamesResponse {
4696        type Owned = Self;
4697
4698        #[inline(always)]
4699        fn inline_align(_context: fidl::encoding::Context) -> usize {
4700            8
4701        }
4702
4703        #[inline(always)]
4704        fn inline_size(_context: fidl::encoding::Context) -> usize {
4705            16
4706        }
4707    }
4708
4709    unsafe impl<D: fidl::encoding::ResourceDialect>
4710        fidl::encoding::Encode<WifiChipGetStaIfaceNamesResponse, D>
4711        for &WifiChipGetStaIfaceNamesResponse
4712    {
4713        unsafe fn encode(
4714            self,
4715            encoder: &mut fidl::encoding::Encoder<'_, D>,
4716            offset: usize,
4717            mut depth: fidl::encoding::Depth,
4718        ) -> fidl::Result<()> {
4719            encoder.debug_check_bounds::<WifiChipGetStaIfaceNamesResponse>(offset);
4720            // Vector header
4721            let max_ordinal: u64 = self.max_ordinal_present();
4722            encoder.write_num(max_ordinal, offset);
4723            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4724            // Calling encoder.out_of_line_offset(0) is not allowed.
4725            if max_ordinal == 0 {
4726                return Ok(());
4727            }
4728            depth.increment()?;
4729            let envelope_size = 8;
4730            let bytes_len = max_ordinal as usize * envelope_size;
4731            #[allow(unused_variables)]
4732            let offset = encoder.out_of_line_offset(bytes_len);
4733            let mut _prev_end_offset: usize = 0;
4734            if 1 > max_ordinal {
4735                return Ok(());
4736            }
4737
4738            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4739            // are envelope_size bytes.
4740            let cur_offset: usize = (1 - 1) * envelope_size;
4741
4742            // Zero reserved fields.
4743            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4744
4745            // Safety:
4746            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4747            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4748            //   envelope_size bytes, there is always sufficient room.
4749            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<16>>, D>(
4750            self.iface_names.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<16>> as fidl::encoding::ValueTypeMarker>::borrow),
4751            encoder, offset + cur_offset, depth
4752        )?;
4753
4754            _prev_end_offset = cur_offset + envelope_size;
4755
4756            Ok(())
4757        }
4758    }
4759
4760    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4761        for WifiChipGetStaIfaceNamesResponse
4762    {
4763        #[inline(always)]
4764        fn new_empty() -> Self {
4765            Self::default()
4766        }
4767
4768        unsafe fn decode(
4769            &mut self,
4770            decoder: &mut fidl::encoding::Decoder<'_, D>,
4771            offset: usize,
4772            mut depth: fidl::encoding::Depth,
4773        ) -> fidl::Result<()> {
4774            decoder.debug_check_bounds::<Self>(offset);
4775            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4776                None => return Err(fidl::Error::NotNullable),
4777                Some(len) => len,
4778            };
4779            // Calling decoder.out_of_line_offset(0) is not allowed.
4780            if len == 0 {
4781                return Ok(());
4782            };
4783            depth.increment()?;
4784            let envelope_size = 8;
4785            let bytes_len = len * envelope_size;
4786            let offset = decoder.out_of_line_offset(bytes_len)?;
4787            // Decode the envelope for each type.
4788            let mut _next_ordinal_to_read = 0;
4789            let mut next_offset = offset;
4790            let end_offset = offset + bytes_len;
4791            _next_ordinal_to_read += 1;
4792            if next_offset >= end_offset {
4793                return Ok(());
4794            }
4795
4796            // Decode unknown envelopes for gaps in ordinals.
4797            while _next_ordinal_to_read < 1 {
4798                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4799                _next_ordinal_to_read += 1;
4800                next_offset += envelope_size;
4801            }
4802
4803            let next_out_of_line = decoder.next_out_of_line();
4804            let handles_before = decoder.remaining_handles();
4805            if let Some((inlined, num_bytes, num_handles)) =
4806                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4807            {
4808                let member_inline_size = <fidl::encoding::UnboundedVector<
4809                    fidl::encoding::BoundedString<16>,
4810                > as fidl::encoding::TypeMarker>::inline_size(
4811                    decoder.context
4812                );
4813                if inlined != (member_inline_size <= 4) {
4814                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4815                }
4816                let inner_offset;
4817                let mut inner_depth = depth.clone();
4818                if inlined {
4819                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4820                    inner_offset = next_offset;
4821                } else {
4822                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4823                    inner_depth.increment()?;
4824                }
4825                let val_ref = self.iface_names.get_or_insert_with(|| {
4826                    fidl::new_empty!(
4827                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<16>>,
4828                        D
4829                    )
4830                });
4831                fidl::decode!(
4832                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<16>>,
4833                    D,
4834                    val_ref,
4835                    decoder,
4836                    inner_offset,
4837                    inner_depth
4838                )?;
4839                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4840                {
4841                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4842                }
4843                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4844                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4845                }
4846            }
4847
4848            next_offset += envelope_size;
4849
4850            // Decode the remaining unknown envelopes.
4851            while next_offset < end_offset {
4852                _next_ordinal_to_read += 1;
4853                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4854                next_offset += envelope_size;
4855            }
4856
4857            Ok(())
4858        }
4859    }
4860
4861    impl WifiStaIfaceGetNameResponse {
4862        #[inline(always)]
4863        fn max_ordinal_present(&self) -> u64 {
4864            if let Some(_) = self.iface_name {
4865                return 1;
4866            }
4867            0
4868        }
4869    }
4870
4871    impl fidl::encoding::ValueTypeMarker for WifiStaIfaceGetNameResponse {
4872        type Borrowed<'a> = &'a Self;
4873        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4874            value
4875        }
4876    }
4877
4878    unsafe impl fidl::encoding::TypeMarker for WifiStaIfaceGetNameResponse {
4879        type Owned = Self;
4880
4881        #[inline(always)]
4882        fn inline_align(_context: fidl::encoding::Context) -> usize {
4883            8
4884        }
4885
4886        #[inline(always)]
4887        fn inline_size(_context: fidl::encoding::Context) -> usize {
4888            16
4889        }
4890    }
4891
4892    unsafe impl<D: fidl::encoding::ResourceDialect>
4893        fidl::encoding::Encode<WifiStaIfaceGetNameResponse, D> for &WifiStaIfaceGetNameResponse
4894    {
4895        unsafe fn encode(
4896            self,
4897            encoder: &mut fidl::encoding::Encoder<'_, D>,
4898            offset: usize,
4899            mut depth: fidl::encoding::Depth,
4900        ) -> fidl::Result<()> {
4901            encoder.debug_check_bounds::<WifiStaIfaceGetNameResponse>(offset);
4902            // Vector header
4903            let max_ordinal: u64 = self.max_ordinal_present();
4904            encoder.write_num(max_ordinal, offset);
4905            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4906            // Calling encoder.out_of_line_offset(0) is not allowed.
4907            if max_ordinal == 0 {
4908                return Ok(());
4909            }
4910            depth.increment()?;
4911            let envelope_size = 8;
4912            let bytes_len = max_ordinal as usize * envelope_size;
4913            #[allow(unused_variables)]
4914            let offset = encoder.out_of_line_offset(bytes_len);
4915            let mut _prev_end_offset: usize = 0;
4916            if 1 > max_ordinal {
4917                return Ok(());
4918            }
4919
4920            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4921            // are envelope_size bytes.
4922            let cur_offset: usize = (1 - 1) * envelope_size;
4923
4924            // Zero reserved fields.
4925            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4926
4927            // Safety:
4928            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4929            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4930            //   envelope_size bytes, there is always sufficient room.
4931            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<16>, D>(
4932                self.iface_name.as_ref().map(
4933                    <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow,
4934                ),
4935                encoder,
4936                offset + cur_offset,
4937                depth,
4938            )?;
4939
4940            _prev_end_offset = cur_offset + envelope_size;
4941
4942            Ok(())
4943        }
4944    }
4945
4946    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4947        for WifiStaIfaceGetNameResponse
4948    {
4949        #[inline(always)]
4950        fn new_empty() -> Self {
4951            Self::default()
4952        }
4953
4954        unsafe fn decode(
4955            &mut self,
4956            decoder: &mut fidl::encoding::Decoder<'_, D>,
4957            offset: usize,
4958            mut depth: fidl::encoding::Depth,
4959        ) -> fidl::Result<()> {
4960            decoder.debug_check_bounds::<Self>(offset);
4961            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4962                None => return Err(fidl::Error::NotNullable),
4963                Some(len) => len,
4964            };
4965            // Calling decoder.out_of_line_offset(0) is not allowed.
4966            if len == 0 {
4967                return Ok(());
4968            };
4969            depth.increment()?;
4970            let envelope_size = 8;
4971            let bytes_len = len * envelope_size;
4972            let offset = decoder.out_of_line_offset(bytes_len)?;
4973            // Decode the envelope for each type.
4974            let mut _next_ordinal_to_read = 0;
4975            let mut next_offset = offset;
4976            let end_offset = offset + bytes_len;
4977            _next_ordinal_to_read += 1;
4978            if next_offset >= end_offset {
4979                return Ok(());
4980            }
4981
4982            // Decode unknown envelopes for gaps in ordinals.
4983            while _next_ordinal_to_read < 1 {
4984                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4985                _next_ordinal_to_read += 1;
4986                next_offset += envelope_size;
4987            }
4988
4989            let next_out_of_line = decoder.next_out_of_line();
4990            let handles_before = decoder.remaining_handles();
4991            if let Some((inlined, num_bytes, num_handles)) =
4992                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4993            {
4994                let member_inline_size =
4995                    <fidl::encoding::BoundedString<16> as fidl::encoding::TypeMarker>::inline_size(
4996                        decoder.context,
4997                    );
4998                if inlined != (member_inline_size <= 4) {
4999                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5000                }
5001                let inner_offset;
5002                let mut inner_depth = depth.clone();
5003                if inlined {
5004                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5005                    inner_offset = next_offset;
5006                } else {
5007                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5008                    inner_depth.increment()?;
5009                }
5010                let val_ref = self
5011                    .iface_name
5012                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<16>, D));
5013                fidl::decode!(
5014                    fidl::encoding::BoundedString<16>,
5015                    D,
5016                    val_ref,
5017                    decoder,
5018                    inner_offset,
5019                    inner_depth
5020                )?;
5021                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5022                {
5023                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5024                }
5025                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5026                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5027                }
5028            }
5029
5030            next_offset += envelope_size;
5031
5032            // Decode the remaining unknown envelopes.
5033            while next_offset < end_offset {
5034                _next_ordinal_to_read += 1;
5035                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5036                next_offset += envelope_size;
5037            }
5038
5039            Ok(())
5040        }
5041    }
5042
5043    impl WifiGetChipIdsResponse {
5044        #[inline(always)]
5045        fn max_ordinal_present(&self) -> u64 {
5046            if let Some(_) = self.chip_ids {
5047                return 1;
5048            }
5049            0
5050        }
5051    }
5052
5053    impl fidl::encoding::ValueTypeMarker for WifiGetChipIdsResponse {
5054        type Borrowed<'a> = &'a Self;
5055        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5056            value
5057        }
5058    }
5059
5060    unsafe impl fidl::encoding::TypeMarker for WifiGetChipIdsResponse {
5061        type Owned = Self;
5062
5063        #[inline(always)]
5064        fn inline_align(_context: fidl::encoding::Context) -> usize {
5065            8
5066        }
5067
5068        #[inline(always)]
5069        fn inline_size(_context: fidl::encoding::Context) -> usize {
5070            16
5071        }
5072    }
5073
5074    unsafe impl<D: fidl::encoding::ResourceDialect>
5075        fidl::encoding::Encode<WifiGetChipIdsResponse, D> for &WifiGetChipIdsResponse
5076    {
5077        unsafe fn encode(
5078            self,
5079            encoder: &mut fidl::encoding::Encoder<'_, D>,
5080            offset: usize,
5081            mut depth: fidl::encoding::Depth,
5082        ) -> fidl::Result<()> {
5083            encoder.debug_check_bounds::<WifiGetChipIdsResponse>(offset);
5084            // Vector header
5085            let max_ordinal: u64 = self.max_ordinal_present();
5086            encoder.write_num(max_ordinal, offset);
5087            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5088            // Calling encoder.out_of_line_offset(0) is not allowed.
5089            if max_ordinal == 0 {
5090                return Ok(());
5091            }
5092            depth.increment()?;
5093            let envelope_size = 8;
5094            let bytes_len = max_ordinal as usize * envelope_size;
5095            #[allow(unused_variables)]
5096            let offset = encoder.out_of_line_offset(bytes_len);
5097            let mut _prev_end_offset: usize = 0;
5098            if 1 > max_ordinal {
5099                return Ok(());
5100            }
5101
5102            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5103            // are envelope_size bytes.
5104            let cur_offset: usize = (1 - 1) * envelope_size;
5105
5106            // Zero reserved fields.
5107            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5108
5109            // Safety:
5110            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5111            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5112            //   envelope_size bytes, there is always sufficient room.
5113            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u32>, D>(
5114            self.chip_ids.as_ref().map(<fidl::encoding::UnboundedVector<u32> as fidl::encoding::ValueTypeMarker>::borrow),
5115            encoder, offset + cur_offset, depth
5116        )?;
5117
5118            _prev_end_offset = cur_offset + envelope_size;
5119
5120            Ok(())
5121        }
5122    }
5123
5124    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5125        for WifiGetChipIdsResponse
5126    {
5127        #[inline(always)]
5128        fn new_empty() -> Self {
5129            Self::default()
5130        }
5131
5132        unsafe fn decode(
5133            &mut self,
5134            decoder: &mut fidl::encoding::Decoder<'_, D>,
5135            offset: usize,
5136            mut depth: fidl::encoding::Depth,
5137        ) -> fidl::Result<()> {
5138            decoder.debug_check_bounds::<Self>(offset);
5139            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5140                None => return Err(fidl::Error::NotNullable),
5141                Some(len) => len,
5142            };
5143            // Calling decoder.out_of_line_offset(0) is not allowed.
5144            if len == 0 {
5145                return Ok(());
5146            };
5147            depth.increment()?;
5148            let envelope_size = 8;
5149            let bytes_len = len * envelope_size;
5150            let offset = decoder.out_of_line_offset(bytes_len)?;
5151            // Decode the envelope for each type.
5152            let mut _next_ordinal_to_read = 0;
5153            let mut next_offset = offset;
5154            let end_offset = offset + bytes_len;
5155            _next_ordinal_to_read += 1;
5156            if next_offset >= end_offset {
5157                return Ok(());
5158            }
5159
5160            // Decode unknown envelopes for gaps in ordinals.
5161            while _next_ordinal_to_read < 1 {
5162                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5163                _next_ordinal_to_read += 1;
5164                next_offset += envelope_size;
5165            }
5166
5167            let next_out_of_line = decoder.next_out_of_line();
5168            let handles_before = decoder.remaining_handles();
5169            if let Some((inlined, num_bytes, num_handles)) =
5170                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5171            {
5172                let member_inline_size = <fidl::encoding::UnboundedVector<u32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5173                if inlined != (member_inline_size <= 4) {
5174                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5175                }
5176                let inner_offset;
5177                let mut inner_depth = depth.clone();
5178                if inlined {
5179                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5180                    inner_offset = next_offset;
5181                } else {
5182                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5183                    inner_depth.increment()?;
5184                }
5185                let val_ref = self.chip_ids.get_or_insert_with(|| {
5186                    fidl::new_empty!(fidl::encoding::UnboundedVector<u32>, D)
5187                });
5188                fidl::decode!(
5189                    fidl::encoding::UnboundedVector<u32>,
5190                    D,
5191                    val_ref,
5192                    decoder,
5193                    inner_offset,
5194                    inner_depth
5195                )?;
5196                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5197                {
5198                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5199                }
5200                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5201                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5202                }
5203            }
5204
5205            next_offset += envelope_size;
5206
5207            // Decode the remaining unknown envelopes.
5208            while next_offset < end_offset {
5209                _next_ordinal_to_read += 1;
5210                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5211                next_offset += envelope_size;
5212            }
5213
5214            Ok(())
5215        }
5216    }
5217
5218    impl WifiGetStateResponse {
5219        #[inline(always)]
5220        fn max_ordinal_present(&self) -> u64 {
5221            if let Some(_) = self.is_started {
5222                return 1;
5223            }
5224            0
5225        }
5226    }
5227
5228    impl fidl::encoding::ValueTypeMarker for WifiGetStateResponse {
5229        type Borrowed<'a> = &'a Self;
5230        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5231            value
5232        }
5233    }
5234
5235    unsafe impl fidl::encoding::TypeMarker for WifiGetStateResponse {
5236        type Owned = Self;
5237
5238        #[inline(always)]
5239        fn inline_align(_context: fidl::encoding::Context) -> usize {
5240            8
5241        }
5242
5243        #[inline(always)]
5244        fn inline_size(_context: fidl::encoding::Context) -> usize {
5245            16
5246        }
5247    }
5248
5249    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WifiGetStateResponse, D>
5250        for &WifiGetStateResponse
5251    {
5252        unsafe fn encode(
5253            self,
5254            encoder: &mut fidl::encoding::Encoder<'_, D>,
5255            offset: usize,
5256            mut depth: fidl::encoding::Depth,
5257        ) -> fidl::Result<()> {
5258            encoder.debug_check_bounds::<WifiGetStateResponse>(offset);
5259            // Vector header
5260            let max_ordinal: u64 = self.max_ordinal_present();
5261            encoder.write_num(max_ordinal, offset);
5262            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5263            // Calling encoder.out_of_line_offset(0) is not allowed.
5264            if max_ordinal == 0 {
5265                return Ok(());
5266            }
5267            depth.increment()?;
5268            let envelope_size = 8;
5269            let bytes_len = max_ordinal as usize * envelope_size;
5270            #[allow(unused_variables)]
5271            let offset = encoder.out_of_line_offset(bytes_len);
5272            let mut _prev_end_offset: usize = 0;
5273            if 1 > max_ordinal {
5274                return Ok(());
5275            }
5276
5277            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5278            // are envelope_size bytes.
5279            let cur_offset: usize = (1 - 1) * envelope_size;
5280
5281            // Zero reserved fields.
5282            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5283
5284            // Safety:
5285            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5286            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5287            //   envelope_size bytes, there is always sufficient room.
5288            fidl::encoding::encode_in_envelope_optional::<bool, D>(
5289                self.is_started.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5290                encoder,
5291                offset + cur_offset,
5292                depth,
5293            )?;
5294
5295            _prev_end_offset = cur_offset + envelope_size;
5296
5297            Ok(())
5298        }
5299    }
5300
5301    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WifiGetStateResponse {
5302        #[inline(always)]
5303        fn new_empty() -> Self {
5304            Self::default()
5305        }
5306
5307        unsafe fn decode(
5308            &mut self,
5309            decoder: &mut fidl::encoding::Decoder<'_, D>,
5310            offset: usize,
5311            mut depth: fidl::encoding::Depth,
5312        ) -> fidl::Result<()> {
5313            decoder.debug_check_bounds::<Self>(offset);
5314            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5315                None => return Err(fidl::Error::NotNullable),
5316                Some(len) => len,
5317            };
5318            // Calling decoder.out_of_line_offset(0) is not allowed.
5319            if len == 0 {
5320                return Ok(());
5321            };
5322            depth.increment()?;
5323            let envelope_size = 8;
5324            let bytes_len = len * envelope_size;
5325            let offset = decoder.out_of_line_offset(bytes_len)?;
5326            // Decode the envelope for each type.
5327            let mut _next_ordinal_to_read = 0;
5328            let mut next_offset = offset;
5329            let end_offset = offset + bytes_len;
5330            _next_ordinal_to_read += 1;
5331            if next_offset >= end_offset {
5332                return Ok(());
5333            }
5334
5335            // Decode unknown envelopes for gaps in ordinals.
5336            while _next_ordinal_to_read < 1 {
5337                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5338                _next_ordinal_to_read += 1;
5339                next_offset += envelope_size;
5340            }
5341
5342            let next_out_of_line = decoder.next_out_of_line();
5343            let handles_before = decoder.remaining_handles();
5344            if let Some((inlined, num_bytes, num_handles)) =
5345                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5346            {
5347                let member_inline_size =
5348                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5349                if inlined != (member_inline_size <= 4) {
5350                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5351                }
5352                let inner_offset;
5353                let mut inner_depth = depth.clone();
5354                if inlined {
5355                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5356                    inner_offset = next_offset;
5357                } else {
5358                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5359                    inner_depth.increment()?;
5360                }
5361                let val_ref = self.is_started.get_or_insert_with(|| fidl::new_empty!(bool, D));
5362                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5363                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5364                {
5365                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5366                }
5367                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5368                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5369                }
5370            }
5371
5372            next_offset += envelope_size;
5373
5374            // Decode the remaining unknown envelopes.
5375            while next_offset < end_offset {
5376                _next_ordinal_to_read += 1;
5377                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5378                next_offset += envelope_size;
5379            }
5380
5381            Ok(())
5382        }
5383    }
5384}