Skip to main content

fidl_fuchsia_bluetooth_le__common/
fidl_fuchsia_bluetooth_le__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/// An identifier for a service that accepts connection-oriented channel
12/// connections. Referred to as a (simplified) protocol/service multiplexer
13/// in the Bluetooth specification.
14pub type Psm = u16;
15
16pub const MAX_BROADCAST_NAME_OCTETS: u8 = 128;
17
18/// An ISO data packet can be no larger than the maximum 12-bit unsigned integer.
19/// See Bluetooth Core Spec Version 6.0 | Vol 4, Part E, Section 5.4.5
20pub const MAX_ISO_PACKET_SIZE: u16 = 4095;
21
22pub const MAX_MANUFACTURER_DATA_LENGTH: u8 = 252;
23
24pub const MAX_SERVICE_DATA_LENGTH: u8 = 252;
25
26/// The maximum number of connected isochronous streams that can be added to
27/// a connected isochronous group.
28pub const MAX_STREAMS_IN_GROUP: u8 = 31;
29
30pub const MAX_SUBEVENTS: u8 = 128;
31
32pub const MAX_URI_LENGTH: u16 = 278;
33
34/// A client can indicate the transmission rate of advertising packets by specifying a mode. The
35/// mode provides a hint to the system when configuring the controller with advertising interval and
36/// window parameters.
37///
38/// The mode affects how quickly a scanner or central is able to discover the peripheral; however it
39/// can have an adverse effect on power consumption. While the system will try to honor a client's
40/// request, it is not guaranteed to do so.
41#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
42#[repr(u8)]
43pub enum AdvertisingModeHint {
44    /// Advertise with a very short interval and window for fast discovery at the cost of higher
45    /// power consumption. This corresponds to a 30-60ms interval on the 1M PHYs and 90-180ms on the
46    /// coded PHY.
47    VeryFast = 1,
48    /// Advertise with a short interval and window that uses less power than `VERY_FAST`.
49    /// This corresponds to a 100-150ms interval on the 1M PHYs and 300-450ms on the coded PHY.
50    Fast = 2,
51    /// Advertise with a moderate interval and window. This corresponds to 1-1.2s on the 1M PHYs and 3s
52    /// on the coded PHY.
53    Slow = 3,
54}
55
56impl AdvertisingModeHint {
57    #[inline]
58    pub fn from_primitive(prim: u8) -> Option<Self> {
59        match prim {
60            1 => Some(Self::VeryFast),
61            2 => Some(Self::Fast),
62            3 => Some(Self::Slow),
63            _ => None,
64        }
65    }
66
67    #[inline]
68    pub const fn into_primitive(self) -> u8 {
69        self as u8
70    }
71}
72
73#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
74#[repr(u32)]
75pub enum CentralError {
76    /// The request was aborted.
77    Aborted = 1,
78    /// The request is already in progress.
79    InProgress = 2,
80    /// The provided parameters are invalid.
81    InvalidParameters = 3,
82    /// Advertising could not be initiated due to a hardware or system error.
83    Failed = 4,
84}
85
86impl CentralError {
87    #[inline]
88    pub fn from_primitive(prim: u32) -> Option<Self> {
89        match prim {
90            1 => Some(Self::Aborted),
91            2 => Some(Self::InProgress),
92            3 => Some(Self::InvalidParameters),
93            4 => Some(Self::Failed),
94            _ => None,
95        }
96    }
97
98    #[inline]
99    pub const fn into_primitive(self) -> u32 {
100        self as u32
101    }
102}
103
104#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
105#[repr(u32)]
106pub enum CigFramingOptions {
107    Unframed = 0,
108    Framed = 1,
109}
110
111impl CigFramingOptions {
112    #[inline]
113    pub fn from_primitive(prim: u32) -> Option<Self> {
114        match prim {
115            0 => Some(Self::Unframed),
116            1 => Some(Self::Framed),
117            _ => None,
118        }
119    }
120
121    #[inline]
122    pub const fn into_primitive(self) -> u32 {
123        self as u32
124    }
125}
126
127#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
128pub enum CigPacking {
129    Sequential,
130    Interleaved,
131    #[doc(hidden)]
132    __SourceBreaking {
133        unknown_ordinal: u32,
134    },
135}
136
137/// Pattern that matches an unknown `CigPacking` member.
138#[macro_export]
139macro_rules! CigPackingUnknown {
140    () => {
141        _
142    };
143}
144
145impl CigPacking {
146    #[inline]
147    pub fn from_primitive(prim: u32) -> Option<Self> {
148        match prim {
149            0 => Some(Self::Sequential),
150            1 => Some(Self::Interleaved),
151            _ => None,
152        }
153    }
154
155    #[inline]
156    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
157        match prim {
158            0 => Self::Sequential,
159            1 => Self::Interleaved,
160            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
161        }
162    }
163
164    #[inline]
165    pub fn unknown() -> Self {
166        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
167    }
168
169    #[inline]
170    pub const fn into_primitive(self) -> u32 {
171        match self {
172            Self::Sequential => 0,
173            Self::Interleaved => 1,
174            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
175        }
176    }
177
178    #[inline]
179    pub fn is_unknown(&self) -> bool {
180        match self {
181            Self::__SourceBreaking { unknown_ordinal: _ } => true,
182            _ => false,
183        }
184    }
185}
186
187#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
188pub enum CreateCigError {
189    /// The CIG could not be created because an unknown or unspecified error occurred unrelated
190    /// to the other errors defined below.
191    Unknown,
192    /// The CIG could not be created because it would exceed available resources.
193    NotEnoughResources,
194    /// The CIG could not be created because the combination of parameters supplied to CreateCig
195    /// for one or more CISes are invalid.
196    InvalidCisParameters,
197    #[doc(hidden)]
198    __SourceBreaking { unknown_ordinal: u32 },
199}
200
201/// Pattern that matches an unknown `CreateCigError` member.
202#[macro_export]
203macro_rules! CreateCigErrorUnknown {
204    () => {
205        _
206    };
207}
208
209impl CreateCigError {
210    #[inline]
211    pub fn from_primitive(prim: u32) -> Option<Self> {
212        match prim {
213            1 => Some(Self::Unknown),
214            2 => Some(Self::NotEnoughResources),
215            3 => Some(Self::InvalidCisParameters),
216            _ => None,
217        }
218    }
219
220    #[inline]
221    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
222        match prim {
223            1 => Self::Unknown,
224            2 => Self::NotEnoughResources,
225            3 => Self::InvalidCisParameters,
226            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
227        }
228    }
229
230    #[inline]
231    pub fn unknown() -> Self {
232        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
233    }
234
235    #[inline]
236    pub const fn into_primitive(self) -> u32 {
237        match self {
238            Self::Unknown => 1,
239            Self::NotEnoughResources => 2,
240            Self::InvalidCisParameters => 3,
241            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
242        }
243    }
244
245    #[inline]
246    pub fn is_unknown(&self) -> bool {
247        match self {
248            Self::__SourceBreaking { unknown_ordinal: _ } => true,
249            _ => false,
250        }
251    }
252}
253
254#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
255pub enum EstablishStreamsError {
256    /// The controller does not support a CIS with the parameters specified for it.
257    NotSupported,
258    /// The same CIS was specified multiple times in a call.
259    DuplicateCis,
260    /// One or more CISes specified already exist.
261    CisAlreadyEstablished,
262    /// One or more of the peers specified in the CIS parameters are not connected.
263    PeerNotConnected,
264    /// Expected peers were provided at CIG creation, and one or more peers
265    /// requested did not satisfy the parameters of the CIG decided by that
266    /// set.
267    PeerParametersOutOfRange,
268    #[doc(hidden)]
269    __SourceBreaking { unknown_ordinal: u32 },
270}
271
272/// Pattern that matches an unknown `EstablishStreamsError` member.
273#[macro_export]
274macro_rules! EstablishStreamsErrorUnknown {
275    () => {
276        _
277    };
278}
279
280impl EstablishStreamsError {
281    #[inline]
282    pub fn from_primitive(prim: u32) -> Option<Self> {
283        match prim {
284            1 => Some(Self::NotSupported),
285            2 => Some(Self::DuplicateCis),
286            3 => Some(Self::CisAlreadyEstablished),
287            4 => Some(Self::PeerNotConnected),
288            5 => Some(Self::PeerParametersOutOfRange),
289            _ => None,
290        }
291    }
292
293    #[inline]
294    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
295        match prim {
296            1 => Self::NotSupported,
297            2 => Self::DuplicateCis,
298            3 => Self::CisAlreadyEstablished,
299            4 => Self::PeerNotConnected,
300            5 => Self::PeerParametersOutOfRange,
301            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
302        }
303    }
304
305    #[inline]
306    pub fn unknown() -> Self {
307        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
308    }
309
310    #[inline]
311    pub const fn into_primitive(self) -> u32 {
312        match self {
313            Self::NotSupported => 1,
314            Self::DuplicateCis => 2,
315            Self::CisAlreadyEstablished => 3,
316            Self::PeerNotConnected => 4,
317            Self::PeerParametersOutOfRange => 5,
318            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
319        }
320    }
321
322    #[inline]
323    pub fn is_unknown(&self) -> bool {
324        match self {
325            Self::__SourceBreaking { unknown_ordinal: _ } => true,
326            _ => false,
327        }
328    }
329}
330
331/// Flags indicating validity of data received from an isochronous channel.
332#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
333#[repr(u8)]
334pub enum IsoPacketStatusFlag {
335    /// Valid data. The complete SDU was received correctly.
336    ValidData = 0,
337    /// Possibly invalid data. One ore more of the fragments received may contain errors or part of
338    /// the packet may be missing.
339    DataWithPossibleErrors = 1,
340    /// Parts of the packet were not received correctly.
341    LostData = 2,
342}
343
344impl IsoPacketStatusFlag {
345    #[inline]
346    pub fn from_primitive(prim: u8) -> Option<Self> {
347        match prim {
348            0 => Some(Self::ValidData),
349            1 => Some(Self::DataWithPossibleErrors),
350            2 => Some(Self::LostData),
351            _ => None,
352        }
353    }
354
355    #[inline]
356    pub const fn into_primitive(self) -> u8 {
357        self as u8
358    }
359}
360
361#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
362pub enum PeriodicAdvertisingSyncError {
363    InitialSynchronizationFailed,
364    SynchronizationLost,
365    NotSupportedLocal,
366    NotSupportedRemote,
367    #[doc(hidden)]
368    __SourceBreaking {
369        unknown_ordinal: u32,
370    },
371}
372
373/// Pattern that matches an unknown `PeriodicAdvertisingSyncError` member.
374#[macro_export]
375macro_rules! PeriodicAdvertisingSyncErrorUnknown {
376    () => {
377        _
378    };
379}
380
381impl PeriodicAdvertisingSyncError {
382    #[inline]
383    pub fn from_primitive(prim: u32) -> Option<Self> {
384        match prim {
385            0 => Some(Self::InitialSynchronizationFailed),
386            1 => Some(Self::SynchronizationLost),
387            2 => Some(Self::NotSupportedLocal),
388            3 => Some(Self::NotSupportedRemote),
389            _ => None,
390        }
391    }
392
393    #[inline]
394    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
395        match prim {
396            0 => Self::InitialSynchronizationFailed,
397            1 => Self::SynchronizationLost,
398            2 => Self::NotSupportedLocal,
399            3 => Self::NotSupportedRemote,
400            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
401        }
402    }
403
404    #[inline]
405    pub fn unknown() -> Self {
406        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
407    }
408
409    #[inline]
410    pub const fn into_primitive(self) -> u32 {
411        match self {
412            Self::InitialSynchronizationFailed => 0,
413            Self::SynchronizationLost => 1,
414            Self::NotSupportedLocal => 2,
415            Self::NotSupportedRemote => 3,
416            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
417        }
418    }
419
420    #[inline]
421    pub fn is_unknown(&self) -> bool {
422        match self {
423            Self::__SourceBreaking { unknown_ordinal: _ } => true,
424            _ => false,
425        }
426    }
427}
428
429#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
430pub enum PeriodicAdvertisingSyncTransferError {
431    Failed,
432    /// The `PeriodicAdvertisingSyncId` does not correspond to an active `PeriodicAdvertisingSync`.
433    InvalidSyncId,
434    TransferAlreadyPending,
435    NotSupportedLocal,
436    NotSupportedRemote,
437    #[doc(hidden)]
438    __SourceBreaking {
439        unknown_ordinal: u32,
440    },
441}
442
443/// Pattern that matches an unknown `PeriodicAdvertisingSyncTransferError` member.
444#[macro_export]
445macro_rules! PeriodicAdvertisingSyncTransferErrorUnknown {
446    () => {
447        _
448    };
449}
450
451impl PeriodicAdvertisingSyncTransferError {
452    #[inline]
453    pub fn from_primitive(prim: u32) -> Option<Self> {
454        match prim {
455            0 => Some(Self::Failed),
456            1 => Some(Self::InvalidSyncId),
457            2 => Some(Self::TransferAlreadyPending),
458            3 => Some(Self::NotSupportedLocal),
459            4 => Some(Self::NotSupportedRemote),
460            _ => None,
461        }
462    }
463
464    #[inline]
465    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
466        match prim {
467            0 => Self::Failed,
468            1 => Self::InvalidSyncId,
469            2 => Self::TransferAlreadyPending,
470            3 => Self::NotSupportedLocal,
471            4 => Self::NotSupportedRemote,
472            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
473        }
474    }
475
476    #[inline]
477    pub fn unknown() -> Self {
478        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
479    }
480
481    #[inline]
482    pub const fn into_primitive(self) -> u32 {
483        match self {
484            Self::Failed => 0,
485            Self::InvalidSyncId => 1,
486            Self::TransferAlreadyPending => 2,
487            Self::NotSupportedLocal => 3,
488            Self::NotSupportedRemote => 4,
489            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
490        }
491    }
492
493    #[inline]
494    pub fn is_unknown(&self) -> bool {
495        match self {
496            Self::__SourceBreaking { unknown_ordinal: _ } => true,
497            _ => false,
498        }
499    }
500}
501
502#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
503#[repr(u32)]
504pub enum PeripheralError {
505    /// The operation or parameters requested are not supported on the current hardware.
506    NotSupported = 1,
507    /// The provided advertising data exceeds the maximum allowed length when encoded.
508    AdvertisingDataTooLong = 2,
509    /// The provided scan response data exceeds the maximum allowed length when encoded.
510    ScanResponseDataTooLong = 3,
511    /// The requested parameters are invalid.
512    InvalidParameters = 4,
513    /// The request to start advertising was aborted, for example by issuing a new request with new
514    /// parameters.
515    Aborted = 5,
516    /// Advertising could not be initiated due to a hardware or system error.
517    Failed = 6,
518}
519
520impl PeripheralError {
521    #[inline]
522    pub fn from_primitive(prim: u32) -> Option<Self> {
523        match prim {
524            1 => Some(Self::NotSupported),
525            2 => Some(Self::AdvertisingDataTooLong),
526            3 => Some(Self::ScanResponseDataTooLong),
527            4 => Some(Self::InvalidParameters),
528            5 => Some(Self::Aborted),
529            6 => Some(Self::Failed),
530            _ => None,
531        }
532    }
533
534    #[inline]
535    pub const fn into_primitive(self) -> u32 {
536        self as u32
537    }
538}
539
540/// The physical layer configuration for LE radio transmissions.
541#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
542pub enum PhysicalLayer {
543    /// The 1 Megabit PHY is the original and default PHY with balanced throughput and range.
544    Le1M,
545    /// The 2 Megabit PHY supports increased throughput at
546    /// the cost of a reduced range.
547    Le2M,
548    /// The Coded PHY increases the maximum range by using enhanced error
549    /// detection and correction at the cost of reduced throughput.
550    LeCoded,
551    #[doc(hidden)]
552    __SourceBreaking { unknown_ordinal: u8 },
553}
554
555/// Pattern that matches an unknown `PhysicalLayer` member.
556#[macro_export]
557macro_rules! PhysicalLayerUnknown {
558    () => {
559        _
560    };
561}
562
563impl PhysicalLayer {
564    #[inline]
565    pub fn from_primitive(prim: u8) -> Option<Self> {
566        match prim {
567            1 => Some(Self::Le1M),
568            2 => Some(Self::Le2M),
569            3 => Some(Self::LeCoded),
570            _ => None,
571        }
572    }
573
574    #[inline]
575    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
576        match prim {
577            1 => Self::Le1M,
578            2 => Self::Le2M,
579            3 => Self::LeCoded,
580            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
581        }
582    }
583
584    #[inline]
585    pub fn unknown() -> Self {
586        Self::__SourceBreaking { unknown_ordinal: 0xff }
587    }
588
589    #[inline]
590    pub const fn into_primitive(self) -> u8 {
591        match self {
592            Self::Le1M => 1,
593            Self::Le2M => 2,
594            Self::LeCoded => 3,
595            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
596        }
597    }
598
599    #[inline]
600    pub fn is_unknown(&self) -> bool {
601        match self {
602            Self::__SourceBreaking { unknown_ordinal: _ } => true,
603            _ => false,
604        }
605    }
606}
607
608/// Represents advertising and scan response data advertised by a broadcaster or peripheral.
609#[derive(Clone, Debug, PartialEq)]
610pub struct AdvertisingDataDeprecated {
611    /// Name of the device.
612    pub name: Option<String>,
613    /// The radio transmission power level reported in the advertisement.
614    pub tx_power_level: Option<Box<fidl_fuchsia_bluetooth__common::Int8>>,
615    /// The appearance reported in the advertisemet.
616    pub appearance: Option<Box<fidl_fuchsia_bluetooth__common::UInt16>>,
617    /// List of service UUIDs reported in the advertisement.
618    pub service_uuids: Option<Vec<String>>,
619    /// Service data included in the advertisement.
620    pub service_data: Option<Vec<ServiceDataEntry>>,
621    /// Manufacturer specific data entries.
622    pub manufacturer_specific_data: Option<Vec<ManufacturerSpecificDataEntry>>,
623    /// Service UUIDs that were solicited in the advertisement. Peripherals can invite centrals that
624    /// expose certain services to connect to them using service solicitation.
625    pub solicited_service_uuids: Option<Vec<String>>,
626    /// URIs included in the advertising packet.
627    /// These are full URIs (they are encoded/decoded automatically)
628    pub uris: Option<Vec<String>>,
629}
630
631impl fidl::Persistable for AdvertisingDataDeprecated {}
632
633#[derive(Clone, Debug, PartialEq)]
634pub struct CentralConnectPeripheralResponse {
635    pub status: fidl_fuchsia_bluetooth__common::Status,
636}
637
638impl fidl::Persistable for CentralConnectPeripheralResponse {}
639
640#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
641pub struct CentralDisconnectPeripheralRequest {
642    pub identifier: String,
643}
644
645impl fidl::Persistable for CentralDisconnectPeripheralRequest {}
646
647#[derive(Clone, Debug, PartialEq)]
648pub struct CentralDisconnectPeripheralResponse {
649    pub status: fidl_fuchsia_bluetooth__common::Status,
650}
651
652impl fidl::Persistable for CentralDisconnectPeripheralResponse {}
653
654#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
655pub struct CentralGetPeripheralRequest {
656    pub identifier: String,
657}
658
659impl fidl::Persistable for CentralGetPeripheralRequest {}
660
661#[derive(Clone, Debug, PartialEq)]
662pub struct CentralGetPeripheralResponse {
663    pub peripheral: Option<Box<RemoteDevice>>,
664}
665
666impl fidl::Persistable for CentralGetPeripheralResponse {}
667
668#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
669pub struct CentralGetPeripheralsRequest {
670    pub service_uuids: Option<Vec<String>>,
671}
672
673impl fidl::Persistable for CentralGetPeripheralsRequest {}
674
675#[derive(Clone, Debug, PartialEq)]
676pub struct CentralGetPeripheralsResponse {
677    pub peripherals: Vec<RemoteDevice>,
678}
679
680impl fidl::Persistable for CentralGetPeripheralsResponse {}
681
682#[derive(Clone, Debug, PartialEq)]
683pub struct CentralOnDeviceDiscoveredRequest {
684    pub device: RemoteDevice,
685}
686
687impl fidl::Persistable for CentralOnDeviceDiscoveredRequest {}
688
689#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
690pub struct CentralOnPeripheralDisconnectedRequest {
691    pub identifier: String,
692}
693
694impl fidl::Persistable for CentralOnPeripheralDisconnectedRequest {}
695
696#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
697pub struct CentralOnScanStateChangedRequest {
698    pub scanning: bool,
699}
700
701impl fidl::Persistable for CentralOnScanStateChangedRequest {}
702
703#[derive(Clone, Debug, PartialEq)]
704pub struct CentralStartScanRequest {
705    pub filter: Option<Box<ScanFilter>>,
706}
707
708impl fidl::Persistable for CentralStartScanRequest {}
709
710#[derive(Clone, Debug, PartialEq)]
711pub struct CentralStartScanResponse {
712    pub status: fidl_fuchsia_bluetooth__common::Status,
713}
714
715impl fidl::Persistable for CentralStartScanResponse {}
716
717/// Entry in the `manufacturer_data` field of a [`fuchsia.bluetooth.le/AdvertisingData`].
718#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
719pub struct ManufacturerData {
720    pub company_id: u16,
721    pub data: Vec<u8>,
722}
723
724impl fidl::Persistable for ManufacturerData {}
725
726#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
727pub struct ManufacturerSpecificDataEntry {
728    pub company_id: u16,
729    pub data: Vec<u8>,
730}
731
732impl fidl::Persistable for ManufacturerSpecificDataEntry {}
733
734/// 64-bit unique value used by the system to identify a PeriodicAdvertisingSync.
735#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
736#[repr(C)]
737pub struct PeriodicAdvertisingSyncId {
738    pub value: u64,
739}
740
741impl fidl::Persistable for PeriodicAdvertisingSyncId {}
742
743#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
744pub struct PeriodicAdvertisingSyncOnErrorRequest {
745    pub error: PeriodicAdvertisingSyncError,
746}
747
748impl fidl::Persistable for PeriodicAdvertisingSyncOnErrorRequest {}
749
750/// Represents a remote Bluetooth Low Energy device. A RemoteDevice can represent a central,
751/// broadcaster, or peripheral based on the API from which it was received.
752#[derive(Clone, Debug, PartialEq)]
753pub struct RemoteDevice {
754    /// Identifier that uniquely identifies this device on the current system.
755    pub identifier: String,
756    /// Whether or not this device is connectable. Non-connectable devices are typically acting in the
757    /// LE broadcaster role.
758    pub connectable: bool,
759    /// The last known RSSI of this device, if known.
760    pub rssi: Option<Box<fidl_fuchsia_bluetooth__common::Int8>>,
761    /// Advertising data broadcast by this device if this device is a broadcaster or peripheral.
762    pub advertising_data: Option<Box<AdvertisingDataDeprecated>>,
763}
764
765impl fidl::Persistable for RemoteDevice {}
766
767/// Filter parameters for use during a scan. A discovered peripheral or broadcaster will be reported
768/// to applications only if it satisfies all of the provided filter parameters. Null fields will be
769/// ignored.
770#[derive(Clone, Debug, PartialEq)]
771pub struct ScanFilter {
772    /// Filter based on advertised service UUIDs. A peripheral that advertises at least one of the
773    /// entries in `service_uuids` will satisfy this filter.
774    pub service_uuids: Option<Vec<String>>,
775    /// Filter based on service data containing one of the given UUIDs.
776    pub service_data_uuids: Option<Vec<String>>,
777    /// Filter based on a company identifier present in the manufacturer data. If this filter parameter
778    /// is set, then the advertising payload must contain manufacturer specific data with the provided
779    /// company identifier to satisfy this filter.
780    pub manufacturer_identifier: Option<Box<fidl_fuchsia_bluetooth__common::UInt16>>,
781    /// Filter based on whether or not a device is connectable. For example, a client that is only
782    /// interested in peripherals that it can connect to can set this to true. Similarly a client can
783    /// scan only for braodcasters by setting this to false.
784    pub connectable: Option<Box<fidl_fuchsia_bluetooth__common::Bool>>,
785    /// Filter results based on a portion of the advertised device name.
786    pub name_substring: Option<String>,
787    /// Filter results based on the path loss of the radio wave. A device that matches this filter must
788    /// satisfy the following:
789    ///   1. Radio transmission power level and received signal strength must be available for the path
790    ///      loss calculation;
791    ///   2. The calculated path loss value must be less than, or equal to, `max_path_loss`.
792    pub max_path_loss: Option<Box<fidl_fuchsia_bluetooth__common::Int8>>,
793}
794
795impl fidl::Persistable for ScanFilter {}
796
797#[derive(Clone, Debug, PartialEq)]
798pub struct ScanResultWatcherWatchResponse {
799    pub updated: Vec<Peer>,
800}
801
802impl fidl::Persistable for ScanResultWatcherWatchResponse {}
803
804/// Entry in the `service_data` field of a [`fuchsia.bluetooth.le/AdvertisingData`].
805#[derive(Clone, Debug, PartialEq)]
806pub struct ServiceData {
807    pub uuid: fidl_fuchsia_bluetooth__common::Uuid,
808    pub data: Vec<u8>,
809}
810
811impl fidl::Persistable for ServiceData {}
812
813#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
814pub struct ServiceDataEntry {
815    pub uuid: String,
816    pub data: Vec<u8>,
817}
818
819impl fidl::Persistable for ServiceDataEntry {}
820
821/// The set of parameters for accepting a channel when listening for new channel
822/// connections.
823///
824/// See [`ChannelListenerRegistry/ListenL2cap`].
825#[derive(Clone, Debug, Default, PartialEq)]
826pub struct AcceptedChannelParameters {
827    /// All channel modes that should be accepted while listening. Must contain
828    /// at least one channel mode or the call will fail with
829    /// `ZX_ERR_INVALID_ARGS`.
830    /// Required.
831    pub accepted_channel_modes: Option<Vec<fidl_fuchsia_bluetooth__common::ChannelMode>>,
832    /// Maximum supported packet size for receiving.
833    /// Optional. If not provided, the size will be determined by the Bluetooth
834    /// system. No guarantees are given regarding the size selected.
835    pub max_packet_size: Option<u16>,
836    #[doc(hidden)]
837    pub __source_breaking: fidl::marker::SourceBreaking,
838}
839
840impl fidl::Persistable for AcceptedChannelParameters {}
841
842/// Represents advertising and scan response data that are transmitted by a LE peripheral or
843/// broadcaster.
844#[derive(Clone, Debug, Default, PartialEq)]
845pub struct AdvertisingData {
846    /// Long or short name of the device.
847    pub name: Option<String>,
848    /// The appearance of the device.
849    pub appearance: Option<fidl_fuchsia_bluetooth__common::Appearance>,
850    pub tx_power_level: Option<i8>,
851    /// Service UUIDs.
852    pub service_uuids: Option<Vec<fidl_fuchsia_bluetooth__common::Uuid>>,
853    /// Service data entries.
854    pub service_data: Option<Vec<ServiceData>>,
855    /// Manufacturer-specific data entries.
856    pub manufacturer_data: Option<Vec<ManufacturerData>>,
857    /// String representing a URI to be advertised, as defined in [IETF STD 66](https://tools.ietf.org/html/std66).
858    /// Each entry should be a UTF-8 string including the scheme. For more information, see:
859    /// - https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml for allowed schemes;
860    /// - https://www.bluetooth.com/specifications/assigned-numbers/uri-scheme-name-string-mapping
861    ///   for code-points used by the system to compress the scheme to save space in the payload.
862    pub uris: Option<Vec<String>>,
863    /// Indicates whether the current TX power level should be included in the advertising data.
864    pub include_tx_power_level: Option<bool>,
865    /// Identifies the peer as belonging to a Coordinated Set.
866    /// Resolution and generation of this parameter is defined in the
867    /// Coordinated Set Identification Service Specification.
868    pub resolvable_set_identifier: Option<[u8; 6]>,
869    /// The broadcast name string can be used by a user interface on a scanning
870    /// device that displays information on the available broadcast sources.
871    ///
872    /// Multiple devices with the same Broadcast Name may be transmitting the
873    /// same data, allowing devices to choose one.  At least 4 unicode characters
874    /// long and no more than 32 characters.
875    ///
876    /// Defined in the Public Broadcast Profile specification.
877    pub broadcast_name: Option<String>,
878    #[doc(hidden)]
879    pub __source_breaking: fidl::marker::SourceBreaking,
880}
881
882impl fidl::Persistable for AdvertisingData {}
883
884/// Represents the parameters for configuring advertisements.
885#[derive(Clone, Debug, Default, PartialEq)]
886pub struct AdvertisingParameters {
887    /// The fields that will be encoded in the data section of advertising packets.
888    ///
889    /// This field is required.
890    pub data: Option<AdvertisingData>,
891    /// The fields that are to be sent in a scan response packet. Clients may use this to send
892    /// additional data that does not fit inside an advertising packet on platforms that do not
893    /// support the advertising data length extensions.
894    ///
895    /// If present advertisements will be configured to be scannable.
896    pub scan_response: Option<AdvertisingData>,
897    /// The desired advertising frequency. See [`fuchsia.bluetooth.le/AdvertisingModeHint`].
898    /// Defaults to [`fuchsia.bluetooth.le/AdvertisingModeHint.SLOW`] if not present.
899    pub mode_hint: Option<AdvertisingModeHint>,
900    /// If present and true then the controller will broadcast connectable advertisements which
901    /// allows remote LE centrals to initiate a connection to the Peripheral. If false or otherwise
902    /// not present then the advertisements will be non-connectable.
903    pub connectable: Option<bool>,
904    /// If present, the controller will broadcast connectable advertisements
905    /// which allow peers to initiate connections to the Peripheral. The fields
906    /// of `ConnectionOptions` will configure any connections set up from
907    /// advertising.
908    pub connection_options: Option<ConnectionOptions>,
909    /// Specifies the advertising type to use (e.g. legacy, extended, etc).
910    ///
911    /// If not present, we default to legacy advertising to maintain optimal compatibility with
912    /// pre-Bluetooth 5.0 devices. See field descriptions within AdvertisingProcedure for more
913    /// information.
914    pub advertising_procedure: Option<AdvertisingProcedure>,
915    /// If privacy is not enabled, the address type will always be public.
916    ///
917    /// If privacy is enabled and the client is not privileged, the address will be a random
918    /// private address (either resolvable or non-resolvable). A non-privileged client requesting a
919    /// public address will return an error.
920    ///
921    /// If privacy is enabled and the client is privileged, they may request any address type,
922    /// or will default to a random private address.
923    ///
924    /// If this field is unset, the address type will be public or random depending on if privacy
925    /// is enabled in the system.
926    pub address_type: Option<fidl_fuchsia_bluetooth__common::AddressType>,
927    #[doc(hidden)]
928    pub __source_breaking: fidl::marker::SourceBreaking,
929}
930
931impl fidl::Persistable for AdvertisingParameters {}
932
933/// The "BIGInfo" parameters describing an LE Audio Broadcast Isochronous Group (BIG).
934/// Missing fields to be added as part of fxbug.dev/429213165.
935#[derive(Clone, Debug, Default, PartialEq)]
936pub struct BroadcastIsochronousGroupInfo {
937    /// The number of Broadcast Isochronous Streams in this group.
938    pub streams_count: Option<u8>,
939    /// The maximum size of an isochronous SDU.
940    pub max_sdu_size: Option<u16>,
941    /// The PHY used for transmission of data.
942    pub phy: Option<PhysicalLayer>,
943    /// Indicates whether the BIG is encrypted.
944    pub encryption: Option<bool>,
945    #[doc(hidden)]
946    pub __source_breaking: fidl::marker::SourceBreaking,
947}
948
949impl fidl::Persistable for BroadcastIsochronousGroupInfo {}
950
951/// A BIGInfo report that was received with a periodic advertisement.
952#[derive(Clone, Debug, Default, PartialEq)]
953pub struct BroadcastIsochronousGroupInfoReport {
954    pub info: Option<BroadcastIsochronousGroupInfo>,
955    /// The timestamp when the report was received by the host.
956    pub timestamp: Option<i64>,
957    #[doc(hidden)]
958    pub __source_breaking: fidl::marker::SourceBreaking,
959}
960
961impl fidl::Persistable for BroadcastIsochronousGroupInfoReport {}
962
963#[derive(Clone, Debug, Default, PartialEq)]
964pub struct CentralCreateConnectedIsochronousGroupResponse {
965    /// A unique CIG_ID, allocated by the host.
966    pub cig_id: Option<u8>,
967    #[doc(hidden)]
968    pub __source_breaking: fidl::marker::SourceBreaking,
969}
970
971impl fidl::Persistable for CentralCreateConnectedIsochronousGroupResponse {}
972
973#[derive(Clone, Debug, Default, PartialEq)]
974pub struct ChannelListenerRegistryListenL2capResponse {
975    /// PSM assigned by the registry. Guaranteed to be in the `DYNAMIC`
976    /// range of PSM values.
977    pub psm: Option<u16>,
978    #[doc(hidden)]
979    pub __source_breaking: fidl::marker::SourceBreaking,
980}
981
982impl fidl::Persistable for ChannelListenerRegistryListenL2capResponse {}
983
984#[derive(Clone, Debug, Default, PartialEq)]
985pub struct ChannelOffloadExtStartOffloadRequest {
986    #[doc(hidden)]
987    pub __source_breaking: fidl::marker::SourceBreaking,
988}
989
990impl fidl::Persistable for ChannelOffloadExtStartOffloadRequest {}
991
992#[derive(Clone, Debug, Default, PartialEq)]
993pub struct ChannelOffloadExtStartOffloadResponse {
994    pub offload_parameters: Option<fidl_fuchsia_bluetooth__common::L2capChannelOffloadParameters>,
995    #[doc(hidden)]
996    pub __source_breaking: fidl::marker::SourceBreaking,
997}
998
999impl fidl::Persistable for ChannelOffloadExtStartOffloadResponse {}
1000
1001#[derive(Clone, Debug, Default, PartialEq)]
1002pub struct CigParameters {
1003    /// Interval between the start of consecutive SDUs (central => peripheral,
1004    /// microseconds). This is a function of the codec being used.
1005    /// Required.
1006    pub sdu_interval_c_to_p: Option<u32>,
1007    /// Interval between the start of consecutive SDUs (peripheral => central,
1008    /// microseconds). This is a function of the codec being used.
1009    /// Required.
1010    pub sdu_interval_p_to_c: Option<u32>,
1011    /// The preferred method of arranging subevents of multiple CISes. The
1012    /// controller may ignore this parameter.
1013    /// Optional. If not specified, SEQUENTIAL will be used.
1014    pub packing: Option<CigPacking>,
1015    /// Specifies inclusion of time offset values in data frame.
1016    /// Optional. If not specified, UNFRAMED will be used.
1017    pub framing: Option<CigFramingOptions>,
1018    /// Maximum latency, in milliseconds, between controllers (central =>
1019    /// peripheral).
1020    /// Required.
1021    pub max_transport_latency_c_to_p: Option<u16>,
1022    /// Maximum latency, in milliseconds, between controllers (peripheral =>
1023    /// central).
1024    /// Required.
1025    pub max_transport_latency_p_to_c: Option<u16>,
1026    /// The expected or intended peers to join this CIG, if known. This may be
1027    /// used to optimize parameters, but may limit the set of peers that can
1028    /// connect to the group.
1029    /// Optional.
1030    pub expected_peers: Option<Vec<fidl_fuchsia_bluetooth__common::PeerId>>,
1031    #[doc(hidden)]
1032    pub __source_breaking: fidl::marker::SourceBreaking,
1033}
1034
1035impl fidl::Persistable for CigParameters {}
1036
1037/// Established configuration for a single CIS.
1038#[derive(Clone, Debug, Default, PartialEq)]
1039pub struct CisEstablishedParameters {
1040    /// Maximum time for transmission of PDUs of all CISes in a CIG event.
1041    /// In the range [234, 8388607] microseconds.
1042    ///
1043    /// This field is always present.
1044    pub cig_sync_delay: Option<i64>,
1045    /// The maximum time for transmission of PDUs of the specified CIS in a CIG
1046    /// event. In the range [234, 8388607] microseconds.
1047    ///
1048    /// This field is always present.
1049    pub cis_sync_delay: Option<i64>,
1050    /// Maximum number of subevents in each CIS event.
1051    ///
1052    /// This field is always present.
1053    pub max_subevents: Option<u8>,
1054    /// Time between two consecutive CIS anchor points, in the range [5ms, 4s]
1055    ///
1056    /// This field is always present.
1057    pub iso_interval: Option<i64>,
1058    /// Parameters for Central => Peripheral transmissions, if applicable.
1059    ///
1060    /// This field is present if the stream includes isochronous data transmission from the
1061    /// Central to the Peripheral.
1062    pub central_to_peripheral_params: Option<CisUnidirectionalParams>,
1063    /// Parameters for Peripheral => Central transmissions, if applicable.
1064    ///
1065    /// This field is present if the stream includes isochronous data transmission from the
1066    /// Peripheral to the Central.
1067    pub peripheral_to_central_params: Option<CisUnidirectionalParams>,
1068    #[doc(hidden)]
1069    pub __source_breaking: fidl::marker::SourceBreaking,
1070}
1071
1072impl fidl::Persistable for CisEstablishedParameters {}
1073
1074#[derive(Clone, Debug, Default, PartialEq)]
1075pub struct CisParameters {
1076    /// ID of the stream to establish (as previously passed to Connection/CreateCig()).
1077    /// Required.
1078    pub cis_id: Option<u8>,
1079    /// Peripheral device providing other end of the isochronous data stream.
1080    /// Required.
1081    pub id: Option<fidl_fuchsia_bluetooth__common::PeerId>,
1082    #[doc(hidden)]
1083    pub __source_breaking: fidl::marker::SourceBreaking,
1084}
1085
1086impl fidl::Persistable for CisParameters {}
1087
1088/// Parameters related to a single direction of transmission in an established CIS.
1089#[derive(Clone, Debug, Default, PartialEq)]
1090pub struct CisUnidirectionalParams {
1091    /// Transport latency, in the range [234, 8388607] microseconds
1092    ///
1093    /// This field is always present.
1094    pub transport_latency: Option<i64>,
1095    /// Burst number for transmissions in this direction.
1096    ///
1097    /// This field is always present.
1098    pub burst_number: Option<u8>,
1099    /// Flush timeout for each payload, in multiples of the ISO interval.
1100    ///
1101    /// This field is always present.
1102    pub flush_timeout: Option<u8>,
1103    #[doc(hidden)]
1104    pub __source_breaking: fidl::marker::SourceBreaking,
1105}
1106
1107impl fidl::Persistable for CisUnidirectionalParams {}
1108
1109#[derive(Clone, Debug, Default, PartialEq)]
1110pub struct CodecDelayGetCodecLocalDelayRangeRequest {
1111    /// Logical transport type being used. Currenly only supports LE transport mechanisms
1112    /// (CIS or BIS). Required.
1113    pub logical_transport_type: Option<fidl_fuchsia_bluetooth__common::LogicalTransportType>,
1114    /// Indicates direction of data flow. Required.
1115    pub data_direction: Option<fidl_fuchsia_bluetooth__common::DataDirection>,
1116    /// Codec being used over the air. Required.
1117    pub codec_attributes: Option<fidl_fuchsia_bluetooth__common::CodecAttributes>,
1118    #[doc(hidden)]
1119    pub __source_breaking: fidl::marker::SourceBreaking,
1120}
1121
1122impl fidl::Persistable for CodecDelayGetCodecLocalDelayRangeRequest {}
1123
1124#[derive(Clone, Debug, Default, PartialEq)]
1125pub struct CodecDelayGetCodecLocalDelayRangeResponse {
1126    /// Minimum controller delay for the specified configuration, in the range [0, 4] seconds.
1127    /// Always provided on success.
1128    pub min_controller_delay: Option<i64>,
1129    /// Maximum controller delay for the specified configuration, in the range [0, 4] seconds.
1130    /// Always provided on success.
1131    pub max_controller_delay: Option<i64>,
1132    #[doc(hidden)]
1133    pub __source_breaking: fidl::marker::SourceBreaking,
1134}
1135
1136impl fidl::Persistable for CodecDelayGetCodecLocalDelayRangeResponse {}
1137
1138#[derive(Clone, Debug, Default, PartialEq)]
1139pub struct ConnectedIsochronousGroupEstablishStreamsRequest {
1140    /// Required.
1141    pub cis_params: Option<Vec<CisParameters>>,
1142    #[doc(hidden)]
1143    pub __source_breaking: fidl::marker::SourceBreaking,
1144}
1145
1146impl fidl::Persistable for ConnectedIsochronousGroupEstablishStreamsRequest {}
1147
1148/// Represents parameters that are set on a per-connection basis by FIDL protocols that create
1149/// Low Energy connections.
1150#[derive(Clone, Debug, Default, PartialEq)]
1151pub struct ConnectionOptions {
1152    /// When true, the connection operates in bondable mode. This means pairing will form a bond,
1153    /// or persist across disconnections, if the peer is also in bondable mode. When not present,
1154    /// the connection defaults to bondable mode. When false, the connection operates in non-
1155    /// bondable mode, which means the local device only allows pairing that does not form a bond.
1156    pub bondable_mode: Option<bool>,
1157    /// When present, service discovery performed following the connection is restricted to primary
1158    /// services that match this field. Otherwise, by default all available services are discovered.
1159    pub service_filter: Option<fidl_fuchsia_bluetooth__common::Uuid>,
1160    #[doc(hidden)]
1161    pub __source_breaking: fidl::marker::SourceBreaking,
1162}
1163
1164impl fidl::Persistable for ConnectionOptions {}
1165
1166#[derive(Clone, Debug, Default, PartialEq)]
1167pub struct ConnectionTransferPeriodicAdvertisingSyncRequest {
1168    /// Required.
1169    pub sync_id: Option<PeriodicAdvertisingSyncId>,
1170    /// Application specific data to send with the sync.
1171    /// Optional.
1172    /// Default: 0
1173    pub service_data: Option<u16>,
1174    #[doc(hidden)]
1175    pub __source_breaking: fidl::marker::SourceBreaking,
1176}
1177
1178impl fidl::Persistable for ConnectionTransferPeriodicAdvertisingSyncRequest {}
1179
1180#[derive(Clone, Debug, Default, PartialEq)]
1181pub struct Extended {
1182    #[doc(hidden)]
1183    pub __source_breaking: fidl::marker::SourceBreaking,
1184}
1185
1186impl fidl::Persistable for Extended {}
1187
1188/// Filter parameters for use during a scan. A discovered peer only matches the
1189/// filter if it satisfies all of the present filter parameters.
1190#[derive(Clone, Debug, Default, PartialEq)]
1191pub struct Filter {
1192    /// Filter based on advertised service UUID.
1193    pub service_uuid: Option<fidl_fuchsia_bluetooth__common::Uuid>,
1194    /// Filter based on service data containing the given UUID.
1195    pub service_data_uuid: Option<fidl_fuchsia_bluetooth__common::Uuid>,
1196    /// Filter based on a manufacturer identifier present in the manufacturer
1197    /// data. If this filter parameter is set, then the advertising payload must
1198    /// contain manufacturer specific data with the provided company identifier
1199    /// to satisfy this filter. Manufacturer identifiers can be found at
1200    /// https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers/
1201    pub manufacturer_id: Option<u16>,
1202    /// Filter based on whether or not a device is connectable. For example, a
1203    /// client that is only interested in peripherals that it can connect to can
1204    /// set this to true. Similarly a client can scan only for broadcasters by
1205    /// setting this to false.
1206    pub connectable: Option<bool>,
1207    /// Filter results based on a portion of the advertised device name.
1208    /// Substring matches are allowed.
1209    pub name: Option<String>,
1210    /// Filter results based on the path loss of the radio wave. A device that
1211    /// matches this filter must satisfy the following:
1212    ///   1. Radio transmission power level and received signal strength must be
1213    ///      available for the path loss calculation;
1214    ///   2. The calculated path loss value must be less than, or equal to,
1215    ///      `max_path_loss`.
1216    ///
1217    /// NOTE: This field is calculated using the RSSI and TX Power information
1218    /// obtained from advertising and scan response data during a scan procedure.
1219    /// It should NOT be confused with information for an active connection
1220    /// obtained using the "Path Loss Reporting" feature.
1221    pub max_path_loss: Option<i8>,
1222    /// Filter based on a service solicitation by service UUID.
1223    /// Service solicitation is an invitation to a peer to connect if they
1224    /// provide a service we want to use.
1225    pub solicitation_uuid: Option<fidl_fuchsia_bluetooth__common::Uuid>,
1226    #[doc(hidden)]
1227    pub __source_breaking: fidl::marker::SourceBreaking,
1228}
1229
1230impl fidl::Persistable for Filter {}
1231
1232#[derive(Clone, Debug, Default, PartialEq)]
1233pub struct IsochronousStreamOnEstablishedRequest {
1234    /// A result of ZX_ERR_INTERNAL indicates that the controller received a request
1235    /// but was unable to establish the stream.
1236    pub result: Option<i32>,
1237    /// This field is always present if a stream was successfully established.
1238    pub established_params: Option<CisEstablishedParameters>,
1239    #[doc(hidden)]
1240    pub __source_breaking: fidl::marker::SourceBreaking,
1241}
1242
1243impl fidl::Persistable for IsochronousStreamOnEstablishedRequest {}
1244
1245#[derive(Clone, Debug, Default, PartialEq)]
1246pub struct IsochronousStreamSetupDataPathRequest {
1247    /// Directions in which data will flow.
1248    /// Required.
1249    pub data_direction: Option<fidl_fuchsia_bluetooth__common::DataDirection>,
1250    /// Specifies the coding format used over the air.
1251    /// Required.
1252    pub codec_attributes: Option<fidl_fuchsia_bluetooth__common::CodecAttributes>,
1253    /// The delay provided must be within the controller's supported range and should not
1254    /// exceed 4 seconds.
1255    /// Required.
1256    pub controller_delay: Option<i64>,
1257    #[doc(hidden)]
1258    pub __source_breaking: fidl::marker::SourceBreaking,
1259}
1260
1261impl fidl::Persistable for IsochronousStreamSetupDataPathRequest {}
1262
1263#[derive(Clone, Debug, Default, PartialEq)]
1264pub struct IsochronousStreamWriteRequest {
1265    /// The data frame itself.
1266    pub data: Option<Vec<u8>>,
1267    #[doc(hidden)]
1268    pub __source_breaking: fidl::marker::SourceBreaking,
1269}
1270
1271impl fidl::Persistable for IsochronousStreamWriteRequest {}
1272
1273#[derive(Clone, Debug, Default, PartialEq)]
1274pub struct IsochronousStreamReadResponse {
1275    /// The data frame itself.
1276    /// Required.
1277    pub data: Option<Vec<u8>>,
1278    /// The sequence number associated with the frame.
1279    /// Required.
1280    pub sequence_number: Option<u16>,
1281    /// Status flags of packet, as reported by the controller.
1282    /// Required.
1283    pub status_flag: Option<IsoPacketStatusFlag>,
1284    /// Reception timestamp, as reported by the controller.
1285    /// Optional.
1286    pub timestamp: Option<i64>,
1287    #[doc(hidden)]
1288    pub __source_breaking: fidl::marker::SourceBreaking,
1289}
1290
1291impl fidl::Persistable for IsochronousStreamReadResponse {}
1292
1293#[derive(Clone, Debug, Default, PartialEq)]
1294pub struct Legacy {
1295    #[doc(hidden)]
1296    pub __source_breaking: fidl::marker::SourceBreaking,
1297}
1298
1299impl fidl::Persistable for Legacy {}
1300
1301/// Represents a Bluetooth Low Energy peer that may act in the broadcaster, peripheral, or central
1302/// role. The peer's role depends on whether it is obtained from the Central or Peripheral protocol.
1303#[derive(Clone, Debug, Default, PartialEq)]
1304pub struct Peer {
1305    /// Uniquely identifies this peer on the current system.
1306    ///
1307    /// This field is always present.
1308    pub id: Option<fidl_fuchsia_bluetooth__common::PeerId>,
1309    /// Whether or not this peer is connectable. Non-connectable peers are typically in the LE
1310    /// broadcaster role.
1311    ///
1312    /// This field is always present.
1313    pub connectable: Option<bool>,
1314    /// The last observed signal strength of this peer. This field is only present for a peer that
1315    /// is broadcasting. The RSSI can be stale if the peer has not been advertising.
1316    ///
1317    /// NOTE: This field should NOT be confused with the "connection RSSI" of a peer that is currently
1318    /// connected to the system.
1319    pub rssi: Option<i8>,
1320    pub advertising_data: Option<AdvertisingData>,
1321    /// The name of this peer. The name is often obtained during a scan procedure and can get
1322    /// updated during the name discovery procedure following a connection.
1323    ///
1324    /// This field is present if the name is known.
1325    pub name: Option<String>,
1326    /// Information from advertising and scan response data broadcast by this peer. When present,
1327    /// this contains the advertising data last received from the peer.
1328    pub data: Option<ScanData>,
1329    /// Whether or not this peer is bonded.
1330    ///
1331    /// This field is always present.
1332    pub bonded: Option<bool>,
1333    /// The value of the system monotonic clock, measured at the time this peer
1334    /// was last updated (e.g. due to reception of an advertisement).
1335    ///
1336    /// This field is always present.
1337    pub last_updated: Option<i64>,
1338    /// Value of the Advertising SID.
1339    ///
1340    /// Range: 0x00 to 0x0F
1341    pub advertising_sid: Option<u8>,
1342    /// Interval of the periodic advertising.
1343    /// The presence of this field indicates that a periodic advertising train
1344    /// is associated with this advertisement.
1345    ///
1346    /// Range: 0x0006 to 0xFFFF
1347    /// Time: N × 1.25 ms
1348    pub periodic_advertising_interval: Option<u16>,
1349    #[doc(hidden)]
1350    pub __source_breaking: fidl::marker::SourceBreaking,
1351}
1352
1353impl fidl::Persistable for Peer {}
1354
1355#[derive(Clone, Debug, Default, PartialEq)]
1356pub struct PeriodicAdvertisingReport {
1357    /// The signal strength of the advertising report.
1358    pub rssi: Option<i8>,
1359    /// The advertising data payload sent with this report.
1360    pub data: Option<ScanData>,
1361    /// The event counter of the event that the advertising packet was received
1362    /// in. This can be used to reply to the report.
1363    pub event_counter: Option<u16>,
1364    /// The subevent number of the report. Only present if the packet was received in a subevent.
1365    pub subevent: Option<u8>,
1366    /// The timestamp when the report was received by the host.
1367    pub timestamp: Option<i64>,
1368    #[doc(hidden)]
1369    pub __source_breaking: fidl::marker::SourceBreaking,
1370}
1371
1372impl fidl::Persistable for PeriodicAdvertisingReport {}
1373
1374#[derive(Clone, Debug, Default, PartialEq)]
1375pub struct PeriodicAdvertisingSyncConfiguration {
1376    /// Filter out duplicate advertising reports.
1377    /// Optional.
1378    /// Default: true
1379    pub filter_duplicates: Option<bool>,
1380    #[doc(hidden)]
1381    pub __source_breaking: fidl::marker::SourceBreaking,
1382}
1383
1384impl fidl::Persistable for PeriodicAdvertisingSyncConfiguration {}
1385
1386#[derive(Clone, Debug, Default, PartialEq)]
1387pub struct PeriodicAdvertisingSyncOnEstablishedRequest {
1388    /// Used in Connection.TransferPeriodicAdvertisingSync.
1389    pub id: Option<PeriodicAdvertisingSyncId>,
1390    /// The number of subevents this periodic advertisement has.
1391    pub subevents_count: Option<u8>,
1392    pub peer_id: Option<fidl_fuchsia_bluetooth__common::PeerId>,
1393    /// Present for Sync transfers only. Application specific data received
1394    /// with the transfer.
1395    pub service_data: Option<u16>,
1396    pub advertising_sid: Option<u8>,
1397    pub phy: Option<PhysicalLayer>,
1398    /// Kept in interval units as profiles use this field unchanged.
1399    /// Range: 0x0006 to 0xFFFF
1400    /// Time: N × 1.25 ms
1401    pub periodic_advertising_interval: Option<u16>,
1402    #[doc(hidden)]
1403    pub __source_breaking: fidl::marker::SourceBreaking,
1404}
1405
1406impl fidl::Persistable for PeriodicAdvertisingSyncOnEstablishedRequest {}
1407
1408#[derive(Clone, Debug, Default, PartialEq)]
1409pub struct PeriodicAdvertisingSyncSyncToSubeventsRequest {
1410    /// A list of subevent numbers to sync to.
1411    pub subevents: Option<Vec<u8>>,
1412    #[doc(hidden)]
1413    pub __source_breaking: fidl::marker::SourceBreaking,
1414}
1415
1416impl fidl::Persistable for PeriodicAdvertisingSyncSyncToSubeventsRequest {}
1417
1418#[derive(Clone, Debug, Default, PartialEq)]
1419pub struct PeriodicAdvertisingSyncWatchAdvertisingReportResponse {
1420    pub reports: Option<Vec<SyncReport>>,
1421    #[doc(hidden)]
1422    pub __source_breaking: fidl::marker::SourceBreaking,
1423}
1424
1425impl fidl::Persistable for PeriodicAdvertisingSyncWatchAdvertisingReportResponse {}
1426
1427/// Information obtained from advertising and scan response data broadcast by a peer.
1428#[derive(Clone, Debug, Default, PartialEq)]
1429pub struct ScanData {
1430    /// The radio transmit power level reported by an advertising and/or scannable peer.
1431    ///
1432    /// NOTE: This field should NOT be confused with the "connection TX Power Level" of a peer that
1433    /// is currently connected to the system obtained via the "Transmit Power reporting" feature.
1434    pub tx_power: Option<i8>,
1435    /// The appearance of the device.
1436    pub appearance: Option<fidl_fuchsia_bluetooth__common::Appearance>,
1437    /// Service UUIDs.
1438    pub service_uuids: Option<Vec<fidl_fuchsia_bluetooth__common::Uuid>>,
1439    /// Service data entries.
1440    pub service_data: Option<Vec<ServiceData>>,
1441    /// Manufacturer-specific data entries.
1442    pub manufacturer_data: Option<Vec<ManufacturerData>>,
1443    /// String representing a URI to be advertised, as defined in [IETF STD 66](https://tools.ietf.org/html/std66).
1444    /// Each entry should be a UTF-8 string including the scheme. For more information, see
1445    /// https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml for allowed schemes;
1446    /// NOTE: Bluetooth advertising compresses schemas over the air to save space. See
1447    /// https://www.bluetooth.com/specifications/assigned-numbers/uri-scheme-name-string-mapping.
1448    pub uris: Option<Vec<String>>,
1449    /// The monotonic time when this scan data was received.
1450    pub timestamp: Option<i64>,
1451    /// Identifies the peer as belonging to a Coordinated Set.
1452    /// Resolution and generation of this parameter is defined in the
1453    /// Coordinated Set Identification Service Specification.
1454    pub resolvable_set_identifier: Option<[u8; 6]>,
1455    /// The broadcast name string can be used by a user interface on a scanning
1456    /// device that displays information on the available broadcast sources.
1457    ///
1458    /// Multiple devices with the same Broadcast Name may be transmitting the
1459    /// same data, allowing devices to choose one.  At least 4 unicode characters
1460    /// long and no more than 32 characters.
1461    ///
1462    /// Defined in the Public Broadcast Profile specification.
1463    pub broadcast_name: Option<String>,
1464    #[doc(hidden)]
1465    pub __source_breaking: fidl::marker::SourceBreaking,
1466}
1467
1468impl fidl::Persistable for ScanData {}
1469
1470/// Parameters used during a scan.
1471#[derive(Clone, Debug, Default, PartialEq)]
1472pub struct ScanOptions {
1473    /// List of filters for use during a scan. A peripheral that satisfies any
1474    /// of these filters will be reported. At least 1 filter must be specified.
1475    /// While not recommended, clients that require that all peripherals be
1476    /// reported can specify an empty filter.
1477    pub filters: Option<Vec<Filter>>,
1478    #[doc(hidden)]
1479    pub __source_breaking: fidl::marker::SourceBreaking,
1480}
1481
1482impl fidl::Persistable for ScanOptions {}
1483
1484#[derive(Clone, Debug)]
1485pub enum AdvertisingProcedure {
1486    /// Advertise using legacy advertising packets. All devices should be able
1487    /// to discover this type of packet.
1488    Legacy(Legacy),
1489    /// Advertise using extended advertising packets. Extended advertising
1490    /// packets allow for a much larger amount of data to be advertised than
1491    /// legacy advertising packets (31 bytes vs 251 bytes per PDU). Extended
1492    /// advertising packets support up to 1,650 bytes in an advertisement chain,
1493    /// but they are only discoverable by newer devices using Bluetooth 5.0+.
1494    ///
1495    /// Extended advertising packets are not supported by all
1496    /// products. PeripheralError::NOT_SUPPORTED will be returned if requested
1497    /// and not supported.
1498    Extended(Extended),
1499    #[doc(hidden)]
1500    __SourceBreaking { unknown_ordinal: u64 },
1501}
1502
1503/// Pattern that matches an unknown `AdvertisingProcedure` member.
1504#[macro_export]
1505macro_rules! AdvertisingProcedureUnknown {
1506    () => {
1507        _
1508    };
1509}
1510
1511// Custom PartialEq so that unknown variants are not equal to themselves.
1512impl PartialEq for AdvertisingProcedure {
1513    fn eq(&self, other: &Self) -> bool {
1514        match (self, other) {
1515            (Self::Legacy(x), Self::Legacy(y)) => *x == *y,
1516            (Self::Extended(x), Self::Extended(y)) => *x == *y,
1517            _ => false,
1518        }
1519    }
1520}
1521
1522impl AdvertisingProcedure {
1523    #[inline]
1524    pub fn ordinal(&self) -> u64 {
1525        match *self {
1526            Self::Legacy(_) => 1,
1527            Self::Extended(_) => 2,
1528            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1529        }
1530    }
1531
1532    #[inline]
1533    pub fn unknown_variant_for_testing() -> Self {
1534        Self::__SourceBreaking { unknown_ordinal: 0 }
1535    }
1536
1537    #[inline]
1538    pub fn is_unknown(&self) -> bool {
1539        match self {
1540            Self::__SourceBreaking { .. } => true,
1541            _ => false,
1542        }
1543    }
1544}
1545
1546impl fidl::Persistable for AdvertisingProcedure {}
1547
1548#[derive(Clone, Debug)]
1549pub enum SyncReport {
1550    PeriodicAdvertisingReport(PeriodicAdvertisingReport),
1551    BroadcastIsochronousGroupInfoReport(BroadcastIsochronousGroupInfoReport),
1552    #[doc(hidden)]
1553    __SourceBreaking {
1554        unknown_ordinal: u64,
1555    },
1556}
1557
1558/// Pattern that matches an unknown `SyncReport` member.
1559#[macro_export]
1560macro_rules! SyncReportUnknown {
1561    () => {
1562        _
1563    };
1564}
1565
1566// Custom PartialEq so that unknown variants are not equal to themselves.
1567impl PartialEq for SyncReport {
1568    fn eq(&self, other: &Self) -> bool {
1569        match (self, other) {
1570            (Self::PeriodicAdvertisingReport(x), Self::PeriodicAdvertisingReport(y)) => *x == *y,
1571            (
1572                Self::BroadcastIsochronousGroupInfoReport(x),
1573                Self::BroadcastIsochronousGroupInfoReport(y),
1574            ) => *x == *y,
1575            _ => false,
1576        }
1577    }
1578}
1579
1580impl SyncReport {
1581    #[inline]
1582    pub fn ordinal(&self) -> u64 {
1583        match *self {
1584            Self::PeriodicAdvertisingReport(_) => 1,
1585            Self::BroadcastIsochronousGroupInfoReport(_) => 2,
1586            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1587        }
1588    }
1589
1590    #[inline]
1591    pub fn unknown_variant_for_testing() -> Self {
1592        Self::__SourceBreaking { unknown_ordinal: 0 }
1593    }
1594
1595    #[inline]
1596    pub fn is_unknown(&self) -> bool {
1597        match self {
1598            Self::__SourceBreaking { .. } => true,
1599            _ => false,
1600        }
1601    }
1602}
1603
1604impl fidl::Persistable for SyncReport {}
1605
1606pub mod advertised_peripheral_ordinals {
1607    pub const ON_CONNECTED: u64 = 0x607b7716457eb178;
1608}
1609
1610pub mod advertising_handle_ordinals {}
1611
1612pub mod central_ordinals {
1613    pub const LISTEN_L2CAP: u64 = 0x39c6e9001d102338;
1614    pub const SCAN: u64 = 0x41f7121798dfe15f;
1615    pub const CONNECT: u64 = 0x31a3065f2a6913c4;
1616    pub const SYNC_TO_PERIODIC_ADVERTISING: u64 = 0x1db6df126a00c5b9;
1617    pub const CREATE_CONNECTED_ISOCHRONOUS_GROUP: u64 = 0x60323e70ae22e13;
1618    pub const GET_PERIPHERALS: u64 = 0x37ba777499c683a8;
1619    pub const GET_PERIPHERAL: u64 = 0x97f5a2f2d9c13da;
1620    pub const START_SCAN: u64 = 0xeb4cf0cd0e1132b;
1621    pub const STOP_SCAN: u64 = 0x5f79ee6a0bb037a0;
1622    pub const CONNECT_PERIPHERAL: u64 = 0x714d6c32d066d75a;
1623    pub const DISCONNECT_PERIPHERAL: u64 = 0xa9430da197362fd;
1624    pub const ON_SCAN_STATE_CHANGED: u64 = 0x5f8edc23cad04d3f;
1625    pub const ON_DEVICE_DISCOVERED: u64 = 0x708dadf20d66db6;
1626    pub const ON_PERIPHERAL_DISCONNECTED: u64 = 0x4e4c6b979b2126df;
1627}
1628
1629pub mod channel_listener_ordinals {
1630    pub const ACCEPT: u64 = 0x6f535bd36b20fc7b;
1631    pub const CONNECTED: u64 = 0xf40756858f21866;
1632}
1633
1634pub mod channel_listener_registry_ordinals {
1635    pub const LISTEN_L2CAP: u64 = 0x39c6e9001d102338;
1636}
1637
1638pub mod channel_offload_ext_ordinals {
1639    pub const START_OFFLOAD: u64 = 0x2dd620feea793fe8;
1640}
1641
1642pub mod codec_delay_ordinals {
1643    pub const GET_CODEC_LOCAL_DELAY_RANGE: u64 = 0x1cf34fdeed80b4d;
1644}
1645
1646pub mod connected_isochronous_group_ordinals {
1647    pub const ESTABLISH_STREAMS: u64 = 0xc7296c5edb4dacc;
1648    pub const REMOVE: u64 = 0xbed433babd20503;
1649}
1650
1651pub mod connection_ordinals {
1652    pub const GET_CODEC_LOCAL_DELAY_RANGE: u64 = 0x1cf34fdeed80b4d;
1653    pub const REQUEST_GATT_CLIENT: u64 = 0x2a670e0fec6ccc6b;
1654    pub const ACCEPT_CIS: u64 = 0x7e6338c237088144;
1655    pub const CONNECT_L2CAP: u64 = 0x12351316feaebce9;
1656    pub const TRANSFER_PERIODIC_ADVERTISING_SYNC: u64 = 0x1117a10b5ba1e219;
1657    pub const ACCEPT_PERIODIC_ADVERTISING_SYNC_TRANSFER: u64 = 0x441a31a7effa7e2b;
1658}
1659
1660pub mod isochronous_stream_ordinals {
1661    pub const ON_ESTABLISHED: u64 = 0x341c50e9d10f3421;
1662    pub const SETUP_DATA_PATH: u64 = 0x7ec1e2b9cc6d2fbe;
1663    pub const READ: u64 = 0x6d7d8b4950ed3a32;
1664    pub const WRITE: u64 = 0x5282e90b667d0d43;
1665}
1666
1667pub mod periodic_advertising_sync_ordinals {
1668    pub const ON_ESTABLISHED: u64 = 0x4a5c307761c40fdc;
1669    pub const ON_ERROR: u64 = 0x1c051673126ce4a;
1670    pub const WATCH_ADVERTISING_REPORT: u64 = 0x2ea610fea0e7d337;
1671    pub const SYNC_TO_SUBEVENTS: u64 = 0x653c5dab1f1d80ed;
1672    pub const CANCEL: u64 = 0xd617c037eaf5d92;
1673}
1674
1675pub mod peripheral_ordinals {
1676    pub const LISTEN_L2CAP: u64 = 0x39c6e9001d102338;
1677    pub const ADVERTISE: u64 = 0x2d9ec9260c32c17f;
1678    pub const START_ADVERTISING: u64 = 0x5875c1c575f00f7d;
1679    pub const ON_PEER_CONNECTED: u64 = 0x16135d464299e356;
1680}
1681
1682pub mod privileged_central_ordinals {
1683    pub const LISTEN_L2CAP: u64 = 0x39c6e9001d102338;
1684    pub const SCAN: u64 = 0x41f7121798dfe15f;
1685    pub const CONNECT: u64 = 0x31a3065f2a6913c4;
1686    pub const SYNC_TO_PERIODIC_ADVERTISING: u64 = 0x1db6df126a00c5b9;
1687    pub const CREATE_CONNECTED_ISOCHRONOUS_GROUP: u64 = 0x60323e70ae22e13;
1688    pub const GET_PERIPHERALS: u64 = 0x37ba777499c683a8;
1689    pub const GET_PERIPHERAL: u64 = 0x97f5a2f2d9c13da;
1690    pub const START_SCAN: u64 = 0xeb4cf0cd0e1132b;
1691    pub const STOP_SCAN: u64 = 0x5f79ee6a0bb037a0;
1692    pub const CONNECT_PERIPHERAL: u64 = 0x714d6c32d066d75a;
1693    pub const DISCONNECT_PERIPHERAL: u64 = 0xa9430da197362fd;
1694    pub const ON_SCAN_STATE_CHANGED: u64 = 0x5f8edc23cad04d3f;
1695    pub const ON_DEVICE_DISCOVERED: u64 = 0x708dadf20d66db6;
1696    pub const ON_PERIPHERAL_DISCONNECTED: u64 = 0x4e4c6b979b2126df;
1697}
1698
1699pub mod privileged_peripheral_ordinals {
1700    pub const LISTEN_L2CAP: u64 = 0x39c6e9001d102338;
1701    pub const ADVERTISE: u64 = 0x2d9ec9260c32c17f;
1702    pub const START_ADVERTISING: u64 = 0x5875c1c575f00f7d;
1703    pub const ON_PEER_CONNECTED: u64 = 0x16135d464299e356;
1704}
1705
1706pub mod scan_result_watcher_ordinals {
1707    pub const WATCH: u64 = 0x713a122e949f301a;
1708}
1709
1710mod internal {
1711    use super::*;
1712    unsafe impl fidl::encoding::TypeMarker for AdvertisingModeHint {
1713        type Owned = Self;
1714
1715        #[inline(always)]
1716        fn inline_align(_context: fidl::encoding::Context) -> usize {
1717            std::mem::align_of::<u8>()
1718        }
1719
1720        #[inline(always)]
1721        fn inline_size(_context: fidl::encoding::Context) -> usize {
1722            std::mem::size_of::<u8>()
1723        }
1724
1725        #[inline(always)]
1726        fn encode_is_copy() -> bool {
1727            true
1728        }
1729
1730        #[inline(always)]
1731        fn decode_is_copy() -> bool {
1732            false
1733        }
1734    }
1735
1736    impl fidl::encoding::ValueTypeMarker for AdvertisingModeHint {
1737        type Borrowed<'a> = Self;
1738        #[inline(always)]
1739        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1740            *value
1741        }
1742    }
1743
1744    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1745        for AdvertisingModeHint
1746    {
1747        #[inline]
1748        unsafe fn encode(
1749            self,
1750            encoder: &mut fidl::encoding::Encoder<'_, D>,
1751            offset: usize,
1752            _depth: fidl::encoding::Depth,
1753        ) -> fidl::Result<()> {
1754            encoder.debug_check_bounds::<Self>(offset);
1755            encoder.write_num(self.into_primitive(), offset);
1756            Ok(())
1757        }
1758    }
1759
1760    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingModeHint {
1761        #[inline(always)]
1762        fn new_empty() -> Self {
1763            Self::VeryFast
1764        }
1765
1766        #[inline]
1767        unsafe fn decode(
1768            &mut self,
1769            decoder: &mut fidl::encoding::Decoder<'_, D>,
1770            offset: usize,
1771            _depth: fidl::encoding::Depth,
1772        ) -> fidl::Result<()> {
1773            decoder.debug_check_bounds::<Self>(offset);
1774            let prim = decoder.read_num::<u8>(offset);
1775
1776            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1777            Ok(())
1778        }
1779    }
1780    unsafe impl fidl::encoding::TypeMarker for CentralError {
1781        type Owned = Self;
1782
1783        #[inline(always)]
1784        fn inline_align(_context: fidl::encoding::Context) -> usize {
1785            std::mem::align_of::<u32>()
1786        }
1787
1788        #[inline(always)]
1789        fn inline_size(_context: fidl::encoding::Context) -> usize {
1790            std::mem::size_of::<u32>()
1791        }
1792
1793        #[inline(always)]
1794        fn encode_is_copy() -> bool {
1795            true
1796        }
1797
1798        #[inline(always)]
1799        fn decode_is_copy() -> bool {
1800            false
1801        }
1802    }
1803
1804    impl fidl::encoding::ValueTypeMarker for CentralError {
1805        type Borrowed<'a> = Self;
1806        #[inline(always)]
1807        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1808            *value
1809        }
1810    }
1811
1812    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for CentralError {
1813        #[inline]
1814        unsafe fn encode(
1815            self,
1816            encoder: &mut fidl::encoding::Encoder<'_, D>,
1817            offset: usize,
1818            _depth: fidl::encoding::Depth,
1819        ) -> fidl::Result<()> {
1820            encoder.debug_check_bounds::<Self>(offset);
1821            encoder.write_num(self.into_primitive(), offset);
1822            Ok(())
1823        }
1824    }
1825
1826    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CentralError {
1827        #[inline(always)]
1828        fn new_empty() -> Self {
1829            Self::Aborted
1830        }
1831
1832        #[inline]
1833        unsafe fn decode(
1834            &mut self,
1835            decoder: &mut fidl::encoding::Decoder<'_, D>,
1836            offset: usize,
1837            _depth: fidl::encoding::Depth,
1838        ) -> fidl::Result<()> {
1839            decoder.debug_check_bounds::<Self>(offset);
1840            let prim = decoder.read_num::<u32>(offset);
1841
1842            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1843            Ok(())
1844        }
1845    }
1846    unsafe impl fidl::encoding::TypeMarker for CigFramingOptions {
1847        type Owned = Self;
1848
1849        #[inline(always)]
1850        fn inline_align(_context: fidl::encoding::Context) -> usize {
1851            std::mem::align_of::<u32>()
1852        }
1853
1854        #[inline(always)]
1855        fn inline_size(_context: fidl::encoding::Context) -> usize {
1856            std::mem::size_of::<u32>()
1857        }
1858
1859        #[inline(always)]
1860        fn encode_is_copy() -> bool {
1861            true
1862        }
1863
1864        #[inline(always)]
1865        fn decode_is_copy() -> bool {
1866            false
1867        }
1868    }
1869
1870    impl fidl::encoding::ValueTypeMarker for CigFramingOptions {
1871        type Borrowed<'a> = Self;
1872        #[inline(always)]
1873        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1874            *value
1875        }
1876    }
1877
1878    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1879        for CigFramingOptions
1880    {
1881        #[inline]
1882        unsafe fn encode(
1883            self,
1884            encoder: &mut fidl::encoding::Encoder<'_, D>,
1885            offset: usize,
1886            _depth: fidl::encoding::Depth,
1887        ) -> fidl::Result<()> {
1888            encoder.debug_check_bounds::<Self>(offset);
1889            encoder.write_num(self.into_primitive(), offset);
1890            Ok(())
1891        }
1892    }
1893
1894    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CigFramingOptions {
1895        #[inline(always)]
1896        fn new_empty() -> Self {
1897            Self::Unframed
1898        }
1899
1900        #[inline]
1901        unsafe fn decode(
1902            &mut self,
1903            decoder: &mut fidl::encoding::Decoder<'_, D>,
1904            offset: usize,
1905            _depth: fidl::encoding::Depth,
1906        ) -> fidl::Result<()> {
1907            decoder.debug_check_bounds::<Self>(offset);
1908            let prim = decoder.read_num::<u32>(offset);
1909
1910            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1911            Ok(())
1912        }
1913    }
1914    unsafe impl fidl::encoding::TypeMarker for CigPacking {
1915        type Owned = Self;
1916
1917        #[inline(always)]
1918        fn inline_align(_context: fidl::encoding::Context) -> usize {
1919            std::mem::align_of::<u32>()
1920        }
1921
1922        #[inline(always)]
1923        fn inline_size(_context: fidl::encoding::Context) -> usize {
1924            std::mem::size_of::<u32>()
1925        }
1926
1927        #[inline(always)]
1928        fn encode_is_copy() -> bool {
1929            false
1930        }
1931
1932        #[inline(always)]
1933        fn decode_is_copy() -> bool {
1934            false
1935        }
1936    }
1937
1938    impl fidl::encoding::ValueTypeMarker for CigPacking {
1939        type Borrowed<'a> = Self;
1940        #[inline(always)]
1941        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1942            *value
1943        }
1944    }
1945
1946    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for CigPacking {
1947        #[inline]
1948        unsafe fn encode(
1949            self,
1950            encoder: &mut fidl::encoding::Encoder<'_, D>,
1951            offset: usize,
1952            _depth: fidl::encoding::Depth,
1953        ) -> fidl::Result<()> {
1954            encoder.debug_check_bounds::<Self>(offset);
1955            encoder.write_num(self.into_primitive(), offset);
1956            Ok(())
1957        }
1958    }
1959
1960    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CigPacking {
1961        #[inline(always)]
1962        fn new_empty() -> Self {
1963            Self::unknown()
1964        }
1965
1966        #[inline]
1967        unsafe fn decode(
1968            &mut self,
1969            decoder: &mut fidl::encoding::Decoder<'_, D>,
1970            offset: usize,
1971            _depth: fidl::encoding::Depth,
1972        ) -> fidl::Result<()> {
1973            decoder.debug_check_bounds::<Self>(offset);
1974            let prim = decoder.read_num::<u32>(offset);
1975
1976            *self = Self::from_primitive_allow_unknown(prim);
1977            Ok(())
1978        }
1979    }
1980    unsafe impl fidl::encoding::TypeMarker for CreateCigError {
1981        type Owned = Self;
1982
1983        #[inline(always)]
1984        fn inline_align(_context: fidl::encoding::Context) -> usize {
1985            std::mem::align_of::<u32>()
1986        }
1987
1988        #[inline(always)]
1989        fn inline_size(_context: fidl::encoding::Context) -> usize {
1990            std::mem::size_of::<u32>()
1991        }
1992
1993        #[inline(always)]
1994        fn encode_is_copy() -> bool {
1995            false
1996        }
1997
1998        #[inline(always)]
1999        fn decode_is_copy() -> bool {
2000            false
2001        }
2002    }
2003
2004    impl fidl::encoding::ValueTypeMarker for CreateCigError {
2005        type Borrowed<'a> = Self;
2006        #[inline(always)]
2007        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2008            *value
2009        }
2010    }
2011
2012    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for CreateCigError {
2013        #[inline]
2014        unsafe fn encode(
2015            self,
2016            encoder: &mut fidl::encoding::Encoder<'_, D>,
2017            offset: usize,
2018            _depth: fidl::encoding::Depth,
2019        ) -> fidl::Result<()> {
2020            encoder.debug_check_bounds::<Self>(offset);
2021            encoder.write_num(self.into_primitive(), offset);
2022            Ok(())
2023        }
2024    }
2025
2026    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CreateCigError {
2027        #[inline(always)]
2028        fn new_empty() -> Self {
2029            Self::unknown()
2030        }
2031
2032        #[inline]
2033        unsafe fn decode(
2034            &mut self,
2035            decoder: &mut fidl::encoding::Decoder<'_, D>,
2036            offset: usize,
2037            _depth: fidl::encoding::Depth,
2038        ) -> fidl::Result<()> {
2039            decoder.debug_check_bounds::<Self>(offset);
2040            let prim = decoder.read_num::<u32>(offset);
2041
2042            *self = Self::from_primitive_allow_unknown(prim);
2043            Ok(())
2044        }
2045    }
2046    unsafe impl fidl::encoding::TypeMarker for EstablishStreamsError {
2047        type Owned = Self;
2048
2049        #[inline(always)]
2050        fn inline_align(_context: fidl::encoding::Context) -> usize {
2051            std::mem::align_of::<u32>()
2052        }
2053
2054        #[inline(always)]
2055        fn inline_size(_context: fidl::encoding::Context) -> usize {
2056            std::mem::size_of::<u32>()
2057        }
2058
2059        #[inline(always)]
2060        fn encode_is_copy() -> bool {
2061            false
2062        }
2063
2064        #[inline(always)]
2065        fn decode_is_copy() -> bool {
2066            false
2067        }
2068    }
2069
2070    impl fidl::encoding::ValueTypeMarker for EstablishStreamsError {
2071        type Borrowed<'a> = Self;
2072        #[inline(always)]
2073        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2074            *value
2075        }
2076    }
2077
2078    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2079        for EstablishStreamsError
2080    {
2081        #[inline]
2082        unsafe fn encode(
2083            self,
2084            encoder: &mut fidl::encoding::Encoder<'_, D>,
2085            offset: usize,
2086            _depth: fidl::encoding::Depth,
2087        ) -> fidl::Result<()> {
2088            encoder.debug_check_bounds::<Self>(offset);
2089            encoder.write_num(self.into_primitive(), offset);
2090            Ok(())
2091        }
2092    }
2093
2094    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EstablishStreamsError {
2095        #[inline(always)]
2096        fn new_empty() -> Self {
2097            Self::unknown()
2098        }
2099
2100        #[inline]
2101        unsafe fn decode(
2102            &mut self,
2103            decoder: &mut fidl::encoding::Decoder<'_, D>,
2104            offset: usize,
2105            _depth: fidl::encoding::Depth,
2106        ) -> fidl::Result<()> {
2107            decoder.debug_check_bounds::<Self>(offset);
2108            let prim = decoder.read_num::<u32>(offset);
2109
2110            *self = Self::from_primitive_allow_unknown(prim);
2111            Ok(())
2112        }
2113    }
2114    unsafe impl fidl::encoding::TypeMarker for IsoPacketStatusFlag {
2115        type Owned = Self;
2116
2117        #[inline(always)]
2118        fn inline_align(_context: fidl::encoding::Context) -> usize {
2119            std::mem::align_of::<u8>()
2120        }
2121
2122        #[inline(always)]
2123        fn inline_size(_context: fidl::encoding::Context) -> usize {
2124            std::mem::size_of::<u8>()
2125        }
2126
2127        #[inline(always)]
2128        fn encode_is_copy() -> bool {
2129            true
2130        }
2131
2132        #[inline(always)]
2133        fn decode_is_copy() -> bool {
2134            false
2135        }
2136    }
2137
2138    impl fidl::encoding::ValueTypeMarker for IsoPacketStatusFlag {
2139        type Borrowed<'a> = Self;
2140        #[inline(always)]
2141        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2142            *value
2143        }
2144    }
2145
2146    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2147        for IsoPacketStatusFlag
2148    {
2149        #[inline]
2150        unsafe fn encode(
2151            self,
2152            encoder: &mut fidl::encoding::Encoder<'_, D>,
2153            offset: usize,
2154            _depth: fidl::encoding::Depth,
2155        ) -> fidl::Result<()> {
2156            encoder.debug_check_bounds::<Self>(offset);
2157            encoder.write_num(self.into_primitive(), offset);
2158            Ok(())
2159        }
2160    }
2161
2162    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IsoPacketStatusFlag {
2163        #[inline(always)]
2164        fn new_empty() -> Self {
2165            Self::ValidData
2166        }
2167
2168        #[inline]
2169        unsafe fn decode(
2170            &mut self,
2171            decoder: &mut fidl::encoding::Decoder<'_, D>,
2172            offset: usize,
2173            _depth: fidl::encoding::Depth,
2174        ) -> fidl::Result<()> {
2175            decoder.debug_check_bounds::<Self>(offset);
2176            let prim = decoder.read_num::<u8>(offset);
2177
2178            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2179            Ok(())
2180        }
2181    }
2182    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncError {
2183        type Owned = Self;
2184
2185        #[inline(always)]
2186        fn inline_align(_context: fidl::encoding::Context) -> usize {
2187            std::mem::align_of::<u32>()
2188        }
2189
2190        #[inline(always)]
2191        fn inline_size(_context: fidl::encoding::Context) -> usize {
2192            std::mem::size_of::<u32>()
2193        }
2194
2195        #[inline(always)]
2196        fn encode_is_copy() -> bool {
2197            false
2198        }
2199
2200        #[inline(always)]
2201        fn decode_is_copy() -> bool {
2202            false
2203        }
2204    }
2205
2206    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncError {
2207        type Borrowed<'a> = Self;
2208        #[inline(always)]
2209        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2210            *value
2211        }
2212    }
2213
2214    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2215        for PeriodicAdvertisingSyncError
2216    {
2217        #[inline]
2218        unsafe fn encode(
2219            self,
2220            encoder: &mut fidl::encoding::Encoder<'_, D>,
2221            offset: usize,
2222            _depth: fidl::encoding::Depth,
2223        ) -> fidl::Result<()> {
2224            encoder.debug_check_bounds::<Self>(offset);
2225            encoder.write_num(self.into_primitive(), offset);
2226            Ok(())
2227        }
2228    }
2229
2230    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2231        for PeriodicAdvertisingSyncError
2232    {
2233        #[inline(always)]
2234        fn new_empty() -> Self {
2235            Self::unknown()
2236        }
2237
2238        #[inline]
2239        unsafe fn decode(
2240            &mut self,
2241            decoder: &mut fidl::encoding::Decoder<'_, D>,
2242            offset: usize,
2243            _depth: fidl::encoding::Depth,
2244        ) -> fidl::Result<()> {
2245            decoder.debug_check_bounds::<Self>(offset);
2246            let prim = decoder.read_num::<u32>(offset);
2247
2248            *self = Self::from_primitive_allow_unknown(prim);
2249            Ok(())
2250        }
2251    }
2252    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncTransferError {
2253        type Owned = Self;
2254
2255        #[inline(always)]
2256        fn inline_align(_context: fidl::encoding::Context) -> usize {
2257            std::mem::align_of::<u32>()
2258        }
2259
2260        #[inline(always)]
2261        fn inline_size(_context: fidl::encoding::Context) -> usize {
2262            std::mem::size_of::<u32>()
2263        }
2264
2265        #[inline(always)]
2266        fn encode_is_copy() -> bool {
2267            false
2268        }
2269
2270        #[inline(always)]
2271        fn decode_is_copy() -> bool {
2272            false
2273        }
2274    }
2275
2276    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncTransferError {
2277        type Borrowed<'a> = Self;
2278        #[inline(always)]
2279        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2280            *value
2281        }
2282    }
2283
2284    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2285        for PeriodicAdvertisingSyncTransferError
2286    {
2287        #[inline]
2288        unsafe fn encode(
2289            self,
2290            encoder: &mut fidl::encoding::Encoder<'_, D>,
2291            offset: usize,
2292            _depth: fidl::encoding::Depth,
2293        ) -> fidl::Result<()> {
2294            encoder.debug_check_bounds::<Self>(offset);
2295            encoder.write_num(self.into_primitive(), offset);
2296            Ok(())
2297        }
2298    }
2299
2300    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2301        for PeriodicAdvertisingSyncTransferError
2302    {
2303        #[inline(always)]
2304        fn new_empty() -> Self {
2305            Self::unknown()
2306        }
2307
2308        #[inline]
2309        unsafe fn decode(
2310            &mut self,
2311            decoder: &mut fidl::encoding::Decoder<'_, D>,
2312            offset: usize,
2313            _depth: fidl::encoding::Depth,
2314        ) -> fidl::Result<()> {
2315            decoder.debug_check_bounds::<Self>(offset);
2316            let prim = decoder.read_num::<u32>(offset);
2317
2318            *self = Self::from_primitive_allow_unknown(prim);
2319            Ok(())
2320        }
2321    }
2322    unsafe impl fidl::encoding::TypeMarker for PeripheralError {
2323        type Owned = Self;
2324
2325        #[inline(always)]
2326        fn inline_align(_context: fidl::encoding::Context) -> usize {
2327            std::mem::align_of::<u32>()
2328        }
2329
2330        #[inline(always)]
2331        fn inline_size(_context: fidl::encoding::Context) -> usize {
2332            std::mem::size_of::<u32>()
2333        }
2334
2335        #[inline(always)]
2336        fn encode_is_copy() -> bool {
2337            true
2338        }
2339
2340        #[inline(always)]
2341        fn decode_is_copy() -> bool {
2342            false
2343        }
2344    }
2345
2346    impl fidl::encoding::ValueTypeMarker for PeripheralError {
2347        type Borrowed<'a> = Self;
2348        #[inline(always)]
2349        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2350            *value
2351        }
2352    }
2353
2354    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2355        for PeripheralError
2356    {
2357        #[inline]
2358        unsafe fn encode(
2359            self,
2360            encoder: &mut fidl::encoding::Encoder<'_, D>,
2361            offset: usize,
2362            _depth: fidl::encoding::Depth,
2363        ) -> fidl::Result<()> {
2364            encoder.debug_check_bounds::<Self>(offset);
2365            encoder.write_num(self.into_primitive(), offset);
2366            Ok(())
2367        }
2368    }
2369
2370    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PeripheralError {
2371        #[inline(always)]
2372        fn new_empty() -> Self {
2373            Self::NotSupported
2374        }
2375
2376        #[inline]
2377        unsafe fn decode(
2378            &mut self,
2379            decoder: &mut fidl::encoding::Decoder<'_, D>,
2380            offset: usize,
2381            _depth: fidl::encoding::Depth,
2382        ) -> fidl::Result<()> {
2383            decoder.debug_check_bounds::<Self>(offset);
2384            let prim = decoder.read_num::<u32>(offset);
2385
2386            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2387            Ok(())
2388        }
2389    }
2390    unsafe impl fidl::encoding::TypeMarker for PhysicalLayer {
2391        type Owned = Self;
2392
2393        #[inline(always)]
2394        fn inline_align(_context: fidl::encoding::Context) -> usize {
2395            std::mem::align_of::<u8>()
2396        }
2397
2398        #[inline(always)]
2399        fn inline_size(_context: fidl::encoding::Context) -> usize {
2400            std::mem::size_of::<u8>()
2401        }
2402
2403        #[inline(always)]
2404        fn encode_is_copy() -> bool {
2405            false
2406        }
2407
2408        #[inline(always)]
2409        fn decode_is_copy() -> bool {
2410            false
2411        }
2412    }
2413
2414    impl fidl::encoding::ValueTypeMarker for PhysicalLayer {
2415        type Borrowed<'a> = Self;
2416        #[inline(always)]
2417        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2418            *value
2419        }
2420    }
2421
2422    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PhysicalLayer {
2423        #[inline]
2424        unsafe fn encode(
2425            self,
2426            encoder: &mut fidl::encoding::Encoder<'_, D>,
2427            offset: usize,
2428            _depth: fidl::encoding::Depth,
2429        ) -> fidl::Result<()> {
2430            encoder.debug_check_bounds::<Self>(offset);
2431            encoder.write_num(self.into_primitive(), offset);
2432            Ok(())
2433        }
2434    }
2435
2436    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PhysicalLayer {
2437        #[inline(always)]
2438        fn new_empty() -> Self {
2439            Self::unknown()
2440        }
2441
2442        #[inline]
2443        unsafe fn decode(
2444            &mut self,
2445            decoder: &mut fidl::encoding::Decoder<'_, D>,
2446            offset: usize,
2447            _depth: fidl::encoding::Depth,
2448        ) -> fidl::Result<()> {
2449            decoder.debug_check_bounds::<Self>(offset);
2450            let prim = decoder.read_num::<u8>(offset);
2451
2452            *self = Self::from_primitive_allow_unknown(prim);
2453            Ok(())
2454        }
2455    }
2456
2457    impl fidl::encoding::ValueTypeMarker for AdvertisingDataDeprecated {
2458        type Borrowed<'a> = &'a Self;
2459        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2460            value
2461        }
2462    }
2463
2464    unsafe impl fidl::encoding::TypeMarker for AdvertisingDataDeprecated {
2465        type Owned = Self;
2466
2467        #[inline(always)]
2468        fn inline_align(_context: fidl::encoding::Context) -> usize {
2469            8
2470        }
2471
2472        #[inline(always)]
2473        fn inline_size(_context: fidl::encoding::Context) -> usize {
2474            112
2475        }
2476    }
2477
2478    unsafe impl<D: fidl::encoding::ResourceDialect>
2479        fidl::encoding::Encode<AdvertisingDataDeprecated, D> for &AdvertisingDataDeprecated
2480    {
2481        #[inline]
2482        unsafe fn encode(
2483            self,
2484            encoder: &mut fidl::encoding::Encoder<'_, D>,
2485            offset: usize,
2486            _depth: fidl::encoding::Depth,
2487        ) -> fidl::Result<()> {
2488            encoder.debug_check_bounds::<AdvertisingDataDeprecated>(offset);
2489            // Delegate to tuple encoding.
2490            fidl::encoding::Encode::<AdvertisingDataDeprecated, D>::encode(
2491                (
2492                    <fidl::encoding::Optional<fidl::encoding::BoundedString<248>> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
2493                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8> as fidl::encoding::ValueTypeMarker>::borrow(&self.tx_power_level),
2494                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16> as fidl::encoding::ValueTypeMarker>::borrow(&self.appearance),
2495                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>> as fidl::encoding::ValueTypeMarker>::borrow(&self.service_uuids),
2496                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<ServiceDataEntry>> as fidl::encoding::ValueTypeMarker>::borrow(&self.service_data),
2497                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<ManufacturerSpecificDataEntry>> as fidl::encoding::ValueTypeMarker>::borrow(&self.manufacturer_specific_data),
2498                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>> as fidl::encoding::ValueTypeMarker>::borrow(&self.solicited_service_uuids),
2499                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>> as fidl::encoding::ValueTypeMarker>::borrow(&self.uris),
2500                ),
2501                encoder, offset, _depth
2502            )
2503        }
2504    }
2505    unsafe impl<
2506        D: fidl::encoding::ResourceDialect,
2507        T0: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<248>>, D>,
2508        T1: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>, D>,
2509        T2: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>, D>,
2510        T3: fidl::encoding::Encode<
2511                fidl::encoding::Optional<
2512                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2513                >,
2514                D,
2515            >,
2516        T4: fidl::encoding::Encode<
2517                fidl::encoding::Optional<fidl::encoding::UnboundedVector<ServiceDataEntry>>,
2518                D,
2519            >,
2520        T5: fidl::encoding::Encode<
2521                fidl::encoding::Optional<
2522                    fidl::encoding::UnboundedVector<ManufacturerSpecificDataEntry>,
2523                >,
2524                D,
2525            >,
2526        T6: fidl::encoding::Encode<
2527                fidl::encoding::Optional<
2528                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2529                >,
2530                D,
2531            >,
2532        T7: fidl::encoding::Encode<
2533                fidl::encoding::Optional<
2534                    fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
2535                >,
2536                D,
2537            >,
2538    > fidl::encoding::Encode<AdvertisingDataDeprecated, D> for (T0, T1, T2, T3, T4, T5, T6, T7)
2539    {
2540        #[inline]
2541        unsafe fn encode(
2542            self,
2543            encoder: &mut fidl::encoding::Encoder<'_, D>,
2544            offset: usize,
2545            depth: fidl::encoding::Depth,
2546        ) -> fidl::Result<()> {
2547            encoder.debug_check_bounds::<AdvertisingDataDeprecated>(offset);
2548            // Zero out padding regions. There's no need to apply masks
2549            // because the unmasked parts will be overwritten by fields.
2550            // Write the fields.
2551            self.0.encode(encoder, offset + 0, depth)?;
2552            self.1.encode(encoder, offset + 16, depth)?;
2553            self.2.encode(encoder, offset + 24, depth)?;
2554            self.3.encode(encoder, offset + 32, depth)?;
2555            self.4.encode(encoder, offset + 48, depth)?;
2556            self.5.encode(encoder, offset + 64, depth)?;
2557            self.6.encode(encoder, offset + 80, depth)?;
2558            self.7.encode(encoder, offset + 96, depth)?;
2559            Ok(())
2560        }
2561    }
2562
2563    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2564        for AdvertisingDataDeprecated
2565    {
2566        #[inline(always)]
2567        fn new_empty() -> Self {
2568            Self {
2569                name: fidl::new_empty!(
2570                    fidl::encoding::Optional<fidl::encoding::BoundedString<248>>,
2571                    D
2572                ),
2573                tx_power_level: fidl::new_empty!(
2574                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
2575                    D
2576                ),
2577                appearance: fidl::new_empty!(
2578                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
2579                    D
2580                ),
2581                service_uuids: fidl::new_empty!(
2582                    fidl::encoding::Optional<
2583                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2584                    >,
2585                    D
2586                ),
2587                service_data: fidl::new_empty!(
2588                    fidl::encoding::Optional<fidl::encoding::UnboundedVector<ServiceDataEntry>>,
2589                    D
2590                ),
2591                manufacturer_specific_data: fidl::new_empty!(
2592                    fidl::encoding::Optional<
2593                        fidl::encoding::UnboundedVector<ManufacturerSpecificDataEntry>,
2594                    >,
2595                    D
2596                ),
2597                solicited_service_uuids: fidl::new_empty!(
2598                    fidl::encoding::Optional<
2599                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2600                    >,
2601                    D
2602                ),
2603                uris: fidl::new_empty!(
2604                    fidl::encoding::Optional<
2605                        fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
2606                    >,
2607                    D
2608                ),
2609            }
2610        }
2611
2612        #[inline]
2613        unsafe fn decode(
2614            &mut self,
2615            decoder: &mut fidl::encoding::Decoder<'_, D>,
2616            offset: usize,
2617            _depth: fidl::encoding::Depth,
2618        ) -> fidl::Result<()> {
2619            decoder.debug_check_bounds::<Self>(offset);
2620            // Verify that padding bytes are zero.
2621            fidl::decode!(
2622                fidl::encoding::Optional<fidl::encoding::BoundedString<248>>,
2623                D,
2624                &mut self.name,
2625                decoder,
2626                offset + 0,
2627                _depth
2628            )?;
2629            fidl::decode!(
2630                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
2631                D,
2632                &mut self.tx_power_level,
2633                decoder,
2634                offset + 16,
2635                _depth
2636            )?;
2637            fidl::decode!(
2638                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
2639                D,
2640                &mut self.appearance,
2641                decoder,
2642                offset + 24,
2643                _depth
2644            )?;
2645            fidl::decode!(
2646                fidl::encoding::Optional<
2647                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2648                >,
2649                D,
2650                &mut self.service_uuids,
2651                decoder,
2652                offset + 32,
2653                _depth
2654            )?;
2655            fidl::decode!(
2656                fidl::encoding::Optional<fidl::encoding::UnboundedVector<ServiceDataEntry>>,
2657                D,
2658                &mut self.service_data,
2659                decoder,
2660                offset + 48,
2661                _depth
2662            )?;
2663            fidl::decode!(
2664                fidl::encoding::Optional<
2665                    fidl::encoding::UnboundedVector<ManufacturerSpecificDataEntry>,
2666                >,
2667                D,
2668                &mut self.manufacturer_specific_data,
2669                decoder,
2670                offset + 64,
2671                _depth
2672            )?;
2673            fidl::decode!(
2674                fidl::encoding::Optional<
2675                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2676                >,
2677                D,
2678                &mut self.solicited_service_uuids,
2679                decoder,
2680                offset + 80,
2681                _depth
2682            )?;
2683            fidl::decode!(
2684                fidl::encoding::Optional<
2685                    fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
2686                >,
2687                D,
2688                &mut self.uris,
2689                decoder,
2690                offset + 96,
2691                _depth
2692            )?;
2693            Ok(())
2694        }
2695    }
2696
2697    impl fidl::encoding::ValueTypeMarker for CentralConnectPeripheralResponse {
2698        type Borrowed<'a> = &'a Self;
2699        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2700            value
2701        }
2702    }
2703
2704    unsafe impl fidl::encoding::TypeMarker for CentralConnectPeripheralResponse {
2705        type Owned = Self;
2706
2707        #[inline(always)]
2708        fn inline_align(_context: fidl::encoding::Context) -> usize {
2709            8
2710        }
2711
2712        #[inline(always)]
2713        fn inline_size(_context: fidl::encoding::Context) -> usize {
2714            8
2715        }
2716    }
2717
2718    unsafe impl<D: fidl::encoding::ResourceDialect>
2719        fidl::encoding::Encode<CentralConnectPeripheralResponse, D>
2720        for &CentralConnectPeripheralResponse
2721    {
2722        #[inline]
2723        unsafe fn encode(
2724            self,
2725            encoder: &mut fidl::encoding::Encoder<'_, D>,
2726            offset: usize,
2727            _depth: fidl::encoding::Depth,
2728        ) -> fidl::Result<()> {
2729            encoder.debug_check_bounds::<CentralConnectPeripheralResponse>(offset);
2730            // Delegate to tuple encoding.
2731            fidl::encoding::Encode::<CentralConnectPeripheralResponse, D>::encode(
2732                (
2733                    <fidl_fuchsia_bluetooth__common::Status as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
2734                ),
2735                encoder, offset, _depth
2736            )
2737        }
2738    }
2739    unsafe impl<
2740        D: fidl::encoding::ResourceDialect,
2741        T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::Status, D>,
2742    > fidl::encoding::Encode<CentralConnectPeripheralResponse, D> for (T0,)
2743    {
2744        #[inline]
2745        unsafe fn encode(
2746            self,
2747            encoder: &mut fidl::encoding::Encoder<'_, D>,
2748            offset: usize,
2749            depth: fidl::encoding::Depth,
2750        ) -> fidl::Result<()> {
2751            encoder.debug_check_bounds::<CentralConnectPeripheralResponse>(offset);
2752            // Zero out padding regions. There's no need to apply masks
2753            // because the unmasked parts will be overwritten by fields.
2754            // Write the fields.
2755            self.0.encode(encoder, offset + 0, depth)?;
2756            Ok(())
2757        }
2758    }
2759
2760    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2761        for CentralConnectPeripheralResponse
2762    {
2763        #[inline(always)]
2764        fn new_empty() -> Self {
2765            Self { status: fidl::new_empty!(fidl_fuchsia_bluetooth__common::Status, D) }
2766        }
2767
2768        #[inline]
2769        unsafe fn decode(
2770            &mut self,
2771            decoder: &mut fidl::encoding::Decoder<'_, D>,
2772            offset: usize,
2773            _depth: fidl::encoding::Depth,
2774        ) -> fidl::Result<()> {
2775            decoder.debug_check_bounds::<Self>(offset);
2776            // Verify that padding bytes are zero.
2777            fidl::decode!(
2778                fidl_fuchsia_bluetooth__common::Status,
2779                D,
2780                &mut self.status,
2781                decoder,
2782                offset + 0,
2783                _depth
2784            )?;
2785            Ok(())
2786        }
2787    }
2788
2789    impl fidl::encoding::ValueTypeMarker for CentralDisconnectPeripheralRequest {
2790        type Borrowed<'a> = &'a Self;
2791        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2792            value
2793        }
2794    }
2795
2796    unsafe impl fidl::encoding::TypeMarker for CentralDisconnectPeripheralRequest {
2797        type Owned = Self;
2798
2799        #[inline(always)]
2800        fn inline_align(_context: fidl::encoding::Context) -> usize {
2801            8
2802        }
2803
2804        #[inline(always)]
2805        fn inline_size(_context: fidl::encoding::Context) -> usize {
2806            16
2807        }
2808    }
2809
2810    unsafe impl<D: fidl::encoding::ResourceDialect>
2811        fidl::encoding::Encode<CentralDisconnectPeripheralRequest, D>
2812        for &CentralDisconnectPeripheralRequest
2813    {
2814        #[inline]
2815        unsafe fn encode(
2816            self,
2817            encoder: &mut fidl::encoding::Encoder<'_, D>,
2818            offset: usize,
2819            _depth: fidl::encoding::Depth,
2820        ) -> fidl::Result<()> {
2821            encoder.debug_check_bounds::<CentralDisconnectPeripheralRequest>(offset);
2822            // Delegate to tuple encoding.
2823            fidl::encoding::Encode::<CentralDisconnectPeripheralRequest, D>::encode(
2824                (<fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow(
2825                    &self.identifier,
2826                ),),
2827                encoder,
2828                offset,
2829                _depth,
2830            )
2831        }
2832    }
2833    unsafe impl<
2834        D: fidl::encoding::ResourceDialect,
2835        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<16>, D>,
2836    > fidl::encoding::Encode<CentralDisconnectPeripheralRequest, D> for (T0,)
2837    {
2838        #[inline]
2839        unsafe fn encode(
2840            self,
2841            encoder: &mut fidl::encoding::Encoder<'_, D>,
2842            offset: usize,
2843            depth: fidl::encoding::Depth,
2844        ) -> fidl::Result<()> {
2845            encoder.debug_check_bounds::<CentralDisconnectPeripheralRequest>(offset);
2846            // Zero out padding regions. There's no need to apply masks
2847            // because the unmasked parts will be overwritten by fields.
2848            // Write the fields.
2849            self.0.encode(encoder, offset + 0, depth)?;
2850            Ok(())
2851        }
2852    }
2853
2854    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2855        for CentralDisconnectPeripheralRequest
2856    {
2857        #[inline(always)]
2858        fn new_empty() -> Self {
2859            Self { identifier: fidl::new_empty!(fidl::encoding::BoundedString<16>, D) }
2860        }
2861
2862        #[inline]
2863        unsafe fn decode(
2864            &mut self,
2865            decoder: &mut fidl::encoding::Decoder<'_, D>,
2866            offset: usize,
2867            _depth: fidl::encoding::Depth,
2868        ) -> fidl::Result<()> {
2869            decoder.debug_check_bounds::<Self>(offset);
2870            // Verify that padding bytes are zero.
2871            fidl::decode!(
2872                fidl::encoding::BoundedString<16>,
2873                D,
2874                &mut self.identifier,
2875                decoder,
2876                offset + 0,
2877                _depth
2878            )?;
2879            Ok(())
2880        }
2881    }
2882
2883    impl fidl::encoding::ValueTypeMarker for CentralDisconnectPeripheralResponse {
2884        type Borrowed<'a> = &'a Self;
2885        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2886            value
2887        }
2888    }
2889
2890    unsafe impl fidl::encoding::TypeMarker for CentralDisconnectPeripheralResponse {
2891        type Owned = Self;
2892
2893        #[inline(always)]
2894        fn inline_align(_context: fidl::encoding::Context) -> usize {
2895            8
2896        }
2897
2898        #[inline(always)]
2899        fn inline_size(_context: fidl::encoding::Context) -> usize {
2900            8
2901        }
2902    }
2903
2904    unsafe impl<D: fidl::encoding::ResourceDialect>
2905        fidl::encoding::Encode<CentralDisconnectPeripheralResponse, D>
2906        for &CentralDisconnectPeripheralResponse
2907    {
2908        #[inline]
2909        unsafe fn encode(
2910            self,
2911            encoder: &mut fidl::encoding::Encoder<'_, D>,
2912            offset: usize,
2913            _depth: fidl::encoding::Depth,
2914        ) -> fidl::Result<()> {
2915            encoder.debug_check_bounds::<CentralDisconnectPeripheralResponse>(offset);
2916            // Delegate to tuple encoding.
2917            fidl::encoding::Encode::<CentralDisconnectPeripheralResponse, D>::encode(
2918                (
2919                    <fidl_fuchsia_bluetooth__common::Status as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
2920                ),
2921                encoder, offset, _depth
2922            )
2923        }
2924    }
2925    unsafe impl<
2926        D: fidl::encoding::ResourceDialect,
2927        T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::Status, D>,
2928    > fidl::encoding::Encode<CentralDisconnectPeripheralResponse, D> for (T0,)
2929    {
2930        #[inline]
2931        unsafe fn encode(
2932            self,
2933            encoder: &mut fidl::encoding::Encoder<'_, D>,
2934            offset: usize,
2935            depth: fidl::encoding::Depth,
2936        ) -> fidl::Result<()> {
2937            encoder.debug_check_bounds::<CentralDisconnectPeripheralResponse>(offset);
2938            // Zero out padding regions. There's no need to apply masks
2939            // because the unmasked parts will be overwritten by fields.
2940            // Write the fields.
2941            self.0.encode(encoder, offset + 0, depth)?;
2942            Ok(())
2943        }
2944    }
2945
2946    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2947        for CentralDisconnectPeripheralResponse
2948    {
2949        #[inline(always)]
2950        fn new_empty() -> Self {
2951            Self { status: fidl::new_empty!(fidl_fuchsia_bluetooth__common::Status, D) }
2952        }
2953
2954        #[inline]
2955        unsafe fn decode(
2956            &mut self,
2957            decoder: &mut fidl::encoding::Decoder<'_, D>,
2958            offset: usize,
2959            _depth: fidl::encoding::Depth,
2960        ) -> fidl::Result<()> {
2961            decoder.debug_check_bounds::<Self>(offset);
2962            // Verify that padding bytes are zero.
2963            fidl::decode!(
2964                fidl_fuchsia_bluetooth__common::Status,
2965                D,
2966                &mut self.status,
2967                decoder,
2968                offset + 0,
2969                _depth
2970            )?;
2971            Ok(())
2972        }
2973    }
2974
2975    impl fidl::encoding::ValueTypeMarker for CentralGetPeripheralRequest {
2976        type Borrowed<'a> = &'a Self;
2977        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2978            value
2979        }
2980    }
2981
2982    unsafe impl fidl::encoding::TypeMarker for CentralGetPeripheralRequest {
2983        type Owned = Self;
2984
2985        #[inline(always)]
2986        fn inline_align(_context: fidl::encoding::Context) -> usize {
2987            8
2988        }
2989
2990        #[inline(always)]
2991        fn inline_size(_context: fidl::encoding::Context) -> usize {
2992            16
2993        }
2994    }
2995
2996    unsafe impl<D: fidl::encoding::ResourceDialect>
2997        fidl::encoding::Encode<CentralGetPeripheralRequest, D> for &CentralGetPeripheralRequest
2998    {
2999        #[inline]
3000        unsafe fn encode(
3001            self,
3002            encoder: &mut fidl::encoding::Encoder<'_, D>,
3003            offset: usize,
3004            _depth: fidl::encoding::Depth,
3005        ) -> fidl::Result<()> {
3006            encoder.debug_check_bounds::<CentralGetPeripheralRequest>(offset);
3007            // Delegate to tuple encoding.
3008            fidl::encoding::Encode::<CentralGetPeripheralRequest, D>::encode(
3009                (<fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow(
3010                    &self.identifier,
3011                ),),
3012                encoder,
3013                offset,
3014                _depth,
3015            )
3016        }
3017    }
3018    unsafe impl<
3019        D: fidl::encoding::ResourceDialect,
3020        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<16>, D>,
3021    > fidl::encoding::Encode<CentralGetPeripheralRequest, D> for (T0,)
3022    {
3023        #[inline]
3024        unsafe fn encode(
3025            self,
3026            encoder: &mut fidl::encoding::Encoder<'_, D>,
3027            offset: usize,
3028            depth: fidl::encoding::Depth,
3029        ) -> fidl::Result<()> {
3030            encoder.debug_check_bounds::<CentralGetPeripheralRequest>(offset);
3031            // Zero out padding regions. There's no need to apply masks
3032            // because the unmasked parts will be overwritten by fields.
3033            // Write the fields.
3034            self.0.encode(encoder, offset + 0, depth)?;
3035            Ok(())
3036        }
3037    }
3038
3039    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3040        for CentralGetPeripheralRequest
3041    {
3042        #[inline(always)]
3043        fn new_empty() -> Self {
3044            Self { identifier: fidl::new_empty!(fidl::encoding::BoundedString<16>, D) }
3045        }
3046
3047        #[inline]
3048        unsafe fn decode(
3049            &mut self,
3050            decoder: &mut fidl::encoding::Decoder<'_, D>,
3051            offset: usize,
3052            _depth: fidl::encoding::Depth,
3053        ) -> fidl::Result<()> {
3054            decoder.debug_check_bounds::<Self>(offset);
3055            // Verify that padding bytes are zero.
3056            fidl::decode!(
3057                fidl::encoding::BoundedString<16>,
3058                D,
3059                &mut self.identifier,
3060                decoder,
3061                offset + 0,
3062                _depth
3063            )?;
3064            Ok(())
3065        }
3066    }
3067
3068    impl fidl::encoding::ValueTypeMarker for CentralGetPeripheralResponse {
3069        type Borrowed<'a> = &'a Self;
3070        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3071            value
3072        }
3073    }
3074
3075    unsafe impl fidl::encoding::TypeMarker for CentralGetPeripheralResponse {
3076        type Owned = Self;
3077
3078        #[inline(always)]
3079        fn inline_align(_context: fidl::encoding::Context) -> usize {
3080            8
3081        }
3082
3083        #[inline(always)]
3084        fn inline_size(_context: fidl::encoding::Context) -> usize {
3085            8
3086        }
3087    }
3088
3089    unsafe impl<D: fidl::encoding::ResourceDialect>
3090        fidl::encoding::Encode<CentralGetPeripheralResponse, D> for &CentralGetPeripheralResponse
3091    {
3092        #[inline]
3093        unsafe fn encode(
3094            self,
3095            encoder: &mut fidl::encoding::Encoder<'_, D>,
3096            offset: usize,
3097            _depth: fidl::encoding::Depth,
3098        ) -> fidl::Result<()> {
3099            encoder.debug_check_bounds::<CentralGetPeripheralResponse>(offset);
3100            // Delegate to tuple encoding.
3101            fidl::encoding::Encode::<CentralGetPeripheralResponse, D>::encode(
3102                (<fidl::encoding::Boxed<RemoteDevice> as fidl::encoding::ValueTypeMarker>::borrow(
3103                    &self.peripheral,
3104                ),),
3105                encoder,
3106                offset,
3107                _depth,
3108            )
3109        }
3110    }
3111    unsafe impl<
3112        D: fidl::encoding::ResourceDialect,
3113        T0: fidl::encoding::Encode<fidl::encoding::Boxed<RemoteDevice>, D>,
3114    > fidl::encoding::Encode<CentralGetPeripheralResponse, D> for (T0,)
3115    {
3116        #[inline]
3117        unsafe fn encode(
3118            self,
3119            encoder: &mut fidl::encoding::Encoder<'_, D>,
3120            offset: usize,
3121            depth: fidl::encoding::Depth,
3122        ) -> fidl::Result<()> {
3123            encoder.debug_check_bounds::<CentralGetPeripheralResponse>(offset);
3124            // Zero out padding regions. There's no need to apply masks
3125            // because the unmasked parts will be overwritten by fields.
3126            // Write the fields.
3127            self.0.encode(encoder, offset + 0, depth)?;
3128            Ok(())
3129        }
3130    }
3131
3132    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3133        for CentralGetPeripheralResponse
3134    {
3135        #[inline(always)]
3136        fn new_empty() -> Self {
3137            Self { peripheral: fidl::new_empty!(fidl::encoding::Boxed<RemoteDevice>, D) }
3138        }
3139
3140        #[inline]
3141        unsafe fn decode(
3142            &mut self,
3143            decoder: &mut fidl::encoding::Decoder<'_, D>,
3144            offset: usize,
3145            _depth: fidl::encoding::Depth,
3146        ) -> fidl::Result<()> {
3147            decoder.debug_check_bounds::<Self>(offset);
3148            // Verify that padding bytes are zero.
3149            fidl::decode!(
3150                fidl::encoding::Boxed<RemoteDevice>,
3151                D,
3152                &mut self.peripheral,
3153                decoder,
3154                offset + 0,
3155                _depth
3156            )?;
3157            Ok(())
3158        }
3159    }
3160
3161    impl fidl::encoding::ValueTypeMarker for CentralGetPeripheralsRequest {
3162        type Borrowed<'a> = &'a Self;
3163        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3164            value
3165        }
3166    }
3167
3168    unsafe impl fidl::encoding::TypeMarker for CentralGetPeripheralsRequest {
3169        type Owned = Self;
3170
3171        #[inline(always)]
3172        fn inline_align(_context: fidl::encoding::Context) -> usize {
3173            8
3174        }
3175
3176        #[inline(always)]
3177        fn inline_size(_context: fidl::encoding::Context) -> usize {
3178            16
3179        }
3180    }
3181
3182    unsafe impl<D: fidl::encoding::ResourceDialect>
3183        fidl::encoding::Encode<CentralGetPeripheralsRequest, D> for &CentralGetPeripheralsRequest
3184    {
3185        #[inline]
3186        unsafe fn encode(
3187            self,
3188            encoder: &mut fidl::encoding::Encoder<'_, D>,
3189            offset: usize,
3190            _depth: fidl::encoding::Depth,
3191        ) -> fidl::Result<()> {
3192            encoder.debug_check_bounds::<CentralGetPeripheralsRequest>(offset);
3193            // Delegate to tuple encoding.
3194            fidl::encoding::Encode::<CentralGetPeripheralsRequest, D>::encode(
3195                (<fidl::encoding::Optional<
3196                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
3197                > as fidl::encoding::ValueTypeMarker>::borrow(&self.service_uuids),),
3198                encoder,
3199                offset,
3200                _depth,
3201            )
3202        }
3203    }
3204    unsafe impl<
3205        D: fidl::encoding::ResourceDialect,
3206        T0: fidl::encoding::Encode<
3207                fidl::encoding::Optional<
3208                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
3209                >,
3210                D,
3211            >,
3212    > fidl::encoding::Encode<CentralGetPeripheralsRequest, D> for (T0,)
3213    {
3214        #[inline]
3215        unsafe fn encode(
3216            self,
3217            encoder: &mut fidl::encoding::Encoder<'_, D>,
3218            offset: usize,
3219            depth: fidl::encoding::Depth,
3220        ) -> fidl::Result<()> {
3221            encoder.debug_check_bounds::<CentralGetPeripheralsRequest>(offset);
3222            // Zero out padding regions. There's no need to apply masks
3223            // because the unmasked parts will be overwritten by fields.
3224            // Write the fields.
3225            self.0.encode(encoder, offset + 0, depth)?;
3226            Ok(())
3227        }
3228    }
3229
3230    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3231        for CentralGetPeripheralsRequest
3232    {
3233        #[inline(always)]
3234        fn new_empty() -> Self {
3235            Self {
3236                service_uuids: fidl::new_empty!(
3237                    fidl::encoding::Optional<
3238                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
3239                    >,
3240                    D
3241                ),
3242            }
3243        }
3244
3245        #[inline]
3246        unsafe fn decode(
3247            &mut self,
3248            decoder: &mut fidl::encoding::Decoder<'_, D>,
3249            offset: usize,
3250            _depth: fidl::encoding::Depth,
3251        ) -> fidl::Result<()> {
3252            decoder.debug_check_bounds::<Self>(offset);
3253            // Verify that padding bytes are zero.
3254            fidl::decode!(
3255                fidl::encoding::Optional<
3256                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
3257                >,
3258                D,
3259                &mut self.service_uuids,
3260                decoder,
3261                offset + 0,
3262                _depth
3263            )?;
3264            Ok(())
3265        }
3266    }
3267
3268    impl fidl::encoding::ValueTypeMarker for CentralGetPeripheralsResponse {
3269        type Borrowed<'a> = &'a Self;
3270        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3271            value
3272        }
3273    }
3274
3275    unsafe impl fidl::encoding::TypeMarker for CentralGetPeripheralsResponse {
3276        type Owned = Self;
3277
3278        #[inline(always)]
3279        fn inline_align(_context: fidl::encoding::Context) -> usize {
3280            8
3281        }
3282
3283        #[inline(always)]
3284        fn inline_size(_context: fidl::encoding::Context) -> usize {
3285            16
3286        }
3287    }
3288
3289    unsafe impl<D: fidl::encoding::ResourceDialect>
3290        fidl::encoding::Encode<CentralGetPeripheralsResponse, D>
3291        for &CentralGetPeripheralsResponse
3292    {
3293        #[inline]
3294        unsafe fn encode(
3295            self,
3296            encoder: &mut fidl::encoding::Encoder<'_, D>,
3297            offset: usize,
3298            _depth: fidl::encoding::Depth,
3299        ) -> fidl::Result<()> {
3300            encoder.debug_check_bounds::<CentralGetPeripheralsResponse>(offset);
3301            // Delegate to tuple encoding.
3302            fidl::encoding::Encode::<CentralGetPeripheralsResponse, D>::encode(
3303                (
3304                    <fidl::encoding::UnboundedVector<RemoteDevice> as fidl::encoding::ValueTypeMarker>::borrow(&self.peripherals),
3305                ),
3306                encoder, offset, _depth
3307            )
3308        }
3309    }
3310    unsafe impl<
3311        D: fidl::encoding::ResourceDialect,
3312        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<RemoteDevice>, D>,
3313    > fidl::encoding::Encode<CentralGetPeripheralsResponse, D> for (T0,)
3314    {
3315        #[inline]
3316        unsafe fn encode(
3317            self,
3318            encoder: &mut fidl::encoding::Encoder<'_, D>,
3319            offset: usize,
3320            depth: fidl::encoding::Depth,
3321        ) -> fidl::Result<()> {
3322            encoder.debug_check_bounds::<CentralGetPeripheralsResponse>(offset);
3323            // Zero out padding regions. There's no need to apply masks
3324            // because the unmasked parts will be overwritten by fields.
3325            // Write the fields.
3326            self.0.encode(encoder, offset + 0, depth)?;
3327            Ok(())
3328        }
3329    }
3330
3331    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3332        for CentralGetPeripheralsResponse
3333    {
3334        #[inline(always)]
3335        fn new_empty() -> Self {
3336            Self { peripherals: fidl::new_empty!(fidl::encoding::UnboundedVector<RemoteDevice>, D) }
3337        }
3338
3339        #[inline]
3340        unsafe fn decode(
3341            &mut self,
3342            decoder: &mut fidl::encoding::Decoder<'_, D>,
3343            offset: usize,
3344            _depth: fidl::encoding::Depth,
3345        ) -> fidl::Result<()> {
3346            decoder.debug_check_bounds::<Self>(offset);
3347            // Verify that padding bytes are zero.
3348            fidl::decode!(
3349                fidl::encoding::UnboundedVector<RemoteDevice>,
3350                D,
3351                &mut self.peripherals,
3352                decoder,
3353                offset + 0,
3354                _depth
3355            )?;
3356            Ok(())
3357        }
3358    }
3359
3360    impl fidl::encoding::ValueTypeMarker for CentralOnDeviceDiscoveredRequest {
3361        type Borrowed<'a> = &'a Self;
3362        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3363            value
3364        }
3365    }
3366
3367    unsafe impl fidl::encoding::TypeMarker for CentralOnDeviceDiscoveredRequest {
3368        type Owned = Self;
3369
3370        #[inline(always)]
3371        fn inline_align(_context: fidl::encoding::Context) -> usize {
3372            8
3373        }
3374
3375        #[inline(always)]
3376        fn inline_size(_context: fidl::encoding::Context) -> usize {
3377            40
3378        }
3379    }
3380
3381    unsafe impl<D: fidl::encoding::ResourceDialect>
3382        fidl::encoding::Encode<CentralOnDeviceDiscoveredRequest, D>
3383        for &CentralOnDeviceDiscoveredRequest
3384    {
3385        #[inline]
3386        unsafe fn encode(
3387            self,
3388            encoder: &mut fidl::encoding::Encoder<'_, D>,
3389            offset: usize,
3390            _depth: fidl::encoding::Depth,
3391        ) -> fidl::Result<()> {
3392            encoder.debug_check_bounds::<CentralOnDeviceDiscoveredRequest>(offset);
3393            // Delegate to tuple encoding.
3394            fidl::encoding::Encode::<CentralOnDeviceDiscoveredRequest, D>::encode(
3395                (<RemoteDevice as fidl::encoding::ValueTypeMarker>::borrow(&self.device),),
3396                encoder,
3397                offset,
3398                _depth,
3399            )
3400        }
3401    }
3402    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RemoteDevice, D>>
3403        fidl::encoding::Encode<CentralOnDeviceDiscoveredRequest, D> for (T0,)
3404    {
3405        #[inline]
3406        unsafe fn encode(
3407            self,
3408            encoder: &mut fidl::encoding::Encoder<'_, D>,
3409            offset: usize,
3410            depth: fidl::encoding::Depth,
3411        ) -> fidl::Result<()> {
3412            encoder.debug_check_bounds::<CentralOnDeviceDiscoveredRequest>(offset);
3413            // Zero out padding regions. There's no need to apply masks
3414            // because the unmasked parts will be overwritten by fields.
3415            // Write the fields.
3416            self.0.encode(encoder, offset + 0, depth)?;
3417            Ok(())
3418        }
3419    }
3420
3421    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3422        for CentralOnDeviceDiscoveredRequest
3423    {
3424        #[inline(always)]
3425        fn new_empty() -> Self {
3426            Self { device: fidl::new_empty!(RemoteDevice, D) }
3427        }
3428
3429        #[inline]
3430        unsafe fn decode(
3431            &mut self,
3432            decoder: &mut fidl::encoding::Decoder<'_, D>,
3433            offset: usize,
3434            _depth: fidl::encoding::Depth,
3435        ) -> fidl::Result<()> {
3436            decoder.debug_check_bounds::<Self>(offset);
3437            // Verify that padding bytes are zero.
3438            fidl::decode!(RemoteDevice, D, &mut self.device, decoder, offset + 0, _depth)?;
3439            Ok(())
3440        }
3441    }
3442
3443    impl fidl::encoding::ValueTypeMarker for CentralOnPeripheralDisconnectedRequest {
3444        type Borrowed<'a> = &'a Self;
3445        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3446            value
3447        }
3448    }
3449
3450    unsafe impl fidl::encoding::TypeMarker for CentralOnPeripheralDisconnectedRequest {
3451        type Owned = Self;
3452
3453        #[inline(always)]
3454        fn inline_align(_context: fidl::encoding::Context) -> usize {
3455            8
3456        }
3457
3458        #[inline(always)]
3459        fn inline_size(_context: fidl::encoding::Context) -> usize {
3460            16
3461        }
3462    }
3463
3464    unsafe impl<D: fidl::encoding::ResourceDialect>
3465        fidl::encoding::Encode<CentralOnPeripheralDisconnectedRequest, D>
3466        for &CentralOnPeripheralDisconnectedRequest
3467    {
3468        #[inline]
3469        unsafe fn encode(
3470            self,
3471            encoder: &mut fidl::encoding::Encoder<'_, D>,
3472            offset: usize,
3473            _depth: fidl::encoding::Depth,
3474        ) -> fidl::Result<()> {
3475            encoder.debug_check_bounds::<CentralOnPeripheralDisconnectedRequest>(offset);
3476            // Delegate to tuple encoding.
3477            fidl::encoding::Encode::<CentralOnPeripheralDisconnectedRequest, D>::encode(
3478                (<fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow(
3479                    &self.identifier,
3480                ),),
3481                encoder,
3482                offset,
3483                _depth,
3484            )
3485        }
3486    }
3487    unsafe impl<
3488        D: fidl::encoding::ResourceDialect,
3489        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<16>, D>,
3490    > fidl::encoding::Encode<CentralOnPeripheralDisconnectedRequest, D> for (T0,)
3491    {
3492        #[inline]
3493        unsafe fn encode(
3494            self,
3495            encoder: &mut fidl::encoding::Encoder<'_, D>,
3496            offset: usize,
3497            depth: fidl::encoding::Depth,
3498        ) -> fidl::Result<()> {
3499            encoder.debug_check_bounds::<CentralOnPeripheralDisconnectedRequest>(offset);
3500            // Zero out padding regions. There's no need to apply masks
3501            // because the unmasked parts will be overwritten by fields.
3502            // Write the fields.
3503            self.0.encode(encoder, offset + 0, depth)?;
3504            Ok(())
3505        }
3506    }
3507
3508    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3509        for CentralOnPeripheralDisconnectedRequest
3510    {
3511        #[inline(always)]
3512        fn new_empty() -> Self {
3513            Self { identifier: fidl::new_empty!(fidl::encoding::BoundedString<16>, D) }
3514        }
3515
3516        #[inline]
3517        unsafe fn decode(
3518            &mut self,
3519            decoder: &mut fidl::encoding::Decoder<'_, D>,
3520            offset: usize,
3521            _depth: fidl::encoding::Depth,
3522        ) -> fidl::Result<()> {
3523            decoder.debug_check_bounds::<Self>(offset);
3524            // Verify that padding bytes are zero.
3525            fidl::decode!(
3526                fidl::encoding::BoundedString<16>,
3527                D,
3528                &mut self.identifier,
3529                decoder,
3530                offset + 0,
3531                _depth
3532            )?;
3533            Ok(())
3534        }
3535    }
3536
3537    impl fidl::encoding::ValueTypeMarker for CentralOnScanStateChangedRequest {
3538        type Borrowed<'a> = &'a Self;
3539        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3540            value
3541        }
3542    }
3543
3544    unsafe impl fidl::encoding::TypeMarker for CentralOnScanStateChangedRequest {
3545        type Owned = Self;
3546
3547        #[inline(always)]
3548        fn inline_align(_context: fidl::encoding::Context) -> usize {
3549            1
3550        }
3551
3552        #[inline(always)]
3553        fn inline_size(_context: fidl::encoding::Context) -> usize {
3554            1
3555        }
3556    }
3557
3558    unsafe impl<D: fidl::encoding::ResourceDialect>
3559        fidl::encoding::Encode<CentralOnScanStateChangedRequest, D>
3560        for &CentralOnScanStateChangedRequest
3561    {
3562        #[inline]
3563        unsafe fn encode(
3564            self,
3565            encoder: &mut fidl::encoding::Encoder<'_, D>,
3566            offset: usize,
3567            _depth: fidl::encoding::Depth,
3568        ) -> fidl::Result<()> {
3569            encoder.debug_check_bounds::<CentralOnScanStateChangedRequest>(offset);
3570            // Delegate to tuple encoding.
3571            fidl::encoding::Encode::<CentralOnScanStateChangedRequest, D>::encode(
3572                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.scanning),),
3573                encoder,
3574                offset,
3575                _depth,
3576            )
3577        }
3578    }
3579    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
3580        fidl::encoding::Encode<CentralOnScanStateChangedRequest, D> for (T0,)
3581    {
3582        #[inline]
3583        unsafe fn encode(
3584            self,
3585            encoder: &mut fidl::encoding::Encoder<'_, D>,
3586            offset: usize,
3587            depth: fidl::encoding::Depth,
3588        ) -> fidl::Result<()> {
3589            encoder.debug_check_bounds::<CentralOnScanStateChangedRequest>(offset);
3590            // Zero out padding regions. There's no need to apply masks
3591            // because the unmasked parts will be overwritten by fields.
3592            // Write the fields.
3593            self.0.encode(encoder, offset + 0, depth)?;
3594            Ok(())
3595        }
3596    }
3597
3598    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3599        for CentralOnScanStateChangedRequest
3600    {
3601        #[inline(always)]
3602        fn new_empty() -> Self {
3603            Self { scanning: fidl::new_empty!(bool, D) }
3604        }
3605
3606        #[inline]
3607        unsafe fn decode(
3608            &mut self,
3609            decoder: &mut fidl::encoding::Decoder<'_, D>,
3610            offset: usize,
3611            _depth: fidl::encoding::Depth,
3612        ) -> fidl::Result<()> {
3613            decoder.debug_check_bounds::<Self>(offset);
3614            // Verify that padding bytes are zero.
3615            fidl::decode!(bool, D, &mut self.scanning, decoder, offset + 0, _depth)?;
3616            Ok(())
3617        }
3618    }
3619
3620    impl fidl::encoding::ValueTypeMarker for CentralStartScanRequest {
3621        type Borrowed<'a> = &'a Self;
3622        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3623            value
3624        }
3625    }
3626
3627    unsafe impl fidl::encoding::TypeMarker for CentralStartScanRequest {
3628        type Owned = Self;
3629
3630        #[inline(always)]
3631        fn inline_align(_context: fidl::encoding::Context) -> usize {
3632            8
3633        }
3634
3635        #[inline(always)]
3636        fn inline_size(_context: fidl::encoding::Context) -> usize {
3637            8
3638        }
3639    }
3640
3641    unsafe impl<D: fidl::encoding::ResourceDialect>
3642        fidl::encoding::Encode<CentralStartScanRequest, D> for &CentralStartScanRequest
3643    {
3644        #[inline]
3645        unsafe fn encode(
3646            self,
3647            encoder: &mut fidl::encoding::Encoder<'_, D>,
3648            offset: usize,
3649            _depth: fidl::encoding::Depth,
3650        ) -> fidl::Result<()> {
3651            encoder.debug_check_bounds::<CentralStartScanRequest>(offset);
3652            // Delegate to tuple encoding.
3653            fidl::encoding::Encode::<CentralStartScanRequest, D>::encode(
3654                (<fidl::encoding::Boxed<ScanFilter> as fidl::encoding::ValueTypeMarker>::borrow(
3655                    &self.filter,
3656                ),),
3657                encoder,
3658                offset,
3659                _depth,
3660            )
3661        }
3662    }
3663    unsafe impl<
3664        D: fidl::encoding::ResourceDialect,
3665        T0: fidl::encoding::Encode<fidl::encoding::Boxed<ScanFilter>, D>,
3666    > fidl::encoding::Encode<CentralStartScanRequest, D> for (T0,)
3667    {
3668        #[inline]
3669        unsafe fn encode(
3670            self,
3671            encoder: &mut fidl::encoding::Encoder<'_, D>,
3672            offset: usize,
3673            depth: fidl::encoding::Depth,
3674        ) -> fidl::Result<()> {
3675            encoder.debug_check_bounds::<CentralStartScanRequest>(offset);
3676            // Zero out padding regions. There's no need to apply masks
3677            // because the unmasked parts will be overwritten by fields.
3678            // Write the fields.
3679            self.0.encode(encoder, offset + 0, depth)?;
3680            Ok(())
3681        }
3682    }
3683
3684    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3685        for CentralStartScanRequest
3686    {
3687        #[inline(always)]
3688        fn new_empty() -> Self {
3689            Self { filter: fidl::new_empty!(fidl::encoding::Boxed<ScanFilter>, D) }
3690        }
3691
3692        #[inline]
3693        unsafe fn decode(
3694            &mut self,
3695            decoder: &mut fidl::encoding::Decoder<'_, D>,
3696            offset: usize,
3697            _depth: fidl::encoding::Depth,
3698        ) -> fidl::Result<()> {
3699            decoder.debug_check_bounds::<Self>(offset);
3700            // Verify that padding bytes are zero.
3701            fidl::decode!(
3702                fidl::encoding::Boxed<ScanFilter>,
3703                D,
3704                &mut self.filter,
3705                decoder,
3706                offset + 0,
3707                _depth
3708            )?;
3709            Ok(())
3710        }
3711    }
3712
3713    impl fidl::encoding::ValueTypeMarker for CentralStartScanResponse {
3714        type Borrowed<'a> = &'a Self;
3715        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3716            value
3717        }
3718    }
3719
3720    unsafe impl fidl::encoding::TypeMarker for CentralStartScanResponse {
3721        type Owned = Self;
3722
3723        #[inline(always)]
3724        fn inline_align(_context: fidl::encoding::Context) -> usize {
3725            8
3726        }
3727
3728        #[inline(always)]
3729        fn inline_size(_context: fidl::encoding::Context) -> usize {
3730            8
3731        }
3732    }
3733
3734    unsafe impl<D: fidl::encoding::ResourceDialect>
3735        fidl::encoding::Encode<CentralStartScanResponse, D> for &CentralStartScanResponse
3736    {
3737        #[inline]
3738        unsafe fn encode(
3739            self,
3740            encoder: &mut fidl::encoding::Encoder<'_, D>,
3741            offset: usize,
3742            _depth: fidl::encoding::Depth,
3743        ) -> fidl::Result<()> {
3744            encoder.debug_check_bounds::<CentralStartScanResponse>(offset);
3745            // Delegate to tuple encoding.
3746            fidl::encoding::Encode::<CentralStartScanResponse, D>::encode(
3747                (
3748                    <fidl_fuchsia_bluetooth__common::Status as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
3749                ),
3750                encoder, offset, _depth
3751            )
3752        }
3753    }
3754    unsafe impl<
3755        D: fidl::encoding::ResourceDialect,
3756        T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::Status, D>,
3757    > fidl::encoding::Encode<CentralStartScanResponse, D> for (T0,)
3758    {
3759        #[inline]
3760        unsafe fn encode(
3761            self,
3762            encoder: &mut fidl::encoding::Encoder<'_, D>,
3763            offset: usize,
3764            depth: fidl::encoding::Depth,
3765        ) -> fidl::Result<()> {
3766            encoder.debug_check_bounds::<CentralStartScanResponse>(offset);
3767            // Zero out padding regions. There's no need to apply masks
3768            // because the unmasked parts will be overwritten by fields.
3769            // Write the fields.
3770            self.0.encode(encoder, offset + 0, depth)?;
3771            Ok(())
3772        }
3773    }
3774
3775    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3776        for CentralStartScanResponse
3777    {
3778        #[inline(always)]
3779        fn new_empty() -> Self {
3780            Self { status: fidl::new_empty!(fidl_fuchsia_bluetooth__common::Status, D) }
3781        }
3782
3783        #[inline]
3784        unsafe fn decode(
3785            &mut self,
3786            decoder: &mut fidl::encoding::Decoder<'_, D>,
3787            offset: usize,
3788            _depth: fidl::encoding::Depth,
3789        ) -> fidl::Result<()> {
3790            decoder.debug_check_bounds::<Self>(offset);
3791            // Verify that padding bytes are zero.
3792            fidl::decode!(
3793                fidl_fuchsia_bluetooth__common::Status,
3794                D,
3795                &mut self.status,
3796                decoder,
3797                offset + 0,
3798                _depth
3799            )?;
3800            Ok(())
3801        }
3802    }
3803
3804    impl fidl::encoding::ValueTypeMarker for ManufacturerData {
3805        type Borrowed<'a> = &'a Self;
3806        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3807            value
3808        }
3809    }
3810
3811    unsafe impl fidl::encoding::TypeMarker for ManufacturerData {
3812        type Owned = Self;
3813
3814        #[inline(always)]
3815        fn inline_align(_context: fidl::encoding::Context) -> usize {
3816            8
3817        }
3818
3819        #[inline(always)]
3820        fn inline_size(_context: fidl::encoding::Context) -> usize {
3821            24
3822        }
3823    }
3824
3825    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ManufacturerData, D>
3826        for &ManufacturerData
3827    {
3828        #[inline]
3829        unsafe fn encode(
3830            self,
3831            encoder: &mut fidl::encoding::Encoder<'_, D>,
3832            offset: usize,
3833            _depth: fidl::encoding::Depth,
3834        ) -> fidl::Result<()> {
3835            encoder.debug_check_bounds::<ManufacturerData>(offset);
3836            // Delegate to tuple encoding.
3837            fidl::encoding::Encode::<ManufacturerData, D>::encode(
3838                (
3839                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.company_id),
3840                    <fidl::encoding::Vector<u8, 252> as fidl::encoding::ValueTypeMarker>::borrow(
3841                        &self.data,
3842                    ),
3843                ),
3844                encoder,
3845                offset,
3846                _depth,
3847            )
3848        }
3849    }
3850    unsafe impl<
3851        D: fidl::encoding::ResourceDialect,
3852        T0: fidl::encoding::Encode<u16, D>,
3853        T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 252>, D>,
3854    > fidl::encoding::Encode<ManufacturerData, D> for (T0, T1)
3855    {
3856        #[inline]
3857        unsafe fn encode(
3858            self,
3859            encoder: &mut fidl::encoding::Encoder<'_, D>,
3860            offset: usize,
3861            depth: fidl::encoding::Depth,
3862        ) -> fidl::Result<()> {
3863            encoder.debug_check_bounds::<ManufacturerData>(offset);
3864            // Zero out padding regions. There's no need to apply masks
3865            // because the unmasked parts will be overwritten by fields.
3866            unsafe {
3867                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3868                (ptr as *mut u64).write_unaligned(0);
3869            }
3870            // Write the fields.
3871            self.0.encode(encoder, offset + 0, depth)?;
3872            self.1.encode(encoder, offset + 8, depth)?;
3873            Ok(())
3874        }
3875    }
3876
3877    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ManufacturerData {
3878        #[inline(always)]
3879        fn new_empty() -> Self {
3880            Self {
3881                company_id: fidl::new_empty!(u16, D),
3882                data: fidl::new_empty!(fidl::encoding::Vector<u8, 252>, D),
3883            }
3884        }
3885
3886        #[inline]
3887        unsafe fn decode(
3888            &mut self,
3889            decoder: &mut fidl::encoding::Decoder<'_, D>,
3890            offset: usize,
3891            _depth: fidl::encoding::Depth,
3892        ) -> fidl::Result<()> {
3893            decoder.debug_check_bounds::<Self>(offset);
3894            // Verify that padding bytes are zero.
3895            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3896            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3897            let mask = 0xffffffffffff0000u64;
3898            let maskedval = padval & mask;
3899            if maskedval != 0 {
3900                return Err(fidl::Error::NonZeroPadding {
3901                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3902                });
3903            }
3904            fidl::decode!(u16, D, &mut self.company_id, decoder, offset + 0, _depth)?;
3905            fidl::decode!(fidl::encoding::Vector<u8, 252>, D, &mut self.data, decoder, offset + 8, _depth)?;
3906            Ok(())
3907        }
3908    }
3909
3910    impl fidl::encoding::ValueTypeMarker for ManufacturerSpecificDataEntry {
3911        type Borrowed<'a> = &'a Self;
3912        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3913            value
3914        }
3915    }
3916
3917    unsafe impl fidl::encoding::TypeMarker for ManufacturerSpecificDataEntry {
3918        type Owned = Self;
3919
3920        #[inline(always)]
3921        fn inline_align(_context: fidl::encoding::Context) -> usize {
3922            8
3923        }
3924
3925        #[inline(always)]
3926        fn inline_size(_context: fidl::encoding::Context) -> usize {
3927            24
3928        }
3929    }
3930
3931    unsafe impl<D: fidl::encoding::ResourceDialect>
3932        fidl::encoding::Encode<ManufacturerSpecificDataEntry, D>
3933        for &ManufacturerSpecificDataEntry
3934    {
3935        #[inline]
3936        unsafe fn encode(
3937            self,
3938            encoder: &mut fidl::encoding::Encoder<'_, D>,
3939            offset: usize,
3940            _depth: fidl::encoding::Depth,
3941        ) -> fidl::Result<()> {
3942            encoder.debug_check_bounds::<ManufacturerSpecificDataEntry>(offset);
3943            // Delegate to tuple encoding.
3944            fidl::encoding::Encode::<ManufacturerSpecificDataEntry, D>::encode(
3945                (
3946                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.company_id),
3947                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
3948                ),
3949                encoder, offset, _depth
3950            )
3951        }
3952    }
3953    unsafe impl<
3954        D: fidl::encoding::ResourceDialect,
3955        T0: fidl::encoding::Encode<u16, D>,
3956        T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
3957    > fidl::encoding::Encode<ManufacturerSpecificDataEntry, D> for (T0, T1)
3958    {
3959        #[inline]
3960        unsafe fn encode(
3961            self,
3962            encoder: &mut fidl::encoding::Encoder<'_, D>,
3963            offset: usize,
3964            depth: fidl::encoding::Depth,
3965        ) -> fidl::Result<()> {
3966            encoder.debug_check_bounds::<ManufacturerSpecificDataEntry>(offset);
3967            // Zero out padding regions. There's no need to apply masks
3968            // because the unmasked parts will be overwritten by fields.
3969            unsafe {
3970                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3971                (ptr as *mut u64).write_unaligned(0);
3972            }
3973            // Write the fields.
3974            self.0.encode(encoder, offset + 0, depth)?;
3975            self.1.encode(encoder, offset + 8, depth)?;
3976            Ok(())
3977        }
3978    }
3979
3980    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3981        for ManufacturerSpecificDataEntry
3982    {
3983        #[inline(always)]
3984        fn new_empty() -> Self {
3985            Self {
3986                company_id: fidl::new_empty!(u16, D),
3987                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
3988            }
3989        }
3990
3991        #[inline]
3992        unsafe fn decode(
3993            &mut self,
3994            decoder: &mut fidl::encoding::Decoder<'_, D>,
3995            offset: usize,
3996            _depth: fidl::encoding::Depth,
3997        ) -> fidl::Result<()> {
3998            decoder.debug_check_bounds::<Self>(offset);
3999            // Verify that padding bytes are zero.
4000            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
4001            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4002            let mask = 0xffffffffffff0000u64;
4003            let maskedval = padval & mask;
4004            if maskedval != 0 {
4005                return Err(fidl::Error::NonZeroPadding {
4006                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
4007                });
4008            }
4009            fidl::decode!(u16, D, &mut self.company_id, decoder, offset + 0, _depth)?;
4010            fidl::decode!(
4011                fidl::encoding::UnboundedVector<u8>,
4012                D,
4013                &mut self.data,
4014                decoder,
4015                offset + 8,
4016                _depth
4017            )?;
4018            Ok(())
4019        }
4020    }
4021
4022    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncId {
4023        type Borrowed<'a> = &'a Self;
4024        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4025            value
4026        }
4027    }
4028
4029    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncId {
4030        type Owned = Self;
4031
4032        #[inline(always)]
4033        fn inline_align(_context: fidl::encoding::Context) -> usize {
4034            8
4035        }
4036
4037        #[inline(always)]
4038        fn inline_size(_context: fidl::encoding::Context) -> usize {
4039            8
4040        }
4041        #[inline(always)]
4042        fn encode_is_copy() -> bool {
4043            true
4044        }
4045
4046        #[inline(always)]
4047        fn decode_is_copy() -> bool {
4048            true
4049        }
4050    }
4051
4052    unsafe impl<D: fidl::encoding::ResourceDialect>
4053        fidl::encoding::Encode<PeriodicAdvertisingSyncId, D> for &PeriodicAdvertisingSyncId
4054    {
4055        #[inline]
4056        unsafe fn encode(
4057            self,
4058            encoder: &mut fidl::encoding::Encoder<'_, D>,
4059            offset: usize,
4060            _depth: fidl::encoding::Depth,
4061        ) -> fidl::Result<()> {
4062            encoder.debug_check_bounds::<PeriodicAdvertisingSyncId>(offset);
4063            unsafe {
4064                // Copy the object into the buffer.
4065                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
4066                (buf_ptr as *mut PeriodicAdvertisingSyncId)
4067                    .write_unaligned((self as *const PeriodicAdvertisingSyncId).read());
4068                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
4069                // done second because the memcpy will write garbage to these bytes.
4070            }
4071            Ok(())
4072        }
4073    }
4074    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
4075        fidl::encoding::Encode<PeriodicAdvertisingSyncId, D> for (T0,)
4076    {
4077        #[inline]
4078        unsafe fn encode(
4079            self,
4080            encoder: &mut fidl::encoding::Encoder<'_, D>,
4081            offset: usize,
4082            depth: fidl::encoding::Depth,
4083        ) -> fidl::Result<()> {
4084            encoder.debug_check_bounds::<PeriodicAdvertisingSyncId>(offset);
4085            // Zero out padding regions. There's no need to apply masks
4086            // because the unmasked parts will be overwritten by fields.
4087            // Write the fields.
4088            self.0.encode(encoder, offset + 0, depth)?;
4089            Ok(())
4090        }
4091    }
4092
4093    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4094        for PeriodicAdvertisingSyncId
4095    {
4096        #[inline(always)]
4097        fn new_empty() -> Self {
4098            Self { value: fidl::new_empty!(u64, D) }
4099        }
4100
4101        #[inline]
4102        unsafe fn decode(
4103            &mut self,
4104            decoder: &mut fidl::encoding::Decoder<'_, D>,
4105            offset: usize,
4106            _depth: fidl::encoding::Depth,
4107        ) -> fidl::Result<()> {
4108            decoder.debug_check_bounds::<Self>(offset);
4109            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
4110            // Verify that padding bytes are zero.
4111            // Copy from the buffer into the object.
4112            unsafe {
4113                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
4114            }
4115            Ok(())
4116        }
4117    }
4118
4119    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncOnErrorRequest {
4120        type Borrowed<'a> = &'a Self;
4121        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4122            value
4123        }
4124    }
4125
4126    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncOnErrorRequest {
4127        type Owned = Self;
4128
4129        #[inline(always)]
4130        fn inline_align(_context: fidl::encoding::Context) -> usize {
4131            4
4132        }
4133
4134        #[inline(always)]
4135        fn inline_size(_context: fidl::encoding::Context) -> usize {
4136            4
4137        }
4138    }
4139
4140    unsafe impl<D: fidl::encoding::ResourceDialect>
4141        fidl::encoding::Encode<PeriodicAdvertisingSyncOnErrorRequest, D>
4142        for &PeriodicAdvertisingSyncOnErrorRequest
4143    {
4144        #[inline]
4145        unsafe fn encode(
4146            self,
4147            encoder: &mut fidl::encoding::Encoder<'_, D>,
4148            offset: usize,
4149            _depth: fidl::encoding::Depth,
4150        ) -> fidl::Result<()> {
4151            encoder.debug_check_bounds::<PeriodicAdvertisingSyncOnErrorRequest>(offset);
4152            // Delegate to tuple encoding.
4153            fidl::encoding::Encode::<PeriodicAdvertisingSyncOnErrorRequest, D>::encode(
4154                (<PeriodicAdvertisingSyncError as fidl::encoding::ValueTypeMarker>::borrow(
4155                    &self.error,
4156                ),),
4157                encoder,
4158                offset,
4159                _depth,
4160            )
4161        }
4162    }
4163    unsafe impl<
4164        D: fidl::encoding::ResourceDialect,
4165        T0: fidl::encoding::Encode<PeriodicAdvertisingSyncError, D>,
4166    > fidl::encoding::Encode<PeriodicAdvertisingSyncOnErrorRequest, D> for (T0,)
4167    {
4168        #[inline]
4169        unsafe fn encode(
4170            self,
4171            encoder: &mut fidl::encoding::Encoder<'_, D>,
4172            offset: usize,
4173            depth: fidl::encoding::Depth,
4174        ) -> fidl::Result<()> {
4175            encoder.debug_check_bounds::<PeriodicAdvertisingSyncOnErrorRequest>(offset);
4176            // Zero out padding regions. There's no need to apply masks
4177            // because the unmasked parts will be overwritten by fields.
4178            // Write the fields.
4179            self.0.encode(encoder, offset + 0, depth)?;
4180            Ok(())
4181        }
4182    }
4183
4184    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4185        for PeriodicAdvertisingSyncOnErrorRequest
4186    {
4187        #[inline(always)]
4188        fn new_empty() -> Self {
4189            Self { error: fidl::new_empty!(PeriodicAdvertisingSyncError, D) }
4190        }
4191
4192        #[inline]
4193        unsafe fn decode(
4194            &mut self,
4195            decoder: &mut fidl::encoding::Decoder<'_, D>,
4196            offset: usize,
4197            _depth: fidl::encoding::Depth,
4198        ) -> fidl::Result<()> {
4199            decoder.debug_check_bounds::<Self>(offset);
4200            // Verify that padding bytes are zero.
4201            fidl::decode!(
4202                PeriodicAdvertisingSyncError,
4203                D,
4204                &mut self.error,
4205                decoder,
4206                offset + 0,
4207                _depth
4208            )?;
4209            Ok(())
4210        }
4211    }
4212
4213    impl fidl::encoding::ValueTypeMarker for RemoteDevice {
4214        type Borrowed<'a> = &'a Self;
4215        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4216            value
4217        }
4218    }
4219
4220    unsafe impl fidl::encoding::TypeMarker for RemoteDevice {
4221        type Owned = Self;
4222
4223        #[inline(always)]
4224        fn inline_align(_context: fidl::encoding::Context) -> usize {
4225            8
4226        }
4227
4228        #[inline(always)]
4229        fn inline_size(_context: fidl::encoding::Context) -> usize {
4230            40
4231        }
4232    }
4233
4234    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RemoteDevice, D>
4235        for &RemoteDevice
4236    {
4237        #[inline]
4238        unsafe fn encode(
4239            self,
4240            encoder: &mut fidl::encoding::Encoder<'_, D>,
4241            offset: usize,
4242            _depth: fidl::encoding::Depth,
4243        ) -> fidl::Result<()> {
4244            encoder.debug_check_bounds::<RemoteDevice>(offset);
4245            // Delegate to tuple encoding.
4246            fidl::encoding::Encode::<RemoteDevice, D>::encode(
4247                (
4248                    <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow(&self.identifier),
4249                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.connectable),
4250                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8> as fidl::encoding::ValueTypeMarker>::borrow(&self.rssi),
4251                    <fidl::encoding::Boxed<AdvertisingDataDeprecated> as fidl::encoding::ValueTypeMarker>::borrow(&self.advertising_data),
4252                ),
4253                encoder, offset, _depth
4254            )
4255        }
4256    }
4257    unsafe impl<
4258        D: fidl::encoding::ResourceDialect,
4259        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<16>, D>,
4260        T1: fidl::encoding::Encode<bool, D>,
4261        T2: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>, D>,
4262        T3: fidl::encoding::Encode<fidl::encoding::Boxed<AdvertisingDataDeprecated>, D>,
4263    > fidl::encoding::Encode<RemoteDevice, D> for (T0, T1, T2, T3)
4264    {
4265        #[inline]
4266        unsafe fn encode(
4267            self,
4268            encoder: &mut fidl::encoding::Encoder<'_, D>,
4269            offset: usize,
4270            depth: fidl::encoding::Depth,
4271        ) -> fidl::Result<()> {
4272            encoder.debug_check_bounds::<RemoteDevice>(offset);
4273            // Zero out padding regions. There's no need to apply masks
4274            // because the unmasked parts will be overwritten by fields.
4275            unsafe {
4276                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
4277                (ptr as *mut u64).write_unaligned(0);
4278            }
4279            // Write the fields.
4280            self.0.encode(encoder, offset + 0, depth)?;
4281            self.1.encode(encoder, offset + 16, depth)?;
4282            self.2.encode(encoder, offset + 24, depth)?;
4283            self.3.encode(encoder, offset + 32, depth)?;
4284            Ok(())
4285        }
4286    }
4287
4288    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RemoteDevice {
4289        #[inline(always)]
4290        fn new_empty() -> Self {
4291            Self {
4292                identifier: fidl::new_empty!(fidl::encoding::BoundedString<16>, D),
4293                connectable: fidl::new_empty!(bool, D),
4294                rssi: fidl::new_empty!(
4295                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
4296                    D
4297                ),
4298                advertising_data: fidl::new_empty!(
4299                    fidl::encoding::Boxed<AdvertisingDataDeprecated>,
4300                    D
4301                ),
4302            }
4303        }
4304
4305        #[inline]
4306        unsafe fn decode(
4307            &mut self,
4308            decoder: &mut fidl::encoding::Decoder<'_, D>,
4309            offset: usize,
4310            _depth: fidl::encoding::Depth,
4311        ) -> fidl::Result<()> {
4312            decoder.debug_check_bounds::<Self>(offset);
4313            // Verify that padding bytes are zero.
4314            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
4315            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4316            let mask = 0xffffffffffffff00u64;
4317            let maskedval = padval & mask;
4318            if maskedval != 0 {
4319                return Err(fidl::Error::NonZeroPadding {
4320                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
4321                });
4322            }
4323            fidl::decode!(
4324                fidl::encoding::BoundedString<16>,
4325                D,
4326                &mut self.identifier,
4327                decoder,
4328                offset + 0,
4329                _depth
4330            )?;
4331            fidl::decode!(bool, D, &mut self.connectable, decoder, offset + 16, _depth)?;
4332            fidl::decode!(
4333                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
4334                D,
4335                &mut self.rssi,
4336                decoder,
4337                offset + 24,
4338                _depth
4339            )?;
4340            fidl::decode!(
4341                fidl::encoding::Boxed<AdvertisingDataDeprecated>,
4342                D,
4343                &mut self.advertising_data,
4344                decoder,
4345                offset + 32,
4346                _depth
4347            )?;
4348            Ok(())
4349        }
4350    }
4351
4352    impl fidl::encoding::ValueTypeMarker for ScanFilter {
4353        type Borrowed<'a> = &'a Self;
4354        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4355            value
4356        }
4357    }
4358
4359    unsafe impl fidl::encoding::TypeMarker for ScanFilter {
4360        type Owned = Self;
4361
4362        #[inline(always)]
4363        fn inline_align(_context: fidl::encoding::Context) -> usize {
4364            8
4365        }
4366
4367        #[inline(always)]
4368        fn inline_size(_context: fidl::encoding::Context) -> usize {
4369            72
4370        }
4371    }
4372
4373    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanFilter, D>
4374        for &ScanFilter
4375    {
4376        #[inline]
4377        unsafe fn encode(
4378            self,
4379            encoder: &mut fidl::encoding::Encoder<'_, D>,
4380            offset: usize,
4381            _depth: fidl::encoding::Depth,
4382        ) -> fidl::Result<()> {
4383            encoder.debug_check_bounds::<ScanFilter>(offset);
4384            // Delegate to tuple encoding.
4385            fidl::encoding::Encode::<ScanFilter, D>::encode(
4386                (
4387                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>> as fidl::encoding::ValueTypeMarker>::borrow(&self.service_uuids),
4388                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>> as fidl::encoding::ValueTypeMarker>::borrow(&self.service_data_uuids),
4389                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16> as fidl::encoding::ValueTypeMarker>::borrow(&self.manufacturer_identifier),
4390                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Bool> as fidl::encoding::ValueTypeMarker>::borrow(&self.connectable),
4391                    <fidl::encoding::Optional<fidl::encoding::BoundedString<248>> as fidl::encoding::ValueTypeMarker>::borrow(&self.name_substring),
4392                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8> as fidl::encoding::ValueTypeMarker>::borrow(&self.max_path_loss),
4393                ),
4394                encoder, offset, _depth
4395            )
4396        }
4397    }
4398    unsafe impl<
4399        D: fidl::encoding::ResourceDialect,
4400        T0: fidl::encoding::Encode<
4401                fidl::encoding::Optional<
4402                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4403                >,
4404                D,
4405            >,
4406        T1: fidl::encoding::Encode<
4407                fidl::encoding::Optional<
4408                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4409                >,
4410                D,
4411            >,
4412        T2: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>, D>,
4413        T3: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Bool>, D>,
4414        T4: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<248>>, D>,
4415        T5: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>, D>,
4416    > fidl::encoding::Encode<ScanFilter, D> for (T0, T1, T2, T3, T4, T5)
4417    {
4418        #[inline]
4419        unsafe fn encode(
4420            self,
4421            encoder: &mut fidl::encoding::Encoder<'_, D>,
4422            offset: usize,
4423            depth: fidl::encoding::Depth,
4424        ) -> fidl::Result<()> {
4425            encoder.debug_check_bounds::<ScanFilter>(offset);
4426            // Zero out padding regions. There's no need to apply masks
4427            // because the unmasked parts will be overwritten by fields.
4428            // Write the fields.
4429            self.0.encode(encoder, offset + 0, depth)?;
4430            self.1.encode(encoder, offset + 16, depth)?;
4431            self.2.encode(encoder, offset + 32, depth)?;
4432            self.3.encode(encoder, offset + 40, depth)?;
4433            self.4.encode(encoder, offset + 48, depth)?;
4434            self.5.encode(encoder, offset + 64, depth)?;
4435            Ok(())
4436        }
4437    }
4438
4439    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanFilter {
4440        #[inline(always)]
4441        fn new_empty() -> Self {
4442            Self {
4443                service_uuids: fidl::new_empty!(
4444                    fidl::encoding::Optional<
4445                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4446                    >,
4447                    D
4448                ),
4449                service_data_uuids: fidl::new_empty!(
4450                    fidl::encoding::Optional<
4451                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4452                    >,
4453                    D
4454                ),
4455                manufacturer_identifier: fidl::new_empty!(
4456                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
4457                    D
4458                ),
4459                connectable: fidl::new_empty!(
4460                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Bool>,
4461                    D
4462                ),
4463                name_substring: fidl::new_empty!(
4464                    fidl::encoding::Optional<fidl::encoding::BoundedString<248>>,
4465                    D
4466                ),
4467                max_path_loss: fidl::new_empty!(
4468                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
4469                    D
4470                ),
4471            }
4472        }
4473
4474        #[inline]
4475        unsafe fn decode(
4476            &mut self,
4477            decoder: &mut fidl::encoding::Decoder<'_, D>,
4478            offset: usize,
4479            _depth: fidl::encoding::Depth,
4480        ) -> fidl::Result<()> {
4481            decoder.debug_check_bounds::<Self>(offset);
4482            // Verify that padding bytes are zero.
4483            fidl::decode!(
4484                fidl::encoding::Optional<
4485                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4486                >,
4487                D,
4488                &mut self.service_uuids,
4489                decoder,
4490                offset + 0,
4491                _depth
4492            )?;
4493            fidl::decode!(
4494                fidl::encoding::Optional<
4495                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4496                >,
4497                D,
4498                &mut self.service_data_uuids,
4499                decoder,
4500                offset + 16,
4501                _depth
4502            )?;
4503            fidl::decode!(
4504                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
4505                D,
4506                &mut self.manufacturer_identifier,
4507                decoder,
4508                offset + 32,
4509                _depth
4510            )?;
4511            fidl::decode!(
4512                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Bool>,
4513                D,
4514                &mut self.connectable,
4515                decoder,
4516                offset + 40,
4517                _depth
4518            )?;
4519            fidl::decode!(
4520                fidl::encoding::Optional<fidl::encoding::BoundedString<248>>,
4521                D,
4522                &mut self.name_substring,
4523                decoder,
4524                offset + 48,
4525                _depth
4526            )?;
4527            fidl::decode!(
4528                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
4529                D,
4530                &mut self.max_path_loss,
4531                decoder,
4532                offset + 64,
4533                _depth
4534            )?;
4535            Ok(())
4536        }
4537    }
4538
4539    impl fidl::encoding::ValueTypeMarker for ScanResultWatcherWatchResponse {
4540        type Borrowed<'a> = &'a Self;
4541        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4542            value
4543        }
4544    }
4545
4546    unsafe impl fidl::encoding::TypeMarker for ScanResultWatcherWatchResponse {
4547        type Owned = Self;
4548
4549        #[inline(always)]
4550        fn inline_align(_context: fidl::encoding::Context) -> usize {
4551            8
4552        }
4553
4554        #[inline(always)]
4555        fn inline_size(_context: fidl::encoding::Context) -> usize {
4556            16
4557        }
4558    }
4559
4560    unsafe impl<D: fidl::encoding::ResourceDialect>
4561        fidl::encoding::Encode<ScanResultWatcherWatchResponse, D>
4562        for &ScanResultWatcherWatchResponse
4563    {
4564        #[inline]
4565        unsafe fn encode(
4566            self,
4567            encoder: &mut fidl::encoding::Encoder<'_, D>,
4568            offset: usize,
4569            _depth: fidl::encoding::Depth,
4570        ) -> fidl::Result<()> {
4571            encoder.debug_check_bounds::<ScanResultWatcherWatchResponse>(offset);
4572            // Delegate to tuple encoding.
4573            fidl::encoding::Encode::<ScanResultWatcherWatchResponse, D>::encode(
4574                (
4575                    <fidl::encoding::UnboundedVector<Peer> as fidl::encoding::ValueTypeMarker>::borrow(&self.updated),
4576                ),
4577                encoder, offset, _depth
4578            )
4579        }
4580    }
4581    unsafe impl<
4582        D: fidl::encoding::ResourceDialect,
4583        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Peer>, D>,
4584    > fidl::encoding::Encode<ScanResultWatcherWatchResponse, D> for (T0,)
4585    {
4586        #[inline]
4587        unsafe fn encode(
4588            self,
4589            encoder: &mut fidl::encoding::Encoder<'_, D>,
4590            offset: usize,
4591            depth: fidl::encoding::Depth,
4592        ) -> fidl::Result<()> {
4593            encoder.debug_check_bounds::<ScanResultWatcherWatchResponse>(offset);
4594            // Zero out padding regions. There's no need to apply masks
4595            // because the unmasked parts will be overwritten by fields.
4596            // Write the fields.
4597            self.0.encode(encoder, offset + 0, depth)?;
4598            Ok(())
4599        }
4600    }
4601
4602    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4603        for ScanResultWatcherWatchResponse
4604    {
4605        #[inline(always)]
4606        fn new_empty() -> Self {
4607            Self { updated: fidl::new_empty!(fidl::encoding::UnboundedVector<Peer>, D) }
4608        }
4609
4610        #[inline]
4611        unsafe fn decode(
4612            &mut self,
4613            decoder: &mut fidl::encoding::Decoder<'_, D>,
4614            offset: usize,
4615            _depth: fidl::encoding::Depth,
4616        ) -> fidl::Result<()> {
4617            decoder.debug_check_bounds::<Self>(offset);
4618            // Verify that padding bytes are zero.
4619            fidl::decode!(
4620                fidl::encoding::UnboundedVector<Peer>,
4621                D,
4622                &mut self.updated,
4623                decoder,
4624                offset + 0,
4625                _depth
4626            )?;
4627            Ok(())
4628        }
4629    }
4630
4631    impl fidl::encoding::ValueTypeMarker for ServiceData {
4632        type Borrowed<'a> = &'a Self;
4633        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4634            value
4635        }
4636    }
4637
4638    unsafe impl fidl::encoding::TypeMarker for ServiceData {
4639        type Owned = Self;
4640
4641        #[inline(always)]
4642        fn inline_align(_context: fidl::encoding::Context) -> usize {
4643            8
4644        }
4645
4646        #[inline(always)]
4647        fn inline_size(_context: fidl::encoding::Context) -> usize {
4648            32
4649        }
4650    }
4651
4652    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServiceData, D>
4653        for &ServiceData
4654    {
4655        #[inline]
4656        unsafe fn encode(
4657            self,
4658            encoder: &mut fidl::encoding::Encoder<'_, D>,
4659            offset: usize,
4660            _depth: fidl::encoding::Depth,
4661        ) -> fidl::Result<()> {
4662            encoder.debug_check_bounds::<ServiceData>(offset);
4663            // Delegate to tuple encoding.
4664            fidl::encoding::Encode::<ServiceData, D>::encode(
4665                (
4666                    <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow(&self.uuid),
4667                    <fidl::encoding::Vector<u8, 252> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4668                ),
4669                encoder, offset, _depth
4670            )
4671        }
4672    }
4673    unsafe impl<
4674        D: fidl::encoding::ResourceDialect,
4675        T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::Uuid, D>,
4676        T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 252>, D>,
4677    > fidl::encoding::Encode<ServiceData, D> for (T0, T1)
4678    {
4679        #[inline]
4680        unsafe fn encode(
4681            self,
4682            encoder: &mut fidl::encoding::Encoder<'_, D>,
4683            offset: usize,
4684            depth: fidl::encoding::Depth,
4685        ) -> fidl::Result<()> {
4686            encoder.debug_check_bounds::<ServiceData>(offset);
4687            // Zero out padding regions. There's no need to apply masks
4688            // because the unmasked parts will be overwritten by fields.
4689            // Write the fields.
4690            self.0.encode(encoder, offset + 0, depth)?;
4691            self.1.encode(encoder, offset + 16, depth)?;
4692            Ok(())
4693        }
4694    }
4695
4696    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServiceData {
4697        #[inline(always)]
4698        fn new_empty() -> Self {
4699            Self {
4700                uuid: fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D),
4701                data: fidl::new_empty!(fidl::encoding::Vector<u8, 252>, D),
4702            }
4703        }
4704
4705        #[inline]
4706        unsafe fn decode(
4707            &mut self,
4708            decoder: &mut fidl::encoding::Decoder<'_, D>,
4709            offset: usize,
4710            _depth: fidl::encoding::Depth,
4711        ) -> fidl::Result<()> {
4712            decoder.debug_check_bounds::<Self>(offset);
4713            // Verify that padding bytes are zero.
4714            fidl::decode!(
4715                fidl_fuchsia_bluetooth__common::Uuid,
4716                D,
4717                &mut self.uuid,
4718                decoder,
4719                offset + 0,
4720                _depth
4721            )?;
4722            fidl::decode!(fidl::encoding::Vector<u8, 252>, D, &mut self.data, decoder, offset + 16, _depth)?;
4723            Ok(())
4724        }
4725    }
4726
4727    impl fidl::encoding::ValueTypeMarker for ServiceDataEntry {
4728        type Borrowed<'a> = &'a Self;
4729        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4730            value
4731        }
4732    }
4733
4734    unsafe impl fidl::encoding::TypeMarker for ServiceDataEntry {
4735        type Owned = Self;
4736
4737        #[inline(always)]
4738        fn inline_align(_context: fidl::encoding::Context) -> usize {
4739            8
4740        }
4741
4742        #[inline(always)]
4743        fn inline_size(_context: fidl::encoding::Context) -> usize {
4744            32
4745        }
4746    }
4747
4748    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServiceDataEntry, D>
4749        for &ServiceDataEntry
4750    {
4751        #[inline]
4752        unsafe fn encode(
4753            self,
4754            encoder: &mut fidl::encoding::Encoder<'_, D>,
4755            offset: usize,
4756            _depth: fidl::encoding::Depth,
4757        ) -> fidl::Result<()> {
4758            encoder.debug_check_bounds::<ServiceDataEntry>(offset);
4759            // Delegate to tuple encoding.
4760            fidl::encoding::Encode::<ServiceDataEntry, D>::encode(
4761                (
4762                    <fidl::encoding::BoundedString<36> as fidl::encoding::ValueTypeMarker>::borrow(&self.uuid),
4763                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4764                ),
4765                encoder, offset, _depth
4766            )
4767        }
4768    }
4769    unsafe impl<
4770        D: fidl::encoding::ResourceDialect,
4771        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<36>, D>,
4772        T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4773    > fidl::encoding::Encode<ServiceDataEntry, D> for (T0, T1)
4774    {
4775        #[inline]
4776        unsafe fn encode(
4777            self,
4778            encoder: &mut fidl::encoding::Encoder<'_, D>,
4779            offset: usize,
4780            depth: fidl::encoding::Depth,
4781        ) -> fidl::Result<()> {
4782            encoder.debug_check_bounds::<ServiceDataEntry>(offset);
4783            // Zero out padding regions. There's no need to apply masks
4784            // because the unmasked parts will be overwritten by fields.
4785            // Write the fields.
4786            self.0.encode(encoder, offset + 0, depth)?;
4787            self.1.encode(encoder, offset + 16, depth)?;
4788            Ok(())
4789        }
4790    }
4791
4792    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServiceDataEntry {
4793        #[inline(always)]
4794        fn new_empty() -> Self {
4795            Self {
4796                uuid: fidl::new_empty!(fidl::encoding::BoundedString<36>, D),
4797                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4798            }
4799        }
4800
4801        #[inline]
4802        unsafe fn decode(
4803            &mut self,
4804            decoder: &mut fidl::encoding::Decoder<'_, D>,
4805            offset: usize,
4806            _depth: fidl::encoding::Depth,
4807        ) -> fidl::Result<()> {
4808            decoder.debug_check_bounds::<Self>(offset);
4809            // Verify that padding bytes are zero.
4810            fidl::decode!(
4811                fidl::encoding::BoundedString<36>,
4812                D,
4813                &mut self.uuid,
4814                decoder,
4815                offset + 0,
4816                _depth
4817            )?;
4818            fidl::decode!(
4819                fidl::encoding::UnboundedVector<u8>,
4820                D,
4821                &mut self.data,
4822                decoder,
4823                offset + 16,
4824                _depth
4825            )?;
4826            Ok(())
4827        }
4828    }
4829
4830    impl AcceptedChannelParameters {
4831        #[inline(always)]
4832        fn max_ordinal_present(&self) -> u64 {
4833            if let Some(_) = self.max_packet_size {
4834                return 2;
4835            }
4836            if let Some(_) = self.accepted_channel_modes {
4837                return 1;
4838            }
4839            0
4840        }
4841    }
4842
4843    impl fidl::encoding::ValueTypeMarker for AcceptedChannelParameters {
4844        type Borrowed<'a> = &'a Self;
4845        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4846            value
4847        }
4848    }
4849
4850    unsafe impl fidl::encoding::TypeMarker for AcceptedChannelParameters {
4851        type Owned = Self;
4852
4853        #[inline(always)]
4854        fn inline_align(_context: fidl::encoding::Context) -> usize {
4855            8
4856        }
4857
4858        #[inline(always)]
4859        fn inline_size(_context: fidl::encoding::Context) -> usize {
4860            16
4861        }
4862    }
4863
4864    unsafe impl<D: fidl::encoding::ResourceDialect>
4865        fidl::encoding::Encode<AcceptedChannelParameters, D> for &AcceptedChannelParameters
4866    {
4867        unsafe fn encode(
4868            self,
4869            encoder: &mut fidl::encoding::Encoder<'_, D>,
4870            offset: usize,
4871            mut depth: fidl::encoding::Depth,
4872        ) -> fidl::Result<()> {
4873            encoder.debug_check_bounds::<AcceptedChannelParameters>(offset);
4874            // Vector header
4875            let max_ordinal: u64 = self.max_ordinal_present();
4876            encoder.write_num(max_ordinal, offset);
4877            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4878            // Calling encoder.out_of_line_offset(0) is not allowed.
4879            if max_ordinal == 0 {
4880                return Ok(());
4881            }
4882            depth.increment()?;
4883            let envelope_size = 8;
4884            let bytes_len = max_ordinal as usize * envelope_size;
4885            #[allow(unused_variables)]
4886            let offset = encoder.out_of_line_offset(bytes_len);
4887            let mut _prev_end_offset: usize = 0;
4888            if 1 > max_ordinal {
4889                return Ok(());
4890            }
4891
4892            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4893            // are envelope_size bytes.
4894            let cur_offset: usize = (1 - 1) * envelope_size;
4895
4896            // Zero reserved fields.
4897            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4898
4899            // Safety:
4900            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4901            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4902            //   envelope_size bytes, there is always sufficient room.
4903            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::ChannelMode>, D>(
4904            self.accepted_channel_modes.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::ChannelMode> as fidl::encoding::ValueTypeMarker>::borrow),
4905            encoder, offset + cur_offset, depth
4906        )?;
4907
4908            _prev_end_offset = cur_offset + envelope_size;
4909            if 2 > max_ordinal {
4910                return Ok(());
4911            }
4912
4913            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4914            // are envelope_size bytes.
4915            let cur_offset: usize = (2 - 1) * envelope_size;
4916
4917            // Zero reserved fields.
4918            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4919
4920            // Safety:
4921            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4922            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4923            //   envelope_size bytes, there is always sufficient room.
4924            fidl::encoding::encode_in_envelope_optional::<u16, D>(
4925                self.max_packet_size.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4926                encoder,
4927                offset + cur_offset,
4928                depth,
4929            )?;
4930
4931            _prev_end_offset = cur_offset + envelope_size;
4932
4933            Ok(())
4934        }
4935    }
4936
4937    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4938        for AcceptedChannelParameters
4939    {
4940        #[inline(always)]
4941        fn new_empty() -> Self {
4942            Self::default()
4943        }
4944
4945        unsafe fn decode(
4946            &mut self,
4947            decoder: &mut fidl::encoding::Decoder<'_, D>,
4948            offset: usize,
4949            mut depth: fidl::encoding::Depth,
4950        ) -> fidl::Result<()> {
4951            decoder.debug_check_bounds::<Self>(offset);
4952            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4953                None => return Err(fidl::Error::NotNullable),
4954                Some(len) => len,
4955            };
4956            // Calling decoder.out_of_line_offset(0) is not allowed.
4957            if len == 0 {
4958                return Ok(());
4959            };
4960            depth.increment()?;
4961            let envelope_size = 8;
4962            let bytes_len = len * envelope_size;
4963            let offset = decoder.out_of_line_offset(bytes_len)?;
4964            // Decode the envelope for each type.
4965            let mut _next_ordinal_to_read = 0;
4966            let mut next_offset = offset;
4967            let end_offset = offset + bytes_len;
4968            _next_ordinal_to_read += 1;
4969            if next_offset >= end_offset {
4970                return Ok(());
4971            }
4972
4973            // Decode unknown envelopes for gaps in ordinals.
4974            while _next_ordinal_to_read < 1 {
4975                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4976                _next_ordinal_to_read += 1;
4977                next_offset += envelope_size;
4978            }
4979
4980            let next_out_of_line = decoder.next_out_of_line();
4981            let handles_before = decoder.remaining_handles();
4982            if let Some((inlined, num_bytes, num_handles)) =
4983                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4984            {
4985                let member_inline_size = <fidl::encoding::UnboundedVector<
4986                    fidl_fuchsia_bluetooth__common::ChannelMode,
4987                > as fidl::encoding::TypeMarker>::inline_size(
4988                    decoder.context
4989                );
4990                if inlined != (member_inline_size <= 4) {
4991                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4992                }
4993                let inner_offset;
4994                let mut inner_depth = depth.clone();
4995                if inlined {
4996                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4997                    inner_offset = next_offset;
4998                } else {
4999                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5000                    inner_depth.increment()?;
5001                }
5002                let val_ref = self.accepted_channel_modes.get_or_insert_with(|| {
5003                    fidl::new_empty!(
5004                        fidl::encoding::UnboundedVector<
5005                            fidl_fuchsia_bluetooth__common::ChannelMode,
5006                        >,
5007                        D
5008                    )
5009                });
5010                fidl::decode!(
5011                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::ChannelMode>,
5012                    D,
5013                    val_ref,
5014                    decoder,
5015                    inner_offset,
5016                    inner_depth
5017                )?;
5018                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5019                {
5020                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5021                }
5022                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5023                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5024                }
5025            }
5026
5027            next_offset += envelope_size;
5028            _next_ordinal_to_read += 1;
5029            if next_offset >= end_offset {
5030                return Ok(());
5031            }
5032
5033            // Decode unknown envelopes for gaps in ordinals.
5034            while _next_ordinal_to_read < 2 {
5035                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5036                _next_ordinal_to_read += 1;
5037                next_offset += envelope_size;
5038            }
5039
5040            let next_out_of_line = decoder.next_out_of_line();
5041            let handles_before = decoder.remaining_handles();
5042            if let Some((inlined, num_bytes, num_handles)) =
5043                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5044            {
5045                let member_inline_size =
5046                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5047                if inlined != (member_inline_size <= 4) {
5048                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5049                }
5050                let inner_offset;
5051                let mut inner_depth = depth.clone();
5052                if inlined {
5053                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5054                    inner_offset = next_offset;
5055                } else {
5056                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5057                    inner_depth.increment()?;
5058                }
5059                let val_ref = self.max_packet_size.get_or_insert_with(|| fidl::new_empty!(u16, D));
5060                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5061                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5062                {
5063                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5064                }
5065                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5066                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5067                }
5068            }
5069
5070            next_offset += envelope_size;
5071
5072            // Decode the remaining unknown envelopes.
5073            while next_offset < end_offset {
5074                _next_ordinal_to_read += 1;
5075                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5076                next_offset += envelope_size;
5077            }
5078
5079            Ok(())
5080        }
5081    }
5082
5083    impl AdvertisingData {
5084        #[inline(always)]
5085        fn max_ordinal_present(&self) -> u64 {
5086            if let Some(_) = self.broadcast_name {
5087                return 10;
5088            }
5089            if let Some(_) = self.resolvable_set_identifier {
5090                return 9;
5091            }
5092            if let Some(_) = self.include_tx_power_level {
5093                return 8;
5094            }
5095            if let Some(_) = self.uris {
5096                return 7;
5097            }
5098            if let Some(_) = self.manufacturer_data {
5099                return 6;
5100            }
5101            if let Some(_) = self.service_data {
5102                return 5;
5103            }
5104            if let Some(_) = self.service_uuids {
5105                return 4;
5106            }
5107            if let Some(_) = self.tx_power_level {
5108                return 3;
5109            }
5110            if let Some(_) = self.appearance {
5111                return 2;
5112            }
5113            if let Some(_) = self.name {
5114                return 1;
5115            }
5116            0
5117        }
5118    }
5119
5120    impl fidl::encoding::ValueTypeMarker for AdvertisingData {
5121        type Borrowed<'a> = &'a Self;
5122        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5123            value
5124        }
5125    }
5126
5127    unsafe impl fidl::encoding::TypeMarker for AdvertisingData {
5128        type Owned = Self;
5129
5130        #[inline(always)]
5131        fn inline_align(_context: fidl::encoding::Context) -> usize {
5132            8
5133        }
5134
5135        #[inline(always)]
5136        fn inline_size(_context: fidl::encoding::Context) -> usize {
5137            16
5138        }
5139    }
5140
5141    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdvertisingData, D>
5142        for &AdvertisingData
5143    {
5144        unsafe fn encode(
5145            self,
5146            encoder: &mut fidl::encoding::Encoder<'_, D>,
5147            offset: usize,
5148            mut depth: fidl::encoding::Depth,
5149        ) -> fidl::Result<()> {
5150            encoder.debug_check_bounds::<AdvertisingData>(offset);
5151            // Vector header
5152            let max_ordinal: u64 = self.max_ordinal_present();
5153            encoder.write_num(max_ordinal, offset);
5154            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5155            // Calling encoder.out_of_line_offset(0) is not allowed.
5156            if max_ordinal == 0 {
5157                return Ok(());
5158            }
5159            depth.increment()?;
5160            let envelope_size = 8;
5161            let bytes_len = max_ordinal as usize * envelope_size;
5162            #[allow(unused_variables)]
5163            let offset = encoder.out_of_line_offset(bytes_len);
5164            let mut _prev_end_offset: usize = 0;
5165            if 1 > max_ordinal {
5166                return Ok(());
5167            }
5168
5169            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5170            // are envelope_size bytes.
5171            let cur_offset: usize = (1 - 1) * envelope_size;
5172
5173            // Zero reserved fields.
5174            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5175
5176            // Safety:
5177            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5178            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5179            //   envelope_size bytes, there is always sufficient room.
5180            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
5181                self.name.as_ref().map(
5182                    <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
5183                ),
5184                encoder,
5185                offset + cur_offset,
5186                depth,
5187            )?;
5188
5189            _prev_end_offset = cur_offset + envelope_size;
5190            if 2 > max_ordinal {
5191                return Ok(());
5192            }
5193
5194            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5195            // are envelope_size bytes.
5196            let cur_offset: usize = (2 - 1) * envelope_size;
5197
5198            // Zero reserved fields.
5199            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5200
5201            // Safety:
5202            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5203            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5204            //   envelope_size bytes, there is always sufficient room.
5205            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Appearance, D>(
5206            self.appearance.as_ref().map(<fidl_fuchsia_bluetooth__common::Appearance as fidl::encoding::ValueTypeMarker>::borrow),
5207            encoder, offset + cur_offset, depth
5208        )?;
5209
5210            _prev_end_offset = cur_offset + envelope_size;
5211            if 3 > max_ordinal {
5212                return Ok(());
5213            }
5214
5215            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5216            // are envelope_size bytes.
5217            let cur_offset: usize = (3 - 1) * envelope_size;
5218
5219            // Zero reserved fields.
5220            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5221
5222            // Safety:
5223            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5224            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5225            //   envelope_size bytes, there is always sufficient room.
5226            fidl::encoding::encode_in_envelope_optional::<i8, D>(
5227                self.tx_power_level.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
5228                encoder,
5229                offset + cur_offset,
5230                depth,
5231            )?;
5232
5233            _prev_end_offset = cur_offset + envelope_size;
5234            if 4 > max_ordinal {
5235                return Ok(());
5236            }
5237
5238            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5239            // are envelope_size bytes.
5240            let cur_offset: usize = (4 - 1) * envelope_size;
5241
5242            // Zero reserved fields.
5243            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5244
5245            // Safety:
5246            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5247            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5248            //   envelope_size bytes, there is always sufficient room.
5249            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>, D>(
5250            self.service_uuids.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid> as fidl::encoding::ValueTypeMarker>::borrow),
5251            encoder, offset + cur_offset, depth
5252        )?;
5253
5254            _prev_end_offset = cur_offset + envelope_size;
5255            if 5 > max_ordinal {
5256                return Ok(());
5257            }
5258
5259            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5260            // are envelope_size bytes.
5261            let cur_offset: usize = (5 - 1) * envelope_size;
5262
5263            // Zero reserved fields.
5264            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5265
5266            // Safety:
5267            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5268            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5269            //   envelope_size bytes, there is always sufficient room.
5270            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ServiceData>, D>(
5271            self.service_data.as_ref().map(<fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::ValueTypeMarker>::borrow),
5272            encoder, offset + cur_offset, depth
5273        )?;
5274
5275            _prev_end_offset = cur_offset + envelope_size;
5276            if 6 > max_ordinal {
5277                return Ok(());
5278            }
5279
5280            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5281            // are envelope_size bytes.
5282            let cur_offset: usize = (6 - 1) * envelope_size;
5283
5284            // Zero reserved fields.
5285            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5286
5287            // Safety:
5288            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5289            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5290            //   envelope_size bytes, there is always sufficient room.
5291            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ManufacturerData>, D>(
5292            self.manufacturer_data.as_ref().map(<fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::ValueTypeMarker>::borrow),
5293            encoder, offset + cur_offset, depth
5294        )?;
5295
5296            _prev_end_offset = cur_offset + envelope_size;
5297            if 7 > max_ordinal {
5298                return Ok(());
5299            }
5300
5301            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5302            // are envelope_size bytes.
5303            let cur_offset: usize = (7 - 1) * envelope_size;
5304
5305            // Zero reserved fields.
5306            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5307
5308            // Safety:
5309            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5310            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5311            //   envelope_size bytes, there is always sufficient room.
5312            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>, D>(
5313            self.uris.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>> as fidl::encoding::ValueTypeMarker>::borrow),
5314            encoder, offset + cur_offset, depth
5315        )?;
5316
5317            _prev_end_offset = cur_offset + envelope_size;
5318            if 8 > max_ordinal {
5319                return Ok(());
5320            }
5321
5322            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5323            // are envelope_size bytes.
5324            let cur_offset: usize = (8 - 1) * envelope_size;
5325
5326            // Zero reserved fields.
5327            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5328
5329            // Safety:
5330            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5331            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5332            //   envelope_size bytes, there is always sufficient room.
5333            fidl::encoding::encode_in_envelope_optional::<bool, D>(
5334                self.include_tx_power_level
5335                    .as_ref()
5336                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5337                encoder,
5338                offset + cur_offset,
5339                depth,
5340            )?;
5341
5342            _prev_end_offset = cur_offset + envelope_size;
5343            if 9 > max_ordinal {
5344                return Ok(());
5345            }
5346
5347            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5348            // are envelope_size bytes.
5349            let cur_offset: usize = (9 - 1) * envelope_size;
5350
5351            // Zero reserved fields.
5352            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5353
5354            // Safety:
5355            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5356            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5357            //   envelope_size bytes, there is always sufficient room.
5358            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5359                self.resolvable_set_identifier
5360                    .as_ref()
5361                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5362                encoder,
5363                offset + cur_offset,
5364                depth,
5365            )?;
5366
5367            _prev_end_offset = cur_offset + envelope_size;
5368            if 10 > max_ordinal {
5369                return Ok(());
5370            }
5371
5372            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5373            // are envelope_size bytes.
5374            let cur_offset: usize = (10 - 1) * envelope_size;
5375
5376            // Zero reserved fields.
5377            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5378
5379            // Safety:
5380            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5381            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5382            //   envelope_size bytes, there is always sufficient room.
5383            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
5384                self.broadcast_name.as_ref().map(
5385                    <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
5386                ),
5387                encoder,
5388                offset + cur_offset,
5389                depth,
5390            )?;
5391
5392            _prev_end_offset = cur_offset + envelope_size;
5393
5394            Ok(())
5395        }
5396    }
5397
5398    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingData {
5399        #[inline(always)]
5400        fn new_empty() -> Self {
5401            Self::default()
5402        }
5403
5404        unsafe fn decode(
5405            &mut self,
5406            decoder: &mut fidl::encoding::Decoder<'_, D>,
5407            offset: usize,
5408            mut depth: fidl::encoding::Depth,
5409        ) -> fidl::Result<()> {
5410            decoder.debug_check_bounds::<Self>(offset);
5411            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5412                None => return Err(fidl::Error::NotNullable),
5413                Some(len) => len,
5414            };
5415            // Calling decoder.out_of_line_offset(0) is not allowed.
5416            if len == 0 {
5417                return Ok(());
5418            };
5419            depth.increment()?;
5420            let envelope_size = 8;
5421            let bytes_len = len * envelope_size;
5422            let offset = decoder.out_of_line_offset(bytes_len)?;
5423            // Decode the envelope for each type.
5424            let mut _next_ordinal_to_read = 0;
5425            let mut next_offset = offset;
5426            let end_offset = offset + bytes_len;
5427            _next_ordinal_to_read += 1;
5428            if next_offset >= end_offset {
5429                return Ok(());
5430            }
5431
5432            // Decode unknown envelopes for gaps in ordinals.
5433            while _next_ordinal_to_read < 1 {
5434                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5435                _next_ordinal_to_read += 1;
5436                next_offset += envelope_size;
5437            }
5438
5439            let next_out_of_line = decoder.next_out_of_line();
5440            let handles_before = decoder.remaining_handles();
5441            if let Some((inlined, num_bytes, num_handles)) =
5442                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5443            {
5444                let member_inline_size =
5445                    <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
5446                        decoder.context,
5447                    );
5448                if inlined != (member_inline_size <= 4) {
5449                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5450                }
5451                let inner_offset;
5452                let mut inner_depth = depth.clone();
5453                if inlined {
5454                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5455                    inner_offset = next_offset;
5456                } else {
5457                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5458                    inner_depth.increment()?;
5459                }
5460                let val_ref = self
5461                    .name
5462                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
5463                fidl::decode!(
5464                    fidl::encoding::BoundedString<248>,
5465                    D,
5466                    val_ref,
5467                    decoder,
5468                    inner_offset,
5469                    inner_depth
5470                )?;
5471                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5472                {
5473                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5474                }
5475                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5476                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5477                }
5478            }
5479
5480            next_offset += envelope_size;
5481            _next_ordinal_to_read += 1;
5482            if next_offset >= end_offset {
5483                return Ok(());
5484            }
5485
5486            // Decode unknown envelopes for gaps in ordinals.
5487            while _next_ordinal_to_read < 2 {
5488                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5489                _next_ordinal_to_read += 1;
5490                next_offset += envelope_size;
5491            }
5492
5493            let next_out_of_line = decoder.next_out_of_line();
5494            let handles_before = decoder.remaining_handles();
5495            if let Some((inlined, num_bytes, num_handles)) =
5496                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5497            {
5498                let member_inline_size = <fidl_fuchsia_bluetooth__common::Appearance as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5499                if inlined != (member_inline_size <= 4) {
5500                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5501                }
5502                let inner_offset;
5503                let mut inner_depth = depth.clone();
5504                if inlined {
5505                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5506                    inner_offset = next_offset;
5507                } else {
5508                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5509                    inner_depth.increment()?;
5510                }
5511                let val_ref = self.appearance.get_or_insert_with(|| {
5512                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Appearance, D)
5513                });
5514                fidl::decode!(
5515                    fidl_fuchsia_bluetooth__common::Appearance,
5516                    D,
5517                    val_ref,
5518                    decoder,
5519                    inner_offset,
5520                    inner_depth
5521                )?;
5522                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5523                {
5524                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5525                }
5526                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5527                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5528                }
5529            }
5530
5531            next_offset += envelope_size;
5532            _next_ordinal_to_read += 1;
5533            if next_offset >= end_offset {
5534                return Ok(());
5535            }
5536
5537            // Decode unknown envelopes for gaps in ordinals.
5538            while _next_ordinal_to_read < 3 {
5539                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5540                _next_ordinal_to_read += 1;
5541                next_offset += envelope_size;
5542            }
5543
5544            let next_out_of_line = decoder.next_out_of_line();
5545            let handles_before = decoder.remaining_handles();
5546            if let Some((inlined, num_bytes, num_handles)) =
5547                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5548            {
5549                let member_inline_size =
5550                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5551                if inlined != (member_inline_size <= 4) {
5552                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5553                }
5554                let inner_offset;
5555                let mut inner_depth = depth.clone();
5556                if inlined {
5557                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5558                    inner_offset = next_offset;
5559                } else {
5560                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5561                    inner_depth.increment()?;
5562                }
5563                let val_ref = self.tx_power_level.get_or_insert_with(|| fidl::new_empty!(i8, D));
5564                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
5565                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5566                {
5567                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5568                }
5569                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5570                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5571                }
5572            }
5573
5574            next_offset += envelope_size;
5575            _next_ordinal_to_read += 1;
5576            if next_offset >= end_offset {
5577                return Ok(());
5578            }
5579
5580            // Decode unknown envelopes for gaps in ordinals.
5581            while _next_ordinal_to_read < 4 {
5582                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5583                _next_ordinal_to_read += 1;
5584                next_offset += envelope_size;
5585            }
5586
5587            let next_out_of_line = decoder.next_out_of_line();
5588            let handles_before = decoder.remaining_handles();
5589            if let Some((inlined, num_bytes, num_handles)) =
5590                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5591            {
5592                let member_inline_size = <fidl::encoding::UnboundedVector<
5593                    fidl_fuchsia_bluetooth__common::Uuid,
5594                > as fidl::encoding::TypeMarker>::inline_size(
5595                    decoder.context
5596                );
5597                if inlined != (member_inline_size <= 4) {
5598                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5599                }
5600                let inner_offset;
5601                let mut inner_depth = depth.clone();
5602                if inlined {
5603                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5604                    inner_offset = next_offset;
5605                } else {
5606                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5607                    inner_depth.increment()?;
5608                }
5609                let val_ref = self.service_uuids.get_or_insert_with(|| {
5610                    fidl::new_empty!(
5611                        fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>,
5612                        D
5613                    )
5614                });
5615                fidl::decode!(
5616                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>,
5617                    D,
5618                    val_ref,
5619                    decoder,
5620                    inner_offset,
5621                    inner_depth
5622                )?;
5623                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5624                {
5625                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5626                }
5627                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5628                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5629                }
5630            }
5631
5632            next_offset += envelope_size;
5633            _next_ordinal_to_read += 1;
5634            if next_offset >= end_offset {
5635                return Ok(());
5636            }
5637
5638            // Decode unknown envelopes for gaps in ordinals.
5639            while _next_ordinal_to_read < 5 {
5640                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5641                _next_ordinal_to_read += 1;
5642                next_offset += envelope_size;
5643            }
5644
5645            let next_out_of_line = decoder.next_out_of_line();
5646            let handles_before = decoder.remaining_handles();
5647            if let Some((inlined, num_bytes, num_handles)) =
5648                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5649            {
5650                let member_inline_size = <fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5651                if inlined != (member_inline_size <= 4) {
5652                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5653                }
5654                let inner_offset;
5655                let mut inner_depth = depth.clone();
5656                if inlined {
5657                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5658                    inner_offset = next_offset;
5659                } else {
5660                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5661                    inner_depth.increment()?;
5662                }
5663                let val_ref = self.service_data.get_or_insert_with(|| {
5664                    fidl::new_empty!(fidl::encoding::UnboundedVector<ServiceData>, D)
5665                });
5666                fidl::decode!(
5667                    fidl::encoding::UnboundedVector<ServiceData>,
5668                    D,
5669                    val_ref,
5670                    decoder,
5671                    inner_offset,
5672                    inner_depth
5673                )?;
5674                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5675                {
5676                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5677                }
5678                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5679                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5680                }
5681            }
5682
5683            next_offset += envelope_size;
5684            _next_ordinal_to_read += 1;
5685            if next_offset >= end_offset {
5686                return Ok(());
5687            }
5688
5689            // Decode unknown envelopes for gaps in ordinals.
5690            while _next_ordinal_to_read < 6 {
5691                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5692                _next_ordinal_to_read += 1;
5693                next_offset += envelope_size;
5694            }
5695
5696            let next_out_of_line = decoder.next_out_of_line();
5697            let handles_before = decoder.remaining_handles();
5698            if let Some((inlined, num_bytes, num_handles)) =
5699                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5700            {
5701                let member_inline_size = <fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5702                if inlined != (member_inline_size <= 4) {
5703                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5704                }
5705                let inner_offset;
5706                let mut inner_depth = depth.clone();
5707                if inlined {
5708                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5709                    inner_offset = next_offset;
5710                } else {
5711                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5712                    inner_depth.increment()?;
5713                }
5714                let val_ref = self.manufacturer_data.get_or_insert_with(|| {
5715                    fidl::new_empty!(fidl::encoding::UnboundedVector<ManufacturerData>, D)
5716                });
5717                fidl::decode!(
5718                    fidl::encoding::UnboundedVector<ManufacturerData>,
5719                    D,
5720                    val_ref,
5721                    decoder,
5722                    inner_offset,
5723                    inner_depth
5724                )?;
5725                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5726                {
5727                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5728                }
5729                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5730                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5731                }
5732            }
5733
5734            next_offset += envelope_size;
5735            _next_ordinal_to_read += 1;
5736            if next_offset >= end_offset {
5737                return Ok(());
5738            }
5739
5740            // Decode unknown envelopes for gaps in ordinals.
5741            while _next_ordinal_to_read < 7 {
5742                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5743                _next_ordinal_to_read += 1;
5744                next_offset += envelope_size;
5745            }
5746
5747            let next_out_of_line = decoder.next_out_of_line();
5748            let handles_before = decoder.remaining_handles();
5749            if let Some((inlined, num_bytes, num_handles)) =
5750                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5751            {
5752                let member_inline_size = <fidl::encoding::UnboundedVector<
5753                    fidl::encoding::BoundedString<278>,
5754                > as fidl::encoding::TypeMarker>::inline_size(
5755                    decoder.context
5756                );
5757                if inlined != (member_inline_size <= 4) {
5758                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5759                }
5760                let inner_offset;
5761                let mut inner_depth = depth.clone();
5762                if inlined {
5763                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5764                    inner_offset = next_offset;
5765                } else {
5766                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5767                    inner_depth.increment()?;
5768                }
5769                let val_ref = self.uris.get_or_insert_with(|| {
5770                    fidl::new_empty!(
5771                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
5772                        D
5773                    )
5774                });
5775                fidl::decode!(
5776                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
5777                    D,
5778                    val_ref,
5779                    decoder,
5780                    inner_offset,
5781                    inner_depth
5782                )?;
5783                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5784                {
5785                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5786                }
5787                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5788                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5789                }
5790            }
5791
5792            next_offset += envelope_size;
5793            _next_ordinal_to_read += 1;
5794            if next_offset >= end_offset {
5795                return Ok(());
5796            }
5797
5798            // Decode unknown envelopes for gaps in ordinals.
5799            while _next_ordinal_to_read < 8 {
5800                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5801                _next_ordinal_to_read += 1;
5802                next_offset += envelope_size;
5803            }
5804
5805            let next_out_of_line = decoder.next_out_of_line();
5806            let handles_before = decoder.remaining_handles();
5807            if let Some((inlined, num_bytes, num_handles)) =
5808                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5809            {
5810                let member_inline_size =
5811                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5812                if inlined != (member_inline_size <= 4) {
5813                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5814                }
5815                let inner_offset;
5816                let mut inner_depth = depth.clone();
5817                if inlined {
5818                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5819                    inner_offset = next_offset;
5820                } else {
5821                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5822                    inner_depth.increment()?;
5823                }
5824                let val_ref =
5825                    self.include_tx_power_level.get_or_insert_with(|| fidl::new_empty!(bool, D));
5826                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5827                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5828                {
5829                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5830                }
5831                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5832                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5833                }
5834            }
5835
5836            next_offset += envelope_size;
5837            _next_ordinal_to_read += 1;
5838            if next_offset >= end_offset {
5839                return Ok(());
5840            }
5841
5842            // Decode unknown envelopes for gaps in ordinals.
5843            while _next_ordinal_to_read < 9 {
5844                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5845                _next_ordinal_to_read += 1;
5846                next_offset += envelope_size;
5847            }
5848
5849            let next_out_of_line = decoder.next_out_of_line();
5850            let handles_before = decoder.remaining_handles();
5851            if let Some((inlined, num_bytes, num_handles)) =
5852                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5853            {
5854                let member_inline_size =
5855                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5856                        decoder.context,
5857                    );
5858                if inlined != (member_inline_size <= 4) {
5859                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5860                }
5861                let inner_offset;
5862                let mut inner_depth = depth.clone();
5863                if inlined {
5864                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5865                    inner_offset = next_offset;
5866                } else {
5867                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5868                    inner_depth.increment()?;
5869                }
5870                let val_ref = self
5871                    .resolvable_set_identifier
5872                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5873                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5874                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5875                {
5876                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5877                }
5878                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5879                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5880                }
5881            }
5882
5883            next_offset += envelope_size;
5884            _next_ordinal_to_read += 1;
5885            if next_offset >= end_offset {
5886                return Ok(());
5887            }
5888
5889            // Decode unknown envelopes for gaps in ordinals.
5890            while _next_ordinal_to_read < 10 {
5891                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5892                _next_ordinal_to_read += 1;
5893                next_offset += envelope_size;
5894            }
5895
5896            let next_out_of_line = decoder.next_out_of_line();
5897            let handles_before = decoder.remaining_handles();
5898            if let Some((inlined, num_bytes, num_handles)) =
5899                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5900            {
5901                let member_inline_size =
5902                    <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
5903                        decoder.context,
5904                    );
5905                if inlined != (member_inline_size <= 4) {
5906                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5907                }
5908                let inner_offset;
5909                let mut inner_depth = depth.clone();
5910                if inlined {
5911                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5912                    inner_offset = next_offset;
5913                } else {
5914                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5915                    inner_depth.increment()?;
5916                }
5917                let val_ref = self
5918                    .broadcast_name
5919                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
5920                fidl::decode!(
5921                    fidl::encoding::BoundedString<128>,
5922                    D,
5923                    val_ref,
5924                    decoder,
5925                    inner_offset,
5926                    inner_depth
5927                )?;
5928                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5929                {
5930                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5931                }
5932                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5933                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5934                }
5935            }
5936
5937            next_offset += envelope_size;
5938
5939            // Decode the remaining unknown envelopes.
5940            while next_offset < end_offset {
5941                _next_ordinal_to_read += 1;
5942                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5943                next_offset += envelope_size;
5944            }
5945
5946            Ok(())
5947        }
5948    }
5949
5950    impl AdvertisingParameters {
5951        #[inline(always)]
5952        fn max_ordinal_present(&self) -> u64 {
5953            if let Some(_) = self.address_type {
5954                return 7;
5955            }
5956            if let Some(_) = self.advertising_procedure {
5957                return 6;
5958            }
5959            if let Some(_) = self.connection_options {
5960                return 5;
5961            }
5962            if let Some(_) = self.connectable {
5963                return 4;
5964            }
5965            if let Some(_) = self.mode_hint {
5966                return 3;
5967            }
5968            if let Some(_) = self.scan_response {
5969                return 2;
5970            }
5971            if let Some(_) = self.data {
5972                return 1;
5973            }
5974            0
5975        }
5976    }
5977
5978    impl fidl::encoding::ValueTypeMarker for AdvertisingParameters {
5979        type Borrowed<'a> = &'a Self;
5980        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5981            value
5982        }
5983    }
5984
5985    unsafe impl fidl::encoding::TypeMarker for AdvertisingParameters {
5986        type Owned = Self;
5987
5988        #[inline(always)]
5989        fn inline_align(_context: fidl::encoding::Context) -> usize {
5990            8
5991        }
5992
5993        #[inline(always)]
5994        fn inline_size(_context: fidl::encoding::Context) -> usize {
5995            16
5996        }
5997    }
5998
5999    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdvertisingParameters, D>
6000        for &AdvertisingParameters
6001    {
6002        unsafe fn encode(
6003            self,
6004            encoder: &mut fidl::encoding::Encoder<'_, D>,
6005            offset: usize,
6006            mut depth: fidl::encoding::Depth,
6007        ) -> fidl::Result<()> {
6008            encoder.debug_check_bounds::<AdvertisingParameters>(offset);
6009            // Vector header
6010            let max_ordinal: u64 = self.max_ordinal_present();
6011            encoder.write_num(max_ordinal, offset);
6012            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6013            // Calling encoder.out_of_line_offset(0) is not allowed.
6014            if max_ordinal == 0 {
6015                return Ok(());
6016            }
6017            depth.increment()?;
6018            let envelope_size = 8;
6019            let bytes_len = max_ordinal as usize * envelope_size;
6020            #[allow(unused_variables)]
6021            let offset = encoder.out_of_line_offset(bytes_len);
6022            let mut _prev_end_offset: usize = 0;
6023            if 1 > max_ordinal {
6024                return Ok(());
6025            }
6026
6027            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6028            // are envelope_size bytes.
6029            let cur_offset: usize = (1 - 1) * envelope_size;
6030
6031            // Zero reserved fields.
6032            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6033
6034            // Safety:
6035            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6036            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6037            //   envelope_size bytes, there is always sufficient room.
6038            fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
6039                self.data
6040                    .as_ref()
6041                    .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
6042                encoder,
6043                offset + cur_offset,
6044                depth,
6045            )?;
6046
6047            _prev_end_offset = cur_offset + envelope_size;
6048            if 2 > max_ordinal {
6049                return Ok(());
6050            }
6051
6052            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6053            // are envelope_size bytes.
6054            let cur_offset: usize = (2 - 1) * envelope_size;
6055
6056            // Zero reserved fields.
6057            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6058
6059            // Safety:
6060            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6061            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6062            //   envelope_size bytes, there is always sufficient room.
6063            fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
6064                self.scan_response
6065                    .as_ref()
6066                    .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
6067                encoder,
6068                offset + cur_offset,
6069                depth,
6070            )?;
6071
6072            _prev_end_offset = cur_offset + envelope_size;
6073            if 3 > max_ordinal {
6074                return Ok(());
6075            }
6076
6077            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6078            // are envelope_size bytes.
6079            let cur_offset: usize = (3 - 1) * envelope_size;
6080
6081            // Zero reserved fields.
6082            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6083
6084            // Safety:
6085            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6086            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6087            //   envelope_size bytes, there is always sufficient room.
6088            fidl::encoding::encode_in_envelope_optional::<AdvertisingModeHint, D>(
6089                self.mode_hint
6090                    .as_ref()
6091                    .map(<AdvertisingModeHint as fidl::encoding::ValueTypeMarker>::borrow),
6092                encoder,
6093                offset + cur_offset,
6094                depth,
6095            )?;
6096
6097            _prev_end_offset = cur_offset + envelope_size;
6098            if 4 > max_ordinal {
6099                return Ok(());
6100            }
6101
6102            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6103            // are envelope_size bytes.
6104            let cur_offset: usize = (4 - 1) * envelope_size;
6105
6106            // Zero reserved fields.
6107            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6108
6109            // Safety:
6110            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6111            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6112            //   envelope_size bytes, there is always sufficient room.
6113            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6114                self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6115                encoder,
6116                offset + cur_offset,
6117                depth,
6118            )?;
6119
6120            _prev_end_offset = cur_offset + envelope_size;
6121            if 5 > max_ordinal {
6122                return Ok(());
6123            }
6124
6125            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6126            // are envelope_size bytes.
6127            let cur_offset: usize = (5 - 1) * envelope_size;
6128
6129            // Zero reserved fields.
6130            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6131
6132            // Safety:
6133            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6134            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6135            //   envelope_size bytes, there is always sufficient room.
6136            fidl::encoding::encode_in_envelope_optional::<ConnectionOptions, D>(
6137                self.connection_options
6138                    .as_ref()
6139                    .map(<ConnectionOptions as fidl::encoding::ValueTypeMarker>::borrow),
6140                encoder,
6141                offset + cur_offset,
6142                depth,
6143            )?;
6144
6145            _prev_end_offset = cur_offset + envelope_size;
6146            if 6 > max_ordinal {
6147                return Ok(());
6148            }
6149
6150            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6151            // are envelope_size bytes.
6152            let cur_offset: usize = (6 - 1) * envelope_size;
6153
6154            // Zero reserved fields.
6155            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6156
6157            // Safety:
6158            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6159            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6160            //   envelope_size bytes, there is always sufficient room.
6161            fidl::encoding::encode_in_envelope_optional::<AdvertisingProcedure, D>(
6162                self.advertising_procedure
6163                    .as_ref()
6164                    .map(<AdvertisingProcedure as fidl::encoding::ValueTypeMarker>::borrow),
6165                encoder,
6166                offset + cur_offset,
6167                depth,
6168            )?;
6169
6170            _prev_end_offset = cur_offset + envelope_size;
6171            if 7 > max_ordinal {
6172                return Ok(());
6173            }
6174
6175            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6176            // are envelope_size bytes.
6177            let cur_offset: usize = (7 - 1) * envelope_size;
6178
6179            // Zero reserved fields.
6180            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6181
6182            // Safety:
6183            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6184            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6185            //   envelope_size bytes, there is always sufficient room.
6186            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::AddressType, D>(
6187            self.address_type.as_ref().map(<fidl_fuchsia_bluetooth__common::AddressType as fidl::encoding::ValueTypeMarker>::borrow),
6188            encoder, offset + cur_offset, depth
6189        )?;
6190
6191            _prev_end_offset = cur_offset + envelope_size;
6192
6193            Ok(())
6194        }
6195    }
6196
6197    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingParameters {
6198        #[inline(always)]
6199        fn new_empty() -> Self {
6200            Self::default()
6201        }
6202
6203        unsafe fn decode(
6204            &mut self,
6205            decoder: &mut fidl::encoding::Decoder<'_, D>,
6206            offset: usize,
6207            mut depth: fidl::encoding::Depth,
6208        ) -> fidl::Result<()> {
6209            decoder.debug_check_bounds::<Self>(offset);
6210            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6211                None => return Err(fidl::Error::NotNullable),
6212                Some(len) => len,
6213            };
6214            // Calling decoder.out_of_line_offset(0) is not allowed.
6215            if len == 0 {
6216                return Ok(());
6217            };
6218            depth.increment()?;
6219            let envelope_size = 8;
6220            let bytes_len = len * envelope_size;
6221            let offset = decoder.out_of_line_offset(bytes_len)?;
6222            // Decode the envelope for each type.
6223            let mut _next_ordinal_to_read = 0;
6224            let mut next_offset = offset;
6225            let end_offset = offset + bytes_len;
6226            _next_ordinal_to_read += 1;
6227            if next_offset >= end_offset {
6228                return Ok(());
6229            }
6230
6231            // Decode unknown envelopes for gaps in ordinals.
6232            while _next_ordinal_to_read < 1 {
6233                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6234                _next_ordinal_to_read += 1;
6235                next_offset += envelope_size;
6236            }
6237
6238            let next_out_of_line = decoder.next_out_of_line();
6239            let handles_before = decoder.remaining_handles();
6240            if let Some((inlined, num_bytes, num_handles)) =
6241                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6242            {
6243                let member_inline_size =
6244                    <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6245                if inlined != (member_inline_size <= 4) {
6246                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6247                }
6248                let inner_offset;
6249                let mut inner_depth = depth.clone();
6250                if inlined {
6251                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6252                    inner_offset = next_offset;
6253                } else {
6254                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6255                    inner_depth.increment()?;
6256                }
6257                let val_ref = self.data.get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
6258                fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
6259                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6260                {
6261                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6262                }
6263                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6264                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6265                }
6266            }
6267
6268            next_offset += envelope_size;
6269            _next_ordinal_to_read += 1;
6270            if next_offset >= end_offset {
6271                return Ok(());
6272            }
6273
6274            // Decode unknown envelopes for gaps in ordinals.
6275            while _next_ordinal_to_read < 2 {
6276                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6277                _next_ordinal_to_read += 1;
6278                next_offset += envelope_size;
6279            }
6280
6281            let next_out_of_line = decoder.next_out_of_line();
6282            let handles_before = decoder.remaining_handles();
6283            if let Some((inlined, num_bytes, num_handles)) =
6284                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6285            {
6286                let member_inline_size =
6287                    <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6288                if inlined != (member_inline_size <= 4) {
6289                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6290                }
6291                let inner_offset;
6292                let mut inner_depth = depth.clone();
6293                if inlined {
6294                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6295                    inner_offset = next_offset;
6296                } else {
6297                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6298                    inner_depth.increment()?;
6299                }
6300                let val_ref =
6301                    self.scan_response.get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
6302                fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
6303                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6304                {
6305                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6306                }
6307                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6308                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6309                }
6310            }
6311
6312            next_offset += envelope_size;
6313            _next_ordinal_to_read += 1;
6314            if next_offset >= end_offset {
6315                return Ok(());
6316            }
6317
6318            // Decode unknown envelopes for gaps in ordinals.
6319            while _next_ordinal_to_read < 3 {
6320                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6321                _next_ordinal_to_read += 1;
6322                next_offset += envelope_size;
6323            }
6324
6325            let next_out_of_line = decoder.next_out_of_line();
6326            let handles_before = decoder.remaining_handles();
6327            if let Some((inlined, num_bytes, num_handles)) =
6328                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6329            {
6330                let member_inline_size =
6331                    <AdvertisingModeHint as fidl::encoding::TypeMarker>::inline_size(
6332                        decoder.context,
6333                    );
6334                if inlined != (member_inline_size <= 4) {
6335                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6336                }
6337                let inner_offset;
6338                let mut inner_depth = depth.clone();
6339                if inlined {
6340                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6341                    inner_offset = next_offset;
6342                } else {
6343                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6344                    inner_depth.increment()?;
6345                }
6346                let val_ref =
6347                    self.mode_hint.get_or_insert_with(|| fidl::new_empty!(AdvertisingModeHint, D));
6348                fidl::decode!(AdvertisingModeHint, D, val_ref, decoder, inner_offset, inner_depth)?;
6349                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6350                {
6351                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6352                }
6353                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6354                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6355                }
6356            }
6357
6358            next_offset += envelope_size;
6359            _next_ordinal_to_read += 1;
6360            if next_offset >= end_offset {
6361                return Ok(());
6362            }
6363
6364            // Decode unknown envelopes for gaps in ordinals.
6365            while _next_ordinal_to_read < 4 {
6366                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6367                _next_ordinal_to_read += 1;
6368                next_offset += envelope_size;
6369            }
6370
6371            let next_out_of_line = decoder.next_out_of_line();
6372            let handles_before = decoder.remaining_handles();
6373            if let Some((inlined, num_bytes, num_handles)) =
6374                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6375            {
6376                let member_inline_size =
6377                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6378                if inlined != (member_inline_size <= 4) {
6379                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6380                }
6381                let inner_offset;
6382                let mut inner_depth = depth.clone();
6383                if inlined {
6384                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6385                    inner_offset = next_offset;
6386                } else {
6387                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6388                    inner_depth.increment()?;
6389                }
6390                let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
6391                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6392                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6393                {
6394                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6395                }
6396                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6397                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6398                }
6399            }
6400
6401            next_offset += envelope_size;
6402            _next_ordinal_to_read += 1;
6403            if next_offset >= end_offset {
6404                return Ok(());
6405            }
6406
6407            // Decode unknown envelopes for gaps in ordinals.
6408            while _next_ordinal_to_read < 5 {
6409                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6410                _next_ordinal_to_read += 1;
6411                next_offset += envelope_size;
6412            }
6413
6414            let next_out_of_line = decoder.next_out_of_line();
6415            let handles_before = decoder.remaining_handles();
6416            if let Some((inlined, num_bytes, num_handles)) =
6417                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6418            {
6419                let member_inline_size =
6420                    <ConnectionOptions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6421                if inlined != (member_inline_size <= 4) {
6422                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6423                }
6424                let inner_offset;
6425                let mut inner_depth = depth.clone();
6426                if inlined {
6427                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6428                    inner_offset = next_offset;
6429                } else {
6430                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6431                    inner_depth.increment()?;
6432                }
6433                let val_ref = self
6434                    .connection_options
6435                    .get_or_insert_with(|| fidl::new_empty!(ConnectionOptions, D));
6436                fidl::decode!(ConnectionOptions, D, val_ref, decoder, inner_offset, inner_depth)?;
6437                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6438                {
6439                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6440                }
6441                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6442                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6443                }
6444            }
6445
6446            next_offset += envelope_size;
6447            _next_ordinal_to_read += 1;
6448            if next_offset >= end_offset {
6449                return Ok(());
6450            }
6451
6452            // Decode unknown envelopes for gaps in ordinals.
6453            while _next_ordinal_to_read < 6 {
6454                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6455                _next_ordinal_to_read += 1;
6456                next_offset += envelope_size;
6457            }
6458
6459            let next_out_of_line = decoder.next_out_of_line();
6460            let handles_before = decoder.remaining_handles();
6461            if let Some((inlined, num_bytes, num_handles)) =
6462                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6463            {
6464                let member_inline_size =
6465                    <AdvertisingProcedure as fidl::encoding::TypeMarker>::inline_size(
6466                        decoder.context,
6467                    );
6468                if inlined != (member_inline_size <= 4) {
6469                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6470                }
6471                let inner_offset;
6472                let mut inner_depth = depth.clone();
6473                if inlined {
6474                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6475                    inner_offset = next_offset;
6476                } else {
6477                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6478                    inner_depth.increment()?;
6479                }
6480                let val_ref = self
6481                    .advertising_procedure
6482                    .get_or_insert_with(|| fidl::new_empty!(AdvertisingProcedure, D));
6483                fidl::decode!(
6484                    AdvertisingProcedure,
6485                    D,
6486                    val_ref,
6487                    decoder,
6488                    inner_offset,
6489                    inner_depth
6490                )?;
6491                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6492                {
6493                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6494                }
6495                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6496                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6497                }
6498            }
6499
6500            next_offset += envelope_size;
6501            _next_ordinal_to_read += 1;
6502            if next_offset >= end_offset {
6503                return Ok(());
6504            }
6505
6506            // Decode unknown envelopes for gaps in ordinals.
6507            while _next_ordinal_to_read < 7 {
6508                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6509                _next_ordinal_to_read += 1;
6510                next_offset += envelope_size;
6511            }
6512
6513            let next_out_of_line = decoder.next_out_of_line();
6514            let handles_before = decoder.remaining_handles();
6515            if let Some((inlined, num_bytes, num_handles)) =
6516                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6517            {
6518                let member_inline_size = <fidl_fuchsia_bluetooth__common::AddressType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6519                if inlined != (member_inline_size <= 4) {
6520                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6521                }
6522                let inner_offset;
6523                let mut inner_depth = depth.clone();
6524                if inlined {
6525                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6526                    inner_offset = next_offset;
6527                } else {
6528                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6529                    inner_depth.increment()?;
6530                }
6531                let val_ref = self.address_type.get_or_insert_with(|| {
6532                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::AddressType, D)
6533                });
6534                fidl::decode!(
6535                    fidl_fuchsia_bluetooth__common::AddressType,
6536                    D,
6537                    val_ref,
6538                    decoder,
6539                    inner_offset,
6540                    inner_depth
6541                )?;
6542                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6543                {
6544                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6545                }
6546                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6547                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6548                }
6549            }
6550
6551            next_offset += envelope_size;
6552
6553            // Decode the remaining unknown envelopes.
6554            while next_offset < end_offset {
6555                _next_ordinal_to_read += 1;
6556                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6557                next_offset += envelope_size;
6558            }
6559
6560            Ok(())
6561        }
6562    }
6563
6564    impl BroadcastIsochronousGroupInfo {
6565        #[inline(always)]
6566        fn max_ordinal_present(&self) -> u64 {
6567            if let Some(_) = self.encryption {
6568                return 4;
6569            }
6570            if let Some(_) = self.phy {
6571                return 3;
6572            }
6573            if let Some(_) = self.max_sdu_size {
6574                return 2;
6575            }
6576            if let Some(_) = self.streams_count {
6577                return 1;
6578            }
6579            0
6580        }
6581    }
6582
6583    impl fidl::encoding::ValueTypeMarker for BroadcastIsochronousGroupInfo {
6584        type Borrowed<'a> = &'a Self;
6585        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6586            value
6587        }
6588    }
6589
6590    unsafe impl fidl::encoding::TypeMarker for BroadcastIsochronousGroupInfo {
6591        type Owned = Self;
6592
6593        #[inline(always)]
6594        fn inline_align(_context: fidl::encoding::Context) -> usize {
6595            8
6596        }
6597
6598        #[inline(always)]
6599        fn inline_size(_context: fidl::encoding::Context) -> usize {
6600            16
6601        }
6602    }
6603
6604    unsafe impl<D: fidl::encoding::ResourceDialect>
6605        fidl::encoding::Encode<BroadcastIsochronousGroupInfo, D>
6606        for &BroadcastIsochronousGroupInfo
6607    {
6608        unsafe fn encode(
6609            self,
6610            encoder: &mut fidl::encoding::Encoder<'_, D>,
6611            offset: usize,
6612            mut depth: fidl::encoding::Depth,
6613        ) -> fidl::Result<()> {
6614            encoder.debug_check_bounds::<BroadcastIsochronousGroupInfo>(offset);
6615            // Vector header
6616            let max_ordinal: u64 = self.max_ordinal_present();
6617            encoder.write_num(max_ordinal, offset);
6618            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6619            // Calling encoder.out_of_line_offset(0) is not allowed.
6620            if max_ordinal == 0 {
6621                return Ok(());
6622            }
6623            depth.increment()?;
6624            let envelope_size = 8;
6625            let bytes_len = max_ordinal as usize * envelope_size;
6626            #[allow(unused_variables)]
6627            let offset = encoder.out_of_line_offset(bytes_len);
6628            let mut _prev_end_offset: usize = 0;
6629            if 1 > max_ordinal {
6630                return Ok(());
6631            }
6632
6633            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6634            // are envelope_size bytes.
6635            let cur_offset: usize = (1 - 1) * envelope_size;
6636
6637            // Zero reserved fields.
6638            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6639
6640            // Safety:
6641            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6642            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6643            //   envelope_size bytes, there is always sufficient room.
6644            fidl::encoding::encode_in_envelope_optional::<u8, D>(
6645                self.streams_count.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
6646                encoder,
6647                offset + cur_offset,
6648                depth,
6649            )?;
6650
6651            _prev_end_offset = cur_offset + envelope_size;
6652            if 2 > max_ordinal {
6653                return Ok(());
6654            }
6655
6656            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6657            // are envelope_size bytes.
6658            let cur_offset: usize = (2 - 1) * envelope_size;
6659
6660            // Zero reserved fields.
6661            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6662
6663            // Safety:
6664            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6665            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6666            //   envelope_size bytes, there is always sufficient room.
6667            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6668                self.max_sdu_size.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6669                encoder,
6670                offset + cur_offset,
6671                depth,
6672            )?;
6673
6674            _prev_end_offset = cur_offset + envelope_size;
6675            if 3 > max_ordinal {
6676                return Ok(());
6677            }
6678
6679            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6680            // are envelope_size bytes.
6681            let cur_offset: usize = (3 - 1) * envelope_size;
6682
6683            // Zero reserved fields.
6684            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6685
6686            // Safety:
6687            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6688            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6689            //   envelope_size bytes, there is always sufficient room.
6690            fidl::encoding::encode_in_envelope_optional::<PhysicalLayer, D>(
6691                self.phy.as_ref().map(<PhysicalLayer as fidl::encoding::ValueTypeMarker>::borrow),
6692                encoder,
6693                offset + cur_offset,
6694                depth,
6695            )?;
6696
6697            _prev_end_offset = cur_offset + envelope_size;
6698            if 4 > max_ordinal {
6699                return Ok(());
6700            }
6701
6702            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6703            // are envelope_size bytes.
6704            let cur_offset: usize = (4 - 1) * envelope_size;
6705
6706            // Zero reserved fields.
6707            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6708
6709            // Safety:
6710            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6711            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6712            //   envelope_size bytes, there is always sufficient room.
6713            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6714                self.encryption.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6715                encoder,
6716                offset + cur_offset,
6717                depth,
6718            )?;
6719
6720            _prev_end_offset = cur_offset + envelope_size;
6721
6722            Ok(())
6723        }
6724    }
6725
6726    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6727        for BroadcastIsochronousGroupInfo
6728    {
6729        #[inline(always)]
6730        fn new_empty() -> Self {
6731            Self::default()
6732        }
6733
6734        unsafe fn decode(
6735            &mut self,
6736            decoder: &mut fidl::encoding::Decoder<'_, D>,
6737            offset: usize,
6738            mut depth: fidl::encoding::Depth,
6739        ) -> fidl::Result<()> {
6740            decoder.debug_check_bounds::<Self>(offset);
6741            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6742                None => return Err(fidl::Error::NotNullable),
6743                Some(len) => len,
6744            };
6745            // Calling decoder.out_of_line_offset(0) is not allowed.
6746            if len == 0 {
6747                return Ok(());
6748            };
6749            depth.increment()?;
6750            let envelope_size = 8;
6751            let bytes_len = len * envelope_size;
6752            let offset = decoder.out_of_line_offset(bytes_len)?;
6753            // Decode the envelope for each type.
6754            let mut _next_ordinal_to_read = 0;
6755            let mut next_offset = offset;
6756            let end_offset = offset + bytes_len;
6757            _next_ordinal_to_read += 1;
6758            if next_offset >= end_offset {
6759                return Ok(());
6760            }
6761
6762            // Decode unknown envelopes for gaps in ordinals.
6763            while _next_ordinal_to_read < 1 {
6764                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6765                _next_ordinal_to_read += 1;
6766                next_offset += envelope_size;
6767            }
6768
6769            let next_out_of_line = decoder.next_out_of_line();
6770            let handles_before = decoder.remaining_handles();
6771            if let Some((inlined, num_bytes, num_handles)) =
6772                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6773            {
6774                let member_inline_size =
6775                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6776                if inlined != (member_inline_size <= 4) {
6777                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6778                }
6779                let inner_offset;
6780                let mut inner_depth = depth.clone();
6781                if inlined {
6782                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6783                    inner_offset = next_offset;
6784                } else {
6785                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6786                    inner_depth.increment()?;
6787                }
6788                let val_ref = self.streams_count.get_or_insert_with(|| fidl::new_empty!(u8, D));
6789                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
6790                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6791                {
6792                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6793                }
6794                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6795                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6796                }
6797            }
6798
6799            next_offset += envelope_size;
6800            _next_ordinal_to_read += 1;
6801            if next_offset >= end_offset {
6802                return Ok(());
6803            }
6804
6805            // Decode unknown envelopes for gaps in ordinals.
6806            while _next_ordinal_to_read < 2 {
6807                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6808                _next_ordinal_to_read += 1;
6809                next_offset += envelope_size;
6810            }
6811
6812            let next_out_of_line = decoder.next_out_of_line();
6813            let handles_before = decoder.remaining_handles();
6814            if let Some((inlined, num_bytes, num_handles)) =
6815                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6816            {
6817                let member_inline_size =
6818                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6819                if inlined != (member_inline_size <= 4) {
6820                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6821                }
6822                let inner_offset;
6823                let mut inner_depth = depth.clone();
6824                if inlined {
6825                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6826                    inner_offset = next_offset;
6827                } else {
6828                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6829                    inner_depth.increment()?;
6830                }
6831                let val_ref = self.max_sdu_size.get_or_insert_with(|| fidl::new_empty!(u16, D));
6832                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6833                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6834                {
6835                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6836                }
6837                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6838                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6839                }
6840            }
6841
6842            next_offset += envelope_size;
6843            _next_ordinal_to_read += 1;
6844            if next_offset >= end_offset {
6845                return Ok(());
6846            }
6847
6848            // Decode unknown envelopes for gaps in ordinals.
6849            while _next_ordinal_to_read < 3 {
6850                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6851                _next_ordinal_to_read += 1;
6852                next_offset += envelope_size;
6853            }
6854
6855            let next_out_of_line = decoder.next_out_of_line();
6856            let handles_before = decoder.remaining_handles();
6857            if let Some((inlined, num_bytes, num_handles)) =
6858                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6859            {
6860                let member_inline_size =
6861                    <PhysicalLayer as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6862                if inlined != (member_inline_size <= 4) {
6863                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6864                }
6865                let inner_offset;
6866                let mut inner_depth = depth.clone();
6867                if inlined {
6868                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6869                    inner_offset = next_offset;
6870                } else {
6871                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6872                    inner_depth.increment()?;
6873                }
6874                let val_ref = self.phy.get_or_insert_with(|| fidl::new_empty!(PhysicalLayer, D));
6875                fidl::decode!(PhysicalLayer, D, val_ref, decoder, inner_offset, inner_depth)?;
6876                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6877                {
6878                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6879                }
6880                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6881                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6882                }
6883            }
6884
6885            next_offset += envelope_size;
6886            _next_ordinal_to_read += 1;
6887            if next_offset >= end_offset {
6888                return Ok(());
6889            }
6890
6891            // Decode unknown envelopes for gaps in ordinals.
6892            while _next_ordinal_to_read < 4 {
6893                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6894                _next_ordinal_to_read += 1;
6895                next_offset += envelope_size;
6896            }
6897
6898            let next_out_of_line = decoder.next_out_of_line();
6899            let handles_before = decoder.remaining_handles();
6900            if let Some((inlined, num_bytes, num_handles)) =
6901                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6902            {
6903                let member_inline_size =
6904                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6905                if inlined != (member_inline_size <= 4) {
6906                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6907                }
6908                let inner_offset;
6909                let mut inner_depth = depth.clone();
6910                if inlined {
6911                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6912                    inner_offset = next_offset;
6913                } else {
6914                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6915                    inner_depth.increment()?;
6916                }
6917                let val_ref = self.encryption.get_or_insert_with(|| fidl::new_empty!(bool, D));
6918                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6919                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6920                {
6921                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6922                }
6923                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6924                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6925                }
6926            }
6927
6928            next_offset += envelope_size;
6929
6930            // Decode the remaining unknown envelopes.
6931            while next_offset < end_offset {
6932                _next_ordinal_to_read += 1;
6933                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6934                next_offset += envelope_size;
6935            }
6936
6937            Ok(())
6938        }
6939    }
6940
6941    impl BroadcastIsochronousGroupInfoReport {
6942        #[inline(always)]
6943        fn max_ordinal_present(&self) -> u64 {
6944            if let Some(_) = self.timestamp {
6945                return 2;
6946            }
6947            if let Some(_) = self.info {
6948                return 1;
6949            }
6950            0
6951        }
6952    }
6953
6954    impl fidl::encoding::ValueTypeMarker for BroadcastIsochronousGroupInfoReport {
6955        type Borrowed<'a> = &'a Self;
6956        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6957            value
6958        }
6959    }
6960
6961    unsafe impl fidl::encoding::TypeMarker for BroadcastIsochronousGroupInfoReport {
6962        type Owned = Self;
6963
6964        #[inline(always)]
6965        fn inline_align(_context: fidl::encoding::Context) -> usize {
6966            8
6967        }
6968
6969        #[inline(always)]
6970        fn inline_size(_context: fidl::encoding::Context) -> usize {
6971            16
6972        }
6973    }
6974
6975    unsafe impl<D: fidl::encoding::ResourceDialect>
6976        fidl::encoding::Encode<BroadcastIsochronousGroupInfoReport, D>
6977        for &BroadcastIsochronousGroupInfoReport
6978    {
6979        unsafe fn encode(
6980            self,
6981            encoder: &mut fidl::encoding::Encoder<'_, D>,
6982            offset: usize,
6983            mut depth: fidl::encoding::Depth,
6984        ) -> fidl::Result<()> {
6985            encoder.debug_check_bounds::<BroadcastIsochronousGroupInfoReport>(offset);
6986            // Vector header
6987            let max_ordinal: u64 = self.max_ordinal_present();
6988            encoder.write_num(max_ordinal, offset);
6989            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6990            // Calling encoder.out_of_line_offset(0) is not allowed.
6991            if max_ordinal == 0 {
6992                return Ok(());
6993            }
6994            depth.increment()?;
6995            let envelope_size = 8;
6996            let bytes_len = max_ordinal as usize * envelope_size;
6997            #[allow(unused_variables)]
6998            let offset = encoder.out_of_line_offset(bytes_len);
6999            let mut _prev_end_offset: usize = 0;
7000            if 1 > max_ordinal {
7001                return Ok(());
7002            }
7003
7004            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7005            // are envelope_size bytes.
7006            let cur_offset: usize = (1 - 1) * envelope_size;
7007
7008            // Zero reserved fields.
7009            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7010
7011            // Safety:
7012            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7013            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7014            //   envelope_size bytes, there is always sufficient room.
7015            fidl::encoding::encode_in_envelope_optional::<BroadcastIsochronousGroupInfo, D>(
7016                self.info.as_ref().map(
7017                    <BroadcastIsochronousGroupInfo as fidl::encoding::ValueTypeMarker>::borrow,
7018                ),
7019                encoder,
7020                offset + cur_offset,
7021                depth,
7022            )?;
7023
7024            _prev_end_offset = cur_offset + envelope_size;
7025            if 2 > max_ordinal {
7026                return Ok(());
7027            }
7028
7029            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7030            // are envelope_size bytes.
7031            let cur_offset: usize = (2 - 1) * envelope_size;
7032
7033            // Zero reserved fields.
7034            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7035
7036            // Safety:
7037            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7038            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7039            //   envelope_size bytes, there is always sufficient room.
7040            fidl::encoding::encode_in_envelope_optional::<i64, D>(
7041                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
7042                encoder,
7043                offset + cur_offset,
7044                depth,
7045            )?;
7046
7047            _prev_end_offset = cur_offset + envelope_size;
7048
7049            Ok(())
7050        }
7051    }
7052
7053    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7054        for BroadcastIsochronousGroupInfoReport
7055    {
7056        #[inline(always)]
7057        fn new_empty() -> Self {
7058            Self::default()
7059        }
7060
7061        unsafe fn decode(
7062            &mut self,
7063            decoder: &mut fidl::encoding::Decoder<'_, D>,
7064            offset: usize,
7065            mut depth: fidl::encoding::Depth,
7066        ) -> fidl::Result<()> {
7067            decoder.debug_check_bounds::<Self>(offset);
7068            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7069                None => return Err(fidl::Error::NotNullable),
7070                Some(len) => len,
7071            };
7072            // Calling decoder.out_of_line_offset(0) is not allowed.
7073            if len == 0 {
7074                return Ok(());
7075            };
7076            depth.increment()?;
7077            let envelope_size = 8;
7078            let bytes_len = len * envelope_size;
7079            let offset = decoder.out_of_line_offset(bytes_len)?;
7080            // Decode the envelope for each type.
7081            let mut _next_ordinal_to_read = 0;
7082            let mut next_offset = offset;
7083            let end_offset = offset + bytes_len;
7084            _next_ordinal_to_read += 1;
7085            if next_offset >= end_offset {
7086                return Ok(());
7087            }
7088
7089            // Decode unknown envelopes for gaps in ordinals.
7090            while _next_ordinal_to_read < 1 {
7091                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7092                _next_ordinal_to_read += 1;
7093                next_offset += envelope_size;
7094            }
7095
7096            let next_out_of_line = decoder.next_out_of_line();
7097            let handles_before = decoder.remaining_handles();
7098            if let Some((inlined, num_bytes, num_handles)) =
7099                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7100            {
7101                let member_inline_size =
7102                    <BroadcastIsochronousGroupInfo as fidl::encoding::TypeMarker>::inline_size(
7103                        decoder.context,
7104                    );
7105                if inlined != (member_inline_size <= 4) {
7106                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7107                }
7108                let inner_offset;
7109                let mut inner_depth = depth.clone();
7110                if inlined {
7111                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7112                    inner_offset = next_offset;
7113                } else {
7114                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7115                    inner_depth.increment()?;
7116                }
7117                let val_ref = self
7118                    .info
7119                    .get_or_insert_with(|| fidl::new_empty!(BroadcastIsochronousGroupInfo, D));
7120                fidl::decode!(
7121                    BroadcastIsochronousGroupInfo,
7122                    D,
7123                    val_ref,
7124                    decoder,
7125                    inner_offset,
7126                    inner_depth
7127                )?;
7128                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7129                {
7130                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7131                }
7132                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7133                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7134                }
7135            }
7136
7137            next_offset += envelope_size;
7138            _next_ordinal_to_read += 1;
7139            if next_offset >= end_offset {
7140                return Ok(());
7141            }
7142
7143            // Decode unknown envelopes for gaps in ordinals.
7144            while _next_ordinal_to_read < 2 {
7145                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7146                _next_ordinal_to_read += 1;
7147                next_offset += envelope_size;
7148            }
7149
7150            let next_out_of_line = decoder.next_out_of_line();
7151            let handles_before = decoder.remaining_handles();
7152            if let Some((inlined, num_bytes, num_handles)) =
7153                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7154            {
7155                let member_inline_size =
7156                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7157                if inlined != (member_inline_size <= 4) {
7158                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7159                }
7160                let inner_offset;
7161                let mut inner_depth = depth.clone();
7162                if inlined {
7163                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7164                    inner_offset = next_offset;
7165                } else {
7166                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7167                    inner_depth.increment()?;
7168                }
7169                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
7170                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
7171                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7172                {
7173                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7174                }
7175                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7176                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7177                }
7178            }
7179
7180            next_offset += envelope_size;
7181
7182            // Decode the remaining unknown envelopes.
7183            while next_offset < end_offset {
7184                _next_ordinal_to_read += 1;
7185                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7186                next_offset += envelope_size;
7187            }
7188
7189            Ok(())
7190        }
7191    }
7192
7193    impl CentralCreateConnectedIsochronousGroupResponse {
7194        #[inline(always)]
7195        fn max_ordinal_present(&self) -> u64 {
7196            if let Some(_) = self.cig_id {
7197                return 1;
7198            }
7199            0
7200        }
7201    }
7202
7203    impl fidl::encoding::ValueTypeMarker for CentralCreateConnectedIsochronousGroupResponse {
7204        type Borrowed<'a> = &'a Self;
7205        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7206            value
7207        }
7208    }
7209
7210    unsafe impl fidl::encoding::TypeMarker for CentralCreateConnectedIsochronousGroupResponse {
7211        type Owned = Self;
7212
7213        #[inline(always)]
7214        fn inline_align(_context: fidl::encoding::Context) -> usize {
7215            8
7216        }
7217
7218        #[inline(always)]
7219        fn inline_size(_context: fidl::encoding::Context) -> usize {
7220            16
7221        }
7222    }
7223
7224    unsafe impl<D: fidl::encoding::ResourceDialect>
7225        fidl::encoding::Encode<CentralCreateConnectedIsochronousGroupResponse, D>
7226        for &CentralCreateConnectedIsochronousGroupResponse
7227    {
7228        unsafe fn encode(
7229            self,
7230            encoder: &mut fidl::encoding::Encoder<'_, D>,
7231            offset: usize,
7232            mut depth: fidl::encoding::Depth,
7233        ) -> fidl::Result<()> {
7234            encoder.debug_check_bounds::<CentralCreateConnectedIsochronousGroupResponse>(offset);
7235            // Vector header
7236            let max_ordinal: u64 = self.max_ordinal_present();
7237            encoder.write_num(max_ordinal, offset);
7238            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7239            // Calling encoder.out_of_line_offset(0) is not allowed.
7240            if max_ordinal == 0 {
7241                return Ok(());
7242            }
7243            depth.increment()?;
7244            let envelope_size = 8;
7245            let bytes_len = max_ordinal as usize * envelope_size;
7246            #[allow(unused_variables)]
7247            let offset = encoder.out_of_line_offset(bytes_len);
7248            let mut _prev_end_offset: usize = 0;
7249            if 1 > max_ordinal {
7250                return Ok(());
7251            }
7252
7253            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7254            // are envelope_size bytes.
7255            let cur_offset: usize = (1 - 1) * envelope_size;
7256
7257            // Zero reserved fields.
7258            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7259
7260            // Safety:
7261            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7262            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7263            //   envelope_size bytes, there is always sufficient room.
7264            fidl::encoding::encode_in_envelope_optional::<u8, D>(
7265                self.cig_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7266                encoder,
7267                offset + cur_offset,
7268                depth,
7269            )?;
7270
7271            _prev_end_offset = cur_offset + envelope_size;
7272
7273            Ok(())
7274        }
7275    }
7276
7277    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7278        for CentralCreateConnectedIsochronousGroupResponse
7279    {
7280        #[inline(always)]
7281        fn new_empty() -> Self {
7282            Self::default()
7283        }
7284
7285        unsafe fn decode(
7286            &mut self,
7287            decoder: &mut fidl::encoding::Decoder<'_, D>,
7288            offset: usize,
7289            mut depth: fidl::encoding::Depth,
7290        ) -> fidl::Result<()> {
7291            decoder.debug_check_bounds::<Self>(offset);
7292            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7293                None => return Err(fidl::Error::NotNullable),
7294                Some(len) => len,
7295            };
7296            // Calling decoder.out_of_line_offset(0) is not allowed.
7297            if len == 0 {
7298                return Ok(());
7299            };
7300            depth.increment()?;
7301            let envelope_size = 8;
7302            let bytes_len = len * envelope_size;
7303            let offset = decoder.out_of_line_offset(bytes_len)?;
7304            // Decode the envelope for each type.
7305            let mut _next_ordinal_to_read = 0;
7306            let mut next_offset = offset;
7307            let end_offset = offset + bytes_len;
7308            _next_ordinal_to_read += 1;
7309            if next_offset >= end_offset {
7310                return Ok(());
7311            }
7312
7313            // Decode unknown envelopes for gaps in ordinals.
7314            while _next_ordinal_to_read < 1 {
7315                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7316                _next_ordinal_to_read += 1;
7317                next_offset += envelope_size;
7318            }
7319
7320            let next_out_of_line = decoder.next_out_of_line();
7321            let handles_before = decoder.remaining_handles();
7322            if let Some((inlined, num_bytes, num_handles)) =
7323                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7324            {
7325                let member_inline_size =
7326                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7327                if inlined != (member_inline_size <= 4) {
7328                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7329                }
7330                let inner_offset;
7331                let mut inner_depth = depth.clone();
7332                if inlined {
7333                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7334                    inner_offset = next_offset;
7335                } else {
7336                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7337                    inner_depth.increment()?;
7338                }
7339                let val_ref = self.cig_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
7340                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7341                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7342                {
7343                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7344                }
7345                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7346                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7347                }
7348            }
7349
7350            next_offset += envelope_size;
7351
7352            // Decode the remaining unknown envelopes.
7353            while next_offset < end_offset {
7354                _next_ordinal_to_read += 1;
7355                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7356                next_offset += envelope_size;
7357            }
7358
7359            Ok(())
7360        }
7361    }
7362
7363    impl ChannelListenerRegistryListenL2capResponse {
7364        #[inline(always)]
7365        fn max_ordinal_present(&self) -> u64 {
7366            if let Some(_) = self.psm {
7367                return 1;
7368            }
7369            0
7370        }
7371    }
7372
7373    impl fidl::encoding::ValueTypeMarker for ChannelListenerRegistryListenL2capResponse {
7374        type Borrowed<'a> = &'a Self;
7375        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7376            value
7377        }
7378    }
7379
7380    unsafe impl fidl::encoding::TypeMarker for ChannelListenerRegistryListenL2capResponse {
7381        type Owned = Self;
7382
7383        #[inline(always)]
7384        fn inline_align(_context: fidl::encoding::Context) -> usize {
7385            8
7386        }
7387
7388        #[inline(always)]
7389        fn inline_size(_context: fidl::encoding::Context) -> usize {
7390            16
7391        }
7392    }
7393
7394    unsafe impl<D: fidl::encoding::ResourceDialect>
7395        fidl::encoding::Encode<ChannelListenerRegistryListenL2capResponse, D>
7396        for &ChannelListenerRegistryListenL2capResponse
7397    {
7398        unsafe fn encode(
7399            self,
7400            encoder: &mut fidl::encoding::Encoder<'_, D>,
7401            offset: usize,
7402            mut depth: fidl::encoding::Depth,
7403        ) -> fidl::Result<()> {
7404            encoder.debug_check_bounds::<ChannelListenerRegistryListenL2capResponse>(offset);
7405            // Vector header
7406            let max_ordinal: u64 = self.max_ordinal_present();
7407            encoder.write_num(max_ordinal, offset);
7408            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7409            // Calling encoder.out_of_line_offset(0) is not allowed.
7410            if max_ordinal == 0 {
7411                return Ok(());
7412            }
7413            depth.increment()?;
7414            let envelope_size = 8;
7415            let bytes_len = max_ordinal as usize * envelope_size;
7416            #[allow(unused_variables)]
7417            let offset = encoder.out_of_line_offset(bytes_len);
7418            let mut _prev_end_offset: usize = 0;
7419            if 1 > max_ordinal {
7420                return Ok(());
7421            }
7422
7423            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7424            // are envelope_size bytes.
7425            let cur_offset: usize = (1 - 1) * envelope_size;
7426
7427            // Zero reserved fields.
7428            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7429
7430            // Safety:
7431            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7432            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7433            //   envelope_size bytes, there is always sufficient room.
7434            fidl::encoding::encode_in_envelope_optional::<u16, D>(
7435                self.psm.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
7436                encoder,
7437                offset + cur_offset,
7438                depth,
7439            )?;
7440
7441            _prev_end_offset = cur_offset + envelope_size;
7442
7443            Ok(())
7444        }
7445    }
7446
7447    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7448        for ChannelListenerRegistryListenL2capResponse
7449    {
7450        #[inline(always)]
7451        fn new_empty() -> Self {
7452            Self::default()
7453        }
7454
7455        unsafe fn decode(
7456            &mut self,
7457            decoder: &mut fidl::encoding::Decoder<'_, D>,
7458            offset: usize,
7459            mut depth: fidl::encoding::Depth,
7460        ) -> fidl::Result<()> {
7461            decoder.debug_check_bounds::<Self>(offset);
7462            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7463                None => return Err(fidl::Error::NotNullable),
7464                Some(len) => len,
7465            };
7466            // Calling decoder.out_of_line_offset(0) is not allowed.
7467            if len == 0 {
7468                return Ok(());
7469            };
7470            depth.increment()?;
7471            let envelope_size = 8;
7472            let bytes_len = len * envelope_size;
7473            let offset = decoder.out_of_line_offset(bytes_len)?;
7474            // Decode the envelope for each type.
7475            let mut _next_ordinal_to_read = 0;
7476            let mut next_offset = offset;
7477            let end_offset = offset + bytes_len;
7478            _next_ordinal_to_read += 1;
7479            if next_offset >= end_offset {
7480                return Ok(());
7481            }
7482
7483            // Decode unknown envelopes for gaps in ordinals.
7484            while _next_ordinal_to_read < 1 {
7485                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7486                _next_ordinal_to_read += 1;
7487                next_offset += envelope_size;
7488            }
7489
7490            let next_out_of_line = decoder.next_out_of_line();
7491            let handles_before = decoder.remaining_handles();
7492            if let Some((inlined, num_bytes, num_handles)) =
7493                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7494            {
7495                let member_inline_size =
7496                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7497                if inlined != (member_inline_size <= 4) {
7498                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7499                }
7500                let inner_offset;
7501                let mut inner_depth = depth.clone();
7502                if inlined {
7503                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7504                    inner_offset = next_offset;
7505                } else {
7506                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7507                    inner_depth.increment()?;
7508                }
7509                let val_ref = self.psm.get_or_insert_with(|| fidl::new_empty!(u16, D));
7510                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7511                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7512                {
7513                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7514                }
7515                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7516                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7517                }
7518            }
7519
7520            next_offset += envelope_size;
7521
7522            // Decode the remaining unknown envelopes.
7523            while next_offset < end_offset {
7524                _next_ordinal_to_read += 1;
7525                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7526                next_offset += envelope_size;
7527            }
7528
7529            Ok(())
7530        }
7531    }
7532
7533    impl ChannelOffloadExtStartOffloadRequest {
7534        #[inline(always)]
7535        fn max_ordinal_present(&self) -> u64 {
7536            0
7537        }
7538    }
7539
7540    impl fidl::encoding::ValueTypeMarker for ChannelOffloadExtStartOffloadRequest {
7541        type Borrowed<'a> = &'a Self;
7542        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7543            value
7544        }
7545    }
7546
7547    unsafe impl fidl::encoding::TypeMarker for ChannelOffloadExtStartOffloadRequest {
7548        type Owned = Self;
7549
7550        #[inline(always)]
7551        fn inline_align(_context: fidl::encoding::Context) -> usize {
7552            8
7553        }
7554
7555        #[inline(always)]
7556        fn inline_size(_context: fidl::encoding::Context) -> usize {
7557            16
7558        }
7559    }
7560
7561    unsafe impl<D: fidl::encoding::ResourceDialect>
7562        fidl::encoding::Encode<ChannelOffloadExtStartOffloadRequest, D>
7563        for &ChannelOffloadExtStartOffloadRequest
7564    {
7565        unsafe fn encode(
7566            self,
7567            encoder: &mut fidl::encoding::Encoder<'_, D>,
7568            offset: usize,
7569            mut depth: fidl::encoding::Depth,
7570        ) -> fidl::Result<()> {
7571            encoder.debug_check_bounds::<ChannelOffloadExtStartOffloadRequest>(offset);
7572            // Vector header
7573            let max_ordinal: u64 = self.max_ordinal_present();
7574            encoder.write_num(max_ordinal, offset);
7575            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7576            // Calling encoder.out_of_line_offset(0) is not allowed.
7577            if max_ordinal == 0 {
7578                return Ok(());
7579            }
7580            depth.increment()?;
7581            let envelope_size = 8;
7582            let bytes_len = max_ordinal as usize * envelope_size;
7583            #[allow(unused_variables)]
7584            let offset = encoder.out_of_line_offset(bytes_len);
7585            let mut _prev_end_offset: usize = 0;
7586
7587            Ok(())
7588        }
7589    }
7590
7591    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7592        for ChannelOffloadExtStartOffloadRequest
7593    {
7594        #[inline(always)]
7595        fn new_empty() -> Self {
7596            Self::default()
7597        }
7598
7599        unsafe fn decode(
7600            &mut self,
7601            decoder: &mut fidl::encoding::Decoder<'_, D>,
7602            offset: usize,
7603            mut depth: fidl::encoding::Depth,
7604        ) -> fidl::Result<()> {
7605            decoder.debug_check_bounds::<Self>(offset);
7606            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7607                None => return Err(fidl::Error::NotNullable),
7608                Some(len) => len,
7609            };
7610            // Calling decoder.out_of_line_offset(0) is not allowed.
7611            if len == 0 {
7612                return Ok(());
7613            };
7614            depth.increment()?;
7615            let envelope_size = 8;
7616            let bytes_len = len * envelope_size;
7617            let offset = decoder.out_of_line_offset(bytes_len)?;
7618            // Decode the envelope for each type.
7619            let mut _next_ordinal_to_read = 0;
7620            let mut next_offset = offset;
7621            let end_offset = offset + bytes_len;
7622
7623            // Decode the remaining unknown envelopes.
7624            while next_offset < end_offset {
7625                _next_ordinal_to_read += 1;
7626                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7627                next_offset += envelope_size;
7628            }
7629
7630            Ok(())
7631        }
7632    }
7633
7634    impl ChannelOffloadExtStartOffloadResponse {
7635        #[inline(always)]
7636        fn max_ordinal_present(&self) -> u64 {
7637            if let Some(_) = self.offload_parameters {
7638                return 1;
7639            }
7640            0
7641        }
7642    }
7643
7644    impl fidl::encoding::ValueTypeMarker for ChannelOffloadExtStartOffloadResponse {
7645        type Borrowed<'a> = &'a Self;
7646        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7647            value
7648        }
7649    }
7650
7651    unsafe impl fidl::encoding::TypeMarker for ChannelOffloadExtStartOffloadResponse {
7652        type Owned = Self;
7653
7654        #[inline(always)]
7655        fn inline_align(_context: fidl::encoding::Context) -> usize {
7656            8
7657        }
7658
7659        #[inline(always)]
7660        fn inline_size(_context: fidl::encoding::Context) -> usize {
7661            16
7662        }
7663    }
7664
7665    unsafe impl<D: fidl::encoding::ResourceDialect>
7666        fidl::encoding::Encode<ChannelOffloadExtStartOffloadResponse, D>
7667        for &ChannelOffloadExtStartOffloadResponse
7668    {
7669        unsafe fn encode(
7670            self,
7671            encoder: &mut fidl::encoding::Encoder<'_, D>,
7672            offset: usize,
7673            mut depth: fidl::encoding::Depth,
7674        ) -> fidl::Result<()> {
7675            encoder.debug_check_bounds::<ChannelOffloadExtStartOffloadResponse>(offset);
7676            // Vector header
7677            let max_ordinal: u64 = self.max_ordinal_present();
7678            encoder.write_num(max_ordinal, offset);
7679            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7680            // Calling encoder.out_of_line_offset(0) is not allowed.
7681            if max_ordinal == 0 {
7682                return Ok(());
7683            }
7684            depth.increment()?;
7685            let envelope_size = 8;
7686            let bytes_len = max_ordinal as usize * envelope_size;
7687            #[allow(unused_variables)]
7688            let offset = encoder.out_of_line_offset(bytes_len);
7689            let mut _prev_end_offset: usize = 0;
7690            if 1 > max_ordinal {
7691                return Ok(());
7692            }
7693
7694            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7695            // are envelope_size bytes.
7696            let cur_offset: usize = (1 - 1) * envelope_size;
7697
7698            // Zero reserved fields.
7699            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7700
7701            // Safety:
7702            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7703            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7704            //   envelope_size bytes, there is always sufficient room.
7705            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::L2capChannelOffloadParameters, D>(
7706            self.offload_parameters.as_ref().map(<fidl_fuchsia_bluetooth__common::L2capChannelOffloadParameters as fidl::encoding::ValueTypeMarker>::borrow),
7707            encoder, offset + cur_offset, depth
7708        )?;
7709
7710            _prev_end_offset = cur_offset + envelope_size;
7711
7712            Ok(())
7713        }
7714    }
7715
7716    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7717        for ChannelOffloadExtStartOffloadResponse
7718    {
7719        #[inline(always)]
7720        fn new_empty() -> Self {
7721            Self::default()
7722        }
7723
7724        unsafe fn decode(
7725            &mut self,
7726            decoder: &mut fidl::encoding::Decoder<'_, D>,
7727            offset: usize,
7728            mut depth: fidl::encoding::Depth,
7729        ) -> fidl::Result<()> {
7730            decoder.debug_check_bounds::<Self>(offset);
7731            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7732                None => return Err(fidl::Error::NotNullable),
7733                Some(len) => len,
7734            };
7735            // Calling decoder.out_of_line_offset(0) is not allowed.
7736            if len == 0 {
7737                return Ok(());
7738            };
7739            depth.increment()?;
7740            let envelope_size = 8;
7741            let bytes_len = len * envelope_size;
7742            let offset = decoder.out_of_line_offset(bytes_len)?;
7743            // Decode the envelope for each type.
7744            let mut _next_ordinal_to_read = 0;
7745            let mut next_offset = offset;
7746            let end_offset = offset + bytes_len;
7747            _next_ordinal_to_read += 1;
7748            if next_offset >= end_offset {
7749                return Ok(());
7750            }
7751
7752            // Decode unknown envelopes for gaps in ordinals.
7753            while _next_ordinal_to_read < 1 {
7754                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7755                _next_ordinal_to_read += 1;
7756                next_offset += envelope_size;
7757            }
7758
7759            let next_out_of_line = decoder.next_out_of_line();
7760            let handles_before = decoder.remaining_handles();
7761            if let Some((inlined, num_bytes, num_handles)) =
7762                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7763            {
7764                let member_inline_size = <fidl_fuchsia_bluetooth__common::L2capChannelOffloadParameters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7765                if inlined != (member_inline_size <= 4) {
7766                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7767                }
7768                let inner_offset;
7769                let mut inner_depth = depth.clone();
7770                if inlined {
7771                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7772                    inner_offset = next_offset;
7773                } else {
7774                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7775                    inner_depth.increment()?;
7776                }
7777                let val_ref = self.offload_parameters.get_or_insert_with(|| {
7778                    fidl::new_empty!(
7779                        fidl_fuchsia_bluetooth__common::L2capChannelOffloadParameters,
7780                        D
7781                    )
7782                });
7783                fidl::decode!(
7784                    fidl_fuchsia_bluetooth__common::L2capChannelOffloadParameters,
7785                    D,
7786                    val_ref,
7787                    decoder,
7788                    inner_offset,
7789                    inner_depth
7790                )?;
7791                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7792                {
7793                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7794                }
7795                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7796                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7797                }
7798            }
7799
7800            next_offset += envelope_size;
7801
7802            // Decode the remaining unknown envelopes.
7803            while next_offset < end_offset {
7804                _next_ordinal_to_read += 1;
7805                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7806                next_offset += envelope_size;
7807            }
7808
7809            Ok(())
7810        }
7811    }
7812
7813    impl CigParameters {
7814        #[inline(always)]
7815        fn max_ordinal_present(&self) -> u64 {
7816            if let Some(_) = self.expected_peers {
7817                return 7;
7818            }
7819            if let Some(_) = self.max_transport_latency_p_to_c {
7820                return 6;
7821            }
7822            if let Some(_) = self.max_transport_latency_c_to_p {
7823                return 5;
7824            }
7825            if let Some(_) = self.framing {
7826                return 4;
7827            }
7828            if let Some(_) = self.packing {
7829                return 3;
7830            }
7831            if let Some(_) = self.sdu_interval_p_to_c {
7832                return 2;
7833            }
7834            if let Some(_) = self.sdu_interval_c_to_p {
7835                return 1;
7836            }
7837            0
7838        }
7839    }
7840
7841    impl fidl::encoding::ValueTypeMarker for CigParameters {
7842        type Borrowed<'a> = &'a Self;
7843        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7844            value
7845        }
7846    }
7847
7848    unsafe impl fidl::encoding::TypeMarker for CigParameters {
7849        type Owned = Self;
7850
7851        #[inline(always)]
7852        fn inline_align(_context: fidl::encoding::Context) -> usize {
7853            8
7854        }
7855
7856        #[inline(always)]
7857        fn inline_size(_context: fidl::encoding::Context) -> usize {
7858            16
7859        }
7860    }
7861
7862    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CigParameters, D>
7863        for &CigParameters
7864    {
7865        unsafe fn encode(
7866            self,
7867            encoder: &mut fidl::encoding::Encoder<'_, D>,
7868            offset: usize,
7869            mut depth: fidl::encoding::Depth,
7870        ) -> fidl::Result<()> {
7871            encoder.debug_check_bounds::<CigParameters>(offset);
7872            // Vector header
7873            let max_ordinal: u64 = self.max_ordinal_present();
7874            encoder.write_num(max_ordinal, offset);
7875            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7876            // Calling encoder.out_of_line_offset(0) is not allowed.
7877            if max_ordinal == 0 {
7878                return Ok(());
7879            }
7880            depth.increment()?;
7881            let envelope_size = 8;
7882            let bytes_len = max_ordinal as usize * envelope_size;
7883            #[allow(unused_variables)]
7884            let offset = encoder.out_of_line_offset(bytes_len);
7885            let mut _prev_end_offset: usize = 0;
7886            if 1 > max_ordinal {
7887                return Ok(());
7888            }
7889
7890            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7891            // are envelope_size bytes.
7892            let cur_offset: usize = (1 - 1) * envelope_size;
7893
7894            // Zero reserved fields.
7895            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7896
7897            // Safety:
7898            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7899            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7900            //   envelope_size bytes, there is always sufficient room.
7901            fidl::encoding::encode_in_envelope_optional::<u32, D>(
7902                self.sdu_interval_c_to_p
7903                    .as_ref()
7904                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7905                encoder,
7906                offset + cur_offset,
7907                depth,
7908            )?;
7909
7910            _prev_end_offset = cur_offset + envelope_size;
7911            if 2 > max_ordinal {
7912                return Ok(());
7913            }
7914
7915            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7916            // are envelope_size bytes.
7917            let cur_offset: usize = (2 - 1) * envelope_size;
7918
7919            // Zero reserved fields.
7920            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7921
7922            // Safety:
7923            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7924            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7925            //   envelope_size bytes, there is always sufficient room.
7926            fidl::encoding::encode_in_envelope_optional::<u32, D>(
7927                self.sdu_interval_p_to_c
7928                    .as_ref()
7929                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7930                encoder,
7931                offset + cur_offset,
7932                depth,
7933            )?;
7934
7935            _prev_end_offset = cur_offset + envelope_size;
7936            if 3 > max_ordinal {
7937                return Ok(());
7938            }
7939
7940            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7941            // are envelope_size bytes.
7942            let cur_offset: usize = (3 - 1) * envelope_size;
7943
7944            // Zero reserved fields.
7945            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7946
7947            // Safety:
7948            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7949            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7950            //   envelope_size bytes, there is always sufficient room.
7951            fidl::encoding::encode_in_envelope_optional::<CigPacking, D>(
7952                self.packing.as_ref().map(<CigPacking as fidl::encoding::ValueTypeMarker>::borrow),
7953                encoder,
7954                offset + cur_offset,
7955                depth,
7956            )?;
7957
7958            _prev_end_offset = cur_offset + envelope_size;
7959            if 4 > max_ordinal {
7960                return Ok(());
7961            }
7962
7963            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7964            // are envelope_size bytes.
7965            let cur_offset: usize = (4 - 1) * envelope_size;
7966
7967            // Zero reserved fields.
7968            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7969
7970            // Safety:
7971            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7972            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7973            //   envelope_size bytes, there is always sufficient room.
7974            fidl::encoding::encode_in_envelope_optional::<CigFramingOptions, D>(
7975                self.framing
7976                    .as_ref()
7977                    .map(<CigFramingOptions as fidl::encoding::ValueTypeMarker>::borrow),
7978                encoder,
7979                offset + cur_offset,
7980                depth,
7981            )?;
7982
7983            _prev_end_offset = cur_offset + envelope_size;
7984            if 5 > max_ordinal {
7985                return Ok(());
7986            }
7987
7988            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7989            // are envelope_size bytes.
7990            let cur_offset: usize = (5 - 1) * envelope_size;
7991
7992            // Zero reserved fields.
7993            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7994
7995            // Safety:
7996            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7997            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7998            //   envelope_size bytes, there is always sufficient room.
7999            fidl::encoding::encode_in_envelope_optional::<u16, D>(
8000                self.max_transport_latency_c_to_p
8001                    .as_ref()
8002                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
8003                encoder,
8004                offset + cur_offset,
8005                depth,
8006            )?;
8007
8008            _prev_end_offset = cur_offset + envelope_size;
8009            if 6 > max_ordinal {
8010                return Ok(());
8011            }
8012
8013            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8014            // are envelope_size bytes.
8015            let cur_offset: usize = (6 - 1) * envelope_size;
8016
8017            // Zero reserved fields.
8018            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8019
8020            // Safety:
8021            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8022            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8023            //   envelope_size bytes, there is always sufficient room.
8024            fidl::encoding::encode_in_envelope_optional::<u16, D>(
8025                self.max_transport_latency_p_to_c
8026                    .as_ref()
8027                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
8028                encoder,
8029                offset + cur_offset,
8030                depth,
8031            )?;
8032
8033            _prev_end_offset = cur_offset + envelope_size;
8034            if 7 > max_ordinal {
8035                return Ok(());
8036            }
8037
8038            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8039            // are envelope_size bytes.
8040            let cur_offset: usize = (7 - 1) * envelope_size;
8041
8042            // Zero reserved fields.
8043            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8044
8045            // Safety:
8046            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8047            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8048            //   envelope_size bytes, there is always sufficient room.
8049            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::PeerId>, D>(
8050            self.expected_peers.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::PeerId> as fidl::encoding::ValueTypeMarker>::borrow),
8051            encoder, offset + cur_offset, depth
8052        )?;
8053
8054            _prev_end_offset = cur_offset + envelope_size;
8055
8056            Ok(())
8057        }
8058    }
8059
8060    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CigParameters {
8061        #[inline(always)]
8062        fn new_empty() -> Self {
8063            Self::default()
8064        }
8065
8066        unsafe fn decode(
8067            &mut self,
8068            decoder: &mut fidl::encoding::Decoder<'_, D>,
8069            offset: usize,
8070            mut depth: fidl::encoding::Depth,
8071        ) -> fidl::Result<()> {
8072            decoder.debug_check_bounds::<Self>(offset);
8073            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8074                None => return Err(fidl::Error::NotNullable),
8075                Some(len) => len,
8076            };
8077            // Calling decoder.out_of_line_offset(0) is not allowed.
8078            if len == 0 {
8079                return Ok(());
8080            };
8081            depth.increment()?;
8082            let envelope_size = 8;
8083            let bytes_len = len * envelope_size;
8084            let offset = decoder.out_of_line_offset(bytes_len)?;
8085            // Decode the envelope for each type.
8086            let mut _next_ordinal_to_read = 0;
8087            let mut next_offset = offset;
8088            let end_offset = offset + bytes_len;
8089            _next_ordinal_to_read += 1;
8090            if next_offset >= end_offset {
8091                return Ok(());
8092            }
8093
8094            // Decode unknown envelopes for gaps in ordinals.
8095            while _next_ordinal_to_read < 1 {
8096                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8097                _next_ordinal_to_read += 1;
8098                next_offset += envelope_size;
8099            }
8100
8101            let next_out_of_line = decoder.next_out_of_line();
8102            let handles_before = decoder.remaining_handles();
8103            if let Some((inlined, num_bytes, num_handles)) =
8104                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8105            {
8106                let member_inline_size =
8107                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8108                if inlined != (member_inline_size <= 4) {
8109                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8110                }
8111                let inner_offset;
8112                let mut inner_depth = depth.clone();
8113                if inlined {
8114                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8115                    inner_offset = next_offset;
8116                } else {
8117                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8118                    inner_depth.increment()?;
8119                }
8120                let val_ref =
8121                    self.sdu_interval_c_to_p.get_or_insert_with(|| fidl::new_empty!(u32, D));
8122                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
8123                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8124                {
8125                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8126                }
8127                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8128                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8129                }
8130            }
8131
8132            next_offset += envelope_size;
8133            _next_ordinal_to_read += 1;
8134            if next_offset >= end_offset {
8135                return Ok(());
8136            }
8137
8138            // Decode unknown envelopes for gaps in ordinals.
8139            while _next_ordinal_to_read < 2 {
8140                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8141                _next_ordinal_to_read += 1;
8142                next_offset += envelope_size;
8143            }
8144
8145            let next_out_of_line = decoder.next_out_of_line();
8146            let handles_before = decoder.remaining_handles();
8147            if let Some((inlined, num_bytes, num_handles)) =
8148                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8149            {
8150                let member_inline_size =
8151                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8152                if inlined != (member_inline_size <= 4) {
8153                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8154                }
8155                let inner_offset;
8156                let mut inner_depth = depth.clone();
8157                if inlined {
8158                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8159                    inner_offset = next_offset;
8160                } else {
8161                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8162                    inner_depth.increment()?;
8163                }
8164                let val_ref =
8165                    self.sdu_interval_p_to_c.get_or_insert_with(|| fidl::new_empty!(u32, D));
8166                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
8167                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8168                {
8169                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8170                }
8171                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8172                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8173                }
8174            }
8175
8176            next_offset += envelope_size;
8177            _next_ordinal_to_read += 1;
8178            if next_offset >= end_offset {
8179                return Ok(());
8180            }
8181
8182            // Decode unknown envelopes for gaps in ordinals.
8183            while _next_ordinal_to_read < 3 {
8184                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8185                _next_ordinal_to_read += 1;
8186                next_offset += envelope_size;
8187            }
8188
8189            let next_out_of_line = decoder.next_out_of_line();
8190            let handles_before = decoder.remaining_handles();
8191            if let Some((inlined, num_bytes, num_handles)) =
8192                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8193            {
8194                let member_inline_size =
8195                    <CigPacking as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8196                if inlined != (member_inline_size <= 4) {
8197                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8198                }
8199                let inner_offset;
8200                let mut inner_depth = depth.clone();
8201                if inlined {
8202                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8203                    inner_offset = next_offset;
8204                } else {
8205                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8206                    inner_depth.increment()?;
8207                }
8208                let val_ref = self.packing.get_or_insert_with(|| fidl::new_empty!(CigPacking, D));
8209                fidl::decode!(CigPacking, D, val_ref, decoder, inner_offset, inner_depth)?;
8210                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8211                {
8212                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8213                }
8214                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8215                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8216                }
8217            }
8218
8219            next_offset += envelope_size;
8220            _next_ordinal_to_read += 1;
8221            if next_offset >= end_offset {
8222                return Ok(());
8223            }
8224
8225            // Decode unknown envelopes for gaps in ordinals.
8226            while _next_ordinal_to_read < 4 {
8227                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8228                _next_ordinal_to_read += 1;
8229                next_offset += envelope_size;
8230            }
8231
8232            let next_out_of_line = decoder.next_out_of_line();
8233            let handles_before = decoder.remaining_handles();
8234            if let Some((inlined, num_bytes, num_handles)) =
8235                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8236            {
8237                let member_inline_size =
8238                    <CigFramingOptions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8239                if inlined != (member_inline_size <= 4) {
8240                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8241                }
8242                let inner_offset;
8243                let mut inner_depth = depth.clone();
8244                if inlined {
8245                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8246                    inner_offset = next_offset;
8247                } else {
8248                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8249                    inner_depth.increment()?;
8250                }
8251                let val_ref =
8252                    self.framing.get_or_insert_with(|| fidl::new_empty!(CigFramingOptions, D));
8253                fidl::decode!(CigFramingOptions, D, val_ref, decoder, inner_offset, inner_depth)?;
8254                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8255                {
8256                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8257                }
8258                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8259                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8260                }
8261            }
8262
8263            next_offset += envelope_size;
8264            _next_ordinal_to_read += 1;
8265            if next_offset >= end_offset {
8266                return Ok(());
8267            }
8268
8269            // Decode unknown envelopes for gaps in ordinals.
8270            while _next_ordinal_to_read < 5 {
8271                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8272                _next_ordinal_to_read += 1;
8273                next_offset += envelope_size;
8274            }
8275
8276            let next_out_of_line = decoder.next_out_of_line();
8277            let handles_before = decoder.remaining_handles();
8278            if let Some((inlined, num_bytes, num_handles)) =
8279                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8280            {
8281                let member_inline_size =
8282                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8283                if inlined != (member_inline_size <= 4) {
8284                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8285                }
8286                let inner_offset;
8287                let mut inner_depth = depth.clone();
8288                if inlined {
8289                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8290                    inner_offset = next_offset;
8291                } else {
8292                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8293                    inner_depth.increment()?;
8294                }
8295                let val_ref = self
8296                    .max_transport_latency_c_to_p
8297                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
8298                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
8299                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8300                {
8301                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8302                }
8303                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8304                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8305                }
8306            }
8307
8308            next_offset += envelope_size;
8309            _next_ordinal_to_read += 1;
8310            if next_offset >= end_offset {
8311                return Ok(());
8312            }
8313
8314            // Decode unknown envelopes for gaps in ordinals.
8315            while _next_ordinal_to_read < 6 {
8316                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8317                _next_ordinal_to_read += 1;
8318                next_offset += envelope_size;
8319            }
8320
8321            let next_out_of_line = decoder.next_out_of_line();
8322            let handles_before = decoder.remaining_handles();
8323            if let Some((inlined, num_bytes, num_handles)) =
8324                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8325            {
8326                let member_inline_size =
8327                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8328                if inlined != (member_inline_size <= 4) {
8329                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8330                }
8331                let inner_offset;
8332                let mut inner_depth = depth.clone();
8333                if inlined {
8334                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8335                    inner_offset = next_offset;
8336                } else {
8337                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8338                    inner_depth.increment()?;
8339                }
8340                let val_ref = self
8341                    .max_transport_latency_p_to_c
8342                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
8343                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
8344                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8345                {
8346                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8347                }
8348                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8349                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8350                }
8351            }
8352
8353            next_offset += envelope_size;
8354            _next_ordinal_to_read += 1;
8355            if next_offset >= end_offset {
8356                return Ok(());
8357            }
8358
8359            // Decode unknown envelopes for gaps in ordinals.
8360            while _next_ordinal_to_read < 7 {
8361                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8362                _next_ordinal_to_read += 1;
8363                next_offset += envelope_size;
8364            }
8365
8366            let next_out_of_line = decoder.next_out_of_line();
8367            let handles_before = decoder.remaining_handles();
8368            if let Some((inlined, num_bytes, num_handles)) =
8369                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8370            {
8371                let member_inline_size = <fidl::encoding::UnboundedVector<
8372                    fidl_fuchsia_bluetooth__common::PeerId,
8373                > as fidl::encoding::TypeMarker>::inline_size(
8374                    decoder.context
8375                );
8376                if inlined != (member_inline_size <= 4) {
8377                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8378                }
8379                let inner_offset;
8380                let mut inner_depth = depth.clone();
8381                if inlined {
8382                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8383                    inner_offset = next_offset;
8384                } else {
8385                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8386                    inner_depth.increment()?;
8387                }
8388                let val_ref = self.expected_peers.get_or_insert_with(|| {
8389                    fidl::new_empty!(
8390                        fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::PeerId>,
8391                        D
8392                    )
8393                });
8394                fidl::decode!(
8395                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::PeerId>,
8396                    D,
8397                    val_ref,
8398                    decoder,
8399                    inner_offset,
8400                    inner_depth
8401                )?;
8402                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8403                {
8404                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8405                }
8406                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8407                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8408                }
8409            }
8410
8411            next_offset += envelope_size;
8412
8413            // Decode the remaining unknown envelopes.
8414            while next_offset < end_offset {
8415                _next_ordinal_to_read += 1;
8416                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8417                next_offset += envelope_size;
8418            }
8419
8420            Ok(())
8421        }
8422    }
8423
8424    impl CisEstablishedParameters {
8425        #[inline(always)]
8426        fn max_ordinal_present(&self) -> u64 {
8427            if let Some(_) = self.peripheral_to_central_params {
8428                return 6;
8429            }
8430            if let Some(_) = self.central_to_peripheral_params {
8431                return 5;
8432            }
8433            if let Some(_) = self.iso_interval {
8434                return 4;
8435            }
8436            if let Some(_) = self.max_subevents {
8437                return 3;
8438            }
8439            if let Some(_) = self.cis_sync_delay {
8440                return 2;
8441            }
8442            if let Some(_) = self.cig_sync_delay {
8443                return 1;
8444            }
8445            0
8446        }
8447    }
8448
8449    impl fidl::encoding::ValueTypeMarker for CisEstablishedParameters {
8450        type Borrowed<'a> = &'a Self;
8451        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8452            value
8453        }
8454    }
8455
8456    unsafe impl fidl::encoding::TypeMarker for CisEstablishedParameters {
8457        type Owned = Self;
8458
8459        #[inline(always)]
8460        fn inline_align(_context: fidl::encoding::Context) -> usize {
8461            8
8462        }
8463
8464        #[inline(always)]
8465        fn inline_size(_context: fidl::encoding::Context) -> usize {
8466            16
8467        }
8468    }
8469
8470    unsafe impl<D: fidl::encoding::ResourceDialect>
8471        fidl::encoding::Encode<CisEstablishedParameters, D> for &CisEstablishedParameters
8472    {
8473        unsafe fn encode(
8474            self,
8475            encoder: &mut fidl::encoding::Encoder<'_, D>,
8476            offset: usize,
8477            mut depth: fidl::encoding::Depth,
8478        ) -> fidl::Result<()> {
8479            encoder.debug_check_bounds::<CisEstablishedParameters>(offset);
8480            // Vector header
8481            let max_ordinal: u64 = self.max_ordinal_present();
8482            encoder.write_num(max_ordinal, offset);
8483            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8484            // Calling encoder.out_of_line_offset(0) is not allowed.
8485            if max_ordinal == 0 {
8486                return Ok(());
8487            }
8488            depth.increment()?;
8489            let envelope_size = 8;
8490            let bytes_len = max_ordinal as usize * envelope_size;
8491            #[allow(unused_variables)]
8492            let offset = encoder.out_of_line_offset(bytes_len);
8493            let mut _prev_end_offset: usize = 0;
8494            if 1 > max_ordinal {
8495                return Ok(());
8496            }
8497
8498            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8499            // are envelope_size bytes.
8500            let cur_offset: usize = (1 - 1) * envelope_size;
8501
8502            // Zero reserved fields.
8503            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8504
8505            // Safety:
8506            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8507            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8508            //   envelope_size bytes, there is always sufficient room.
8509            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8510                self.cig_sync_delay.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8511                encoder,
8512                offset + cur_offset,
8513                depth,
8514            )?;
8515
8516            _prev_end_offset = cur_offset + envelope_size;
8517            if 2 > max_ordinal {
8518                return Ok(());
8519            }
8520
8521            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8522            // are envelope_size bytes.
8523            let cur_offset: usize = (2 - 1) * envelope_size;
8524
8525            // Zero reserved fields.
8526            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8527
8528            // Safety:
8529            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8530            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8531            //   envelope_size bytes, there is always sufficient room.
8532            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8533                self.cis_sync_delay.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8534                encoder,
8535                offset + cur_offset,
8536                depth,
8537            )?;
8538
8539            _prev_end_offset = cur_offset + envelope_size;
8540            if 3 > max_ordinal {
8541                return Ok(());
8542            }
8543
8544            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8545            // are envelope_size bytes.
8546            let cur_offset: usize = (3 - 1) * envelope_size;
8547
8548            // Zero reserved fields.
8549            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8550
8551            // Safety:
8552            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8553            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8554            //   envelope_size bytes, there is always sufficient room.
8555            fidl::encoding::encode_in_envelope_optional::<u8, D>(
8556                self.max_subevents.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
8557                encoder,
8558                offset + cur_offset,
8559                depth,
8560            )?;
8561
8562            _prev_end_offset = cur_offset + envelope_size;
8563            if 4 > max_ordinal {
8564                return Ok(());
8565            }
8566
8567            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8568            // are envelope_size bytes.
8569            let cur_offset: usize = (4 - 1) * envelope_size;
8570
8571            // Zero reserved fields.
8572            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8573
8574            // Safety:
8575            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8576            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8577            //   envelope_size bytes, there is always sufficient room.
8578            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8579                self.iso_interval.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8580                encoder,
8581                offset + cur_offset,
8582                depth,
8583            )?;
8584
8585            _prev_end_offset = cur_offset + envelope_size;
8586            if 5 > max_ordinal {
8587                return Ok(());
8588            }
8589
8590            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8591            // are envelope_size bytes.
8592            let cur_offset: usize = (5 - 1) * envelope_size;
8593
8594            // Zero reserved fields.
8595            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8596
8597            // Safety:
8598            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8599            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8600            //   envelope_size bytes, there is always sufficient room.
8601            fidl::encoding::encode_in_envelope_optional::<CisUnidirectionalParams, D>(
8602                self.central_to_peripheral_params
8603                    .as_ref()
8604                    .map(<CisUnidirectionalParams as fidl::encoding::ValueTypeMarker>::borrow),
8605                encoder,
8606                offset + cur_offset,
8607                depth,
8608            )?;
8609
8610            _prev_end_offset = cur_offset + envelope_size;
8611            if 6 > max_ordinal {
8612                return Ok(());
8613            }
8614
8615            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8616            // are envelope_size bytes.
8617            let cur_offset: usize = (6 - 1) * envelope_size;
8618
8619            // Zero reserved fields.
8620            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8621
8622            // Safety:
8623            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8624            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8625            //   envelope_size bytes, there is always sufficient room.
8626            fidl::encoding::encode_in_envelope_optional::<CisUnidirectionalParams, D>(
8627                self.peripheral_to_central_params
8628                    .as_ref()
8629                    .map(<CisUnidirectionalParams as fidl::encoding::ValueTypeMarker>::borrow),
8630                encoder,
8631                offset + cur_offset,
8632                depth,
8633            )?;
8634
8635            _prev_end_offset = cur_offset + envelope_size;
8636
8637            Ok(())
8638        }
8639    }
8640
8641    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8642        for CisEstablishedParameters
8643    {
8644        #[inline(always)]
8645        fn new_empty() -> Self {
8646            Self::default()
8647        }
8648
8649        unsafe fn decode(
8650            &mut self,
8651            decoder: &mut fidl::encoding::Decoder<'_, D>,
8652            offset: usize,
8653            mut depth: fidl::encoding::Depth,
8654        ) -> fidl::Result<()> {
8655            decoder.debug_check_bounds::<Self>(offset);
8656            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8657                None => return Err(fidl::Error::NotNullable),
8658                Some(len) => len,
8659            };
8660            // Calling decoder.out_of_line_offset(0) is not allowed.
8661            if len == 0 {
8662                return Ok(());
8663            };
8664            depth.increment()?;
8665            let envelope_size = 8;
8666            let bytes_len = len * envelope_size;
8667            let offset = decoder.out_of_line_offset(bytes_len)?;
8668            // Decode the envelope for each type.
8669            let mut _next_ordinal_to_read = 0;
8670            let mut next_offset = offset;
8671            let end_offset = offset + bytes_len;
8672            _next_ordinal_to_read += 1;
8673            if next_offset >= end_offset {
8674                return Ok(());
8675            }
8676
8677            // Decode unknown envelopes for gaps in ordinals.
8678            while _next_ordinal_to_read < 1 {
8679                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8680                _next_ordinal_to_read += 1;
8681                next_offset += envelope_size;
8682            }
8683
8684            let next_out_of_line = decoder.next_out_of_line();
8685            let handles_before = decoder.remaining_handles();
8686            if let Some((inlined, num_bytes, num_handles)) =
8687                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8688            {
8689                let member_inline_size =
8690                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8691                if inlined != (member_inline_size <= 4) {
8692                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8693                }
8694                let inner_offset;
8695                let mut inner_depth = depth.clone();
8696                if inlined {
8697                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8698                    inner_offset = next_offset;
8699                } else {
8700                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8701                    inner_depth.increment()?;
8702                }
8703                let val_ref = self.cig_sync_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
8704                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8705                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8706                {
8707                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8708                }
8709                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8710                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8711                }
8712            }
8713
8714            next_offset += envelope_size;
8715            _next_ordinal_to_read += 1;
8716            if next_offset >= end_offset {
8717                return Ok(());
8718            }
8719
8720            // Decode unknown envelopes for gaps in ordinals.
8721            while _next_ordinal_to_read < 2 {
8722                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8723                _next_ordinal_to_read += 1;
8724                next_offset += envelope_size;
8725            }
8726
8727            let next_out_of_line = decoder.next_out_of_line();
8728            let handles_before = decoder.remaining_handles();
8729            if let Some((inlined, num_bytes, num_handles)) =
8730                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8731            {
8732                let member_inline_size =
8733                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8734                if inlined != (member_inline_size <= 4) {
8735                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8736                }
8737                let inner_offset;
8738                let mut inner_depth = depth.clone();
8739                if inlined {
8740                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8741                    inner_offset = next_offset;
8742                } else {
8743                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8744                    inner_depth.increment()?;
8745                }
8746                let val_ref = self.cis_sync_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
8747                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8748                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8749                {
8750                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8751                }
8752                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8753                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8754                }
8755            }
8756
8757            next_offset += envelope_size;
8758            _next_ordinal_to_read += 1;
8759            if next_offset >= end_offset {
8760                return Ok(());
8761            }
8762
8763            // Decode unknown envelopes for gaps in ordinals.
8764            while _next_ordinal_to_read < 3 {
8765                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8766                _next_ordinal_to_read += 1;
8767                next_offset += envelope_size;
8768            }
8769
8770            let next_out_of_line = decoder.next_out_of_line();
8771            let handles_before = decoder.remaining_handles();
8772            if let Some((inlined, num_bytes, num_handles)) =
8773                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8774            {
8775                let member_inline_size =
8776                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8777                if inlined != (member_inline_size <= 4) {
8778                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8779                }
8780                let inner_offset;
8781                let mut inner_depth = depth.clone();
8782                if inlined {
8783                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8784                    inner_offset = next_offset;
8785                } else {
8786                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8787                    inner_depth.increment()?;
8788                }
8789                let val_ref = self.max_subevents.get_or_insert_with(|| fidl::new_empty!(u8, D));
8790                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
8791                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8792                {
8793                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8794                }
8795                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8796                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8797                }
8798            }
8799
8800            next_offset += envelope_size;
8801            _next_ordinal_to_read += 1;
8802            if next_offset >= end_offset {
8803                return Ok(());
8804            }
8805
8806            // Decode unknown envelopes for gaps in ordinals.
8807            while _next_ordinal_to_read < 4 {
8808                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8809                _next_ordinal_to_read += 1;
8810                next_offset += envelope_size;
8811            }
8812
8813            let next_out_of_line = decoder.next_out_of_line();
8814            let handles_before = decoder.remaining_handles();
8815            if let Some((inlined, num_bytes, num_handles)) =
8816                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8817            {
8818                let member_inline_size =
8819                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8820                if inlined != (member_inline_size <= 4) {
8821                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8822                }
8823                let inner_offset;
8824                let mut inner_depth = depth.clone();
8825                if inlined {
8826                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8827                    inner_offset = next_offset;
8828                } else {
8829                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8830                    inner_depth.increment()?;
8831                }
8832                let val_ref = self.iso_interval.get_or_insert_with(|| fidl::new_empty!(i64, D));
8833                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8834                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8835                {
8836                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8837                }
8838                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8839                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8840                }
8841            }
8842
8843            next_offset += envelope_size;
8844            _next_ordinal_to_read += 1;
8845            if next_offset >= end_offset {
8846                return Ok(());
8847            }
8848
8849            // Decode unknown envelopes for gaps in ordinals.
8850            while _next_ordinal_to_read < 5 {
8851                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8852                _next_ordinal_to_read += 1;
8853                next_offset += envelope_size;
8854            }
8855
8856            let next_out_of_line = decoder.next_out_of_line();
8857            let handles_before = decoder.remaining_handles();
8858            if let Some((inlined, num_bytes, num_handles)) =
8859                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8860            {
8861                let member_inline_size =
8862                    <CisUnidirectionalParams as fidl::encoding::TypeMarker>::inline_size(
8863                        decoder.context,
8864                    );
8865                if inlined != (member_inline_size <= 4) {
8866                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8867                }
8868                let inner_offset;
8869                let mut inner_depth = depth.clone();
8870                if inlined {
8871                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8872                    inner_offset = next_offset;
8873                } else {
8874                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8875                    inner_depth.increment()?;
8876                }
8877                let val_ref = self
8878                    .central_to_peripheral_params
8879                    .get_or_insert_with(|| fidl::new_empty!(CisUnidirectionalParams, D));
8880                fidl::decode!(
8881                    CisUnidirectionalParams,
8882                    D,
8883                    val_ref,
8884                    decoder,
8885                    inner_offset,
8886                    inner_depth
8887                )?;
8888                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8889                {
8890                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8891                }
8892                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8893                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8894                }
8895            }
8896
8897            next_offset += envelope_size;
8898            _next_ordinal_to_read += 1;
8899            if next_offset >= end_offset {
8900                return Ok(());
8901            }
8902
8903            // Decode unknown envelopes for gaps in ordinals.
8904            while _next_ordinal_to_read < 6 {
8905                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8906                _next_ordinal_to_read += 1;
8907                next_offset += envelope_size;
8908            }
8909
8910            let next_out_of_line = decoder.next_out_of_line();
8911            let handles_before = decoder.remaining_handles();
8912            if let Some((inlined, num_bytes, num_handles)) =
8913                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8914            {
8915                let member_inline_size =
8916                    <CisUnidirectionalParams as fidl::encoding::TypeMarker>::inline_size(
8917                        decoder.context,
8918                    );
8919                if inlined != (member_inline_size <= 4) {
8920                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8921                }
8922                let inner_offset;
8923                let mut inner_depth = depth.clone();
8924                if inlined {
8925                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8926                    inner_offset = next_offset;
8927                } else {
8928                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8929                    inner_depth.increment()?;
8930                }
8931                let val_ref = self
8932                    .peripheral_to_central_params
8933                    .get_or_insert_with(|| fidl::new_empty!(CisUnidirectionalParams, D));
8934                fidl::decode!(
8935                    CisUnidirectionalParams,
8936                    D,
8937                    val_ref,
8938                    decoder,
8939                    inner_offset,
8940                    inner_depth
8941                )?;
8942                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8943                {
8944                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8945                }
8946                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8947                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8948                }
8949            }
8950
8951            next_offset += envelope_size;
8952
8953            // Decode the remaining unknown envelopes.
8954            while next_offset < end_offset {
8955                _next_ordinal_to_read += 1;
8956                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8957                next_offset += envelope_size;
8958            }
8959
8960            Ok(())
8961        }
8962    }
8963
8964    impl CisParameters {
8965        #[inline(always)]
8966        fn max_ordinal_present(&self) -> u64 {
8967            if let Some(_) = self.id {
8968                return 2;
8969            }
8970            if let Some(_) = self.cis_id {
8971                return 1;
8972            }
8973            0
8974        }
8975    }
8976
8977    impl fidl::encoding::ValueTypeMarker for CisParameters {
8978        type Borrowed<'a> = &'a Self;
8979        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8980            value
8981        }
8982    }
8983
8984    unsafe impl fidl::encoding::TypeMarker for CisParameters {
8985        type Owned = Self;
8986
8987        #[inline(always)]
8988        fn inline_align(_context: fidl::encoding::Context) -> usize {
8989            8
8990        }
8991
8992        #[inline(always)]
8993        fn inline_size(_context: fidl::encoding::Context) -> usize {
8994            16
8995        }
8996    }
8997
8998    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CisParameters, D>
8999        for &CisParameters
9000    {
9001        unsafe fn encode(
9002            self,
9003            encoder: &mut fidl::encoding::Encoder<'_, D>,
9004            offset: usize,
9005            mut depth: fidl::encoding::Depth,
9006        ) -> fidl::Result<()> {
9007            encoder.debug_check_bounds::<CisParameters>(offset);
9008            // Vector header
9009            let max_ordinal: u64 = self.max_ordinal_present();
9010            encoder.write_num(max_ordinal, offset);
9011            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9012            // Calling encoder.out_of_line_offset(0) is not allowed.
9013            if max_ordinal == 0 {
9014                return Ok(());
9015            }
9016            depth.increment()?;
9017            let envelope_size = 8;
9018            let bytes_len = max_ordinal as usize * envelope_size;
9019            #[allow(unused_variables)]
9020            let offset = encoder.out_of_line_offset(bytes_len);
9021            let mut _prev_end_offset: usize = 0;
9022            if 1 > max_ordinal {
9023                return Ok(());
9024            }
9025
9026            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9027            // are envelope_size bytes.
9028            let cur_offset: usize = (1 - 1) * envelope_size;
9029
9030            // Zero reserved fields.
9031            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9032
9033            // Safety:
9034            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9035            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9036            //   envelope_size bytes, there is always sufficient room.
9037            fidl::encoding::encode_in_envelope_optional::<u8, D>(
9038                self.cis_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
9039                encoder,
9040                offset + cur_offset,
9041                depth,
9042            )?;
9043
9044            _prev_end_offset = cur_offset + envelope_size;
9045            if 2 > max_ordinal {
9046                return Ok(());
9047            }
9048
9049            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9050            // are envelope_size bytes.
9051            let cur_offset: usize = (2 - 1) * envelope_size;
9052
9053            // Zero reserved fields.
9054            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9055
9056            // Safety:
9057            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9058            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9059            //   envelope_size bytes, there is always sufficient room.
9060            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::PeerId, D>(
9061            self.id.as_ref().map(<fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
9062            encoder, offset + cur_offset, depth
9063        )?;
9064
9065            _prev_end_offset = cur_offset + envelope_size;
9066
9067            Ok(())
9068        }
9069    }
9070
9071    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CisParameters {
9072        #[inline(always)]
9073        fn new_empty() -> Self {
9074            Self::default()
9075        }
9076
9077        unsafe fn decode(
9078            &mut self,
9079            decoder: &mut fidl::encoding::Decoder<'_, D>,
9080            offset: usize,
9081            mut depth: fidl::encoding::Depth,
9082        ) -> fidl::Result<()> {
9083            decoder.debug_check_bounds::<Self>(offset);
9084            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9085                None => return Err(fidl::Error::NotNullable),
9086                Some(len) => len,
9087            };
9088            // Calling decoder.out_of_line_offset(0) is not allowed.
9089            if len == 0 {
9090                return Ok(());
9091            };
9092            depth.increment()?;
9093            let envelope_size = 8;
9094            let bytes_len = len * envelope_size;
9095            let offset = decoder.out_of_line_offset(bytes_len)?;
9096            // Decode the envelope for each type.
9097            let mut _next_ordinal_to_read = 0;
9098            let mut next_offset = offset;
9099            let end_offset = offset + bytes_len;
9100            _next_ordinal_to_read += 1;
9101            if next_offset >= end_offset {
9102                return Ok(());
9103            }
9104
9105            // Decode unknown envelopes for gaps in ordinals.
9106            while _next_ordinal_to_read < 1 {
9107                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9108                _next_ordinal_to_read += 1;
9109                next_offset += envelope_size;
9110            }
9111
9112            let next_out_of_line = decoder.next_out_of_line();
9113            let handles_before = decoder.remaining_handles();
9114            if let Some((inlined, num_bytes, num_handles)) =
9115                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9116            {
9117                let member_inline_size =
9118                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9119                if inlined != (member_inline_size <= 4) {
9120                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9121                }
9122                let inner_offset;
9123                let mut inner_depth = depth.clone();
9124                if inlined {
9125                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9126                    inner_offset = next_offset;
9127                } else {
9128                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9129                    inner_depth.increment()?;
9130                }
9131                let val_ref = self.cis_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
9132                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9133                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9134                {
9135                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9136                }
9137                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9138                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9139                }
9140            }
9141
9142            next_offset += envelope_size;
9143            _next_ordinal_to_read += 1;
9144            if next_offset >= end_offset {
9145                return Ok(());
9146            }
9147
9148            // Decode unknown envelopes for gaps in ordinals.
9149            while _next_ordinal_to_read < 2 {
9150                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9151                _next_ordinal_to_read += 1;
9152                next_offset += envelope_size;
9153            }
9154
9155            let next_out_of_line = decoder.next_out_of_line();
9156            let handles_before = decoder.remaining_handles();
9157            if let Some((inlined, num_bytes, num_handles)) =
9158                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9159            {
9160                let member_inline_size = <fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9161                if inlined != (member_inline_size <= 4) {
9162                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9163                }
9164                let inner_offset;
9165                let mut inner_depth = depth.clone();
9166                if inlined {
9167                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9168                    inner_offset = next_offset;
9169                } else {
9170                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9171                    inner_depth.increment()?;
9172                }
9173                let val_ref = self.id.get_or_insert_with(|| {
9174                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::PeerId, D)
9175                });
9176                fidl::decode!(
9177                    fidl_fuchsia_bluetooth__common::PeerId,
9178                    D,
9179                    val_ref,
9180                    decoder,
9181                    inner_offset,
9182                    inner_depth
9183                )?;
9184                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9185                {
9186                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9187                }
9188                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9189                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9190                }
9191            }
9192
9193            next_offset += envelope_size;
9194
9195            // Decode the remaining unknown envelopes.
9196            while next_offset < end_offset {
9197                _next_ordinal_to_read += 1;
9198                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9199                next_offset += envelope_size;
9200            }
9201
9202            Ok(())
9203        }
9204    }
9205
9206    impl CisUnidirectionalParams {
9207        #[inline(always)]
9208        fn max_ordinal_present(&self) -> u64 {
9209            if let Some(_) = self.flush_timeout {
9210                return 3;
9211            }
9212            if let Some(_) = self.burst_number {
9213                return 2;
9214            }
9215            if let Some(_) = self.transport_latency {
9216                return 1;
9217            }
9218            0
9219        }
9220    }
9221
9222    impl fidl::encoding::ValueTypeMarker for CisUnidirectionalParams {
9223        type Borrowed<'a> = &'a Self;
9224        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9225            value
9226        }
9227    }
9228
9229    unsafe impl fidl::encoding::TypeMarker for CisUnidirectionalParams {
9230        type Owned = Self;
9231
9232        #[inline(always)]
9233        fn inline_align(_context: fidl::encoding::Context) -> usize {
9234            8
9235        }
9236
9237        #[inline(always)]
9238        fn inline_size(_context: fidl::encoding::Context) -> usize {
9239            16
9240        }
9241    }
9242
9243    unsafe impl<D: fidl::encoding::ResourceDialect>
9244        fidl::encoding::Encode<CisUnidirectionalParams, D> for &CisUnidirectionalParams
9245    {
9246        unsafe fn encode(
9247            self,
9248            encoder: &mut fidl::encoding::Encoder<'_, D>,
9249            offset: usize,
9250            mut depth: fidl::encoding::Depth,
9251        ) -> fidl::Result<()> {
9252            encoder.debug_check_bounds::<CisUnidirectionalParams>(offset);
9253            // Vector header
9254            let max_ordinal: u64 = self.max_ordinal_present();
9255            encoder.write_num(max_ordinal, offset);
9256            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9257            // Calling encoder.out_of_line_offset(0) is not allowed.
9258            if max_ordinal == 0 {
9259                return Ok(());
9260            }
9261            depth.increment()?;
9262            let envelope_size = 8;
9263            let bytes_len = max_ordinal as usize * envelope_size;
9264            #[allow(unused_variables)]
9265            let offset = encoder.out_of_line_offset(bytes_len);
9266            let mut _prev_end_offset: usize = 0;
9267            if 1 > max_ordinal {
9268                return Ok(());
9269            }
9270
9271            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9272            // are envelope_size bytes.
9273            let cur_offset: usize = (1 - 1) * envelope_size;
9274
9275            // Zero reserved fields.
9276            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9277
9278            // Safety:
9279            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9280            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9281            //   envelope_size bytes, there is always sufficient room.
9282            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9283                self.transport_latency
9284                    .as_ref()
9285                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9286                encoder,
9287                offset + cur_offset,
9288                depth,
9289            )?;
9290
9291            _prev_end_offset = cur_offset + envelope_size;
9292            if 2 > max_ordinal {
9293                return Ok(());
9294            }
9295
9296            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9297            // are envelope_size bytes.
9298            let cur_offset: usize = (2 - 1) * envelope_size;
9299
9300            // Zero reserved fields.
9301            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9302
9303            // Safety:
9304            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9305            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9306            //   envelope_size bytes, there is always sufficient room.
9307            fidl::encoding::encode_in_envelope_optional::<u8, D>(
9308                self.burst_number.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
9309                encoder,
9310                offset + cur_offset,
9311                depth,
9312            )?;
9313
9314            _prev_end_offset = cur_offset + envelope_size;
9315            if 3 > max_ordinal {
9316                return Ok(());
9317            }
9318
9319            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9320            // are envelope_size bytes.
9321            let cur_offset: usize = (3 - 1) * envelope_size;
9322
9323            // Zero reserved fields.
9324            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9325
9326            // Safety:
9327            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9328            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9329            //   envelope_size bytes, there is always sufficient room.
9330            fidl::encoding::encode_in_envelope_optional::<u8, D>(
9331                self.flush_timeout.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
9332                encoder,
9333                offset + cur_offset,
9334                depth,
9335            )?;
9336
9337            _prev_end_offset = cur_offset + envelope_size;
9338
9339            Ok(())
9340        }
9341    }
9342
9343    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9344        for CisUnidirectionalParams
9345    {
9346        #[inline(always)]
9347        fn new_empty() -> Self {
9348            Self::default()
9349        }
9350
9351        unsafe fn decode(
9352            &mut self,
9353            decoder: &mut fidl::encoding::Decoder<'_, D>,
9354            offset: usize,
9355            mut depth: fidl::encoding::Depth,
9356        ) -> fidl::Result<()> {
9357            decoder.debug_check_bounds::<Self>(offset);
9358            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9359                None => return Err(fidl::Error::NotNullable),
9360                Some(len) => len,
9361            };
9362            // Calling decoder.out_of_line_offset(0) is not allowed.
9363            if len == 0 {
9364                return Ok(());
9365            };
9366            depth.increment()?;
9367            let envelope_size = 8;
9368            let bytes_len = len * envelope_size;
9369            let offset = decoder.out_of_line_offset(bytes_len)?;
9370            // Decode the envelope for each type.
9371            let mut _next_ordinal_to_read = 0;
9372            let mut next_offset = offset;
9373            let end_offset = offset + bytes_len;
9374            _next_ordinal_to_read += 1;
9375            if next_offset >= end_offset {
9376                return Ok(());
9377            }
9378
9379            // Decode unknown envelopes for gaps in ordinals.
9380            while _next_ordinal_to_read < 1 {
9381                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9382                _next_ordinal_to_read += 1;
9383                next_offset += envelope_size;
9384            }
9385
9386            let next_out_of_line = decoder.next_out_of_line();
9387            let handles_before = decoder.remaining_handles();
9388            if let Some((inlined, num_bytes, num_handles)) =
9389                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9390            {
9391                let member_inline_size =
9392                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9393                if inlined != (member_inline_size <= 4) {
9394                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9395                }
9396                let inner_offset;
9397                let mut inner_depth = depth.clone();
9398                if inlined {
9399                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9400                    inner_offset = next_offset;
9401                } else {
9402                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9403                    inner_depth.increment()?;
9404                }
9405                let val_ref =
9406                    self.transport_latency.get_or_insert_with(|| fidl::new_empty!(i64, D));
9407                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9408                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9409                {
9410                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9411                }
9412                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9413                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9414                }
9415            }
9416
9417            next_offset += envelope_size;
9418            _next_ordinal_to_read += 1;
9419            if next_offset >= end_offset {
9420                return Ok(());
9421            }
9422
9423            // Decode unknown envelopes for gaps in ordinals.
9424            while _next_ordinal_to_read < 2 {
9425                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9426                _next_ordinal_to_read += 1;
9427                next_offset += envelope_size;
9428            }
9429
9430            let next_out_of_line = decoder.next_out_of_line();
9431            let handles_before = decoder.remaining_handles();
9432            if let Some((inlined, num_bytes, num_handles)) =
9433                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9434            {
9435                let member_inline_size =
9436                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9437                if inlined != (member_inline_size <= 4) {
9438                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9439                }
9440                let inner_offset;
9441                let mut inner_depth = depth.clone();
9442                if inlined {
9443                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9444                    inner_offset = next_offset;
9445                } else {
9446                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9447                    inner_depth.increment()?;
9448                }
9449                let val_ref = self.burst_number.get_or_insert_with(|| fidl::new_empty!(u8, D));
9450                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9451                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9452                {
9453                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9454                }
9455                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9456                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9457                }
9458            }
9459
9460            next_offset += envelope_size;
9461            _next_ordinal_to_read += 1;
9462            if next_offset >= end_offset {
9463                return Ok(());
9464            }
9465
9466            // Decode unknown envelopes for gaps in ordinals.
9467            while _next_ordinal_to_read < 3 {
9468                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9469                _next_ordinal_to_read += 1;
9470                next_offset += envelope_size;
9471            }
9472
9473            let next_out_of_line = decoder.next_out_of_line();
9474            let handles_before = decoder.remaining_handles();
9475            if let Some((inlined, num_bytes, num_handles)) =
9476                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9477            {
9478                let member_inline_size =
9479                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9480                if inlined != (member_inline_size <= 4) {
9481                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9482                }
9483                let inner_offset;
9484                let mut inner_depth = depth.clone();
9485                if inlined {
9486                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9487                    inner_offset = next_offset;
9488                } else {
9489                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9490                    inner_depth.increment()?;
9491                }
9492                let val_ref = self.flush_timeout.get_or_insert_with(|| fidl::new_empty!(u8, D));
9493                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9494                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9495                {
9496                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9497                }
9498                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9499                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9500                }
9501            }
9502
9503            next_offset += envelope_size;
9504
9505            // Decode the remaining unknown envelopes.
9506            while next_offset < end_offset {
9507                _next_ordinal_to_read += 1;
9508                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9509                next_offset += envelope_size;
9510            }
9511
9512            Ok(())
9513        }
9514    }
9515
9516    impl CodecDelayGetCodecLocalDelayRangeRequest {
9517        #[inline(always)]
9518        fn max_ordinal_present(&self) -> u64 {
9519            if let Some(_) = self.codec_attributes {
9520                return 3;
9521            }
9522            if let Some(_) = self.data_direction {
9523                return 2;
9524            }
9525            if let Some(_) = self.logical_transport_type {
9526                return 1;
9527            }
9528            0
9529        }
9530    }
9531
9532    impl fidl::encoding::ValueTypeMarker for CodecDelayGetCodecLocalDelayRangeRequest {
9533        type Borrowed<'a> = &'a Self;
9534        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9535            value
9536        }
9537    }
9538
9539    unsafe impl fidl::encoding::TypeMarker for CodecDelayGetCodecLocalDelayRangeRequest {
9540        type Owned = Self;
9541
9542        #[inline(always)]
9543        fn inline_align(_context: fidl::encoding::Context) -> usize {
9544            8
9545        }
9546
9547        #[inline(always)]
9548        fn inline_size(_context: fidl::encoding::Context) -> usize {
9549            16
9550        }
9551    }
9552
9553    unsafe impl<D: fidl::encoding::ResourceDialect>
9554        fidl::encoding::Encode<CodecDelayGetCodecLocalDelayRangeRequest, D>
9555        for &CodecDelayGetCodecLocalDelayRangeRequest
9556    {
9557        unsafe fn encode(
9558            self,
9559            encoder: &mut fidl::encoding::Encoder<'_, D>,
9560            offset: usize,
9561            mut depth: fidl::encoding::Depth,
9562        ) -> fidl::Result<()> {
9563            encoder.debug_check_bounds::<CodecDelayGetCodecLocalDelayRangeRequest>(offset);
9564            // Vector header
9565            let max_ordinal: u64 = self.max_ordinal_present();
9566            encoder.write_num(max_ordinal, offset);
9567            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9568            // Calling encoder.out_of_line_offset(0) is not allowed.
9569            if max_ordinal == 0 {
9570                return Ok(());
9571            }
9572            depth.increment()?;
9573            let envelope_size = 8;
9574            let bytes_len = max_ordinal as usize * envelope_size;
9575            #[allow(unused_variables)]
9576            let offset = encoder.out_of_line_offset(bytes_len);
9577            let mut _prev_end_offset: usize = 0;
9578            if 1 > max_ordinal {
9579                return Ok(());
9580            }
9581
9582            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9583            // are envelope_size bytes.
9584            let cur_offset: usize = (1 - 1) * envelope_size;
9585
9586            // Zero reserved fields.
9587            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9588
9589            // Safety:
9590            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9591            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9592            //   envelope_size bytes, there is always sufficient room.
9593            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::LogicalTransportType, D>(
9594            self.logical_transport_type.as_ref().map(<fidl_fuchsia_bluetooth__common::LogicalTransportType as fidl::encoding::ValueTypeMarker>::borrow),
9595            encoder, offset + cur_offset, depth
9596        )?;
9597
9598            _prev_end_offset = cur_offset + envelope_size;
9599            if 2 > max_ordinal {
9600                return Ok(());
9601            }
9602
9603            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9604            // are envelope_size bytes.
9605            let cur_offset: usize = (2 - 1) * envelope_size;
9606
9607            // Zero reserved fields.
9608            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9609
9610            // Safety:
9611            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9612            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9613            //   envelope_size bytes, there is always sufficient room.
9614            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::DataDirection, D>(
9615            self.data_direction.as_ref().map(<fidl_fuchsia_bluetooth__common::DataDirection as fidl::encoding::ValueTypeMarker>::borrow),
9616            encoder, offset + cur_offset, depth
9617        )?;
9618
9619            _prev_end_offset = cur_offset + envelope_size;
9620            if 3 > max_ordinal {
9621                return Ok(());
9622            }
9623
9624            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9625            // are envelope_size bytes.
9626            let cur_offset: usize = (3 - 1) * envelope_size;
9627
9628            // Zero reserved fields.
9629            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9630
9631            // Safety:
9632            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9633            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9634            //   envelope_size bytes, there is always sufficient room.
9635            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::CodecAttributes, D>(
9636            self.codec_attributes.as_ref().map(<fidl_fuchsia_bluetooth__common::CodecAttributes as fidl::encoding::ValueTypeMarker>::borrow),
9637            encoder, offset + cur_offset, depth
9638        )?;
9639
9640            _prev_end_offset = cur_offset + envelope_size;
9641
9642            Ok(())
9643        }
9644    }
9645
9646    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9647        for CodecDelayGetCodecLocalDelayRangeRequest
9648    {
9649        #[inline(always)]
9650        fn new_empty() -> Self {
9651            Self::default()
9652        }
9653
9654        unsafe fn decode(
9655            &mut self,
9656            decoder: &mut fidl::encoding::Decoder<'_, D>,
9657            offset: usize,
9658            mut depth: fidl::encoding::Depth,
9659        ) -> fidl::Result<()> {
9660            decoder.debug_check_bounds::<Self>(offset);
9661            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9662                None => return Err(fidl::Error::NotNullable),
9663                Some(len) => len,
9664            };
9665            // Calling decoder.out_of_line_offset(0) is not allowed.
9666            if len == 0 {
9667                return Ok(());
9668            };
9669            depth.increment()?;
9670            let envelope_size = 8;
9671            let bytes_len = len * envelope_size;
9672            let offset = decoder.out_of_line_offset(bytes_len)?;
9673            // Decode the envelope for each type.
9674            let mut _next_ordinal_to_read = 0;
9675            let mut next_offset = offset;
9676            let end_offset = offset + bytes_len;
9677            _next_ordinal_to_read += 1;
9678            if next_offset >= end_offset {
9679                return Ok(());
9680            }
9681
9682            // Decode unknown envelopes for gaps in ordinals.
9683            while _next_ordinal_to_read < 1 {
9684                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9685                _next_ordinal_to_read += 1;
9686                next_offset += envelope_size;
9687            }
9688
9689            let next_out_of_line = decoder.next_out_of_line();
9690            let handles_before = decoder.remaining_handles();
9691            if let Some((inlined, num_bytes, num_handles)) =
9692                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9693            {
9694                let member_inline_size = <fidl_fuchsia_bluetooth__common::LogicalTransportType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9695                if inlined != (member_inline_size <= 4) {
9696                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9697                }
9698                let inner_offset;
9699                let mut inner_depth = depth.clone();
9700                if inlined {
9701                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9702                    inner_offset = next_offset;
9703                } else {
9704                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9705                    inner_depth.increment()?;
9706                }
9707                let val_ref = self.logical_transport_type.get_or_insert_with(|| {
9708                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::LogicalTransportType, D)
9709                });
9710                fidl::decode!(
9711                    fidl_fuchsia_bluetooth__common::LogicalTransportType,
9712                    D,
9713                    val_ref,
9714                    decoder,
9715                    inner_offset,
9716                    inner_depth
9717                )?;
9718                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9719                {
9720                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9721                }
9722                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9723                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9724                }
9725            }
9726
9727            next_offset += envelope_size;
9728            _next_ordinal_to_read += 1;
9729            if next_offset >= end_offset {
9730                return Ok(());
9731            }
9732
9733            // Decode unknown envelopes for gaps in ordinals.
9734            while _next_ordinal_to_read < 2 {
9735                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9736                _next_ordinal_to_read += 1;
9737                next_offset += envelope_size;
9738            }
9739
9740            let next_out_of_line = decoder.next_out_of_line();
9741            let handles_before = decoder.remaining_handles();
9742            if let Some((inlined, num_bytes, num_handles)) =
9743                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9744            {
9745                let member_inline_size = <fidl_fuchsia_bluetooth__common::DataDirection as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9746                if inlined != (member_inline_size <= 4) {
9747                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9748                }
9749                let inner_offset;
9750                let mut inner_depth = depth.clone();
9751                if inlined {
9752                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9753                    inner_offset = next_offset;
9754                } else {
9755                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9756                    inner_depth.increment()?;
9757                }
9758                let val_ref = self.data_direction.get_or_insert_with(|| {
9759                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::DataDirection, D)
9760                });
9761                fidl::decode!(
9762                    fidl_fuchsia_bluetooth__common::DataDirection,
9763                    D,
9764                    val_ref,
9765                    decoder,
9766                    inner_offset,
9767                    inner_depth
9768                )?;
9769                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9770                {
9771                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9772                }
9773                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9774                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9775                }
9776            }
9777
9778            next_offset += envelope_size;
9779            _next_ordinal_to_read += 1;
9780            if next_offset >= end_offset {
9781                return Ok(());
9782            }
9783
9784            // Decode unknown envelopes for gaps in ordinals.
9785            while _next_ordinal_to_read < 3 {
9786                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9787                _next_ordinal_to_read += 1;
9788                next_offset += envelope_size;
9789            }
9790
9791            let next_out_of_line = decoder.next_out_of_line();
9792            let handles_before = decoder.remaining_handles();
9793            if let Some((inlined, num_bytes, num_handles)) =
9794                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9795            {
9796                let member_inline_size = <fidl_fuchsia_bluetooth__common::CodecAttributes as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9797                if inlined != (member_inline_size <= 4) {
9798                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9799                }
9800                let inner_offset;
9801                let mut inner_depth = depth.clone();
9802                if inlined {
9803                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9804                    inner_offset = next_offset;
9805                } else {
9806                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9807                    inner_depth.increment()?;
9808                }
9809                let val_ref = self.codec_attributes.get_or_insert_with(|| {
9810                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::CodecAttributes, D)
9811                });
9812                fidl::decode!(
9813                    fidl_fuchsia_bluetooth__common::CodecAttributes,
9814                    D,
9815                    val_ref,
9816                    decoder,
9817                    inner_offset,
9818                    inner_depth
9819                )?;
9820                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9821                {
9822                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9823                }
9824                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9825                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9826                }
9827            }
9828
9829            next_offset += envelope_size;
9830
9831            // Decode the remaining unknown envelopes.
9832            while next_offset < end_offset {
9833                _next_ordinal_to_read += 1;
9834                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9835                next_offset += envelope_size;
9836            }
9837
9838            Ok(())
9839        }
9840    }
9841
9842    impl CodecDelayGetCodecLocalDelayRangeResponse {
9843        #[inline(always)]
9844        fn max_ordinal_present(&self) -> u64 {
9845            if let Some(_) = self.max_controller_delay {
9846                return 2;
9847            }
9848            if let Some(_) = self.min_controller_delay {
9849                return 1;
9850            }
9851            0
9852        }
9853    }
9854
9855    impl fidl::encoding::ValueTypeMarker for CodecDelayGetCodecLocalDelayRangeResponse {
9856        type Borrowed<'a> = &'a Self;
9857        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9858            value
9859        }
9860    }
9861
9862    unsafe impl fidl::encoding::TypeMarker for CodecDelayGetCodecLocalDelayRangeResponse {
9863        type Owned = Self;
9864
9865        #[inline(always)]
9866        fn inline_align(_context: fidl::encoding::Context) -> usize {
9867            8
9868        }
9869
9870        #[inline(always)]
9871        fn inline_size(_context: fidl::encoding::Context) -> usize {
9872            16
9873        }
9874    }
9875
9876    unsafe impl<D: fidl::encoding::ResourceDialect>
9877        fidl::encoding::Encode<CodecDelayGetCodecLocalDelayRangeResponse, D>
9878        for &CodecDelayGetCodecLocalDelayRangeResponse
9879    {
9880        unsafe fn encode(
9881            self,
9882            encoder: &mut fidl::encoding::Encoder<'_, D>,
9883            offset: usize,
9884            mut depth: fidl::encoding::Depth,
9885        ) -> fidl::Result<()> {
9886            encoder.debug_check_bounds::<CodecDelayGetCodecLocalDelayRangeResponse>(offset);
9887            // Vector header
9888            let max_ordinal: u64 = self.max_ordinal_present();
9889            encoder.write_num(max_ordinal, offset);
9890            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9891            // Calling encoder.out_of_line_offset(0) is not allowed.
9892            if max_ordinal == 0 {
9893                return Ok(());
9894            }
9895            depth.increment()?;
9896            let envelope_size = 8;
9897            let bytes_len = max_ordinal as usize * envelope_size;
9898            #[allow(unused_variables)]
9899            let offset = encoder.out_of_line_offset(bytes_len);
9900            let mut _prev_end_offset: usize = 0;
9901            if 1 > max_ordinal {
9902                return Ok(());
9903            }
9904
9905            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9906            // are envelope_size bytes.
9907            let cur_offset: usize = (1 - 1) * envelope_size;
9908
9909            // Zero reserved fields.
9910            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9911
9912            // Safety:
9913            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9914            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9915            //   envelope_size bytes, there is always sufficient room.
9916            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9917                self.min_controller_delay
9918                    .as_ref()
9919                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9920                encoder,
9921                offset + cur_offset,
9922                depth,
9923            )?;
9924
9925            _prev_end_offset = cur_offset + envelope_size;
9926            if 2 > max_ordinal {
9927                return Ok(());
9928            }
9929
9930            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9931            // are envelope_size bytes.
9932            let cur_offset: usize = (2 - 1) * envelope_size;
9933
9934            // Zero reserved fields.
9935            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9936
9937            // Safety:
9938            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9939            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9940            //   envelope_size bytes, there is always sufficient room.
9941            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9942                self.max_controller_delay
9943                    .as_ref()
9944                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9945                encoder,
9946                offset + cur_offset,
9947                depth,
9948            )?;
9949
9950            _prev_end_offset = cur_offset + envelope_size;
9951
9952            Ok(())
9953        }
9954    }
9955
9956    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9957        for CodecDelayGetCodecLocalDelayRangeResponse
9958    {
9959        #[inline(always)]
9960        fn new_empty() -> Self {
9961            Self::default()
9962        }
9963
9964        unsafe fn decode(
9965            &mut self,
9966            decoder: &mut fidl::encoding::Decoder<'_, D>,
9967            offset: usize,
9968            mut depth: fidl::encoding::Depth,
9969        ) -> fidl::Result<()> {
9970            decoder.debug_check_bounds::<Self>(offset);
9971            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9972                None => return Err(fidl::Error::NotNullable),
9973                Some(len) => len,
9974            };
9975            // Calling decoder.out_of_line_offset(0) is not allowed.
9976            if len == 0 {
9977                return Ok(());
9978            };
9979            depth.increment()?;
9980            let envelope_size = 8;
9981            let bytes_len = len * envelope_size;
9982            let offset = decoder.out_of_line_offset(bytes_len)?;
9983            // Decode the envelope for each type.
9984            let mut _next_ordinal_to_read = 0;
9985            let mut next_offset = offset;
9986            let end_offset = offset + bytes_len;
9987            _next_ordinal_to_read += 1;
9988            if next_offset >= end_offset {
9989                return Ok(());
9990            }
9991
9992            // Decode unknown envelopes for gaps in ordinals.
9993            while _next_ordinal_to_read < 1 {
9994                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9995                _next_ordinal_to_read += 1;
9996                next_offset += envelope_size;
9997            }
9998
9999            let next_out_of_line = decoder.next_out_of_line();
10000            let handles_before = decoder.remaining_handles();
10001            if let Some((inlined, num_bytes, num_handles)) =
10002                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10003            {
10004                let member_inline_size =
10005                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10006                if inlined != (member_inline_size <= 4) {
10007                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10008                }
10009                let inner_offset;
10010                let mut inner_depth = depth.clone();
10011                if inlined {
10012                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10013                    inner_offset = next_offset;
10014                } else {
10015                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10016                    inner_depth.increment()?;
10017                }
10018                let val_ref =
10019                    self.min_controller_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
10020                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
10021                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10022                {
10023                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10024                }
10025                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10026                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10027                }
10028            }
10029
10030            next_offset += envelope_size;
10031            _next_ordinal_to_read += 1;
10032            if next_offset >= end_offset {
10033                return Ok(());
10034            }
10035
10036            // Decode unknown envelopes for gaps in ordinals.
10037            while _next_ordinal_to_read < 2 {
10038                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10039                _next_ordinal_to_read += 1;
10040                next_offset += envelope_size;
10041            }
10042
10043            let next_out_of_line = decoder.next_out_of_line();
10044            let handles_before = decoder.remaining_handles();
10045            if let Some((inlined, num_bytes, num_handles)) =
10046                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10047            {
10048                let member_inline_size =
10049                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10050                if inlined != (member_inline_size <= 4) {
10051                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10052                }
10053                let inner_offset;
10054                let mut inner_depth = depth.clone();
10055                if inlined {
10056                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10057                    inner_offset = next_offset;
10058                } else {
10059                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10060                    inner_depth.increment()?;
10061                }
10062                let val_ref =
10063                    self.max_controller_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
10064                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
10065                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10066                {
10067                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10068                }
10069                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10070                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10071                }
10072            }
10073
10074            next_offset += envelope_size;
10075
10076            // Decode the remaining unknown envelopes.
10077            while next_offset < end_offset {
10078                _next_ordinal_to_read += 1;
10079                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10080                next_offset += envelope_size;
10081            }
10082
10083            Ok(())
10084        }
10085    }
10086
10087    impl ConnectedIsochronousGroupEstablishStreamsRequest {
10088        #[inline(always)]
10089        fn max_ordinal_present(&self) -> u64 {
10090            if let Some(_) = self.cis_params {
10091                return 1;
10092            }
10093            0
10094        }
10095    }
10096
10097    impl fidl::encoding::ValueTypeMarker for ConnectedIsochronousGroupEstablishStreamsRequest {
10098        type Borrowed<'a> = &'a Self;
10099        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10100            value
10101        }
10102    }
10103
10104    unsafe impl fidl::encoding::TypeMarker for ConnectedIsochronousGroupEstablishStreamsRequest {
10105        type Owned = Self;
10106
10107        #[inline(always)]
10108        fn inline_align(_context: fidl::encoding::Context) -> usize {
10109            8
10110        }
10111
10112        #[inline(always)]
10113        fn inline_size(_context: fidl::encoding::Context) -> usize {
10114            16
10115        }
10116    }
10117
10118    unsafe impl<D: fidl::encoding::ResourceDialect>
10119        fidl::encoding::Encode<ConnectedIsochronousGroupEstablishStreamsRequest, D>
10120        for &ConnectedIsochronousGroupEstablishStreamsRequest
10121    {
10122        unsafe fn encode(
10123            self,
10124            encoder: &mut fidl::encoding::Encoder<'_, D>,
10125            offset: usize,
10126            mut depth: fidl::encoding::Depth,
10127        ) -> fidl::Result<()> {
10128            encoder.debug_check_bounds::<ConnectedIsochronousGroupEstablishStreamsRequest>(offset);
10129            // Vector header
10130            let max_ordinal: u64 = self.max_ordinal_present();
10131            encoder.write_num(max_ordinal, offset);
10132            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10133            // Calling encoder.out_of_line_offset(0) is not allowed.
10134            if max_ordinal == 0 {
10135                return Ok(());
10136            }
10137            depth.increment()?;
10138            let envelope_size = 8;
10139            let bytes_len = max_ordinal as usize * envelope_size;
10140            #[allow(unused_variables)]
10141            let offset = encoder.out_of_line_offset(bytes_len);
10142            let mut _prev_end_offset: usize = 0;
10143            if 1 > max_ordinal {
10144                return Ok(());
10145            }
10146
10147            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10148            // are envelope_size bytes.
10149            let cur_offset: usize = (1 - 1) * envelope_size;
10150
10151            // Zero reserved fields.
10152            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10153
10154            // Safety:
10155            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10156            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10157            //   envelope_size bytes, there is always sufficient room.
10158            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<CisParameters, 31>, D>(
10159            self.cis_params.as_ref().map(<fidl::encoding::Vector<CisParameters, 31> as fidl::encoding::ValueTypeMarker>::borrow),
10160            encoder, offset + cur_offset, depth
10161        )?;
10162
10163            _prev_end_offset = cur_offset + envelope_size;
10164
10165            Ok(())
10166        }
10167    }
10168
10169    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10170        for ConnectedIsochronousGroupEstablishStreamsRequest
10171    {
10172        #[inline(always)]
10173        fn new_empty() -> Self {
10174            Self::default()
10175        }
10176
10177        unsafe fn decode(
10178            &mut self,
10179            decoder: &mut fidl::encoding::Decoder<'_, D>,
10180            offset: usize,
10181            mut depth: fidl::encoding::Depth,
10182        ) -> fidl::Result<()> {
10183            decoder.debug_check_bounds::<Self>(offset);
10184            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10185                None => return Err(fidl::Error::NotNullable),
10186                Some(len) => len,
10187            };
10188            // Calling decoder.out_of_line_offset(0) is not allowed.
10189            if len == 0 {
10190                return Ok(());
10191            };
10192            depth.increment()?;
10193            let envelope_size = 8;
10194            let bytes_len = len * envelope_size;
10195            let offset = decoder.out_of_line_offset(bytes_len)?;
10196            // Decode the envelope for each type.
10197            let mut _next_ordinal_to_read = 0;
10198            let mut next_offset = offset;
10199            let end_offset = offset + bytes_len;
10200            _next_ordinal_to_read += 1;
10201            if next_offset >= end_offset {
10202                return Ok(());
10203            }
10204
10205            // Decode unknown envelopes for gaps in ordinals.
10206            while _next_ordinal_to_read < 1 {
10207                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10208                _next_ordinal_to_read += 1;
10209                next_offset += envelope_size;
10210            }
10211
10212            let next_out_of_line = decoder.next_out_of_line();
10213            let handles_before = decoder.remaining_handles();
10214            if let Some((inlined, num_bytes, num_handles)) =
10215                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10216            {
10217                let member_inline_size = <fidl::encoding::Vector<CisParameters, 31> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10218                if inlined != (member_inline_size <= 4) {
10219                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10220                }
10221                let inner_offset;
10222                let mut inner_depth = depth.clone();
10223                if inlined {
10224                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10225                    inner_offset = next_offset;
10226                } else {
10227                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10228                    inner_depth.increment()?;
10229                }
10230                let val_ref = self.cis_params.get_or_insert_with(
10231                    || fidl::new_empty!(fidl::encoding::Vector<CisParameters, 31>, D),
10232                );
10233                fidl::decode!(fidl::encoding::Vector<CisParameters, 31>, D, val_ref, decoder, inner_offset, inner_depth)?;
10234                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10235                {
10236                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10237                }
10238                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10239                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10240                }
10241            }
10242
10243            next_offset += envelope_size;
10244
10245            // Decode the remaining unknown envelopes.
10246            while next_offset < end_offset {
10247                _next_ordinal_to_read += 1;
10248                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10249                next_offset += envelope_size;
10250            }
10251
10252            Ok(())
10253        }
10254    }
10255
10256    impl ConnectionOptions {
10257        #[inline(always)]
10258        fn max_ordinal_present(&self) -> u64 {
10259            if let Some(_) = self.service_filter {
10260                return 2;
10261            }
10262            if let Some(_) = self.bondable_mode {
10263                return 1;
10264            }
10265            0
10266        }
10267    }
10268
10269    impl fidl::encoding::ValueTypeMarker for ConnectionOptions {
10270        type Borrowed<'a> = &'a Self;
10271        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10272            value
10273        }
10274    }
10275
10276    unsafe impl fidl::encoding::TypeMarker for ConnectionOptions {
10277        type Owned = Self;
10278
10279        #[inline(always)]
10280        fn inline_align(_context: fidl::encoding::Context) -> usize {
10281            8
10282        }
10283
10284        #[inline(always)]
10285        fn inline_size(_context: fidl::encoding::Context) -> usize {
10286            16
10287        }
10288    }
10289
10290    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectionOptions, D>
10291        for &ConnectionOptions
10292    {
10293        unsafe fn encode(
10294            self,
10295            encoder: &mut fidl::encoding::Encoder<'_, D>,
10296            offset: usize,
10297            mut depth: fidl::encoding::Depth,
10298        ) -> fidl::Result<()> {
10299            encoder.debug_check_bounds::<ConnectionOptions>(offset);
10300            // Vector header
10301            let max_ordinal: u64 = self.max_ordinal_present();
10302            encoder.write_num(max_ordinal, offset);
10303            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10304            // Calling encoder.out_of_line_offset(0) is not allowed.
10305            if max_ordinal == 0 {
10306                return Ok(());
10307            }
10308            depth.increment()?;
10309            let envelope_size = 8;
10310            let bytes_len = max_ordinal as usize * envelope_size;
10311            #[allow(unused_variables)]
10312            let offset = encoder.out_of_line_offset(bytes_len);
10313            let mut _prev_end_offset: usize = 0;
10314            if 1 > max_ordinal {
10315                return Ok(());
10316            }
10317
10318            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10319            // are envelope_size bytes.
10320            let cur_offset: usize = (1 - 1) * envelope_size;
10321
10322            // Zero reserved fields.
10323            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10324
10325            // Safety:
10326            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10327            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10328            //   envelope_size bytes, there is always sufficient room.
10329            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10330                self.bondable_mode.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10331                encoder,
10332                offset + cur_offset,
10333                depth,
10334            )?;
10335
10336            _prev_end_offset = cur_offset + envelope_size;
10337            if 2 > max_ordinal {
10338                return Ok(());
10339            }
10340
10341            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10342            // are envelope_size bytes.
10343            let cur_offset: usize = (2 - 1) * envelope_size;
10344
10345            // Zero reserved fields.
10346            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10347
10348            // Safety:
10349            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10350            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10351            //   envelope_size bytes, there is always sufficient room.
10352            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Uuid, D>(
10353            self.service_filter.as_ref().map(<fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
10354            encoder, offset + cur_offset, depth
10355        )?;
10356
10357            _prev_end_offset = cur_offset + envelope_size;
10358
10359            Ok(())
10360        }
10361    }
10362
10363    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectionOptions {
10364        #[inline(always)]
10365        fn new_empty() -> Self {
10366            Self::default()
10367        }
10368
10369        unsafe fn decode(
10370            &mut self,
10371            decoder: &mut fidl::encoding::Decoder<'_, D>,
10372            offset: usize,
10373            mut depth: fidl::encoding::Depth,
10374        ) -> fidl::Result<()> {
10375            decoder.debug_check_bounds::<Self>(offset);
10376            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10377                None => return Err(fidl::Error::NotNullable),
10378                Some(len) => len,
10379            };
10380            // Calling decoder.out_of_line_offset(0) is not allowed.
10381            if len == 0 {
10382                return Ok(());
10383            };
10384            depth.increment()?;
10385            let envelope_size = 8;
10386            let bytes_len = len * envelope_size;
10387            let offset = decoder.out_of_line_offset(bytes_len)?;
10388            // Decode the envelope for each type.
10389            let mut _next_ordinal_to_read = 0;
10390            let mut next_offset = offset;
10391            let end_offset = offset + bytes_len;
10392            _next_ordinal_to_read += 1;
10393            if next_offset >= end_offset {
10394                return Ok(());
10395            }
10396
10397            // Decode unknown envelopes for gaps in ordinals.
10398            while _next_ordinal_to_read < 1 {
10399                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10400                _next_ordinal_to_read += 1;
10401                next_offset += envelope_size;
10402            }
10403
10404            let next_out_of_line = decoder.next_out_of_line();
10405            let handles_before = decoder.remaining_handles();
10406            if let Some((inlined, num_bytes, num_handles)) =
10407                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10408            {
10409                let member_inline_size =
10410                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10411                if inlined != (member_inline_size <= 4) {
10412                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10413                }
10414                let inner_offset;
10415                let mut inner_depth = depth.clone();
10416                if inlined {
10417                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10418                    inner_offset = next_offset;
10419                } else {
10420                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10421                    inner_depth.increment()?;
10422                }
10423                let val_ref = self.bondable_mode.get_or_insert_with(|| fidl::new_empty!(bool, D));
10424                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10425                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10426                {
10427                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10428                }
10429                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10430                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10431                }
10432            }
10433
10434            next_offset += envelope_size;
10435            _next_ordinal_to_read += 1;
10436            if next_offset >= end_offset {
10437                return Ok(());
10438            }
10439
10440            // Decode unknown envelopes for gaps in ordinals.
10441            while _next_ordinal_to_read < 2 {
10442                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10443                _next_ordinal_to_read += 1;
10444                next_offset += envelope_size;
10445            }
10446
10447            let next_out_of_line = decoder.next_out_of_line();
10448            let handles_before = decoder.remaining_handles();
10449            if let Some((inlined, num_bytes, num_handles)) =
10450                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10451            {
10452                let member_inline_size = <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10453                if inlined != (member_inline_size <= 4) {
10454                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10455                }
10456                let inner_offset;
10457                let mut inner_depth = depth.clone();
10458                if inlined {
10459                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10460                    inner_offset = next_offset;
10461                } else {
10462                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10463                    inner_depth.increment()?;
10464                }
10465                let val_ref = self.service_filter.get_or_insert_with(|| {
10466                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D)
10467                });
10468                fidl::decode!(
10469                    fidl_fuchsia_bluetooth__common::Uuid,
10470                    D,
10471                    val_ref,
10472                    decoder,
10473                    inner_offset,
10474                    inner_depth
10475                )?;
10476                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10477                {
10478                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10479                }
10480                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10481                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10482                }
10483            }
10484
10485            next_offset += envelope_size;
10486
10487            // Decode the remaining unknown envelopes.
10488            while next_offset < end_offset {
10489                _next_ordinal_to_read += 1;
10490                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10491                next_offset += envelope_size;
10492            }
10493
10494            Ok(())
10495        }
10496    }
10497
10498    impl ConnectionTransferPeriodicAdvertisingSyncRequest {
10499        #[inline(always)]
10500        fn max_ordinal_present(&self) -> u64 {
10501            if let Some(_) = self.service_data {
10502                return 2;
10503            }
10504            if let Some(_) = self.sync_id {
10505                return 1;
10506            }
10507            0
10508        }
10509    }
10510
10511    impl fidl::encoding::ValueTypeMarker for ConnectionTransferPeriodicAdvertisingSyncRequest {
10512        type Borrowed<'a> = &'a Self;
10513        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10514            value
10515        }
10516    }
10517
10518    unsafe impl fidl::encoding::TypeMarker for ConnectionTransferPeriodicAdvertisingSyncRequest {
10519        type Owned = Self;
10520
10521        #[inline(always)]
10522        fn inline_align(_context: fidl::encoding::Context) -> usize {
10523            8
10524        }
10525
10526        #[inline(always)]
10527        fn inline_size(_context: fidl::encoding::Context) -> usize {
10528            16
10529        }
10530    }
10531
10532    unsafe impl<D: fidl::encoding::ResourceDialect>
10533        fidl::encoding::Encode<ConnectionTransferPeriodicAdvertisingSyncRequest, D>
10534        for &ConnectionTransferPeriodicAdvertisingSyncRequest
10535    {
10536        unsafe fn encode(
10537            self,
10538            encoder: &mut fidl::encoding::Encoder<'_, D>,
10539            offset: usize,
10540            mut depth: fidl::encoding::Depth,
10541        ) -> fidl::Result<()> {
10542            encoder.debug_check_bounds::<ConnectionTransferPeriodicAdvertisingSyncRequest>(offset);
10543            // Vector header
10544            let max_ordinal: u64 = self.max_ordinal_present();
10545            encoder.write_num(max_ordinal, offset);
10546            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10547            // Calling encoder.out_of_line_offset(0) is not allowed.
10548            if max_ordinal == 0 {
10549                return Ok(());
10550            }
10551            depth.increment()?;
10552            let envelope_size = 8;
10553            let bytes_len = max_ordinal as usize * envelope_size;
10554            #[allow(unused_variables)]
10555            let offset = encoder.out_of_line_offset(bytes_len);
10556            let mut _prev_end_offset: usize = 0;
10557            if 1 > max_ordinal {
10558                return Ok(());
10559            }
10560
10561            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10562            // are envelope_size bytes.
10563            let cur_offset: usize = (1 - 1) * envelope_size;
10564
10565            // Zero reserved fields.
10566            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10567
10568            // Safety:
10569            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10570            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10571            //   envelope_size bytes, there is always sufficient room.
10572            fidl::encoding::encode_in_envelope_optional::<PeriodicAdvertisingSyncId, D>(
10573                self.sync_id
10574                    .as_ref()
10575                    .map(<PeriodicAdvertisingSyncId as fidl::encoding::ValueTypeMarker>::borrow),
10576                encoder,
10577                offset + cur_offset,
10578                depth,
10579            )?;
10580
10581            _prev_end_offset = cur_offset + envelope_size;
10582            if 2 > max_ordinal {
10583                return Ok(());
10584            }
10585
10586            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10587            // are envelope_size bytes.
10588            let cur_offset: usize = (2 - 1) * envelope_size;
10589
10590            // Zero reserved fields.
10591            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10592
10593            // Safety:
10594            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10595            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10596            //   envelope_size bytes, there is always sufficient room.
10597            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10598                self.service_data.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10599                encoder,
10600                offset + cur_offset,
10601                depth,
10602            )?;
10603
10604            _prev_end_offset = cur_offset + envelope_size;
10605
10606            Ok(())
10607        }
10608    }
10609
10610    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10611        for ConnectionTransferPeriodicAdvertisingSyncRequest
10612    {
10613        #[inline(always)]
10614        fn new_empty() -> Self {
10615            Self::default()
10616        }
10617
10618        unsafe fn decode(
10619            &mut self,
10620            decoder: &mut fidl::encoding::Decoder<'_, D>,
10621            offset: usize,
10622            mut depth: fidl::encoding::Depth,
10623        ) -> fidl::Result<()> {
10624            decoder.debug_check_bounds::<Self>(offset);
10625            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10626                None => return Err(fidl::Error::NotNullable),
10627                Some(len) => len,
10628            };
10629            // Calling decoder.out_of_line_offset(0) is not allowed.
10630            if len == 0 {
10631                return Ok(());
10632            };
10633            depth.increment()?;
10634            let envelope_size = 8;
10635            let bytes_len = len * envelope_size;
10636            let offset = decoder.out_of_line_offset(bytes_len)?;
10637            // Decode the envelope for each type.
10638            let mut _next_ordinal_to_read = 0;
10639            let mut next_offset = offset;
10640            let end_offset = offset + bytes_len;
10641            _next_ordinal_to_read += 1;
10642            if next_offset >= end_offset {
10643                return Ok(());
10644            }
10645
10646            // Decode unknown envelopes for gaps in ordinals.
10647            while _next_ordinal_to_read < 1 {
10648                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10649                _next_ordinal_to_read += 1;
10650                next_offset += envelope_size;
10651            }
10652
10653            let next_out_of_line = decoder.next_out_of_line();
10654            let handles_before = decoder.remaining_handles();
10655            if let Some((inlined, num_bytes, num_handles)) =
10656                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10657            {
10658                let member_inline_size =
10659                    <PeriodicAdvertisingSyncId as fidl::encoding::TypeMarker>::inline_size(
10660                        decoder.context,
10661                    );
10662                if inlined != (member_inline_size <= 4) {
10663                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10664                }
10665                let inner_offset;
10666                let mut inner_depth = depth.clone();
10667                if inlined {
10668                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10669                    inner_offset = next_offset;
10670                } else {
10671                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10672                    inner_depth.increment()?;
10673                }
10674                let val_ref = self
10675                    .sync_id
10676                    .get_or_insert_with(|| fidl::new_empty!(PeriodicAdvertisingSyncId, D));
10677                fidl::decode!(
10678                    PeriodicAdvertisingSyncId,
10679                    D,
10680                    val_ref,
10681                    decoder,
10682                    inner_offset,
10683                    inner_depth
10684                )?;
10685                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10686                {
10687                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10688                }
10689                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10690                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10691                }
10692            }
10693
10694            next_offset += envelope_size;
10695            _next_ordinal_to_read += 1;
10696            if next_offset >= end_offset {
10697                return Ok(());
10698            }
10699
10700            // Decode unknown envelopes for gaps in ordinals.
10701            while _next_ordinal_to_read < 2 {
10702                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10703                _next_ordinal_to_read += 1;
10704                next_offset += envelope_size;
10705            }
10706
10707            let next_out_of_line = decoder.next_out_of_line();
10708            let handles_before = decoder.remaining_handles();
10709            if let Some((inlined, num_bytes, num_handles)) =
10710                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10711            {
10712                let member_inline_size =
10713                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10714                if inlined != (member_inline_size <= 4) {
10715                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10716                }
10717                let inner_offset;
10718                let mut inner_depth = depth.clone();
10719                if inlined {
10720                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10721                    inner_offset = next_offset;
10722                } else {
10723                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10724                    inner_depth.increment()?;
10725                }
10726                let val_ref = self.service_data.get_or_insert_with(|| fidl::new_empty!(u16, D));
10727                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10728                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10729                {
10730                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10731                }
10732                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10733                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10734                }
10735            }
10736
10737            next_offset += envelope_size;
10738
10739            // Decode the remaining unknown envelopes.
10740            while next_offset < end_offset {
10741                _next_ordinal_to_read += 1;
10742                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10743                next_offset += envelope_size;
10744            }
10745
10746            Ok(())
10747        }
10748    }
10749
10750    impl Extended {
10751        #[inline(always)]
10752        fn max_ordinal_present(&self) -> u64 {
10753            0
10754        }
10755    }
10756
10757    impl fidl::encoding::ValueTypeMarker for Extended {
10758        type Borrowed<'a> = &'a Self;
10759        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10760            value
10761        }
10762    }
10763
10764    unsafe impl fidl::encoding::TypeMarker for Extended {
10765        type Owned = Self;
10766
10767        #[inline(always)]
10768        fn inline_align(_context: fidl::encoding::Context) -> usize {
10769            8
10770        }
10771
10772        #[inline(always)]
10773        fn inline_size(_context: fidl::encoding::Context) -> usize {
10774            16
10775        }
10776    }
10777
10778    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Extended, D> for &Extended {
10779        unsafe fn encode(
10780            self,
10781            encoder: &mut fidl::encoding::Encoder<'_, D>,
10782            offset: usize,
10783            mut depth: fidl::encoding::Depth,
10784        ) -> fidl::Result<()> {
10785            encoder.debug_check_bounds::<Extended>(offset);
10786            // Vector header
10787            let max_ordinal: u64 = self.max_ordinal_present();
10788            encoder.write_num(max_ordinal, offset);
10789            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10790            // Calling encoder.out_of_line_offset(0) is not allowed.
10791            if max_ordinal == 0 {
10792                return Ok(());
10793            }
10794            depth.increment()?;
10795            let envelope_size = 8;
10796            let bytes_len = max_ordinal as usize * envelope_size;
10797            #[allow(unused_variables)]
10798            let offset = encoder.out_of_line_offset(bytes_len);
10799            let mut _prev_end_offset: usize = 0;
10800
10801            Ok(())
10802        }
10803    }
10804
10805    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Extended {
10806        #[inline(always)]
10807        fn new_empty() -> Self {
10808            Self::default()
10809        }
10810
10811        unsafe fn decode(
10812            &mut self,
10813            decoder: &mut fidl::encoding::Decoder<'_, D>,
10814            offset: usize,
10815            mut depth: fidl::encoding::Depth,
10816        ) -> fidl::Result<()> {
10817            decoder.debug_check_bounds::<Self>(offset);
10818            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10819                None => return Err(fidl::Error::NotNullable),
10820                Some(len) => len,
10821            };
10822            // Calling decoder.out_of_line_offset(0) is not allowed.
10823            if len == 0 {
10824                return Ok(());
10825            };
10826            depth.increment()?;
10827            let envelope_size = 8;
10828            let bytes_len = len * envelope_size;
10829            let offset = decoder.out_of_line_offset(bytes_len)?;
10830            // Decode the envelope for each type.
10831            let mut _next_ordinal_to_read = 0;
10832            let mut next_offset = offset;
10833            let end_offset = offset + bytes_len;
10834
10835            // Decode the remaining unknown envelopes.
10836            while next_offset < end_offset {
10837                _next_ordinal_to_read += 1;
10838                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10839                next_offset += envelope_size;
10840            }
10841
10842            Ok(())
10843        }
10844    }
10845
10846    impl Filter {
10847        #[inline(always)]
10848        fn max_ordinal_present(&self) -> u64 {
10849            if let Some(_) = self.solicitation_uuid {
10850                return 7;
10851            }
10852            if let Some(_) = self.max_path_loss {
10853                return 6;
10854            }
10855            if let Some(_) = self.name {
10856                return 5;
10857            }
10858            if let Some(_) = self.connectable {
10859                return 4;
10860            }
10861            if let Some(_) = self.manufacturer_id {
10862                return 3;
10863            }
10864            if let Some(_) = self.service_data_uuid {
10865                return 2;
10866            }
10867            if let Some(_) = self.service_uuid {
10868                return 1;
10869            }
10870            0
10871        }
10872    }
10873
10874    impl fidl::encoding::ValueTypeMarker for Filter {
10875        type Borrowed<'a> = &'a Self;
10876        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10877            value
10878        }
10879    }
10880
10881    unsafe impl fidl::encoding::TypeMarker for Filter {
10882        type Owned = Self;
10883
10884        #[inline(always)]
10885        fn inline_align(_context: fidl::encoding::Context) -> usize {
10886            8
10887        }
10888
10889        #[inline(always)]
10890        fn inline_size(_context: fidl::encoding::Context) -> usize {
10891            16
10892        }
10893    }
10894
10895    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Filter, D> for &Filter {
10896        unsafe fn encode(
10897            self,
10898            encoder: &mut fidl::encoding::Encoder<'_, D>,
10899            offset: usize,
10900            mut depth: fidl::encoding::Depth,
10901        ) -> fidl::Result<()> {
10902            encoder.debug_check_bounds::<Filter>(offset);
10903            // Vector header
10904            let max_ordinal: u64 = self.max_ordinal_present();
10905            encoder.write_num(max_ordinal, offset);
10906            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10907            // Calling encoder.out_of_line_offset(0) is not allowed.
10908            if max_ordinal == 0 {
10909                return Ok(());
10910            }
10911            depth.increment()?;
10912            let envelope_size = 8;
10913            let bytes_len = max_ordinal as usize * envelope_size;
10914            #[allow(unused_variables)]
10915            let offset = encoder.out_of_line_offset(bytes_len);
10916            let mut _prev_end_offset: usize = 0;
10917            if 1 > max_ordinal {
10918                return Ok(());
10919            }
10920
10921            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10922            // are envelope_size bytes.
10923            let cur_offset: usize = (1 - 1) * envelope_size;
10924
10925            // Zero reserved fields.
10926            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10927
10928            // Safety:
10929            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10930            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10931            //   envelope_size bytes, there is always sufficient room.
10932            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Uuid, D>(
10933            self.service_uuid.as_ref().map(<fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
10934            encoder, offset + cur_offset, depth
10935        )?;
10936
10937            _prev_end_offset = cur_offset + envelope_size;
10938            if 2 > max_ordinal {
10939                return Ok(());
10940            }
10941
10942            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10943            // are envelope_size bytes.
10944            let cur_offset: usize = (2 - 1) * envelope_size;
10945
10946            // Zero reserved fields.
10947            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10948
10949            // Safety:
10950            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10951            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10952            //   envelope_size bytes, there is always sufficient room.
10953            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Uuid, D>(
10954            self.service_data_uuid.as_ref().map(<fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
10955            encoder, offset + cur_offset, depth
10956        )?;
10957
10958            _prev_end_offset = cur_offset + envelope_size;
10959            if 3 > max_ordinal {
10960                return Ok(());
10961            }
10962
10963            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10964            // are envelope_size bytes.
10965            let cur_offset: usize = (3 - 1) * envelope_size;
10966
10967            // Zero reserved fields.
10968            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10969
10970            // Safety:
10971            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10972            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10973            //   envelope_size bytes, there is always sufficient room.
10974            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10975                self.manufacturer_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10976                encoder,
10977                offset + cur_offset,
10978                depth,
10979            )?;
10980
10981            _prev_end_offset = cur_offset + envelope_size;
10982            if 4 > max_ordinal {
10983                return Ok(());
10984            }
10985
10986            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10987            // are envelope_size bytes.
10988            let cur_offset: usize = (4 - 1) * envelope_size;
10989
10990            // Zero reserved fields.
10991            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10992
10993            // Safety:
10994            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10995            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10996            //   envelope_size bytes, there is always sufficient room.
10997            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10998                self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10999                encoder,
11000                offset + cur_offset,
11001                depth,
11002            )?;
11003
11004            _prev_end_offset = cur_offset + envelope_size;
11005            if 5 > max_ordinal {
11006                return Ok(());
11007            }
11008
11009            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11010            // are envelope_size bytes.
11011            let cur_offset: usize = (5 - 1) * envelope_size;
11012
11013            // Zero reserved fields.
11014            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11015
11016            // Safety:
11017            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11018            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11019            //   envelope_size bytes, there is always sufficient room.
11020            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
11021                self.name.as_ref().map(
11022                    <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
11023                ),
11024                encoder,
11025                offset + cur_offset,
11026                depth,
11027            )?;
11028
11029            _prev_end_offset = cur_offset + envelope_size;
11030            if 6 > max_ordinal {
11031                return Ok(());
11032            }
11033
11034            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11035            // are envelope_size bytes.
11036            let cur_offset: usize = (6 - 1) * envelope_size;
11037
11038            // Zero reserved fields.
11039            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11040
11041            // Safety:
11042            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11043            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11044            //   envelope_size bytes, there is always sufficient room.
11045            fidl::encoding::encode_in_envelope_optional::<i8, D>(
11046                self.max_path_loss.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
11047                encoder,
11048                offset + cur_offset,
11049                depth,
11050            )?;
11051
11052            _prev_end_offset = cur_offset + envelope_size;
11053            if 7 > max_ordinal {
11054                return Ok(());
11055            }
11056
11057            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11058            // are envelope_size bytes.
11059            let cur_offset: usize = (7 - 1) * envelope_size;
11060
11061            // Zero reserved fields.
11062            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11063
11064            // Safety:
11065            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11066            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11067            //   envelope_size bytes, there is always sufficient room.
11068            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Uuid, D>(
11069            self.solicitation_uuid.as_ref().map(<fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
11070            encoder, offset + cur_offset, depth
11071        )?;
11072
11073            _prev_end_offset = cur_offset + envelope_size;
11074
11075            Ok(())
11076        }
11077    }
11078
11079    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Filter {
11080        #[inline(always)]
11081        fn new_empty() -> Self {
11082            Self::default()
11083        }
11084
11085        unsafe fn decode(
11086            &mut self,
11087            decoder: &mut fidl::encoding::Decoder<'_, D>,
11088            offset: usize,
11089            mut depth: fidl::encoding::Depth,
11090        ) -> fidl::Result<()> {
11091            decoder.debug_check_bounds::<Self>(offset);
11092            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11093                None => return Err(fidl::Error::NotNullable),
11094                Some(len) => len,
11095            };
11096            // Calling decoder.out_of_line_offset(0) is not allowed.
11097            if len == 0 {
11098                return Ok(());
11099            };
11100            depth.increment()?;
11101            let envelope_size = 8;
11102            let bytes_len = len * envelope_size;
11103            let offset = decoder.out_of_line_offset(bytes_len)?;
11104            // Decode the envelope for each type.
11105            let mut _next_ordinal_to_read = 0;
11106            let mut next_offset = offset;
11107            let end_offset = offset + bytes_len;
11108            _next_ordinal_to_read += 1;
11109            if next_offset >= end_offset {
11110                return Ok(());
11111            }
11112
11113            // Decode unknown envelopes for gaps in ordinals.
11114            while _next_ordinal_to_read < 1 {
11115                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11116                _next_ordinal_to_read += 1;
11117                next_offset += envelope_size;
11118            }
11119
11120            let next_out_of_line = decoder.next_out_of_line();
11121            let handles_before = decoder.remaining_handles();
11122            if let Some((inlined, num_bytes, num_handles)) =
11123                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11124            {
11125                let member_inline_size = <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11126                if inlined != (member_inline_size <= 4) {
11127                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11128                }
11129                let inner_offset;
11130                let mut inner_depth = depth.clone();
11131                if inlined {
11132                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11133                    inner_offset = next_offset;
11134                } else {
11135                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11136                    inner_depth.increment()?;
11137                }
11138                let val_ref = self.service_uuid.get_or_insert_with(|| {
11139                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D)
11140                });
11141                fidl::decode!(
11142                    fidl_fuchsia_bluetooth__common::Uuid,
11143                    D,
11144                    val_ref,
11145                    decoder,
11146                    inner_offset,
11147                    inner_depth
11148                )?;
11149                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11150                {
11151                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11152                }
11153                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11154                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11155                }
11156            }
11157
11158            next_offset += envelope_size;
11159            _next_ordinal_to_read += 1;
11160            if next_offset >= end_offset {
11161                return Ok(());
11162            }
11163
11164            // Decode unknown envelopes for gaps in ordinals.
11165            while _next_ordinal_to_read < 2 {
11166                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11167                _next_ordinal_to_read += 1;
11168                next_offset += envelope_size;
11169            }
11170
11171            let next_out_of_line = decoder.next_out_of_line();
11172            let handles_before = decoder.remaining_handles();
11173            if let Some((inlined, num_bytes, num_handles)) =
11174                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11175            {
11176                let member_inline_size = <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11177                if inlined != (member_inline_size <= 4) {
11178                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11179                }
11180                let inner_offset;
11181                let mut inner_depth = depth.clone();
11182                if inlined {
11183                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11184                    inner_offset = next_offset;
11185                } else {
11186                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11187                    inner_depth.increment()?;
11188                }
11189                let val_ref = self.service_data_uuid.get_or_insert_with(|| {
11190                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D)
11191                });
11192                fidl::decode!(
11193                    fidl_fuchsia_bluetooth__common::Uuid,
11194                    D,
11195                    val_ref,
11196                    decoder,
11197                    inner_offset,
11198                    inner_depth
11199                )?;
11200                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11201                {
11202                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11203                }
11204                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11205                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11206                }
11207            }
11208
11209            next_offset += envelope_size;
11210            _next_ordinal_to_read += 1;
11211            if next_offset >= end_offset {
11212                return Ok(());
11213            }
11214
11215            // Decode unknown envelopes for gaps in ordinals.
11216            while _next_ordinal_to_read < 3 {
11217                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11218                _next_ordinal_to_read += 1;
11219                next_offset += envelope_size;
11220            }
11221
11222            let next_out_of_line = decoder.next_out_of_line();
11223            let handles_before = decoder.remaining_handles();
11224            if let Some((inlined, num_bytes, num_handles)) =
11225                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11226            {
11227                let member_inline_size =
11228                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11229                if inlined != (member_inline_size <= 4) {
11230                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11231                }
11232                let inner_offset;
11233                let mut inner_depth = depth.clone();
11234                if inlined {
11235                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11236                    inner_offset = next_offset;
11237                } else {
11238                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11239                    inner_depth.increment()?;
11240                }
11241                let val_ref = self.manufacturer_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
11242                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
11243                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11244                {
11245                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11246                }
11247                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11248                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11249                }
11250            }
11251
11252            next_offset += envelope_size;
11253            _next_ordinal_to_read += 1;
11254            if next_offset >= end_offset {
11255                return Ok(());
11256            }
11257
11258            // Decode unknown envelopes for gaps in ordinals.
11259            while _next_ordinal_to_read < 4 {
11260                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11261                _next_ordinal_to_read += 1;
11262                next_offset += envelope_size;
11263            }
11264
11265            let next_out_of_line = decoder.next_out_of_line();
11266            let handles_before = decoder.remaining_handles();
11267            if let Some((inlined, num_bytes, num_handles)) =
11268                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11269            {
11270                let member_inline_size =
11271                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11272                if inlined != (member_inline_size <= 4) {
11273                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11274                }
11275                let inner_offset;
11276                let mut inner_depth = depth.clone();
11277                if inlined {
11278                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11279                    inner_offset = next_offset;
11280                } else {
11281                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11282                    inner_depth.increment()?;
11283                }
11284                let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
11285                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11286                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11287                {
11288                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11289                }
11290                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11291                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11292                }
11293            }
11294
11295            next_offset += envelope_size;
11296            _next_ordinal_to_read += 1;
11297            if next_offset >= end_offset {
11298                return Ok(());
11299            }
11300
11301            // Decode unknown envelopes for gaps in ordinals.
11302            while _next_ordinal_to_read < 5 {
11303                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11304                _next_ordinal_to_read += 1;
11305                next_offset += envelope_size;
11306            }
11307
11308            let next_out_of_line = decoder.next_out_of_line();
11309            let handles_before = decoder.remaining_handles();
11310            if let Some((inlined, num_bytes, num_handles)) =
11311                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11312            {
11313                let member_inline_size =
11314                    <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
11315                        decoder.context,
11316                    );
11317                if inlined != (member_inline_size <= 4) {
11318                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11319                }
11320                let inner_offset;
11321                let mut inner_depth = depth.clone();
11322                if inlined {
11323                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11324                    inner_offset = next_offset;
11325                } else {
11326                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11327                    inner_depth.increment()?;
11328                }
11329                let val_ref = self
11330                    .name
11331                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
11332                fidl::decode!(
11333                    fidl::encoding::BoundedString<248>,
11334                    D,
11335                    val_ref,
11336                    decoder,
11337                    inner_offset,
11338                    inner_depth
11339                )?;
11340                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11341                {
11342                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11343                }
11344                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11345                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11346                }
11347            }
11348
11349            next_offset += envelope_size;
11350            _next_ordinal_to_read += 1;
11351            if next_offset >= end_offset {
11352                return Ok(());
11353            }
11354
11355            // Decode unknown envelopes for gaps in ordinals.
11356            while _next_ordinal_to_read < 6 {
11357                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11358                _next_ordinal_to_read += 1;
11359                next_offset += envelope_size;
11360            }
11361
11362            let next_out_of_line = decoder.next_out_of_line();
11363            let handles_before = decoder.remaining_handles();
11364            if let Some((inlined, num_bytes, num_handles)) =
11365                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11366            {
11367                let member_inline_size =
11368                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11369                if inlined != (member_inline_size <= 4) {
11370                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11371                }
11372                let inner_offset;
11373                let mut inner_depth = depth.clone();
11374                if inlined {
11375                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11376                    inner_offset = next_offset;
11377                } else {
11378                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11379                    inner_depth.increment()?;
11380                }
11381                let val_ref = self.max_path_loss.get_or_insert_with(|| fidl::new_empty!(i8, D));
11382                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
11383                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11384                {
11385                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11386                }
11387                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11388                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11389                }
11390            }
11391
11392            next_offset += envelope_size;
11393            _next_ordinal_to_read += 1;
11394            if next_offset >= end_offset {
11395                return Ok(());
11396            }
11397
11398            // Decode unknown envelopes for gaps in ordinals.
11399            while _next_ordinal_to_read < 7 {
11400                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11401                _next_ordinal_to_read += 1;
11402                next_offset += envelope_size;
11403            }
11404
11405            let next_out_of_line = decoder.next_out_of_line();
11406            let handles_before = decoder.remaining_handles();
11407            if let Some((inlined, num_bytes, num_handles)) =
11408                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11409            {
11410                let member_inline_size = <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11411                if inlined != (member_inline_size <= 4) {
11412                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11413                }
11414                let inner_offset;
11415                let mut inner_depth = depth.clone();
11416                if inlined {
11417                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11418                    inner_offset = next_offset;
11419                } else {
11420                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11421                    inner_depth.increment()?;
11422                }
11423                let val_ref = self.solicitation_uuid.get_or_insert_with(|| {
11424                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D)
11425                });
11426                fidl::decode!(
11427                    fidl_fuchsia_bluetooth__common::Uuid,
11428                    D,
11429                    val_ref,
11430                    decoder,
11431                    inner_offset,
11432                    inner_depth
11433                )?;
11434                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11435                {
11436                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11437                }
11438                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11439                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11440                }
11441            }
11442
11443            next_offset += envelope_size;
11444
11445            // Decode the remaining unknown envelopes.
11446            while next_offset < end_offset {
11447                _next_ordinal_to_read += 1;
11448                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11449                next_offset += envelope_size;
11450            }
11451
11452            Ok(())
11453        }
11454    }
11455
11456    impl IsochronousStreamOnEstablishedRequest {
11457        #[inline(always)]
11458        fn max_ordinal_present(&self) -> u64 {
11459            if let Some(_) = self.established_params {
11460                return 2;
11461            }
11462            if let Some(_) = self.result {
11463                return 1;
11464            }
11465            0
11466        }
11467    }
11468
11469    impl fidl::encoding::ValueTypeMarker for IsochronousStreamOnEstablishedRequest {
11470        type Borrowed<'a> = &'a Self;
11471        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11472            value
11473        }
11474    }
11475
11476    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamOnEstablishedRequest {
11477        type Owned = Self;
11478
11479        #[inline(always)]
11480        fn inline_align(_context: fidl::encoding::Context) -> usize {
11481            8
11482        }
11483
11484        #[inline(always)]
11485        fn inline_size(_context: fidl::encoding::Context) -> usize {
11486            16
11487        }
11488    }
11489
11490    unsafe impl<D: fidl::encoding::ResourceDialect>
11491        fidl::encoding::Encode<IsochronousStreamOnEstablishedRequest, D>
11492        for &IsochronousStreamOnEstablishedRequest
11493    {
11494        unsafe fn encode(
11495            self,
11496            encoder: &mut fidl::encoding::Encoder<'_, D>,
11497            offset: usize,
11498            mut depth: fidl::encoding::Depth,
11499        ) -> fidl::Result<()> {
11500            encoder.debug_check_bounds::<IsochronousStreamOnEstablishedRequest>(offset);
11501            // Vector header
11502            let max_ordinal: u64 = self.max_ordinal_present();
11503            encoder.write_num(max_ordinal, offset);
11504            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11505            // Calling encoder.out_of_line_offset(0) is not allowed.
11506            if max_ordinal == 0 {
11507                return Ok(());
11508            }
11509            depth.increment()?;
11510            let envelope_size = 8;
11511            let bytes_len = max_ordinal as usize * envelope_size;
11512            #[allow(unused_variables)]
11513            let offset = encoder.out_of_line_offset(bytes_len);
11514            let mut _prev_end_offset: usize = 0;
11515            if 1 > max_ordinal {
11516                return Ok(());
11517            }
11518
11519            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11520            // are envelope_size bytes.
11521            let cur_offset: usize = (1 - 1) * envelope_size;
11522
11523            // Zero reserved fields.
11524            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11525
11526            // Safety:
11527            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11528            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11529            //   envelope_size bytes, there is always sufficient room.
11530            fidl::encoding::encode_in_envelope_optional::<i32, D>(
11531                self.result.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
11532                encoder,
11533                offset + cur_offset,
11534                depth,
11535            )?;
11536
11537            _prev_end_offset = cur_offset + envelope_size;
11538            if 2 > max_ordinal {
11539                return Ok(());
11540            }
11541
11542            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11543            // are envelope_size bytes.
11544            let cur_offset: usize = (2 - 1) * envelope_size;
11545
11546            // Zero reserved fields.
11547            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11548
11549            // Safety:
11550            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11551            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11552            //   envelope_size bytes, there is always sufficient room.
11553            fidl::encoding::encode_in_envelope_optional::<CisEstablishedParameters, D>(
11554                self.established_params
11555                    .as_ref()
11556                    .map(<CisEstablishedParameters as fidl::encoding::ValueTypeMarker>::borrow),
11557                encoder,
11558                offset + cur_offset,
11559                depth,
11560            )?;
11561
11562            _prev_end_offset = cur_offset + envelope_size;
11563
11564            Ok(())
11565        }
11566    }
11567
11568    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11569        for IsochronousStreamOnEstablishedRequest
11570    {
11571        #[inline(always)]
11572        fn new_empty() -> Self {
11573            Self::default()
11574        }
11575
11576        unsafe fn decode(
11577            &mut self,
11578            decoder: &mut fidl::encoding::Decoder<'_, D>,
11579            offset: usize,
11580            mut depth: fidl::encoding::Depth,
11581        ) -> fidl::Result<()> {
11582            decoder.debug_check_bounds::<Self>(offset);
11583            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11584                None => return Err(fidl::Error::NotNullable),
11585                Some(len) => len,
11586            };
11587            // Calling decoder.out_of_line_offset(0) is not allowed.
11588            if len == 0 {
11589                return Ok(());
11590            };
11591            depth.increment()?;
11592            let envelope_size = 8;
11593            let bytes_len = len * envelope_size;
11594            let offset = decoder.out_of_line_offset(bytes_len)?;
11595            // Decode the envelope for each type.
11596            let mut _next_ordinal_to_read = 0;
11597            let mut next_offset = offset;
11598            let end_offset = offset + bytes_len;
11599            _next_ordinal_to_read += 1;
11600            if next_offset >= end_offset {
11601                return Ok(());
11602            }
11603
11604            // Decode unknown envelopes for gaps in ordinals.
11605            while _next_ordinal_to_read < 1 {
11606                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11607                _next_ordinal_to_read += 1;
11608                next_offset += envelope_size;
11609            }
11610
11611            let next_out_of_line = decoder.next_out_of_line();
11612            let handles_before = decoder.remaining_handles();
11613            if let Some((inlined, num_bytes, num_handles)) =
11614                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11615            {
11616                let member_inline_size =
11617                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11618                if inlined != (member_inline_size <= 4) {
11619                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11620                }
11621                let inner_offset;
11622                let mut inner_depth = depth.clone();
11623                if inlined {
11624                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11625                    inner_offset = next_offset;
11626                } else {
11627                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11628                    inner_depth.increment()?;
11629                }
11630                let val_ref = self.result.get_or_insert_with(|| fidl::new_empty!(i32, D));
11631                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
11632                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11633                {
11634                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11635                }
11636                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11637                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11638                }
11639            }
11640
11641            next_offset += envelope_size;
11642            _next_ordinal_to_read += 1;
11643            if next_offset >= end_offset {
11644                return Ok(());
11645            }
11646
11647            // Decode unknown envelopes for gaps in ordinals.
11648            while _next_ordinal_to_read < 2 {
11649                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11650                _next_ordinal_to_read += 1;
11651                next_offset += envelope_size;
11652            }
11653
11654            let next_out_of_line = decoder.next_out_of_line();
11655            let handles_before = decoder.remaining_handles();
11656            if let Some((inlined, num_bytes, num_handles)) =
11657                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11658            {
11659                let member_inline_size =
11660                    <CisEstablishedParameters as fidl::encoding::TypeMarker>::inline_size(
11661                        decoder.context,
11662                    );
11663                if inlined != (member_inline_size <= 4) {
11664                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11665                }
11666                let inner_offset;
11667                let mut inner_depth = depth.clone();
11668                if inlined {
11669                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11670                    inner_offset = next_offset;
11671                } else {
11672                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11673                    inner_depth.increment()?;
11674                }
11675                let val_ref = self
11676                    .established_params
11677                    .get_or_insert_with(|| fidl::new_empty!(CisEstablishedParameters, D));
11678                fidl::decode!(
11679                    CisEstablishedParameters,
11680                    D,
11681                    val_ref,
11682                    decoder,
11683                    inner_offset,
11684                    inner_depth
11685                )?;
11686                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11687                {
11688                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11689                }
11690                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11691                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11692                }
11693            }
11694
11695            next_offset += envelope_size;
11696
11697            // Decode the remaining unknown envelopes.
11698            while next_offset < end_offset {
11699                _next_ordinal_to_read += 1;
11700                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11701                next_offset += envelope_size;
11702            }
11703
11704            Ok(())
11705        }
11706    }
11707
11708    impl IsochronousStreamSetupDataPathRequest {
11709        #[inline(always)]
11710        fn max_ordinal_present(&self) -> u64 {
11711            if let Some(_) = self.controller_delay {
11712                return 3;
11713            }
11714            if let Some(_) = self.codec_attributes {
11715                return 2;
11716            }
11717            if let Some(_) = self.data_direction {
11718                return 1;
11719            }
11720            0
11721        }
11722    }
11723
11724    impl fidl::encoding::ValueTypeMarker for IsochronousStreamSetupDataPathRequest {
11725        type Borrowed<'a> = &'a Self;
11726        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11727            value
11728        }
11729    }
11730
11731    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamSetupDataPathRequest {
11732        type Owned = Self;
11733
11734        #[inline(always)]
11735        fn inline_align(_context: fidl::encoding::Context) -> usize {
11736            8
11737        }
11738
11739        #[inline(always)]
11740        fn inline_size(_context: fidl::encoding::Context) -> usize {
11741            16
11742        }
11743    }
11744
11745    unsafe impl<D: fidl::encoding::ResourceDialect>
11746        fidl::encoding::Encode<IsochronousStreamSetupDataPathRequest, D>
11747        for &IsochronousStreamSetupDataPathRequest
11748    {
11749        unsafe fn encode(
11750            self,
11751            encoder: &mut fidl::encoding::Encoder<'_, D>,
11752            offset: usize,
11753            mut depth: fidl::encoding::Depth,
11754        ) -> fidl::Result<()> {
11755            encoder.debug_check_bounds::<IsochronousStreamSetupDataPathRequest>(offset);
11756            // Vector header
11757            let max_ordinal: u64 = self.max_ordinal_present();
11758            encoder.write_num(max_ordinal, offset);
11759            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11760            // Calling encoder.out_of_line_offset(0) is not allowed.
11761            if max_ordinal == 0 {
11762                return Ok(());
11763            }
11764            depth.increment()?;
11765            let envelope_size = 8;
11766            let bytes_len = max_ordinal as usize * envelope_size;
11767            #[allow(unused_variables)]
11768            let offset = encoder.out_of_line_offset(bytes_len);
11769            let mut _prev_end_offset: usize = 0;
11770            if 1 > max_ordinal {
11771                return Ok(());
11772            }
11773
11774            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11775            // are envelope_size bytes.
11776            let cur_offset: usize = (1 - 1) * envelope_size;
11777
11778            // Zero reserved fields.
11779            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11780
11781            // Safety:
11782            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11783            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11784            //   envelope_size bytes, there is always sufficient room.
11785            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::DataDirection, D>(
11786            self.data_direction.as_ref().map(<fidl_fuchsia_bluetooth__common::DataDirection as fidl::encoding::ValueTypeMarker>::borrow),
11787            encoder, offset + cur_offset, depth
11788        )?;
11789
11790            _prev_end_offset = cur_offset + envelope_size;
11791            if 2 > max_ordinal {
11792                return Ok(());
11793            }
11794
11795            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11796            // are envelope_size bytes.
11797            let cur_offset: usize = (2 - 1) * envelope_size;
11798
11799            // Zero reserved fields.
11800            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11801
11802            // Safety:
11803            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11804            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11805            //   envelope_size bytes, there is always sufficient room.
11806            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::CodecAttributes, D>(
11807            self.codec_attributes.as_ref().map(<fidl_fuchsia_bluetooth__common::CodecAttributes as fidl::encoding::ValueTypeMarker>::borrow),
11808            encoder, offset + cur_offset, depth
11809        )?;
11810
11811            _prev_end_offset = cur_offset + envelope_size;
11812            if 3 > max_ordinal {
11813                return Ok(());
11814            }
11815
11816            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11817            // are envelope_size bytes.
11818            let cur_offset: usize = (3 - 1) * envelope_size;
11819
11820            // Zero reserved fields.
11821            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11822
11823            // Safety:
11824            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11825            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11826            //   envelope_size bytes, there is always sufficient room.
11827            fidl::encoding::encode_in_envelope_optional::<i64, D>(
11828                self.controller_delay
11829                    .as_ref()
11830                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
11831                encoder,
11832                offset + cur_offset,
11833                depth,
11834            )?;
11835
11836            _prev_end_offset = cur_offset + envelope_size;
11837
11838            Ok(())
11839        }
11840    }
11841
11842    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11843        for IsochronousStreamSetupDataPathRequest
11844    {
11845        #[inline(always)]
11846        fn new_empty() -> Self {
11847            Self::default()
11848        }
11849
11850        unsafe fn decode(
11851            &mut self,
11852            decoder: &mut fidl::encoding::Decoder<'_, D>,
11853            offset: usize,
11854            mut depth: fidl::encoding::Depth,
11855        ) -> fidl::Result<()> {
11856            decoder.debug_check_bounds::<Self>(offset);
11857            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11858                None => return Err(fidl::Error::NotNullable),
11859                Some(len) => len,
11860            };
11861            // Calling decoder.out_of_line_offset(0) is not allowed.
11862            if len == 0 {
11863                return Ok(());
11864            };
11865            depth.increment()?;
11866            let envelope_size = 8;
11867            let bytes_len = len * envelope_size;
11868            let offset = decoder.out_of_line_offset(bytes_len)?;
11869            // Decode the envelope for each type.
11870            let mut _next_ordinal_to_read = 0;
11871            let mut next_offset = offset;
11872            let end_offset = offset + bytes_len;
11873            _next_ordinal_to_read += 1;
11874            if next_offset >= end_offset {
11875                return Ok(());
11876            }
11877
11878            // Decode unknown envelopes for gaps in ordinals.
11879            while _next_ordinal_to_read < 1 {
11880                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11881                _next_ordinal_to_read += 1;
11882                next_offset += envelope_size;
11883            }
11884
11885            let next_out_of_line = decoder.next_out_of_line();
11886            let handles_before = decoder.remaining_handles();
11887            if let Some((inlined, num_bytes, num_handles)) =
11888                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11889            {
11890                let member_inline_size = <fidl_fuchsia_bluetooth__common::DataDirection as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11891                if inlined != (member_inline_size <= 4) {
11892                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11893                }
11894                let inner_offset;
11895                let mut inner_depth = depth.clone();
11896                if inlined {
11897                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11898                    inner_offset = next_offset;
11899                } else {
11900                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11901                    inner_depth.increment()?;
11902                }
11903                let val_ref = self.data_direction.get_or_insert_with(|| {
11904                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::DataDirection, D)
11905                });
11906                fidl::decode!(
11907                    fidl_fuchsia_bluetooth__common::DataDirection,
11908                    D,
11909                    val_ref,
11910                    decoder,
11911                    inner_offset,
11912                    inner_depth
11913                )?;
11914                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11915                {
11916                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11917                }
11918                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11919                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11920                }
11921            }
11922
11923            next_offset += envelope_size;
11924            _next_ordinal_to_read += 1;
11925            if next_offset >= end_offset {
11926                return Ok(());
11927            }
11928
11929            // Decode unknown envelopes for gaps in ordinals.
11930            while _next_ordinal_to_read < 2 {
11931                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11932                _next_ordinal_to_read += 1;
11933                next_offset += envelope_size;
11934            }
11935
11936            let next_out_of_line = decoder.next_out_of_line();
11937            let handles_before = decoder.remaining_handles();
11938            if let Some((inlined, num_bytes, num_handles)) =
11939                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11940            {
11941                let member_inline_size = <fidl_fuchsia_bluetooth__common::CodecAttributes as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11942                if inlined != (member_inline_size <= 4) {
11943                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11944                }
11945                let inner_offset;
11946                let mut inner_depth = depth.clone();
11947                if inlined {
11948                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11949                    inner_offset = next_offset;
11950                } else {
11951                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11952                    inner_depth.increment()?;
11953                }
11954                let val_ref = self.codec_attributes.get_or_insert_with(|| {
11955                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::CodecAttributes, D)
11956                });
11957                fidl::decode!(
11958                    fidl_fuchsia_bluetooth__common::CodecAttributes,
11959                    D,
11960                    val_ref,
11961                    decoder,
11962                    inner_offset,
11963                    inner_depth
11964                )?;
11965                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11966                {
11967                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11968                }
11969                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11970                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11971                }
11972            }
11973
11974            next_offset += envelope_size;
11975            _next_ordinal_to_read += 1;
11976            if next_offset >= end_offset {
11977                return Ok(());
11978            }
11979
11980            // Decode unknown envelopes for gaps in ordinals.
11981            while _next_ordinal_to_read < 3 {
11982                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11983                _next_ordinal_to_read += 1;
11984                next_offset += envelope_size;
11985            }
11986
11987            let next_out_of_line = decoder.next_out_of_line();
11988            let handles_before = decoder.remaining_handles();
11989            if let Some((inlined, num_bytes, num_handles)) =
11990                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11991            {
11992                let member_inline_size =
11993                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11994                if inlined != (member_inline_size <= 4) {
11995                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11996                }
11997                let inner_offset;
11998                let mut inner_depth = depth.clone();
11999                if inlined {
12000                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12001                    inner_offset = next_offset;
12002                } else {
12003                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12004                    inner_depth.increment()?;
12005                }
12006                let val_ref = self.controller_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
12007                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12008                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12009                {
12010                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12011                }
12012                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12013                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12014                }
12015            }
12016
12017            next_offset += envelope_size;
12018
12019            // Decode the remaining unknown envelopes.
12020            while next_offset < end_offset {
12021                _next_ordinal_to_read += 1;
12022                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12023                next_offset += envelope_size;
12024            }
12025
12026            Ok(())
12027        }
12028    }
12029
12030    impl IsochronousStreamWriteRequest {
12031        #[inline(always)]
12032        fn max_ordinal_present(&self) -> u64 {
12033            if let Some(_) = self.data {
12034                return 1;
12035            }
12036            0
12037        }
12038    }
12039
12040    impl fidl::encoding::ValueTypeMarker for IsochronousStreamWriteRequest {
12041        type Borrowed<'a> = &'a Self;
12042        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12043            value
12044        }
12045    }
12046
12047    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamWriteRequest {
12048        type Owned = Self;
12049
12050        #[inline(always)]
12051        fn inline_align(_context: fidl::encoding::Context) -> usize {
12052            8
12053        }
12054
12055        #[inline(always)]
12056        fn inline_size(_context: fidl::encoding::Context) -> usize {
12057            16
12058        }
12059    }
12060
12061    unsafe impl<D: fidl::encoding::ResourceDialect>
12062        fidl::encoding::Encode<IsochronousStreamWriteRequest, D>
12063        for &IsochronousStreamWriteRequest
12064    {
12065        unsafe fn encode(
12066            self,
12067            encoder: &mut fidl::encoding::Encoder<'_, D>,
12068            offset: usize,
12069            mut depth: fidl::encoding::Depth,
12070        ) -> fidl::Result<()> {
12071            encoder.debug_check_bounds::<IsochronousStreamWriteRequest>(offset);
12072            // Vector header
12073            let max_ordinal: u64 = self.max_ordinal_present();
12074            encoder.write_num(max_ordinal, offset);
12075            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12076            // Calling encoder.out_of_line_offset(0) is not allowed.
12077            if max_ordinal == 0 {
12078                return Ok(());
12079            }
12080            depth.increment()?;
12081            let envelope_size = 8;
12082            let bytes_len = max_ordinal as usize * envelope_size;
12083            #[allow(unused_variables)]
12084            let offset = encoder.out_of_line_offset(bytes_len);
12085            let mut _prev_end_offset: usize = 0;
12086            if 1 > max_ordinal {
12087                return Ok(());
12088            }
12089
12090            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12091            // are envelope_size bytes.
12092            let cur_offset: usize = (1 - 1) * envelope_size;
12093
12094            // Zero reserved fields.
12095            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12096
12097            // Safety:
12098            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12099            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12100            //   envelope_size bytes, there is always sufficient room.
12101            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 4095>, D>(
12102                self.data.as_ref().map(
12103                    <fidl::encoding::Vector<u8, 4095> as fidl::encoding::ValueTypeMarker>::borrow,
12104                ),
12105                encoder,
12106                offset + cur_offset,
12107                depth,
12108            )?;
12109
12110            _prev_end_offset = cur_offset + envelope_size;
12111
12112            Ok(())
12113        }
12114    }
12115
12116    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12117        for IsochronousStreamWriteRequest
12118    {
12119        #[inline(always)]
12120        fn new_empty() -> Self {
12121            Self::default()
12122        }
12123
12124        unsafe fn decode(
12125            &mut self,
12126            decoder: &mut fidl::encoding::Decoder<'_, D>,
12127            offset: usize,
12128            mut depth: fidl::encoding::Depth,
12129        ) -> fidl::Result<()> {
12130            decoder.debug_check_bounds::<Self>(offset);
12131            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12132                None => return Err(fidl::Error::NotNullable),
12133                Some(len) => len,
12134            };
12135            // Calling decoder.out_of_line_offset(0) is not allowed.
12136            if len == 0 {
12137                return Ok(());
12138            };
12139            depth.increment()?;
12140            let envelope_size = 8;
12141            let bytes_len = len * envelope_size;
12142            let offset = decoder.out_of_line_offset(bytes_len)?;
12143            // Decode the envelope for each type.
12144            let mut _next_ordinal_to_read = 0;
12145            let mut next_offset = offset;
12146            let end_offset = offset + bytes_len;
12147            _next_ordinal_to_read += 1;
12148            if next_offset >= end_offset {
12149                return Ok(());
12150            }
12151
12152            // Decode unknown envelopes for gaps in ordinals.
12153            while _next_ordinal_to_read < 1 {
12154                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12155                _next_ordinal_to_read += 1;
12156                next_offset += envelope_size;
12157            }
12158
12159            let next_out_of_line = decoder.next_out_of_line();
12160            let handles_before = decoder.remaining_handles();
12161            if let Some((inlined, num_bytes, num_handles)) =
12162                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12163            {
12164                let member_inline_size =
12165                    <fidl::encoding::Vector<u8, 4095> as fidl::encoding::TypeMarker>::inline_size(
12166                        decoder.context,
12167                    );
12168                if inlined != (member_inline_size <= 4) {
12169                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12170                }
12171                let inner_offset;
12172                let mut inner_depth = depth.clone();
12173                if inlined {
12174                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12175                    inner_offset = next_offset;
12176                } else {
12177                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12178                    inner_depth.increment()?;
12179                }
12180                let val_ref = self
12181                    .data
12182                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 4095>, D));
12183                fidl::decode!(fidl::encoding::Vector<u8, 4095>, D, val_ref, decoder, inner_offset, inner_depth)?;
12184                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12185                {
12186                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12187                }
12188                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12189                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12190                }
12191            }
12192
12193            next_offset += envelope_size;
12194
12195            // Decode the remaining unknown envelopes.
12196            while next_offset < end_offset {
12197                _next_ordinal_to_read += 1;
12198                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12199                next_offset += envelope_size;
12200            }
12201
12202            Ok(())
12203        }
12204    }
12205
12206    impl IsochronousStreamReadResponse {
12207        #[inline(always)]
12208        fn max_ordinal_present(&self) -> u64 {
12209            if let Some(_) = self.timestamp {
12210                return 4;
12211            }
12212            if let Some(_) = self.status_flag {
12213                return 3;
12214            }
12215            if let Some(_) = self.sequence_number {
12216                return 2;
12217            }
12218            if let Some(_) = self.data {
12219                return 1;
12220            }
12221            0
12222        }
12223    }
12224
12225    impl fidl::encoding::ValueTypeMarker for IsochronousStreamReadResponse {
12226        type Borrowed<'a> = &'a Self;
12227        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12228            value
12229        }
12230    }
12231
12232    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamReadResponse {
12233        type Owned = Self;
12234
12235        #[inline(always)]
12236        fn inline_align(_context: fidl::encoding::Context) -> usize {
12237            8
12238        }
12239
12240        #[inline(always)]
12241        fn inline_size(_context: fidl::encoding::Context) -> usize {
12242            16
12243        }
12244    }
12245
12246    unsafe impl<D: fidl::encoding::ResourceDialect>
12247        fidl::encoding::Encode<IsochronousStreamReadResponse, D>
12248        for &IsochronousStreamReadResponse
12249    {
12250        unsafe fn encode(
12251            self,
12252            encoder: &mut fidl::encoding::Encoder<'_, D>,
12253            offset: usize,
12254            mut depth: fidl::encoding::Depth,
12255        ) -> fidl::Result<()> {
12256            encoder.debug_check_bounds::<IsochronousStreamReadResponse>(offset);
12257            // Vector header
12258            let max_ordinal: u64 = self.max_ordinal_present();
12259            encoder.write_num(max_ordinal, offset);
12260            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12261            // Calling encoder.out_of_line_offset(0) is not allowed.
12262            if max_ordinal == 0 {
12263                return Ok(());
12264            }
12265            depth.increment()?;
12266            let envelope_size = 8;
12267            let bytes_len = max_ordinal as usize * envelope_size;
12268            #[allow(unused_variables)]
12269            let offset = encoder.out_of_line_offset(bytes_len);
12270            let mut _prev_end_offset: usize = 0;
12271            if 1 > max_ordinal {
12272                return Ok(());
12273            }
12274
12275            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12276            // are envelope_size bytes.
12277            let cur_offset: usize = (1 - 1) * envelope_size;
12278
12279            // Zero reserved fields.
12280            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12281
12282            // Safety:
12283            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12284            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12285            //   envelope_size bytes, there is always sufficient room.
12286            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
12287            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
12288            encoder, offset + cur_offset, depth
12289        )?;
12290
12291            _prev_end_offset = cur_offset + envelope_size;
12292            if 2 > max_ordinal {
12293                return Ok(());
12294            }
12295
12296            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12297            // are envelope_size bytes.
12298            let cur_offset: usize = (2 - 1) * envelope_size;
12299
12300            // Zero reserved fields.
12301            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12302
12303            // Safety:
12304            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12305            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12306            //   envelope_size bytes, there is always sufficient room.
12307            fidl::encoding::encode_in_envelope_optional::<u16, D>(
12308                self.sequence_number.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
12309                encoder,
12310                offset + cur_offset,
12311                depth,
12312            )?;
12313
12314            _prev_end_offset = cur_offset + envelope_size;
12315            if 3 > max_ordinal {
12316                return Ok(());
12317            }
12318
12319            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12320            // are envelope_size bytes.
12321            let cur_offset: usize = (3 - 1) * envelope_size;
12322
12323            // Zero reserved fields.
12324            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12325
12326            // Safety:
12327            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12328            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12329            //   envelope_size bytes, there is always sufficient room.
12330            fidl::encoding::encode_in_envelope_optional::<IsoPacketStatusFlag, D>(
12331                self.status_flag
12332                    .as_ref()
12333                    .map(<IsoPacketStatusFlag as fidl::encoding::ValueTypeMarker>::borrow),
12334                encoder,
12335                offset + cur_offset,
12336                depth,
12337            )?;
12338
12339            _prev_end_offset = cur_offset + envelope_size;
12340            if 4 > max_ordinal {
12341                return Ok(());
12342            }
12343
12344            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12345            // are envelope_size bytes.
12346            let cur_offset: usize = (4 - 1) * envelope_size;
12347
12348            // Zero reserved fields.
12349            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12350
12351            // Safety:
12352            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12353            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12354            //   envelope_size bytes, there is always sufficient room.
12355            fidl::encoding::encode_in_envelope_optional::<i64, D>(
12356                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12357                encoder,
12358                offset + cur_offset,
12359                depth,
12360            )?;
12361
12362            _prev_end_offset = cur_offset + envelope_size;
12363
12364            Ok(())
12365        }
12366    }
12367
12368    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12369        for IsochronousStreamReadResponse
12370    {
12371        #[inline(always)]
12372        fn new_empty() -> Self {
12373            Self::default()
12374        }
12375
12376        unsafe fn decode(
12377            &mut self,
12378            decoder: &mut fidl::encoding::Decoder<'_, D>,
12379            offset: usize,
12380            mut depth: fidl::encoding::Depth,
12381        ) -> fidl::Result<()> {
12382            decoder.debug_check_bounds::<Self>(offset);
12383            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12384                None => return Err(fidl::Error::NotNullable),
12385                Some(len) => len,
12386            };
12387            // Calling decoder.out_of_line_offset(0) is not allowed.
12388            if len == 0 {
12389                return Ok(());
12390            };
12391            depth.increment()?;
12392            let envelope_size = 8;
12393            let bytes_len = len * envelope_size;
12394            let offset = decoder.out_of_line_offset(bytes_len)?;
12395            // Decode the envelope for each type.
12396            let mut _next_ordinal_to_read = 0;
12397            let mut next_offset = offset;
12398            let end_offset = offset + bytes_len;
12399            _next_ordinal_to_read += 1;
12400            if next_offset >= end_offset {
12401                return Ok(());
12402            }
12403
12404            // Decode unknown envelopes for gaps in ordinals.
12405            while _next_ordinal_to_read < 1 {
12406                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12407                _next_ordinal_to_read += 1;
12408                next_offset += envelope_size;
12409            }
12410
12411            let next_out_of_line = decoder.next_out_of_line();
12412            let handles_before = decoder.remaining_handles();
12413            if let Some((inlined, num_bytes, num_handles)) =
12414                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12415            {
12416                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12417                if inlined != (member_inline_size <= 4) {
12418                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12419                }
12420                let inner_offset;
12421                let mut inner_depth = depth.clone();
12422                if inlined {
12423                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12424                    inner_offset = next_offset;
12425                } else {
12426                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12427                    inner_depth.increment()?;
12428                }
12429                let val_ref = self.data.get_or_insert_with(|| {
12430                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
12431                });
12432                fidl::decode!(
12433                    fidl::encoding::UnboundedVector<u8>,
12434                    D,
12435                    val_ref,
12436                    decoder,
12437                    inner_offset,
12438                    inner_depth
12439                )?;
12440                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12441                {
12442                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12443                }
12444                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12445                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12446                }
12447            }
12448
12449            next_offset += envelope_size;
12450            _next_ordinal_to_read += 1;
12451            if next_offset >= end_offset {
12452                return Ok(());
12453            }
12454
12455            // Decode unknown envelopes for gaps in ordinals.
12456            while _next_ordinal_to_read < 2 {
12457                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12458                _next_ordinal_to_read += 1;
12459                next_offset += envelope_size;
12460            }
12461
12462            let next_out_of_line = decoder.next_out_of_line();
12463            let handles_before = decoder.remaining_handles();
12464            if let Some((inlined, num_bytes, num_handles)) =
12465                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12466            {
12467                let member_inline_size =
12468                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12469                if inlined != (member_inline_size <= 4) {
12470                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12471                }
12472                let inner_offset;
12473                let mut inner_depth = depth.clone();
12474                if inlined {
12475                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12476                    inner_offset = next_offset;
12477                } else {
12478                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12479                    inner_depth.increment()?;
12480                }
12481                let val_ref = self.sequence_number.get_or_insert_with(|| fidl::new_empty!(u16, D));
12482                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
12483                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12484                {
12485                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12486                }
12487                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12488                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12489                }
12490            }
12491
12492            next_offset += envelope_size;
12493            _next_ordinal_to_read += 1;
12494            if next_offset >= end_offset {
12495                return Ok(());
12496            }
12497
12498            // Decode unknown envelopes for gaps in ordinals.
12499            while _next_ordinal_to_read < 3 {
12500                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12501                _next_ordinal_to_read += 1;
12502                next_offset += envelope_size;
12503            }
12504
12505            let next_out_of_line = decoder.next_out_of_line();
12506            let handles_before = decoder.remaining_handles();
12507            if let Some((inlined, num_bytes, num_handles)) =
12508                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12509            {
12510                let member_inline_size =
12511                    <IsoPacketStatusFlag as fidl::encoding::TypeMarker>::inline_size(
12512                        decoder.context,
12513                    );
12514                if inlined != (member_inline_size <= 4) {
12515                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12516                }
12517                let inner_offset;
12518                let mut inner_depth = depth.clone();
12519                if inlined {
12520                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12521                    inner_offset = next_offset;
12522                } else {
12523                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12524                    inner_depth.increment()?;
12525                }
12526                let val_ref = self
12527                    .status_flag
12528                    .get_or_insert_with(|| fidl::new_empty!(IsoPacketStatusFlag, D));
12529                fidl::decode!(IsoPacketStatusFlag, D, val_ref, decoder, inner_offset, inner_depth)?;
12530                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12531                {
12532                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12533                }
12534                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12535                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12536                }
12537            }
12538
12539            next_offset += envelope_size;
12540            _next_ordinal_to_read += 1;
12541            if next_offset >= end_offset {
12542                return Ok(());
12543            }
12544
12545            // Decode unknown envelopes for gaps in ordinals.
12546            while _next_ordinal_to_read < 4 {
12547                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12548                _next_ordinal_to_read += 1;
12549                next_offset += envelope_size;
12550            }
12551
12552            let next_out_of_line = decoder.next_out_of_line();
12553            let handles_before = decoder.remaining_handles();
12554            if let Some((inlined, num_bytes, num_handles)) =
12555                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12556            {
12557                let member_inline_size =
12558                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12559                if inlined != (member_inline_size <= 4) {
12560                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12561                }
12562                let inner_offset;
12563                let mut inner_depth = depth.clone();
12564                if inlined {
12565                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12566                    inner_offset = next_offset;
12567                } else {
12568                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12569                    inner_depth.increment()?;
12570                }
12571                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
12572                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12573                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12574                {
12575                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12576                }
12577                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12578                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12579                }
12580            }
12581
12582            next_offset += envelope_size;
12583
12584            // Decode the remaining unknown envelopes.
12585            while next_offset < end_offset {
12586                _next_ordinal_to_read += 1;
12587                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12588                next_offset += envelope_size;
12589            }
12590
12591            Ok(())
12592        }
12593    }
12594
12595    impl Legacy {
12596        #[inline(always)]
12597        fn max_ordinal_present(&self) -> u64 {
12598            0
12599        }
12600    }
12601
12602    impl fidl::encoding::ValueTypeMarker for Legacy {
12603        type Borrowed<'a> = &'a Self;
12604        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12605            value
12606        }
12607    }
12608
12609    unsafe impl fidl::encoding::TypeMarker for Legacy {
12610        type Owned = Self;
12611
12612        #[inline(always)]
12613        fn inline_align(_context: fidl::encoding::Context) -> usize {
12614            8
12615        }
12616
12617        #[inline(always)]
12618        fn inline_size(_context: fidl::encoding::Context) -> usize {
12619            16
12620        }
12621    }
12622
12623    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Legacy, D> for &Legacy {
12624        unsafe fn encode(
12625            self,
12626            encoder: &mut fidl::encoding::Encoder<'_, D>,
12627            offset: usize,
12628            mut depth: fidl::encoding::Depth,
12629        ) -> fidl::Result<()> {
12630            encoder.debug_check_bounds::<Legacy>(offset);
12631            // Vector header
12632            let max_ordinal: u64 = self.max_ordinal_present();
12633            encoder.write_num(max_ordinal, offset);
12634            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12635            // Calling encoder.out_of_line_offset(0) is not allowed.
12636            if max_ordinal == 0 {
12637                return Ok(());
12638            }
12639            depth.increment()?;
12640            let envelope_size = 8;
12641            let bytes_len = max_ordinal as usize * envelope_size;
12642            #[allow(unused_variables)]
12643            let offset = encoder.out_of_line_offset(bytes_len);
12644            let mut _prev_end_offset: usize = 0;
12645
12646            Ok(())
12647        }
12648    }
12649
12650    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Legacy {
12651        #[inline(always)]
12652        fn new_empty() -> Self {
12653            Self::default()
12654        }
12655
12656        unsafe fn decode(
12657            &mut self,
12658            decoder: &mut fidl::encoding::Decoder<'_, D>,
12659            offset: usize,
12660            mut depth: fidl::encoding::Depth,
12661        ) -> fidl::Result<()> {
12662            decoder.debug_check_bounds::<Self>(offset);
12663            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12664                None => return Err(fidl::Error::NotNullable),
12665                Some(len) => len,
12666            };
12667            // Calling decoder.out_of_line_offset(0) is not allowed.
12668            if len == 0 {
12669                return Ok(());
12670            };
12671            depth.increment()?;
12672            let envelope_size = 8;
12673            let bytes_len = len * envelope_size;
12674            let offset = decoder.out_of_line_offset(bytes_len)?;
12675            // Decode the envelope for each type.
12676            let mut _next_ordinal_to_read = 0;
12677            let mut next_offset = offset;
12678            let end_offset = offset + bytes_len;
12679
12680            // Decode the remaining unknown envelopes.
12681            while next_offset < end_offset {
12682                _next_ordinal_to_read += 1;
12683                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12684                next_offset += envelope_size;
12685            }
12686
12687            Ok(())
12688        }
12689    }
12690
12691    impl Peer {
12692        #[inline(always)]
12693        fn max_ordinal_present(&self) -> u64 {
12694            if let Some(_) = self.periodic_advertising_interval {
12695                return 10;
12696            }
12697            if let Some(_) = self.advertising_sid {
12698                return 9;
12699            }
12700            if let Some(_) = self.last_updated {
12701                return 8;
12702            }
12703            if let Some(_) = self.bonded {
12704                return 7;
12705            }
12706            if let Some(_) = self.data {
12707                return 6;
12708            }
12709            if let Some(_) = self.name {
12710                return 5;
12711            }
12712            if let Some(_) = self.advertising_data {
12713                return 4;
12714            }
12715            if let Some(_) = self.rssi {
12716                return 3;
12717            }
12718            if let Some(_) = self.connectable {
12719                return 2;
12720            }
12721            if let Some(_) = self.id {
12722                return 1;
12723            }
12724            0
12725        }
12726    }
12727
12728    impl fidl::encoding::ValueTypeMarker for Peer {
12729        type Borrowed<'a> = &'a Self;
12730        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12731            value
12732        }
12733    }
12734
12735    unsafe impl fidl::encoding::TypeMarker for Peer {
12736        type Owned = Self;
12737
12738        #[inline(always)]
12739        fn inline_align(_context: fidl::encoding::Context) -> usize {
12740            8
12741        }
12742
12743        #[inline(always)]
12744        fn inline_size(_context: fidl::encoding::Context) -> usize {
12745            16
12746        }
12747    }
12748
12749    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Peer, D> for &Peer {
12750        unsafe fn encode(
12751            self,
12752            encoder: &mut fidl::encoding::Encoder<'_, D>,
12753            offset: usize,
12754            mut depth: fidl::encoding::Depth,
12755        ) -> fidl::Result<()> {
12756            encoder.debug_check_bounds::<Peer>(offset);
12757            // Vector header
12758            let max_ordinal: u64 = self.max_ordinal_present();
12759            encoder.write_num(max_ordinal, offset);
12760            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12761            // Calling encoder.out_of_line_offset(0) is not allowed.
12762            if max_ordinal == 0 {
12763                return Ok(());
12764            }
12765            depth.increment()?;
12766            let envelope_size = 8;
12767            let bytes_len = max_ordinal as usize * envelope_size;
12768            #[allow(unused_variables)]
12769            let offset = encoder.out_of_line_offset(bytes_len);
12770            let mut _prev_end_offset: usize = 0;
12771            if 1 > max_ordinal {
12772                return Ok(());
12773            }
12774
12775            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12776            // are envelope_size bytes.
12777            let cur_offset: usize = (1 - 1) * envelope_size;
12778
12779            // Zero reserved fields.
12780            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12781
12782            // Safety:
12783            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12784            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12785            //   envelope_size bytes, there is always sufficient room.
12786            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::PeerId, D>(
12787            self.id.as_ref().map(<fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
12788            encoder, offset + cur_offset, depth
12789        )?;
12790
12791            _prev_end_offset = cur_offset + envelope_size;
12792            if 2 > max_ordinal {
12793                return Ok(());
12794            }
12795
12796            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12797            // are envelope_size bytes.
12798            let cur_offset: usize = (2 - 1) * envelope_size;
12799
12800            // Zero reserved fields.
12801            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12802
12803            // Safety:
12804            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12805            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12806            //   envelope_size bytes, there is always sufficient room.
12807            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12808                self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12809                encoder,
12810                offset + cur_offset,
12811                depth,
12812            )?;
12813
12814            _prev_end_offset = cur_offset + envelope_size;
12815            if 3 > max_ordinal {
12816                return Ok(());
12817            }
12818
12819            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12820            // are envelope_size bytes.
12821            let cur_offset: usize = (3 - 1) * envelope_size;
12822
12823            // Zero reserved fields.
12824            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12825
12826            // Safety:
12827            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12828            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12829            //   envelope_size bytes, there is always sufficient room.
12830            fidl::encoding::encode_in_envelope_optional::<i8, D>(
12831                self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
12832                encoder,
12833                offset + cur_offset,
12834                depth,
12835            )?;
12836
12837            _prev_end_offset = cur_offset + envelope_size;
12838            if 4 > max_ordinal {
12839                return Ok(());
12840            }
12841
12842            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12843            // are envelope_size bytes.
12844            let cur_offset: usize = (4 - 1) * envelope_size;
12845
12846            // Zero reserved fields.
12847            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12848
12849            // Safety:
12850            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12851            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12852            //   envelope_size bytes, there is always sufficient room.
12853            fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
12854                self.advertising_data
12855                    .as_ref()
12856                    .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
12857                encoder,
12858                offset + cur_offset,
12859                depth,
12860            )?;
12861
12862            _prev_end_offset = cur_offset + envelope_size;
12863            if 5 > max_ordinal {
12864                return Ok(());
12865            }
12866
12867            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12868            // are envelope_size bytes.
12869            let cur_offset: usize = (5 - 1) * envelope_size;
12870
12871            // Zero reserved fields.
12872            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12873
12874            // Safety:
12875            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12876            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12877            //   envelope_size bytes, there is always sufficient room.
12878            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
12879                self.name.as_ref().map(
12880                    <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
12881                ),
12882                encoder,
12883                offset + cur_offset,
12884                depth,
12885            )?;
12886
12887            _prev_end_offset = cur_offset + envelope_size;
12888            if 6 > max_ordinal {
12889                return Ok(());
12890            }
12891
12892            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12893            // are envelope_size bytes.
12894            let cur_offset: usize = (6 - 1) * envelope_size;
12895
12896            // Zero reserved fields.
12897            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12898
12899            // Safety:
12900            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12901            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12902            //   envelope_size bytes, there is always sufficient room.
12903            fidl::encoding::encode_in_envelope_optional::<ScanData, D>(
12904                self.data.as_ref().map(<ScanData as fidl::encoding::ValueTypeMarker>::borrow),
12905                encoder,
12906                offset + cur_offset,
12907                depth,
12908            )?;
12909
12910            _prev_end_offset = cur_offset + envelope_size;
12911            if 7 > max_ordinal {
12912                return Ok(());
12913            }
12914
12915            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12916            // are envelope_size bytes.
12917            let cur_offset: usize = (7 - 1) * envelope_size;
12918
12919            // Zero reserved fields.
12920            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12921
12922            // Safety:
12923            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12924            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12925            //   envelope_size bytes, there is always sufficient room.
12926            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12927                self.bonded.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12928                encoder,
12929                offset + cur_offset,
12930                depth,
12931            )?;
12932
12933            _prev_end_offset = cur_offset + envelope_size;
12934            if 8 > max_ordinal {
12935                return Ok(());
12936            }
12937
12938            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12939            // are envelope_size bytes.
12940            let cur_offset: usize = (8 - 1) * envelope_size;
12941
12942            // Zero reserved fields.
12943            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12944
12945            // Safety:
12946            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12947            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12948            //   envelope_size bytes, there is always sufficient room.
12949            fidl::encoding::encode_in_envelope_optional::<i64, D>(
12950                self.last_updated.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12951                encoder,
12952                offset + cur_offset,
12953                depth,
12954            )?;
12955
12956            _prev_end_offset = cur_offset + envelope_size;
12957            if 9 > max_ordinal {
12958                return Ok(());
12959            }
12960
12961            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12962            // are envelope_size bytes.
12963            let cur_offset: usize = (9 - 1) * envelope_size;
12964
12965            // Zero reserved fields.
12966            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12967
12968            // Safety:
12969            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12970            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12971            //   envelope_size bytes, there is always sufficient room.
12972            fidl::encoding::encode_in_envelope_optional::<u8, D>(
12973                self.advertising_sid.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
12974                encoder,
12975                offset + cur_offset,
12976                depth,
12977            )?;
12978
12979            _prev_end_offset = cur_offset + envelope_size;
12980            if 10 > max_ordinal {
12981                return Ok(());
12982            }
12983
12984            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12985            // are envelope_size bytes.
12986            let cur_offset: usize = (10 - 1) * envelope_size;
12987
12988            // Zero reserved fields.
12989            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12990
12991            // Safety:
12992            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12993            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12994            //   envelope_size bytes, there is always sufficient room.
12995            fidl::encoding::encode_in_envelope_optional::<u16, D>(
12996                self.periodic_advertising_interval
12997                    .as_ref()
12998                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
12999                encoder,
13000                offset + cur_offset,
13001                depth,
13002            )?;
13003
13004            _prev_end_offset = cur_offset + envelope_size;
13005
13006            Ok(())
13007        }
13008    }
13009
13010    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Peer {
13011        #[inline(always)]
13012        fn new_empty() -> Self {
13013            Self::default()
13014        }
13015
13016        unsafe fn decode(
13017            &mut self,
13018            decoder: &mut fidl::encoding::Decoder<'_, D>,
13019            offset: usize,
13020            mut depth: fidl::encoding::Depth,
13021        ) -> fidl::Result<()> {
13022            decoder.debug_check_bounds::<Self>(offset);
13023            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13024                None => return Err(fidl::Error::NotNullable),
13025                Some(len) => len,
13026            };
13027            // Calling decoder.out_of_line_offset(0) is not allowed.
13028            if len == 0 {
13029                return Ok(());
13030            };
13031            depth.increment()?;
13032            let envelope_size = 8;
13033            let bytes_len = len * envelope_size;
13034            let offset = decoder.out_of_line_offset(bytes_len)?;
13035            // Decode the envelope for each type.
13036            let mut _next_ordinal_to_read = 0;
13037            let mut next_offset = offset;
13038            let end_offset = offset + bytes_len;
13039            _next_ordinal_to_read += 1;
13040            if next_offset >= end_offset {
13041                return Ok(());
13042            }
13043
13044            // Decode unknown envelopes for gaps in ordinals.
13045            while _next_ordinal_to_read < 1 {
13046                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13047                _next_ordinal_to_read += 1;
13048                next_offset += envelope_size;
13049            }
13050
13051            let next_out_of_line = decoder.next_out_of_line();
13052            let handles_before = decoder.remaining_handles();
13053            if let Some((inlined, num_bytes, num_handles)) =
13054                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13055            {
13056                let member_inline_size = <fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13057                if inlined != (member_inline_size <= 4) {
13058                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13059                }
13060                let inner_offset;
13061                let mut inner_depth = depth.clone();
13062                if inlined {
13063                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13064                    inner_offset = next_offset;
13065                } else {
13066                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13067                    inner_depth.increment()?;
13068                }
13069                let val_ref = self.id.get_or_insert_with(|| {
13070                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::PeerId, D)
13071                });
13072                fidl::decode!(
13073                    fidl_fuchsia_bluetooth__common::PeerId,
13074                    D,
13075                    val_ref,
13076                    decoder,
13077                    inner_offset,
13078                    inner_depth
13079                )?;
13080                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13081                {
13082                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13083                }
13084                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13085                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13086                }
13087            }
13088
13089            next_offset += envelope_size;
13090            _next_ordinal_to_read += 1;
13091            if next_offset >= end_offset {
13092                return Ok(());
13093            }
13094
13095            // Decode unknown envelopes for gaps in ordinals.
13096            while _next_ordinal_to_read < 2 {
13097                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13098                _next_ordinal_to_read += 1;
13099                next_offset += envelope_size;
13100            }
13101
13102            let next_out_of_line = decoder.next_out_of_line();
13103            let handles_before = decoder.remaining_handles();
13104            if let Some((inlined, num_bytes, num_handles)) =
13105                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13106            {
13107                let member_inline_size =
13108                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13109                if inlined != (member_inline_size <= 4) {
13110                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13111                }
13112                let inner_offset;
13113                let mut inner_depth = depth.clone();
13114                if inlined {
13115                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13116                    inner_offset = next_offset;
13117                } else {
13118                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13119                    inner_depth.increment()?;
13120                }
13121                let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
13122                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13123                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13124                {
13125                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13126                }
13127                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13128                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13129                }
13130            }
13131
13132            next_offset += envelope_size;
13133            _next_ordinal_to_read += 1;
13134            if next_offset >= end_offset {
13135                return Ok(());
13136            }
13137
13138            // Decode unknown envelopes for gaps in ordinals.
13139            while _next_ordinal_to_read < 3 {
13140                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13141                _next_ordinal_to_read += 1;
13142                next_offset += envelope_size;
13143            }
13144
13145            let next_out_of_line = decoder.next_out_of_line();
13146            let handles_before = decoder.remaining_handles();
13147            if let Some((inlined, num_bytes, num_handles)) =
13148                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13149            {
13150                let member_inline_size =
13151                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13152                if inlined != (member_inline_size <= 4) {
13153                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13154                }
13155                let inner_offset;
13156                let mut inner_depth = depth.clone();
13157                if inlined {
13158                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13159                    inner_offset = next_offset;
13160                } else {
13161                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13162                    inner_depth.increment()?;
13163                }
13164                let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
13165                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
13166                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13167                {
13168                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13169                }
13170                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13171                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13172                }
13173            }
13174
13175            next_offset += envelope_size;
13176            _next_ordinal_to_read += 1;
13177            if next_offset >= end_offset {
13178                return Ok(());
13179            }
13180
13181            // Decode unknown envelopes for gaps in ordinals.
13182            while _next_ordinal_to_read < 4 {
13183                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13184                _next_ordinal_to_read += 1;
13185                next_offset += envelope_size;
13186            }
13187
13188            let next_out_of_line = decoder.next_out_of_line();
13189            let handles_before = decoder.remaining_handles();
13190            if let Some((inlined, num_bytes, num_handles)) =
13191                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13192            {
13193                let member_inline_size =
13194                    <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13195                if inlined != (member_inline_size <= 4) {
13196                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13197                }
13198                let inner_offset;
13199                let mut inner_depth = depth.clone();
13200                if inlined {
13201                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13202                    inner_offset = next_offset;
13203                } else {
13204                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13205                    inner_depth.increment()?;
13206                }
13207                let val_ref = self
13208                    .advertising_data
13209                    .get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
13210                fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
13211                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13212                {
13213                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13214                }
13215                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13216                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13217                }
13218            }
13219
13220            next_offset += envelope_size;
13221            _next_ordinal_to_read += 1;
13222            if next_offset >= end_offset {
13223                return Ok(());
13224            }
13225
13226            // Decode unknown envelopes for gaps in ordinals.
13227            while _next_ordinal_to_read < 5 {
13228                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13229                _next_ordinal_to_read += 1;
13230                next_offset += envelope_size;
13231            }
13232
13233            let next_out_of_line = decoder.next_out_of_line();
13234            let handles_before = decoder.remaining_handles();
13235            if let Some((inlined, num_bytes, num_handles)) =
13236                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13237            {
13238                let member_inline_size =
13239                    <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
13240                        decoder.context,
13241                    );
13242                if inlined != (member_inline_size <= 4) {
13243                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13244                }
13245                let inner_offset;
13246                let mut inner_depth = depth.clone();
13247                if inlined {
13248                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13249                    inner_offset = next_offset;
13250                } else {
13251                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13252                    inner_depth.increment()?;
13253                }
13254                let val_ref = self
13255                    .name
13256                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
13257                fidl::decode!(
13258                    fidl::encoding::BoundedString<248>,
13259                    D,
13260                    val_ref,
13261                    decoder,
13262                    inner_offset,
13263                    inner_depth
13264                )?;
13265                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13266                {
13267                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13268                }
13269                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13270                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13271                }
13272            }
13273
13274            next_offset += envelope_size;
13275            _next_ordinal_to_read += 1;
13276            if next_offset >= end_offset {
13277                return Ok(());
13278            }
13279
13280            // Decode unknown envelopes for gaps in ordinals.
13281            while _next_ordinal_to_read < 6 {
13282                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13283                _next_ordinal_to_read += 1;
13284                next_offset += envelope_size;
13285            }
13286
13287            let next_out_of_line = decoder.next_out_of_line();
13288            let handles_before = decoder.remaining_handles();
13289            if let Some((inlined, num_bytes, num_handles)) =
13290                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13291            {
13292                let member_inline_size =
13293                    <ScanData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13294                if inlined != (member_inline_size <= 4) {
13295                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13296                }
13297                let inner_offset;
13298                let mut inner_depth = depth.clone();
13299                if inlined {
13300                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13301                    inner_offset = next_offset;
13302                } else {
13303                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13304                    inner_depth.increment()?;
13305                }
13306                let val_ref = self.data.get_or_insert_with(|| fidl::new_empty!(ScanData, D));
13307                fidl::decode!(ScanData, D, val_ref, decoder, inner_offset, inner_depth)?;
13308                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13309                {
13310                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13311                }
13312                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13313                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13314                }
13315            }
13316
13317            next_offset += envelope_size;
13318            _next_ordinal_to_read += 1;
13319            if next_offset >= end_offset {
13320                return Ok(());
13321            }
13322
13323            // Decode unknown envelopes for gaps in ordinals.
13324            while _next_ordinal_to_read < 7 {
13325                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13326                _next_ordinal_to_read += 1;
13327                next_offset += envelope_size;
13328            }
13329
13330            let next_out_of_line = decoder.next_out_of_line();
13331            let handles_before = decoder.remaining_handles();
13332            if let Some((inlined, num_bytes, num_handles)) =
13333                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13334            {
13335                let member_inline_size =
13336                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13337                if inlined != (member_inline_size <= 4) {
13338                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13339                }
13340                let inner_offset;
13341                let mut inner_depth = depth.clone();
13342                if inlined {
13343                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13344                    inner_offset = next_offset;
13345                } else {
13346                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13347                    inner_depth.increment()?;
13348                }
13349                let val_ref = self.bonded.get_or_insert_with(|| fidl::new_empty!(bool, D));
13350                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13351                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13352                {
13353                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13354                }
13355                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13356                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13357                }
13358            }
13359
13360            next_offset += envelope_size;
13361            _next_ordinal_to_read += 1;
13362            if next_offset >= end_offset {
13363                return Ok(());
13364            }
13365
13366            // Decode unknown envelopes for gaps in ordinals.
13367            while _next_ordinal_to_read < 8 {
13368                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13369                _next_ordinal_to_read += 1;
13370                next_offset += envelope_size;
13371            }
13372
13373            let next_out_of_line = decoder.next_out_of_line();
13374            let handles_before = decoder.remaining_handles();
13375            if let Some((inlined, num_bytes, num_handles)) =
13376                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13377            {
13378                let member_inline_size =
13379                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13380                if inlined != (member_inline_size <= 4) {
13381                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13382                }
13383                let inner_offset;
13384                let mut inner_depth = depth.clone();
13385                if inlined {
13386                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13387                    inner_offset = next_offset;
13388                } else {
13389                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13390                    inner_depth.increment()?;
13391                }
13392                let val_ref = self.last_updated.get_or_insert_with(|| fidl::new_empty!(i64, D));
13393                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
13394                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13395                {
13396                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13397                }
13398                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13399                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13400                }
13401            }
13402
13403            next_offset += envelope_size;
13404            _next_ordinal_to_read += 1;
13405            if next_offset >= end_offset {
13406                return Ok(());
13407            }
13408
13409            // Decode unknown envelopes for gaps in ordinals.
13410            while _next_ordinal_to_read < 9 {
13411                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13412                _next_ordinal_to_read += 1;
13413                next_offset += envelope_size;
13414            }
13415
13416            let next_out_of_line = decoder.next_out_of_line();
13417            let handles_before = decoder.remaining_handles();
13418            if let Some((inlined, num_bytes, num_handles)) =
13419                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13420            {
13421                let member_inline_size =
13422                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13423                if inlined != (member_inline_size <= 4) {
13424                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13425                }
13426                let inner_offset;
13427                let mut inner_depth = depth.clone();
13428                if inlined {
13429                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13430                    inner_offset = next_offset;
13431                } else {
13432                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13433                    inner_depth.increment()?;
13434                }
13435                let val_ref = self.advertising_sid.get_or_insert_with(|| fidl::new_empty!(u8, D));
13436                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
13437                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13438                {
13439                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13440                }
13441                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13442                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13443                }
13444            }
13445
13446            next_offset += envelope_size;
13447            _next_ordinal_to_read += 1;
13448            if next_offset >= end_offset {
13449                return Ok(());
13450            }
13451
13452            // Decode unknown envelopes for gaps in ordinals.
13453            while _next_ordinal_to_read < 10 {
13454                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13455                _next_ordinal_to_read += 1;
13456                next_offset += envelope_size;
13457            }
13458
13459            let next_out_of_line = decoder.next_out_of_line();
13460            let handles_before = decoder.remaining_handles();
13461            if let Some((inlined, num_bytes, num_handles)) =
13462                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13463            {
13464                let member_inline_size =
13465                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13466                if inlined != (member_inline_size <= 4) {
13467                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13468                }
13469                let inner_offset;
13470                let mut inner_depth = depth.clone();
13471                if inlined {
13472                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13473                    inner_offset = next_offset;
13474                } else {
13475                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13476                    inner_depth.increment()?;
13477                }
13478                let val_ref = self
13479                    .periodic_advertising_interval
13480                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
13481                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13482                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13483                {
13484                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13485                }
13486                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13487                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13488                }
13489            }
13490
13491            next_offset += envelope_size;
13492
13493            // Decode the remaining unknown envelopes.
13494            while next_offset < end_offset {
13495                _next_ordinal_to_read += 1;
13496                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13497                next_offset += envelope_size;
13498            }
13499
13500            Ok(())
13501        }
13502    }
13503
13504    impl PeriodicAdvertisingReport {
13505        #[inline(always)]
13506        fn max_ordinal_present(&self) -> u64 {
13507            if let Some(_) = self.timestamp {
13508                return 5;
13509            }
13510            if let Some(_) = self.subevent {
13511                return 4;
13512            }
13513            if let Some(_) = self.event_counter {
13514                return 3;
13515            }
13516            if let Some(_) = self.data {
13517                return 2;
13518            }
13519            if let Some(_) = self.rssi {
13520                return 1;
13521            }
13522            0
13523        }
13524    }
13525
13526    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingReport {
13527        type Borrowed<'a> = &'a Self;
13528        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13529            value
13530        }
13531    }
13532
13533    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingReport {
13534        type Owned = Self;
13535
13536        #[inline(always)]
13537        fn inline_align(_context: fidl::encoding::Context) -> usize {
13538            8
13539        }
13540
13541        #[inline(always)]
13542        fn inline_size(_context: fidl::encoding::Context) -> usize {
13543            16
13544        }
13545    }
13546
13547    unsafe impl<D: fidl::encoding::ResourceDialect>
13548        fidl::encoding::Encode<PeriodicAdvertisingReport, D> for &PeriodicAdvertisingReport
13549    {
13550        unsafe fn encode(
13551            self,
13552            encoder: &mut fidl::encoding::Encoder<'_, D>,
13553            offset: usize,
13554            mut depth: fidl::encoding::Depth,
13555        ) -> fidl::Result<()> {
13556            encoder.debug_check_bounds::<PeriodicAdvertisingReport>(offset);
13557            // Vector header
13558            let max_ordinal: u64 = self.max_ordinal_present();
13559            encoder.write_num(max_ordinal, offset);
13560            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13561            // Calling encoder.out_of_line_offset(0) is not allowed.
13562            if max_ordinal == 0 {
13563                return Ok(());
13564            }
13565            depth.increment()?;
13566            let envelope_size = 8;
13567            let bytes_len = max_ordinal as usize * envelope_size;
13568            #[allow(unused_variables)]
13569            let offset = encoder.out_of_line_offset(bytes_len);
13570            let mut _prev_end_offset: usize = 0;
13571            if 1 > max_ordinal {
13572                return Ok(());
13573            }
13574
13575            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13576            // are envelope_size bytes.
13577            let cur_offset: usize = (1 - 1) * envelope_size;
13578
13579            // Zero reserved fields.
13580            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13581
13582            // Safety:
13583            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13584            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13585            //   envelope_size bytes, there is always sufficient room.
13586            fidl::encoding::encode_in_envelope_optional::<i8, D>(
13587                self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
13588                encoder,
13589                offset + cur_offset,
13590                depth,
13591            )?;
13592
13593            _prev_end_offset = cur_offset + envelope_size;
13594            if 2 > max_ordinal {
13595                return Ok(());
13596            }
13597
13598            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13599            // are envelope_size bytes.
13600            let cur_offset: usize = (2 - 1) * envelope_size;
13601
13602            // Zero reserved fields.
13603            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13604
13605            // Safety:
13606            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13607            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13608            //   envelope_size bytes, there is always sufficient room.
13609            fidl::encoding::encode_in_envelope_optional::<ScanData, D>(
13610                self.data.as_ref().map(<ScanData as fidl::encoding::ValueTypeMarker>::borrow),
13611                encoder,
13612                offset + cur_offset,
13613                depth,
13614            )?;
13615
13616            _prev_end_offset = cur_offset + envelope_size;
13617            if 3 > max_ordinal {
13618                return Ok(());
13619            }
13620
13621            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13622            // are envelope_size bytes.
13623            let cur_offset: usize = (3 - 1) * envelope_size;
13624
13625            // Zero reserved fields.
13626            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13627
13628            // Safety:
13629            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13630            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13631            //   envelope_size bytes, there is always sufficient room.
13632            fidl::encoding::encode_in_envelope_optional::<u16, D>(
13633                self.event_counter.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13634                encoder,
13635                offset + cur_offset,
13636                depth,
13637            )?;
13638
13639            _prev_end_offset = cur_offset + envelope_size;
13640            if 4 > max_ordinal {
13641                return Ok(());
13642            }
13643
13644            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13645            // are envelope_size bytes.
13646            let cur_offset: usize = (4 - 1) * envelope_size;
13647
13648            // Zero reserved fields.
13649            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13650
13651            // Safety:
13652            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13653            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13654            //   envelope_size bytes, there is always sufficient room.
13655            fidl::encoding::encode_in_envelope_optional::<u8, D>(
13656                self.subevent.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13657                encoder,
13658                offset + cur_offset,
13659                depth,
13660            )?;
13661
13662            _prev_end_offset = cur_offset + envelope_size;
13663            if 5 > max_ordinal {
13664                return Ok(());
13665            }
13666
13667            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13668            // are envelope_size bytes.
13669            let cur_offset: usize = (5 - 1) * envelope_size;
13670
13671            // Zero reserved fields.
13672            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13673
13674            // Safety:
13675            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13676            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13677            //   envelope_size bytes, there is always sufficient room.
13678            fidl::encoding::encode_in_envelope_optional::<i64, D>(
13679                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
13680                encoder,
13681                offset + cur_offset,
13682                depth,
13683            )?;
13684
13685            _prev_end_offset = cur_offset + envelope_size;
13686
13687            Ok(())
13688        }
13689    }
13690
13691    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13692        for PeriodicAdvertisingReport
13693    {
13694        #[inline(always)]
13695        fn new_empty() -> Self {
13696            Self::default()
13697        }
13698
13699        unsafe fn decode(
13700            &mut self,
13701            decoder: &mut fidl::encoding::Decoder<'_, D>,
13702            offset: usize,
13703            mut depth: fidl::encoding::Depth,
13704        ) -> fidl::Result<()> {
13705            decoder.debug_check_bounds::<Self>(offset);
13706            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13707                None => return Err(fidl::Error::NotNullable),
13708                Some(len) => len,
13709            };
13710            // Calling decoder.out_of_line_offset(0) is not allowed.
13711            if len == 0 {
13712                return Ok(());
13713            };
13714            depth.increment()?;
13715            let envelope_size = 8;
13716            let bytes_len = len * envelope_size;
13717            let offset = decoder.out_of_line_offset(bytes_len)?;
13718            // Decode the envelope for each type.
13719            let mut _next_ordinal_to_read = 0;
13720            let mut next_offset = offset;
13721            let end_offset = offset + bytes_len;
13722            _next_ordinal_to_read += 1;
13723            if next_offset >= end_offset {
13724                return Ok(());
13725            }
13726
13727            // Decode unknown envelopes for gaps in ordinals.
13728            while _next_ordinal_to_read < 1 {
13729                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13730                _next_ordinal_to_read += 1;
13731                next_offset += envelope_size;
13732            }
13733
13734            let next_out_of_line = decoder.next_out_of_line();
13735            let handles_before = decoder.remaining_handles();
13736            if let Some((inlined, num_bytes, num_handles)) =
13737                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13738            {
13739                let member_inline_size =
13740                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13741                if inlined != (member_inline_size <= 4) {
13742                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13743                }
13744                let inner_offset;
13745                let mut inner_depth = depth.clone();
13746                if inlined {
13747                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13748                    inner_offset = next_offset;
13749                } else {
13750                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13751                    inner_depth.increment()?;
13752                }
13753                let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
13754                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
13755                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13756                {
13757                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13758                }
13759                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13760                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13761                }
13762            }
13763
13764            next_offset += envelope_size;
13765            _next_ordinal_to_read += 1;
13766            if next_offset >= end_offset {
13767                return Ok(());
13768            }
13769
13770            // Decode unknown envelopes for gaps in ordinals.
13771            while _next_ordinal_to_read < 2 {
13772                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13773                _next_ordinal_to_read += 1;
13774                next_offset += envelope_size;
13775            }
13776
13777            let next_out_of_line = decoder.next_out_of_line();
13778            let handles_before = decoder.remaining_handles();
13779            if let Some((inlined, num_bytes, num_handles)) =
13780                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13781            {
13782                let member_inline_size =
13783                    <ScanData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13784                if inlined != (member_inline_size <= 4) {
13785                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13786                }
13787                let inner_offset;
13788                let mut inner_depth = depth.clone();
13789                if inlined {
13790                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13791                    inner_offset = next_offset;
13792                } else {
13793                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13794                    inner_depth.increment()?;
13795                }
13796                let val_ref = self.data.get_or_insert_with(|| fidl::new_empty!(ScanData, D));
13797                fidl::decode!(ScanData, D, val_ref, decoder, inner_offset, inner_depth)?;
13798                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13799                {
13800                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13801                }
13802                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13803                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13804                }
13805            }
13806
13807            next_offset += envelope_size;
13808            _next_ordinal_to_read += 1;
13809            if next_offset >= end_offset {
13810                return Ok(());
13811            }
13812
13813            // Decode unknown envelopes for gaps in ordinals.
13814            while _next_ordinal_to_read < 3 {
13815                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13816                _next_ordinal_to_read += 1;
13817                next_offset += envelope_size;
13818            }
13819
13820            let next_out_of_line = decoder.next_out_of_line();
13821            let handles_before = decoder.remaining_handles();
13822            if let Some((inlined, num_bytes, num_handles)) =
13823                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13824            {
13825                let member_inline_size =
13826                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13827                if inlined != (member_inline_size <= 4) {
13828                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13829                }
13830                let inner_offset;
13831                let mut inner_depth = depth.clone();
13832                if inlined {
13833                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13834                    inner_offset = next_offset;
13835                } else {
13836                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13837                    inner_depth.increment()?;
13838                }
13839                let val_ref = self.event_counter.get_or_insert_with(|| fidl::new_empty!(u16, D));
13840                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13841                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13842                {
13843                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13844                }
13845                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13846                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13847                }
13848            }
13849
13850            next_offset += envelope_size;
13851            _next_ordinal_to_read += 1;
13852            if next_offset >= end_offset {
13853                return Ok(());
13854            }
13855
13856            // Decode unknown envelopes for gaps in ordinals.
13857            while _next_ordinal_to_read < 4 {
13858                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13859                _next_ordinal_to_read += 1;
13860                next_offset += envelope_size;
13861            }
13862
13863            let next_out_of_line = decoder.next_out_of_line();
13864            let handles_before = decoder.remaining_handles();
13865            if let Some((inlined, num_bytes, num_handles)) =
13866                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13867            {
13868                let member_inline_size =
13869                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13870                if inlined != (member_inline_size <= 4) {
13871                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13872                }
13873                let inner_offset;
13874                let mut inner_depth = depth.clone();
13875                if inlined {
13876                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13877                    inner_offset = next_offset;
13878                } else {
13879                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13880                    inner_depth.increment()?;
13881                }
13882                let val_ref = self.subevent.get_or_insert_with(|| fidl::new_empty!(u8, D));
13883                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
13884                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13885                {
13886                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13887                }
13888                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13889                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13890                }
13891            }
13892
13893            next_offset += envelope_size;
13894            _next_ordinal_to_read += 1;
13895            if next_offset >= end_offset {
13896                return Ok(());
13897            }
13898
13899            // Decode unknown envelopes for gaps in ordinals.
13900            while _next_ordinal_to_read < 5 {
13901                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13902                _next_ordinal_to_read += 1;
13903                next_offset += envelope_size;
13904            }
13905
13906            let next_out_of_line = decoder.next_out_of_line();
13907            let handles_before = decoder.remaining_handles();
13908            if let Some((inlined, num_bytes, num_handles)) =
13909                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13910            {
13911                let member_inline_size =
13912                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13913                if inlined != (member_inline_size <= 4) {
13914                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13915                }
13916                let inner_offset;
13917                let mut inner_depth = depth.clone();
13918                if inlined {
13919                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13920                    inner_offset = next_offset;
13921                } else {
13922                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13923                    inner_depth.increment()?;
13924                }
13925                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
13926                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
13927                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13928                {
13929                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13930                }
13931                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13932                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13933                }
13934            }
13935
13936            next_offset += envelope_size;
13937
13938            // Decode the remaining unknown envelopes.
13939            while next_offset < end_offset {
13940                _next_ordinal_to_read += 1;
13941                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13942                next_offset += envelope_size;
13943            }
13944
13945            Ok(())
13946        }
13947    }
13948
13949    impl PeriodicAdvertisingSyncConfiguration {
13950        #[inline(always)]
13951        fn max_ordinal_present(&self) -> u64 {
13952            if let Some(_) = self.filter_duplicates {
13953                return 1;
13954            }
13955            0
13956        }
13957    }
13958
13959    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncConfiguration {
13960        type Borrowed<'a> = &'a Self;
13961        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13962            value
13963        }
13964    }
13965
13966    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncConfiguration {
13967        type Owned = Self;
13968
13969        #[inline(always)]
13970        fn inline_align(_context: fidl::encoding::Context) -> usize {
13971            8
13972        }
13973
13974        #[inline(always)]
13975        fn inline_size(_context: fidl::encoding::Context) -> usize {
13976            16
13977        }
13978    }
13979
13980    unsafe impl<D: fidl::encoding::ResourceDialect>
13981        fidl::encoding::Encode<PeriodicAdvertisingSyncConfiguration, D>
13982        for &PeriodicAdvertisingSyncConfiguration
13983    {
13984        unsafe fn encode(
13985            self,
13986            encoder: &mut fidl::encoding::Encoder<'_, D>,
13987            offset: usize,
13988            mut depth: fidl::encoding::Depth,
13989        ) -> fidl::Result<()> {
13990            encoder.debug_check_bounds::<PeriodicAdvertisingSyncConfiguration>(offset);
13991            // Vector header
13992            let max_ordinal: u64 = self.max_ordinal_present();
13993            encoder.write_num(max_ordinal, offset);
13994            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13995            // Calling encoder.out_of_line_offset(0) is not allowed.
13996            if max_ordinal == 0 {
13997                return Ok(());
13998            }
13999            depth.increment()?;
14000            let envelope_size = 8;
14001            let bytes_len = max_ordinal as usize * envelope_size;
14002            #[allow(unused_variables)]
14003            let offset = encoder.out_of_line_offset(bytes_len);
14004            let mut _prev_end_offset: usize = 0;
14005            if 1 > max_ordinal {
14006                return Ok(());
14007            }
14008
14009            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14010            // are envelope_size bytes.
14011            let cur_offset: usize = (1 - 1) * envelope_size;
14012
14013            // Zero reserved fields.
14014            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14015
14016            // Safety:
14017            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14018            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14019            //   envelope_size bytes, there is always sufficient room.
14020            fidl::encoding::encode_in_envelope_optional::<bool, D>(
14021                self.filter_duplicates
14022                    .as_ref()
14023                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14024                encoder,
14025                offset + cur_offset,
14026                depth,
14027            )?;
14028
14029            _prev_end_offset = cur_offset + envelope_size;
14030
14031            Ok(())
14032        }
14033    }
14034
14035    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14036        for PeriodicAdvertisingSyncConfiguration
14037    {
14038        #[inline(always)]
14039        fn new_empty() -> Self {
14040            Self::default()
14041        }
14042
14043        unsafe fn decode(
14044            &mut self,
14045            decoder: &mut fidl::encoding::Decoder<'_, D>,
14046            offset: usize,
14047            mut depth: fidl::encoding::Depth,
14048        ) -> fidl::Result<()> {
14049            decoder.debug_check_bounds::<Self>(offset);
14050            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14051                None => return Err(fidl::Error::NotNullable),
14052                Some(len) => len,
14053            };
14054            // Calling decoder.out_of_line_offset(0) is not allowed.
14055            if len == 0 {
14056                return Ok(());
14057            };
14058            depth.increment()?;
14059            let envelope_size = 8;
14060            let bytes_len = len * envelope_size;
14061            let offset = decoder.out_of_line_offset(bytes_len)?;
14062            // Decode the envelope for each type.
14063            let mut _next_ordinal_to_read = 0;
14064            let mut next_offset = offset;
14065            let end_offset = offset + bytes_len;
14066            _next_ordinal_to_read += 1;
14067            if next_offset >= end_offset {
14068                return Ok(());
14069            }
14070
14071            // Decode unknown envelopes for gaps in ordinals.
14072            while _next_ordinal_to_read < 1 {
14073                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14074                _next_ordinal_to_read += 1;
14075                next_offset += envelope_size;
14076            }
14077
14078            let next_out_of_line = decoder.next_out_of_line();
14079            let handles_before = decoder.remaining_handles();
14080            if let Some((inlined, num_bytes, num_handles)) =
14081                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14082            {
14083                let member_inline_size =
14084                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14085                if inlined != (member_inline_size <= 4) {
14086                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14087                }
14088                let inner_offset;
14089                let mut inner_depth = depth.clone();
14090                if inlined {
14091                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14092                    inner_offset = next_offset;
14093                } else {
14094                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14095                    inner_depth.increment()?;
14096                }
14097                let val_ref =
14098                    self.filter_duplicates.get_or_insert_with(|| fidl::new_empty!(bool, D));
14099                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14100                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14101                {
14102                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14103                }
14104                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14105                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14106                }
14107            }
14108
14109            next_offset += envelope_size;
14110
14111            // Decode the remaining unknown envelopes.
14112            while next_offset < end_offset {
14113                _next_ordinal_to_read += 1;
14114                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14115                next_offset += envelope_size;
14116            }
14117
14118            Ok(())
14119        }
14120    }
14121
14122    impl PeriodicAdvertisingSyncOnEstablishedRequest {
14123        #[inline(always)]
14124        fn max_ordinal_present(&self) -> u64 {
14125            if let Some(_) = self.periodic_advertising_interval {
14126                return 7;
14127            }
14128            if let Some(_) = self.phy {
14129                return 6;
14130            }
14131            if let Some(_) = self.advertising_sid {
14132                return 5;
14133            }
14134            if let Some(_) = self.service_data {
14135                return 4;
14136            }
14137            if let Some(_) = self.peer_id {
14138                return 3;
14139            }
14140            if let Some(_) = self.subevents_count {
14141                return 2;
14142            }
14143            if let Some(_) = self.id {
14144                return 1;
14145            }
14146            0
14147        }
14148    }
14149
14150    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncOnEstablishedRequest {
14151        type Borrowed<'a> = &'a Self;
14152        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14153            value
14154        }
14155    }
14156
14157    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncOnEstablishedRequest {
14158        type Owned = Self;
14159
14160        #[inline(always)]
14161        fn inline_align(_context: fidl::encoding::Context) -> usize {
14162            8
14163        }
14164
14165        #[inline(always)]
14166        fn inline_size(_context: fidl::encoding::Context) -> usize {
14167            16
14168        }
14169    }
14170
14171    unsafe impl<D: fidl::encoding::ResourceDialect>
14172        fidl::encoding::Encode<PeriodicAdvertisingSyncOnEstablishedRequest, D>
14173        for &PeriodicAdvertisingSyncOnEstablishedRequest
14174    {
14175        unsafe fn encode(
14176            self,
14177            encoder: &mut fidl::encoding::Encoder<'_, D>,
14178            offset: usize,
14179            mut depth: fidl::encoding::Depth,
14180        ) -> fidl::Result<()> {
14181            encoder.debug_check_bounds::<PeriodicAdvertisingSyncOnEstablishedRequest>(offset);
14182            // Vector header
14183            let max_ordinal: u64 = self.max_ordinal_present();
14184            encoder.write_num(max_ordinal, offset);
14185            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14186            // Calling encoder.out_of_line_offset(0) is not allowed.
14187            if max_ordinal == 0 {
14188                return Ok(());
14189            }
14190            depth.increment()?;
14191            let envelope_size = 8;
14192            let bytes_len = max_ordinal as usize * envelope_size;
14193            #[allow(unused_variables)]
14194            let offset = encoder.out_of_line_offset(bytes_len);
14195            let mut _prev_end_offset: usize = 0;
14196            if 1 > max_ordinal {
14197                return Ok(());
14198            }
14199
14200            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14201            // are envelope_size bytes.
14202            let cur_offset: usize = (1 - 1) * envelope_size;
14203
14204            // Zero reserved fields.
14205            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14206
14207            // Safety:
14208            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14209            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14210            //   envelope_size bytes, there is always sufficient room.
14211            fidl::encoding::encode_in_envelope_optional::<PeriodicAdvertisingSyncId, D>(
14212                self.id
14213                    .as_ref()
14214                    .map(<PeriodicAdvertisingSyncId as fidl::encoding::ValueTypeMarker>::borrow),
14215                encoder,
14216                offset + cur_offset,
14217                depth,
14218            )?;
14219
14220            _prev_end_offset = cur_offset + envelope_size;
14221            if 2 > max_ordinal {
14222                return Ok(());
14223            }
14224
14225            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14226            // are envelope_size bytes.
14227            let cur_offset: usize = (2 - 1) * envelope_size;
14228
14229            // Zero reserved fields.
14230            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14231
14232            // Safety:
14233            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14234            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14235            //   envelope_size bytes, there is always sufficient room.
14236            fidl::encoding::encode_in_envelope_optional::<u8, D>(
14237                self.subevents_count.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
14238                encoder,
14239                offset + cur_offset,
14240                depth,
14241            )?;
14242
14243            _prev_end_offset = cur_offset + envelope_size;
14244            if 3 > max_ordinal {
14245                return Ok(());
14246            }
14247
14248            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14249            // are envelope_size bytes.
14250            let cur_offset: usize = (3 - 1) * envelope_size;
14251
14252            // Zero reserved fields.
14253            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14254
14255            // Safety:
14256            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14257            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14258            //   envelope_size bytes, there is always sufficient room.
14259            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::PeerId, D>(
14260            self.peer_id.as_ref().map(<fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
14261            encoder, offset + cur_offset, depth
14262        )?;
14263
14264            _prev_end_offset = cur_offset + envelope_size;
14265            if 4 > max_ordinal {
14266                return Ok(());
14267            }
14268
14269            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14270            // are envelope_size bytes.
14271            let cur_offset: usize = (4 - 1) * envelope_size;
14272
14273            // Zero reserved fields.
14274            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14275
14276            // Safety:
14277            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14278            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14279            //   envelope_size bytes, there is always sufficient room.
14280            fidl::encoding::encode_in_envelope_optional::<u16, D>(
14281                self.service_data.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
14282                encoder,
14283                offset + cur_offset,
14284                depth,
14285            )?;
14286
14287            _prev_end_offset = cur_offset + envelope_size;
14288            if 5 > max_ordinal {
14289                return Ok(());
14290            }
14291
14292            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14293            // are envelope_size bytes.
14294            let cur_offset: usize = (5 - 1) * envelope_size;
14295
14296            // Zero reserved fields.
14297            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14298
14299            // Safety:
14300            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14301            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14302            //   envelope_size bytes, there is always sufficient room.
14303            fidl::encoding::encode_in_envelope_optional::<u8, D>(
14304                self.advertising_sid.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
14305                encoder,
14306                offset + cur_offset,
14307                depth,
14308            )?;
14309
14310            _prev_end_offset = cur_offset + envelope_size;
14311            if 6 > max_ordinal {
14312                return Ok(());
14313            }
14314
14315            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14316            // are envelope_size bytes.
14317            let cur_offset: usize = (6 - 1) * envelope_size;
14318
14319            // Zero reserved fields.
14320            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14321
14322            // Safety:
14323            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14324            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14325            //   envelope_size bytes, there is always sufficient room.
14326            fidl::encoding::encode_in_envelope_optional::<PhysicalLayer, D>(
14327                self.phy.as_ref().map(<PhysicalLayer as fidl::encoding::ValueTypeMarker>::borrow),
14328                encoder,
14329                offset + cur_offset,
14330                depth,
14331            )?;
14332
14333            _prev_end_offset = cur_offset + envelope_size;
14334            if 7 > max_ordinal {
14335                return Ok(());
14336            }
14337
14338            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14339            // are envelope_size bytes.
14340            let cur_offset: usize = (7 - 1) * envelope_size;
14341
14342            // Zero reserved fields.
14343            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14344
14345            // Safety:
14346            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14347            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14348            //   envelope_size bytes, there is always sufficient room.
14349            fidl::encoding::encode_in_envelope_optional::<u16, D>(
14350                self.periodic_advertising_interval
14351                    .as_ref()
14352                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
14353                encoder,
14354                offset + cur_offset,
14355                depth,
14356            )?;
14357
14358            _prev_end_offset = cur_offset + envelope_size;
14359
14360            Ok(())
14361        }
14362    }
14363
14364    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14365        for PeriodicAdvertisingSyncOnEstablishedRequest
14366    {
14367        #[inline(always)]
14368        fn new_empty() -> Self {
14369            Self::default()
14370        }
14371
14372        unsafe fn decode(
14373            &mut self,
14374            decoder: &mut fidl::encoding::Decoder<'_, D>,
14375            offset: usize,
14376            mut depth: fidl::encoding::Depth,
14377        ) -> fidl::Result<()> {
14378            decoder.debug_check_bounds::<Self>(offset);
14379            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14380                None => return Err(fidl::Error::NotNullable),
14381                Some(len) => len,
14382            };
14383            // Calling decoder.out_of_line_offset(0) is not allowed.
14384            if len == 0 {
14385                return Ok(());
14386            };
14387            depth.increment()?;
14388            let envelope_size = 8;
14389            let bytes_len = len * envelope_size;
14390            let offset = decoder.out_of_line_offset(bytes_len)?;
14391            // Decode the envelope for each type.
14392            let mut _next_ordinal_to_read = 0;
14393            let mut next_offset = offset;
14394            let end_offset = offset + bytes_len;
14395            _next_ordinal_to_read += 1;
14396            if next_offset >= end_offset {
14397                return Ok(());
14398            }
14399
14400            // Decode unknown envelopes for gaps in ordinals.
14401            while _next_ordinal_to_read < 1 {
14402                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14403                _next_ordinal_to_read += 1;
14404                next_offset += envelope_size;
14405            }
14406
14407            let next_out_of_line = decoder.next_out_of_line();
14408            let handles_before = decoder.remaining_handles();
14409            if let Some((inlined, num_bytes, num_handles)) =
14410                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14411            {
14412                let member_inline_size =
14413                    <PeriodicAdvertisingSyncId as fidl::encoding::TypeMarker>::inline_size(
14414                        decoder.context,
14415                    );
14416                if inlined != (member_inline_size <= 4) {
14417                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14418                }
14419                let inner_offset;
14420                let mut inner_depth = depth.clone();
14421                if inlined {
14422                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14423                    inner_offset = next_offset;
14424                } else {
14425                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14426                    inner_depth.increment()?;
14427                }
14428                let val_ref =
14429                    self.id.get_or_insert_with(|| fidl::new_empty!(PeriodicAdvertisingSyncId, D));
14430                fidl::decode!(
14431                    PeriodicAdvertisingSyncId,
14432                    D,
14433                    val_ref,
14434                    decoder,
14435                    inner_offset,
14436                    inner_depth
14437                )?;
14438                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14439                {
14440                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14441                }
14442                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14443                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14444                }
14445            }
14446
14447            next_offset += envelope_size;
14448            _next_ordinal_to_read += 1;
14449            if next_offset >= end_offset {
14450                return Ok(());
14451            }
14452
14453            // Decode unknown envelopes for gaps in ordinals.
14454            while _next_ordinal_to_read < 2 {
14455                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14456                _next_ordinal_to_read += 1;
14457                next_offset += envelope_size;
14458            }
14459
14460            let next_out_of_line = decoder.next_out_of_line();
14461            let handles_before = decoder.remaining_handles();
14462            if let Some((inlined, num_bytes, num_handles)) =
14463                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14464            {
14465                let member_inline_size =
14466                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14467                if inlined != (member_inline_size <= 4) {
14468                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14469                }
14470                let inner_offset;
14471                let mut inner_depth = depth.clone();
14472                if inlined {
14473                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14474                    inner_offset = next_offset;
14475                } else {
14476                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14477                    inner_depth.increment()?;
14478                }
14479                let val_ref = self.subevents_count.get_or_insert_with(|| fidl::new_empty!(u8, D));
14480                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14481                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14482                {
14483                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14484                }
14485                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14486                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14487                }
14488            }
14489
14490            next_offset += envelope_size;
14491            _next_ordinal_to_read += 1;
14492            if next_offset >= end_offset {
14493                return Ok(());
14494            }
14495
14496            // Decode unknown envelopes for gaps in ordinals.
14497            while _next_ordinal_to_read < 3 {
14498                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14499                _next_ordinal_to_read += 1;
14500                next_offset += envelope_size;
14501            }
14502
14503            let next_out_of_line = decoder.next_out_of_line();
14504            let handles_before = decoder.remaining_handles();
14505            if let Some((inlined, num_bytes, num_handles)) =
14506                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14507            {
14508                let member_inline_size = <fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14509                if inlined != (member_inline_size <= 4) {
14510                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14511                }
14512                let inner_offset;
14513                let mut inner_depth = depth.clone();
14514                if inlined {
14515                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14516                    inner_offset = next_offset;
14517                } else {
14518                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14519                    inner_depth.increment()?;
14520                }
14521                let val_ref = self.peer_id.get_or_insert_with(|| {
14522                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::PeerId, D)
14523                });
14524                fidl::decode!(
14525                    fidl_fuchsia_bluetooth__common::PeerId,
14526                    D,
14527                    val_ref,
14528                    decoder,
14529                    inner_offset,
14530                    inner_depth
14531                )?;
14532                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14533                {
14534                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14535                }
14536                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14537                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14538                }
14539            }
14540
14541            next_offset += envelope_size;
14542            _next_ordinal_to_read += 1;
14543            if next_offset >= end_offset {
14544                return Ok(());
14545            }
14546
14547            // Decode unknown envelopes for gaps in ordinals.
14548            while _next_ordinal_to_read < 4 {
14549                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14550                _next_ordinal_to_read += 1;
14551                next_offset += envelope_size;
14552            }
14553
14554            let next_out_of_line = decoder.next_out_of_line();
14555            let handles_before = decoder.remaining_handles();
14556            if let Some((inlined, num_bytes, num_handles)) =
14557                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14558            {
14559                let member_inline_size =
14560                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14561                if inlined != (member_inline_size <= 4) {
14562                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14563                }
14564                let inner_offset;
14565                let mut inner_depth = depth.clone();
14566                if inlined {
14567                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14568                    inner_offset = next_offset;
14569                } else {
14570                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14571                    inner_depth.increment()?;
14572                }
14573                let val_ref = self.service_data.get_or_insert_with(|| fidl::new_empty!(u16, D));
14574                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
14575                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14576                {
14577                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14578                }
14579                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14580                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14581                }
14582            }
14583
14584            next_offset += envelope_size;
14585            _next_ordinal_to_read += 1;
14586            if next_offset >= end_offset {
14587                return Ok(());
14588            }
14589
14590            // Decode unknown envelopes for gaps in ordinals.
14591            while _next_ordinal_to_read < 5 {
14592                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14593                _next_ordinal_to_read += 1;
14594                next_offset += envelope_size;
14595            }
14596
14597            let next_out_of_line = decoder.next_out_of_line();
14598            let handles_before = decoder.remaining_handles();
14599            if let Some((inlined, num_bytes, num_handles)) =
14600                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14601            {
14602                let member_inline_size =
14603                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14604                if inlined != (member_inline_size <= 4) {
14605                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14606                }
14607                let inner_offset;
14608                let mut inner_depth = depth.clone();
14609                if inlined {
14610                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14611                    inner_offset = next_offset;
14612                } else {
14613                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14614                    inner_depth.increment()?;
14615                }
14616                let val_ref = self.advertising_sid.get_or_insert_with(|| fidl::new_empty!(u8, D));
14617                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14618                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14619                {
14620                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14621                }
14622                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14623                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14624                }
14625            }
14626
14627            next_offset += envelope_size;
14628            _next_ordinal_to_read += 1;
14629            if next_offset >= end_offset {
14630                return Ok(());
14631            }
14632
14633            // Decode unknown envelopes for gaps in ordinals.
14634            while _next_ordinal_to_read < 6 {
14635                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14636                _next_ordinal_to_read += 1;
14637                next_offset += envelope_size;
14638            }
14639
14640            let next_out_of_line = decoder.next_out_of_line();
14641            let handles_before = decoder.remaining_handles();
14642            if let Some((inlined, num_bytes, num_handles)) =
14643                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14644            {
14645                let member_inline_size =
14646                    <PhysicalLayer as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14647                if inlined != (member_inline_size <= 4) {
14648                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14649                }
14650                let inner_offset;
14651                let mut inner_depth = depth.clone();
14652                if inlined {
14653                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14654                    inner_offset = next_offset;
14655                } else {
14656                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14657                    inner_depth.increment()?;
14658                }
14659                let val_ref = self.phy.get_or_insert_with(|| fidl::new_empty!(PhysicalLayer, D));
14660                fidl::decode!(PhysicalLayer, D, val_ref, decoder, inner_offset, inner_depth)?;
14661                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14662                {
14663                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14664                }
14665                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14666                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14667                }
14668            }
14669
14670            next_offset += envelope_size;
14671            _next_ordinal_to_read += 1;
14672            if next_offset >= end_offset {
14673                return Ok(());
14674            }
14675
14676            // Decode unknown envelopes for gaps in ordinals.
14677            while _next_ordinal_to_read < 7 {
14678                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14679                _next_ordinal_to_read += 1;
14680                next_offset += envelope_size;
14681            }
14682
14683            let next_out_of_line = decoder.next_out_of_line();
14684            let handles_before = decoder.remaining_handles();
14685            if let Some((inlined, num_bytes, num_handles)) =
14686                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14687            {
14688                let member_inline_size =
14689                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14690                if inlined != (member_inline_size <= 4) {
14691                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14692                }
14693                let inner_offset;
14694                let mut inner_depth = depth.clone();
14695                if inlined {
14696                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14697                    inner_offset = next_offset;
14698                } else {
14699                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14700                    inner_depth.increment()?;
14701                }
14702                let val_ref = self
14703                    .periodic_advertising_interval
14704                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
14705                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
14706                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14707                {
14708                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14709                }
14710                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14711                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14712                }
14713            }
14714
14715            next_offset += envelope_size;
14716
14717            // Decode the remaining unknown envelopes.
14718            while next_offset < end_offset {
14719                _next_ordinal_to_read += 1;
14720                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14721                next_offset += envelope_size;
14722            }
14723
14724            Ok(())
14725        }
14726    }
14727
14728    impl PeriodicAdvertisingSyncSyncToSubeventsRequest {
14729        #[inline(always)]
14730        fn max_ordinal_present(&self) -> u64 {
14731            if let Some(_) = self.subevents {
14732                return 1;
14733            }
14734            0
14735        }
14736    }
14737
14738    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncSyncToSubeventsRequest {
14739        type Borrowed<'a> = &'a Self;
14740        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14741            value
14742        }
14743    }
14744
14745    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncSyncToSubeventsRequest {
14746        type Owned = Self;
14747
14748        #[inline(always)]
14749        fn inline_align(_context: fidl::encoding::Context) -> usize {
14750            8
14751        }
14752
14753        #[inline(always)]
14754        fn inline_size(_context: fidl::encoding::Context) -> usize {
14755            16
14756        }
14757    }
14758
14759    unsafe impl<D: fidl::encoding::ResourceDialect>
14760        fidl::encoding::Encode<PeriodicAdvertisingSyncSyncToSubeventsRequest, D>
14761        for &PeriodicAdvertisingSyncSyncToSubeventsRequest
14762    {
14763        unsafe fn encode(
14764            self,
14765            encoder: &mut fidl::encoding::Encoder<'_, D>,
14766            offset: usize,
14767            mut depth: fidl::encoding::Depth,
14768        ) -> fidl::Result<()> {
14769            encoder.debug_check_bounds::<PeriodicAdvertisingSyncSyncToSubeventsRequest>(offset);
14770            // Vector header
14771            let max_ordinal: u64 = self.max_ordinal_present();
14772            encoder.write_num(max_ordinal, offset);
14773            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14774            // Calling encoder.out_of_line_offset(0) is not allowed.
14775            if max_ordinal == 0 {
14776                return Ok(());
14777            }
14778            depth.increment()?;
14779            let envelope_size = 8;
14780            let bytes_len = max_ordinal as usize * envelope_size;
14781            #[allow(unused_variables)]
14782            let offset = encoder.out_of_line_offset(bytes_len);
14783            let mut _prev_end_offset: usize = 0;
14784            if 1 > max_ordinal {
14785                return Ok(());
14786            }
14787
14788            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14789            // are envelope_size bytes.
14790            let cur_offset: usize = (1 - 1) * envelope_size;
14791
14792            // Zero reserved fields.
14793            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14794
14795            // Safety:
14796            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14797            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14798            //   envelope_size bytes, there is always sufficient room.
14799            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 128>, D>(
14800                self.subevents.as_ref().map(
14801                    <fidl::encoding::Vector<u8, 128> as fidl::encoding::ValueTypeMarker>::borrow,
14802                ),
14803                encoder,
14804                offset + cur_offset,
14805                depth,
14806            )?;
14807
14808            _prev_end_offset = cur_offset + envelope_size;
14809
14810            Ok(())
14811        }
14812    }
14813
14814    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14815        for PeriodicAdvertisingSyncSyncToSubeventsRequest
14816    {
14817        #[inline(always)]
14818        fn new_empty() -> Self {
14819            Self::default()
14820        }
14821
14822        unsafe fn decode(
14823            &mut self,
14824            decoder: &mut fidl::encoding::Decoder<'_, D>,
14825            offset: usize,
14826            mut depth: fidl::encoding::Depth,
14827        ) -> fidl::Result<()> {
14828            decoder.debug_check_bounds::<Self>(offset);
14829            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14830                None => return Err(fidl::Error::NotNullable),
14831                Some(len) => len,
14832            };
14833            // Calling decoder.out_of_line_offset(0) is not allowed.
14834            if len == 0 {
14835                return Ok(());
14836            };
14837            depth.increment()?;
14838            let envelope_size = 8;
14839            let bytes_len = len * envelope_size;
14840            let offset = decoder.out_of_line_offset(bytes_len)?;
14841            // Decode the envelope for each type.
14842            let mut _next_ordinal_to_read = 0;
14843            let mut next_offset = offset;
14844            let end_offset = offset + bytes_len;
14845            _next_ordinal_to_read += 1;
14846            if next_offset >= end_offset {
14847                return Ok(());
14848            }
14849
14850            // Decode unknown envelopes for gaps in ordinals.
14851            while _next_ordinal_to_read < 1 {
14852                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14853                _next_ordinal_to_read += 1;
14854                next_offset += envelope_size;
14855            }
14856
14857            let next_out_of_line = decoder.next_out_of_line();
14858            let handles_before = decoder.remaining_handles();
14859            if let Some((inlined, num_bytes, num_handles)) =
14860                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14861            {
14862                let member_inline_size =
14863                    <fidl::encoding::Vector<u8, 128> as fidl::encoding::TypeMarker>::inline_size(
14864                        decoder.context,
14865                    );
14866                if inlined != (member_inline_size <= 4) {
14867                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14868                }
14869                let inner_offset;
14870                let mut inner_depth = depth.clone();
14871                if inlined {
14872                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14873                    inner_offset = next_offset;
14874                } else {
14875                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14876                    inner_depth.increment()?;
14877                }
14878                let val_ref = self
14879                    .subevents
14880                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 128>, D));
14881                fidl::decode!(fidl::encoding::Vector<u8, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
14882                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14883                {
14884                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14885                }
14886                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14887                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14888                }
14889            }
14890
14891            next_offset += envelope_size;
14892
14893            // Decode the remaining unknown envelopes.
14894            while next_offset < end_offset {
14895                _next_ordinal_to_read += 1;
14896                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14897                next_offset += envelope_size;
14898            }
14899
14900            Ok(())
14901        }
14902    }
14903
14904    impl PeriodicAdvertisingSyncWatchAdvertisingReportResponse {
14905        #[inline(always)]
14906        fn max_ordinal_present(&self) -> u64 {
14907            if let Some(_) = self.reports {
14908                return 1;
14909            }
14910            0
14911        }
14912    }
14913
14914    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncWatchAdvertisingReportResponse {
14915        type Borrowed<'a> = &'a Self;
14916        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14917            value
14918        }
14919    }
14920
14921    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncWatchAdvertisingReportResponse {
14922        type Owned = Self;
14923
14924        #[inline(always)]
14925        fn inline_align(_context: fidl::encoding::Context) -> usize {
14926            8
14927        }
14928
14929        #[inline(always)]
14930        fn inline_size(_context: fidl::encoding::Context) -> usize {
14931            16
14932        }
14933    }
14934
14935    unsafe impl<D: fidl::encoding::ResourceDialect>
14936        fidl::encoding::Encode<PeriodicAdvertisingSyncWatchAdvertisingReportResponse, D>
14937        for &PeriodicAdvertisingSyncWatchAdvertisingReportResponse
14938    {
14939        unsafe fn encode(
14940            self,
14941            encoder: &mut fidl::encoding::Encoder<'_, D>,
14942            offset: usize,
14943            mut depth: fidl::encoding::Depth,
14944        ) -> fidl::Result<()> {
14945            encoder.debug_check_bounds::<PeriodicAdvertisingSyncWatchAdvertisingReportResponse>(
14946                offset,
14947            );
14948            // Vector header
14949            let max_ordinal: u64 = self.max_ordinal_present();
14950            encoder.write_num(max_ordinal, offset);
14951            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14952            // Calling encoder.out_of_line_offset(0) is not allowed.
14953            if max_ordinal == 0 {
14954                return Ok(());
14955            }
14956            depth.increment()?;
14957            let envelope_size = 8;
14958            let bytes_len = max_ordinal as usize * envelope_size;
14959            #[allow(unused_variables)]
14960            let offset = encoder.out_of_line_offset(bytes_len);
14961            let mut _prev_end_offset: usize = 0;
14962            if 1 > max_ordinal {
14963                return Ok(());
14964            }
14965
14966            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14967            // are envelope_size bytes.
14968            let cur_offset: usize = (1 - 1) * envelope_size;
14969
14970            // Zero reserved fields.
14971            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14972
14973            // Safety:
14974            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14975            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14976            //   envelope_size bytes, there is always sufficient room.
14977            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<SyncReport>, D>(
14978            self.reports.as_ref().map(<fidl::encoding::UnboundedVector<SyncReport> as fidl::encoding::ValueTypeMarker>::borrow),
14979            encoder, offset + cur_offset, depth
14980        )?;
14981
14982            _prev_end_offset = cur_offset + envelope_size;
14983
14984            Ok(())
14985        }
14986    }
14987
14988    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14989        for PeriodicAdvertisingSyncWatchAdvertisingReportResponse
14990    {
14991        #[inline(always)]
14992        fn new_empty() -> Self {
14993            Self::default()
14994        }
14995
14996        unsafe fn decode(
14997            &mut self,
14998            decoder: &mut fidl::encoding::Decoder<'_, D>,
14999            offset: usize,
15000            mut depth: fidl::encoding::Depth,
15001        ) -> fidl::Result<()> {
15002            decoder.debug_check_bounds::<Self>(offset);
15003            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15004                None => return Err(fidl::Error::NotNullable),
15005                Some(len) => len,
15006            };
15007            // Calling decoder.out_of_line_offset(0) is not allowed.
15008            if len == 0 {
15009                return Ok(());
15010            };
15011            depth.increment()?;
15012            let envelope_size = 8;
15013            let bytes_len = len * envelope_size;
15014            let offset = decoder.out_of_line_offset(bytes_len)?;
15015            // Decode the envelope for each type.
15016            let mut _next_ordinal_to_read = 0;
15017            let mut next_offset = offset;
15018            let end_offset = offset + bytes_len;
15019            _next_ordinal_to_read += 1;
15020            if next_offset >= end_offset {
15021                return Ok(());
15022            }
15023
15024            // Decode unknown envelopes for gaps in ordinals.
15025            while _next_ordinal_to_read < 1 {
15026                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15027                _next_ordinal_to_read += 1;
15028                next_offset += envelope_size;
15029            }
15030
15031            let next_out_of_line = decoder.next_out_of_line();
15032            let handles_before = decoder.remaining_handles();
15033            if let Some((inlined, num_bytes, num_handles)) =
15034                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15035            {
15036                let member_inline_size = <fidl::encoding::UnboundedVector<SyncReport> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15037                if inlined != (member_inline_size <= 4) {
15038                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15039                }
15040                let inner_offset;
15041                let mut inner_depth = depth.clone();
15042                if inlined {
15043                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15044                    inner_offset = next_offset;
15045                } else {
15046                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15047                    inner_depth.increment()?;
15048                }
15049                let val_ref = self.reports.get_or_insert_with(|| {
15050                    fidl::new_empty!(fidl::encoding::UnboundedVector<SyncReport>, D)
15051                });
15052                fidl::decode!(
15053                    fidl::encoding::UnboundedVector<SyncReport>,
15054                    D,
15055                    val_ref,
15056                    decoder,
15057                    inner_offset,
15058                    inner_depth
15059                )?;
15060                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15061                {
15062                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15063                }
15064                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15065                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15066                }
15067            }
15068
15069            next_offset += envelope_size;
15070
15071            // Decode the remaining unknown envelopes.
15072            while next_offset < end_offset {
15073                _next_ordinal_to_read += 1;
15074                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15075                next_offset += envelope_size;
15076            }
15077
15078            Ok(())
15079        }
15080    }
15081
15082    impl ScanData {
15083        #[inline(always)]
15084        fn max_ordinal_present(&self) -> u64 {
15085            if let Some(_) = self.broadcast_name {
15086                return 9;
15087            }
15088            if let Some(_) = self.resolvable_set_identifier {
15089                return 8;
15090            }
15091            if let Some(_) = self.timestamp {
15092                return 7;
15093            }
15094            if let Some(_) = self.uris {
15095                return 6;
15096            }
15097            if let Some(_) = self.manufacturer_data {
15098                return 5;
15099            }
15100            if let Some(_) = self.service_data {
15101                return 4;
15102            }
15103            if let Some(_) = self.service_uuids {
15104                return 3;
15105            }
15106            if let Some(_) = self.appearance {
15107                return 2;
15108            }
15109            if let Some(_) = self.tx_power {
15110                return 1;
15111            }
15112            0
15113        }
15114    }
15115
15116    impl fidl::encoding::ValueTypeMarker for ScanData {
15117        type Borrowed<'a> = &'a Self;
15118        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15119            value
15120        }
15121    }
15122
15123    unsafe impl fidl::encoding::TypeMarker for ScanData {
15124        type Owned = Self;
15125
15126        #[inline(always)]
15127        fn inline_align(_context: fidl::encoding::Context) -> usize {
15128            8
15129        }
15130
15131        #[inline(always)]
15132        fn inline_size(_context: fidl::encoding::Context) -> usize {
15133            16
15134        }
15135    }
15136
15137    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanData, D> for &ScanData {
15138        unsafe fn encode(
15139            self,
15140            encoder: &mut fidl::encoding::Encoder<'_, D>,
15141            offset: usize,
15142            mut depth: fidl::encoding::Depth,
15143        ) -> fidl::Result<()> {
15144            encoder.debug_check_bounds::<ScanData>(offset);
15145            // Vector header
15146            let max_ordinal: u64 = self.max_ordinal_present();
15147            encoder.write_num(max_ordinal, offset);
15148            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15149            // Calling encoder.out_of_line_offset(0) is not allowed.
15150            if max_ordinal == 0 {
15151                return Ok(());
15152            }
15153            depth.increment()?;
15154            let envelope_size = 8;
15155            let bytes_len = max_ordinal as usize * envelope_size;
15156            #[allow(unused_variables)]
15157            let offset = encoder.out_of_line_offset(bytes_len);
15158            let mut _prev_end_offset: usize = 0;
15159            if 1 > max_ordinal {
15160                return Ok(());
15161            }
15162
15163            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15164            // are envelope_size bytes.
15165            let cur_offset: usize = (1 - 1) * envelope_size;
15166
15167            // Zero reserved fields.
15168            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15169
15170            // Safety:
15171            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15172            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15173            //   envelope_size bytes, there is always sufficient room.
15174            fidl::encoding::encode_in_envelope_optional::<i8, D>(
15175                self.tx_power.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
15176                encoder,
15177                offset + cur_offset,
15178                depth,
15179            )?;
15180
15181            _prev_end_offset = cur_offset + envelope_size;
15182            if 2 > max_ordinal {
15183                return Ok(());
15184            }
15185
15186            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15187            // are envelope_size bytes.
15188            let cur_offset: usize = (2 - 1) * envelope_size;
15189
15190            // Zero reserved fields.
15191            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15192
15193            // Safety:
15194            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15195            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15196            //   envelope_size bytes, there is always sufficient room.
15197            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Appearance, D>(
15198            self.appearance.as_ref().map(<fidl_fuchsia_bluetooth__common::Appearance as fidl::encoding::ValueTypeMarker>::borrow),
15199            encoder, offset + cur_offset, depth
15200        )?;
15201
15202            _prev_end_offset = cur_offset + envelope_size;
15203            if 3 > max_ordinal {
15204                return Ok(());
15205            }
15206
15207            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15208            // are envelope_size bytes.
15209            let cur_offset: usize = (3 - 1) * envelope_size;
15210
15211            // Zero reserved fields.
15212            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15213
15214            // Safety:
15215            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15216            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15217            //   envelope_size bytes, there is always sufficient room.
15218            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>, D>(
15219            self.service_uuids.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid> as fidl::encoding::ValueTypeMarker>::borrow),
15220            encoder, offset + cur_offset, depth
15221        )?;
15222
15223            _prev_end_offset = cur_offset + envelope_size;
15224            if 4 > max_ordinal {
15225                return Ok(());
15226            }
15227
15228            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15229            // are envelope_size bytes.
15230            let cur_offset: usize = (4 - 1) * envelope_size;
15231
15232            // Zero reserved fields.
15233            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15234
15235            // Safety:
15236            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15237            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15238            //   envelope_size bytes, there is always sufficient room.
15239            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ServiceData>, D>(
15240            self.service_data.as_ref().map(<fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::ValueTypeMarker>::borrow),
15241            encoder, offset + cur_offset, depth
15242        )?;
15243
15244            _prev_end_offset = cur_offset + envelope_size;
15245            if 5 > max_ordinal {
15246                return Ok(());
15247            }
15248
15249            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15250            // are envelope_size bytes.
15251            let cur_offset: usize = (5 - 1) * envelope_size;
15252
15253            // Zero reserved fields.
15254            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15255
15256            // Safety:
15257            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15258            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15259            //   envelope_size bytes, there is always sufficient room.
15260            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ManufacturerData>, D>(
15261            self.manufacturer_data.as_ref().map(<fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::ValueTypeMarker>::borrow),
15262            encoder, offset + cur_offset, depth
15263        )?;
15264
15265            _prev_end_offset = cur_offset + envelope_size;
15266            if 6 > max_ordinal {
15267                return Ok(());
15268            }
15269
15270            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15271            // are envelope_size bytes.
15272            let cur_offset: usize = (6 - 1) * envelope_size;
15273
15274            // Zero reserved fields.
15275            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15276
15277            // Safety:
15278            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15279            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15280            //   envelope_size bytes, there is always sufficient room.
15281            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>, D>(
15282            self.uris.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>> as fidl::encoding::ValueTypeMarker>::borrow),
15283            encoder, offset + cur_offset, depth
15284        )?;
15285
15286            _prev_end_offset = cur_offset + envelope_size;
15287            if 7 > max_ordinal {
15288                return Ok(());
15289            }
15290
15291            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15292            // are envelope_size bytes.
15293            let cur_offset: usize = (7 - 1) * envelope_size;
15294
15295            // Zero reserved fields.
15296            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15297
15298            // Safety:
15299            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15300            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15301            //   envelope_size bytes, there is always sufficient room.
15302            fidl::encoding::encode_in_envelope_optional::<i64, D>(
15303                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
15304                encoder,
15305                offset + cur_offset,
15306                depth,
15307            )?;
15308
15309            _prev_end_offset = cur_offset + envelope_size;
15310            if 8 > max_ordinal {
15311                return Ok(());
15312            }
15313
15314            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15315            // are envelope_size bytes.
15316            let cur_offset: usize = (8 - 1) * envelope_size;
15317
15318            // Zero reserved fields.
15319            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15320
15321            // Safety:
15322            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15323            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15324            //   envelope_size bytes, there is always sufficient room.
15325            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
15326                self.resolvable_set_identifier
15327                    .as_ref()
15328                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
15329                encoder,
15330                offset + cur_offset,
15331                depth,
15332            )?;
15333
15334            _prev_end_offset = cur_offset + envelope_size;
15335            if 9 > max_ordinal {
15336                return Ok(());
15337            }
15338
15339            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15340            // are envelope_size bytes.
15341            let cur_offset: usize = (9 - 1) * envelope_size;
15342
15343            // Zero reserved fields.
15344            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15345
15346            // Safety:
15347            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15348            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15349            //   envelope_size bytes, there is always sufficient room.
15350            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
15351                self.broadcast_name.as_ref().map(
15352                    <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
15353                ),
15354                encoder,
15355                offset + cur_offset,
15356                depth,
15357            )?;
15358
15359            _prev_end_offset = cur_offset + envelope_size;
15360
15361            Ok(())
15362        }
15363    }
15364
15365    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanData {
15366        #[inline(always)]
15367        fn new_empty() -> Self {
15368            Self::default()
15369        }
15370
15371        unsafe fn decode(
15372            &mut self,
15373            decoder: &mut fidl::encoding::Decoder<'_, D>,
15374            offset: usize,
15375            mut depth: fidl::encoding::Depth,
15376        ) -> fidl::Result<()> {
15377            decoder.debug_check_bounds::<Self>(offset);
15378            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15379                None => return Err(fidl::Error::NotNullable),
15380                Some(len) => len,
15381            };
15382            // Calling decoder.out_of_line_offset(0) is not allowed.
15383            if len == 0 {
15384                return Ok(());
15385            };
15386            depth.increment()?;
15387            let envelope_size = 8;
15388            let bytes_len = len * envelope_size;
15389            let offset = decoder.out_of_line_offset(bytes_len)?;
15390            // Decode the envelope for each type.
15391            let mut _next_ordinal_to_read = 0;
15392            let mut next_offset = offset;
15393            let end_offset = offset + bytes_len;
15394            _next_ordinal_to_read += 1;
15395            if next_offset >= end_offset {
15396                return Ok(());
15397            }
15398
15399            // Decode unknown envelopes for gaps in ordinals.
15400            while _next_ordinal_to_read < 1 {
15401                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15402                _next_ordinal_to_read += 1;
15403                next_offset += envelope_size;
15404            }
15405
15406            let next_out_of_line = decoder.next_out_of_line();
15407            let handles_before = decoder.remaining_handles();
15408            if let Some((inlined, num_bytes, num_handles)) =
15409                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15410            {
15411                let member_inline_size =
15412                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15413                if inlined != (member_inline_size <= 4) {
15414                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15415                }
15416                let inner_offset;
15417                let mut inner_depth = depth.clone();
15418                if inlined {
15419                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15420                    inner_offset = next_offset;
15421                } else {
15422                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15423                    inner_depth.increment()?;
15424                }
15425                let val_ref = self.tx_power.get_or_insert_with(|| fidl::new_empty!(i8, D));
15426                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
15427                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15428                {
15429                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15430                }
15431                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15432                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15433                }
15434            }
15435
15436            next_offset += envelope_size;
15437            _next_ordinal_to_read += 1;
15438            if next_offset >= end_offset {
15439                return Ok(());
15440            }
15441
15442            // Decode unknown envelopes for gaps in ordinals.
15443            while _next_ordinal_to_read < 2 {
15444                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15445                _next_ordinal_to_read += 1;
15446                next_offset += envelope_size;
15447            }
15448
15449            let next_out_of_line = decoder.next_out_of_line();
15450            let handles_before = decoder.remaining_handles();
15451            if let Some((inlined, num_bytes, num_handles)) =
15452                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15453            {
15454                let member_inline_size = <fidl_fuchsia_bluetooth__common::Appearance as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15455                if inlined != (member_inline_size <= 4) {
15456                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15457                }
15458                let inner_offset;
15459                let mut inner_depth = depth.clone();
15460                if inlined {
15461                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15462                    inner_offset = next_offset;
15463                } else {
15464                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15465                    inner_depth.increment()?;
15466                }
15467                let val_ref = self.appearance.get_or_insert_with(|| {
15468                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Appearance, D)
15469                });
15470                fidl::decode!(
15471                    fidl_fuchsia_bluetooth__common::Appearance,
15472                    D,
15473                    val_ref,
15474                    decoder,
15475                    inner_offset,
15476                    inner_depth
15477                )?;
15478                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15479                {
15480                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15481                }
15482                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15483                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15484                }
15485            }
15486
15487            next_offset += envelope_size;
15488            _next_ordinal_to_read += 1;
15489            if next_offset >= end_offset {
15490                return Ok(());
15491            }
15492
15493            // Decode unknown envelopes for gaps in ordinals.
15494            while _next_ordinal_to_read < 3 {
15495                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15496                _next_ordinal_to_read += 1;
15497                next_offset += envelope_size;
15498            }
15499
15500            let next_out_of_line = decoder.next_out_of_line();
15501            let handles_before = decoder.remaining_handles();
15502            if let Some((inlined, num_bytes, num_handles)) =
15503                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15504            {
15505                let member_inline_size = <fidl::encoding::UnboundedVector<
15506                    fidl_fuchsia_bluetooth__common::Uuid,
15507                > as fidl::encoding::TypeMarker>::inline_size(
15508                    decoder.context
15509                );
15510                if inlined != (member_inline_size <= 4) {
15511                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15512                }
15513                let inner_offset;
15514                let mut inner_depth = depth.clone();
15515                if inlined {
15516                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15517                    inner_offset = next_offset;
15518                } else {
15519                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15520                    inner_depth.increment()?;
15521                }
15522                let val_ref = self.service_uuids.get_or_insert_with(|| {
15523                    fidl::new_empty!(
15524                        fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>,
15525                        D
15526                    )
15527                });
15528                fidl::decode!(
15529                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>,
15530                    D,
15531                    val_ref,
15532                    decoder,
15533                    inner_offset,
15534                    inner_depth
15535                )?;
15536                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15537                {
15538                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15539                }
15540                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15541                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15542                }
15543            }
15544
15545            next_offset += envelope_size;
15546            _next_ordinal_to_read += 1;
15547            if next_offset >= end_offset {
15548                return Ok(());
15549            }
15550
15551            // Decode unknown envelopes for gaps in ordinals.
15552            while _next_ordinal_to_read < 4 {
15553                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15554                _next_ordinal_to_read += 1;
15555                next_offset += envelope_size;
15556            }
15557
15558            let next_out_of_line = decoder.next_out_of_line();
15559            let handles_before = decoder.remaining_handles();
15560            if let Some((inlined, num_bytes, num_handles)) =
15561                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15562            {
15563                let member_inline_size = <fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15564                if inlined != (member_inline_size <= 4) {
15565                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15566                }
15567                let inner_offset;
15568                let mut inner_depth = depth.clone();
15569                if inlined {
15570                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15571                    inner_offset = next_offset;
15572                } else {
15573                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15574                    inner_depth.increment()?;
15575                }
15576                let val_ref = self.service_data.get_or_insert_with(|| {
15577                    fidl::new_empty!(fidl::encoding::UnboundedVector<ServiceData>, D)
15578                });
15579                fidl::decode!(
15580                    fidl::encoding::UnboundedVector<ServiceData>,
15581                    D,
15582                    val_ref,
15583                    decoder,
15584                    inner_offset,
15585                    inner_depth
15586                )?;
15587                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15588                {
15589                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15590                }
15591                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15592                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15593                }
15594            }
15595
15596            next_offset += envelope_size;
15597            _next_ordinal_to_read += 1;
15598            if next_offset >= end_offset {
15599                return Ok(());
15600            }
15601
15602            // Decode unknown envelopes for gaps in ordinals.
15603            while _next_ordinal_to_read < 5 {
15604                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15605                _next_ordinal_to_read += 1;
15606                next_offset += envelope_size;
15607            }
15608
15609            let next_out_of_line = decoder.next_out_of_line();
15610            let handles_before = decoder.remaining_handles();
15611            if let Some((inlined, num_bytes, num_handles)) =
15612                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15613            {
15614                let member_inline_size = <fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15615                if inlined != (member_inline_size <= 4) {
15616                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15617                }
15618                let inner_offset;
15619                let mut inner_depth = depth.clone();
15620                if inlined {
15621                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15622                    inner_offset = next_offset;
15623                } else {
15624                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15625                    inner_depth.increment()?;
15626                }
15627                let val_ref = self.manufacturer_data.get_or_insert_with(|| {
15628                    fidl::new_empty!(fidl::encoding::UnboundedVector<ManufacturerData>, D)
15629                });
15630                fidl::decode!(
15631                    fidl::encoding::UnboundedVector<ManufacturerData>,
15632                    D,
15633                    val_ref,
15634                    decoder,
15635                    inner_offset,
15636                    inner_depth
15637                )?;
15638                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15639                {
15640                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15641                }
15642                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15643                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15644                }
15645            }
15646
15647            next_offset += envelope_size;
15648            _next_ordinal_to_read += 1;
15649            if next_offset >= end_offset {
15650                return Ok(());
15651            }
15652
15653            // Decode unknown envelopes for gaps in ordinals.
15654            while _next_ordinal_to_read < 6 {
15655                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15656                _next_ordinal_to_read += 1;
15657                next_offset += envelope_size;
15658            }
15659
15660            let next_out_of_line = decoder.next_out_of_line();
15661            let handles_before = decoder.remaining_handles();
15662            if let Some((inlined, num_bytes, num_handles)) =
15663                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15664            {
15665                let member_inline_size = <fidl::encoding::UnboundedVector<
15666                    fidl::encoding::BoundedString<278>,
15667                > as fidl::encoding::TypeMarker>::inline_size(
15668                    decoder.context
15669                );
15670                if inlined != (member_inline_size <= 4) {
15671                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15672                }
15673                let inner_offset;
15674                let mut inner_depth = depth.clone();
15675                if inlined {
15676                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15677                    inner_offset = next_offset;
15678                } else {
15679                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15680                    inner_depth.increment()?;
15681                }
15682                let val_ref = self.uris.get_or_insert_with(|| {
15683                    fidl::new_empty!(
15684                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
15685                        D
15686                    )
15687                });
15688                fidl::decode!(
15689                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
15690                    D,
15691                    val_ref,
15692                    decoder,
15693                    inner_offset,
15694                    inner_depth
15695                )?;
15696                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15697                {
15698                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15699                }
15700                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15701                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15702                }
15703            }
15704
15705            next_offset += envelope_size;
15706            _next_ordinal_to_read += 1;
15707            if next_offset >= end_offset {
15708                return Ok(());
15709            }
15710
15711            // Decode unknown envelopes for gaps in ordinals.
15712            while _next_ordinal_to_read < 7 {
15713                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15714                _next_ordinal_to_read += 1;
15715                next_offset += envelope_size;
15716            }
15717
15718            let next_out_of_line = decoder.next_out_of_line();
15719            let handles_before = decoder.remaining_handles();
15720            if let Some((inlined, num_bytes, num_handles)) =
15721                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15722            {
15723                let member_inline_size =
15724                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15725                if inlined != (member_inline_size <= 4) {
15726                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15727                }
15728                let inner_offset;
15729                let mut inner_depth = depth.clone();
15730                if inlined {
15731                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15732                    inner_offset = next_offset;
15733                } else {
15734                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15735                    inner_depth.increment()?;
15736                }
15737                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
15738                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
15739                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15740                {
15741                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15742                }
15743                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15744                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15745                }
15746            }
15747
15748            next_offset += envelope_size;
15749            _next_ordinal_to_read += 1;
15750            if next_offset >= end_offset {
15751                return Ok(());
15752            }
15753
15754            // Decode unknown envelopes for gaps in ordinals.
15755            while _next_ordinal_to_read < 8 {
15756                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15757                _next_ordinal_to_read += 1;
15758                next_offset += envelope_size;
15759            }
15760
15761            let next_out_of_line = decoder.next_out_of_line();
15762            let handles_before = decoder.remaining_handles();
15763            if let Some((inlined, num_bytes, num_handles)) =
15764                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15765            {
15766                let member_inline_size =
15767                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
15768                        decoder.context,
15769                    );
15770                if inlined != (member_inline_size <= 4) {
15771                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15772                }
15773                let inner_offset;
15774                let mut inner_depth = depth.clone();
15775                if inlined {
15776                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15777                    inner_offset = next_offset;
15778                } else {
15779                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15780                    inner_depth.increment()?;
15781                }
15782                let val_ref = self
15783                    .resolvable_set_identifier
15784                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
15785                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
15786                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15787                {
15788                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15789                }
15790                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15791                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15792                }
15793            }
15794
15795            next_offset += envelope_size;
15796            _next_ordinal_to_read += 1;
15797            if next_offset >= end_offset {
15798                return Ok(());
15799            }
15800
15801            // Decode unknown envelopes for gaps in ordinals.
15802            while _next_ordinal_to_read < 9 {
15803                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15804                _next_ordinal_to_read += 1;
15805                next_offset += envelope_size;
15806            }
15807
15808            let next_out_of_line = decoder.next_out_of_line();
15809            let handles_before = decoder.remaining_handles();
15810            if let Some((inlined, num_bytes, num_handles)) =
15811                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15812            {
15813                let member_inline_size =
15814                    <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
15815                        decoder.context,
15816                    );
15817                if inlined != (member_inline_size <= 4) {
15818                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15819                }
15820                let inner_offset;
15821                let mut inner_depth = depth.clone();
15822                if inlined {
15823                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15824                    inner_offset = next_offset;
15825                } else {
15826                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15827                    inner_depth.increment()?;
15828                }
15829                let val_ref = self
15830                    .broadcast_name
15831                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
15832                fidl::decode!(
15833                    fidl::encoding::BoundedString<128>,
15834                    D,
15835                    val_ref,
15836                    decoder,
15837                    inner_offset,
15838                    inner_depth
15839                )?;
15840                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15841                {
15842                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15843                }
15844                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15845                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15846                }
15847            }
15848
15849            next_offset += envelope_size;
15850
15851            // Decode the remaining unknown envelopes.
15852            while next_offset < end_offset {
15853                _next_ordinal_to_read += 1;
15854                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15855                next_offset += envelope_size;
15856            }
15857
15858            Ok(())
15859        }
15860    }
15861
15862    impl ScanOptions {
15863        #[inline(always)]
15864        fn max_ordinal_present(&self) -> u64 {
15865            if let Some(_) = self.filters {
15866                return 1;
15867            }
15868            0
15869        }
15870    }
15871
15872    impl fidl::encoding::ValueTypeMarker for ScanOptions {
15873        type Borrowed<'a> = &'a Self;
15874        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15875            value
15876        }
15877    }
15878
15879    unsafe impl fidl::encoding::TypeMarker for ScanOptions {
15880        type Owned = Self;
15881
15882        #[inline(always)]
15883        fn inline_align(_context: fidl::encoding::Context) -> usize {
15884            8
15885        }
15886
15887        #[inline(always)]
15888        fn inline_size(_context: fidl::encoding::Context) -> usize {
15889            16
15890        }
15891    }
15892
15893    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanOptions, D>
15894        for &ScanOptions
15895    {
15896        unsafe fn encode(
15897            self,
15898            encoder: &mut fidl::encoding::Encoder<'_, D>,
15899            offset: usize,
15900            mut depth: fidl::encoding::Depth,
15901        ) -> fidl::Result<()> {
15902            encoder.debug_check_bounds::<ScanOptions>(offset);
15903            // Vector header
15904            let max_ordinal: u64 = self.max_ordinal_present();
15905            encoder.write_num(max_ordinal, offset);
15906            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15907            // Calling encoder.out_of_line_offset(0) is not allowed.
15908            if max_ordinal == 0 {
15909                return Ok(());
15910            }
15911            depth.increment()?;
15912            let envelope_size = 8;
15913            let bytes_len = max_ordinal as usize * envelope_size;
15914            #[allow(unused_variables)]
15915            let offset = encoder.out_of_line_offset(bytes_len);
15916            let mut _prev_end_offset: usize = 0;
15917            if 1 > max_ordinal {
15918                return Ok(());
15919            }
15920
15921            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15922            // are envelope_size bytes.
15923            let cur_offset: usize = (1 - 1) * envelope_size;
15924
15925            // Zero reserved fields.
15926            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15927
15928            // Safety:
15929            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15930            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15931            //   envelope_size bytes, there is always sufficient room.
15932            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Filter>, D>(
15933            self.filters.as_ref().map(<fidl::encoding::UnboundedVector<Filter> as fidl::encoding::ValueTypeMarker>::borrow),
15934            encoder, offset + cur_offset, depth
15935        )?;
15936
15937            _prev_end_offset = cur_offset + envelope_size;
15938
15939            Ok(())
15940        }
15941    }
15942
15943    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanOptions {
15944        #[inline(always)]
15945        fn new_empty() -> Self {
15946            Self::default()
15947        }
15948
15949        unsafe fn decode(
15950            &mut self,
15951            decoder: &mut fidl::encoding::Decoder<'_, D>,
15952            offset: usize,
15953            mut depth: fidl::encoding::Depth,
15954        ) -> fidl::Result<()> {
15955            decoder.debug_check_bounds::<Self>(offset);
15956            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15957                None => return Err(fidl::Error::NotNullable),
15958                Some(len) => len,
15959            };
15960            // Calling decoder.out_of_line_offset(0) is not allowed.
15961            if len == 0 {
15962                return Ok(());
15963            };
15964            depth.increment()?;
15965            let envelope_size = 8;
15966            let bytes_len = len * envelope_size;
15967            let offset = decoder.out_of_line_offset(bytes_len)?;
15968            // Decode the envelope for each type.
15969            let mut _next_ordinal_to_read = 0;
15970            let mut next_offset = offset;
15971            let end_offset = offset + bytes_len;
15972            _next_ordinal_to_read += 1;
15973            if next_offset >= end_offset {
15974                return Ok(());
15975            }
15976
15977            // Decode unknown envelopes for gaps in ordinals.
15978            while _next_ordinal_to_read < 1 {
15979                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15980                _next_ordinal_to_read += 1;
15981                next_offset += envelope_size;
15982            }
15983
15984            let next_out_of_line = decoder.next_out_of_line();
15985            let handles_before = decoder.remaining_handles();
15986            if let Some((inlined, num_bytes, num_handles)) =
15987                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15988            {
15989                let member_inline_size = <fidl::encoding::UnboundedVector<Filter> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15990                if inlined != (member_inline_size <= 4) {
15991                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15992                }
15993                let inner_offset;
15994                let mut inner_depth = depth.clone();
15995                if inlined {
15996                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15997                    inner_offset = next_offset;
15998                } else {
15999                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16000                    inner_depth.increment()?;
16001                }
16002                let val_ref = self.filters.get_or_insert_with(|| {
16003                    fidl::new_empty!(fidl::encoding::UnboundedVector<Filter>, D)
16004                });
16005                fidl::decode!(
16006                    fidl::encoding::UnboundedVector<Filter>,
16007                    D,
16008                    val_ref,
16009                    decoder,
16010                    inner_offset,
16011                    inner_depth
16012                )?;
16013                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16014                {
16015                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16016                }
16017                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16018                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16019                }
16020            }
16021
16022            next_offset += envelope_size;
16023
16024            // Decode the remaining unknown envelopes.
16025            while next_offset < end_offset {
16026                _next_ordinal_to_read += 1;
16027                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16028                next_offset += envelope_size;
16029            }
16030
16031            Ok(())
16032        }
16033    }
16034
16035    impl fidl::encoding::ValueTypeMarker for AdvertisingProcedure {
16036        type Borrowed<'a> = &'a Self;
16037        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16038            value
16039        }
16040    }
16041
16042    unsafe impl fidl::encoding::TypeMarker for AdvertisingProcedure {
16043        type Owned = Self;
16044
16045        #[inline(always)]
16046        fn inline_align(_context: fidl::encoding::Context) -> usize {
16047            8
16048        }
16049
16050        #[inline(always)]
16051        fn inline_size(_context: fidl::encoding::Context) -> usize {
16052            16
16053        }
16054    }
16055
16056    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdvertisingProcedure, D>
16057        for &AdvertisingProcedure
16058    {
16059        #[inline]
16060        unsafe fn encode(
16061            self,
16062            encoder: &mut fidl::encoding::Encoder<'_, D>,
16063            offset: usize,
16064            _depth: fidl::encoding::Depth,
16065        ) -> fidl::Result<()> {
16066            encoder.debug_check_bounds::<AdvertisingProcedure>(offset);
16067            encoder.write_num::<u64>(self.ordinal(), offset);
16068            match self {
16069                AdvertisingProcedure::Legacy(ref val) => {
16070                    fidl::encoding::encode_in_envelope::<Legacy, D>(
16071                        <Legacy as fidl::encoding::ValueTypeMarker>::borrow(val),
16072                        encoder,
16073                        offset + 8,
16074                        _depth,
16075                    )
16076                }
16077                AdvertisingProcedure::Extended(ref val) => {
16078                    fidl::encoding::encode_in_envelope::<Extended, D>(
16079                        <Extended as fidl::encoding::ValueTypeMarker>::borrow(val),
16080                        encoder,
16081                        offset + 8,
16082                        _depth,
16083                    )
16084                }
16085                AdvertisingProcedure::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
16086            }
16087        }
16088    }
16089
16090    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingProcedure {
16091        #[inline(always)]
16092        fn new_empty() -> Self {
16093            Self::__SourceBreaking { unknown_ordinal: 0 }
16094        }
16095
16096        #[inline]
16097        unsafe fn decode(
16098            &mut self,
16099            decoder: &mut fidl::encoding::Decoder<'_, D>,
16100            offset: usize,
16101            mut depth: fidl::encoding::Depth,
16102        ) -> fidl::Result<()> {
16103            decoder.debug_check_bounds::<Self>(offset);
16104            #[allow(unused_variables)]
16105            let next_out_of_line = decoder.next_out_of_line();
16106            let handles_before = decoder.remaining_handles();
16107            let (ordinal, inlined, num_bytes, num_handles) =
16108                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
16109
16110            let member_inline_size = match ordinal {
16111                1 => <Legacy as fidl::encoding::TypeMarker>::inline_size(decoder.context),
16112                2 => <Extended as fidl::encoding::TypeMarker>::inline_size(decoder.context),
16113                0 => return Err(fidl::Error::UnknownUnionTag),
16114                _ => num_bytes as usize,
16115            };
16116
16117            if inlined != (member_inline_size <= 4) {
16118                return Err(fidl::Error::InvalidInlineBitInEnvelope);
16119            }
16120            let _inner_offset;
16121            if inlined {
16122                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
16123                _inner_offset = offset + 8;
16124            } else {
16125                depth.increment()?;
16126                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16127            }
16128            match ordinal {
16129                1 => {
16130                    #[allow(irrefutable_let_patterns)]
16131                    if let AdvertisingProcedure::Legacy(_) = self {
16132                        // Do nothing, read the value into the object
16133                    } else {
16134                        // Initialize `self` to the right variant
16135                        *self = AdvertisingProcedure::Legacy(fidl::new_empty!(Legacy, D));
16136                    }
16137                    #[allow(irrefutable_let_patterns)]
16138                    if let AdvertisingProcedure::Legacy(ref mut val) = self {
16139                        fidl::decode!(Legacy, D, val, decoder, _inner_offset, depth)?;
16140                    } else {
16141                        unreachable!()
16142                    }
16143                }
16144                2 => {
16145                    #[allow(irrefutable_let_patterns)]
16146                    if let AdvertisingProcedure::Extended(_) = self {
16147                        // Do nothing, read the value into the object
16148                    } else {
16149                        // Initialize `self` to the right variant
16150                        *self = AdvertisingProcedure::Extended(fidl::new_empty!(Extended, D));
16151                    }
16152                    #[allow(irrefutable_let_patterns)]
16153                    if let AdvertisingProcedure::Extended(ref mut val) = self {
16154                        fidl::decode!(Extended, D, val, decoder, _inner_offset, depth)?;
16155                    } else {
16156                        unreachable!()
16157                    }
16158                }
16159                #[allow(deprecated)]
16160                ordinal => {
16161                    for _ in 0..num_handles {
16162                        decoder.drop_next_handle()?;
16163                    }
16164                    *self = AdvertisingProcedure::__SourceBreaking { unknown_ordinal: ordinal };
16165                }
16166            }
16167            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
16168                return Err(fidl::Error::InvalidNumBytesInEnvelope);
16169            }
16170            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16171                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16172            }
16173            Ok(())
16174        }
16175    }
16176
16177    impl fidl::encoding::ValueTypeMarker for SyncReport {
16178        type Borrowed<'a> = &'a Self;
16179        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16180            value
16181        }
16182    }
16183
16184    unsafe impl fidl::encoding::TypeMarker for SyncReport {
16185        type Owned = Self;
16186
16187        #[inline(always)]
16188        fn inline_align(_context: fidl::encoding::Context) -> usize {
16189            8
16190        }
16191
16192        #[inline(always)]
16193        fn inline_size(_context: fidl::encoding::Context) -> usize {
16194            16
16195        }
16196    }
16197
16198    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SyncReport, D>
16199        for &SyncReport
16200    {
16201        #[inline]
16202        unsafe fn encode(
16203            self,
16204            encoder: &mut fidl::encoding::Encoder<'_, D>,
16205            offset: usize,
16206            _depth: fidl::encoding::Depth,
16207        ) -> fidl::Result<()> {
16208            encoder.debug_check_bounds::<SyncReport>(offset);
16209            encoder.write_num::<u64>(self.ordinal(), offset);
16210            match self {
16211            SyncReport::PeriodicAdvertisingReport(ref val) => {
16212                fidl::encoding::encode_in_envelope::<PeriodicAdvertisingReport, D>(
16213                    <PeriodicAdvertisingReport as fidl::encoding::ValueTypeMarker>::borrow(val),
16214                    encoder, offset + 8, _depth
16215                )
16216            }
16217            SyncReport::BroadcastIsochronousGroupInfoReport(ref val) => {
16218                fidl::encoding::encode_in_envelope::<BroadcastIsochronousGroupInfoReport, D>(
16219                    <BroadcastIsochronousGroupInfoReport as fidl::encoding::ValueTypeMarker>::borrow(val),
16220                    encoder, offset + 8, _depth
16221                )
16222            }
16223            SyncReport::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
16224        }
16225        }
16226    }
16227
16228    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SyncReport {
16229        #[inline(always)]
16230        fn new_empty() -> Self {
16231            Self::__SourceBreaking { unknown_ordinal: 0 }
16232        }
16233
16234        #[inline]
16235        unsafe fn decode(
16236            &mut self,
16237            decoder: &mut fidl::encoding::Decoder<'_, D>,
16238            offset: usize,
16239            mut depth: fidl::encoding::Depth,
16240        ) -> fidl::Result<()> {
16241            decoder.debug_check_bounds::<Self>(offset);
16242            #[allow(unused_variables)]
16243            let next_out_of_line = decoder.next_out_of_line();
16244            let handles_before = decoder.remaining_handles();
16245            let (ordinal, inlined, num_bytes, num_handles) =
16246                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
16247
16248            let member_inline_size = match ordinal {
16249                1 => <PeriodicAdvertisingReport as fidl::encoding::TypeMarker>::inline_size(
16250                    decoder.context,
16251                ),
16252                2 => {
16253                    <BroadcastIsochronousGroupInfoReport as fidl::encoding::TypeMarker>::inline_size(
16254                        decoder.context,
16255                    )
16256                }
16257                0 => return Err(fidl::Error::UnknownUnionTag),
16258                _ => num_bytes as usize,
16259            };
16260
16261            if inlined != (member_inline_size <= 4) {
16262                return Err(fidl::Error::InvalidInlineBitInEnvelope);
16263            }
16264            let _inner_offset;
16265            if inlined {
16266                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
16267                _inner_offset = offset + 8;
16268            } else {
16269                depth.increment()?;
16270                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16271            }
16272            match ordinal {
16273                1 => {
16274                    #[allow(irrefutable_let_patterns)]
16275                    if let SyncReport::PeriodicAdvertisingReport(_) = self {
16276                        // Do nothing, read the value into the object
16277                    } else {
16278                        // Initialize `self` to the right variant
16279                        *self = SyncReport::PeriodicAdvertisingReport(fidl::new_empty!(
16280                            PeriodicAdvertisingReport,
16281                            D
16282                        ));
16283                    }
16284                    #[allow(irrefutable_let_patterns)]
16285                    if let SyncReport::PeriodicAdvertisingReport(ref mut val) = self {
16286                        fidl::decode!(
16287                            PeriodicAdvertisingReport,
16288                            D,
16289                            val,
16290                            decoder,
16291                            _inner_offset,
16292                            depth
16293                        )?;
16294                    } else {
16295                        unreachable!()
16296                    }
16297                }
16298                2 => {
16299                    #[allow(irrefutable_let_patterns)]
16300                    if let SyncReport::BroadcastIsochronousGroupInfoReport(_) = self {
16301                        // Do nothing, read the value into the object
16302                    } else {
16303                        // Initialize `self` to the right variant
16304                        *self = SyncReport::BroadcastIsochronousGroupInfoReport(fidl::new_empty!(
16305                            BroadcastIsochronousGroupInfoReport,
16306                            D
16307                        ));
16308                    }
16309                    #[allow(irrefutable_let_patterns)]
16310                    if let SyncReport::BroadcastIsochronousGroupInfoReport(ref mut val) = self {
16311                        fidl::decode!(
16312                            BroadcastIsochronousGroupInfoReport,
16313                            D,
16314                            val,
16315                            decoder,
16316                            _inner_offset,
16317                            depth
16318                        )?;
16319                    } else {
16320                        unreachable!()
16321                    }
16322                }
16323                #[allow(deprecated)]
16324                ordinal => {
16325                    for _ in 0..num_handles {
16326                        decoder.drop_next_handle()?;
16327                    }
16328                    *self = SyncReport::__SourceBreaking { unknown_ordinal: ordinal };
16329                }
16330            }
16331            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
16332                return Err(fidl::Error::InvalidNumBytesInEnvelope);
16333            }
16334            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16335                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16336            }
16337            Ok(())
16338        }
16339    }
16340}