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