Skip to main content

fidl_fuchsia_wlan_phy_common/
fidl_fuchsia_wlan_phy_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 WlanPhyNotifyError {
13    /// An unspecified internal error occurred.
14    Internal,
15    /// Receiver does not have support for handling the event.
16    NotSupported,
17    /// Receiver not ready to handle event yet.
18    ShouldWait,
19    /// Invalid arguments.
20    InvalidArgs,
21    #[doc(hidden)]
22    __SourceBreaking { unknown_ordinal: u32 },
23}
24
25/// Pattern that matches an unknown `WlanPhyNotifyError` member.
26#[macro_export]
27macro_rules! WlanPhyNotifyErrorUnknown {
28    () => {
29        _
30    };
31}
32
33impl WlanPhyNotifyError {
34    #[inline]
35    pub fn from_primitive(prim: u32) -> Option<Self> {
36        match prim {
37            1 => Some(Self::Internal),
38            2 => Some(Self::NotSupported),
39            3 => Some(Self::ShouldWait),
40            4 => Some(Self::InvalidArgs),
41            _ => None,
42        }
43    }
44
45    #[inline]
46    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
47        match prim {
48            1 => Self::Internal,
49            2 => Self::NotSupported,
50            3 => Self::ShouldWait,
51            4 => Self::InvalidArgs,
52            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
53        }
54    }
55
56    #[inline]
57    pub fn unknown() -> Self {
58        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
59    }
60
61    #[inline]
62    pub const fn into_primitive(self) -> u32 {
63        match self {
64            Self::Internal => 1,
65            Self::NotSupported => 2,
66            Self::ShouldWait => 3,
67            Self::InvalidArgs => 4,
68            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
69        }
70    }
71
72    #[inline]
73    pub fn is_unknown(&self) -> bool {
74        match self {
75            Self::__SourceBreaking { unknown_ordinal: _ } => true,
76            _ => false,
77        }
78    }
79}
80
81#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
82#[repr(C)]
83pub struct WlanPhySetCountryRequest {
84    pub country: [u8; 2],
85}
86
87impl fidl::Persistable for WlanPhySetCountryRequest {}
88
89#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
90#[repr(C)]
91pub struct WlanPhyGetCountryResponse {
92    pub country: [u8; 2],
93}
94
95impl fidl::Persistable for WlanPhyGetCountryResponse {}
96
97#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
98pub struct WlanPhyGetTxPowerScenarioResponse {
99    pub scenario: fidl_fuchsia_wlan_internal_common::TxPowerScenario,
100}
101
102impl fidl::Persistable for WlanPhyGetTxPowerScenarioResponse {}
103
104#[derive(Clone, Debug, Default, PartialEq)]
105pub struct WlanPhyDestroyIfaceRequest {
106    /// This field is required.
107    pub iface_id: Option<u16>,
108    #[doc(hidden)]
109    pub __source_breaking: fidl::marker::SourceBreaking,
110}
111
112impl fidl::Persistable for WlanPhyDestroyIfaceRequest {}
113
114#[derive(Clone, Debug, Default, PartialEq)]
115pub struct WlanPhyNotifyOnCountryCodeChangeRequest {
116    pub phy_country: Option<[u8; 2]>,
117    #[doc(hidden)]
118    pub __source_breaking: fidl::marker::SourceBreaking,
119}
120
121impl fidl::Persistable for WlanPhyNotifyOnCountryCodeChangeRequest {}
122
123#[derive(Clone, Debug, Default, PartialEq)]
124pub struct WlanPhyNotifyOnCriticalErrorRequest {
125    pub reason_code: Option<fidl_fuchsia_wlan_internal_common::CriticalErrorReason>,
126    #[doc(hidden)]
127    pub __source_breaking: fidl::marker::SourceBreaking,
128}
129
130impl fidl::Persistable for WlanPhyNotifyOnCriticalErrorRequest {}
131
132#[derive(Clone, Debug, Default, PartialEq)]
133pub struct WlanPhySetBtCoexistenceModeRequest {
134    pub mode: Option<fidl_fuchsia_wlan_internal_common::BtCoexistenceMode>,
135    #[doc(hidden)]
136    pub __source_breaking: fidl::marker::SourceBreaking,
137}
138
139impl fidl::Persistable for WlanPhySetBtCoexistenceModeRequest {}
140
141#[derive(Clone, Debug, Default, PartialEq)]
142pub struct WlanPhySetPowerSaveModeRequest {
143    /// This field is required.
144    pub ps_mode: Option<fidl_fuchsia_wlan_common_common::PowerSaveType>,
145    #[doc(hidden)]
146    pub __source_breaking: fidl::marker::SourceBreaking,
147}
148
149impl fidl::Persistable for WlanPhySetPowerSaveModeRequest {}
150
151#[derive(Clone, Debug, Default, PartialEq)]
152pub struct WlanPhySetTxPowerScenarioRequest {
153    pub scenario: Option<fidl_fuchsia_wlan_internal_common::TxPowerScenario>,
154    #[doc(hidden)]
155    pub __source_breaking: fidl::marker::SourceBreaking,
156}
157
158impl fidl::Persistable for WlanPhySetTxPowerScenarioRequest {}
159
160#[derive(Clone, Debug, Default, PartialEq)]
161pub struct WlanPhyCreateIfaceResponse {
162    /// This field is always present.
163    pub iface_id: Option<u16>,
164    #[doc(hidden)]
165    pub __source_breaking: fidl::marker::SourceBreaking,
166}
167
168impl fidl::Persistable for WlanPhyCreateIfaceResponse {}
169
170#[derive(Clone, Debug, Default, PartialEq)]
171pub struct WlanPhyGetPowerSaveModeResponse {
172    /// This field is required.
173    pub ps_mode: Option<fidl_fuchsia_wlan_common_common::PowerSaveType>,
174    #[doc(hidden)]
175    pub __source_breaking: fidl::marker::SourceBreaking,
176}
177
178impl fidl::Persistable for WlanPhyGetPowerSaveModeResponse {}
179
180#[derive(Clone, Debug, Default, PartialEq)]
181pub struct WlanPhyGetPowerStateResponse {
182    pub power_on: Option<bool>,
183    #[doc(hidden)]
184    pub __source_breaking: fidl::marker::SourceBreaking,
185}
186
187impl fidl::Persistable for WlanPhyGetPowerStateResponse {}
188
189#[derive(Clone, Debug, Default, PartialEq)]
190pub struct WlanPhyGetSupportedMacRolesResponse {
191    pub supported_mac_roles: Option<Vec<fidl_fuchsia_wlan_common_common::WlanMacRole>>,
192    #[doc(hidden)]
193    pub __source_breaking: fidl::marker::SourceBreaking,
194}
195
196impl fidl::Persistable for WlanPhyGetSupportedMacRolesResponse {}
197
198pub mod wlan_phy_ordinals {
199    pub const INIT: u64 = 0x399fe5e97bb0eff3;
200    pub const GET_SUPPORTED_MAC_ROLES: u64 = 0x36891bcf679ad34a;
201    pub const CREATE_IFACE: u64 = 0x4cc00e15727fbb8e;
202    pub const DESTROY_IFACE: u64 = 0xfa408ede62bf8bc;
203    pub const SET_COUNTRY: u64 = 0x6d1258ed25af4a0f;
204    pub const CLEAR_COUNTRY: u64 = 0x73f333d223cec34f;
205    pub const GET_COUNTRY: u64 = 0x13ee2c5158d8507a;
206    pub const SET_POWER_SAVE_MODE: u64 = 0x4e164c65070f890d;
207    pub const GET_POWER_SAVE_MODE: u64 = 0x1cbd3390a4230826;
208    pub const POWER_DOWN: u64 = 0x79fb1043c6355d0a;
209    pub const POWER_UP: u64 = 0x6dcde9a4259494f2;
210    pub const RESET: u64 = 0x2f0f1d8f2f22988f;
211    pub const GET_POWER_STATE: u64 = 0x4639d1e5e93102c1;
212    pub const SET_BT_COEXISTENCE_MODE: u64 = 0x5ac69f24a87cac05;
213    pub const SET_TX_POWER_SCENARIO: u64 = 0x72e4d055cd3a18dc;
214    pub const RESET_TX_POWER_SCENARIO: u64 = 0x78c3bd271b3bb712;
215    pub const GET_TX_POWER_SCENARIO: u64 = 0x62f9717d964b3c8e;
216}
217
218pub mod wlan_phy_notify_ordinals {
219    pub const ON_CRITICAL_ERROR: u64 = 0x621a4bea612fda2;
220    pub const ON_COUNTRY_CODE_CHANGE: u64 = 0x9db74ddfe1fa156;
221}
222
223mod internal {
224    use super::*;
225    unsafe impl fidl::encoding::TypeMarker for WlanPhyNotifyError {
226        type Owned = Self;
227
228        #[inline(always)]
229        fn inline_align(_context: fidl::encoding::Context) -> usize {
230            std::mem::align_of::<u32>()
231        }
232
233        #[inline(always)]
234        fn inline_size(_context: fidl::encoding::Context) -> usize {
235            std::mem::size_of::<u32>()
236        }
237
238        #[inline(always)]
239        fn encode_is_copy() -> bool {
240            false
241        }
242
243        #[inline(always)]
244        fn decode_is_copy() -> bool {
245            false
246        }
247    }
248
249    impl fidl::encoding::ValueTypeMarker for WlanPhyNotifyError {
250        type Borrowed<'a> = Self;
251        #[inline(always)]
252        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
253            *value
254        }
255    }
256
257    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
258        for WlanPhyNotifyError
259    {
260        #[inline]
261        unsafe fn encode(
262            self,
263            encoder: &mut fidl::encoding::Encoder<'_, D>,
264            offset: usize,
265            _depth: fidl::encoding::Depth,
266        ) -> fidl::Result<()> {
267            encoder.debug_check_bounds::<Self>(offset);
268            encoder.write_num(self.into_primitive(), offset);
269            Ok(())
270        }
271    }
272
273    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanPhyNotifyError {
274        #[inline(always)]
275        fn new_empty() -> Self {
276            Self::unknown()
277        }
278
279        #[inline]
280        unsafe fn decode(
281            &mut self,
282            decoder: &mut fidl::encoding::Decoder<'_, D>,
283            offset: usize,
284            _depth: fidl::encoding::Depth,
285        ) -> fidl::Result<()> {
286            decoder.debug_check_bounds::<Self>(offset);
287            let prim = decoder.read_num::<u32>(offset);
288
289            *self = Self::from_primitive_allow_unknown(prim);
290            Ok(())
291        }
292    }
293
294    impl fidl::encoding::ValueTypeMarker for WlanPhySetCountryRequest {
295        type Borrowed<'a> = &'a Self;
296        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
297            value
298        }
299    }
300
301    unsafe impl fidl::encoding::TypeMarker for WlanPhySetCountryRequest {
302        type Owned = Self;
303
304        #[inline(always)]
305        fn inline_align(_context: fidl::encoding::Context) -> usize {
306            1
307        }
308
309        #[inline(always)]
310        fn inline_size(_context: fidl::encoding::Context) -> usize {
311            2
312        }
313        #[inline(always)]
314        fn encode_is_copy() -> bool {
315            true
316        }
317
318        #[inline(always)]
319        fn decode_is_copy() -> bool {
320            true
321        }
322    }
323
324    unsafe impl<D: fidl::encoding::ResourceDialect>
325        fidl::encoding::Encode<WlanPhySetCountryRequest, D> for &WlanPhySetCountryRequest
326    {
327        #[inline]
328        unsafe fn encode(
329            self,
330            encoder: &mut fidl::encoding::Encoder<'_, D>,
331            offset: usize,
332            _depth: fidl::encoding::Depth,
333        ) -> fidl::Result<()> {
334            encoder.debug_check_bounds::<WlanPhySetCountryRequest>(offset);
335            unsafe {
336                // Copy the object into the buffer.
337                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
338                (buf_ptr as *mut WlanPhySetCountryRequest)
339                    .write_unaligned((self as *const WlanPhySetCountryRequest).read());
340                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
341                // done second because the memcpy will write garbage to these bytes.
342            }
343            Ok(())
344        }
345    }
346    unsafe impl<
347        D: fidl::encoding::ResourceDialect,
348        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 2>, D>,
349    > fidl::encoding::Encode<WlanPhySetCountryRequest, D> for (T0,)
350    {
351        #[inline]
352        unsafe fn encode(
353            self,
354            encoder: &mut fidl::encoding::Encoder<'_, D>,
355            offset: usize,
356            depth: fidl::encoding::Depth,
357        ) -> fidl::Result<()> {
358            encoder.debug_check_bounds::<WlanPhySetCountryRequest>(offset);
359            // Zero out padding regions. There's no need to apply masks
360            // because the unmasked parts will be overwritten by fields.
361            // Write the fields.
362            self.0.encode(encoder, offset + 0, depth)?;
363            Ok(())
364        }
365    }
366
367    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
368        for WlanPhySetCountryRequest
369    {
370        #[inline(always)]
371        fn new_empty() -> Self {
372            Self { country: fidl::new_empty!(fidl::encoding::Array<u8, 2>, D) }
373        }
374
375        #[inline]
376        unsafe fn decode(
377            &mut self,
378            decoder: &mut fidl::encoding::Decoder<'_, D>,
379            offset: usize,
380            _depth: fidl::encoding::Depth,
381        ) -> fidl::Result<()> {
382            decoder.debug_check_bounds::<Self>(offset);
383            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
384            // Verify that padding bytes are zero.
385            // Copy from the buffer into the object.
386            unsafe {
387                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
388            }
389            Ok(())
390        }
391    }
392
393    impl fidl::encoding::ValueTypeMarker for WlanPhyGetCountryResponse {
394        type Borrowed<'a> = &'a Self;
395        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
396            value
397        }
398    }
399
400    unsafe impl fidl::encoding::TypeMarker for WlanPhyGetCountryResponse {
401        type Owned = Self;
402
403        #[inline(always)]
404        fn inline_align(_context: fidl::encoding::Context) -> usize {
405            1
406        }
407
408        #[inline(always)]
409        fn inline_size(_context: fidl::encoding::Context) -> usize {
410            2
411        }
412        #[inline(always)]
413        fn encode_is_copy() -> bool {
414            true
415        }
416
417        #[inline(always)]
418        fn decode_is_copy() -> bool {
419            true
420        }
421    }
422
423    unsafe impl<D: fidl::encoding::ResourceDialect>
424        fidl::encoding::Encode<WlanPhyGetCountryResponse, D> for &WlanPhyGetCountryResponse
425    {
426        #[inline]
427        unsafe fn encode(
428            self,
429            encoder: &mut fidl::encoding::Encoder<'_, D>,
430            offset: usize,
431            _depth: fidl::encoding::Depth,
432        ) -> fidl::Result<()> {
433            encoder.debug_check_bounds::<WlanPhyGetCountryResponse>(offset);
434            unsafe {
435                // Copy the object into the buffer.
436                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
437                (buf_ptr as *mut WlanPhyGetCountryResponse)
438                    .write_unaligned((self as *const WlanPhyGetCountryResponse).read());
439                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
440                // done second because the memcpy will write garbage to these bytes.
441            }
442            Ok(())
443        }
444    }
445    unsafe impl<
446        D: fidl::encoding::ResourceDialect,
447        T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 2>, D>,
448    > fidl::encoding::Encode<WlanPhyGetCountryResponse, D> for (T0,)
449    {
450        #[inline]
451        unsafe fn encode(
452            self,
453            encoder: &mut fidl::encoding::Encoder<'_, D>,
454            offset: usize,
455            depth: fidl::encoding::Depth,
456        ) -> fidl::Result<()> {
457            encoder.debug_check_bounds::<WlanPhyGetCountryResponse>(offset);
458            // Zero out padding regions. There's no need to apply masks
459            // because the unmasked parts will be overwritten by fields.
460            // Write the fields.
461            self.0.encode(encoder, offset + 0, depth)?;
462            Ok(())
463        }
464    }
465
466    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
467        for WlanPhyGetCountryResponse
468    {
469        #[inline(always)]
470        fn new_empty() -> Self {
471            Self { country: fidl::new_empty!(fidl::encoding::Array<u8, 2>, D) }
472        }
473
474        #[inline]
475        unsafe fn decode(
476            &mut self,
477            decoder: &mut fidl::encoding::Decoder<'_, D>,
478            offset: usize,
479            _depth: fidl::encoding::Depth,
480        ) -> fidl::Result<()> {
481            decoder.debug_check_bounds::<Self>(offset);
482            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
483            // Verify that padding bytes are zero.
484            // Copy from the buffer into the object.
485            unsafe {
486                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
487            }
488            Ok(())
489        }
490    }
491
492    impl fidl::encoding::ValueTypeMarker for WlanPhyGetTxPowerScenarioResponse {
493        type Borrowed<'a> = &'a Self;
494        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
495            value
496        }
497    }
498
499    unsafe impl fidl::encoding::TypeMarker for WlanPhyGetTxPowerScenarioResponse {
500        type Owned = Self;
501
502        #[inline(always)]
503        fn inline_align(_context: fidl::encoding::Context) -> usize {
504            4
505        }
506
507        #[inline(always)]
508        fn inline_size(_context: fidl::encoding::Context) -> usize {
509            4
510        }
511    }
512
513    unsafe impl<D: fidl::encoding::ResourceDialect>
514        fidl::encoding::Encode<WlanPhyGetTxPowerScenarioResponse, D>
515        for &WlanPhyGetTxPowerScenarioResponse
516    {
517        #[inline]
518        unsafe fn encode(
519            self,
520            encoder: &mut fidl::encoding::Encoder<'_, D>,
521            offset: usize,
522            _depth: fidl::encoding::Depth,
523        ) -> fidl::Result<()> {
524            encoder.debug_check_bounds::<WlanPhyGetTxPowerScenarioResponse>(offset);
525            // Delegate to tuple encoding.
526            fidl::encoding::Encode::<WlanPhyGetTxPowerScenarioResponse, D>::encode(
527                (
528                    <fidl_fuchsia_wlan_internal_common::TxPowerScenario as fidl::encoding::ValueTypeMarker>::borrow(&self.scenario),
529                ),
530                encoder, offset, _depth
531            )
532        }
533    }
534    unsafe impl<
535        D: fidl::encoding::ResourceDialect,
536        T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal_common::TxPowerScenario, D>,
537    > fidl::encoding::Encode<WlanPhyGetTxPowerScenarioResponse, D> for (T0,)
538    {
539        #[inline]
540        unsafe fn encode(
541            self,
542            encoder: &mut fidl::encoding::Encoder<'_, D>,
543            offset: usize,
544            depth: fidl::encoding::Depth,
545        ) -> fidl::Result<()> {
546            encoder.debug_check_bounds::<WlanPhyGetTxPowerScenarioResponse>(offset);
547            // Zero out padding regions. There's no need to apply masks
548            // because the unmasked parts will be overwritten by fields.
549            // Write the fields.
550            self.0.encode(encoder, offset + 0, depth)?;
551            Ok(())
552        }
553    }
554
555    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
556        for WlanPhyGetTxPowerScenarioResponse
557    {
558        #[inline(always)]
559        fn new_empty() -> Self {
560            Self {
561                scenario: fidl::new_empty!(fidl_fuchsia_wlan_internal_common::TxPowerScenario, D),
562            }
563        }
564
565        #[inline]
566        unsafe fn decode(
567            &mut self,
568            decoder: &mut fidl::encoding::Decoder<'_, D>,
569            offset: usize,
570            _depth: fidl::encoding::Depth,
571        ) -> fidl::Result<()> {
572            decoder.debug_check_bounds::<Self>(offset);
573            // Verify that padding bytes are zero.
574            fidl::decode!(
575                fidl_fuchsia_wlan_internal_common::TxPowerScenario,
576                D,
577                &mut self.scenario,
578                decoder,
579                offset + 0,
580                _depth
581            )?;
582            Ok(())
583        }
584    }
585
586    impl WlanPhyDestroyIfaceRequest {
587        #[inline(always)]
588        fn max_ordinal_present(&self) -> u64 {
589            if let Some(_) = self.iface_id {
590                return 1;
591            }
592            0
593        }
594    }
595
596    impl fidl::encoding::ValueTypeMarker for WlanPhyDestroyIfaceRequest {
597        type Borrowed<'a> = &'a Self;
598        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
599            value
600        }
601    }
602
603    unsafe impl fidl::encoding::TypeMarker for WlanPhyDestroyIfaceRequest {
604        type Owned = Self;
605
606        #[inline(always)]
607        fn inline_align(_context: fidl::encoding::Context) -> usize {
608            8
609        }
610
611        #[inline(always)]
612        fn inline_size(_context: fidl::encoding::Context) -> usize {
613            16
614        }
615    }
616
617    unsafe impl<D: fidl::encoding::ResourceDialect>
618        fidl::encoding::Encode<WlanPhyDestroyIfaceRequest, D> for &WlanPhyDestroyIfaceRequest
619    {
620        unsafe fn encode(
621            self,
622            encoder: &mut fidl::encoding::Encoder<'_, D>,
623            offset: usize,
624            mut depth: fidl::encoding::Depth,
625        ) -> fidl::Result<()> {
626            encoder.debug_check_bounds::<WlanPhyDestroyIfaceRequest>(offset);
627            // Vector header
628            let max_ordinal: u64 = self.max_ordinal_present();
629            encoder.write_num(max_ordinal, offset);
630            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
631            // Calling encoder.out_of_line_offset(0) is not allowed.
632            if max_ordinal == 0 {
633                return Ok(());
634            }
635            depth.increment()?;
636            let envelope_size = 8;
637            let bytes_len = max_ordinal as usize * envelope_size;
638            #[allow(unused_variables)]
639            let offset = encoder.out_of_line_offset(bytes_len);
640            let mut _prev_end_offset: usize = 0;
641            if 1 > max_ordinal {
642                return Ok(());
643            }
644
645            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
646            // are envelope_size bytes.
647            let cur_offset: usize = (1 - 1) * envelope_size;
648
649            // Zero reserved fields.
650            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
651
652            // Safety:
653            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
654            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
655            //   envelope_size bytes, there is always sufficient room.
656            fidl::encoding::encode_in_envelope_optional::<u16, D>(
657                self.iface_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
658                encoder,
659                offset + cur_offset,
660                depth,
661            )?;
662
663            _prev_end_offset = cur_offset + envelope_size;
664
665            Ok(())
666        }
667    }
668
669    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
670        for WlanPhyDestroyIfaceRequest
671    {
672        #[inline(always)]
673        fn new_empty() -> Self {
674            Self::default()
675        }
676
677        unsafe fn decode(
678            &mut self,
679            decoder: &mut fidl::encoding::Decoder<'_, D>,
680            offset: usize,
681            mut depth: fidl::encoding::Depth,
682        ) -> fidl::Result<()> {
683            decoder.debug_check_bounds::<Self>(offset);
684            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
685                None => return Err(fidl::Error::NotNullable),
686                Some(len) => len,
687            };
688            // Calling decoder.out_of_line_offset(0) is not allowed.
689            if len == 0 {
690                return Ok(());
691            };
692            depth.increment()?;
693            let envelope_size = 8;
694            let bytes_len = len * envelope_size;
695            let offset = decoder.out_of_line_offset(bytes_len)?;
696            // Decode the envelope for each type.
697            let mut _next_ordinal_to_read = 0;
698            let mut next_offset = offset;
699            let end_offset = offset + bytes_len;
700            _next_ordinal_to_read += 1;
701            if next_offset >= end_offset {
702                return Ok(());
703            }
704
705            // Decode unknown envelopes for gaps in ordinals.
706            while _next_ordinal_to_read < 1 {
707                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
708                _next_ordinal_to_read += 1;
709                next_offset += envelope_size;
710            }
711
712            let next_out_of_line = decoder.next_out_of_line();
713            let handles_before = decoder.remaining_handles();
714            if let Some((inlined, num_bytes, num_handles)) =
715                fidl::encoding::decode_envelope_header(decoder, next_offset)?
716            {
717                let member_inline_size =
718                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
719                if inlined != (member_inline_size <= 4) {
720                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
721                }
722                let inner_offset;
723                let mut inner_depth = depth.clone();
724                if inlined {
725                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
726                    inner_offset = next_offset;
727                } else {
728                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
729                    inner_depth.increment()?;
730                }
731                let val_ref = self.iface_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
732                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
733                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
734                {
735                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
736                }
737                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
738                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
739                }
740            }
741
742            next_offset += envelope_size;
743
744            // Decode the remaining unknown envelopes.
745            while next_offset < end_offset {
746                _next_ordinal_to_read += 1;
747                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
748                next_offset += envelope_size;
749            }
750
751            Ok(())
752        }
753    }
754
755    impl WlanPhyNotifyOnCountryCodeChangeRequest {
756        #[inline(always)]
757        fn max_ordinal_present(&self) -> u64 {
758            if let Some(_) = self.phy_country {
759                return 1;
760            }
761            0
762        }
763    }
764
765    impl fidl::encoding::ValueTypeMarker for WlanPhyNotifyOnCountryCodeChangeRequest {
766        type Borrowed<'a> = &'a Self;
767        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
768            value
769        }
770    }
771
772    unsafe impl fidl::encoding::TypeMarker for WlanPhyNotifyOnCountryCodeChangeRequest {
773        type Owned = Self;
774
775        #[inline(always)]
776        fn inline_align(_context: fidl::encoding::Context) -> usize {
777            8
778        }
779
780        #[inline(always)]
781        fn inline_size(_context: fidl::encoding::Context) -> usize {
782            16
783        }
784    }
785
786    unsafe impl<D: fidl::encoding::ResourceDialect>
787        fidl::encoding::Encode<WlanPhyNotifyOnCountryCodeChangeRequest, D>
788        for &WlanPhyNotifyOnCountryCodeChangeRequest
789    {
790        unsafe fn encode(
791            self,
792            encoder: &mut fidl::encoding::Encoder<'_, D>,
793            offset: usize,
794            mut depth: fidl::encoding::Depth,
795        ) -> fidl::Result<()> {
796            encoder.debug_check_bounds::<WlanPhyNotifyOnCountryCodeChangeRequest>(offset);
797            // Vector header
798            let max_ordinal: u64 = self.max_ordinal_present();
799            encoder.write_num(max_ordinal, offset);
800            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
801            // Calling encoder.out_of_line_offset(0) is not allowed.
802            if max_ordinal == 0 {
803                return Ok(());
804            }
805            depth.increment()?;
806            let envelope_size = 8;
807            let bytes_len = max_ordinal as usize * envelope_size;
808            #[allow(unused_variables)]
809            let offset = encoder.out_of_line_offset(bytes_len);
810            let mut _prev_end_offset: usize = 0;
811            if 1 > max_ordinal {
812                return Ok(());
813            }
814
815            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
816            // are envelope_size bytes.
817            let cur_offset: usize = (1 - 1) * envelope_size;
818
819            // Zero reserved fields.
820            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
821
822            // Safety:
823            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
824            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
825            //   envelope_size bytes, there is always sufficient room.
826            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 2>, D>(
827                self.phy_country
828                    .as_ref()
829                    .map(<fidl::encoding::Array<u8, 2> as fidl::encoding::ValueTypeMarker>::borrow),
830                encoder,
831                offset + cur_offset,
832                depth,
833            )?;
834
835            _prev_end_offset = cur_offset + envelope_size;
836
837            Ok(())
838        }
839    }
840
841    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
842        for WlanPhyNotifyOnCountryCodeChangeRequest
843    {
844        #[inline(always)]
845        fn new_empty() -> Self {
846            Self::default()
847        }
848
849        unsafe fn decode(
850            &mut self,
851            decoder: &mut fidl::encoding::Decoder<'_, D>,
852            offset: usize,
853            mut depth: fidl::encoding::Depth,
854        ) -> fidl::Result<()> {
855            decoder.debug_check_bounds::<Self>(offset);
856            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
857                None => return Err(fidl::Error::NotNullable),
858                Some(len) => len,
859            };
860            // Calling decoder.out_of_line_offset(0) is not allowed.
861            if len == 0 {
862                return Ok(());
863            };
864            depth.increment()?;
865            let envelope_size = 8;
866            let bytes_len = len * envelope_size;
867            let offset = decoder.out_of_line_offset(bytes_len)?;
868            // Decode the envelope for each type.
869            let mut _next_ordinal_to_read = 0;
870            let mut next_offset = offset;
871            let end_offset = offset + bytes_len;
872            _next_ordinal_to_read += 1;
873            if next_offset >= end_offset {
874                return Ok(());
875            }
876
877            // Decode unknown envelopes for gaps in ordinals.
878            while _next_ordinal_to_read < 1 {
879                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
880                _next_ordinal_to_read += 1;
881                next_offset += envelope_size;
882            }
883
884            let next_out_of_line = decoder.next_out_of_line();
885            let handles_before = decoder.remaining_handles();
886            if let Some((inlined, num_bytes, num_handles)) =
887                fidl::encoding::decode_envelope_header(decoder, next_offset)?
888            {
889                let member_inline_size =
890                    <fidl::encoding::Array<u8, 2> as fidl::encoding::TypeMarker>::inline_size(
891                        decoder.context,
892                    );
893                if inlined != (member_inline_size <= 4) {
894                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
895                }
896                let inner_offset;
897                let mut inner_depth = depth.clone();
898                if inlined {
899                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
900                    inner_offset = next_offset;
901                } else {
902                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
903                    inner_depth.increment()?;
904                }
905                let val_ref = self
906                    .phy_country
907                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 2>, D));
908                fidl::decode!(fidl::encoding::Array<u8, 2>, D, val_ref, decoder, inner_offset, inner_depth)?;
909                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
910                {
911                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
912                }
913                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
914                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
915                }
916            }
917
918            next_offset += envelope_size;
919
920            // Decode the remaining unknown envelopes.
921            while next_offset < end_offset {
922                _next_ordinal_to_read += 1;
923                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
924                next_offset += envelope_size;
925            }
926
927            Ok(())
928        }
929    }
930
931    impl WlanPhyNotifyOnCriticalErrorRequest {
932        #[inline(always)]
933        fn max_ordinal_present(&self) -> u64 {
934            if let Some(_) = self.reason_code {
935                return 1;
936            }
937            0
938        }
939    }
940
941    impl fidl::encoding::ValueTypeMarker for WlanPhyNotifyOnCriticalErrorRequest {
942        type Borrowed<'a> = &'a Self;
943        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
944            value
945        }
946    }
947
948    unsafe impl fidl::encoding::TypeMarker for WlanPhyNotifyOnCriticalErrorRequest {
949        type Owned = Self;
950
951        #[inline(always)]
952        fn inline_align(_context: fidl::encoding::Context) -> usize {
953            8
954        }
955
956        #[inline(always)]
957        fn inline_size(_context: fidl::encoding::Context) -> usize {
958            16
959        }
960    }
961
962    unsafe impl<D: fidl::encoding::ResourceDialect>
963        fidl::encoding::Encode<WlanPhyNotifyOnCriticalErrorRequest, D>
964        for &WlanPhyNotifyOnCriticalErrorRequest
965    {
966        unsafe fn encode(
967            self,
968            encoder: &mut fidl::encoding::Encoder<'_, D>,
969            offset: usize,
970            mut depth: fidl::encoding::Depth,
971        ) -> fidl::Result<()> {
972            encoder.debug_check_bounds::<WlanPhyNotifyOnCriticalErrorRequest>(offset);
973            // Vector header
974            let max_ordinal: u64 = self.max_ordinal_present();
975            encoder.write_num(max_ordinal, offset);
976            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
977            // Calling encoder.out_of_line_offset(0) is not allowed.
978            if max_ordinal == 0 {
979                return Ok(());
980            }
981            depth.increment()?;
982            let envelope_size = 8;
983            let bytes_len = max_ordinal as usize * envelope_size;
984            #[allow(unused_variables)]
985            let offset = encoder.out_of_line_offset(bytes_len);
986            let mut _prev_end_offset: usize = 0;
987            if 1 > max_ordinal {
988                return Ok(());
989            }
990
991            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
992            // are envelope_size bytes.
993            let cur_offset: usize = (1 - 1) * envelope_size;
994
995            // Zero reserved fields.
996            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
997
998            // Safety:
999            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1000            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1001            //   envelope_size bytes, there is always sufficient room.
1002            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_internal_common::CriticalErrorReason, D>(
1003            self.reason_code.as_ref().map(<fidl_fuchsia_wlan_internal_common::CriticalErrorReason as fidl::encoding::ValueTypeMarker>::borrow),
1004            encoder, offset + cur_offset, depth
1005        )?;
1006
1007            _prev_end_offset = cur_offset + envelope_size;
1008
1009            Ok(())
1010        }
1011    }
1012
1013    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1014        for WlanPhyNotifyOnCriticalErrorRequest
1015    {
1016        #[inline(always)]
1017        fn new_empty() -> Self {
1018            Self::default()
1019        }
1020
1021        unsafe fn decode(
1022            &mut self,
1023            decoder: &mut fidl::encoding::Decoder<'_, D>,
1024            offset: usize,
1025            mut depth: fidl::encoding::Depth,
1026        ) -> fidl::Result<()> {
1027            decoder.debug_check_bounds::<Self>(offset);
1028            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1029                None => return Err(fidl::Error::NotNullable),
1030                Some(len) => len,
1031            };
1032            // Calling decoder.out_of_line_offset(0) is not allowed.
1033            if len == 0 {
1034                return Ok(());
1035            };
1036            depth.increment()?;
1037            let envelope_size = 8;
1038            let bytes_len = len * envelope_size;
1039            let offset = decoder.out_of_line_offset(bytes_len)?;
1040            // Decode the envelope for each type.
1041            let mut _next_ordinal_to_read = 0;
1042            let mut next_offset = offset;
1043            let end_offset = offset + bytes_len;
1044            _next_ordinal_to_read += 1;
1045            if next_offset >= end_offset {
1046                return Ok(());
1047            }
1048
1049            // Decode unknown envelopes for gaps in ordinals.
1050            while _next_ordinal_to_read < 1 {
1051                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1052                _next_ordinal_to_read += 1;
1053                next_offset += envelope_size;
1054            }
1055
1056            let next_out_of_line = decoder.next_out_of_line();
1057            let handles_before = decoder.remaining_handles();
1058            if let Some((inlined, num_bytes, num_handles)) =
1059                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1060            {
1061                let member_inline_size = <fidl_fuchsia_wlan_internal_common::CriticalErrorReason as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1062                if inlined != (member_inline_size <= 4) {
1063                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1064                }
1065                let inner_offset;
1066                let mut inner_depth = depth.clone();
1067                if inlined {
1068                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1069                    inner_offset = next_offset;
1070                } else {
1071                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1072                    inner_depth.increment()?;
1073                }
1074                let val_ref = self.reason_code.get_or_insert_with(|| {
1075                    fidl::new_empty!(fidl_fuchsia_wlan_internal_common::CriticalErrorReason, D)
1076                });
1077                fidl::decode!(
1078                    fidl_fuchsia_wlan_internal_common::CriticalErrorReason,
1079                    D,
1080                    val_ref,
1081                    decoder,
1082                    inner_offset,
1083                    inner_depth
1084                )?;
1085                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1086                {
1087                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1088                }
1089                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1090                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1091                }
1092            }
1093
1094            next_offset += envelope_size;
1095
1096            // Decode the remaining unknown envelopes.
1097            while next_offset < end_offset {
1098                _next_ordinal_to_read += 1;
1099                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1100                next_offset += envelope_size;
1101            }
1102
1103            Ok(())
1104        }
1105    }
1106
1107    impl WlanPhySetBtCoexistenceModeRequest {
1108        #[inline(always)]
1109        fn max_ordinal_present(&self) -> u64 {
1110            if let Some(_) = self.mode {
1111                return 1;
1112            }
1113            0
1114        }
1115    }
1116
1117    impl fidl::encoding::ValueTypeMarker for WlanPhySetBtCoexistenceModeRequest {
1118        type Borrowed<'a> = &'a Self;
1119        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1120            value
1121        }
1122    }
1123
1124    unsafe impl fidl::encoding::TypeMarker for WlanPhySetBtCoexistenceModeRequest {
1125        type Owned = Self;
1126
1127        #[inline(always)]
1128        fn inline_align(_context: fidl::encoding::Context) -> usize {
1129            8
1130        }
1131
1132        #[inline(always)]
1133        fn inline_size(_context: fidl::encoding::Context) -> usize {
1134            16
1135        }
1136    }
1137
1138    unsafe impl<D: fidl::encoding::ResourceDialect>
1139        fidl::encoding::Encode<WlanPhySetBtCoexistenceModeRequest, D>
1140        for &WlanPhySetBtCoexistenceModeRequest
1141    {
1142        unsafe fn encode(
1143            self,
1144            encoder: &mut fidl::encoding::Encoder<'_, D>,
1145            offset: usize,
1146            mut depth: fidl::encoding::Depth,
1147        ) -> fidl::Result<()> {
1148            encoder.debug_check_bounds::<WlanPhySetBtCoexistenceModeRequest>(offset);
1149            // Vector header
1150            let max_ordinal: u64 = self.max_ordinal_present();
1151            encoder.write_num(max_ordinal, offset);
1152            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1153            // Calling encoder.out_of_line_offset(0) is not allowed.
1154            if max_ordinal == 0 {
1155                return Ok(());
1156            }
1157            depth.increment()?;
1158            let envelope_size = 8;
1159            let bytes_len = max_ordinal as usize * envelope_size;
1160            #[allow(unused_variables)]
1161            let offset = encoder.out_of_line_offset(bytes_len);
1162            let mut _prev_end_offset: usize = 0;
1163            if 1 > max_ordinal {
1164                return Ok(());
1165            }
1166
1167            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1168            // are envelope_size bytes.
1169            let cur_offset: usize = (1 - 1) * envelope_size;
1170
1171            // Zero reserved fields.
1172            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1173
1174            // Safety:
1175            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1176            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1177            //   envelope_size bytes, there is always sufficient room.
1178            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_internal_common::BtCoexistenceMode, D>(
1179            self.mode.as_ref().map(<fidl_fuchsia_wlan_internal_common::BtCoexistenceMode as fidl::encoding::ValueTypeMarker>::borrow),
1180            encoder, offset + cur_offset, depth
1181        )?;
1182
1183            _prev_end_offset = cur_offset + envelope_size;
1184
1185            Ok(())
1186        }
1187    }
1188
1189    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1190        for WlanPhySetBtCoexistenceModeRequest
1191    {
1192        #[inline(always)]
1193        fn new_empty() -> Self {
1194            Self::default()
1195        }
1196
1197        unsafe fn decode(
1198            &mut self,
1199            decoder: &mut fidl::encoding::Decoder<'_, D>,
1200            offset: usize,
1201            mut depth: fidl::encoding::Depth,
1202        ) -> fidl::Result<()> {
1203            decoder.debug_check_bounds::<Self>(offset);
1204            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1205                None => return Err(fidl::Error::NotNullable),
1206                Some(len) => len,
1207            };
1208            // Calling decoder.out_of_line_offset(0) is not allowed.
1209            if len == 0 {
1210                return Ok(());
1211            };
1212            depth.increment()?;
1213            let envelope_size = 8;
1214            let bytes_len = len * envelope_size;
1215            let offset = decoder.out_of_line_offset(bytes_len)?;
1216            // Decode the envelope for each type.
1217            let mut _next_ordinal_to_read = 0;
1218            let mut next_offset = offset;
1219            let end_offset = offset + bytes_len;
1220            _next_ordinal_to_read += 1;
1221            if next_offset >= end_offset {
1222                return Ok(());
1223            }
1224
1225            // Decode unknown envelopes for gaps in ordinals.
1226            while _next_ordinal_to_read < 1 {
1227                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1228                _next_ordinal_to_read += 1;
1229                next_offset += envelope_size;
1230            }
1231
1232            let next_out_of_line = decoder.next_out_of_line();
1233            let handles_before = decoder.remaining_handles();
1234            if let Some((inlined, num_bytes, num_handles)) =
1235                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1236            {
1237                let member_inline_size = <fidl_fuchsia_wlan_internal_common::BtCoexistenceMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1238                if inlined != (member_inline_size <= 4) {
1239                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1240                }
1241                let inner_offset;
1242                let mut inner_depth = depth.clone();
1243                if inlined {
1244                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1245                    inner_offset = next_offset;
1246                } else {
1247                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1248                    inner_depth.increment()?;
1249                }
1250                let val_ref = self.mode.get_or_insert_with(|| {
1251                    fidl::new_empty!(fidl_fuchsia_wlan_internal_common::BtCoexistenceMode, D)
1252                });
1253                fidl::decode!(
1254                    fidl_fuchsia_wlan_internal_common::BtCoexistenceMode,
1255                    D,
1256                    val_ref,
1257                    decoder,
1258                    inner_offset,
1259                    inner_depth
1260                )?;
1261                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1262                {
1263                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1264                }
1265                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1266                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1267                }
1268            }
1269
1270            next_offset += envelope_size;
1271
1272            // Decode the remaining unknown envelopes.
1273            while next_offset < end_offset {
1274                _next_ordinal_to_read += 1;
1275                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1276                next_offset += envelope_size;
1277            }
1278
1279            Ok(())
1280        }
1281    }
1282
1283    impl WlanPhySetPowerSaveModeRequest {
1284        #[inline(always)]
1285        fn max_ordinal_present(&self) -> u64 {
1286            if let Some(_) = self.ps_mode {
1287                return 1;
1288            }
1289            0
1290        }
1291    }
1292
1293    impl fidl::encoding::ValueTypeMarker for WlanPhySetPowerSaveModeRequest {
1294        type Borrowed<'a> = &'a Self;
1295        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1296            value
1297        }
1298    }
1299
1300    unsafe impl fidl::encoding::TypeMarker for WlanPhySetPowerSaveModeRequest {
1301        type Owned = Self;
1302
1303        #[inline(always)]
1304        fn inline_align(_context: fidl::encoding::Context) -> usize {
1305            8
1306        }
1307
1308        #[inline(always)]
1309        fn inline_size(_context: fidl::encoding::Context) -> usize {
1310            16
1311        }
1312    }
1313
1314    unsafe impl<D: fidl::encoding::ResourceDialect>
1315        fidl::encoding::Encode<WlanPhySetPowerSaveModeRequest, D>
1316        for &WlanPhySetPowerSaveModeRequest
1317    {
1318        unsafe fn encode(
1319            self,
1320            encoder: &mut fidl::encoding::Encoder<'_, D>,
1321            offset: usize,
1322            mut depth: fidl::encoding::Depth,
1323        ) -> fidl::Result<()> {
1324            encoder.debug_check_bounds::<WlanPhySetPowerSaveModeRequest>(offset);
1325            // Vector header
1326            let max_ordinal: u64 = self.max_ordinal_present();
1327            encoder.write_num(max_ordinal, offset);
1328            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1329            // Calling encoder.out_of_line_offset(0) is not allowed.
1330            if max_ordinal == 0 {
1331                return Ok(());
1332            }
1333            depth.increment()?;
1334            let envelope_size = 8;
1335            let bytes_len = max_ordinal as usize * envelope_size;
1336            #[allow(unused_variables)]
1337            let offset = encoder.out_of_line_offset(bytes_len);
1338            let mut _prev_end_offset: usize = 0;
1339            if 1 > 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 = (1 - 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_fuchsia_wlan_common_common::PowerSaveType, D>(
1355            self.ps_mode.as_ref().map(<fidl_fuchsia_wlan_common_common::PowerSaveType 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>
1366        for WlanPhySetPowerSaveModeRequest
1367    {
1368        #[inline(always)]
1369        fn new_empty() -> Self {
1370            Self::default()
1371        }
1372
1373        unsafe fn decode(
1374            &mut self,
1375            decoder: &mut fidl::encoding::Decoder<'_, D>,
1376            offset: usize,
1377            mut depth: fidl::encoding::Depth,
1378        ) -> fidl::Result<()> {
1379            decoder.debug_check_bounds::<Self>(offset);
1380            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1381                None => return Err(fidl::Error::NotNullable),
1382                Some(len) => len,
1383            };
1384            // Calling decoder.out_of_line_offset(0) is not allowed.
1385            if len == 0 {
1386                return Ok(());
1387            };
1388            depth.increment()?;
1389            let envelope_size = 8;
1390            let bytes_len = len * envelope_size;
1391            let offset = decoder.out_of_line_offset(bytes_len)?;
1392            // Decode the envelope for each type.
1393            let mut _next_ordinal_to_read = 0;
1394            let mut next_offset = offset;
1395            let end_offset = offset + bytes_len;
1396            _next_ordinal_to_read += 1;
1397            if next_offset >= end_offset {
1398                return Ok(());
1399            }
1400
1401            // Decode unknown envelopes for gaps in ordinals.
1402            while _next_ordinal_to_read < 1 {
1403                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1404                _next_ordinal_to_read += 1;
1405                next_offset += envelope_size;
1406            }
1407
1408            let next_out_of_line = decoder.next_out_of_line();
1409            let handles_before = decoder.remaining_handles();
1410            if let Some((inlined, num_bytes, num_handles)) =
1411                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1412            {
1413                let member_inline_size = <fidl_fuchsia_wlan_common_common::PowerSaveType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1414                if inlined != (member_inline_size <= 4) {
1415                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1416                }
1417                let inner_offset;
1418                let mut inner_depth = depth.clone();
1419                if inlined {
1420                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1421                    inner_offset = next_offset;
1422                } else {
1423                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1424                    inner_depth.increment()?;
1425                }
1426                let val_ref = self.ps_mode.get_or_insert_with(|| {
1427                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::PowerSaveType, D)
1428                });
1429                fidl::decode!(
1430                    fidl_fuchsia_wlan_common_common::PowerSaveType,
1431                    D,
1432                    val_ref,
1433                    decoder,
1434                    inner_offset,
1435                    inner_depth
1436                )?;
1437                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1438                {
1439                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1440                }
1441                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1442                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1443                }
1444            }
1445
1446            next_offset += envelope_size;
1447
1448            // Decode the remaining unknown envelopes.
1449            while next_offset < end_offset {
1450                _next_ordinal_to_read += 1;
1451                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1452                next_offset += envelope_size;
1453            }
1454
1455            Ok(())
1456        }
1457    }
1458
1459    impl WlanPhySetTxPowerScenarioRequest {
1460        #[inline(always)]
1461        fn max_ordinal_present(&self) -> u64 {
1462            if let Some(_) = self.scenario {
1463                return 1;
1464            }
1465            0
1466        }
1467    }
1468
1469    impl fidl::encoding::ValueTypeMarker for WlanPhySetTxPowerScenarioRequest {
1470        type Borrowed<'a> = &'a Self;
1471        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1472            value
1473        }
1474    }
1475
1476    unsafe impl fidl::encoding::TypeMarker for WlanPhySetTxPowerScenarioRequest {
1477        type Owned = Self;
1478
1479        #[inline(always)]
1480        fn inline_align(_context: fidl::encoding::Context) -> usize {
1481            8
1482        }
1483
1484        #[inline(always)]
1485        fn inline_size(_context: fidl::encoding::Context) -> usize {
1486            16
1487        }
1488    }
1489
1490    unsafe impl<D: fidl::encoding::ResourceDialect>
1491        fidl::encoding::Encode<WlanPhySetTxPowerScenarioRequest, D>
1492        for &WlanPhySetTxPowerScenarioRequest
1493    {
1494        unsafe fn encode(
1495            self,
1496            encoder: &mut fidl::encoding::Encoder<'_, D>,
1497            offset: usize,
1498            mut depth: fidl::encoding::Depth,
1499        ) -> fidl::Result<()> {
1500            encoder.debug_check_bounds::<WlanPhySetTxPowerScenarioRequest>(offset);
1501            // Vector header
1502            let max_ordinal: u64 = self.max_ordinal_present();
1503            encoder.write_num(max_ordinal, offset);
1504            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1505            // Calling encoder.out_of_line_offset(0) is not allowed.
1506            if max_ordinal == 0 {
1507                return Ok(());
1508            }
1509            depth.increment()?;
1510            let envelope_size = 8;
1511            let bytes_len = max_ordinal as usize * envelope_size;
1512            #[allow(unused_variables)]
1513            let offset = encoder.out_of_line_offset(bytes_len);
1514            let mut _prev_end_offset: usize = 0;
1515            if 1 > max_ordinal {
1516                return Ok(());
1517            }
1518
1519            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1520            // are envelope_size bytes.
1521            let cur_offset: usize = (1 - 1) * envelope_size;
1522
1523            // Zero reserved fields.
1524            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1525
1526            // Safety:
1527            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1528            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1529            //   envelope_size bytes, there is always sufficient room.
1530            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_internal_common::TxPowerScenario, D>(
1531            self.scenario.as_ref().map(<fidl_fuchsia_wlan_internal_common::TxPowerScenario as fidl::encoding::ValueTypeMarker>::borrow),
1532            encoder, offset + cur_offset, depth
1533        )?;
1534
1535            _prev_end_offset = cur_offset + envelope_size;
1536
1537            Ok(())
1538        }
1539    }
1540
1541    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1542        for WlanPhySetTxPowerScenarioRequest
1543    {
1544        #[inline(always)]
1545        fn new_empty() -> Self {
1546            Self::default()
1547        }
1548
1549        unsafe fn decode(
1550            &mut self,
1551            decoder: &mut fidl::encoding::Decoder<'_, D>,
1552            offset: usize,
1553            mut depth: fidl::encoding::Depth,
1554        ) -> fidl::Result<()> {
1555            decoder.debug_check_bounds::<Self>(offset);
1556            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1557                None => return Err(fidl::Error::NotNullable),
1558                Some(len) => len,
1559            };
1560            // Calling decoder.out_of_line_offset(0) is not allowed.
1561            if len == 0 {
1562                return Ok(());
1563            };
1564            depth.increment()?;
1565            let envelope_size = 8;
1566            let bytes_len = len * envelope_size;
1567            let offset = decoder.out_of_line_offset(bytes_len)?;
1568            // Decode the envelope for each type.
1569            let mut _next_ordinal_to_read = 0;
1570            let mut next_offset = offset;
1571            let end_offset = offset + bytes_len;
1572            _next_ordinal_to_read += 1;
1573            if next_offset >= end_offset {
1574                return Ok(());
1575            }
1576
1577            // Decode unknown envelopes for gaps in ordinals.
1578            while _next_ordinal_to_read < 1 {
1579                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1580                _next_ordinal_to_read += 1;
1581                next_offset += envelope_size;
1582            }
1583
1584            let next_out_of_line = decoder.next_out_of_line();
1585            let handles_before = decoder.remaining_handles();
1586            if let Some((inlined, num_bytes, num_handles)) =
1587                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1588            {
1589                let member_inline_size = <fidl_fuchsia_wlan_internal_common::TxPowerScenario as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1590                if inlined != (member_inline_size <= 4) {
1591                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1592                }
1593                let inner_offset;
1594                let mut inner_depth = depth.clone();
1595                if inlined {
1596                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1597                    inner_offset = next_offset;
1598                } else {
1599                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1600                    inner_depth.increment()?;
1601                }
1602                let val_ref = self.scenario.get_or_insert_with(|| {
1603                    fidl::new_empty!(fidl_fuchsia_wlan_internal_common::TxPowerScenario, D)
1604                });
1605                fidl::decode!(
1606                    fidl_fuchsia_wlan_internal_common::TxPowerScenario,
1607                    D,
1608                    val_ref,
1609                    decoder,
1610                    inner_offset,
1611                    inner_depth
1612                )?;
1613                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1614                {
1615                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1616                }
1617                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1618                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1619                }
1620            }
1621
1622            next_offset += envelope_size;
1623
1624            // Decode the remaining unknown envelopes.
1625            while next_offset < end_offset {
1626                _next_ordinal_to_read += 1;
1627                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1628                next_offset += envelope_size;
1629            }
1630
1631            Ok(())
1632        }
1633    }
1634
1635    impl WlanPhyCreateIfaceResponse {
1636        #[inline(always)]
1637        fn max_ordinal_present(&self) -> u64 {
1638            if let Some(_) = self.iface_id {
1639                return 1;
1640            }
1641            0
1642        }
1643    }
1644
1645    impl fidl::encoding::ValueTypeMarker for WlanPhyCreateIfaceResponse {
1646        type Borrowed<'a> = &'a Self;
1647        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1648            value
1649        }
1650    }
1651
1652    unsafe impl fidl::encoding::TypeMarker for WlanPhyCreateIfaceResponse {
1653        type Owned = Self;
1654
1655        #[inline(always)]
1656        fn inline_align(_context: fidl::encoding::Context) -> usize {
1657            8
1658        }
1659
1660        #[inline(always)]
1661        fn inline_size(_context: fidl::encoding::Context) -> usize {
1662            16
1663        }
1664    }
1665
1666    unsafe impl<D: fidl::encoding::ResourceDialect>
1667        fidl::encoding::Encode<WlanPhyCreateIfaceResponse, D> for &WlanPhyCreateIfaceResponse
1668    {
1669        unsafe fn encode(
1670            self,
1671            encoder: &mut fidl::encoding::Encoder<'_, D>,
1672            offset: usize,
1673            mut depth: fidl::encoding::Depth,
1674        ) -> fidl::Result<()> {
1675            encoder.debug_check_bounds::<WlanPhyCreateIfaceResponse>(offset);
1676            // Vector header
1677            let max_ordinal: u64 = self.max_ordinal_present();
1678            encoder.write_num(max_ordinal, offset);
1679            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1680            // Calling encoder.out_of_line_offset(0) is not allowed.
1681            if max_ordinal == 0 {
1682                return Ok(());
1683            }
1684            depth.increment()?;
1685            let envelope_size = 8;
1686            let bytes_len = max_ordinal as usize * envelope_size;
1687            #[allow(unused_variables)]
1688            let offset = encoder.out_of_line_offset(bytes_len);
1689            let mut _prev_end_offset: usize = 0;
1690            if 1 > max_ordinal {
1691                return Ok(());
1692            }
1693
1694            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1695            // are envelope_size bytes.
1696            let cur_offset: usize = (1 - 1) * envelope_size;
1697
1698            // Zero reserved fields.
1699            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1700
1701            // Safety:
1702            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1703            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1704            //   envelope_size bytes, there is always sufficient room.
1705            fidl::encoding::encode_in_envelope_optional::<u16, D>(
1706                self.iface_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
1707                encoder,
1708                offset + cur_offset,
1709                depth,
1710            )?;
1711
1712            _prev_end_offset = cur_offset + envelope_size;
1713
1714            Ok(())
1715        }
1716    }
1717
1718    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1719        for WlanPhyCreateIfaceResponse
1720    {
1721        #[inline(always)]
1722        fn new_empty() -> Self {
1723            Self::default()
1724        }
1725
1726        unsafe fn decode(
1727            &mut self,
1728            decoder: &mut fidl::encoding::Decoder<'_, D>,
1729            offset: usize,
1730            mut depth: fidl::encoding::Depth,
1731        ) -> fidl::Result<()> {
1732            decoder.debug_check_bounds::<Self>(offset);
1733            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1734                None => return Err(fidl::Error::NotNullable),
1735                Some(len) => len,
1736            };
1737            // Calling decoder.out_of_line_offset(0) is not allowed.
1738            if len == 0 {
1739                return Ok(());
1740            };
1741            depth.increment()?;
1742            let envelope_size = 8;
1743            let bytes_len = len * envelope_size;
1744            let offset = decoder.out_of_line_offset(bytes_len)?;
1745            // Decode the envelope for each type.
1746            let mut _next_ordinal_to_read = 0;
1747            let mut next_offset = offset;
1748            let end_offset = offset + bytes_len;
1749            _next_ordinal_to_read += 1;
1750            if next_offset >= end_offset {
1751                return Ok(());
1752            }
1753
1754            // Decode unknown envelopes for gaps in ordinals.
1755            while _next_ordinal_to_read < 1 {
1756                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1757                _next_ordinal_to_read += 1;
1758                next_offset += envelope_size;
1759            }
1760
1761            let next_out_of_line = decoder.next_out_of_line();
1762            let handles_before = decoder.remaining_handles();
1763            if let Some((inlined, num_bytes, num_handles)) =
1764                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1765            {
1766                let member_inline_size =
1767                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1768                if inlined != (member_inline_size <= 4) {
1769                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1770                }
1771                let inner_offset;
1772                let mut inner_depth = depth.clone();
1773                if inlined {
1774                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1775                    inner_offset = next_offset;
1776                } else {
1777                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1778                    inner_depth.increment()?;
1779                }
1780                let val_ref = self.iface_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
1781                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
1782                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1783                {
1784                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1785                }
1786                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1787                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1788                }
1789            }
1790
1791            next_offset += envelope_size;
1792
1793            // Decode the remaining unknown envelopes.
1794            while next_offset < end_offset {
1795                _next_ordinal_to_read += 1;
1796                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1797                next_offset += envelope_size;
1798            }
1799
1800            Ok(())
1801        }
1802    }
1803
1804    impl WlanPhyGetPowerSaveModeResponse {
1805        #[inline(always)]
1806        fn max_ordinal_present(&self) -> u64 {
1807            if let Some(_) = self.ps_mode {
1808                return 1;
1809            }
1810            0
1811        }
1812    }
1813
1814    impl fidl::encoding::ValueTypeMarker for WlanPhyGetPowerSaveModeResponse {
1815        type Borrowed<'a> = &'a Self;
1816        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1817            value
1818        }
1819    }
1820
1821    unsafe impl fidl::encoding::TypeMarker for WlanPhyGetPowerSaveModeResponse {
1822        type Owned = Self;
1823
1824        #[inline(always)]
1825        fn inline_align(_context: fidl::encoding::Context) -> usize {
1826            8
1827        }
1828
1829        #[inline(always)]
1830        fn inline_size(_context: fidl::encoding::Context) -> usize {
1831            16
1832        }
1833    }
1834
1835    unsafe impl<D: fidl::encoding::ResourceDialect>
1836        fidl::encoding::Encode<WlanPhyGetPowerSaveModeResponse, D>
1837        for &WlanPhyGetPowerSaveModeResponse
1838    {
1839        unsafe fn encode(
1840            self,
1841            encoder: &mut fidl::encoding::Encoder<'_, D>,
1842            offset: usize,
1843            mut depth: fidl::encoding::Depth,
1844        ) -> fidl::Result<()> {
1845            encoder.debug_check_bounds::<WlanPhyGetPowerSaveModeResponse>(offset);
1846            // Vector header
1847            let max_ordinal: u64 = self.max_ordinal_present();
1848            encoder.write_num(max_ordinal, offset);
1849            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1850            // Calling encoder.out_of_line_offset(0) is not allowed.
1851            if max_ordinal == 0 {
1852                return Ok(());
1853            }
1854            depth.increment()?;
1855            let envelope_size = 8;
1856            let bytes_len = max_ordinal as usize * envelope_size;
1857            #[allow(unused_variables)]
1858            let offset = encoder.out_of_line_offset(bytes_len);
1859            let mut _prev_end_offset: usize = 0;
1860            if 1 > max_ordinal {
1861                return Ok(());
1862            }
1863
1864            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1865            // are envelope_size bytes.
1866            let cur_offset: usize = (1 - 1) * envelope_size;
1867
1868            // Zero reserved fields.
1869            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1870
1871            // Safety:
1872            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1873            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1874            //   envelope_size bytes, there is always sufficient room.
1875            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::PowerSaveType, D>(
1876            self.ps_mode.as_ref().map(<fidl_fuchsia_wlan_common_common::PowerSaveType as fidl::encoding::ValueTypeMarker>::borrow),
1877            encoder, offset + cur_offset, depth
1878        )?;
1879
1880            _prev_end_offset = cur_offset + envelope_size;
1881
1882            Ok(())
1883        }
1884    }
1885
1886    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1887        for WlanPhyGetPowerSaveModeResponse
1888    {
1889        #[inline(always)]
1890        fn new_empty() -> Self {
1891            Self::default()
1892        }
1893
1894        unsafe fn decode(
1895            &mut self,
1896            decoder: &mut fidl::encoding::Decoder<'_, D>,
1897            offset: usize,
1898            mut depth: fidl::encoding::Depth,
1899        ) -> fidl::Result<()> {
1900            decoder.debug_check_bounds::<Self>(offset);
1901            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1902                None => return Err(fidl::Error::NotNullable),
1903                Some(len) => len,
1904            };
1905            // Calling decoder.out_of_line_offset(0) is not allowed.
1906            if len == 0 {
1907                return Ok(());
1908            };
1909            depth.increment()?;
1910            let envelope_size = 8;
1911            let bytes_len = len * envelope_size;
1912            let offset = decoder.out_of_line_offset(bytes_len)?;
1913            // Decode the envelope for each type.
1914            let mut _next_ordinal_to_read = 0;
1915            let mut next_offset = offset;
1916            let end_offset = offset + bytes_len;
1917            _next_ordinal_to_read += 1;
1918            if next_offset >= end_offset {
1919                return Ok(());
1920            }
1921
1922            // Decode unknown envelopes for gaps in ordinals.
1923            while _next_ordinal_to_read < 1 {
1924                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1925                _next_ordinal_to_read += 1;
1926                next_offset += envelope_size;
1927            }
1928
1929            let next_out_of_line = decoder.next_out_of_line();
1930            let handles_before = decoder.remaining_handles();
1931            if let Some((inlined, num_bytes, num_handles)) =
1932                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1933            {
1934                let member_inline_size = <fidl_fuchsia_wlan_common_common::PowerSaveType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1935                if inlined != (member_inline_size <= 4) {
1936                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1937                }
1938                let inner_offset;
1939                let mut inner_depth = depth.clone();
1940                if inlined {
1941                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1942                    inner_offset = next_offset;
1943                } else {
1944                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1945                    inner_depth.increment()?;
1946                }
1947                let val_ref = self.ps_mode.get_or_insert_with(|| {
1948                    fidl::new_empty!(fidl_fuchsia_wlan_common_common::PowerSaveType, D)
1949                });
1950                fidl::decode!(
1951                    fidl_fuchsia_wlan_common_common::PowerSaveType,
1952                    D,
1953                    val_ref,
1954                    decoder,
1955                    inner_offset,
1956                    inner_depth
1957                )?;
1958                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1959                {
1960                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1961                }
1962                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1963                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1964                }
1965            }
1966
1967            next_offset += envelope_size;
1968
1969            // Decode the remaining unknown envelopes.
1970            while next_offset < end_offset {
1971                _next_ordinal_to_read += 1;
1972                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1973                next_offset += envelope_size;
1974            }
1975
1976            Ok(())
1977        }
1978    }
1979
1980    impl WlanPhyGetPowerStateResponse {
1981        #[inline(always)]
1982        fn max_ordinal_present(&self) -> u64 {
1983            if let Some(_) = self.power_on {
1984                return 1;
1985            }
1986            0
1987        }
1988    }
1989
1990    impl fidl::encoding::ValueTypeMarker for WlanPhyGetPowerStateResponse {
1991        type Borrowed<'a> = &'a Self;
1992        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1993            value
1994        }
1995    }
1996
1997    unsafe impl fidl::encoding::TypeMarker for WlanPhyGetPowerStateResponse {
1998        type Owned = Self;
1999
2000        #[inline(always)]
2001        fn inline_align(_context: fidl::encoding::Context) -> usize {
2002            8
2003        }
2004
2005        #[inline(always)]
2006        fn inline_size(_context: fidl::encoding::Context) -> usize {
2007            16
2008        }
2009    }
2010
2011    unsafe impl<D: fidl::encoding::ResourceDialect>
2012        fidl::encoding::Encode<WlanPhyGetPowerStateResponse, D> for &WlanPhyGetPowerStateResponse
2013    {
2014        unsafe fn encode(
2015            self,
2016            encoder: &mut fidl::encoding::Encoder<'_, D>,
2017            offset: usize,
2018            mut depth: fidl::encoding::Depth,
2019        ) -> fidl::Result<()> {
2020            encoder.debug_check_bounds::<WlanPhyGetPowerStateResponse>(offset);
2021            // Vector header
2022            let max_ordinal: u64 = self.max_ordinal_present();
2023            encoder.write_num(max_ordinal, offset);
2024            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2025            // Calling encoder.out_of_line_offset(0) is not allowed.
2026            if max_ordinal == 0 {
2027                return Ok(());
2028            }
2029            depth.increment()?;
2030            let envelope_size = 8;
2031            let bytes_len = max_ordinal as usize * envelope_size;
2032            #[allow(unused_variables)]
2033            let offset = encoder.out_of_line_offset(bytes_len);
2034            let mut _prev_end_offset: usize = 0;
2035            if 1 > max_ordinal {
2036                return Ok(());
2037            }
2038
2039            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2040            // are envelope_size bytes.
2041            let cur_offset: usize = (1 - 1) * envelope_size;
2042
2043            // Zero reserved fields.
2044            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2045
2046            // Safety:
2047            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2048            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2049            //   envelope_size bytes, there is always sufficient room.
2050            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2051                self.power_on.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2052                encoder,
2053                offset + cur_offset,
2054                depth,
2055            )?;
2056
2057            _prev_end_offset = cur_offset + envelope_size;
2058
2059            Ok(())
2060        }
2061    }
2062
2063    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2064        for WlanPhyGetPowerStateResponse
2065    {
2066        #[inline(always)]
2067        fn new_empty() -> Self {
2068            Self::default()
2069        }
2070
2071        unsafe fn decode(
2072            &mut self,
2073            decoder: &mut fidl::encoding::Decoder<'_, D>,
2074            offset: usize,
2075            mut depth: fidl::encoding::Depth,
2076        ) -> fidl::Result<()> {
2077            decoder.debug_check_bounds::<Self>(offset);
2078            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2079                None => return Err(fidl::Error::NotNullable),
2080                Some(len) => len,
2081            };
2082            // Calling decoder.out_of_line_offset(0) is not allowed.
2083            if len == 0 {
2084                return Ok(());
2085            };
2086            depth.increment()?;
2087            let envelope_size = 8;
2088            let bytes_len = len * envelope_size;
2089            let offset = decoder.out_of_line_offset(bytes_len)?;
2090            // Decode the envelope for each type.
2091            let mut _next_ordinal_to_read = 0;
2092            let mut next_offset = offset;
2093            let end_offset = offset + bytes_len;
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 < 1 {
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.power_on.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 WlanPhyGetSupportedMacRolesResponse {
2150        #[inline(always)]
2151        fn max_ordinal_present(&self) -> u64 {
2152            if let Some(_) = self.supported_mac_roles {
2153                return 1;
2154            }
2155            0
2156        }
2157    }
2158
2159    impl fidl::encoding::ValueTypeMarker for WlanPhyGetSupportedMacRolesResponse {
2160        type Borrowed<'a> = &'a Self;
2161        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2162            value
2163        }
2164    }
2165
2166    unsafe impl fidl::encoding::TypeMarker for WlanPhyGetSupportedMacRolesResponse {
2167        type Owned = Self;
2168
2169        #[inline(always)]
2170        fn inline_align(_context: fidl::encoding::Context) -> usize {
2171            8
2172        }
2173
2174        #[inline(always)]
2175        fn inline_size(_context: fidl::encoding::Context) -> usize {
2176            16
2177        }
2178    }
2179
2180    unsafe impl<D: fidl::encoding::ResourceDialect>
2181        fidl::encoding::Encode<WlanPhyGetSupportedMacRolesResponse, D>
2182        for &WlanPhyGetSupportedMacRolesResponse
2183    {
2184        unsafe fn encode(
2185            self,
2186            encoder: &mut fidl::encoding::Encoder<'_, D>,
2187            offset: usize,
2188            mut depth: fidl::encoding::Depth,
2189        ) -> fidl::Result<()> {
2190            encoder.debug_check_bounds::<WlanPhyGetSupportedMacRolesResponse>(offset);
2191            // Vector header
2192            let max_ordinal: u64 = self.max_ordinal_present();
2193            encoder.write_num(max_ordinal, offset);
2194            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2195            // Calling encoder.out_of_line_offset(0) is not allowed.
2196            if max_ordinal == 0 {
2197                return Ok(());
2198            }
2199            depth.increment()?;
2200            let envelope_size = 8;
2201            let bytes_len = max_ordinal as usize * envelope_size;
2202            #[allow(unused_variables)]
2203            let offset = encoder.out_of_line_offset(bytes_len);
2204            let mut _prev_end_offset: usize = 0;
2205            if 1 > max_ordinal {
2206                return Ok(());
2207            }
2208
2209            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2210            // are envelope_size bytes.
2211            let cur_offset: usize = (1 - 1) * envelope_size;
2212
2213            // Zero reserved fields.
2214            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2215
2216            // Safety:
2217            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2218            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2219            //   envelope_size bytes, there is always sufficient room.
2220            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_common_common::WlanMacRole, 16>, D>(
2221            self.supported_mac_roles.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_common_common::WlanMacRole, 16> as fidl::encoding::ValueTypeMarker>::borrow),
2222            encoder, offset + cur_offset, depth
2223        )?;
2224
2225            _prev_end_offset = cur_offset + envelope_size;
2226
2227            Ok(())
2228        }
2229    }
2230
2231    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2232        for WlanPhyGetSupportedMacRolesResponse
2233    {
2234        #[inline(always)]
2235        fn new_empty() -> Self {
2236            Self::default()
2237        }
2238
2239        unsafe fn decode(
2240            &mut self,
2241            decoder: &mut fidl::encoding::Decoder<'_, D>,
2242            offset: usize,
2243            mut depth: fidl::encoding::Depth,
2244        ) -> fidl::Result<()> {
2245            decoder.debug_check_bounds::<Self>(offset);
2246            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2247                None => return Err(fidl::Error::NotNullable),
2248                Some(len) => len,
2249            };
2250            // Calling decoder.out_of_line_offset(0) is not allowed.
2251            if len == 0 {
2252                return Ok(());
2253            };
2254            depth.increment()?;
2255            let envelope_size = 8;
2256            let bytes_len = len * envelope_size;
2257            let offset = decoder.out_of_line_offset(bytes_len)?;
2258            // Decode the envelope for each type.
2259            let mut _next_ordinal_to_read = 0;
2260            let mut next_offset = offset;
2261            let end_offset = offset + bytes_len;
2262            _next_ordinal_to_read += 1;
2263            if next_offset >= end_offset {
2264                return Ok(());
2265            }
2266
2267            // Decode unknown envelopes for gaps in ordinals.
2268            while _next_ordinal_to_read < 1 {
2269                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2270                _next_ordinal_to_read += 1;
2271                next_offset += envelope_size;
2272            }
2273
2274            let next_out_of_line = decoder.next_out_of_line();
2275            let handles_before = decoder.remaining_handles();
2276            if let Some((inlined, num_bytes, num_handles)) =
2277                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2278            {
2279                let member_inline_size = <fidl::encoding::Vector<
2280                    fidl_fuchsia_wlan_common_common::WlanMacRole,
2281                    16,
2282                > as fidl::encoding::TypeMarker>::inline_size(
2283                    decoder.context
2284                );
2285                if inlined != (member_inline_size <= 4) {
2286                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2287                }
2288                let inner_offset;
2289                let mut inner_depth = depth.clone();
2290                if inlined {
2291                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2292                    inner_offset = next_offset;
2293                } else {
2294                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2295                    inner_depth.increment()?;
2296                }
2297                let val_ref =
2298                self.supported_mac_roles.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_common_common::WlanMacRole, 16>, D));
2299                fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_common_common::WlanMacRole, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
2300                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2301                {
2302                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2303                }
2304                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2305                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2306                }
2307            }
2308
2309            next_offset += envelope_size;
2310
2311            // Decode the remaining unknown envelopes.
2312            while next_offset < end_offset {
2313                _next_ordinal_to_read += 1;
2314                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2315                next_offset += envelope_size;
2316            }
2317
2318            Ok(())
2319        }
2320    }
2321}