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