fidl_fuchsia_lowpan_device__common/
fidl_fuchsia_lowpan_device__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/// String describing a network type.
12pub type NetworkType = String;
13
14/// Maximum number of channels that can be returned by
15/// [`Device.GetSupportedChannels`].
16///
17/// Value was chosen arbitrarily to be large enough to accommodate any
18/// reasonable future use case.
19pub const MAX_CHANNELS: u16 = 200;
20
21/// Maximum number of distinct network types that a LoWPAN
22/// device can support.
23///
24/// The choice of 16 is an arbitrary upper bound. Most devices will only support one,
25/// and maybe one day a device might support two. Sixteen was chosen because it's
26/// large enough to account for any failure of imagination, yet small enough to not
27/// cause system stability issues.
28pub const MAX_NETWORK_TYPES: u16 = 16;
29
30/// Maximum length of a network type string.
31///
32/// Chosen arbitrarily to be large enough to accommodate any reasonable future
33/// net types.
34pub const MAX_NET_TYPE_LEN: u16 = 64;
35
36/// The maximum number of items that can be returned at one
37/// time by a scan stream.
38pub const MAX_STREAM_SET_SIZE: u16 = 32;
39
40pub const NET_TYPE_RAW_6_LOWPAN: &str = "fuchsia.lowpan.net_type.6lowpan";
41
42pub const NET_TYPE_THREAD_1_X: &str = "org.threadgroup.std.thread.1";
43
44pub const NET_TYPE_UNKNOWN_802_15_4_PID: &str = "fuchsia.lowpan.net_type.802.15.4.pid";
45
46pub const NET_TYPE_ZIGBEE_IP_1_X: &str = "org.zigbee.std.zigbee-ip.1";
47
48/// LoWPAN Connectivity State
49///
50/// This enum describes the level of connectivity being provided
51/// by a device.
52#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
53pub enum ConnectivityState {
54    /// Inactive state.
55    ///
56    /// In this state the device is unprovisioned and administratively
57    /// disabled (inactive).
58    ///
59    /// This state can always be explicitly entered by calling `Leave`
60    /// followed by `SetActive(false)`.
61    Inactive,
62    /// Ready state.
63    ///
64    /// In this state the device is provisioned for a network, but is
65    /// administratively disabled (inactive).
66    ///
67    /// This state can be directly entered with the following actions
68    /// based on the current connectivity state:
69    ///
70    /// * `INACTIVE`: by calling `ProvisionNetwork(...)`.
71    /// * `ATTACHING`, `ATTACHED`, `ISOLATED`, `COMMISSIONING`: by calling `SetActive(false)`.
72    Ready,
73    /// Offline state.
74    ///
75    /// In this state the device is administratively enabled (active)
76    /// but is not provisioned and thus has no network to attach to.
77    ///
78    /// This state can be directly entered with the following actions
79    /// based on the current connectivity state:
80    ///
81    /// * `INACTIVE`: by calling `SetActive(true)`.
82    /// * `ATTACHING`, `ATTACHED`, `ISOLATED`, `COMMISSIONING`: by calling `Leave()`.
83    Offline,
84    /// Attaching state.
85    ///
86    /// In this state the device is administratively enabled
87    /// (active) and either provisioned for a network or shortly
88    /// about to become provisioned for a network.
89    ///
90    /// The interface enters this state when it starts the process
91    /// of trying to find other nodes so that it can attach to any
92    /// pre-existing network fragment, or when it is in the process
93    /// of calculating the optimal values for unspecified parameters
94    /// when forming a new network.
95    ///
96    /// This state can be directly entered with the following actions
97    /// based on the current connectivity state:
98    ///
99    /// * `READY`: by calling `SetActive(true)`
100    /// * `OFFLINE`, `ATTACHING`, `ATTACHED`, `ISOLATED`, `COMMISSIONING`:
101    ///    by calling `ProvisionNetwork(...)`, `FormNetwork(...)`, or `JoinNetwork(...)`
102    Attaching,
103    /// Attached state.
104    ///
105    /// In this state the device is both administratively enabled
106    /// (active) and provisioned for a network. The device is an
107    /// active participant on the network and can communicate with
108    /// peers.
109    ///
110    /// This state usually implies that peers are available, but that
111    /// may not actually be the case due to current network conditions
112    /// or privacy-protecting measures.
113    ///
114    /// This state cannot generally be entered directly, rather
115    /// the device will enter this state automatically from the
116    /// `ATTACHING` or `ISOLATED` states once connectivity has been
117    /// (re)established.
118    Attached,
119    /// Isolated state.
120    ///
121    /// In this state the device is both administratively enabled
122    /// (active) and provisioned for a network. However, the device
123    /// has no connectivity because there are no peers in range on
124    /// the provisioned network.
125    ///
126    /// Once peer devices on the same network come into range
127    /// the connectivity state will eventually switch back to
128    /// `ATTACHED`, indicating restored connectivity with at least
129    /// one peer.
130    ///
131    /// This state cannot generally be entered directly, rather
132    /// the device may enter this state automatically from the
133    /// `ATTACHING` or `ATTACHED` states.
134    Isolated,
135    /// Commissioning state.
136    ///
137    /// Currently unused, but will later be used to
138    /// support in-band commissioning. It is usually appropriate
139    /// to consider this as a synonym for the `ATTACHING` state
140    /// except that the device remains unprovisioned.
141    Commissioning,
142    #[doc(hidden)]
143    __SourceBreaking { unknown_ordinal: i32 },
144}
145
146/// Pattern that matches an unknown `ConnectivityState` member.
147#[macro_export]
148macro_rules! ConnectivityStateUnknown {
149    () => {
150        _
151    };
152}
153
154impl ConnectivityState {
155    #[inline]
156    pub fn from_primitive(prim: i32) -> Option<Self> {
157        match prim {
158            1 => Some(Self::Inactive),
159            2 => Some(Self::Ready),
160            3 => Some(Self::Offline),
161            4 => Some(Self::Attaching),
162            5 => Some(Self::Attached),
163            6 => Some(Self::Isolated),
164            7 => Some(Self::Commissioning),
165            _ => None,
166        }
167    }
168
169    #[inline]
170    pub fn from_primitive_allow_unknown(prim: i32) -> Self {
171        match prim {
172            1 => Self::Inactive,
173            2 => Self::Ready,
174            3 => Self::Offline,
175            4 => Self::Attaching,
176            5 => Self::Attached,
177            6 => Self::Isolated,
178            7 => Self::Commissioning,
179            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
180        }
181    }
182
183    #[inline]
184    pub fn unknown() -> Self {
185        Self::__SourceBreaking { unknown_ordinal: 0x7fffffff }
186    }
187
188    #[inline]
189    pub const fn into_primitive(self) -> i32 {
190        match self {
191            Self::Inactive => 1,
192            Self::Ready => 2,
193            Self::Offline => 3,
194            Self::Attaching => 4,
195            Self::Attached => 5,
196            Self::Isolated => 6,
197            Self::Commissioning => 7,
198            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
199        }
200    }
201
202    #[inline]
203    pub fn is_unknown(&self) -> bool {
204        match self {
205            Self::__SourceBreaking { unknown_ordinal: _ } => true,
206            _ => false,
207        }
208    }
209}
210
211/// LoWPAN Role Type.
212///
213/// This type describes the role a device can assume on a network.
214#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
215pub enum Role {
216    /// Detached role. The interface is not
217    /// currently participating on the network,
218    /// either because it cannot find a parent
219    Detached,
220    /// End-device role. End devices do not route
221    /// traffic on behalf of other nodes.
222    EndDevice,
223    /// Router role. Routers help route traffic
224    /// around the mesh network.
225    ///
226    /// Note that this role is independent of the
227    /// device being a "border router".
228    ///
229    /// Not all network types support this role.
230    Router,
231    /// Sleepy End-Device role.
232    ///
233    /// End devices with this role are nominally asleep,
234    /// waking up periodically to check in with their
235    /// parent to see if there are packets destined for
236    /// them. Such devices are capable of extraordinarily
237    /// low power consumption, but packet latency can be
238    /// on the order of dozens of seconds(depending on how
239    /// the node is configured). Not all network types
240    /// support this role.
241    ///
242    /// Not all network types support this role.
243    SleepyEndDevice,
244    /// Sleepy-router role.
245    ///
246    /// Routers with this role are nominally asleep,
247    /// waking up periodically to check in with
248    /// other routers and their children.
249    ///
250    /// Not all network types support this role.
251    SleepyRouter,
252    /// Leader role.
253    ///
254    /// On Thread networks, for each partition/fragment
255    /// one router is designated as the "leader", which
256    /// means that it is considered authoritative for
257    /// all network data. In most cases this role can be
258    /// considered as a synonym to Role::ROUTER.
259    ///
260    /// Not all network types support this role.
261    Leader,
262    /// Coordinator role.
263    ///
264    /// Not all network types support this role.
265    Coordinator,
266    #[doc(hidden)]
267    __SourceBreaking { unknown_ordinal: i32 },
268}
269
270/// Pattern that matches an unknown `Role` member.
271#[macro_export]
272macro_rules! RoleUnknown {
273    () => {
274        _
275    };
276}
277
278impl Role {
279    #[inline]
280    pub fn from_primitive(prim: i32) -> Option<Self> {
281        match prim {
282            1 => Some(Self::Detached),
283            2 => Some(Self::EndDevice),
284            3 => Some(Self::Router),
285            4 => Some(Self::SleepyEndDevice),
286            5 => Some(Self::SleepyRouter),
287            6 => Some(Self::Leader),
288            7 => Some(Self::Coordinator),
289            _ => None,
290        }
291    }
292
293    #[inline]
294    pub fn from_primitive_allow_unknown(prim: i32) -> Self {
295        match prim {
296            1 => Self::Detached,
297            2 => Self::EndDevice,
298            3 => Self::Router,
299            4 => Self::SleepyEndDevice,
300            5 => Self::SleepyRouter,
301            6 => Self::Leader,
302            7 => Self::Coordinator,
303            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
304        }
305    }
306
307    #[inline]
308    pub fn unknown() -> Self {
309        Self::__SourceBreaking { unknown_ordinal: 0x7fffffff }
310    }
311
312    #[inline]
313    pub const fn into_primitive(self) -> i32 {
314        match self {
315            Self::Detached => 1,
316            Self::EndDevice => 2,
317            Self::Router => 3,
318            Self::SleepyEndDevice => 4,
319            Self::SleepyRouter => 5,
320            Self::Leader => 6,
321            Self::Coordinator => 7,
322            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
323        }
324    }
325
326    #[inline]
327    pub fn is_unknown(&self) -> bool {
328        match self {
329            Self::__SourceBreaking { unknown_ordinal: _ } => true,
330            _ => false,
331        }
332    }
333}
334
335#[derive(Clone, Debug, PartialEq)]
336pub struct CountersGetResponse {
337    pub counters: AllCounters,
338}
339
340impl fidl::Persistable for CountersGetResponse {}
341
342#[derive(Clone, Debug, PartialEq)]
343pub struct CountersResetResponse {
344    pub counters: AllCounters,
345}
346
347impl fidl::Persistable for CountersResetResponse {}
348
349#[derive(Clone, Debug, PartialEq)]
350pub struct DeviceExtraGetCredentialResponse {
351    pub credential: Option<Box<Credential>>,
352}
353
354impl fidl::Persistable for DeviceExtraGetCredentialResponse {}
355
356#[derive(Clone, Debug, PartialEq)]
357pub struct DeviceExtraGetCurrentMacAddressResponse {
358    pub address: fidl_fuchsia_lowpan__common::MacAddress,
359}
360
361impl fidl::Persistable for DeviceExtraGetCurrentMacAddressResponse {}
362
363#[derive(Clone, Debug, PartialEq)]
364pub struct DeviceExtraWatchIdentityResponse {
365    pub identity: Identity,
366}
367
368impl fidl::Persistable for DeviceExtraWatchIdentityResponse {}
369
370#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
371pub struct DeviceGetSupportedNetworkTypesResponse {
372    pub network_types: Vec<String>,
373}
374
375impl fidl::Persistable for DeviceGetSupportedNetworkTypesResponse {}
376
377#[derive(Clone, Debug, PartialEq)]
378pub struct DeviceProvisionNetworkRequest {
379    pub params: ProvisioningParams,
380}
381
382impl fidl::Persistable for DeviceProvisionNetworkRequest {}
383
384#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
385pub struct DeviceSetActiveRequest {
386    pub active: bool,
387}
388
389impl fidl::Persistable for DeviceSetActiveRequest {}
390
391#[derive(Clone, Debug, PartialEq)]
392pub struct DeviceWatchDeviceStateResponse {
393    pub device_combined_state: DeviceState,
394}
395
396impl fidl::Persistable for DeviceWatchDeviceStateResponse {}
397
398#[derive(Clone, Debug, PartialEq)]
399pub struct EnergyScanResultStreamNextResponse {
400    pub results: Vec<EnergyScanResult>,
401}
402
403impl fidl::Persistable for EnergyScanResultStreamNextResponse {}
404
405#[derive(Clone, Debug, PartialEq)]
406pub struct ProvisioningParams {
407    /// The identity of the network.
408    pub identity: Identity,
409    /// The credential used to authenticate to
410    /// the network.
411    pub credential: Option<Box<Credential>>,
412}
413
414impl fidl::Persistable for ProvisioningParams {}
415
416/// Describes all counters.
417///
418/// May be empty if no counters are supported.
419#[derive(Clone, Debug, Default, PartialEq)]
420pub struct AllCounters {
421    /// MAC Counters for TX
422    pub mac_tx: Option<MacCounters>,
423    /// MAC Counters for RX
424    pub mac_rx: Option<MacCounters>,
425    /// Coex Counters for TX
426    pub coex_tx: Option<CoexCounters>,
427    /// Coex Counters for RX
428    pub coex_rx: Option<CoexCounters>,
429    /// Coex stats may be incorrect due to internal counter overflow.
430    ///
431    /// Reset the counters to clear this flag.
432    pub coex_saturated: Option<bool>,
433    /// IP Counters for TX.
434    pub ip_tx: Option<IpCounters>,
435    /// IP Counters for RX.
436    pub ip_rx: Option<IpCounters>,
437    /// Border agent related counters.
438    pub border_agent: Option<BorderAgentCounters>,
439    #[doc(hidden)]
440    pub __source_breaking: fidl::marker::SourceBreaking,
441}
442
443impl fidl::Persistable for AllCounters {}
444
445/// Counters associated with border agent functionality.
446#[derive(Clone, Debug, Default, PartialEq)]
447pub struct BorderAgentCounters {
448    /// The number of ePSKc activations.
449    pub epskc_activations: Option<u32>,
450    /// The number of ePSKc deactivations via API.
451    pub epskc_deactivation_clears: Option<u32>,
452    /// The number of ePSKc deactivations due to timeout.
453    pub epskc_deactivation_timeouts: Option<u32>,
454    /// The number of ePSKc deactivations due to reached max attempts.
455    pub epskc_deactivation_max_attempts: Option<u32>,
456    /// The number of ePSKc deactivations due to commissioner disconnected.
457    pub epskc_deactivation_disconnects: Option<u32>,
458    /// The number of invalid border agent state errors at ePSKc activation.
459    pub epskc_invalid_ba_state_errors: Option<u32>,
460    /// The number of invalid args errors at ePSKc activation.
461    pub epskc_invalid_args_errors: Option<u32>,
462    /// The number of start secure session errors at ePSKc activation.
463    pub epskc_start_secure_session_errors: Option<u32>,
464    /// The number of established secure sessions with ePSKc.
465    pub epskc_secure_session_successes: Option<u32>,
466    /// The number of failed secure sessions with ePSKc.
467    pub epskc_secure_session_failures: Option<u32>,
468    /// The number of successful commissioner petitions with ePSKc.
469    pub epskc_commissioner_petitions: Option<u32>,
470    /// The number of established secure sessions with PSKc.
471    pub pskc_secure_session_successes: Option<u32>,
472    /// The number of failed secure sessions with PSKc.
473    pub pskc_secure_session_failures: Option<u32>,
474    /// The number of successful commissioner petitions with PSKc.
475    pub pskc_commissioner_petitions: Option<u32>,
476    /// The number of MGMT_ACTIVE_GET.req sent over secure sessions.
477    pub mgmt_active_gets: Option<u32>,
478    /// The number of MGMT_PENDING_GET.req sent over secure sessions.
479    pub mgmt_pending_gets: Option<u32>,
480    #[doc(hidden)]
481    pub __source_breaking: fidl::marker::SourceBreaking,
482}
483
484impl fidl::Persistable for BorderAgentCounters {}
485
486/// Counters associated with RF Coexistance.
487///
488/// Some counters are only valid for RX or TX. See [this][1] for more info.
489///
490/// [1]: https://github.com/openthread/wpantund/blob/4ae4619/third_party/openthread/src/ncp/spinel.h#L1738-L1775
491#[derive(Clone, Debug, Default, PartialEq)]
492pub struct CoexCounters {
493    /// The number of requests
494    pub requests: Option<u64>,
495    /// The number of requests while grant was active
496    pub grant_immediate: Option<u64>,
497    /// The number of requests while grant was inactive
498    pub grant_wait: Option<u64>,
499    /// The number of requests while grant was inactive that were
500    /// ultimately granted
501    pub grant_wait_activated: Option<u64>,
502    /// The number of requests while grant was inactive that timed out
503    pub grant_wait_timeout: Option<u64>,
504    /// The number of requests that were in progress when grant was
505    /// deactivated
506    pub grant_deactivated_during_request: Option<u64>,
507    /// The number of requests that were not granted within 50µs
508    pub delayed_grant: Option<u64>,
509    /// The average time in µsec from request to grant
510    pub avg_delay_request_to_grant_usec: Option<u32>,
511    /// The number of requests that completed without receiving grant.
512    ///
513    /// Receive only.
514    pub grant_none: Option<u64>,
515    #[doc(hidden)]
516    pub __source_breaking: fidl::marker::SourceBreaking,
517}
518
519impl fidl::Persistable for CoexCounters {}
520
521/// Combined State for LoWPAN Devices
522///
523/// Contains the various properties of a LoWPAN device
524/// that define its current operational state.
525///
526/// You will get a snapshot of the current state upon the first
527/// invocation of `WatchDeviceState()`, after which future
528/// invocations of that method will return deltas.
529#[derive(Clone, Debug, Default, PartialEq)]
530pub struct DeviceState {
531    /// LoWPAN Connectivity State
532    ///
533    /// This field describes the current level of connectivity being
534    /// provided by this device.
535    pub connectivity_state: Option<ConnectivityState>,
536    /// LoWPAN Role
537    ///
538    /// This field describes the current role this device is taking
539    /// on the current network.
540    pub role: Option<Role>,
541    #[doc(hidden)]
542    pub __source_breaking: fidl::marker::SourceBreaking,
543}
544
545impl fidl::Persistable for DeviceState {}
546
547/// Describes the parameters of an energy scan.
548#[derive(Clone, Debug, Default, PartialEq)]
549pub struct EnergyScanParameters {
550    /// Subset of channels to scan.
551    ///
552    /// If unspecified, all channels will be scanned.
553    pub channels: Option<Vec<u16>>,
554    /// Desired dwell time per-channel for the energy scan,
555    /// measured in milliseconds.
556    ///
557    /// Note that firmware limitations may prevent the
558    /// exact dwell time from being used. In such cases
559    /// an approximation will be used.
560    ///
561    /// Implementations must be able to support dwell times of at least
562    /// 5000ms (5 seconds). The exact supported dwell-time range is
563    /// device/driver dependent.
564    ///
565    /// Setting a value outside of the supported range of
566    /// values for this device will result in the value being
567    /// clamped to the closest valid value, so setting a value of zero
568    /// will always request the smallest energy scan duration the
569    /// device is capable of.
570    ///
571    /// If unspecified, a dwell time of approximately 500ms will be used.
572    pub dwell_time_ms: Option<u32>,
573    #[doc(hidden)]
574    pub __source_breaking: fidl::marker::SourceBreaking,
575}
576
577impl fidl::Persistable for EnergyScanParameters {}
578
579/// Describes the result from one channel of an energy scan.
580#[derive(Clone, Debug, Default, PartialEq)]
581pub struct EnergyScanResult {
582    /// The channel index for this energy scan result.
583    pub channel_index: Option<u16>,
584    /// The maximum RSSI detected on this channel.
585    pub max_rssi: Option<i32>,
586    /// The minimum RSSI detected on this channel.
587    pub min_rssi: Option<i32>,
588    #[doc(hidden)]
589    pub __source_breaking: fidl::marker::SourceBreaking,
590}
591
592impl fidl::Persistable for EnergyScanResult {}
593
594#[derive(Clone, Debug, Default, PartialEq)]
595pub struct Identity {
596    /// The raw bytes for the network name.
597    /// This is typically a [StringPrep'd][1] UTF8 encoding.
598    ///
599    /// Note that extra care must be taken when displaying
600    /// this value to users, since there are many ways
601    /// to make visually similar UTF8 strings that
602    /// have differing bytecode representations.
603    ///
604    /// [1]: https://tools.ietf.org/html/rfc3454
605    pub raw_name: Option<Vec<u8>>,
606    /// String identifying the type of network.
607    ///
608    /// Well-known protocol ids are associated with
609    /// specific string values (like "org.threadgroup.std.thread"
610    /// or "org.zigbee.std.zigbee-ip"). For unknown protocol ids,
611    /// the string will map to something like
612    /// `fuchsia.lowpan.net_type.802.15.4.pid.XX`, where `XX` is
613    /// the value of the protocol id from a 802.14.5 beacon.
614    /// This field is optional when joining, forming, or provisioning.
615    pub net_type: Option<String>,
616    /// Channel Index.
617    pub channel: Option<u16>,
618    /// PANID for 802.14.5-based networks (or the equivalent).
619    pub panid: Option<u16>,
620    /// IPv6 Mesh-local prefix.
621    ///
622    /// This parameter allows you to determine the mesh-local
623    /// IPv6 prefix for the current network, or to specify one
624    /// when provisioning the interface for a network or forming
625    /// a new network.
626    ///
627    /// The prefix length is always 64 bits, so only the upper
628    /// 64 bits of the value are used: the least significant bits
629    /// must be ignored when read and zero when set.
630    ///
631    /// This field is ignored when supplied to `JoinNetwork()`.
632    pub mesh_local_prefix: Option<fidl_fuchsia_net__common::Ipv6AddressWithPrefix>,
633    /// Extended PANID.
634    pub xpanid: Option<[u8; 8]>,
635    #[doc(hidden)]
636    pub __source_breaking: fidl::marker::SourceBreaking,
637}
638
639impl fidl::Persistable for Identity {}
640
641/// Counters associated with the IP layer.
642#[derive(Clone, Debug, Default, PartialEq)]
643pub struct IpCounters {
644    /// The number of IPv6 packets successfully transmitted/received.
645    pub success: Option<u32>,
646    /// The number of IPv6 packets failed to transmit/receive.
647    pub failure: Option<u32>,
648    #[doc(hidden)]
649    pub __source_breaking: fidl::marker::SourceBreaking,
650}
651
652impl fidl::Persistable for IpCounters {}
653
654/// Counters associated with the MAC layer.
655///
656/// Some counters are only valid for RX or TX.
657#[derive(Clone, Debug, Default, PartialEq)]
658pub struct MacCounters {
659    /// The total number of frames
660    pub total: Option<u32>,
661    /// The total number of unicast frames
662    pub unicast: Option<u32>,
663    /// The total number of broadcast frames
664    pub broadcast: Option<u32>,
665    /// The number of frames with ack request
666    pub ack_requested: Option<u32>,
667    /// The number of frames that were acked
668    pub acked: Option<u32>,
669    /// The number of frames without ack request
670    pub no_ack_requested: Option<u32>,
671    /// The number of data frames
672    pub data: Option<u32>,
673    /// The number of data poll frames
674    pub data_poll: Option<u32>,
675    /// The number of beacon frames
676    pub beacon: Option<u32>,
677    /// The number of beacon request frames
678    pub beacon_request: Option<u32>,
679    /// The number of other types of frames
680    pub other: Option<u32>,
681    /// The number of frames filtered by address filter (allowlist
682    /// or denylist).
683    pub address_filtered: Option<u32>,
684    /// The number of retransmission attempts.
685    /// TX only.
686    pub retries: Option<u32>,
687    /// The number of expired retransmission retries for direct message.
688    /// TX only.
689    pub direct_max_retry_expiry: Option<u32>,
690    /// The number of expired retransmission retries for indirect message
691    /// TX only.
692    pub indirect_max_retry_expiry: Option<u32>,
693    /// The number of received frames filtered by destination check.
694    /// RX only.
695    pub dest_addr_filtered: Option<u32>,
696    /// The number of received duplicated frames.
697    /// RX only.
698    pub duplicated: Option<u32>,
699    /// The number of received frames with no or malformed content.
700    /// RX only.
701    pub err_no_frame: Option<u32>,
702    /// The number of received frames from unknown neighbor.
703    /// RX only.
704    pub err_unknown_neighbor: Option<u32>,
705    /// The number of received frames whose source address is invalid.
706    /// RX only.
707    pub err_invalid_src_addr: Option<u32>,
708    /// The number of received frames with security error.
709    /// RX only.
710    pub err_sec: Option<u32>,
711    /// The number of received frames with FCS error.
712    /// RX only.
713    pub err_fcs: Option<u32>,
714    /// The number of CCA failures.
715    /// TX only.
716    pub err_cca: Option<u32>,
717    /// The number of frame transmission failures due to abort error.
718    /// TX only.
719    pub err_abort: Option<u32>,
720    /// The number of frames that were dropped due to a busy channel.
721    /// TX only.
722    pub err_busy_channel: Option<u32>,
723    /// The number of frames that encountered some other error.
724    pub err_other: Option<u32>,
725    #[doc(hidden)]
726    pub __source_breaking: fidl::marker::SourceBreaking,
727}
728
729impl fidl::Persistable for MacCounters {}
730
731/// Describes a LoWPAN credential.
732///
733/// Currently only supports a symmetric network key,
734/// but may be extended in the future to support other
735/// types of credentials, such as passwords, PAKE
736/// secrets, or a reference to a certificate/private-key
737/// pair.
738#[derive(Clone, Debug)]
739pub enum Credential {
740    /// Describes a symmetric key credential.
741    ///
742    /// The size of the symmetric key is defined by the
743    /// underlying network technology. For Thread this
744    /// is a 16-byte value.
745    ///
746    /// Note that this value is not a password.
747    NetworkKey(Vec<u8>),
748    #[doc(hidden)]
749    __SourceBreaking { unknown_ordinal: u64 },
750}
751
752/// Pattern that matches an unknown `Credential` member.
753#[macro_export]
754macro_rules! CredentialUnknown {
755    () => {
756        _
757    };
758}
759
760// Custom PartialEq so that unknown variants are not equal to themselves.
761impl PartialEq for Credential {
762    fn eq(&self, other: &Self) -> bool {
763        match (self, other) {
764            (Self::NetworkKey(x), Self::NetworkKey(y)) => *x == *y,
765            _ => false,
766        }
767    }
768}
769
770impl Credential {
771    #[inline]
772    pub fn ordinal(&self) -> u64 {
773        match *self {
774            Self::NetworkKey(_) => 1,
775            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
776        }
777    }
778
779    #[inline]
780    pub fn unknown_variant_for_testing() -> Self {
781        Self::__SourceBreaking { unknown_ordinal: 0 }
782    }
783
784    #[inline]
785    pub fn is_unknown(&self) -> bool {
786        match self {
787            Self::__SourceBreaking { .. } => true,
788            _ => false,
789        }
790    }
791}
792
793impl fidl::Persistable for Credential {}
794
795pub mod counters_ordinals {
796    pub const GET: u64 = 0xaa28d44c1535a24;
797    pub const RESET: u64 = 0x4cf9a102017cf7ad;
798}
799
800pub mod counters_connector_ordinals {
801    pub const CONNECT: u64 = 0x61ec847f2702d188;
802}
803
804pub mod device_ordinals {
805    pub const PROVISION_NETWORK: u64 = 0x3501046988e17076;
806    pub const LEAVE_NETWORK: u64 = 0x66919e4f9752c53e;
807    pub const SET_ACTIVE: u64 = 0x55a6837f8bbb344b;
808    pub const GET_SUPPORTED_NETWORK_TYPES: u64 = 0x6d8f71a5beb15ebf;
809    pub const WATCH_DEVICE_STATE: u64 = 0x593be5b83e80d249;
810}
811
812pub mod device_connector_ordinals {
813    pub const CONNECT: u64 = 0x63470c4c0c8e678a;
814}
815
816pub mod device_extra_ordinals {
817    pub const GET_CREDENTIAL: u64 = 0x77f75f289c8c4ceb;
818    pub const WATCH_IDENTITY: u64 = 0xb9f5d8963eaebc6;
819    pub const GET_CURRENT_MAC_ADDRESS: u64 = 0x70835954071d94dd;
820}
821
822pub mod device_extra_connector_ordinals {
823    pub const CONNECT: u64 = 0x2959be873ae18ae3;
824}
825
826pub mod energy_scan_ordinals {
827    pub const START_ENERGY_SCAN: u64 = 0x4b2928a05c619b06;
828}
829
830pub mod energy_scan_connector_ordinals {
831    pub const CONNECT: u64 = 0x1076a774e74ab290;
832}
833
834pub mod energy_scan_result_stream_ordinals {
835    pub const NEXT: u64 = 0x7f0139fc06fd6a9e;
836}
837
838mod internal {
839    use super::*;
840    unsafe impl fidl::encoding::TypeMarker for ConnectivityState {
841        type Owned = Self;
842
843        #[inline(always)]
844        fn inline_align(_context: fidl::encoding::Context) -> usize {
845            std::mem::align_of::<i32>()
846        }
847
848        #[inline(always)]
849        fn inline_size(_context: fidl::encoding::Context) -> usize {
850            std::mem::size_of::<i32>()
851        }
852
853        #[inline(always)]
854        fn encode_is_copy() -> bool {
855            false
856        }
857
858        #[inline(always)]
859        fn decode_is_copy() -> bool {
860            false
861        }
862    }
863
864    impl fidl::encoding::ValueTypeMarker for ConnectivityState {
865        type Borrowed<'a> = Self;
866        #[inline(always)]
867        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
868            *value
869        }
870    }
871
872    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
873        for ConnectivityState
874    {
875        #[inline]
876        unsafe fn encode(
877            self,
878            encoder: &mut fidl::encoding::Encoder<'_, D>,
879            offset: usize,
880            _depth: fidl::encoding::Depth,
881        ) -> fidl::Result<()> {
882            encoder.debug_check_bounds::<Self>(offset);
883            encoder.write_num(self.into_primitive(), offset);
884            Ok(())
885        }
886    }
887
888    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectivityState {
889        #[inline(always)]
890        fn new_empty() -> Self {
891            Self::unknown()
892        }
893
894        #[inline]
895        unsafe fn decode(
896            &mut self,
897            decoder: &mut fidl::encoding::Decoder<'_, D>,
898            offset: usize,
899            _depth: fidl::encoding::Depth,
900        ) -> fidl::Result<()> {
901            decoder.debug_check_bounds::<Self>(offset);
902            let prim = decoder.read_num::<i32>(offset);
903
904            *self = Self::from_primitive_allow_unknown(prim);
905            Ok(())
906        }
907    }
908    unsafe impl fidl::encoding::TypeMarker for Role {
909        type Owned = Self;
910
911        #[inline(always)]
912        fn inline_align(_context: fidl::encoding::Context) -> usize {
913            std::mem::align_of::<i32>()
914        }
915
916        #[inline(always)]
917        fn inline_size(_context: fidl::encoding::Context) -> usize {
918            std::mem::size_of::<i32>()
919        }
920
921        #[inline(always)]
922        fn encode_is_copy() -> bool {
923            false
924        }
925
926        #[inline(always)]
927        fn decode_is_copy() -> bool {
928            false
929        }
930    }
931
932    impl fidl::encoding::ValueTypeMarker for Role {
933        type Borrowed<'a> = Self;
934        #[inline(always)]
935        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
936            *value
937        }
938    }
939
940    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Role {
941        #[inline]
942        unsafe fn encode(
943            self,
944            encoder: &mut fidl::encoding::Encoder<'_, D>,
945            offset: usize,
946            _depth: fidl::encoding::Depth,
947        ) -> fidl::Result<()> {
948            encoder.debug_check_bounds::<Self>(offset);
949            encoder.write_num(self.into_primitive(), offset);
950            Ok(())
951        }
952    }
953
954    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Role {
955        #[inline(always)]
956        fn new_empty() -> Self {
957            Self::unknown()
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 prim = decoder.read_num::<i32>(offset);
969
970            *self = Self::from_primitive_allow_unknown(prim);
971            Ok(())
972        }
973    }
974
975    impl fidl::encoding::ValueTypeMarker for CountersGetResponse {
976        type Borrowed<'a> = &'a Self;
977        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
978            value
979        }
980    }
981
982    unsafe impl fidl::encoding::TypeMarker for CountersGetResponse {
983        type Owned = Self;
984
985        #[inline(always)]
986        fn inline_align(_context: fidl::encoding::Context) -> usize {
987            8
988        }
989
990        #[inline(always)]
991        fn inline_size(_context: fidl::encoding::Context) -> usize {
992            16
993        }
994    }
995
996    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CountersGetResponse, D>
997        for &CountersGetResponse
998    {
999        #[inline]
1000        unsafe fn encode(
1001            self,
1002            encoder: &mut fidl::encoding::Encoder<'_, D>,
1003            offset: usize,
1004            _depth: fidl::encoding::Depth,
1005        ) -> fidl::Result<()> {
1006            encoder.debug_check_bounds::<CountersGetResponse>(offset);
1007            // Delegate to tuple encoding.
1008            fidl::encoding::Encode::<CountersGetResponse, D>::encode(
1009                (<AllCounters as fidl::encoding::ValueTypeMarker>::borrow(&self.counters),),
1010                encoder,
1011                offset,
1012                _depth,
1013            )
1014        }
1015    }
1016    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<AllCounters, D>>
1017        fidl::encoding::Encode<CountersGetResponse, D> for (T0,)
1018    {
1019        #[inline]
1020        unsafe fn encode(
1021            self,
1022            encoder: &mut fidl::encoding::Encoder<'_, D>,
1023            offset: usize,
1024            depth: fidl::encoding::Depth,
1025        ) -> fidl::Result<()> {
1026            encoder.debug_check_bounds::<CountersGetResponse>(offset);
1027            // Zero out padding regions. There's no need to apply masks
1028            // because the unmasked parts will be overwritten by fields.
1029            // Write the fields.
1030            self.0.encode(encoder, offset + 0, depth)?;
1031            Ok(())
1032        }
1033    }
1034
1035    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CountersGetResponse {
1036        #[inline(always)]
1037        fn new_empty() -> Self {
1038            Self { counters: fidl::new_empty!(AllCounters, D) }
1039        }
1040
1041        #[inline]
1042        unsafe fn decode(
1043            &mut self,
1044            decoder: &mut fidl::encoding::Decoder<'_, D>,
1045            offset: usize,
1046            _depth: fidl::encoding::Depth,
1047        ) -> fidl::Result<()> {
1048            decoder.debug_check_bounds::<Self>(offset);
1049            // Verify that padding bytes are zero.
1050            fidl::decode!(AllCounters, D, &mut self.counters, decoder, offset + 0, _depth)?;
1051            Ok(())
1052        }
1053    }
1054
1055    impl fidl::encoding::ValueTypeMarker for CountersResetResponse {
1056        type Borrowed<'a> = &'a Self;
1057        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1058            value
1059        }
1060    }
1061
1062    unsafe impl fidl::encoding::TypeMarker for CountersResetResponse {
1063        type Owned = Self;
1064
1065        #[inline(always)]
1066        fn inline_align(_context: fidl::encoding::Context) -> usize {
1067            8
1068        }
1069
1070        #[inline(always)]
1071        fn inline_size(_context: fidl::encoding::Context) -> usize {
1072            16
1073        }
1074    }
1075
1076    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CountersResetResponse, D>
1077        for &CountersResetResponse
1078    {
1079        #[inline]
1080        unsafe fn encode(
1081            self,
1082            encoder: &mut fidl::encoding::Encoder<'_, D>,
1083            offset: usize,
1084            _depth: fidl::encoding::Depth,
1085        ) -> fidl::Result<()> {
1086            encoder.debug_check_bounds::<CountersResetResponse>(offset);
1087            // Delegate to tuple encoding.
1088            fidl::encoding::Encode::<CountersResetResponse, D>::encode(
1089                (<AllCounters as fidl::encoding::ValueTypeMarker>::borrow(&self.counters),),
1090                encoder,
1091                offset,
1092                _depth,
1093            )
1094        }
1095    }
1096    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<AllCounters, D>>
1097        fidl::encoding::Encode<CountersResetResponse, D> for (T0,)
1098    {
1099        #[inline]
1100        unsafe fn encode(
1101            self,
1102            encoder: &mut fidl::encoding::Encoder<'_, D>,
1103            offset: usize,
1104            depth: fidl::encoding::Depth,
1105        ) -> fidl::Result<()> {
1106            encoder.debug_check_bounds::<CountersResetResponse>(offset);
1107            // Zero out padding regions. There's no need to apply masks
1108            // because the unmasked parts will be overwritten by fields.
1109            // Write the fields.
1110            self.0.encode(encoder, offset + 0, depth)?;
1111            Ok(())
1112        }
1113    }
1114
1115    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CountersResetResponse {
1116        #[inline(always)]
1117        fn new_empty() -> Self {
1118            Self { counters: fidl::new_empty!(AllCounters, D) }
1119        }
1120
1121        #[inline]
1122        unsafe fn decode(
1123            &mut self,
1124            decoder: &mut fidl::encoding::Decoder<'_, D>,
1125            offset: usize,
1126            _depth: fidl::encoding::Depth,
1127        ) -> fidl::Result<()> {
1128            decoder.debug_check_bounds::<Self>(offset);
1129            // Verify that padding bytes are zero.
1130            fidl::decode!(AllCounters, D, &mut self.counters, decoder, offset + 0, _depth)?;
1131            Ok(())
1132        }
1133    }
1134
1135    impl fidl::encoding::ValueTypeMarker for DeviceExtraGetCredentialResponse {
1136        type Borrowed<'a> = &'a Self;
1137        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1138            value
1139        }
1140    }
1141
1142    unsafe impl fidl::encoding::TypeMarker for DeviceExtraGetCredentialResponse {
1143        type Owned = Self;
1144
1145        #[inline(always)]
1146        fn inline_align(_context: fidl::encoding::Context) -> usize {
1147            8
1148        }
1149
1150        #[inline(always)]
1151        fn inline_size(_context: fidl::encoding::Context) -> usize {
1152            16
1153        }
1154    }
1155
1156    unsafe impl<D: fidl::encoding::ResourceDialect>
1157        fidl::encoding::Encode<DeviceExtraGetCredentialResponse, D>
1158        for &DeviceExtraGetCredentialResponse
1159    {
1160        #[inline]
1161        unsafe fn encode(
1162            self,
1163            encoder: &mut fidl::encoding::Encoder<'_, D>,
1164            offset: usize,
1165            _depth: fidl::encoding::Depth,
1166        ) -> fidl::Result<()> {
1167            encoder.debug_check_bounds::<DeviceExtraGetCredentialResponse>(offset);
1168            // Delegate to tuple encoding.
1169            fidl::encoding::Encode::<DeviceExtraGetCredentialResponse, D>::encode(
1170                (
1171                    <fidl::encoding::OptionalUnion<Credential> as fidl::encoding::ValueTypeMarker>::borrow(&self.credential),
1172                ),
1173                encoder, offset, _depth
1174            )
1175        }
1176    }
1177    unsafe impl<
1178        D: fidl::encoding::ResourceDialect,
1179        T0: fidl::encoding::Encode<fidl::encoding::OptionalUnion<Credential>, D>,
1180    > fidl::encoding::Encode<DeviceExtraGetCredentialResponse, D> for (T0,)
1181    {
1182        #[inline]
1183        unsafe fn encode(
1184            self,
1185            encoder: &mut fidl::encoding::Encoder<'_, D>,
1186            offset: usize,
1187            depth: fidl::encoding::Depth,
1188        ) -> fidl::Result<()> {
1189            encoder.debug_check_bounds::<DeviceExtraGetCredentialResponse>(offset);
1190            // Zero out padding regions. There's no need to apply masks
1191            // because the unmasked parts will be overwritten by fields.
1192            // Write the fields.
1193            self.0.encode(encoder, offset + 0, depth)?;
1194            Ok(())
1195        }
1196    }
1197
1198    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1199        for DeviceExtraGetCredentialResponse
1200    {
1201        #[inline(always)]
1202        fn new_empty() -> Self {
1203            Self { credential: fidl::new_empty!(fidl::encoding::OptionalUnion<Credential>, D) }
1204        }
1205
1206        #[inline]
1207        unsafe fn decode(
1208            &mut self,
1209            decoder: &mut fidl::encoding::Decoder<'_, D>,
1210            offset: usize,
1211            _depth: fidl::encoding::Depth,
1212        ) -> fidl::Result<()> {
1213            decoder.debug_check_bounds::<Self>(offset);
1214            // Verify that padding bytes are zero.
1215            fidl::decode!(
1216                fidl::encoding::OptionalUnion<Credential>,
1217                D,
1218                &mut self.credential,
1219                decoder,
1220                offset + 0,
1221                _depth
1222            )?;
1223            Ok(())
1224        }
1225    }
1226
1227    impl fidl::encoding::ValueTypeMarker for DeviceExtraGetCurrentMacAddressResponse {
1228        type Borrowed<'a> = &'a Self;
1229        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1230            value
1231        }
1232    }
1233
1234    unsafe impl fidl::encoding::TypeMarker for DeviceExtraGetCurrentMacAddressResponse {
1235        type Owned = Self;
1236
1237        #[inline(always)]
1238        fn inline_align(_context: fidl::encoding::Context) -> usize {
1239            1
1240        }
1241
1242        #[inline(always)]
1243        fn inline_size(_context: fidl::encoding::Context) -> usize {
1244            8
1245        }
1246    }
1247
1248    unsafe impl<D: fidl::encoding::ResourceDialect>
1249        fidl::encoding::Encode<DeviceExtraGetCurrentMacAddressResponse, D>
1250        for &DeviceExtraGetCurrentMacAddressResponse
1251    {
1252        #[inline]
1253        unsafe fn encode(
1254            self,
1255            encoder: &mut fidl::encoding::Encoder<'_, D>,
1256            offset: usize,
1257            _depth: fidl::encoding::Depth,
1258        ) -> fidl::Result<()> {
1259            encoder.debug_check_bounds::<DeviceExtraGetCurrentMacAddressResponse>(offset);
1260            // Delegate to tuple encoding.
1261            fidl::encoding::Encode::<DeviceExtraGetCurrentMacAddressResponse, D>::encode(
1262                (
1263                    <fidl_fuchsia_lowpan__common::MacAddress as fidl::encoding::ValueTypeMarker>::borrow(&self.address),
1264                ),
1265                encoder, offset, _depth
1266            )
1267        }
1268    }
1269    unsafe impl<
1270        D: fidl::encoding::ResourceDialect,
1271        T0: fidl::encoding::Encode<fidl_fuchsia_lowpan__common::MacAddress, D>,
1272    > fidl::encoding::Encode<DeviceExtraGetCurrentMacAddressResponse, D> for (T0,)
1273    {
1274        #[inline]
1275        unsafe fn encode(
1276            self,
1277            encoder: &mut fidl::encoding::Encoder<'_, D>,
1278            offset: usize,
1279            depth: fidl::encoding::Depth,
1280        ) -> fidl::Result<()> {
1281            encoder.debug_check_bounds::<DeviceExtraGetCurrentMacAddressResponse>(offset);
1282            // Zero out padding regions. There's no need to apply masks
1283            // because the unmasked parts will be overwritten by fields.
1284            // Write the fields.
1285            self.0.encode(encoder, offset + 0, depth)?;
1286            Ok(())
1287        }
1288    }
1289
1290    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1291        for DeviceExtraGetCurrentMacAddressResponse
1292    {
1293        #[inline(always)]
1294        fn new_empty() -> Self {
1295            Self { address: fidl::new_empty!(fidl_fuchsia_lowpan__common::MacAddress, D) }
1296        }
1297
1298        #[inline]
1299        unsafe fn decode(
1300            &mut self,
1301            decoder: &mut fidl::encoding::Decoder<'_, D>,
1302            offset: usize,
1303            _depth: fidl::encoding::Depth,
1304        ) -> fidl::Result<()> {
1305            decoder.debug_check_bounds::<Self>(offset);
1306            // Verify that padding bytes are zero.
1307            fidl::decode!(
1308                fidl_fuchsia_lowpan__common::MacAddress,
1309                D,
1310                &mut self.address,
1311                decoder,
1312                offset + 0,
1313                _depth
1314            )?;
1315            Ok(())
1316        }
1317    }
1318
1319    impl fidl::encoding::ValueTypeMarker for DeviceExtraWatchIdentityResponse {
1320        type Borrowed<'a> = &'a Self;
1321        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1322            value
1323        }
1324    }
1325
1326    unsafe impl fidl::encoding::TypeMarker for DeviceExtraWatchIdentityResponse {
1327        type Owned = Self;
1328
1329        #[inline(always)]
1330        fn inline_align(_context: fidl::encoding::Context) -> usize {
1331            8
1332        }
1333
1334        #[inline(always)]
1335        fn inline_size(_context: fidl::encoding::Context) -> usize {
1336            16
1337        }
1338    }
1339
1340    unsafe impl<D: fidl::encoding::ResourceDialect>
1341        fidl::encoding::Encode<DeviceExtraWatchIdentityResponse, D>
1342        for &DeviceExtraWatchIdentityResponse
1343    {
1344        #[inline]
1345        unsafe fn encode(
1346            self,
1347            encoder: &mut fidl::encoding::Encoder<'_, D>,
1348            offset: usize,
1349            _depth: fidl::encoding::Depth,
1350        ) -> fidl::Result<()> {
1351            encoder.debug_check_bounds::<DeviceExtraWatchIdentityResponse>(offset);
1352            // Delegate to tuple encoding.
1353            fidl::encoding::Encode::<DeviceExtraWatchIdentityResponse, D>::encode(
1354                (<Identity as fidl::encoding::ValueTypeMarker>::borrow(&self.identity),),
1355                encoder,
1356                offset,
1357                _depth,
1358            )
1359        }
1360    }
1361    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Identity, D>>
1362        fidl::encoding::Encode<DeviceExtraWatchIdentityResponse, D> for (T0,)
1363    {
1364        #[inline]
1365        unsafe fn encode(
1366            self,
1367            encoder: &mut fidl::encoding::Encoder<'_, D>,
1368            offset: usize,
1369            depth: fidl::encoding::Depth,
1370        ) -> fidl::Result<()> {
1371            encoder.debug_check_bounds::<DeviceExtraWatchIdentityResponse>(offset);
1372            // Zero out padding regions. There's no need to apply masks
1373            // because the unmasked parts will be overwritten by fields.
1374            // Write the fields.
1375            self.0.encode(encoder, offset + 0, depth)?;
1376            Ok(())
1377        }
1378    }
1379
1380    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1381        for DeviceExtraWatchIdentityResponse
1382    {
1383        #[inline(always)]
1384        fn new_empty() -> Self {
1385            Self { identity: fidl::new_empty!(Identity, D) }
1386        }
1387
1388        #[inline]
1389        unsafe fn decode(
1390            &mut self,
1391            decoder: &mut fidl::encoding::Decoder<'_, D>,
1392            offset: usize,
1393            _depth: fidl::encoding::Depth,
1394        ) -> fidl::Result<()> {
1395            decoder.debug_check_bounds::<Self>(offset);
1396            // Verify that padding bytes are zero.
1397            fidl::decode!(Identity, D, &mut self.identity, decoder, offset + 0, _depth)?;
1398            Ok(())
1399        }
1400    }
1401
1402    impl fidl::encoding::ValueTypeMarker for DeviceGetSupportedNetworkTypesResponse {
1403        type Borrowed<'a> = &'a Self;
1404        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1405            value
1406        }
1407    }
1408
1409    unsafe impl fidl::encoding::TypeMarker for DeviceGetSupportedNetworkTypesResponse {
1410        type Owned = Self;
1411
1412        #[inline(always)]
1413        fn inline_align(_context: fidl::encoding::Context) -> usize {
1414            8
1415        }
1416
1417        #[inline(always)]
1418        fn inline_size(_context: fidl::encoding::Context) -> usize {
1419            16
1420        }
1421    }
1422
1423    unsafe impl<D: fidl::encoding::ResourceDialect>
1424        fidl::encoding::Encode<DeviceGetSupportedNetworkTypesResponse, D>
1425        for &DeviceGetSupportedNetworkTypesResponse
1426    {
1427        #[inline]
1428        unsafe fn encode(
1429            self,
1430            encoder: &mut fidl::encoding::Encoder<'_, D>,
1431            offset: usize,
1432            _depth: fidl::encoding::Depth,
1433        ) -> fidl::Result<()> {
1434            encoder.debug_check_bounds::<DeviceGetSupportedNetworkTypesResponse>(offset);
1435            // Delegate to tuple encoding.
1436            fidl::encoding::Encode::<DeviceGetSupportedNetworkTypesResponse, D>::encode(
1437                (
1438                    <fidl::encoding::Vector<fidl::encoding::BoundedString<64>, 16> as fidl::encoding::ValueTypeMarker>::borrow(&self.network_types),
1439                ),
1440                encoder, offset, _depth
1441            )
1442        }
1443    }
1444    unsafe impl<
1445        D: fidl::encoding::ResourceDialect,
1446        T0: fidl::encoding::Encode<fidl::encoding::Vector<fidl::encoding::BoundedString<64>, 16>, D>,
1447    > fidl::encoding::Encode<DeviceGetSupportedNetworkTypesResponse, D> for (T0,)
1448    {
1449        #[inline]
1450        unsafe fn encode(
1451            self,
1452            encoder: &mut fidl::encoding::Encoder<'_, D>,
1453            offset: usize,
1454            depth: fidl::encoding::Depth,
1455        ) -> fidl::Result<()> {
1456            encoder.debug_check_bounds::<DeviceGetSupportedNetworkTypesResponse>(offset);
1457            // Zero out padding regions. There's no need to apply masks
1458            // because the unmasked parts will be overwritten by fields.
1459            // Write the fields.
1460            self.0.encode(encoder, offset + 0, depth)?;
1461            Ok(())
1462        }
1463    }
1464
1465    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1466        for DeviceGetSupportedNetworkTypesResponse
1467    {
1468        #[inline(always)]
1469        fn new_empty() -> Self {
1470            Self {
1471                network_types: fidl::new_empty!(
1472                    fidl::encoding::Vector<fidl::encoding::BoundedString<64>, 16>,
1473                    D
1474                ),
1475            }
1476        }
1477
1478        #[inline]
1479        unsafe fn decode(
1480            &mut self,
1481            decoder: &mut fidl::encoding::Decoder<'_, D>,
1482            offset: usize,
1483            _depth: fidl::encoding::Depth,
1484        ) -> fidl::Result<()> {
1485            decoder.debug_check_bounds::<Self>(offset);
1486            // Verify that padding bytes are zero.
1487            fidl::decode!(
1488                fidl::encoding::Vector<fidl::encoding::BoundedString<64>, 16>,
1489                D,
1490                &mut self.network_types,
1491                decoder,
1492                offset + 0,
1493                _depth
1494            )?;
1495            Ok(())
1496        }
1497    }
1498
1499    impl fidl::encoding::ValueTypeMarker for DeviceProvisionNetworkRequest {
1500        type Borrowed<'a> = &'a Self;
1501        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1502            value
1503        }
1504    }
1505
1506    unsafe impl fidl::encoding::TypeMarker for DeviceProvisionNetworkRequest {
1507        type Owned = Self;
1508
1509        #[inline(always)]
1510        fn inline_align(_context: fidl::encoding::Context) -> usize {
1511            8
1512        }
1513
1514        #[inline(always)]
1515        fn inline_size(_context: fidl::encoding::Context) -> usize {
1516            32
1517        }
1518    }
1519
1520    unsafe impl<D: fidl::encoding::ResourceDialect>
1521        fidl::encoding::Encode<DeviceProvisionNetworkRequest, D>
1522        for &DeviceProvisionNetworkRequest
1523    {
1524        #[inline]
1525        unsafe fn encode(
1526            self,
1527            encoder: &mut fidl::encoding::Encoder<'_, D>,
1528            offset: usize,
1529            _depth: fidl::encoding::Depth,
1530        ) -> fidl::Result<()> {
1531            encoder.debug_check_bounds::<DeviceProvisionNetworkRequest>(offset);
1532            // Delegate to tuple encoding.
1533            fidl::encoding::Encode::<DeviceProvisionNetworkRequest, D>::encode(
1534                (<ProvisioningParams as fidl::encoding::ValueTypeMarker>::borrow(&self.params),),
1535                encoder,
1536                offset,
1537                _depth,
1538            )
1539        }
1540    }
1541    unsafe impl<
1542        D: fidl::encoding::ResourceDialect,
1543        T0: fidl::encoding::Encode<ProvisioningParams, D>,
1544    > fidl::encoding::Encode<DeviceProvisionNetworkRequest, D> for (T0,)
1545    {
1546        #[inline]
1547        unsafe fn encode(
1548            self,
1549            encoder: &mut fidl::encoding::Encoder<'_, D>,
1550            offset: usize,
1551            depth: fidl::encoding::Depth,
1552        ) -> fidl::Result<()> {
1553            encoder.debug_check_bounds::<DeviceProvisionNetworkRequest>(offset);
1554            // Zero out padding regions. There's no need to apply masks
1555            // because the unmasked parts will be overwritten by fields.
1556            // Write the fields.
1557            self.0.encode(encoder, offset + 0, depth)?;
1558            Ok(())
1559        }
1560    }
1561
1562    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1563        for DeviceProvisionNetworkRequest
1564    {
1565        #[inline(always)]
1566        fn new_empty() -> Self {
1567            Self { params: fidl::new_empty!(ProvisioningParams, D) }
1568        }
1569
1570        #[inline]
1571        unsafe fn decode(
1572            &mut self,
1573            decoder: &mut fidl::encoding::Decoder<'_, D>,
1574            offset: usize,
1575            _depth: fidl::encoding::Depth,
1576        ) -> fidl::Result<()> {
1577            decoder.debug_check_bounds::<Self>(offset);
1578            // Verify that padding bytes are zero.
1579            fidl::decode!(ProvisioningParams, D, &mut self.params, decoder, offset + 0, _depth)?;
1580            Ok(())
1581        }
1582    }
1583
1584    impl fidl::encoding::ValueTypeMarker for DeviceSetActiveRequest {
1585        type Borrowed<'a> = &'a Self;
1586        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1587            value
1588        }
1589    }
1590
1591    unsafe impl fidl::encoding::TypeMarker for DeviceSetActiveRequest {
1592        type Owned = Self;
1593
1594        #[inline(always)]
1595        fn inline_align(_context: fidl::encoding::Context) -> usize {
1596            1
1597        }
1598
1599        #[inline(always)]
1600        fn inline_size(_context: fidl::encoding::Context) -> usize {
1601            1
1602        }
1603    }
1604
1605    unsafe impl<D: fidl::encoding::ResourceDialect>
1606        fidl::encoding::Encode<DeviceSetActiveRequest, D> for &DeviceSetActiveRequest
1607    {
1608        #[inline]
1609        unsafe fn encode(
1610            self,
1611            encoder: &mut fidl::encoding::Encoder<'_, D>,
1612            offset: usize,
1613            _depth: fidl::encoding::Depth,
1614        ) -> fidl::Result<()> {
1615            encoder.debug_check_bounds::<DeviceSetActiveRequest>(offset);
1616            // Delegate to tuple encoding.
1617            fidl::encoding::Encode::<DeviceSetActiveRequest, D>::encode(
1618                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.active),),
1619                encoder,
1620                offset,
1621                _depth,
1622            )
1623        }
1624    }
1625    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
1626        fidl::encoding::Encode<DeviceSetActiveRequest, D> for (T0,)
1627    {
1628        #[inline]
1629        unsafe fn encode(
1630            self,
1631            encoder: &mut fidl::encoding::Encoder<'_, D>,
1632            offset: usize,
1633            depth: fidl::encoding::Depth,
1634        ) -> fidl::Result<()> {
1635            encoder.debug_check_bounds::<DeviceSetActiveRequest>(offset);
1636            // Zero out padding regions. There's no need to apply masks
1637            // because the unmasked parts will be overwritten by fields.
1638            // Write the fields.
1639            self.0.encode(encoder, offset + 0, depth)?;
1640            Ok(())
1641        }
1642    }
1643
1644    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1645        for DeviceSetActiveRequest
1646    {
1647        #[inline(always)]
1648        fn new_empty() -> Self {
1649            Self { active: fidl::new_empty!(bool, D) }
1650        }
1651
1652        #[inline]
1653        unsafe fn decode(
1654            &mut self,
1655            decoder: &mut fidl::encoding::Decoder<'_, D>,
1656            offset: usize,
1657            _depth: fidl::encoding::Depth,
1658        ) -> fidl::Result<()> {
1659            decoder.debug_check_bounds::<Self>(offset);
1660            // Verify that padding bytes are zero.
1661            fidl::decode!(bool, D, &mut self.active, decoder, offset + 0, _depth)?;
1662            Ok(())
1663        }
1664    }
1665
1666    impl fidl::encoding::ValueTypeMarker for DeviceWatchDeviceStateResponse {
1667        type Borrowed<'a> = &'a Self;
1668        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1669            value
1670        }
1671    }
1672
1673    unsafe impl fidl::encoding::TypeMarker for DeviceWatchDeviceStateResponse {
1674        type Owned = Self;
1675
1676        #[inline(always)]
1677        fn inline_align(_context: fidl::encoding::Context) -> usize {
1678            8
1679        }
1680
1681        #[inline(always)]
1682        fn inline_size(_context: fidl::encoding::Context) -> usize {
1683            16
1684        }
1685    }
1686
1687    unsafe impl<D: fidl::encoding::ResourceDialect>
1688        fidl::encoding::Encode<DeviceWatchDeviceStateResponse, D>
1689        for &DeviceWatchDeviceStateResponse
1690    {
1691        #[inline]
1692        unsafe fn encode(
1693            self,
1694            encoder: &mut fidl::encoding::Encoder<'_, D>,
1695            offset: usize,
1696            _depth: fidl::encoding::Depth,
1697        ) -> fidl::Result<()> {
1698            encoder.debug_check_bounds::<DeviceWatchDeviceStateResponse>(offset);
1699            // Delegate to tuple encoding.
1700            fidl::encoding::Encode::<DeviceWatchDeviceStateResponse, D>::encode(
1701                (<DeviceState as fidl::encoding::ValueTypeMarker>::borrow(
1702                    &self.device_combined_state,
1703                ),),
1704                encoder,
1705                offset,
1706                _depth,
1707            )
1708        }
1709    }
1710    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<DeviceState, D>>
1711        fidl::encoding::Encode<DeviceWatchDeviceStateResponse, D> for (T0,)
1712    {
1713        #[inline]
1714        unsafe fn encode(
1715            self,
1716            encoder: &mut fidl::encoding::Encoder<'_, D>,
1717            offset: usize,
1718            depth: fidl::encoding::Depth,
1719        ) -> fidl::Result<()> {
1720            encoder.debug_check_bounds::<DeviceWatchDeviceStateResponse>(offset);
1721            // Zero out padding regions. There's no need to apply masks
1722            // because the unmasked parts will be overwritten by fields.
1723            // Write the fields.
1724            self.0.encode(encoder, offset + 0, depth)?;
1725            Ok(())
1726        }
1727    }
1728
1729    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1730        for DeviceWatchDeviceStateResponse
1731    {
1732        #[inline(always)]
1733        fn new_empty() -> Self {
1734            Self { device_combined_state: fidl::new_empty!(DeviceState, D) }
1735        }
1736
1737        #[inline]
1738        unsafe fn decode(
1739            &mut self,
1740            decoder: &mut fidl::encoding::Decoder<'_, D>,
1741            offset: usize,
1742            _depth: fidl::encoding::Depth,
1743        ) -> fidl::Result<()> {
1744            decoder.debug_check_bounds::<Self>(offset);
1745            // Verify that padding bytes are zero.
1746            fidl::decode!(
1747                DeviceState,
1748                D,
1749                &mut self.device_combined_state,
1750                decoder,
1751                offset + 0,
1752                _depth
1753            )?;
1754            Ok(())
1755        }
1756    }
1757
1758    impl fidl::encoding::ValueTypeMarker for EnergyScanResultStreamNextResponse {
1759        type Borrowed<'a> = &'a Self;
1760        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1761            value
1762        }
1763    }
1764
1765    unsafe impl fidl::encoding::TypeMarker for EnergyScanResultStreamNextResponse {
1766        type Owned = Self;
1767
1768        #[inline(always)]
1769        fn inline_align(_context: fidl::encoding::Context) -> usize {
1770            8
1771        }
1772
1773        #[inline(always)]
1774        fn inline_size(_context: fidl::encoding::Context) -> usize {
1775            16
1776        }
1777    }
1778
1779    unsafe impl<D: fidl::encoding::ResourceDialect>
1780        fidl::encoding::Encode<EnergyScanResultStreamNextResponse, D>
1781        for &EnergyScanResultStreamNextResponse
1782    {
1783        #[inline]
1784        unsafe fn encode(
1785            self,
1786            encoder: &mut fidl::encoding::Encoder<'_, D>,
1787            offset: usize,
1788            _depth: fidl::encoding::Depth,
1789        ) -> fidl::Result<()> {
1790            encoder.debug_check_bounds::<EnergyScanResultStreamNextResponse>(offset);
1791            // Delegate to tuple encoding.
1792            fidl::encoding::Encode::<EnergyScanResultStreamNextResponse, D>::encode(
1793                (
1794                    <fidl::encoding::Vector<EnergyScanResult, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.results),
1795                ),
1796                encoder, offset, _depth
1797            )
1798        }
1799    }
1800    unsafe impl<
1801        D: fidl::encoding::ResourceDialect,
1802        T0: fidl::encoding::Encode<fidl::encoding::Vector<EnergyScanResult, 32>, D>,
1803    > fidl::encoding::Encode<EnergyScanResultStreamNextResponse, D> for (T0,)
1804    {
1805        #[inline]
1806        unsafe fn encode(
1807            self,
1808            encoder: &mut fidl::encoding::Encoder<'_, D>,
1809            offset: usize,
1810            depth: fidl::encoding::Depth,
1811        ) -> fidl::Result<()> {
1812            encoder.debug_check_bounds::<EnergyScanResultStreamNextResponse>(offset);
1813            // Zero out padding regions. There's no need to apply masks
1814            // because the unmasked parts will be overwritten by fields.
1815            // Write the fields.
1816            self.0.encode(encoder, offset + 0, depth)?;
1817            Ok(())
1818        }
1819    }
1820
1821    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1822        for EnergyScanResultStreamNextResponse
1823    {
1824        #[inline(always)]
1825        fn new_empty() -> Self {
1826            Self { results: fidl::new_empty!(fidl::encoding::Vector<EnergyScanResult, 32>, D) }
1827        }
1828
1829        #[inline]
1830        unsafe fn decode(
1831            &mut self,
1832            decoder: &mut fidl::encoding::Decoder<'_, D>,
1833            offset: usize,
1834            _depth: fidl::encoding::Depth,
1835        ) -> fidl::Result<()> {
1836            decoder.debug_check_bounds::<Self>(offset);
1837            // Verify that padding bytes are zero.
1838            fidl::decode!(fidl::encoding::Vector<EnergyScanResult, 32>, D, &mut self.results, decoder, offset + 0, _depth)?;
1839            Ok(())
1840        }
1841    }
1842
1843    impl fidl::encoding::ValueTypeMarker for ProvisioningParams {
1844        type Borrowed<'a> = &'a Self;
1845        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1846            value
1847        }
1848    }
1849
1850    unsafe impl fidl::encoding::TypeMarker for ProvisioningParams {
1851        type Owned = Self;
1852
1853        #[inline(always)]
1854        fn inline_align(_context: fidl::encoding::Context) -> usize {
1855            8
1856        }
1857
1858        #[inline(always)]
1859        fn inline_size(_context: fidl::encoding::Context) -> usize {
1860            32
1861        }
1862    }
1863
1864    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProvisioningParams, D>
1865        for &ProvisioningParams
1866    {
1867        #[inline]
1868        unsafe fn encode(
1869            self,
1870            encoder: &mut fidl::encoding::Encoder<'_, D>,
1871            offset: usize,
1872            _depth: fidl::encoding::Depth,
1873        ) -> fidl::Result<()> {
1874            encoder.debug_check_bounds::<ProvisioningParams>(offset);
1875            // Delegate to tuple encoding.
1876            fidl::encoding::Encode::<ProvisioningParams, D>::encode(
1877                (
1878                    <Identity as fidl::encoding::ValueTypeMarker>::borrow(&self.identity),
1879                    <fidl::encoding::OptionalUnion<Credential> as fidl::encoding::ValueTypeMarker>::borrow(&self.credential),
1880                ),
1881                encoder, offset, _depth
1882            )
1883        }
1884    }
1885    unsafe impl<
1886        D: fidl::encoding::ResourceDialect,
1887        T0: fidl::encoding::Encode<Identity, D>,
1888        T1: fidl::encoding::Encode<fidl::encoding::OptionalUnion<Credential>, D>,
1889    > fidl::encoding::Encode<ProvisioningParams, D> for (T0, T1)
1890    {
1891        #[inline]
1892        unsafe fn encode(
1893            self,
1894            encoder: &mut fidl::encoding::Encoder<'_, D>,
1895            offset: usize,
1896            depth: fidl::encoding::Depth,
1897        ) -> fidl::Result<()> {
1898            encoder.debug_check_bounds::<ProvisioningParams>(offset);
1899            // Zero out padding regions. There's no need to apply masks
1900            // because the unmasked parts will be overwritten by fields.
1901            // Write the fields.
1902            self.0.encode(encoder, offset + 0, depth)?;
1903            self.1.encode(encoder, offset + 16, depth)?;
1904            Ok(())
1905        }
1906    }
1907
1908    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProvisioningParams {
1909        #[inline(always)]
1910        fn new_empty() -> Self {
1911            Self {
1912                identity: fidl::new_empty!(Identity, D),
1913                credential: fidl::new_empty!(fidl::encoding::OptionalUnion<Credential>, D),
1914            }
1915        }
1916
1917        #[inline]
1918        unsafe fn decode(
1919            &mut self,
1920            decoder: &mut fidl::encoding::Decoder<'_, D>,
1921            offset: usize,
1922            _depth: fidl::encoding::Depth,
1923        ) -> fidl::Result<()> {
1924            decoder.debug_check_bounds::<Self>(offset);
1925            // Verify that padding bytes are zero.
1926            fidl::decode!(Identity, D, &mut self.identity, decoder, offset + 0, _depth)?;
1927            fidl::decode!(
1928                fidl::encoding::OptionalUnion<Credential>,
1929                D,
1930                &mut self.credential,
1931                decoder,
1932                offset + 16,
1933                _depth
1934            )?;
1935            Ok(())
1936        }
1937    }
1938
1939    impl AllCounters {
1940        #[inline(always)]
1941        fn max_ordinal_present(&self) -> u64 {
1942            if let Some(_) = self.border_agent {
1943                return 8;
1944            }
1945            if let Some(_) = self.ip_rx {
1946                return 7;
1947            }
1948            if let Some(_) = self.ip_tx {
1949                return 6;
1950            }
1951            if let Some(_) = self.coex_saturated {
1952                return 5;
1953            }
1954            if let Some(_) = self.coex_rx {
1955                return 4;
1956            }
1957            if let Some(_) = self.coex_tx {
1958                return 3;
1959            }
1960            if let Some(_) = self.mac_rx {
1961                return 2;
1962            }
1963            if let Some(_) = self.mac_tx {
1964                return 1;
1965            }
1966            0
1967        }
1968    }
1969
1970    impl fidl::encoding::ValueTypeMarker for AllCounters {
1971        type Borrowed<'a> = &'a Self;
1972        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1973            value
1974        }
1975    }
1976
1977    unsafe impl fidl::encoding::TypeMarker for AllCounters {
1978        type Owned = Self;
1979
1980        #[inline(always)]
1981        fn inline_align(_context: fidl::encoding::Context) -> usize {
1982            8
1983        }
1984
1985        #[inline(always)]
1986        fn inline_size(_context: fidl::encoding::Context) -> usize {
1987            16
1988        }
1989    }
1990
1991    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AllCounters, D>
1992        for &AllCounters
1993    {
1994        unsafe fn encode(
1995            self,
1996            encoder: &mut fidl::encoding::Encoder<'_, D>,
1997            offset: usize,
1998            mut depth: fidl::encoding::Depth,
1999        ) -> fidl::Result<()> {
2000            encoder.debug_check_bounds::<AllCounters>(offset);
2001            // Vector header
2002            let max_ordinal: u64 = self.max_ordinal_present();
2003            encoder.write_num(max_ordinal, offset);
2004            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2005            // Calling encoder.out_of_line_offset(0) is not allowed.
2006            if max_ordinal == 0 {
2007                return Ok(());
2008            }
2009            depth.increment()?;
2010            let envelope_size = 8;
2011            let bytes_len = max_ordinal as usize * envelope_size;
2012            #[allow(unused_variables)]
2013            let offset = encoder.out_of_line_offset(bytes_len);
2014            let mut _prev_end_offset: usize = 0;
2015            if 1 > max_ordinal {
2016                return Ok(());
2017            }
2018
2019            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2020            // are envelope_size bytes.
2021            let cur_offset: usize = (1 - 1) * envelope_size;
2022
2023            // Zero reserved fields.
2024            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2025
2026            // Safety:
2027            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2028            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2029            //   envelope_size bytes, there is always sufficient room.
2030            fidl::encoding::encode_in_envelope_optional::<MacCounters, D>(
2031                self.mac_tx.as_ref().map(<MacCounters as fidl::encoding::ValueTypeMarker>::borrow),
2032                encoder,
2033                offset + cur_offset,
2034                depth,
2035            )?;
2036
2037            _prev_end_offset = cur_offset + envelope_size;
2038            if 2 > max_ordinal {
2039                return Ok(());
2040            }
2041
2042            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2043            // are envelope_size bytes.
2044            let cur_offset: usize = (2 - 1) * envelope_size;
2045
2046            // Zero reserved fields.
2047            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2048
2049            // Safety:
2050            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2051            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2052            //   envelope_size bytes, there is always sufficient room.
2053            fidl::encoding::encode_in_envelope_optional::<MacCounters, D>(
2054                self.mac_rx.as_ref().map(<MacCounters as fidl::encoding::ValueTypeMarker>::borrow),
2055                encoder,
2056                offset + cur_offset,
2057                depth,
2058            )?;
2059
2060            _prev_end_offset = cur_offset + envelope_size;
2061            if 3 > max_ordinal {
2062                return Ok(());
2063            }
2064
2065            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2066            // are envelope_size bytes.
2067            let cur_offset: usize = (3 - 1) * envelope_size;
2068
2069            // Zero reserved fields.
2070            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2071
2072            // Safety:
2073            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2074            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2075            //   envelope_size bytes, there is always sufficient room.
2076            fidl::encoding::encode_in_envelope_optional::<CoexCounters, D>(
2077                self.coex_tx
2078                    .as_ref()
2079                    .map(<CoexCounters as fidl::encoding::ValueTypeMarker>::borrow),
2080                encoder,
2081                offset + cur_offset,
2082                depth,
2083            )?;
2084
2085            _prev_end_offset = cur_offset + envelope_size;
2086            if 4 > max_ordinal {
2087                return Ok(());
2088            }
2089
2090            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2091            // are envelope_size bytes.
2092            let cur_offset: usize = (4 - 1) * envelope_size;
2093
2094            // Zero reserved fields.
2095            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2096
2097            // Safety:
2098            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2099            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2100            //   envelope_size bytes, there is always sufficient room.
2101            fidl::encoding::encode_in_envelope_optional::<CoexCounters, D>(
2102                self.coex_rx
2103                    .as_ref()
2104                    .map(<CoexCounters as fidl::encoding::ValueTypeMarker>::borrow),
2105                encoder,
2106                offset + cur_offset,
2107                depth,
2108            )?;
2109
2110            _prev_end_offset = cur_offset + envelope_size;
2111            if 5 > max_ordinal {
2112                return Ok(());
2113            }
2114
2115            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2116            // are envelope_size bytes.
2117            let cur_offset: usize = (5 - 1) * envelope_size;
2118
2119            // Zero reserved fields.
2120            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2121
2122            // Safety:
2123            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2124            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2125            //   envelope_size bytes, there is always sufficient room.
2126            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2127                self.coex_saturated.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2128                encoder,
2129                offset + cur_offset,
2130                depth,
2131            )?;
2132
2133            _prev_end_offset = cur_offset + envelope_size;
2134            if 6 > max_ordinal {
2135                return Ok(());
2136            }
2137
2138            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2139            // are envelope_size bytes.
2140            let cur_offset: usize = (6 - 1) * envelope_size;
2141
2142            // Zero reserved fields.
2143            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2144
2145            // Safety:
2146            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2147            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2148            //   envelope_size bytes, there is always sufficient room.
2149            fidl::encoding::encode_in_envelope_optional::<IpCounters, D>(
2150                self.ip_tx.as_ref().map(<IpCounters as fidl::encoding::ValueTypeMarker>::borrow),
2151                encoder,
2152                offset + cur_offset,
2153                depth,
2154            )?;
2155
2156            _prev_end_offset = cur_offset + envelope_size;
2157            if 7 > max_ordinal {
2158                return Ok(());
2159            }
2160
2161            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2162            // are envelope_size bytes.
2163            let cur_offset: usize = (7 - 1) * envelope_size;
2164
2165            // Zero reserved fields.
2166            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2167
2168            // Safety:
2169            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2170            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2171            //   envelope_size bytes, there is always sufficient room.
2172            fidl::encoding::encode_in_envelope_optional::<IpCounters, D>(
2173                self.ip_rx.as_ref().map(<IpCounters as fidl::encoding::ValueTypeMarker>::borrow),
2174                encoder,
2175                offset + cur_offset,
2176                depth,
2177            )?;
2178
2179            _prev_end_offset = cur_offset + envelope_size;
2180            if 8 > max_ordinal {
2181                return Ok(());
2182            }
2183
2184            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2185            // are envelope_size bytes.
2186            let cur_offset: usize = (8 - 1) * envelope_size;
2187
2188            // Zero reserved fields.
2189            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2190
2191            // Safety:
2192            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2193            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2194            //   envelope_size bytes, there is always sufficient room.
2195            fidl::encoding::encode_in_envelope_optional::<BorderAgentCounters, D>(
2196                self.border_agent
2197                    .as_ref()
2198                    .map(<BorderAgentCounters as fidl::encoding::ValueTypeMarker>::borrow),
2199                encoder,
2200                offset + cur_offset,
2201                depth,
2202            )?;
2203
2204            _prev_end_offset = cur_offset + envelope_size;
2205
2206            Ok(())
2207        }
2208    }
2209
2210    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AllCounters {
2211        #[inline(always)]
2212        fn new_empty() -> Self {
2213            Self::default()
2214        }
2215
2216        unsafe fn decode(
2217            &mut self,
2218            decoder: &mut fidl::encoding::Decoder<'_, D>,
2219            offset: usize,
2220            mut depth: fidl::encoding::Depth,
2221        ) -> fidl::Result<()> {
2222            decoder.debug_check_bounds::<Self>(offset);
2223            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2224                None => return Err(fidl::Error::NotNullable),
2225                Some(len) => len,
2226            };
2227            // Calling decoder.out_of_line_offset(0) is not allowed.
2228            if len == 0 {
2229                return Ok(());
2230            };
2231            depth.increment()?;
2232            let envelope_size = 8;
2233            let bytes_len = len * envelope_size;
2234            let offset = decoder.out_of_line_offset(bytes_len)?;
2235            // Decode the envelope for each type.
2236            let mut _next_ordinal_to_read = 0;
2237            let mut next_offset = offset;
2238            let end_offset = offset + bytes_len;
2239            _next_ordinal_to_read += 1;
2240            if next_offset >= end_offset {
2241                return Ok(());
2242            }
2243
2244            // Decode unknown envelopes for gaps in ordinals.
2245            while _next_ordinal_to_read < 1 {
2246                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2247                _next_ordinal_to_read += 1;
2248                next_offset += envelope_size;
2249            }
2250
2251            let next_out_of_line = decoder.next_out_of_line();
2252            let handles_before = decoder.remaining_handles();
2253            if let Some((inlined, num_bytes, num_handles)) =
2254                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2255            {
2256                let member_inline_size =
2257                    <MacCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2258                if inlined != (member_inline_size <= 4) {
2259                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2260                }
2261                let inner_offset;
2262                let mut inner_depth = depth.clone();
2263                if inlined {
2264                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2265                    inner_offset = next_offset;
2266                } else {
2267                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2268                    inner_depth.increment()?;
2269                }
2270                let val_ref = self.mac_tx.get_or_insert_with(|| fidl::new_empty!(MacCounters, D));
2271                fidl::decode!(MacCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
2272                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2273                {
2274                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2275                }
2276                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2277                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2278                }
2279            }
2280
2281            next_offset += envelope_size;
2282            _next_ordinal_to_read += 1;
2283            if next_offset >= end_offset {
2284                return Ok(());
2285            }
2286
2287            // Decode unknown envelopes for gaps in ordinals.
2288            while _next_ordinal_to_read < 2 {
2289                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2290                _next_ordinal_to_read += 1;
2291                next_offset += envelope_size;
2292            }
2293
2294            let next_out_of_line = decoder.next_out_of_line();
2295            let handles_before = decoder.remaining_handles();
2296            if let Some((inlined, num_bytes, num_handles)) =
2297                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2298            {
2299                let member_inline_size =
2300                    <MacCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2301                if inlined != (member_inline_size <= 4) {
2302                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2303                }
2304                let inner_offset;
2305                let mut inner_depth = depth.clone();
2306                if inlined {
2307                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2308                    inner_offset = next_offset;
2309                } else {
2310                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2311                    inner_depth.increment()?;
2312                }
2313                let val_ref = self.mac_rx.get_or_insert_with(|| fidl::new_empty!(MacCounters, D));
2314                fidl::decode!(MacCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
2315                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2316                {
2317                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2318                }
2319                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2320                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2321                }
2322            }
2323
2324            next_offset += envelope_size;
2325            _next_ordinal_to_read += 1;
2326            if next_offset >= end_offset {
2327                return Ok(());
2328            }
2329
2330            // Decode unknown envelopes for gaps in ordinals.
2331            while _next_ordinal_to_read < 3 {
2332                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2333                _next_ordinal_to_read += 1;
2334                next_offset += envelope_size;
2335            }
2336
2337            let next_out_of_line = decoder.next_out_of_line();
2338            let handles_before = decoder.remaining_handles();
2339            if let Some((inlined, num_bytes, num_handles)) =
2340                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2341            {
2342                let member_inline_size =
2343                    <CoexCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2344                if inlined != (member_inline_size <= 4) {
2345                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2346                }
2347                let inner_offset;
2348                let mut inner_depth = depth.clone();
2349                if inlined {
2350                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2351                    inner_offset = next_offset;
2352                } else {
2353                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2354                    inner_depth.increment()?;
2355                }
2356                let val_ref = self.coex_tx.get_or_insert_with(|| fidl::new_empty!(CoexCounters, D));
2357                fidl::decode!(CoexCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
2358                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2359                {
2360                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2361                }
2362                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2363                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2364                }
2365            }
2366
2367            next_offset += envelope_size;
2368            _next_ordinal_to_read += 1;
2369            if next_offset >= end_offset {
2370                return Ok(());
2371            }
2372
2373            // Decode unknown envelopes for gaps in ordinals.
2374            while _next_ordinal_to_read < 4 {
2375                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2376                _next_ordinal_to_read += 1;
2377                next_offset += envelope_size;
2378            }
2379
2380            let next_out_of_line = decoder.next_out_of_line();
2381            let handles_before = decoder.remaining_handles();
2382            if let Some((inlined, num_bytes, num_handles)) =
2383                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2384            {
2385                let member_inline_size =
2386                    <CoexCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2387                if inlined != (member_inline_size <= 4) {
2388                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2389                }
2390                let inner_offset;
2391                let mut inner_depth = depth.clone();
2392                if inlined {
2393                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2394                    inner_offset = next_offset;
2395                } else {
2396                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2397                    inner_depth.increment()?;
2398                }
2399                let val_ref = self.coex_rx.get_or_insert_with(|| fidl::new_empty!(CoexCounters, D));
2400                fidl::decode!(CoexCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
2401                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2402                {
2403                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2404                }
2405                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2406                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2407                }
2408            }
2409
2410            next_offset += envelope_size;
2411            _next_ordinal_to_read += 1;
2412            if next_offset >= end_offset {
2413                return Ok(());
2414            }
2415
2416            // Decode unknown envelopes for gaps in ordinals.
2417            while _next_ordinal_to_read < 5 {
2418                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2419                _next_ordinal_to_read += 1;
2420                next_offset += envelope_size;
2421            }
2422
2423            let next_out_of_line = decoder.next_out_of_line();
2424            let handles_before = decoder.remaining_handles();
2425            if let Some((inlined, num_bytes, num_handles)) =
2426                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2427            {
2428                let member_inline_size =
2429                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2430                if inlined != (member_inline_size <= 4) {
2431                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2432                }
2433                let inner_offset;
2434                let mut inner_depth = depth.clone();
2435                if inlined {
2436                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2437                    inner_offset = next_offset;
2438                } else {
2439                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2440                    inner_depth.increment()?;
2441                }
2442                let val_ref = self.coex_saturated.get_or_insert_with(|| fidl::new_empty!(bool, D));
2443                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2444                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2445                {
2446                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2447                }
2448                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2449                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2450                }
2451            }
2452
2453            next_offset += envelope_size;
2454            _next_ordinal_to_read += 1;
2455            if next_offset >= end_offset {
2456                return Ok(());
2457            }
2458
2459            // Decode unknown envelopes for gaps in ordinals.
2460            while _next_ordinal_to_read < 6 {
2461                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2462                _next_ordinal_to_read += 1;
2463                next_offset += envelope_size;
2464            }
2465
2466            let next_out_of_line = decoder.next_out_of_line();
2467            let handles_before = decoder.remaining_handles();
2468            if let Some((inlined, num_bytes, num_handles)) =
2469                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2470            {
2471                let member_inline_size =
2472                    <IpCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2473                if inlined != (member_inline_size <= 4) {
2474                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2475                }
2476                let inner_offset;
2477                let mut inner_depth = depth.clone();
2478                if inlined {
2479                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2480                    inner_offset = next_offset;
2481                } else {
2482                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2483                    inner_depth.increment()?;
2484                }
2485                let val_ref = self.ip_tx.get_or_insert_with(|| fidl::new_empty!(IpCounters, D));
2486                fidl::decode!(IpCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
2487                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2488                {
2489                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2490                }
2491                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2492                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2493                }
2494            }
2495
2496            next_offset += envelope_size;
2497            _next_ordinal_to_read += 1;
2498            if next_offset >= end_offset {
2499                return Ok(());
2500            }
2501
2502            // Decode unknown envelopes for gaps in ordinals.
2503            while _next_ordinal_to_read < 7 {
2504                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2505                _next_ordinal_to_read += 1;
2506                next_offset += envelope_size;
2507            }
2508
2509            let next_out_of_line = decoder.next_out_of_line();
2510            let handles_before = decoder.remaining_handles();
2511            if let Some((inlined, num_bytes, num_handles)) =
2512                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2513            {
2514                let member_inline_size =
2515                    <IpCounters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2516                if inlined != (member_inline_size <= 4) {
2517                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2518                }
2519                let inner_offset;
2520                let mut inner_depth = depth.clone();
2521                if inlined {
2522                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2523                    inner_offset = next_offset;
2524                } else {
2525                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2526                    inner_depth.increment()?;
2527                }
2528                let val_ref = self.ip_rx.get_or_insert_with(|| fidl::new_empty!(IpCounters, D));
2529                fidl::decode!(IpCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
2530                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2531                {
2532                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2533                }
2534                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2535                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2536                }
2537            }
2538
2539            next_offset += envelope_size;
2540            _next_ordinal_to_read += 1;
2541            if next_offset >= end_offset {
2542                return Ok(());
2543            }
2544
2545            // Decode unknown envelopes for gaps in ordinals.
2546            while _next_ordinal_to_read < 8 {
2547                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2548                _next_ordinal_to_read += 1;
2549                next_offset += envelope_size;
2550            }
2551
2552            let next_out_of_line = decoder.next_out_of_line();
2553            let handles_before = decoder.remaining_handles();
2554            if let Some((inlined, num_bytes, num_handles)) =
2555                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2556            {
2557                let member_inline_size =
2558                    <BorderAgentCounters as fidl::encoding::TypeMarker>::inline_size(
2559                        decoder.context,
2560                    );
2561                if inlined != (member_inline_size <= 4) {
2562                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2563                }
2564                let inner_offset;
2565                let mut inner_depth = depth.clone();
2566                if inlined {
2567                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2568                    inner_offset = next_offset;
2569                } else {
2570                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2571                    inner_depth.increment()?;
2572                }
2573                let val_ref = self
2574                    .border_agent
2575                    .get_or_insert_with(|| fidl::new_empty!(BorderAgentCounters, D));
2576                fidl::decode!(BorderAgentCounters, D, val_ref, decoder, inner_offset, inner_depth)?;
2577                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2578                {
2579                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2580                }
2581                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2582                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2583                }
2584            }
2585
2586            next_offset += envelope_size;
2587
2588            // Decode the remaining unknown envelopes.
2589            while next_offset < end_offset {
2590                _next_ordinal_to_read += 1;
2591                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2592                next_offset += envelope_size;
2593            }
2594
2595            Ok(())
2596        }
2597    }
2598
2599    impl BorderAgentCounters {
2600        #[inline(always)]
2601        fn max_ordinal_present(&self) -> u64 {
2602            if let Some(_) = self.mgmt_pending_gets {
2603                return 16;
2604            }
2605            if let Some(_) = self.mgmt_active_gets {
2606                return 15;
2607            }
2608            if let Some(_) = self.pskc_commissioner_petitions {
2609                return 14;
2610            }
2611            if let Some(_) = self.pskc_secure_session_failures {
2612                return 13;
2613            }
2614            if let Some(_) = self.pskc_secure_session_successes {
2615                return 12;
2616            }
2617            if let Some(_) = self.epskc_commissioner_petitions {
2618                return 11;
2619            }
2620            if let Some(_) = self.epskc_secure_session_failures {
2621                return 10;
2622            }
2623            if let Some(_) = self.epskc_secure_session_successes {
2624                return 9;
2625            }
2626            if let Some(_) = self.epskc_start_secure_session_errors {
2627                return 8;
2628            }
2629            if let Some(_) = self.epskc_invalid_args_errors {
2630                return 7;
2631            }
2632            if let Some(_) = self.epskc_invalid_ba_state_errors {
2633                return 6;
2634            }
2635            if let Some(_) = self.epskc_deactivation_disconnects {
2636                return 5;
2637            }
2638            if let Some(_) = self.epskc_deactivation_max_attempts {
2639                return 4;
2640            }
2641            if let Some(_) = self.epskc_deactivation_timeouts {
2642                return 3;
2643            }
2644            if let Some(_) = self.epskc_deactivation_clears {
2645                return 2;
2646            }
2647            if let Some(_) = self.epskc_activations {
2648                return 1;
2649            }
2650            0
2651        }
2652    }
2653
2654    impl fidl::encoding::ValueTypeMarker for BorderAgentCounters {
2655        type Borrowed<'a> = &'a Self;
2656        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2657            value
2658        }
2659    }
2660
2661    unsafe impl fidl::encoding::TypeMarker for BorderAgentCounters {
2662        type Owned = Self;
2663
2664        #[inline(always)]
2665        fn inline_align(_context: fidl::encoding::Context) -> usize {
2666            8
2667        }
2668
2669        #[inline(always)]
2670        fn inline_size(_context: fidl::encoding::Context) -> usize {
2671            16
2672        }
2673    }
2674
2675    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BorderAgentCounters, D>
2676        for &BorderAgentCounters
2677    {
2678        unsafe fn encode(
2679            self,
2680            encoder: &mut fidl::encoding::Encoder<'_, D>,
2681            offset: usize,
2682            mut depth: fidl::encoding::Depth,
2683        ) -> fidl::Result<()> {
2684            encoder.debug_check_bounds::<BorderAgentCounters>(offset);
2685            // Vector header
2686            let max_ordinal: u64 = self.max_ordinal_present();
2687            encoder.write_num(max_ordinal, offset);
2688            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2689            // Calling encoder.out_of_line_offset(0) is not allowed.
2690            if max_ordinal == 0 {
2691                return Ok(());
2692            }
2693            depth.increment()?;
2694            let envelope_size = 8;
2695            let bytes_len = max_ordinal as usize * envelope_size;
2696            #[allow(unused_variables)]
2697            let offset = encoder.out_of_line_offset(bytes_len);
2698            let mut _prev_end_offset: usize = 0;
2699            if 1 > max_ordinal {
2700                return Ok(());
2701            }
2702
2703            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2704            // are envelope_size bytes.
2705            let cur_offset: usize = (1 - 1) * envelope_size;
2706
2707            // Zero reserved fields.
2708            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2709
2710            // Safety:
2711            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2712            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2713            //   envelope_size bytes, there is always sufficient room.
2714            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2715                self.epskc_activations
2716                    .as_ref()
2717                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2718                encoder,
2719                offset + cur_offset,
2720                depth,
2721            )?;
2722
2723            _prev_end_offset = cur_offset + envelope_size;
2724            if 2 > max_ordinal {
2725                return Ok(());
2726            }
2727
2728            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2729            // are envelope_size bytes.
2730            let cur_offset: usize = (2 - 1) * envelope_size;
2731
2732            // Zero reserved fields.
2733            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2734
2735            // Safety:
2736            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2737            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2738            //   envelope_size bytes, there is always sufficient room.
2739            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2740                self.epskc_deactivation_clears
2741                    .as_ref()
2742                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2743                encoder,
2744                offset + cur_offset,
2745                depth,
2746            )?;
2747
2748            _prev_end_offset = cur_offset + envelope_size;
2749            if 3 > max_ordinal {
2750                return Ok(());
2751            }
2752
2753            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2754            // are envelope_size bytes.
2755            let cur_offset: usize = (3 - 1) * envelope_size;
2756
2757            // Zero reserved fields.
2758            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2759
2760            // Safety:
2761            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2762            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2763            //   envelope_size bytes, there is always sufficient room.
2764            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2765                self.epskc_deactivation_timeouts
2766                    .as_ref()
2767                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2768                encoder,
2769                offset + cur_offset,
2770                depth,
2771            )?;
2772
2773            _prev_end_offset = cur_offset + envelope_size;
2774            if 4 > max_ordinal {
2775                return Ok(());
2776            }
2777
2778            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2779            // are envelope_size bytes.
2780            let cur_offset: usize = (4 - 1) * envelope_size;
2781
2782            // Zero reserved fields.
2783            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2784
2785            // Safety:
2786            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2787            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2788            //   envelope_size bytes, there is always sufficient room.
2789            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2790                self.epskc_deactivation_max_attempts
2791                    .as_ref()
2792                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2793                encoder,
2794                offset + cur_offset,
2795                depth,
2796            )?;
2797
2798            _prev_end_offset = cur_offset + envelope_size;
2799            if 5 > max_ordinal {
2800                return Ok(());
2801            }
2802
2803            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2804            // are envelope_size bytes.
2805            let cur_offset: usize = (5 - 1) * envelope_size;
2806
2807            // Zero reserved fields.
2808            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2809
2810            // Safety:
2811            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2812            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2813            //   envelope_size bytes, there is always sufficient room.
2814            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2815                self.epskc_deactivation_disconnects
2816                    .as_ref()
2817                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2818                encoder,
2819                offset + cur_offset,
2820                depth,
2821            )?;
2822
2823            _prev_end_offset = cur_offset + envelope_size;
2824            if 6 > max_ordinal {
2825                return Ok(());
2826            }
2827
2828            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2829            // are envelope_size bytes.
2830            let cur_offset: usize = (6 - 1) * envelope_size;
2831
2832            // Zero reserved fields.
2833            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2834
2835            // Safety:
2836            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2837            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2838            //   envelope_size bytes, there is always sufficient room.
2839            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2840                self.epskc_invalid_ba_state_errors
2841                    .as_ref()
2842                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2843                encoder,
2844                offset + cur_offset,
2845                depth,
2846            )?;
2847
2848            _prev_end_offset = cur_offset + envelope_size;
2849            if 7 > max_ordinal {
2850                return Ok(());
2851            }
2852
2853            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2854            // are envelope_size bytes.
2855            let cur_offset: usize = (7 - 1) * envelope_size;
2856
2857            // Zero reserved fields.
2858            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2859
2860            // Safety:
2861            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2862            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2863            //   envelope_size bytes, there is always sufficient room.
2864            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2865                self.epskc_invalid_args_errors
2866                    .as_ref()
2867                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2868                encoder,
2869                offset + cur_offset,
2870                depth,
2871            )?;
2872
2873            _prev_end_offset = cur_offset + envelope_size;
2874            if 8 > max_ordinal {
2875                return Ok(());
2876            }
2877
2878            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2879            // are envelope_size bytes.
2880            let cur_offset: usize = (8 - 1) * envelope_size;
2881
2882            // Zero reserved fields.
2883            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2884
2885            // Safety:
2886            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2887            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2888            //   envelope_size bytes, there is always sufficient room.
2889            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2890                self.epskc_start_secure_session_errors
2891                    .as_ref()
2892                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2893                encoder,
2894                offset + cur_offset,
2895                depth,
2896            )?;
2897
2898            _prev_end_offset = cur_offset + envelope_size;
2899            if 9 > max_ordinal {
2900                return Ok(());
2901            }
2902
2903            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2904            // are envelope_size bytes.
2905            let cur_offset: usize = (9 - 1) * envelope_size;
2906
2907            // Zero reserved fields.
2908            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2909
2910            // Safety:
2911            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2912            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2913            //   envelope_size bytes, there is always sufficient room.
2914            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2915                self.epskc_secure_session_successes
2916                    .as_ref()
2917                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2918                encoder,
2919                offset + cur_offset,
2920                depth,
2921            )?;
2922
2923            _prev_end_offset = cur_offset + envelope_size;
2924            if 10 > max_ordinal {
2925                return Ok(());
2926            }
2927
2928            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2929            // are envelope_size bytes.
2930            let cur_offset: usize = (10 - 1) * envelope_size;
2931
2932            // Zero reserved fields.
2933            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2934
2935            // Safety:
2936            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2937            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2938            //   envelope_size bytes, there is always sufficient room.
2939            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2940                self.epskc_secure_session_failures
2941                    .as_ref()
2942                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2943                encoder,
2944                offset + cur_offset,
2945                depth,
2946            )?;
2947
2948            _prev_end_offset = cur_offset + envelope_size;
2949            if 11 > max_ordinal {
2950                return Ok(());
2951            }
2952
2953            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2954            // are envelope_size bytes.
2955            let cur_offset: usize = (11 - 1) * envelope_size;
2956
2957            // Zero reserved fields.
2958            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2959
2960            // Safety:
2961            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2962            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2963            //   envelope_size bytes, there is always sufficient room.
2964            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2965                self.epskc_commissioner_petitions
2966                    .as_ref()
2967                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2968                encoder,
2969                offset + cur_offset,
2970                depth,
2971            )?;
2972
2973            _prev_end_offset = cur_offset + envelope_size;
2974            if 12 > max_ordinal {
2975                return Ok(());
2976            }
2977
2978            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2979            // are envelope_size bytes.
2980            let cur_offset: usize = (12 - 1) * envelope_size;
2981
2982            // Zero reserved fields.
2983            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2984
2985            // Safety:
2986            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2987            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2988            //   envelope_size bytes, there is always sufficient room.
2989            fidl::encoding::encode_in_envelope_optional::<u32, D>(
2990                self.pskc_secure_session_successes
2991                    .as_ref()
2992                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2993                encoder,
2994                offset + cur_offset,
2995                depth,
2996            )?;
2997
2998            _prev_end_offset = cur_offset + envelope_size;
2999            if 13 > max_ordinal {
3000                return Ok(());
3001            }
3002
3003            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3004            // are envelope_size bytes.
3005            let cur_offset: usize = (13 - 1) * envelope_size;
3006
3007            // Zero reserved fields.
3008            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3009
3010            // Safety:
3011            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3012            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3013            //   envelope_size bytes, there is always sufficient room.
3014            fidl::encoding::encode_in_envelope_optional::<u32, D>(
3015                self.pskc_secure_session_failures
3016                    .as_ref()
3017                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3018                encoder,
3019                offset + cur_offset,
3020                depth,
3021            )?;
3022
3023            _prev_end_offset = cur_offset + envelope_size;
3024            if 14 > max_ordinal {
3025                return Ok(());
3026            }
3027
3028            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3029            // are envelope_size bytes.
3030            let cur_offset: usize = (14 - 1) * envelope_size;
3031
3032            // Zero reserved fields.
3033            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3034
3035            // Safety:
3036            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3037            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3038            //   envelope_size bytes, there is always sufficient room.
3039            fidl::encoding::encode_in_envelope_optional::<u32, D>(
3040                self.pskc_commissioner_petitions
3041                    .as_ref()
3042                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3043                encoder,
3044                offset + cur_offset,
3045                depth,
3046            )?;
3047
3048            _prev_end_offset = cur_offset + envelope_size;
3049            if 15 > max_ordinal {
3050                return Ok(());
3051            }
3052
3053            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3054            // are envelope_size bytes.
3055            let cur_offset: usize = (15 - 1) * envelope_size;
3056
3057            // Zero reserved fields.
3058            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3059
3060            // Safety:
3061            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3062            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3063            //   envelope_size bytes, there is always sufficient room.
3064            fidl::encoding::encode_in_envelope_optional::<u32, D>(
3065                self.mgmt_active_gets
3066                    .as_ref()
3067                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3068                encoder,
3069                offset + cur_offset,
3070                depth,
3071            )?;
3072
3073            _prev_end_offset = cur_offset + envelope_size;
3074            if 16 > max_ordinal {
3075                return Ok(());
3076            }
3077
3078            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3079            // are envelope_size bytes.
3080            let cur_offset: usize = (16 - 1) * envelope_size;
3081
3082            // Zero reserved fields.
3083            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3084
3085            // Safety:
3086            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3087            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3088            //   envelope_size bytes, there is always sufficient room.
3089            fidl::encoding::encode_in_envelope_optional::<u32, D>(
3090                self.mgmt_pending_gets
3091                    .as_ref()
3092                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3093                encoder,
3094                offset + cur_offset,
3095                depth,
3096            )?;
3097
3098            _prev_end_offset = cur_offset + envelope_size;
3099
3100            Ok(())
3101        }
3102    }
3103
3104    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BorderAgentCounters {
3105        #[inline(always)]
3106        fn new_empty() -> Self {
3107            Self::default()
3108        }
3109
3110        unsafe fn decode(
3111            &mut self,
3112            decoder: &mut fidl::encoding::Decoder<'_, D>,
3113            offset: usize,
3114            mut depth: fidl::encoding::Depth,
3115        ) -> fidl::Result<()> {
3116            decoder.debug_check_bounds::<Self>(offset);
3117            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3118                None => return Err(fidl::Error::NotNullable),
3119                Some(len) => len,
3120            };
3121            // Calling decoder.out_of_line_offset(0) is not allowed.
3122            if len == 0 {
3123                return Ok(());
3124            };
3125            depth.increment()?;
3126            let envelope_size = 8;
3127            let bytes_len = len * envelope_size;
3128            let offset = decoder.out_of_line_offset(bytes_len)?;
3129            // Decode the envelope for each type.
3130            let mut _next_ordinal_to_read = 0;
3131            let mut next_offset = offset;
3132            let end_offset = offset + bytes_len;
3133            _next_ordinal_to_read += 1;
3134            if next_offset >= end_offset {
3135                return Ok(());
3136            }
3137
3138            // Decode unknown envelopes for gaps in ordinals.
3139            while _next_ordinal_to_read < 1 {
3140                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3141                _next_ordinal_to_read += 1;
3142                next_offset += envelope_size;
3143            }
3144
3145            let next_out_of_line = decoder.next_out_of_line();
3146            let handles_before = decoder.remaining_handles();
3147            if let Some((inlined, num_bytes, num_handles)) =
3148                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3149            {
3150                let member_inline_size =
3151                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3152                if inlined != (member_inline_size <= 4) {
3153                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3154                }
3155                let inner_offset;
3156                let mut inner_depth = depth.clone();
3157                if inlined {
3158                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3159                    inner_offset = next_offset;
3160                } else {
3161                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3162                    inner_depth.increment()?;
3163                }
3164                let val_ref =
3165                    self.epskc_activations.get_or_insert_with(|| fidl::new_empty!(u32, D));
3166                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3167                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3168                {
3169                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3170                }
3171                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3172                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3173                }
3174            }
3175
3176            next_offset += envelope_size;
3177            _next_ordinal_to_read += 1;
3178            if next_offset >= end_offset {
3179                return Ok(());
3180            }
3181
3182            // Decode unknown envelopes for gaps in ordinals.
3183            while _next_ordinal_to_read < 2 {
3184                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3185                _next_ordinal_to_read += 1;
3186                next_offset += envelope_size;
3187            }
3188
3189            let next_out_of_line = decoder.next_out_of_line();
3190            let handles_before = decoder.remaining_handles();
3191            if let Some((inlined, num_bytes, num_handles)) =
3192                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3193            {
3194                let member_inline_size =
3195                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3196                if inlined != (member_inline_size <= 4) {
3197                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3198                }
3199                let inner_offset;
3200                let mut inner_depth = depth.clone();
3201                if inlined {
3202                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3203                    inner_offset = next_offset;
3204                } else {
3205                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3206                    inner_depth.increment()?;
3207                }
3208                let val_ref =
3209                    self.epskc_deactivation_clears.get_or_insert_with(|| fidl::new_empty!(u32, D));
3210                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3211                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3212                {
3213                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3214                }
3215                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3216                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3217                }
3218            }
3219
3220            next_offset += envelope_size;
3221            _next_ordinal_to_read += 1;
3222            if next_offset >= end_offset {
3223                return Ok(());
3224            }
3225
3226            // Decode unknown envelopes for gaps in ordinals.
3227            while _next_ordinal_to_read < 3 {
3228                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3229                _next_ordinal_to_read += 1;
3230                next_offset += envelope_size;
3231            }
3232
3233            let next_out_of_line = decoder.next_out_of_line();
3234            let handles_before = decoder.remaining_handles();
3235            if let Some((inlined, num_bytes, num_handles)) =
3236                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3237            {
3238                let member_inline_size =
3239                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3240                if inlined != (member_inline_size <= 4) {
3241                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3242                }
3243                let inner_offset;
3244                let mut inner_depth = depth.clone();
3245                if inlined {
3246                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3247                    inner_offset = next_offset;
3248                } else {
3249                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3250                    inner_depth.increment()?;
3251                }
3252                let val_ref = self
3253                    .epskc_deactivation_timeouts
3254                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3255                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3256                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3257                {
3258                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3259                }
3260                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3261                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3262                }
3263            }
3264
3265            next_offset += envelope_size;
3266            _next_ordinal_to_read += 1;
3267            if next_offset >= end_offset {
3268                return Ok(());
3269            }
3270
3271            // Decode unknown envelopes for gaps in ordinals.
3272            while _next_ordinal_to_read < 4 {
3273                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3274                _next_ordinal_to_read += 1;
3275                next_offset += envelope_size;
3276            }
3277
3278            let next_out_of_line = decoder.next_out_of_line();
3279            let handles_before = decoder.remaining_handles();
3280            if let Some((inlined, num_bytes, num_handles)) =
3281                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3282            {
3283                let member_inline_size =
3284                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3285                if inlined != (member_inline_size <= 4) {
3286                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3287                }
3288                let inner_offset;
3289                let mut inner_depth = depth.clone();
3290                if inlined {
3291                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3292                    inner_offset = next_offset;
3293                } else {
3294                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3295                    inner_depth.increment()?;
3296                }
3297                let val_ref = self
3298                    .epskc_deactivation_max_attempts
3299                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3300                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3301                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3302                {
3303                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3304                }
3305                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3306                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3307                }
3308            }
3309
3310            next_offset += envelope_size;
3311            _next_ordinal_to_read += 1;
3312            if next_offset >= end_offset {
3313                return Ok(());
3314            }
3315
3316            // Decode unknown envelopes for gaps in ordinals.
3317            while _next_ordinal_to_read < 5 {
3318                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3319                _next_ordinal_to_read += 1;
3320                next_offset += envelope_size;
3321            }
3322
3323            let next_out_of_line = decoder.next_out_of_line();
3324            let handles_before = decoder.remaining_handles();
3325            if let Some((inlined, num_bytes, num_handles)) =
3326                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3327            {
3328                let member_inline_size =
3329                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3330                if inlined != (member_inline_size <= 4) {
3331                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3332                }
3333                let inner_offset;
3334                let mut inner_depth = depth.clone();
3335                if inlined {
3336                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3337                    inner_offset = next_offset;
3338                } else {
3339                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3340                    inner_depth.increment()?;
3341                }
3342                let val_ref = self
3343                    .epskc_deactivation_disconnects
3344                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3345                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3346                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3347                {
3348                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3349                }
3350                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3351                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3352                }
3353            }
3354
3355            next_offset += envelope_size;
3356            _next_ordinal_to_read += 1;
3357            if next_offset >= end_offset {
3358                return Ok(());
3359            }
3360
3361            // Decode unknown envelopes for gaps in ordinals.
3362            while _next_ordinal_to_read < 6 {
3363                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3364                _next_ordinal_to_read += 1;
3365                next_offset += envelope_size;
3366            }
3367
3368            let next_out_of_line = decoder.next_out_of_line();
3369            let handles_before = decoder.remaining_handles();
3370            if let Some((inlined, num_bytes, num_handles)) =
3371                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3372            {
3373                let member_inline_size =
3374                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3375                if inlined != (member_inline_size <= 4) {
3376                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3377                }
3378                let inner_offset;
3379                let mut inner_depth = depth.clone();
3380                if inlined {
3381                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3382                    inner_offset = next_offset;
3383                } else {
3384                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3385                    inner_depth.increment()?;
3386                }
3387                let val_ref = self
3388                    .epskc_invalid_ba_state_errors
3389                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3390                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3391                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3392                {
3393                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3394                }
3395                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3396                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3397                }
3398            }
3399
3400            next_offset += envelope_size;
3401            _next_ordinal_to_read += 1;
3402            if next_offset >= end_offset {
3403                return Ok(());
3404            }
3405
3406            // Decode unknown envelopes for gaps in ordinals.
3407            while _next_ordinal_to_read < 7 {
3408                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3409                _next_ordinal_to_read += 1;
3410                next_offset += envelope_size;
3411            }
3412
3413            let next_out_of_line = decoder.next_out_of_line();
3414            let handles_before = decoder.remaining_handles();
3415            if let Some((inlined, num_bytes, num_handles)) =
3416                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3417            {
3418                let member_inline_size =
3419                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3420                if inlined != (member_inline_size <= 4) {
3421                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3422                }
3423                let inner_offset;
3424                let mut inner_depth = depth.clone();
3425                if inlined {
3426                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3427                    inner_offset = next_offset;
3428                } else {
3429                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3430                    inner_depth.increment()?;
3431                }
3432                let val_ref =
3433                    self.epskc_invalid_args_errors.get_or_insert_with(|| fidl::new_empty!(u32, D));
3434                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3435                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3436                {
3437                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3438                }
3439                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3440                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3441                }
3442            }
3443
3444            next_offset += envelope_size;
3445            _next_ordinal_to_read += 1;
3446            if next_offset >= end_offset {
3447                return Ok(());
3448            }
3449
3450            // Decode unknown envelopes for gaps in ordinals.
3451            while _next_ordinal_to_read < 8 {
3452                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3453                _next_ordinal_to_read += 1;
3454                next_offset += envelope_size;
3455            }
3456
3457            let next_out_of_line = decoder.next_out_of_line();
3458            let handles_before = decoder.remaining_handles();
3459            if let Some((inlined, num_bytes, num_handles)) =
3460                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3461            {
3462                let member_inline_size =
3463                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3464                if inlined != (member_inline_size <= 4) {
3465                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3466                }
3467                let inner_offset;
3468                let mut inner_depth = depth.clone();
3469                if inlined {
3470                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3471                    inner_offset = next_offset;
3472                } else {
3473                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3474                    inner_depth.increment()?;
3475                }
3476                let val_ref = self
3477                    .epskc_start_secure_session_errors
3478                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3479                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3480                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3481                {
3482                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3483                }
3484                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3485                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3486                }
3487            }
3488
3489            next_offset += envelope_size;
3490            _next_ordinal_to_read += 1;
3491            if next_offset >= end_offset {
3492                return Ok(());
3493            }
3494
3495            // Decode unknown envelopes for gaps in ordinals.
3496            while _next_ordinal_to_read < 9 {
3497                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3498                _next_ordinal_to_read += 1;
3499                next_offset += envelope_size;
3500            }
3501
3502            let next_out_of_line = decoder.next_out_of_line();
3503            let handles_before = decoder.remaining_handles();
3504            if let Some((inlined, num_bytes, num_handles)) =
3505                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3506            {
3507                let member_inline_size =
3508                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3509                if inlined != (member_inline_size <= 4) {
3510                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3511                }
3512                let inner_offset;
3513                let mut inner_depth = depth.clone();
3514                if inlined {
3515                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3516                    inner_offset = next_offset;
3517                } else {
3518                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3519                    inner_depth.increment()?;
3520                }
3521                let val_ref = self
3522                    .epskc_secure_session_successes
3523                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3524                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3525                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3526                {
3527                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3528                }
3529                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3530                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3531                }
3532            }
3533
3534            next_offset += envelope_size;
3535            _next_ordinal_to_read += 1;
3536            if next_offset >= end_offset {
3537                return Ok(());
3538            }
3539
3540            // Decode unknown envelopes for gaps in ordinals.
3541            while _next_ordinal_to_read < 10 {
3542                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3543                _next_ordinal_to_read += 1;
3544                next_offset += envelope_size;
3545            }
3546
3547            let next_out_of_line = decoder.next_out_of_line();
3548            let handles_before = decoder.remaining_handles();
3549            if let Some((inlined, num_bytes, num_handles)) =
3550                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3551            {
3552                let member_inline_size =
3553                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3554                if inlined != (member_inline_size <= 4) {
3555                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3556                }
3557                let inner_offset;
3558                let mut inner_depth = depth.clone();
3559                if inlined {
3560                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3561                    inner_offset = next_offset;
3562                } else {
3563                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3564                    inner_depth.increment()?;
3565                }
3566                let val_ref = self
3567                    .epskc_secure_session_failures
3568                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3569                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3570                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3571                {
3572                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3573                }
3574                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3575                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3576                }
3577            }
3578
3579            next_offset += envelope_size;
3580            _next_ordinal_to_read += 1;
3581            if next_offset >= end_offset {
3582                return Ok(());
3583            }
3584
3585            // Decode unknown envelopes for gaps in ordinals.
3586            while _next_ordinal_to_read < 11 {
3587                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3588                _next_ordinal_to_read += 1;
3589                next_offset += envelope_size;
3590            }
3591
3592            let next_out_of_line = decoder.next_out_of_line();
3593            let handles_before = decoder.remaining_handles();
3594            if let Some((inlined, num_bytes, num_handles)) =
3595                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3596            {
3597                let member_inline_size =
3598                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3599                if inlined != (member_inline_size <= 4) {
3600                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3601                }
3602                let inner_offset;
3603                let mut inner_depth = depth.clone();
3604                if inlined {
3605                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3606                    inner_offset = next_offset;
3607                } else {
3608                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3609                    inner_depth.increment()?;
3610                }
3611                let val_ref = self
3612                    .epskc_commissioner_petitions
3613                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3614                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3615                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3616                {
3617                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3618                }
3619                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3620                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3621                }
3622            }
3623
3624            next_offset += envelope_size;
3625            _next_ordinal_to_read += 1;
3626            if next_offset >= end_offset {
3627                return Ok(());
3628            }
3629
3630            // Decode unknown envelopes for gaps in ordinals.
3631            while _next_ordinal_to_read < 12 {
3632                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3633                _next_ordinal_to_read += 1;
3634                next_offset += envelope_size;
3635            }
3636
3637            let next_out_of_line = decoder.next_out_of_line();
3638            let handles_before = decoder.remaining_handles();
3639            if let Some((inlined, num_bytes, num_handles)) =
3640                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3641            {
3642                let member_inline_size =
3643                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3644                if inlined != (member_inline_size <= 4) {
3645                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3646                }
3647                let inner_offset;
3648                let mut inner_depth = depth.clone();
3649                if inlined {
3650                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3651                    inner_offset = next_offset;
3652                } else {
3653                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3654                    inner_depth.increment()?;
3655                }
3656                let val_ref = self
3657                    .pskc_secure_session_successes
3658                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3659                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3660                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3661                {
3662                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3663                }
3664                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3665                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3666                }
3667            }
3668
3669            next_offset += envelope_size;
3670            _next_ordinal_to_read += 1;
3671            if next_offset >= end_offset {
3672                return Ok(());
3673            }
3674
3675            // Decode unknown envelopes for gaps in ordinals.
3676            while _next_ordinal_to_read < 13 {
3677                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3678                _next_ordinal_to_read += 1;
3679                next_offset += envelope_size;
3680            }
3681
3682            let next_out_of_line = decoder.next_out_of_line();
3683            let handles_before = decoder.remaining_handles();
3684            if let Some((inlined, num_bytes, num_handles)) =
3685                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3686            {
3687                let member_inline_size =
3688                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3689                if inlined != (member_inline_size <= 4) {
3690                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3691                }
3692                let inner_offset;
3693                let mut inner_depth = depth.clone();
3694                if inlined {
3695                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3696                    inner_offset = next_offset;
3697                } else {
3698                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3699                    inner_depth.increment()?;
3700                }
3701                let val_ref = self
3702                    .pskc_secure_session_failures
3703                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3704                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3705                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3706                {
3707                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3708                }
3709                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3710                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3711                }
3712            }
3713
3714            next_offset += envelope_size;
3715            _next_ordinal_to_read += 1;
3716            if next_offset >= end_offset {
3717                return Ok(());
3718            }
3719
3720            // Decode unknown envelopes for gaps in ordinals.
3721            while _next_ordinal_to_read < 14 {
3722                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3723                _next_ordinal_to_read += 1;
3724                next_offset += envelope_size;
3725            }
3726
3727            let next_out_of_line = decoder.next_out_of_line();
3728            let handles_before = decoder.remaining_handles();
3729            if let Some((inlined, num_bytes, num_handles)) =
3730                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3731            {
3732                let member_inline_size =
3733                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3734                if inlined != (member_inline_size <= 4) {
3735                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3736                }
3737                let inner_offset;
3738                let mut inner_depth = depth.clone();
3739                if inlined {
3740                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3741                    inner_offset = next_offset;
3742                } else {
3743                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3744                    inner_depth.increment()?;
3745                }
3746                let val_ref = self
3747                    .pskc_commissioner_petitions
3748                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
3749                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3750                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3751                {
3752                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3753                }
3754                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3755                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3756                }
3757            }
3758
3759            next_offset += envelope_size;
3760            _next_ordinal_to_read += 1;
3761            if next_offset >= end_offset {
3762                return Ok(());
3763            }
3764
3765            // Decode unknown envelopes for gaps in ordinals.
3766            while _next_ordinal_to_read < 15 {
3767                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3768                _next_ordinal_to_read += 1;
3769                next_offset += envelope_size;
3770            }
3771
3772            let next_out_of_line = decoder.next_out_of_line();
3773            let handles_before = decoder.remaining_handles();
3774            if let Some((inlined, num_bytes, num_handles)) =
3775                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3776            {
3777                let member_inline_size =
3778                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3779                if inlined != (member_inline_size <= 4) {
3780                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3781                }
3782                let inner_offset;
3783                let mut inner_depth = depth.clone();
3784                if inlined {
3785                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3786                    inner_offset = next_offset;
3787                } else {
3788                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3789                    inner_depth.increment()?;
3790                }
3791                let val_ref = self.mgmt_active_gets.get_or_insert_with(|| fidl::new_empty!(u32, D));
3792                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3793                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3794                {
3795                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3796                }
3797                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3798                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3799                }
3800            }
3801
3802            next_offset += envelope_size;
3803            _next_ordinal_to_read += 1;
3804            if next_offset >= end_offset {
3805                return Ok(());
3806            }
3807
3808            // Decode unknown envelopes for gaps in ordinals.
3809            while _next_ordinal_to_read < 16 {
3810                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3811                _next_ordinal_to_read += 1;
3812                next_offset += envelope_size;
3813            }
3814
3815            let next_out_of_line = decoder.next_out_of_line();
3816            let handles_before = decoder.remaining_handles();
3817            if let Some((inlined, num_bytes, num_handles)) =
3818                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3819            {
3820                let member_inline_size =
3821                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3822                if inlined != (member_inline_size <= 4) {
3823                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3824                }
3825                let inner_offset;
3826                let mut inner_depth = depth.clone();
3827                if inlined {
3828                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3829                    inner_offset = next_offset;
3830                } else {
3831                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3832                    inner_depth.increment()?;
3833                }
3834                let val_ref =
3835                    self.mgmt_pending_gets.get_or_insert_with(|| fidl::new_empty!(u32, D));
3836                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3837                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3838                {
3839                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3840                }
3841                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3842                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3843                }
3844            }
3845
3846            next_offset += envelope_size;
3847
3848            // Decode the remaining unknown envelopes.
3849            while next_offset < end_offset {
3850                _next_ordinal_to_read += 1;
3851                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3852                next_offset += envelope_size;
3853            }
3854
3855            Ok(())
3856        }
3857    }
3858
3859    impl CoexCounters {
3860        #[inline(always)]
3861        fn max_ordinal_present(&self) -> u64 {
3862            if let Some(_) = self.grant_none {
3863                return 9;
3864            }
3865            if let Some(_) = self.avg_delay_request_to_grant_usec {
3866                return 8;
3867            }
3868            if let Some(_) = self.delayed_grant {
3869                return 7;
3870            }
3871            if let Some(_) = self.grant_deactivated_during_request {
3872                return 6;
3873            }
3874            if let Some(_) = self.grant_wait_timeout {
3875                return 5;
3876            }
3877            if let Some(_) = self.grant_wait_activated {
3878                return 4;
3879            }
3880            if let Some(_) = self.grant_wait {
3881                return 3;
3882            }
3883            if let Some(_) = self.grant_immediate {
3884                return 2;
3885            }
3886            if let Some(_) = self.requests {
3887                return 1;
3888            }
3889            0
3890        }
3891    }
3892
3893    impl fidl::encoding::ValueTypeMarker for CoexCounters {
3894        type Borrowed<'a> = &'a Self;
3895        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3896            value
3897        }
3898    }
3899
3900    unsafe impl fidl::encoding::TypeMarker for CoexCounters {
3901        type Owned = Self;
3902
3903        #[inline(always)]
3904        fn inline_align(_context: fidl::encoding::Context) -> usize {
3905            8
3906        }
3907
3908        #[inline(always)]
3909        fn inline_size(_context: fidl::encoding::Context) -> usize {
3910            16
3911        }
3912    }
3913
3914    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CoexCounters, D>
3915        for &CoexCounters
3916    {
3917        unsafe fn encode(
3918            self,
3919            encoder: &mut fidl::encoding::Encoder<'_, D>,
3920            offset: usize,
3921            mut depth: fidl::encoding::Depth,
3922        ) -> fidl::Result<()> {
3923            encoder.debug_check_bounds::<CoexCounters>(offset);
3924            // Vector header
3925            let max_ordinal: u64 = self.max_ordinal_present();
3926            encoder.write_num(max_ordinal, offset);
3927            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3928            // Calling encoder.out_of_line_offset(0) is not allowed.
3929            if max_ordinal == 0 {
3930                return Ok(());
3931            }
3932            depth.increment()?;
3933            let envelope_size = 8;
3934            let bytes_len = max_ordinal as usize * envelope_size;
3935            #[allow(unused_variables)]
3936            let offset = encoder.out_of_line_offset(bytes_len);
3937            let mut _prev_end_offset: usize = 0;
3938            if 1 > max_ordinal {
3939                return Ok(());
3940            }
3941
3942            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3943            // are envelope_size bytes.
3944            let cur_offset: usize = (1 - 1) * envelope_size;
3945
3946            // Zero reserved fields.
3947            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3948
3949            // Safety:
3950            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3951            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3952            //   envelope_size bytes, there is always sufficient room.
3953            fidl::encoding::encode_in_envelope_optional::<u64, D>(
3954                self.requests.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3955                encoder,
3956                offset + cur_offset,
3957                depth,
3958            )?;
3959
3960            _prev_end_offset = cur_offset + envelope_size;
3961            if 2 > max_ordinal {
3962                return Ok(());
3963            }
3964
3965            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3966            // are envelope_size bytes.
3967            let cur_offset: usize = (2 - 1) * envelope_size;
3968
3969            // Zero reserved fields.
3970            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3971
3972            // Safety:
3973            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3974            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3975            //   envelope_size bytes, there is always sufficient room.
3976            fidl::encoding::encode_in_envelope_optional::<u64, D>(
3977                self.grant_immediate.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3978                encoder,
3979                offset + cur_offset,
3980                depth,
3981            )?;
3982
3983            _prev_end_offset = cur_offset + envelope_size;
3984            if 3 > max_ordinal {
3985                return Ok(());
3986            }
3987
3988            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3989            // are envelope_size bytes.
3990            let cur_offset: usize = (3 - 1) * envelope_size;
3991
3992            // Zero reserved fields.
3993            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3994
3995            // Safety:
3996            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3997            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3998            //   envelope_size bytes, there is always sufficient room.
3999            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4000                self.grant_wait.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4001                encoder,
4002                offset + cur_offset,
4003                depth,
4004            )?;
4005
4006            _prev_end_offset = cur_offset + envelope_size;
4007            if 4 > max_ordinal {
4008                return Ok(());
4009            }
4010
4011            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4012            // are envelope_size bytes.
4013            let cur_offset: usize = (4 - 1) * envelope_size;
4014
4015            // Zero reserved fields.
4016            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4017
4018            // Safety:
4019            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4020            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4021            //   envelope_size bytes, there is always sufficient room.
4022            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4023                self.grant_wait_activated
4024                    .as_ref()
4025                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4026                encoder,
4027                offset + cur_offset,
4028                depth,
4029            )?;
4030
4031            _prev_end_offset = cur_offset + envelope_size;
4032            if 5 > max_ordinal {
4033                return Ok(());
4034            }
4035
4036            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4037            // are envelope_size bytes.
4038            let cur_offset: usize = (5 - 1) * envelope_size;
4039
4040            // Zero reserved fields.
4041            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4042
4043            // Safety:
4044            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4045            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4046            //   envelope_size bytes, there is always sufficient room.
4047            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4048                self.grant_wait_timeout
4049                    .as_ref()
4050                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4051                encoder,
4052                offset + cur_offset,
4053                depth,
4054            )?;
4055
4056            _prev_end_offset = cur_offset + envelope_size;
4057            if 6 > max_ordinal {
4058                return Ok(());
4059            }
4060
4061            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4062            // are envelope_size bytes.
4063            let cur_offset: usize = (6 - 1) * envelope_size;
4064
4065            // Zero reserved fields.
4066            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4067
4068            // Safety:
4069            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4070            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4071            //   envelope_size bytes, there is always sufficient room.
4072            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4073                self.grant_deactivated_during_request
4074                    .as_ref()
4075                    .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4076                encoder,
4077                offset + cur_offset,
4078                depth,
4079            )?;
4080
4081            _prev_end_offset = cur_offset + envelope_size;
4082            if 7 > max_ordinal {
4083                return Ok(());
4084            }
4085
4086            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4087            // are envelope_size bytes.
4088            let cur_offset: usize = (7 - 1) * envelope_size;
4089
4090            // Zero reserved fields.
4091            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4092
4093            // Safety:
4094            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4095            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4096            //   envelope_size bytes, there is always sufficient room.
4097            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4098                self.delayed_grant.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4099                encoder,
4100                offset + cur_offset,
4101                depth,
4102            )?;
4103
4104            _prev_end_offset = cur_offset + envelope_size;
4105            if 8 > max_ordinal {
4106                return Ok(());
4107            }
4108
4109            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4110            // are envelope_size bytes.
4111            let cur_offset: usize = (8 - 1) * envelope_size;
4112
4113            // Zero reserved fields.
4114            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4115
4116            // Safety:
4117            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4118            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4119            //   envelope_size bytes, there is always sufficient room.
4120            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4121                self.avg_delay_request_to_grant_usec
4122                    .as_ref()
4123                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4124                encoder,
4125                offset + cur_offset,
4126                depth,
4127            )?;
4128
4129            _prev_end_offset = cur_offset + envelope_size;
4130            if 9 > max_ordinal {
4131                return Ok(());
4132            }
4133
4134            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4135            // are envelope_size bytes.
4136            let cur_offset: usize = (9 - 1) * envelope_size;
4137
4138            // Zero reserved fields.
4139            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4140
4141            // Safety:
4142            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4143            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4144            //   envelope_size bytes, there is always sufficient room.
4145            fidl::encoding::encode_in_envelope_optional::<u64, D>(
4146                self.grant_none.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4147                encoder,
4148                offset + cur_offset,
4149                depth,
4150            )?;
4151
4152            _prev_end_offset = cur_offset + envelope_size;
4153
4154            Ok(())
4155        }
4156    }
4157
4158    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CoexCounters {
4159        #[inline(always)]
4160        fn new_empty() -> Self {
4161            Self::default()
4162        }
4163
4164        unsafe fn decode(
4165            &mut self,
4166            decoder: &mut fidl::encoding::Decoder<'_, D>,
4167            offset: usize,
4168            mut depth: fidl::encoding::Depth,
4169        ) -> fidl::Result<()> {
4170            decoder.debug_check_bounds::<Self>(offset);
4171            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4172                None => return Err(fidl::Error::NotNullable),
4173                Some(len) => len,
4174            };
4175            // Calling decoder.out_of_line_offset(0) is not allowed.
4176            if len == 0 {
4177                return Ok(());
4178            };
4179            depth.increment()?;
4180            let envelope_size = 8;
4181            let bytes_len = len * envelope_size;
4182            let offset = decoder.out_of_line_offset(bytes_len)?;
4183            // Decode the envelope for each type.
4184            let mut _next_ordinal_to_read = 0;
4185            let mut next_offset = offset;
4186            let end_offset = offset + bytes_len;
4187            _next_ordinal_to_read += 1;
4188            if next_offset >= end_offset {
4189                return Ok(());
4190            }
4191
4192            // Decode unknown envelopes for gaps in ordinals.
4193            while _next_ordinal_to_read < 1 {
4194                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4195                _next_ordinal_to_read += 1;
4196                next_offset += envelope_size;
4197            }
4198
4199            let next_out_of_line = decoder.next_out_of_line();
4200            let handles_before = decoder.remaining_handles();
4201            if let Some((inlined, num_bytes, num_handles)) =
4202                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4203            {
4204                let member_inline_size =
4205                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4206                if inlined != (member_inline_size <= 4) {
4207                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4208                }
4209                let inner_offset;
4210                let mut inner_depth = depth.clone();
4211                if inlined {
4212                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4213                    inner_offset = next_offset;
4214                } else {
4215                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4216                    inner_depth.increment()?;
4217                }
4218                let val_ref = self.requests.get_or_insert_with(|| fidl::new_empty!(u64, D));
4219                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4220                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4221                {
4222                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4223                }
4224                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4225                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4226                }
4227            }
4228
4229            next_offset += envelope_size;
4230            _next_ordinal_to_read += 1;
4231            if next_offset >= end_offset {
4232                return Ok(());
4233            }
4234
4235            // Decode unknown envelopes for gaps in ordinals.
4236            while _next_ordinal_to_read < 2 {
4237                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4238                _next_ordinal_to_read += 1;
4239                next_offset += envelope_size;
4240            }
4241
4242            let next_out_of_line = decoder.next_out_of_line();
4243            let handles_before = decoder.remaining_handles();
4244            if let Some((inlined, num_bytes, num_handles)) =
4245                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4246            {
4247                let member_inline_size =
4248                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4249                if inlined != (member_inline_size <= 4) {
4250                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4251                }
4252                let inner_offset;
4253                let mut inner_depth = depth.clone();
4254                if inlined {
4255                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4256                    inner_offset = next_offset;
4257                } else {
4258                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4259                    inner_depth.increment()?;
4260                }
4261                let val_ref = self.grant_immediate.get_or_insert_with(|| fidl::new_empty!(u64, D));
4262                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4263                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4264                {
4265                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4266                }
4267                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4268                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4269                }
4270            }
4271
4272            next_offset += envelope_size;
4273            _next_ordinal_to_read += 1;
4274            if next_offset >= end_offset {
4275                return Ok(());
4276            }
4277
4278            // Decode unknown envelopes for gaps in ordinals.
4279            while _next_ordinal_to_read < 3 {
4280                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4281                _next_ordinal_to_read += 1;
4282                next_offset += envelope_size;
4283            }
4284
4285            let next_out_of_line = decoder.next_out_of_line();
4286            let handles_before = decoder.remaining_handles();
4287            if let Some((inlined, num_bytes, num_handles)) =
4288                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4289            {
4290                let member_inline_size =
4291                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4292                if inlined != (member_inline_size <= 4) {
4293                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4294                }
4295                let inner_offset;
4296                let mut inner_depth = depth.clone();
4297                if inlined {
4298                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4299                    inner_offset = next_offset;
4300                } else {
4301                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4302                    inner_depth.increment()?;
4303                }
4304                let val_ref = self.grant_wait.get_or_insert_with(|| fidl::new_empty!(u64, D));
4305                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4306                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4307                {
4308                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4309                }
4310                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4311                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4312                }
4313            }
4314
4315            next_offset += envelope_size;
4316            _next_ordinal_to_read += 1;
4317            if next_offset >= end_offset {
4318                return Ok(());
4319            }
4320
4321            // Decode unknown envelopes for gaps in ordinals.
4322            while _next_ordinal_to_read < 4 {
4323                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4324                _next_ordinal_to_read += 1;
4325                next_offset += envelope_size;
4326            }
4327
4328            let next_out_of_line = decoder.next_out_of_line();
4329            let handles_before = decoder.remaining_handles();
4330            if let Some((inlined, num_bytes, num_handles)) =
4331                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4332            {
4333                let member_inline_size =
4334                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4335                if inlined != (member_inline_size <= 4) {
4336                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4337                }
4338                let inner_offset;
4339                let mut inner_depth = depth.clone();
4340                if inlined {
4341                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4342                    inner_offset = next_offset;
4343                } else {
4344                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4345                    inner_depth.increment()?;
4346                }
4347                let val_ref =
4348                    self.grant_wait_activated.get_or_insert_with(|| fidl::new_empty!(u64, D));
4349                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4350                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4351                {
4352                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4353                }
4354                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4355                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4356                }
4357            }
4358
4359            next_offset += envelope_size;
4360            _next_ordinal_to_read += 1;
4361            if next_offset >= end_offset {
4362                return Ok(());
4363            }
4364
4365            // Decode unknown envelopes for gaps in ordinals.
4366            while _next_ordinal_to_read < 5 {
4367                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4368                _next_ordinal_to_read += 1;
4369                next_offset += envelope_size;
4370            }
4371
4372            let next_out_of_line = decoder.next_out_of_line();
4373            let handles_before = decoder.remaining_handles();
4374            if let Some((inlined, num_bytes, num_handles)) =
4375                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4376            {
4377                let member_inline_size =
4378                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4379                if inlined != (member_inline_size <= 4) {
4380                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4381                }
4382                let inner_offset;
4383                let mut inner_depth = depth.clone();
4384                if inlined {
4385                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4386                    inner_offset = next_offset;
4387                } else {
4388                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4389                    inner_depth.increment()?;
4390                }
4391                let val_ref =
4392                    self.grant_wait_timeout.get_or_insert_with(|| fidl::new_empty!(u64, D));
4393                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4394                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4395                {
4396                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4397                }
4398                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4399                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4400                }
4401            }
4402
4403            next_offset += envelope_size;
4404            _next_ordinal_to_read += 1;
4405            if next_offset >= end_offset {
4406                return Ok(());
4407            }
4408
4409            // Decode unknown envelopes for gaps in ordinals.
4410            while _next_ordinal_to_read < 6 {
4411                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4412                _next_ordinal_to_read += 1;
4413                next_offset += envelope_size;
4414            }
4415
4416            let next_out_of_line = decoder.next_out_of_line();
4417            let handles_before = decoder.remaining_handles();
4418            if let Some((inlined, num_bytes, num_handles)) =
4419                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4420            {
4421                let member_inline_size =
4422                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4423                if inlined != (member_inline_size <= 4) {
4424                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4425                }
4426                let inner_offset;
4427                let mut inner_depth = depth.clone();
4428                if inlined {
4429                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4430                    inner_offset = next_offset;
4431                } else {
4432                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4433                    inner_depth.increment()?;
4434                }
4435                let val_ref = self
4436                    .grant_deactivated_during_request
4437                    .get_or_insert_with(|| fidl::new_empty!(u64, D));
4438                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4439                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4440                {
4441                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4442                }
4443                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4444                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4445                }
4446            }
4447
4448            next_offset += envelope_size;
4449            _next_ordinal_to_read += 1;
4450            if next_offset >= end_offset {
4451                return Ok(());
4452            }
4453
4454            // Decode unknown envelopes for gaps in ordinals.
4455            while _next_ordinal_to_read < 7 {
4456                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4457                _next_ordinal_to_read += 1;
4458                next_offset += envelope_size;
4459            }
4460
4461            let next_out_of_line = decoder.next_out_of_line();
4462            let handles_before = decoder.remaining_handles();
4463            if let Some((inlined, num_bytes, num_handles)) =
4464                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4465            {
4466                let member_inline_size =
4467                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4468                if inlined != (member_inline_size <= 4) {
4469                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4470                }
4471                let inner_offset;
4472                let mut inner_depth = depth.clone();
4473                if inlined {
4474                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4475                    inner_offset = next_offset;
4476                } else {
4477                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4478                    inner_depth.increment()?;
4479                }
4480                let val_ref = self.delayed_grant.get_or_insert_with(|| fidl::new_empty!(u64, D));
4481                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4482                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4483                {
4484                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4485                }
4486                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4487                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4488                }
4489            }
4490
4491            next_offset += envelope_size;
4492            _next_ordinal_to_read += 1;
4493            if next_offset >= end_offset {
4494                return Ok(());
4495            }
4496
4497            // Decode unknown envelopes for gaps in ordinals.
4498            while _next_ordinal_to_read < 8 {
4499                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4500                _next_ordinal_to_read += 1;
4501                next_offset += envelope_size;
4502            }
4503
4504            let next_out_of_line = decoder.next_out_of_line();
4505            let handles_before = decoder.remaining_handles();
4506            if let Some((inlined, num_bytes, num_handles)) =
4507                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4508            {
4509                let member_inline_size =
4510                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4511                if inlined != (member_inline_size <= 4) {
4512                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4513                }
4514                let inner_offset;
4515                let mut inner_depth = depth.clone();
4516                if inlined {
4517                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4518                    inner_offset = next_offset;
4519                } else {
4520                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4521                    inner_depth.increment()?;
4522                }
4523                let val_ref = self
4524                    .avg_delay_request_to_grant_usec
4525                    .get_or_insert_with(|| fidl::new_empty!(u32, D));
4526                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
4527                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4528                {
4529                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4530                }
4531                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4532                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4533                }
4534            }
4535
4536            next_offset += envelope_size;
4537            _next_ordinal_to_read += 1;
4538            if next_offset >= end_offset {
4539                return Ok(());
4540            }
4541
4542            // Decode unknown envelopes for gaps in ordinals.
4543            while _next_ordinal_to_read < 9 {
4544                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4545                _next_ordinal_to_read += 1;
4546                next_offset += envelope_size;
4547            }
4548
4549            let next_out_of_line = decoder.next_out_of_line();
4550            let handles_before = decoder.remaining_handles();
4551            if let Some((inlined, num_bytes, num_handles)) =
4552                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4553            {
4554                let member_inline_size =
4555                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4556                if inlined != (member_inline_size <= 4) {
4557                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4558                }
4559                let inner_offset;
4560                let mut inner_depth = depth.clone();
4561                if inlined {
4562                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4563                    inner_offset = next_offset;
4564                } else {
4565                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4566                    inner_depth.increment()?;
4567                }
4568                let val_ref = self.grant_none.get_or_insert_with(|| fidl::new_empty!(u64, D));
4569                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4570                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4571                {
4572                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4573                }
4574                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4575                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4576                }
4577            }
4578
4579            next_offset += envelope_size;
4580
4581            // Decode the remaining unknown envelopes.
4582            while next_offset < end_offset {
4583                _next_ordinal_to_read += 1;
4584                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4585                next_offset += envelope_size;
4586            }
4587
4588            Ok(())
4589        }
4590    }
4591
4592    impl DeviceState {
4593        #[inline(always)]
4594        fn max_ordinal_present(&self) -> u64 {
4595            if let Some(_) = self.role {
4596                return 2;
4597            }
4598            if let Some(_) = self.connectivity_state {
4599                return 1;
4600            }
4601            0
4602        }
4603    }
4604
4605    impl fidl::encoding::ValueTypeMarker for DeviceState {
4606        type Borrowed<'a> = &'a Self;
4607        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4608            value
4609        }
4610    }
4611
4612    unsafe impl fidl::encoding::TypeMarker for DeviceState {
4613        type Owned = Self;
4614
4615        #[inline(always)]
4616        fn inline_align(_context: fidl::encoding::Context) -> usize {
4617            8
4618        }
4619
4620        #[inline(always)]
4621        fn inline_size(_context: fidl::encoding::Context) -> usize {
4622            16
4623        }
4624    }
4625
4626    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceState, D>
4627        for &DeviceState
4628    {
4629        unsafe fn encode(
4630            self,
4631            encoder: &mut fidl::encoding::Encoder<'_, D>,
4632            offset: usize,
4633            mut depth: fidl::encoding::Depth,
4634        ) -> fidl::Result<()> {
4635            encoder.debug_check_bounds::<DeviceState>(offset);
4636            // Vector header
4637            let max_ordinal: u64 = self.max_ordinal_present();
4638            encoder.write_num(max_ordinal, offset);
4639            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4640            // Calling encoder.out_of_line_offset(0) is not allowed.
4641            if max_ordinal == 0 {
4642                return Ok(());
4643            }
4644            depth.increment()?;
4645            let envelope_size = 8;
4646            let bytes_len = max_ordinal as usize * envelope_size;
4647            #[allow(unused_variables)]
4648            let offset = encoder.out_of_line_offset(bytes_len);
4649            let mut _prev_end_offset: usize = 0;
4650            if 1 > max_ordinal {
4651                return Ok(());
4652            }
4653
4654            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4655            // are envelope_size bytes.
4656            let cur_offset: usize = (1 - 1) * envelope_size;
4657
4658            // Zero reserved fields.
4659            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4660
4661            // Safety:
4662            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4663            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4664            //   envelope_size bytes, there is always sufficient room.
4665            fidl::encoding::encode_in_envelope_optional::<ConnectivityState, D>(
4666                self.connectivity_state
4667                    .as_ref()
4668                    .map(<ConnectivityState as fidl::encoding::ValueTypeMarker>::borrow),
4669                encoder,
4670                offset + cur_offset,
4671                depth,
4672            )?;
4673
4674            _prev_end_offset = cur_offset + envelope_size;
4675            if 2 > max_ordinal {
4676                return Ok(());
4677            }
4678
4679            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4680            // are envelope_size bytes.
4681            let cur_offset: usize = (2 - 1) * envelope_size;
4682
4683            // Zero reserved fields.
4684            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4685
4686            // Safety:
4687            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4688            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4689            //   envelope_size bytes, there is always sufficient room.
4690            fidl::encoding::encode_in_envelope_optional::<Role, D>(
4691                self.role.as_ref().map(<Role as fidl::encoding::ValueTypeMarker>::borrow),
4692                encoder,
4693                offset + cur_offset,
4694                depth,
4695            )?;
4696
4697            _prev_end_offset = cur_offset + envelope_size;
4698
4699            Ok(())
4700        }
4701    }
4702
4703    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceState {
4704        #[inline(always)]
4705        fn new_empty() -> Self {
4706            Self::default()
4707        }
4708
4709        unsafe fn decode(
4710            &mut self,
4711            decoder: &mut fidl::encoding::Decoder<'_, D>,
4712            offset: usize,
4713            mut depth: fidl::encoding::Depth,
4714        ) -> fidl::Result<()> {
4715            decoder.debug_check_bounds::<Self>(offset);
4716            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4717                None => return Err(fidl::Error::NotNullable),
4718                Some(len) => len,
4719            };
4720            // Calling decoder.out_of_line_offset(0) is not allowed.
4721            if len == 0 {
4722                return Ok(());
4723            };
4724            depth.increment()?;
4725            let envelope_size = 8;
4726            let bytes_len = len * envelope_size;
4727            let offset = decoder.out_of_line_offset(bytes_len)?;
4728            // Decode the envelope for each type.
4729            let mut _next_ordinal_to_read = 0;
4730            let mut next_offset = offset;
4731            let end_offset = offset + bytes_len;
4732            _next_ordinal_to_read += 1;
4733            if next_offset >= end_offset {
4734                return Ok(());
4735            }
4736
4737            // Decode unknown envelopes for gaps in ordinals.
4738            while _next_ordinal_to_read < 1 {
4739                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4740                _next_ordinal_to_read += 1;
4741                next_offset += envelope_size;
4742            }
4743
4744            let next_out_of_line = decoder.next_out_of_line();
4745            let handles_before = decoder.remaining_handles();
4746            if let Some((inlined, num_bytes, num_handles)) =
4747                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4748            {
4749                let member_inline_size =
4750                    <ConnectivityState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4751                if inlined != (member_inline_size <= 4) {
4752                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4753                }
4754                let inner_offset;
4755                let mut inner_depth = depth.clone();
4756                if inlined {
4757                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4758                    inner_offset = next_offset;
4759                } else {
4760                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4761                    inner_depth.increment()?;
4762                }
4763                let val_ref = self
4764                    .connectivity_state
4765                    .get_or_insert_with(|| fidl::new_empty!(ConnectivityState, D));
4766                fidl::decode!(ConnectivityState, D, val_ref, decoder, inner_offset, inner_depth)?;
4767                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4768                {
4769                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4770                }
4771                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4772                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4773                }
4774            }
4775
4776            next_offset += envelope_size;
4777            _next_ordinal_to_read += 1;
4778            if next_offset >= end_offset {
4779                return Ok(());
4780            }
4781
4782            // Decode unknown envelopes for gaps in ordinals.
4783            while _next_ordinal_to_read < 2 {
4784                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4785                _next_ordinal_to_read += 1;
4786                next_offset += envelope_size;
4787            }
4788
4789            let next_out_of_line = decoder.next_out_of_line();
4790            let handles_before = decoder.remaining_handles();
4791            if let Some((inlined, num_bytes, num_handles)) =
4792                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4793            {
4794                let member_inline_size =
4795                    <Role as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4796                if inlined != (member_inline_size <= 4) {
4797                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4798                }
4799                let inner_offset;
4800                let mut inner_depth = depth.clone();
4801                if inlined {
4802                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4803                    inner_offset = next_offset;
4804                } else {
4805                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4806                    inner_depth.increment()?;
4807                }
4808                let val_ref = self.role.get_or_insert_with(|| fidl::new_empty!(Role, D));
4809                fidl::decode!(Role, D, val_ref, decoder, inner_offset, inner_depth)?;
4810                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4811                {
4812                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4813                }
4814                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4815                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4816                }
4817            }
4818
4819            next_offset += envelope_size;
4820
4821            // Decode the remaining unknown envelopes.
4822            while next_offset < end_offset {
4823                _next_ordinal_to_read += 1;
4824                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4825                next_offset += envelope_size;
4826            }
4827
4828            Ok(())
4829        }
4830    }
4831
4832    impl EnergyScanParameters {
4833        #[inline(always)]
4834        fn max_ordinal_present(&self) -> u64 {
4835            if let Some(_) = self.dwell_time_ms {
4836                return 2;
4837            }
4838            if let Some(_) = self.channels {
4839                return 1;
4840            }
4841            0
4842        }
4843    }
4844
4845    impl fidl::encoding::ValueTypeMarker for EnergyScanParameters {
4846        type Borrowed<'a> = &'a Self;
4847        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4848            value
4849        }
4850    }
4851
4852    unsafe impl fidl::encoding::TypeMarker for EnergyScanParameters {
4853        type Owned = Self;
4854
4855        #[inline(always)]
4856        fn inline_align(_context: fidl::encoding::Context) -> usize {
4857            8
4858        }
4859
4860        #[inline(always)]
4861        fn inline_size(_context: fidl::encoding::Context) -> usize {
4862            16
4863        }
4864    }
4865
4866    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EnergyScanParameters, D>
4867        for &EnergyScanParameters
4868    {
4869        unsafe fn encode(
4870            self,
4871            encoder: &mut fidl::encoding::Encoder<'_, D>,
4872            offset: usize,
4873            mut depth: fidl::encoding::Depth,
4874        ) -> fidl::Result<()> {
4875            encoder.debug_check_bounds::<EnergyScanParameters>(offset);
4876            // Vector header
4877            let max_ordinal: u64 = self.max_ordinal_present();
4878            encoder.write_num(max_ordinal, offset);
4879            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4880            // Calling encoder.out_of_line_offset(0) is not allowed.
4881            if max_ordinal == 0 {
4882                return Ok(());
4883            }
4884            depth.increment()?;
4885            let envelope_size = 8;
4886            let bytes_len = max_ordinal as usize * envelope_size;
4887            #[allow(unused_variables)]
4888            let offset = encoder.out_of_line_offset(bytes_len);
4889            let mut _prev_end_offset: usize = 0;
4890            if 1 > max_ordinal {
4891                return Ok(());
4892            }
4893
4894            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4895            // are envelope_size bytes.
4896            let cur_offset: usize = (1 - 1) * envelope_size;
4897
4898            // Zero reserved fields.
4899            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4900
4901            // Safety:
4902            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4903            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4904            //   envelope_size bytes, there is always sufficient room.
4905            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u16, 200>, D>(
4906                self.channels.as_ref().map(
4907                    <fidl::encoding::Vector<u16, 200> as fidl::encoding::ValueTypeMarker>::borrow,
4908                ),
4909                encoder,
4910                offset + cur_offset,
4911                depth,
4912            )?;
4913
4914            _prev_end_offset = cur_offset + envelope_size;
4915            if 2 > max_ordinal {
4916                return Ok(());
4917            }
4918
4919            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4920            // are envelope_size bytes.
4921            let cur_offset: usize = (2 - 1) * envelope_size;
4922
4923            // Zero reserved fields.
4924            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4925
4926            // Safety:
4927            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4928            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4929            //   envelope_size bytes, there is always sufficient room.
4930            fidl::encoding::encode_in_envelope_optional::<u32, D>(
4931                self.dwell_time_ms.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
4932                encoder,
4933                offset + cur_offset,
4934                depth,
4935            )?;
4936
4937            _prev_end_offset = cur_offset + envelope_size;
4938
4939            Ok(())
4940        }
4941    }
4942
4943    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EnergyScanParameters {
4944        #[inline(always)]
4945        fn new_empty() -> Self {
4946            Self::default()
4947        }
4948
4949        unsafe fn decode(
4950            &mut self,
4951            decoder: &mut fidl::encoding::Decoder<'_, D>,
4952            offset: usize,
4953            mut depth: fidl::encoding::Depth,
4954        ) -> fidl::Result<()> {
4955            decoder.debug_check_bounds::<Self>(offset);
4956            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4957                None => return Err(fidl::Error::NotNullable),
4958                Some(len) => len,
4959            };
4960            // Calling decoder.out_of_line_offset(0) is not allowed.
4961            if len == 0 {
4962                return Ok(());
4963            };
4964            depth.increment()?;
4965            let envelope_size = 8;
4966            let bytes_len = len * envelope_size;
4967            let offset = decoder.out_of_line_offset(bytes_len)?;
4968            // Decode the envelope for each type.
4969            let mut _next_ordinal_to_read = 0;
4970            let mut next_offset = offset;
4971            let end_offset = offset + bytes_len;
4972            _next_ordinal_to_read += 1;
4973            if next_offset >= end_offset {
4974                return Ok(());
4975            }
4976
4977            // Decode unknown envelopes for gaps in ordinals.
4978            while _next_ordinal_to_read < 1 {
4979                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4980                _next_ordinal_to_read += 1;
4981                next_offset += envelope_size;
4982            }
4983
4984            let next_out_of_line = decoder.next_out_of_line();
4985            let handles_before = decoder.remaining_handles();
4986            if let Some((inlined, num_bytes, num_handles)) =
4987                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4988            {
4989                let member_inline_size =
4990                    <fidl::encoding::Vector<u16, 200> as fidl::encoding::TypeMarker>::inline_size(
4991                        decoder.context,
4992                    );
4993                if inlined != (member_inline_size <= 4) {
4994                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4995                }
4996                let inner_offset;
4997                let mut inner_depth = depth.clone();
4998                if inlined {
4999                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5000                    inner_offset = next_offset;
5001                } else {
5002                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5003                    inner_depth.increment()?;
5004                }
5005                let val_ref = self
5006                    .channels
5007                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u16, 200>, D));
5008                fidl::decode!(fidl::encoding::Vector<u16, 200>, D, val_ref, decoder, inner_offset, inner_depth)?;
5009                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5010                {
5011                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5012                }
5013                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5014                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5015                }
5016            }
5017
5018            next_offset += envelope_size;
5019            _next_ordinal_to_read += 1;
5020            if next_offset >= end_offset {
5021                return Ok(());
5022            }
5023
5024            // Decode unknown envelopes for gaps in ordinals.
5025            while _next_ordinal_to_read < 2 {
5026                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5027                _next_ordinal_to_read += 1;
5028                next_offset += envelope_size;
5029            }
5030
5031            let next_out_of_line = decoder.next_out_of_line();
5032            let handles_before = decoder.remaining_handles();
5033            if let Some((inlined, num_bytes, num_handles)) =
5034                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5035            {
5036                let member_inline_size =
5037                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5038                if inlined != (member_inline_size <= 4) {
5039                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5040                }
5041                let inner_offset;
5042                let mut inner_depth = depth.clone();
5043                if inlined {
5044                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5045                    inner_offset = next_offset;
5046                } else {
5047                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5048                    inner_depth.increment()?;
5049                }
5050                let val_ref = self.dwell_time_ms.get_or_insert_with(|| fidl::new_empty!(u32, D));
5051                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
5052                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5053                {
5054                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5055                }
5056                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5057                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5058                }
5059            }
5060
5061            next_offset += envelope_size;
5062
5063            // Decode the remaining unknown envelopes.
5064            while next_offset < end_offset {
5065                _next_ordinal_to_read += 1;
5066                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5067                next_offset += envelope_size;
5068            }
5069
5070            Ok(())
5071        }
5072    }
5073
5074    impl EnergyScanResult {
5075        #[inline(always)]
5076        fn max_ordinal_present(&self) -> u64 {
5077            if let Some(_) = self.min_rssi {
5078                return 3;
5079            }
5080            if let Some(_) = self.max_rssi {
5081                return 2;
5082            }
5083            if let Some(_) = self.channel_index {
5084                return 1;
5085            }
5086            0
5087        }
5088    }
5089
5090    impl fidl::encoding::ValueTypeMarker for EnergyScanResult {
5091        type Borrowed<'a> = &'a Self;
5092        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5093            value
5094        }
5095    }
5096
5097    unsafe impl fidl::encoding::TypeMarker for EnergyScanResult {
5098        type Owned = Self;
5099
5100        #[inline(always)]
5101        fn inline_align(_context: fidl::encoding::Context) -> usize {
5102            8
5103        }
5104
5105        #[inline(always)]
5106        fn inline_size(_context: fidl::encoding::Context) -> usize {
5107            16
5108        }
5109    }
5110
5111    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EnergyScanResult, D>
5112        for &EnergyScanResult
5113    {
5114        unsafe fn encode(
5115            self,
5116            encoder: &mut fidl::encoding::Encoder<'_, D>,
5117            offset: usize,
5118            mut depth: fidl::encoding::Depth,
5119        ) -> fidl::Result<()> {
5120            encoder.debug_check_bounds::<EnergyScanResult>(offset);
5121            // Vector header
5122            let max_ordinal: u64 = self.max_ordinal_present();
5123            encoder.write_num(max_ordinal, offset);
5124            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5125            // Calling encoder.out_of_line_offset(0) is not allowed.
5126            if max_ordinal == 0 {
5127                return Ok(());
5128            }
5129            depth.increment()?;
5130            let envelope_size = 8;
5131            let bytes_len = max_ordinal as usize * envelope_size;
5132            #[allow(unused_variables)]
5133            let offset = encoder.out_of_line_offset(bytes_len);
5134            let mut _prev_end_offset: usize = 0;
5135            if 1 > max_ordinal {
5136                return Ok(());
5137            }
5138
5139            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5140            // are envelope_size bytes.
5141            let cur_offset: usize = (1 - 1) * envelope_size;
5142
5143            // Zero reserved fields.
5144            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5145
5146            // Safety:
5147            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5148            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5149            //   envelope_size bytes, there is always sufficient room.
5150            fidl::encoding::encode_in_envelope_optional::<u16, D>(
5151                self.channel_index.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5152                encoder,
5153                offset + cur_offset,
5154                depth,
5155            )?;
5156
5157            _prev_end_offset = cur_offset + envelope_size;
5158            if 2 > max_ordinal {
5159                return Ok(());
5160            }
5161
5162            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5163            // are envelope_size bytes.
5164            let cur_offset: usize = (2 - 1) * envelope_size;
5165
5166            // Zero reserved fields.
5167            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5168
5169            // Safety:
5170            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5171            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5172            //   envelope_size bytes, there is always sufficient room.
5173            fidl::encoding::encode_in_envelope_optional::<i32, D>(
5174                self.max_rssi.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
5175                encoder,
5176                offset + cur_offset,
5177                depth,
5178            )?;
5179
5180            _prev_end_offset = cur_offset + envelope_size;
5181            if 3 > max_ordinal {
5182                return Ok(());
5183            }
5184
5185            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5186            // are envelope_size bytes.
5187            let cur_offset: usize = (3 - 1) * envelope_size;
5188
5189            // Zero reserved fields.
5190            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5191
5192            // Safety:
5193            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5194            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5195            //   envelope_size bytes, there is always sufficient room.
5196            fidl::encoding::encode_in_envelope_optional::<i32, D>(
5197                self.min_rssi.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
5198                encoder,
5199                offset + cur_offset,
5200                depth,
5201            )?;
5202
5203            _prev_end_offset = cur_offset + envelope_size;
5204
5205            Ok(())
5206        }
5207    }
5208
5209    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EnergyScanResult {
5210        #[inline(always)]
5211        fn new_empty() -> Self {
5212            Self::default()
5213        }
5214
5215        unsafe fn decode(
5216            &mut self,
5217            decoder: &mut fidl::encoding::Decoder<'_, D>,
5218            offset: usize,
5219            mut depth: fidl::encoding::Depth,
5220        ) -> fidl::Result<()> {
5221            decoder.debug_check_bounds::<Self>(offset);
5222            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5223                None => return Err(fidl::Error::NotNullable),
5224                Some(len) => len,
5225            };
5226            // Calling decoder.out_of_line_offset(0) is not allowed.
5227            if len == 0 {
5228                return Ok(());
5229            };
5230            depth.increment()?;
5231            let envelope_size = 8;
5232            let bytes_len = len * envelope_size;
5233            let offset = decoder.out_of_line_offset(bytes_len)?;
5234            // Decode the envelope for each type.
5235            let mut _next_ordinal_to_read = 0;
5236            let mut next_offset = offset;
5237            let end_offset = offset + bytes_len;
5238            _next_ordinal_to_read += 1;
5239            if next_offset >= end_offset {
5240                return Ok(());
5241            }
5242
5243            // Decode unknown envelopes for gaps in ordinals.
5244            while _next_ordinal_to_read < 1 {
5245                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5246                _next_ordinal_to_read += 1;
5247                next_offset += envelope_size;
5248            }
5249
5250            let next_out_of_line = decoder.next_out_of_line();
5251            let handles_before = decoder.remaining_handles();
5252            if let Some((inlined, num_bytes, num_handles)) =
5253                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5254            {
5255                let member_inline_size =
5256                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5257                if inlined != (member_inline_size <= 4) {
5258                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5259                }
5260                let inner_offset;
5261                let mut inner_depth = depth.clone();
5262                if inlined {
5263                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5264                    inner_offset = next_offset;
5265                } else {
5266                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5267                    inner_depth.increment()?;
5268                }
5269                let val_ref = self.channel_index.get_or_insert_with(|| fidl::new_empty!(u16, D));
5270                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5271                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5272                {
5273                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5274                }
5275                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5276                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5277                }
5278            }
5279
5280            next_offset += envelope_size;
5281            _next_ordinal_to_read += 1;
5282            if next_offset >= end_offset {
5283                return Ok(());
5284            }
5285
5286            // Decode unknown envelopes for gaps in ordinals.
5287            while _next_ordinal_to_read < 2 {
5288                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5289                _next_ordinal_to_read += 1;
5290                next_offset += envelope_size;
5291            }
5292
5293            let next_out_of_line = decoder.next_out_of_line();
5294            let handles_before = decoder.remaining_handles();
5295            if let Some((inlined, num_bytes, num_handles)) =
5296                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5297            {
5298                let member_inline_size =
5299                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5300                if inlined != (member_inline_size <= 4) {
5301                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5302                }
5303                let inner_offset;
5304                let mut inner_depth = depth.clone();
5305                if inlined {
5306                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5307                    inner_offset = next_offset;
5308                } else {
5309                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5310                    inner_depth.increment()?;
5311                }
5312                let val_ref = self.max_rssi.get_or_insert_with(|| fidl::new_empty!(i32, D));
5313                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
5314                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5315                {
5316                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5317                }
5318                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5319                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5320                }
5321            }
5322
5323            next_offset += envelope_size;
5324            _next_ordinal_to_read += 1;
5325            if next_offset >= end_offset {
5326                return Ok(());
5327            }
5328
5329            // Decode unknown envelopes for gaps in ordinals.
5330            while _next_ordinal_to_read < 3 {
5331                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5332                _next_ordinal_to_read += 1;
5333                next_offset += envelope_size;
5334            }
5335
5336            let next_out_of_line = decoder.next_out_of_line();
5337            let handles_before = decoder.remaining_handles();
5338            if let Some((inlined, num_bytes, num_handles)) =
5339                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5340            {
5341                let member_inline_size =
5342                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5343                if inlined != (member_inline_size <= 4) {
5344                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5345                }
5346                let inner_offset;
5347                let mut inner_depth = depth.clone();
5348                if inlined {
5349                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5350                    inner_offset = next_offset;
5351                } else {
5352                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5353                    inner_depth.increment()?;
5354                }
5355                let val_ref = self.min_rssi.get_or_insert_with(|| fidl::new_empty!(i32, D));
5356                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
5357                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5358                {
5359                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5360                }
5361                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5362                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5363                }
5364            }
5365
5366            next_offset += envelope_size;
5367
5368            // Decode the remaining unknown envelopes.
5369            while next_offset < end_offset {
5370                _next_ordinal_to_read += 1;
5371                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5372                next_offset += envelope_size;
5373            }
5374
5375            Ok(())
5376        }
5377    }
5378
5379    impl Identity {
5380        #[inline(always)]
5381        fn max_ordinal_present(&self) -> u64 {
5382            if let Some(_) = self.xpanid {
5383                return 7;
5384            }
5385            if let Some(_) = self.mesh_local_prefix {
5386                return 6;
5387            }
5388            if let Some(_) = self.panid {
5389                return 5;
5390            }
5391            if let Some(_) = self.channel {
5392                return 4;
5393            }
5394            if let Some(_) = self.net_type {
5395                return 3;
5396            }
5397            if let Some(_) = self.raw_name {
5398                return 1;
5399            }
5400            0
5401        }
5402    }
5403
5404    impl fidl::encoding::ValueTypeMarker for Identity {
5405        type Borrowed<'a> = &'a Self;
5406        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5407            value
5408        }
5409    }
5410
5411    unsafe impl fidl::encoding::TypeMarker for Identity {
5412        type Owned = Self;
5413
5414        #[inline(always)]
5415        fn inline_align(_context: fidl::encoding::Context) -> usize {
5416            8
5417        }
5418
5419        #[inline(always)]
5420        fn inline_size(_context: fidl::encoding::Context) -> usize {
5421            16
5422        }
5423    }
5424
5425    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Identity, D> for &Identity {
5426        unsafe fn encode(
5427            self,
5428            encoder: &mut fidl::encoding::Encoder<'_, D>,
5429            offset: usize,
5430            mut depth: fidl::encoding::Depth,
5431        ) -> fidl::Result<()> {
5432            encoder.debug_check_bounds::<Identity>(offset);
5433            // Vector header
5434            let max_ordinal: u64 = self.max_ordinal_present();
5435            encoder.write_num(max_ordinal, offset);
5436            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5437            // Calling encoder.out_of_line_offset(0) is not allowed.
5438            if max_ordinal == 0 {
5439                return Ok(());
5440            }
5441            depth.increment()?;
5442            let envelope_size = 8;
5443            let bytes_len = max_ordinal as usize * envelope_size;
5444            #[allow(unused_variables)]
5445            let offset = encoder.out_of_line_offset(bytes_len);
5446            let mut _prev_end_offset: usize = 0;
5447            if 1 > max_ordinal {
5448                return Ok(());
5449            }
5450
5451            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5452            // are envelope_size bytes.
5453            let cur_offset: usize = (1 - 1) * envelope_size;
5454
5455            // Zero reserved fields.
5456            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5457
5458            // Safety:
5459            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5460            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5461            //   envelope_size bytes, there is always sufficient room.
5462            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 63>, D>(
5463                self.raw_name.as_ref().map(
5464                    <fidl::encoding::Vector<u8, 63> as fidl::encoding::ValueTypeMarker>::borrow,
5465                ),
5466                encoder,
5467                offset + cur_offset,
5468                depth,
5469            )?;
5470
5471            _prev_end_offset = cur_offset + envelope_size;
5472            if 3 > max_ordinal {
5473                return Ok(());
5474            }
5475
5476            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5477            // are envelope_size bytes.
5478            let cur_offset: usize = (3 - 1) * envelope_size;
5479
5480            // Zero reserved fields.
5481            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5482
5483            // Safety:
5484            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5485            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5486            //   envelope_size bytes, there is always sufficient room.
5487            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<64>, D>(
5488                self.net_type.as_ref().map(
5489                    <fidl::encoding::BoundedString<64> as fidl::encoding::ValueTypeMarker>::borrow,
5490                ),
5491                encoder,
5492                offset + cur_offset,
5493                depth,
5494            )?;
5495
5496            _prev_end_offset = cur_offset + envelope_size;
5497            if 4 > max_ordinal {
5498                return Ok(());
5499            }
5500
5501            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5502            // are envelope_size bytes.
5503            let cur_offset: usize = (4 - 1) * envelope_size;
5504
5505            // Zero reserved fields.
5506            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5507
5508            // Safety:
5509            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5510            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5511            //   envelope_size bytes, there is always sufficient room.
5512            fidl::encoding::encode_in_envelope_optional::<u16, D>(
5513                self.channel.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5514                encoder,
5515                offset + cur_offset,
5516                depth,
5517            )?;
5518
5519            _prev_end_offset = cur_offset + envelope_size;
5520            if 5 > max_ordinal {
5521                return Ok(());
5522            }
5523
5524            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5525            // are envelope_size bytes.
5526            let cur_offset: usize = (5 - 1) * envelope_size;
5527
5528            // Zero reserved fields.
5529            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5530
5531            // Safety:
5532            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5533            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5534            //   envelope_size bytes, there is always sufficient room.
5535            fidl::encoding::encode_in_envelope_optional::<u16, D>(
5536                self.panid.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5537                encoder,
5538                offset + cur_offset,
5539                depth,
5540            )?;
5541
5542            _prev_end_offset = cur_offset + envelope_size;
5543            if 6 > max_ordinal {
5544                return Ok(());
5545            }
5546
5547            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5548            // are envelope_size bytes.
5549            let cur_offset: usize = (6 - 1) * envelope_size;
5550
5551            // Zero reserved fields.
5552            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5553
5554            // Safety:
5555            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5556            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5557            //   envelope_size bytes, there is always sufficient room.
5558            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D>(
5559            self.mesh_local_prefix.as_ref().map(<fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::ValueTypeMarker>::borrow),
5560            encoder, offset + cur_offset, depth
5561        )?;
5562
5563            _prev_end_offset = cur_offset + envelope_size;
5564            if 7 > max_ordinal {
5565                return Ok(());
5566            }
5567
5568            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5569            // are envelope_size bytes.
5570            let cur_offset: usize = (7 - 1) * envelope_size;
5571
5572            // Zero reserved fields.
5573            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5574
5575            // Safety:
5576            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5577            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5578            //   envelope_size bytes, there is always sufficient room.
5579            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 8>, D>(
5580                self.xpanid
5581                    .as_ref()
5582                    .map(<fidl::encoding::Array<u8, 8> as fidl::encoding::ValueTypeMarker>::borrow),
5583                encoder,
5584                offset + cur_offset,
5585                depth,
5586            )?;
5587
5588            _prev_end_offset = cur_offset + envelope_size;
5589
5590            Ok(())
5591        }
5592    }
5593
5594    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Identity {
5595        #[inline(always)]
5596        fn new_empty() -> Self {
5597            Self::default()
5598        }
5599
5600        unsafe fn decode(
5601            &mut self,
5602            decoder: &mut fidl::encoding::Decoder<'_, D>,
5603            offset: usize,
5604            mut depth: fidl::encoding::Depth,
5605        ) -> fidl::Result<()> {
5606            decoder.debug_check_bounds::<Self>(offset);
5607            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5608                None => return Err(fidl::Error::NotNullable),
5609                Some(len) => len,
5610            };
5611            // Calling decoder.out_of_line_offset(0) is not allowed.
5612            if len == 0 {
5613                return Ok(());
5614            };
5615            depth.increment()?;
5616            let envelope_size = 8;
5617            let bytes_len = len * envelope_size;
5618            let offset = decoder.out_of_line_offset(bytes_len)?;
5619            // Decode the envelope for each type.
5620            let mut _next_ordinal_to_read = 0;
5621            let mut next_offset = offset;
5622            let end_offset = offset + bytes_len;
5623            _next_ordinal_to_read += 1;
5624            if next_offset >= end_offset {
5625                return Ok(());
5626            }
5627
5628            // Decode unknown envelopes for gaps in ordinals.
5629            while _next_ordinal_to_read < 1 {
5630                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5631                _next_ordinal_to_read += 1;
5632                next_offset += envelope_size;
5633            }
5634
5635            let next_out_of_line = decoder.next_out_of_line();
5636            let handles_before = decoder.remaining_handles();
5637            if let Some((inlined, num_bytes, num_handles)) =
5638                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5639            {
5640                let member_inline_size =
5641                    <fidl::encoding::Vector<u8, 63> as fidl::encoding::TypeMarker>::inline_size(
5642                        decoder.context,
5643                    );
5644                if inlined != (member_inline_size <= 4) {
5645                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5646                }
5647                let inner_offset;
5648                let mut inner_depth = depth.clone();
5649                if inlined {
5650                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5651                    inner_offset = next_offset;
5652                } else {
5653                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5654                    inner_depth.increment()?;
5655                }
5656                let val_ref = self
5657                    .raw_name
5658                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 63>, D));
5659                fidl::decode!(fidl::encoding::Vector<u8, 63>, D, val_ref, decoder, inner_offset, inner_depth)?;
5660                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5661                {
5662                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5663                }
5664                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5665                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5666                }
5667            }
5668
5669            next_offset += envelope_size;
5670            _next_ordinal_to_read += 1;
5671            if next_offset >= end_offset {
5672                return Ok(());
5673            }
5674
5675            // Decode unknown envelopes for gaps in ordinals.
5676            while _next_ordinal_to_read < 3 {
5677                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5678                _next_ordinal_to_read += 1;
5679                next_offset += envelope_size;
5680            }
5681
5682            let next_out_of_line = decoder.next_out_of_line();
5683            let handles_before = decoder.remaining_handles();
5684            if let Some((inlined, num_bytes, num_handles)) =
5685                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5686            {
5687                let member_inline_size =
5688                    <fidl::encoding::BoundedString<64> as fidl::encoding::TypeMarker>::inline_size(
5689                        decoder.context,
5690                    );
5691                if inlined != (member_inline_size <= 4) {
5692                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5693                }
5694                let inner_offset;
5695                let mut inner_depth = depth.clone();
5696                if inlined {
5697                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5698                    inner_offset = next_offset;
5699                } else {
5700                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5701                    inner_depth.increment()?;
5702                }
5703                let val_ref = self
5704                    .net_type
5705                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<64>, D));
5706                fidl::decode!(
5707                    fidl::encoding::BoundedString<64>,
5708                    D,
5709                    val_ref,
5710                    decoder,
5711                    inner_offset,
5712                    inner_depth
5713                )?;
5714                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5715                {
5716                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5717                }
5718                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5719                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5720                }
5721            }
5722
5723            next_offset += envelope_size;
5724            _next_ordinal_to_read += 1;
5725            if next_offset >= end_offset {
5726                return Ok(());
5727            }
5728
5729            // Decode unknown envelopes for gaps in ordinals.
5730            while _next_ordinal_to_read < 4 {
5731                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5732                _next_ordinal_to_read += 1;
5733                next_offset += envelope_size;
5734            }
5735
5736            let next_out_of_line = decoder.next_out_of_line();
5737            let handles_before = decoder.remaining_handles();
5738            if let Some((inlined, num_bytes, num_handles)) =
5739                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5740            {
5741                let member_inline_size =
5742                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5743                if inlined != (member_inline_size <= 4) {
5744                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5745                }
5746                let inner_offset;
5747                let mut inner_depth = depth.clone();
5748                if inlined {
5749                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5750                    inner_offset = next_offset;
5751                } else {
5752                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5753                    inner_depth.increment()?;
5754                }
5755                let val_ref = self.channel.get_or_insert_with(|| fidl::new_empty!(u16, D));
5756                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5757                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5758                {
5759                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5760                }
5761                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5762                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5763                }
5764            }
5765
5766            next_offset += envelope_size;
5767            _next_ordinal_to_read += 1;
5768            if next_offset >= end_offset {
5769                return Ok(());
5770            }
5771
5772            // Decode unknown envelopes for gaps in ordinals.
5773            while _next_ordinal_to_read < 5 {
5774                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5775                _next_ordinal_to_read += 1;
5776                next_offset += envelope_size;
5777            }
5778
5779            let next_out_of_line = decoder.next_out_of_line();
5780            let handles_before = decoder.remaining_handles();
5781            if let Some((inlined, num_bytes, num_handles)) =
5782                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5783            {
5784                let member_inline_size =
5785                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5786                if inlined != (member_inline_size <= 4) {
5787                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5788                }
5789                let inner_offset;
5790                let mut inner_depth = depth.clone();
5791                if inlined {
5792                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5793                    inner_offset = next_offset;
5794                } else {
5795                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5796                    inner_depth.increment()?;
5797                }
5798                let val_ref = self.panid.get_or_insert_with(|| fidl::new_empty!(u16, D));
5799                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5800                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5801                {
5802                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5803                }
5804                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5805                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5806                }
5807            }
5808
5809            next_offset += envelope_size;
5810            _next_ordinal_to_read += 1;
5811            if next_offset >= end_offset {
5812                return Ok(());
5813            }
5814
5815            // Decode unknown envelopes for gaps in ordinals.
5816            while _next_ordinal_to_read < 6 {
5817                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5818                _next_ordinal_to_read += 1;
5819                next_offset += envelope_size;
5820            }
5821
5822            let next_out_of_line = decoder.next_out_of_line();
5823            let handles_before = decoder.remaining_handles();
5824            if let Some((inlined, num_bytes, num_handles)) =
5825                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5826            {
5827                let member_inline_size = <fidl_fuchsia_net__common::Ipv6AddressWithPrefix as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5828                if inlined != (member_inline_size <= 4) {
5829                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5830                }
5831                let inner_offset;
5832                let mut inner_depth = depth.clone();
5833                if inlined {
5834                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5835                    inner_offset = next_offset;
5836                } else {
5837                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5838                    inner_depth.increment()?;
5839                }
5840                let val_ref = self.mesh_local_prefix.get_or_insert_with(|| {
5841                    fidl::new_empty!(fidl_fuchsia_net__common::Ipv6AddressWithPrefix, D)
5842                });
5843                fidl::decode!(
5844                    fidl_fuchsia_net__common::Ipv6AddressWithPrefix,
5845                    D,
5846                    val_ref,
5847                    decoder,
5848                    inner_offset,
5849                    inner_depth
5850                )?;
5851                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5852                {
5853                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5854                }
5855                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5856                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5857                }
5858            }
5859
5860            next_offset += envelope_size;
5861            _next_ordinal_to_read += 1;
5862            if next_offset >= end_offset {
5863                return Ok(());
5864            }
5865
5866            // Decode unknown envelopes for gaps in ordinals.
5867            while _next_ordinal_to_read < 7 {
5868                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5869                _next_ordinal_to_read += 1;
5870                next_offset += envelope_size;
5871            }
5872
5873            let next_out_of_line = decoder.next_out_of_line();
5874            let handles_before = decoder.remaining_handles();
5875            if let Some((inlined, num_bytes, num_handles)) =
5876                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5877            {
5878                let member_inline_size =
5879                    <fidl::encoding::Array<u8, 8> as fidl::encoding::TypeMarker>::inline_size(
5880                        decoder.context,
5881                    );
5882                if inlined != (member_inline_size <= 4) {
5883                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5884                }
5885                let inner_offset;
5886                let mut inner_depth = depth.clone();
5887                if inlined {
5888                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5889                    inner_offset = next_offset;
5890                } else {
5891                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5892                    inner_depth.increment()?;
5893                }
5894                let val_ref = self
5895                    .xpanid
5896                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 8>, D));
5897                fidl::decode!(fidl::encoding::Array<u8, 8>, D, val_ref, decoder, inner_offset, inner_depth)?;
5898                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5899                {
5900                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5901                }
5902                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5903                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5904                }
5905            }
5906
5907            next_offset += envelope_size;
5908
5909            // Decode the remaining unknown envelopes.
5910            while next_offset < end_offset {
5911                _next_ordinal_to_read += 1;
5912                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5913                next_offset += envelope_size;
5914            }
5915
5916            Ok(())
5917        }
5918    }
5919
5920    impl IpCounters {
5921        #[inline(always)]
5922        fn max_ordinal_present(&self) -> u64 {
5923            if let Some(_) = self.failure {
5924                return 2;
5925            }
5926            if let Some(_) = self.success {
5927                return 1;
5928            }
5929            0
5930        }
5931    }
5932
5933    impl fidl::encoding::ValueTypeMarker for IpCounters {
5934        type Borrowed<'a> = &'a Self;
5935        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5936            value
5937        }
5938    }
5939
5940    unsafe impl fidl::encoding::TypeMarker for IpCounters {
5941        type Owned = Self;
5942
5943        #[inline(always)]
5944        fn inline_align(_context: fidl::encoding::Context) -> usize {
5945            8
5946        }
5947
5948        #[inline(always)]
5949        fn inline_size(_context: fidl::encoding::Context) -> usize {
5950            16
5951        }
5952    }
5953
5954    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<IpCounters, D>
5955        for &IpCounters
5956    {
5957        unsafe fn encode(
5958            self,
5959            encoder: &mut fidl::encoding::Encoder<'_, D>,
5960            offset: usize,
5961            mut depth: fidl::encoding::Depth,
5962        ) -> fidl::Result<()> {
5963            encoder.debug_check_bounds::<IpCounters>(offset);
5964            // Vector header
5965            let max_ordinal: u64 = self.max_ordinal_present();
5966            encoder.write_num(max_ordinal, offset);
5967            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5968            // Calling encoder.out_of_line_offset(0) is not allowed.
5969            if max_ordinal == 0 {
5970                return Ok(());
5971            }
5972            depth.increment()?;
5973            let envelope_size = 8;
5974            let bytes_len = max_ordinal as usize * envelope_size;
5975            #[allow(unused_variables)]
5976            let offset = encoder.out_of_line_offset(bytes_len);
5977            let mut _prev_end_offset: usize = 0;
5978            if 1 > max_ordinal {
5979                return Ok(());
5980            }
5981
5982            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5983            // are envelope_size bytes.
5984            let cur_offset: usize = (1 - 1) * envelope_size;
5985
5986            // Zero reserved fields.
5987            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5988
5989            // Safety:
5990            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5991            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5992            //   envelope_size bytes, there is always sufficient room.
5993            fidl::encoding::encode_in_envelope_optional::<u32, D>(
5994                self.success.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5995                encoder,
5996                offset + cur_offset,
5997                depth,
5998            )?;
5999
6000            _prev_end_offset = cur_offset + envelope_size;
6001            if 2 > max_ordinal {
6002                return Ok(());
6003            }
6004
6005            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6006            // are envelope_size bytes.
6007            let cur_offset: usize = (2 - 1) * envelope_size;
6008
6009            // Zero reserved fields.
6010            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6011
6012            // Safety:
6013            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6014            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6015            //   envelope_size bytes, there is always sufficient room.
6016            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6017                self.failure.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6018                encoder,
6019                offset + cur_offset,
6020                depth,
6021            )?;
6022
6023            _prev_end_offset = cur_offset + envelope_size;
6024
6025            Ok(())
6026        }
6027    }
6028
6029    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IpCounters {
6030        #[inline(always)]
6031        fn new_empty() -> Self {
6032            Self::default()
6033        }
6034
6035        unsafe fn decode(
6036            &mut self,
6037            decoder: &mut fidl::encoding::Decoder<'_, D>,
6038            offset: usize,
6039            mut depth: fidl::encoding::Depth,
6040        ) -> fidl::Result<()> {
6041            decoder.debug_check_bounds::<Self>(offset);
6042            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6043                None => return Err(fidl::Error::NotNullable),
6044                Some(len) => len,
6045            };
6046            // Calling decoder.out_of_line_offset(0) is not allowed.
6047            if len == 0 {
6048                return Ok(());
6049            };
6050            depth.increment()?;
6051            let envelope_size = 8;
6052            let bytes_len = len * envelope_size;
6053            let offset = decoder.out_of_line_offset(bytes_len)?;
6054            // Decode the envelope for each type.
6055            let mut _next_ordinal_to_read = 0;
6056            let mut next_offset = offset;
6057            let end_offset = offset + bytes_len;
6058            _next_ordinal_to_read += 1;
6059            if next_offset >= end_offset {
6060                return Ok(());
6061            }
6062
6063            // Decode unknown envelopes for gaps in ordinals.
6064            while _next_ordinal_to_read < 1 {
6065                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6066                _next_ordinal_to_read += 1;
6067                next_offset += envelope_size;
6068            }
6069
6070            let next_out_of_line = decoder.next_out_of_line();
6071            let handles_before = decoder.remaining_handles();
6072            if let Some((inlined, num_bytes, num_handles)) =
6073                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6074            {
6075                let member_inline_size =
6076                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6077                if inlined != (member_inline_size <= 4) {
6078                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6079                }
6080                let inner_offset;
6081                let mut inner_depth = depth.clone();
6082                if inlined {
6083                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6084                    inner_offset = next_offset;
6085                } else {
6086                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6087                    inner_depth.increment()?;
6088                }
6089                let val_ref = self.success.get_or_insert_with(|| fidl::new_empty!(u32, D));
6090                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6091                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6092                {
6093                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6094                }
6095                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6096                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6097                }
6098            }
6099
6100            next_offset += envelope_size;
6101            _next_ordinal_to_read += 1;
6102            if next_offset >= end_offset {
6103                return Ok(());
6104            }
6105
6106            // Decode unknown envelopes for gaps in ordinals.
6107            while _next_ordinal_to_read < 2 {
6108                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6109                _next_ordinal_to_read += 1;
6110                next_offset += envelope_size;
6111            }
6112
6113            let next_out_of_line = decoder.next_out_of_line();
6114            let handles_before = decoder.remaining_handles();
6115            if let Some((inlined, num_bytes, num_handles)) =
6116                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6117            {
6118                let member_inline_size =
6119                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6120                if inlined != (member_inline_size <= 4) {
6121                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6122                }
6123                let inner_offset;
6124                let mut inner_depth = depth.clone();
6125                if inlined {
6126                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6127                    inner_offset = next_offset;
6128                } else {
6129                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6130                    inner_depth.increment()?;
6131                }
6132                let val_ref = self.failure.get_or_insert_with(|| fidl::new_empty!(u32, D));
6133                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6134                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6135                {
6136                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6137                }
6138                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6139                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6140                }
6141            }
6142
6143            next_offset += envelope_size;
6144
6145            // Decode the remaining unknown envelopes.
6146            while next_offset < end_offset {
6147                _next_ordinal_to_read += 1;
6148                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6149                next_offset += envelope_size;
6150            }
6151
6152            Ok(())
6153        }
6154    }
6155
6156    impl MacCounters {
6157        #[inline(always)]
6158        fn max_ordinal_present(&self) -> u64 {
6159            if let Some(_) = self.err_other {
6160                return 26;
6161            }
6162            if let Some(_) = self.err_busy_channel {
6163                return 25;
6164            }
6165            if let Some(_) = self.err_abort {
6166                return 24;
6167            }
6168            if let Some(_) = self.err_cca {
6169                return 23;
6170            }
6171            if let Some(_) = self.err_fcs {
6172                return 22;
6173            }
6174            if let Some(_) = self.err_sec {
6175                return 21;
6176            }
6177            if let Some(_) = self.err_invalid_src_addr {
6178                return 20;
6179            }
6180            if let Some(_) = self.err_unknown_neighbor {
6181                return 19;
6182            }
6183            if let Some(_) = self.err_no_frame {
6184                return 18;
6185            }
6186            if let Some(_) = self.duplicated {
6187                return 17;
6188            }
6189            if let Some(_) = self.dest_addr_filtered {
6190                return 16;
6191            }
6192            if let Some(_) = self.indirect_max_retry_expiry {
6193                return 15;
6194            }
6195            if let Some(_) = self.direct_max_retry_expiry {
6196                return 14;
6197            }
6198            if let Some(_) = self.retries {
6199                return 13;
6200            }
6201            if let Some(_) = self.address_filtered {
6202                return 12;
6203            }
6204            if let Some(_) = self.other {
6205                return 11;
6206            }
6207            if let Some(_) = self.beacon_request {
6208                return 10;
6209            }
6210            if let Some(_) = self.beacon {
6211                return 9;
6212            }
6213            if let Some(_) = self.data_poll {
6214                return 8;
6215            }
6216            if let Some(_) = self.data {
6217                return 7;
6218            }
6219            if let Some(_) = self.no_ack_requested {
6220                return 6;
6221            }
6222            if let Some(_) = self.acked {
6223                return 5;
6224            }
6225            if let Some(_) = self.ack_requested {
6226                return 4;
6227            }
6228            if let Some(_) = self.broadcast {
6229                return 3;
6230            }
6231            if let Some(_) = self.unicast {
6232                return 2;
6233            }
6234            if let Some(_) = self.total {
6235                return 1;
6236            }
6237            0
6238        }
6239    }
6240
6241    impl fidl::encoding::ValueTypeMarker for MacCounters {
6242        type Borrowed<'a> = &'a Self;
6243        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6244            value
6245        }
6246    }
6247
6248    unsafe impl fidl::encoding::TypeMarker for MacCounters {
6249        type Owned = Self;
6250
6251        #[inline(always)]
6252        fn inline_align(_context: fidl::encoding::Context) -> usize {
6253            8
6254        }
6255
6256        #[inline(always)]
6257        fn inline_size(_context: fidl::encoding::Context) -> usize {
6258            16
6259        }
6260    }
6261
6262    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MacCounters, D>
6263        for &MacCounters
6264    {
6265        unsafe fn encode(
6266            self,
6267            encoder: &mut fidl::encoding::Encoder<'_, D>,
6268            offset: usize,
6269            mut depth: fidl::encoding::Depth,
6270        ) -> fidl::Result<()> {
6271            encoder.debug_check_bounds::<MacCounters>(offset);
6272            // Vector header
6273            let max_ordinal: u64 = self.max_ordinal_present();
6274            encoder.write_num(max_ordinal, offset);
6275            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6276            // Calling encoder.out_of_line_offset(0) is not allowed.
6277            if max_ordinal == 0 {
6278                return Ok(());
6279            }
6280            depth.increment()?;
6281            let envelope_size = 8;
6282            let bytes_len = max_ordinal as usize * envelope_size;
6283            #[allow(unused_variables)]
6284            let offset = encoder.out_of_line_offset(bytes_len);
6285            let mut _prev_end_offset: usize = 0;
6286            if 1 > max_ordinal {
6287                return Ok(());
6288            }
6289
6290            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6291            // are envelope_size bytes.
6292            let cur_offset: usize = (1 - 1) * envelope_size;
6293
6294            // Zero reserved fields.
6295            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6296
6297            // Safety:
6298            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6299            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6300            //   envelope_size bytes, there is always sufficient room.
6301            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6302                self.total.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6303                encoder,
6304                offset + cur_offset,
6305                depth,
6306            )?;
6307
6308            _prev_end_offset = cur_offset + envelope_size;
6309            if 2 > max_ordinal {
6310                return Ok(());
6311            }
6312
6313            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6314            // are envelope_size bytes.
6315            let cur_offset: usize = (2 - 1) * envelope_size;
6316
6317            // Zero reserved fields.
6318            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6319
6320            // Safety:
6321            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6322            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6323            //   envelope_size bytes, there is always sufficient room.
6324            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6325                self.unicast.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6326                encoder,
6327                offset + cur_offset,
6328                depth,
6329            )?;
6330
6331            _prev_end_offset = cur_offset + envelope_size;
6332            if 3 > max_ordinal {
6333                return Ok(());
6334            }
6335
6336            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6337            // are envelope_size bytes.
6338            let cur_offset: usize = (3 - 1) * envelope_size;
6339
6340            // Zero reserved fields.
6341            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6342
6343            // Safety:
6344            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6345            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6346            //   envelope_size bytes, there is always sufficient room.
6347            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6348                self.broadcast.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6349                encoder,
6350                offset + cur_offset,
6351                depth,
6352            )?;
6353
6354            _prev_end_offset = cur_offset + envelope_size;
6355            if 4 > max_ordinal {
6356                return Ok(());
6357            }
6358
6359            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6360            // are envelope_size bytes.
6361            let cur_offset: usize = (4 - 1) * envelope_size;
6362
6363            // Zero reserved fields.
6364            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6365
6366            // Safety:
6367            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6368            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6369            //   envelope_size bytes, there is always sufficient room.
6370            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6371                self.ack_requested.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6372                encoder,
6373                offset + cur_offset,
6374                depth,
6375            )?;
6376
6377            _prev_end_offset = cur_offset + envelope_size;
6378            if 5 > max_ordinal {
6379                return Ok(());
6380            }
6381
6382            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6383            // are envelope_size bytes.
6384            let cur_offset: usize = (5 - 1) * envelope_size;
6385
6386            // Zero reserved fields.
6387            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6388
6389            // Safety:
6390            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6391            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6392            //   envelope_size bytes, there is always sufficient room.
6393            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6394                self.acked.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6395                encoder,
6396                offset + cur_offset,
6397                depth,
6398            )?;
6399
6400            _prev_end_offset = cur_offset + envelope_size;
6401            if 6 > max_ordinal {
6402                return Ok(());
6403            }
6404
6405            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6406            // are envelope_size bytes.
6407            let cur_offset: usize = (6 - 1) * envelope_size;
6408
6409            // Zero reserved fields.
6410            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6411
6412            // Safety:
6413            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6414            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6415            //   envelope_size bytes, there is always sufficient room.
6416            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6417                self.no_ack_requested
6418                    .as_ref()
6419                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6420                encoder,
6421                offset + cur_offset,
6422                depth,
6423            )?;
6424
6425            _prev_end_offset = cur_offset + envelope_size;
6426            if 7 > max_ordinal {
6427                return Ok(());
6428            }
6429
6430            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6431            // are envelope_size bytes.
6432            let cur_offset: usize = (7 - 1) * envelope_size;
6433
6434            // Zero reserved fields.
6435            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6436
6437            // Safety:
6438            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6439            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6440            //   envelope_size bytes, there is always sufficient room.
6441            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6442                self.data.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6443                encoder,
6444                offset + cur_offset,
6445                depth,
6446            )?;
6447
6448            _prev_end_offset = cur_offset + envelope_size;
6449            if 8 > max_ordinal {
6450                return Ok(());
6451            }
6452
6453            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6454            // are envelope_size bytes.
6455            let cur_offset: usize = (8 - 1) * envelope_size;
6456
6457            // Zero reserved fields.
6458            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6459
6460            // Safety:
6461            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6462            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6463            //   envelope_size bytes, there is always sufficient room.
6464            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6465                self.data_poll.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6466                encoder,
6467                offset + cur_offset,
6468                depth,
6469            )?;
6470
6471            _prev_end_offset = cur_offset + envelope_size;
6472            if 9 > max_ordinal {
6473                return Ok(());
6474            }
6475
6476            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6477            // are envelope_size bytes.
6478            let cur_offset: usize = (9 - 1) * envelope_size;
6479
6480            // Zero reserved fields.
6481            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6482
6483            // Safety:
6484            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6485            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6486            //   envelope_size bytes, there is always sufficient room.
6487            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6488                self.beacon.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6489                encoder,
6490                offset + cur_offset,
6491                depth,
6492            )?;
6493
6494            _prev_end_offset = cur_offset + envelope_size;
6495            if 10 > max_ordinal {
6496                return Ok(());
6497            }
6498
6499            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6500            // are envelope_size bytes.
6501            let cur_offset: usize = (10 - 1) * envelope_size;
6502
6503            // Zero reserved fields.
6504            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6505
6506            // Safety:
6507            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6508            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6509            //   envelope_size bytes, there is always sufficient room.
6510            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6511                self.beacon_request.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6512                encoder,
6513                offset + cur_offset,
6514                depth,
6515            )?;
6516
6517            _prev_end_offset = cur_offset + envelope_size;
6518            if 11 > max_ordinal {
6519                return Ok(());
6520            }
6521
6522            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6523            // are envelope_size bytes.
6524            let cur_offset: usize = (11 - 1) * envelope_size;
6525
6526            // Zero reserved fields.
6527            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6528
6529            // Safety:
6530            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6531            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6532            //   envelope_size bytes, there is always sufficient room.
6533            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6534                self.other.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6535                encoder,
6536                offset + cur_offset,
6537                depth,
6538            )?;
6539
6540            _prev_end_offset = cur_offset + envelope_size;
6541            if 12 > max_ordinal {
6542                return Ok(());
6543            }
6544
6545            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6546            // are envelope_size bytes.
6547            let cur_offset: usize = (12 - 1) * envelope_size;
6548
6549            // Zero reserved fields.
6550            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6551
6552            // Safety:
6553            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6554            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6555            //   envelope_size bytes, there is always sufficient room.
6556            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6557                self.address_filtered
6558                    .as_ref()
6559                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6560                encoder,
6561                offset + cur_offset,
6562                depth,
6563            )?;
6564
6565            _prev_end_offset = cur_offset + envelope_size;
6566            if 13 > max_ordinal {
6567                return Ok(());
6568            }
6569
6570            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6571            // are envelope_size bytes.
6572            let cur_offset: usize = (13 - 1) * envelope_size;
6573
6574            // Zero reserved fields.
6575            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6576
6577            // Safety:
6578            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6579            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6580            //   envelope_size bytes, there is always sufficient room.
6581            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6582                self.retries.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6583                encoder,
6584                offset + cur_offset,
6585                depth,
6586            )?;
6587
6588            _prev_end_offset = cur_offset + envelope_size;
6589            if 14 > max_ordinal {
6590                return Ok(());
6591            }
6592
6593            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6594            // are envelope_size bytes.
6595            let cur_offset: usize = (14 - 1) * envelope_size;
6596
6597            // Zero reserved fields.
6598            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6599
6600            // Safety:
6601            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6602            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6603            //   envelope_size bytes, there is always sufficient room.
6604            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6605                self.direct_max_retry_expiry
6606                    .as_ref()
6607                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6608                encoder,
6609                offset + cur_offset,
6610                depth,
6611            )?;
6612
6613            _prev_end_offset = cur_offset + envelope_size;
6614            if 15 > max_ordinal {
6615                return Ok(());
6616            }
6617
6618            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6619            // are envelope_size bytes.
6620            let cur_offset: usize = (15 - 1) * envelope_size;
6621
6622            // Zero reserved fields.
6623            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6624
6625            // Safety:
6626            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6627            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6628            //   envelope_size bytes, there is always sufficient room.
6629            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6630                self.indirect_max_retry_expiry
6631                    .as_ref()
6632                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6633                encoder,
6634                offset + cur_offset,
6635                depth,
6636            )?;
6637
6638            _prev_end_offset = cur_offset + envelope_size;
6639            if 16 > max_ordinal {
6640                return Ok(());
6641            }
6642
6643            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6644            // are envelope_size bytes.
6645            let cur_offset: usize = (16 - 1) * envelope_size;
6646
6647            // Zero reserved fields.
6648            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6649
6650            // Safety:
6651            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6652            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6653            //   envelope_size bytes, there is always sufficient room.
6654            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6655                self.dest_addr_filtered
6656                    .as_ref()
6657                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6658                encoder,
6659                offset + cur_offset,
6660                depth,
6661            )?;
6662
6663            _prev_end_offset = cur_offset + envelope_size;
6664            if 17 > max_ordinal {
6665                return Ok(());
6666            }
6667
6668            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6669            // are envelope_size bytes.
6670            let cur_offset: usize = (17 - 1) * envelope_size;
6671
6672            // Zero reserved fields.
6673            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6674
6675            // Safety:
6676            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6677            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6678            //   envelope_size bytes, there is always sufficient room.
6679            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6680                self.duplicated.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6681                encoder,
6682                offset + cur_offset,
6683                depth,
6684            )?;
6685
6686            _prev_end_offset = cur_offset + envelope_size;
6687            if 18 > max_ordinal {
6688                return Ok(());
6689            }
6690
6691            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6692            // are envelope_size bytes.
6693            let cur_offset: usize = (18 - 1) * envelope_size;
6694
6695            // Zero reserved fields.
6696            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6697
6698            // Safety:
6699            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6700            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6701            //   envelope_size bytes, there is always sufficient room.
6702            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6703                self.err_no_frame.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6704                encoder,
6705                offset + cur_offset,
6706                depth,
6707            )?;
6708
6709            _prev_end_offset = cur_offset + envelope_size;
6710            if 19 > max_ordinal {
6711                return Ok(());
6712            }
6713
6714            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6715            // are envelope_size bytes.
6716            let cur_offset: usize = (19 - 1) * envelope_size;
6717
6718            // Zero reserved fields.
6719            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6720
6721            // Safety:
6722            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6723            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6724            //   envelope_size bytes, there is always sufficient room.
6725            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6726                self.err_unknown_neighbor
6727                    .as_ref()
6728                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6729                encoder,
6730                offset + cur_offset,
6731                depth,
6732            )?;
6733
6734            _prev_end_offset = cur_offset + envelope_size;
6735            if 20 > max_ordinal {
6736                return Ok(());
6737            }
6738
6739            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6740            // are envelope_size bytes.
6741            let cur_offset: usize = (20 - 1) * envelope_size;
6742
6743            // Zero reserved fields.
6744            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6745
6746            // Safety:
6747            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6748            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6749            //   envelope_size bytes, there is always sufficient room.
6750            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6751                self.err_invalid_src_addr
6752                    .as_ref()
6753                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6754                encoder,
6755                offset + cur_offset,
6756                depth,
6757            )?;
6758
6759            _prev_end_offset = cur_offset + envelope_size;
6760            if 21 > max_ordinal {
6761                return Ok(());
6762            }
6763
6764            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6765            // are envelope_size bytes.
6766            let cur_offset: usize = (21 - 1) * envelope_size;
6767
6768            // Zero reserved fields.
6769            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6770
6771            // Safety:
6772            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6773            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6774            //   envelope_size bytes, there is always sufficient room.
6775            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6776                self.err_sec.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6777                encoder,
6778                offset + cur_offset,
6779                depth,
6780            )?;
6781
6782            _prev_end_offset = cur_offset + envelope_size;
6783            if 22 > max_ordinal {
6784                return Ok(());
6785            }
6786
6787            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6788            // are envelope_size bytes.
6789            let cur_offset: usize = (22 - 1) * envelope_size;
6790
6791            // Zero reserved fields.
6792            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6793
6794            // Safety:
6795            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6796            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6797            //   envelope_size bytes, there is always sufficient room.
6798            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6799                self.err_fcs.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6800                encoder,
6801                offset + cur_offset,
6802                depth,
6803            )?;
6804
6805            _prev_end_offset = cur_offset + envelope_size;
6806            if 23 > max_ordinal {
6807                return Ok(());
6808            }
6809
6810            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6811            // are envelope_size bytes.
6812            let cur_offset: usize = (23 - 1) * envelope_size;
6813
6814            // Zero reserved fields.
6815            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6816
6817            // Safety:
6818            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6819            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6820            //   envelope_size bytes, there is always sufficient room.
6821            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6822                self.err_cca.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6823                encoder,
6824                offset + cur_offset,
6825                depth,
6826            )?;
6827
6828            _prev_end_offset = cur_offset + envelope_size;
6829            if 24 > max_ordinal {
6830                return Ok(());
6831            }
6832
6833            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6834            // are envelope_size bytes.
6835            let cur_offset: usize = (24 - 1) * envelope_size;
6836
6837            // Zero reserved fields.
6838            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6839
6840            // Safety:
6841            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6842            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6843            //   envelope_size bytes, there is always sufficient room.
6844            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6845                self.err_abort.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6846                encoder,
6847                offset + cur_offset,
6848                depth,
6849            )?;
6850
6851            _prev_end_offset = cur_offset + envelope_size;
6852            if 25 > max_ordinal {
6853                return Ok(());
6854            }
6855
6856            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6857            // are envelope_size bytes.
6858            let cur_offset: usize = (25 - 1) * envelope_size;
6859
6860            // Zero reserved fields.
6861            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6862
6863            // Safety:
6864            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6865            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6866            //   envelope_size bytes, there is always sufficient room.
6867            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6868                self.err_busy_channel
6869                    .as_ref()
6870                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6871                encoder,
6872                offset + cur_offset,
6873                depth,
6874            )?;
6875
6876            _prev_end_offset = cur_offset + envelope_size;
6877            if 26 > max_ordinal {
6878                return Ok(());
6879            }
6880
6881            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6882            // are envelope_size bytes.
6883            let cur_offset: usize = (26 - 1) * envelope_size;
6884
6885            // Zero reserved fields.
6886            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6887
6888            // Safety:
6889            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6890            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6891            //   envelope_size bytes, there is always sufficient room.
6892            fidl::encoding::encode_in_envelope_optional::<u32, D>(
6893                self.err_other.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6894                encoder,
6895                offset + cur_offset,
6896                depth,
6897            )?;
6898
6899            _prev_end_offset = cur_offset + envelope_size;
6900
6901            Ok(())
6902        }
6903    }
6904
6905    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MacCounters {
6906        #[inline(always)]
6907        fn new_empty() -> Self {
6908            Self::default()
6909        }
6910
6911        unsafe fn decode(
6912            &mut self,
6913            decoder: &mut fidl::encoding::Decoder<'_, D>,
6914            offset: usize,
6915            mut depth: fidl::encoding::Depth,
6916        ) -> fidl::Result<()> {
6917            decoder.debug_check_bounds::<Self>(offset);
6918            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6919                None => return Err(fidl::Error::NotNullable),
6920                Some(len) => len,
6921            };
6922            // Calling decoder.out_of_line_offset(0) is not allowed.
6923            if len == 0 {
6924                return Ok(());
6925            };
6926            depth.increment()?;
6927            let envelope_size = 8;
6928            let bytes_len = len * envelope_size;
6929            let offset = decoder.out_of_line_offset(bytes_len)?;
6930            // Decode the envelope for each type.
6931            let mut _next_ordinal_to_read = 0;
6932            let mut next_offset = offset;
6933            let end_offset = offset + bytes_len;
6934            _next_ordinal_to_read += 1;
6935            if next_offset >= end_offset {
6936                return Ok(());
6937            }
6938
6939            // Decode unknown envelopes for gaps in ordinals.
6940            while _next_ordinal_to_read < 1 {
6941                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6942                _next_ordinal_to_read += 1;
6943                next_offset += envelope_size;
6944            }
6945
6946            let next_out_of_line = decoder.next_out_of_line();
6947            let handles_before = decoder.remaining_handles();
6948            if let Some((inlined, num_bytes, num_handles)) =
6949                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6950            {
6951                let member_inline_size =
6952                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6953                if inlined != (member_inline_size <= 4) {
6954                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6955                }
6956                let inner_offset;
6957                let mut inner_depth = depth.clone();
6958                if inlined {
6959                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6960                    inner_offset = next_offset;
6961                } else {
6962                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6963                    inner_depth.increment()?;
6964                }
6965                let val_ref = self.total.get_or_insert_with(|| fidl::new_empty!(u32, D));
6966                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6967                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6968                {
6969                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6970                }
6971                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6972                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6973                }
6974            }
6975
6976            next_offset += envelope_size;
6977            _next_ordinal_to_read += 1;
6978            if next_offset >= end_offset {
6979                return Ok(());
6980            }
6981
6982            // Decode unknown envelopes for gaps in ordinals.
6983            while _next_ordinal_to_read < 2 {
6984                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6985                _next_ordinal_to_read += 1;
6986                next_offset += envelope_size;
6987            }
6988
6989            let next_out_of_line = decoder.next_out_of_line();
6990            let handles_before = decoder.remaining_handles();
6991            if let Some((inlined, num_bytes, num_handles)) =
6992                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6993            {
6994                let member_inline_size =
6995                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6996                if inlined != (member_inline_size <= 4) {
6997                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6998                }
6999                let inner_offset;
7000                let mut inner_depth = depth.clone();
7001                if inlined {
7002                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7003                    inner_offset = next_offset;
7004                } else {
7005                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7006                    inner_depth.increment()?;
7007                }
7008                let val_ref = self.unicast.get_or_insert_with(|| fidl::new_empty!(u32, D));
7009                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7010                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7011                {
7012                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7013                }
7014                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7015                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7016                }
7017            }
7018
7019            next_offset += envelope_size;
7020            _next_ordinal_to_read += 1;
7021            if next_offset >= end_offset {
7022                return Ok(());
7023            }
7024
7025            // Decode unknown envelopes for gaps in ordinals.
7026            while _next_ordinal_to_read < 3 {
7027                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7028                _next_ordinal_to_read += 1;
7029                next_offset += envelope_size;
7030            }
7031
7032            let next_out_of_line = decoder.next_out_of_line();
7033            let handles_before = decoder.remaining_handles();
7034            if let Some((inlined, num_bytes, num_handles)) =
7035                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7036            {
7037                let member_inline_size =
7038                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7039                if inlined != (member_inline_size <= 4) {
7040                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7041                }
7042                let inner_offset;
7043                let mut inner_depth = depth.clone();
7044                if inlined {
7045                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7046                    inner_offset = next_offset;
7047                } else {
7048                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7049                    inner_depth.increment()?;
7050                }
7051                let val_ref = self.broadcast.get_or_insert_with(|| fidl::new_empty!(u32, D));
7052                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7053                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7054                {
7055                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7056                }
7057                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7058                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7059                }
7060            }
7061
7062            next_offset += envelope_size;
7063            _next_ordinal_to_read += 1;
7064            if next_offset >= end_offset {
7065                return Ok(());
7066            }
7067
7068            // Decode unknown envelopes for gaps in ordinals.
7069            while _next_ordinal_to_read < 4 {
7070                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7071                _next_ordinal_to_read += 1;
7072                next_offset += envelope_size;
7073            }
7074
7075            let next_out_of_line = decoder.next_out_of_line();
7076            let handles_before = decoder.remaining_handles();
7077            if let Some((inlined, num_bytes, num_handles)) =
7078                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7079            {
7080                let member_inline_size =
7081                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7082                if inlined != (member_inline_size <= 4) {
7083                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7084                }
7085                let inner_offset;
7086                let mut inner_depth = depth.clone();
7087                if inlined {
7088                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7089                    inner_offset = next_offset;
7090                } else {
7091                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7092                    inner_depth.increment()?;
7093                }
7094                let val_ref = self.ack_requested.get_or_insert_with(|| fidl::new_empty!(u32, D));
7095                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7096                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7097                {
7098                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7099                }
7100                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7101                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7102                }
7103            }
7104
7105            next_offset += envelope_size;
7106            _next_ordinal_to_read += 1;
7107            if next_offset >= end_offset {
7108                return Ok(());
7109            }
7110
7111            // Decode unknown envelopes for gaps in ordinals.
7112            while _next_ordinal_to_read < 5 {
7113                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7114                _next_ordinal_to_read += 1;
7115                next_offset += envelope_size;
7116            }
7117
7118            let next_out_of_line = decoder.next_out_of_line();
7119            let handles_before = decoder.remaining_handles();
7120            if let Some((inlined, num_bytes, num_handles)) =
7121                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7122            {
7123                let member_inline_size =
7124                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7125                if inlined != (member_inline_size <= 4) {
7126                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7127                }
7128                let inner_offset;
7129                let mut inner_depth = depth.clone();
7130                if inlined {
7131                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7132                    inner_offset = next_offset;
7133                } else {
7134                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7135                    inner_depth.increment()?;
7136                }
7137                let val_ref = self.acked.get_or_insert_with(|| fidl::new_empty!(u32, D));
7138                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7139                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7140                {
7141                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7142                }
7143                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7144                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7145                }
7146            }
7147
7148            next_offset += envelope_size;
7149            _next_ordinal_to_read += 1;
7150            if next_offset >= end_offset {
7151                return Ok(());
7152            }
7153
7154            // Decode unknown envelopes for gaps in ordinals.
7155            while _next_ordinal_to_read < 6 {
7156                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7157                _next_ordinal_to_read += 1;
7158                next_offset += envelope_size;
7159            }
7160
7161            let next_out_of_line = decoder.next_out_of_line();
7162            let handles_before = decoder.remaining_handles();
7163            if let Some((inlined, num_bytes, num_handles)) =
7164                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7165            {
7166                let member_inline_size =
7167                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7168                if inlined != (member_inline_size <= 4) {
7169                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7170                }
7171                let inner_offset;
7172                let mut inner_depth = depth.clone();
7173                if inlined {
7174                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7175                    inner_offset = next_offset;
7176                } else {
7177                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7178                    inner_depth.increment()?;
7179                }
7180                let val_ref = self.no_ack_requested.get_or_insert_with(|| fidl::new_empty!(u32, D));
7181                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7182                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7183                {
7184                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7185                }
7186                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7187                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7188                }
7189            }
7190
7191            next_offset += envelope_size;
7192            _next_ordinal_to_read += 1;
7193            if next_offset >= end_offset {
7194                return Ok(());
7195            }
7196
7197            // Decode unknown envelopes for gaps in ordinals.
7198            while _next_ordinal_to_read < 7 {
7199                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7200                _next_ordinal_to_read += 1;
7201                next_offset += envelope_size;
7202            }
7203
7204            let next_out_of_line = decoder.next_out_of_line();
7205            let handles_before = decoder.remaining_handles();
7206            if let Some((inlined, num_bytes, num_handles)) =
7207                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7208            {
7209                let member_inline_size =
7210                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7211                if inlined != (member_inline_size <= 4) {
7212                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7213                }
7214                let inner_offset;
7215                let mut inner_depth = depth.clone();
7216                if inlined {
7217                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7218                    inner_offset = next_offset;
7219                } else {
7220                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7221                    inner_depth.increment()?;
7222                }
7223                let val_ref = self.data.get_or_insert_with(|| fidl::new_empty!(u32, D));
7224                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7225                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7226                {
7227                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7228                }
7229                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7230                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7231                }
7232            }
7233
7234            next_offset += envelope_size;
7235            _next_ordinal_to_read += 1;
7236            if next_offset >= end_offset {
7237                return Ok(());
7238            }
7239
7240            // Decode unknown envelopes for gaps in ordinals.
7241            while _next_ordinal_to_read < 8 {
7242                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7243                _next_ordinal_to_read += 1;
7244                next_offset += envelope_size;
7245            }
7246
7247            let next_out_of_line = decoder.next_out_of_line();
7248            let handles_before = decoder.remaining_handles();
7249            if let Some((inlined, num_bytes, num_handles)) =
7250                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7251            {
7252                let member_inline_size =
7253                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7254                if inlined != (member_inline_size <= 4) {
7255                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7256                }
7257                let inner_offset;
7258                let mut inner_depth = depth.clone();
7259                if inlined {
7260                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7261                    inner_offset = next_offset;
7262                } else {
7263                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7264                    inner_depth.increment()?;
7265                }
7266                let val_ref = self.data_poll.get_or_insert_with(|| fidl::new_empty!(u32, D));
7267                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7268                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7269                {
7270                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7271                }
7272                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7273                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7274                }
7275            }
7276
7277            next_offset += envelope_size;
7278            _next_ordinal_to_read += 1;
7279            if next_offset >= end_offset {
7280                return Ok(());
7281            }
7282
7283            // Decode unknown envelopes for gaps in ordinals.
7284            while _next_ordinal_to_read < 9 {
7285                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7286                _next_ordinal_to_read += 1;
7287                next_offset += envelope_size;
7288            }
7289
7290            let next_out_of_line = decoder.next_out_of_line();
7291            let handles_before = decoder.remaining_handles();
7292            if let Some((inlined, num_bytes, num_handles)) =
7293                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7294            {
7295                let member_inline_size =
7296                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7297                if inlined != (member_inline_size <= 4) {
7298                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7299                }
7300                let inner_offset;
7301                let mut inner_depth = depth.clone();
7302                if inlined {
7303                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7304                    inner_offset = next_offset;
7305                } else {
7306                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7307                    inner_depth.increment()?;
7308                }
7309                let val_ref = self.beacon.get_or_insert_with(|| fidl::new_empty!(u32, D));
7310                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7311                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7312                {
7313                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7314                }
7315                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7316                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7317                }
7318            }
7319
7320            next_offset += envelope_size;
7321            _next_ordinal_to_read += 1;
7322            if next_offset >= end_offset {
7323                return Ok(());
7324            }
7325
7326            // Decode unknown envelopes for gaps in ordinals.
7327            while _next_ordinal_to_read < 10 {
7328                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7329                _next_ordinal_to_read += 1;
7330                next_offset += envelope_size;
7331            }
7332
7333            let next_out_of_line = decoder.next_out_of_line();
7334            let handles_before = decoder.remaining_handles();
7335            if let Some((inlined, num_bytes, num_handles)) =
7336                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7337            {
7338                let member_inline_size =
7339                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7340                if inlined != (member_inline_size <= 4) {
7341                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7342                }
7343                let inner_offset;
7344                let mut inner_depth = depth.clone();
7345                if inlined {
7346                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7347                    inner_offset = next_offset;
7348                } else {
7349                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7350                    inner_depth.increment()?;
7351                }
7352                let val_ref = self.beacon_request.get_or_insert_with(|| fidl::new_empty!(u32, D));
7353                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7354                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7355                {
7356                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7357                }
7358                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7359                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7360                }
7361            }
7362
7363            next_offset += envelope_size;
7364            _next_ordinal_to_read += 1;
7365            if next_offset >= end_offset {
7366                return Ok(());
7367            }
7368
7369            // Decode unknown envelopes for gaps in ordinals.
7370            while _next_ordinal_to_read < 11 {
7371                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7372                _next_ordinal_to_read += 1;
7373                next_offset += envelope_size;
7374            }
7375
7376            let next_out_of_line = decoder.next_out_of_line();
7377            let handles_before = decoder.remaining_handles();
7378            if let Some((inlined, num_bytes, num_handles)) =
7379                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7380            {
7381                let member_inline_size =
7382                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7383                if inlined != (member_inline_size <= 4) {
7384                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7385                }
7386                let inner_offset;
7387                let mut inner_depth = depth.clone();
7388                if inlined {
7389                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7390                    inner_offset = next_offset;
7391                } else {
7392                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7393                    inner_depth.increment()?;
7394                }
7395                let val_ref = self.other.get_or_insert_with(|| fidl::new_empty!(u32, D));
7396                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7397                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7398                {
7399                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7400                }
7401                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7402                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7403                }
7404            }
7405
7406            next_offset += envelope_size;
7407            _next_ordinal_to_read += 1;
7408            if next_offset >= end_offset {
7409                return Ok(());
7410            }
7411
7412            // Decode unknown envelopes for gaps in ordinals.
7413            while _next_ordinal_to_read < 12 {
7414                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7415                _next_ordinal_to_read += 1;
7416                next_offset += envelope_size;
7417            }
7418
7419            let next_out_of_line = decoder.next_out_of_line();
7420            let handles_before = decoder.remaining_handles();
7421            if let Some((inlined, num_bytes, num_handles)) =
7422                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7423            {
7424                let member_inline_size =
7425                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7426                if inlined != (member_inline_size <= 4) {
7427                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7428                }
7429                let inner_offset;
7430                let mut inner_depth = depth.clone();
7431                if inlined {
7432                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7433                    inner_offset = next_offset;
7434                } else {
7435                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7436                    inner_depth.increment()?;
7437                }
7438                let val_ref = self.address_filtered.get_or_insert_with(|| fidl::new_empty!(u32, D));
7439                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7440                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7441                {
7442                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7443                }
7444                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7445                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7446                }
7447            }
7448
7449            next_offset += envelope_size;
7450            _next_ordinal_to_read += 1;
7451            if next_offset >= end_offset {
7452                return Ok(());
7453            }
7454
7455            // Decode unknown envelopes for gaps in ordinals.
7456            while _next_ordinal_to_read < 13 {
7457                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7458                _next_ordinal_to_read += 1;
7459                next_offset += envelope_size;
7460            }
7461
7462            let next_out_of_line = decoder.next_out_of_line();
7463            let handles_before = decoder.remaining_handles();
7464            if let Some((inlined, num_bytes, num_handles)) =
7465                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7466            {
7467                let member_inline_size =
7468                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7469                if inlined != (member_inline_size <= 4) {
7470                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7471                }
7472                let inner_offset;
7473                let mut inner_depth = depth.clone();
7474                if inlined {
7475                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7476                    inner_offset = next_offset;
7477                } else {
7478                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7479                    inner_depth.increment()?;
7480                }
7481                let val_ref = self.retries.get_or_insert_with(|| fidl::new_empty!(u32, D));
7482                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7483                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7484                {
7485                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7486                }
7487                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7488                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7489                }
7490            }
7491
7492            next_offset += envelope_size;
7493            _next_ordinal_to_read += 1;
7494            if next_offset >= end_offset {
7495                return Ok(());
7496            }
7497
7498            // Decode unknown envelopes for gaps in ordinals.
7499            while _next_ordinal_to_read < 14 {
7500                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7501                _next_ordinal_to_read += 1;
7502                next_offset += envelope_size;
7503            }
7504
7505            let next_out_of_line = decoder.next_out_of_line();
7506            let handles_before = decoder.remaining_handles();
7507            if let Some((inlined, num_bytes, num_handles)) =
7508                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7509            {
7510                let member_inline_size =
7511                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7512                if inlined != (member_inline_size <= 4) {
7513                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7514                }
7515                let inner_offset;
7516                let mut inner_depth = depth.clone();
7517                if inlined {
7518                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7519                    inner_offset = next_offset;
7520                } else {
7521                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7522                    inner_depth.increment()?;
7523                }
7524                let val_ref =
7525                    self.direct_max_retry_expiry.get_or_insert_with(|| fidl::new_empty!(u32, D));
7526                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7527                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7528                {
7529                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7530                }
7531                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7532                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7533                }
7534            }
7535
7536            next_offset += envelope_size;
7537            _next_ordinal_to_read += 1;
7538            if next_offset >= end_offset {
7539                return Ok(());
7540            }
7541
7542            // Decode unknown envelopes for gaps in ordinals.
7543            while _next_ordinal_to_read < 15 {
7544                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7545                _next_ordinal_to_read += 1;
7546                next_offset += envelope_size;
7547            }
7548
7549            let next_out_of_line = decoder.next_out_of_line();
7550            let handles_before = decoder.remaining_handles();
7551            if let Some((inlined, num_bytes, num_handles)) =
7552                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7553            {
7554                let member_inline_size =
7555                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7556                if inlined != (member_inline_size <= 4) {
7557                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7558                }
7559                let inner_offset;
7560                let mut inner_depth = depth.clone();
7561                if inlined {
7562                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7563                    inner_offset = next_offset;
7564                } else {
7565                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7566                    inner_depth.increment()?;
7567                }
7568                let val_ref =
7569                    self.indirect_max_retry_expiry.get_or_insert_with(|| fidl::new_empty!(u32, D));
7570                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7571                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7572                {
7573                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7574                }
7575                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7576                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7577                }
7578            }
7579
7580            next_offset += envelope_size;
7581            _next_ordinal_to_read += 1;
7582            if next_offset >= end_offset {
7583                return Ok(());
7584            }
7585
7586            // Decode unknown envelopes for gaps in ordinals.
7587            while _next_ordinal_to_read < 16 {
7588                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7589                _next_ordinal_to_read += 1;
7590                next_offset += envelope_size;
7591            }
7592
7593            let next_out_of_line = decoder.next_out_of_line();
7594            let handles_before = decoder.remaining_handles();
7595            if let Some((inlined, num_bytes, num_handles)) =
7596                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7597            {
7598                let member_inline_size =
7599                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7600                if inlined != (member_inline_size <= 4) {
7601                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7602                }
7603                let inner_offset;
7604                let mut inner_depth = depth.clone();
7605                if inlined {
7606                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7607                    inner_offset = next_offset;
7608                } else {
7609                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7610                    inner_depth.increment()?;
7611                }
7612                let val_ref =
7613                    self.dest_addr_filtered.get_or_insert_with(|| fidl::new_empty!(u32, D));
7614                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7615                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7616                {
7617                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7618                }
7619                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7620                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7621                }
7622            }
7623
7624            next_offset += envelope_size;
7625            _next_ordinal_to_read += 1;
7626            if next_offset >= end_offset {
7627                return Ok(());
7628            }
7629
7630            // Decode unknown envelopes for gaps in ordinals.
7631            while _next_ordinal_to_read < 17 {
7632                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7633                _next_ordinal_to_read += 1;
7634                next_offset += envelope_size;
7635            }
7636
7637            let next_out_of_line = decoder.next_out_of_line();
7638            let handles_before = decoder.remaining_handles();
7639            if let Some((inlined, num_bytes, num_handles)) =
7640                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7641            {
7642                let member_inline_size =
7643                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7644                if inlined != (member_inline_size <= 4) {
7645                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7646                }
7647                let inner_offset;
7648                let mut inner_depth = depth.clone();
7649                if inlined {
7650                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7651                    inner_offset = next_offset;
7652                } else {
7653                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7654                    inner_depth.increment()?;
7655                }
7656                let val_ref = self.duplicated.get_or_insert_with(|| fidl::new_empty!(u32, D));
7657                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7658                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7659                {
7660                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7661                }
7662                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7663                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7664                }
7665            }
7666
7667            next_offset += envelope_size;
7668            _next_ordinal_to_read += 1;
7669            if next_offset >= end_offset {
7670                return Ok(());
7671            }
7672
7673            // Decode unknown envelopes for gaps in ordinals.
7674            while _next_ordinal_to_read < 18 {
7675                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7676                _next_ordinal_to_read += 1;
7677                next_offset += envelope_size;
7678            }
7679
7680            let next_out_of_line = decoder.next_out_of_line();
7681            let handles_before = decoder.remaining_handles();
7682            if let Some((inlined, num_bytes, num_handles)) =
7683                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7684            {
7685                let member_inline_size =
7686                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7687                if inlined != (member_inline_size <= 4) {
7688                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7689                }
7690                let inner_offset;
7691                let mut inner_depth = depth.clone();
7692                if inlined {
7693                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7694                    inner_offset = next_offset;
7695                } else {
7696                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7697                    inner_depth.increment()?;
7698                }
7699                let val_ref = self.err_no_frame.get_or_insert_with(|| fidl::new_empty!(u32, D));
7700                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7701                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7702                {
7703                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7704                }
7705                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7706                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7707                }
7708            }
7709
7710            next_offset += envelope_size;
7711            _next_ordinal_to_read += 1;
7712            if next_offset >= end_offset {
7713                return Ok(());
7714            }
7715
7716            // Decode unknown envelopes for gaps in ordinals.
7717            while _next_ordinal_to_read < 19 {
7718                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7719                _next_ordinal_to_read += 1;
7720                next_offset += envelope_size;
7721            }
7722
7723            let next_out_of_line = decoder.next_out_of_line();
7724            let handles_before = decoder.remaining_handles();
7725            if let Some((inlined, num_bytes, num_handles)) =
7726                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7727            {
7728                let member_inline_size =
7729                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7730                if inlined != (member_inline_size <= 4) {
7731                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7732                }
7733                let inner_offset;
7734                let mut inner_depth = depth.clone();
7735                if inlined {
7736                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7737                    inner_offset = next_offset;
7738                } else {
7739                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7740                    inner_depth.increment()?;
7741                }
7742                let val_ref =
7743                    self.err_unknown_neighbor.get_or_insert_with(|| fidl::new_empty!(u32, D));
7744                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7745                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7746                {
7747                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7748                }
7749                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7750                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7751                }
7752            }
7753
7754            next_offset += envelope_size;
7755            _next_ordinal_to_read += 1;
7756            if next_offset >= end_offset {
7757                return Ok(());
7758            }
7759
7760            // Decode unknown envelopes for gaps in ordinals.
7761            while _next_ordinal_to_read < 20 {
7762                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7763                _next_ordinal_to_read += 1;
7764                next_offset += envelope_size;
7765            }
7766
7767            let next_out_of_line = decoder.next_out_of_line();
7768            let handles_before = decoder.remaining_handles();
7769            if let Some((inlined, num_bytes, num_handles)) =
7770                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7771            {
7772                let member_inline_size =
7773                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7774                if inlined != (member_inline_size <= 4) {
7775                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7776                }
7777                let inner_offset;
7778                let mut inner_depth = depth.clone();
7779                if inlined {
7780                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7781                    inner_offset = next_offset;
7782                } else {
7783                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7784                    inner_depth.increment()?;
7785                }
7786                let val_ref =
7787                    self.err_invalid_src_addr.get_or_insert_with(|| fidl::new_empty!(u32, D));
7788                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7789                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7790                {
7791                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7792                }
7793                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7794                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7795                }
7796            }
7797
7798            next_offset += envelope_size;
7799            _next_ordinal_to_read += 1;
7800            if next_offset >= end_offset {
7801                return Ok(());
7802            }
7803
7804            // Decode unknown envelopes for gaps in ordinals.
7805            while _next_ordinal_to_read < 21 {
7806                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7807                _next_ordinal_to_read += 1;
7808                next_offset += envelope_size;
7809            }
7810
7811            let next_out_of_line = decoder.next_out_of_line();
7812            let handles_before = decoder.remaining_handles();
7813            if let Some((inlined, num_bytes, num_handles)) =
7814                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7815            {
7816                let member_inline_size =
7817                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7818                if inlined != (member_inline_size <= 4) {
7819                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7820                }
7821                let inner_offset;
7822                let mut inner_depth = depth.clone();
7823                if inlined {
7824                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7825                    inner_offset = next_offset;
7826                } else {
7827                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7828                    inner_depth.increment()?;
7829                }
7830                let val_ref = self.err_sec.get_or_insert_with(|| fidl::new_empty!(u32, D));
7831                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7832                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7833                {
7834                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7835                }
7836                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7837                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7838                }
7839            }
7840
7841            next_offset += envelope_size;
7842            _next_ordinal_to_read += 1;
7843            if next_offset >= end_offset {
7844                return Ok(());
7845            }
7846
7847            // Decode unknown envelopes for gaps in ordinals.
7848            while _next_ordinal_to_read < 22 {
7849                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7850                _next_ordinal_to_read += 1;
7851                next_offset += envelope_size;
7852            }
7853
7854            let next_out_of_line = decoder.next_out_of_line();
7855            let handles_before = decoder.remaining_handles();
7856            if let Some((inlined, num_bytes, num_handles)) =
7857                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7858            {
7859                let member_inline_size =
7860                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7861                if inlined != (member_inline_size <= 4) {
7862                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7863                }
7864                let inner_offset;
7865                let mut inner_depth = depth.clone();
7866                if inlined {
7867                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7868                    inner_offset = next_offset;
7869                } else {
7870                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7871                    inner_depth.increment()?;
7872                }
7873                let val_ref = self.err_fcs.get_or_insert_with(|| fidl::new_empty!(u32, D));
7874                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7875                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7876                {
7877                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7878                }
7879                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7880                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7881                }
7882            }
7883
7884            next_offset += envelope_size;
7885            _next_ordinal_to_read += 1;
7886            if next_offset >= end_offset {
7887                return Ok(());
7888            }
7889
7890            // Decode unknown envelopes for gaps in ordinals.
7891            while _next_ordinal_to_read < 23 {
7892                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7893                _next_ordinal_to_read += 1;
7894                next_offset += envelope_size;
7895            }
7896
7897            let next_out_of_line = decoder.next_out_of_line();
7898            let handles_before = decoder.remaining_handles();
7899            if let Some((inlined, num_bytes, num_handles)) =
7900                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7901            {
7902                let member_inline_size =
7903                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7904                if inlined != (member_inline_size <= 4) {
7905                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7906                }
7907                let inner_offset;
7908                let mut inner_depth = depth.clone();
7909                if inlined {
7910                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7911                    inner_offset = next_offset;
7912                } else {
7913                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7914                    inner_depth.increment()?;
7915                }
7916                let val_ref = self.err_cca.get_or_insert_with(|| fidl::new_empty!(u32, D));
7917                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7918                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7919                {
7920                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7921                }
7922                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7923                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7924                }
7925            }
7926
7927            next_offset += envelope_size;
7928            _next_ordinal_to_read += 1;
7929            if next_offset >= end_offset {
7930                return Ok(());
7931            }
7932
7933            // Decode unknown envelopes for gaps in ordinals.
7934            while _next_ordinal_to_read < 24 {
7935                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7936                _next_ordinal_to_read += 1;
7937                next_offset += envelope_size;
7938            }
7939
7940            let next_out_of_line = decoder.next_out_of_line();
7941            let handles_before = decoder.remaining_handles();
7942            if let Some((inlined, num_bytes, num_handles)) =
7943                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7944            {
7945                let member_inline_size =
7946                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7947                if inlined != (member_inline_size <= 4) {
7948                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7949                }
7950                let inner_offset;
7951                let mut inner_depth = depth.clone();
7952                if inlined {
7953                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7954                    inner_offset = next_offset;
7955                } else {
7956                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7957                    inner_depth.increment()?;
7958                }
7959                let val_ref = self.err_abort.get_or_insert_with(|| fidl::new_empty!(u32, D));
7960                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7961                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7962                {
7963                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7964                }
7965                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7966                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7967                }
7968            }
7969
7970            next_offset += envelope_size;
7971            _next_ordinal_to_read += 1;
7972            if next_offset >= end_offset {
7973                return Ok(());
7974            }
7975
7976            // Decode unknown envelopes for gaps in ordinals.
7977            while _next_ordinal_to_read < 25 {
7978                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7979                _next_ordinal_to_read += 1;
7980                next_offset += envelope_size;
7981            }
7982
7983            let next_out_of_line = decoder.next_out_of_line();
7984            let handles_before = decoder.remaining_handles();
7985            if let Some((inlined, num_bytes, num_handles)) =
7986                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7987            {
7988                let member_inline_size =
7989                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7990                if inlined != (member_inline_size <= 4) {
7991                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7992                }
7993                let inner_offset;
7994                let mut inner_depth = depth.clone();
7995                if inlined {
7996                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7997                    inner_offset = next_offset;
7998                } else {
7999                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8000                    inner_depth.increment()?;
8001                }
8002                let val_ref = self.err_busy_channel.get_or_insert_with(|| fidl::new_empty!(u32, D));
8003                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
8004                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8005                {
8006                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8007                }
8008                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8009                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8010                }
8011            }
8012
8013            next_offset += envelope_size;
8014            _next_ordinal_to_read += 1;
8015            if next_offset >= end_offset {
8016                return Ok(());
8017            }
8018
8019            // Decode unknown envelopes for gaps in ordinals.
8020            while _next_ordinal_to_read < 26 {
8021                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8022                _next_ordinal_to_read += 1;
8023                next_offset += envelope_size;
8024            }
8025
8026            let next_out_of_line = decoder.next_out_of_line();
8027            let handles_before = decoder.remaining_handles();
8028            if let Some((inlined, num_bytes, num_handles)) =
8029                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8030            {
8031                let member_inline_size =
8032                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8033                if inlined != (member_inline_size <= 4) {
8034                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8035                }
8036                let inner_offset;
8037                let mut inner_depth = depth.clone();
8038                if inlined {
8039                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8040                    inner_offset = next_offset;
8041                } else {
8042                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8043                    inner_depth.increment()?;
8044                }
8045                let val_ref = self.err_other.get_or_insert_with(|| fidl::new_empty!(u32, D));
8046                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
8047                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8048                {
8049                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8050                }
8051                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8052                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8053                }
8054            }
8055
8056            next_offset += envelope_size;
8057
8058            // Decode the remaining unknown envelopes.
8059            while next_offset < end_offset {
8060                _next_ordinal_to_read += 1;
8061                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8062                next_offset += envelope_size;
8063            }
8064
8065            Ok(())
8066        }
8067    }
8068
8069    impl fidl::encoding::ValueTypeMarker for Credential {
8070        type Borrowed<'a> = &'a Self;
8071        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8072            value
8073        }
8074    }
8075
8076    unsafe impl fidl::encoding::TypeMarker for Credential {
8077        type Owned = Self;
8078
8079        #[inline(always)]
8080        fn inline_align(_context: fidl::encoding::Context) -> usize {
8081            8
8082        }
8083
8084        #[inline(always)]
8085        fn inline_size(_context: fidl::encoding::Context) -> usize {
8086            16
8087        }
8088    }
8089
8090    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Credential, D>
8091        for &Credential
8092    {
8093        #[inline]
8094        unsafe fn encode(
8095            self,
8096            encoder: &mut fidl::encoding::Encoder<'_, D>,
8097            offset: usize,
8098            _depth: fidl::encoding::Depth,
8099        ) -> fidl::Result<()> {
8100            encoder.debug_check_bounds::<Credential>(offset);
8101            encoder.write_num::<u64>(self.ordinal(), offset);
8102            match self {
8103                Credential::NetworkKey(ref val) => {
8104                    fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<u8, 32>, D>(
8105                        <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(
8106                            val,
8107                        ),
8108                        encoder,
8109                        offset + 8,
8110                        _depth,
8111                    )
8112                }
8113                Credential::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
8114            }
8115        }
8116    }
8117
8118    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Credential {
8119        #[inline(always)]
8120        fn new_empty() -> Self {
8121            Self::__SourceBreaking { unknown_ordinal: 0 }
8122        }
8123
8124        #[inline]
8125        unsafe fn decode(
8126            &mut self,
8127            decoder: &mut fidl::encoding::Decoder<'_, D>,
8128            offset: usize,
8129            mut depth: fidl::encoding::Depth,
8130        ) -> fidl::Result<()> {
8131            decoder.debug_check_bounds::<Self>(offset);
8132            #[allow(unused_variables)]
8133            let next_out_of_line = decoder.next_out_of_line();
8134            let handles_before = decoder.remaining_handles();
8135            let (ordinal, inlined, num_bytes, num_handles) =
8136                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
8137
8138            let member_inline_size = match ordinal {
8139                1 => <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
8140                    decoder.context,
8141                ),
8142                0 => return Err(fidl::Error::UnknownUnionTag),
8143                _ => num_bytes as usize,
8144            };
8145
8146            if inlined != (member_inline_size <= 4) {
8147                return Err(fidl::Error::InvalidInlineBitInEnvelope);
8148            }
8149            let _inner_offset;
8150            if inlined {
8151                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
8152                _inner_offset = offset + 8;
8153            } else {
8154                depth.increment()?;
8155                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8156            }
8157            match ordinal {
8158                1 => {
8159                    #[allow(irrefutable_let_patterns)]
8160                    if let Credential::NetworkKey(_) = self {
8161                        // Do nothing, read the value into the object
8162                    } else {
8163                        // Initialize `self` to the right variant
8164                        *self = Credential::NetworkKey(
8165                            fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D),
8166                        );
8167                    }
8168                    #[allow(irrefutable_let_patterns)]
8169                    if let Credential::NetworkKey(ref mut val) = self {
8170                        fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val, decoder, _inner_offset, depth)?;
8171                    } else {
8172                        unreachable!()
8173                    }
8174                }
8175                #[allow(deprecated)]
8176                ordinal => {
8177                    for _ in 0..num_handles {
8178                        decoder.drop_next_handle()?;
8179                    }
8180                    *self = Credential::__SourceBreaking { unknown_ordinal: ordinal };
8181                }
8182            }
8183            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8184                return Err(fidl::Error::InvalidNumBytesInEnvelope);
8185            }
8186            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8187                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8188            }
8189            Ok(())
8190        }
8191    }
8192}