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<fidl_fuchsia_bluetooth_common::ChannelMode>,
5005                        D
5006                    )
5007                });
5008                fidl::decode!(
5009                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_common::ChannelMode>,
5010                    D,
5011                    val_ref,
5012                    decoder,
5013                    inner_offset,
5014                    inner_depth
5015                )?;
5016                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5017                {
5018                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5019                }
5020                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5021                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5022                }
5023            }
5024
5025            next_offset += envelope_size;
5026            _next_ordinal_to_read += 1;
5027            if next_offset >= end_offset {
5028                return Ok(());
5029            }
5030
5031            // Decode unknown envelopes for gaps in ordinals.
5032            while _next_ordinal_to_read < 2 {
5033                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5034                _next_ordinal_to_read += 1;
5035                next_offset += envelope_size;
5036            }
5037
5038            let next_out_of_line = decoder.next_out_of_line();
5039            let handles_before = decoder.remaining_handles();
5040            if let Some((inlined, num_bytes, num_handles)) =
5041                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5042            {
5043                let member_inline_size =
5044                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5045                if inlined != (member_inline_size <= 4) {
5046                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5047                }
5048                let inner_offset;
5049                let mut inner_depth = depth.clone();
5050                if inlined {
5051                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5052                    inner_offset = next_offset;
5053                } else {
5054                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5055                    inner_depth.increment()?;
5056                }
5057                let val_ref = self.max_packet_size.get_or_insert_with(|| fidl::new_empty!(u16, D));
5058                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5059                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5060                {
5061                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5062                }
5063                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5064                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5065                }
5066            }
5067
5068            next_offset += envelope_size;
5069
5070            // Decode the remaining unknown envelopes.
5071            while next_offset < end_offset {
5072                _next_ordinal_to_read += 1;
5073                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5074                next_offset += envelope_size;
5075            }
5076
5077            Ok(())
5078        }
5079    }
5080
5081    impl AdvertisingData {
5082        #[inline(always)]
5083        fn max_ordinal_present(&self) -> u64 {
5084            if let Some(_) = self.broadcast_name {
5085                return 10;
5086            }
5087            if let Some(_) = self.resolvable_set_identifier {
5088                return 9;
5089            }
5090            if let Some(_) = self.include_tx_power_level {
5091                return 8;
5092            }
5093            if let Some(_) = self.uris {
5094                return 7;
5095            }
5096            if let Some(_) = self.manufacturer_data {
5097                return 6;
5098            }
5099            if let Some(_) = self.service_data {
5100                return 5;
5101            }
5102            if let Some(_) = self.service_uuids {
5103                return 4;
5104            }
5105            if let Some(_) = self.tx_power_level {
5106                return 3;
5107            }
5108            if let Some(_) = self.appearance {
5109                return 2;
5110            }
5111            if let Some(_) = self.name {
5112                return 1;
5113            }
5114            0
5115        }
5116    }
5117
5118    impl fidl::encoding::ValueTypeMarker for AdvertisingData {
5119        type Borrowed<'a> = &'a Self;
5120        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5121            value
5122        }
5123    }
5124
5125    unsafe impl fidl::encoding::TypeMarker for AdvertisingData {
5126        type Owned = Self;
5127
5128        #[inline(always)]
5129        fn inline_align(_context: fidl::encoding::Context) -> usize {
5130            8
5131        }
5132
5133        #[inline(always)]
5134        fn inline_size(_context: fidl::encoding::Context) -> usize {
5135            16
5136        }
5137    }
5138
5139    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdvertisingData, D>
5140        for &AdvertisingData
5141    {
5142        unsafe fn encode(
5143            self,
5144            encoder: &mut fidl::encoding::Encoder<'_, D>,
5145            offset: usize,
5146            mut depth: fidl::encoding::Depth,
5147        ) -> fidl::Result<()> {
5148            encoder.debug_check_bounds::<AdvertisingData>(offset);
5149            // Vector header
5150            let max_ordinal: u64 = self.max_ordinal_present();
5151            encoder.write_num(max_ordinal, offset);
5152            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5153            // Calling encoder.out_of_line_offset(0) is not allowed.
5154            if max_ordinal == 0 {
5155                return Ok(());
5156            }
5157            depth.increment()?;
5158            let envelope_size = 8;
5159            let bytes_len = max_ordinal as usize * envelope_size;
5160            #[allow(unused_variables)]
5161            let offset = encoder.out_of_line_offset(bytes_len);
5162            let mut _prev_end_offset: usize = 0;
5163            if 1 > max_ordinal {
5164                return Ok(());
5165            }
5166
5167            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5168            // are envelope_size bytes.
5169            let cur_offset: usize = (1 - 1) * envelope_size;
5170
5171            // Zero reserved fields.
5172            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5173
5174            // Safety:
5175            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5176            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5177            //   envelope_size bytes, there is always sufficient room.
5178            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
5179                self.name.as_ref().map(
5180                    <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
5181                ),
5182                encoder,
5183                offset + cur_offset,
5184                depth,
5185            )?;
5186
5187            _prev_end_offset = cur_offset + envelope_size;
5188            if 2 > max_ordinal {
5189                return Ok(());
5190            }
5191
5192            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5193            // are envelope_size bytes.
5194            let cur_offset: usize = (2 - 1) * envelope_size;
5195
5196            // Zero reserved fields.
5197            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5198
5199            // Safety:
5200            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5201            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5202            //   envelope_size bytes, there is always sufficient room.
5203            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::Appearance, D>(
5204            self.appearance.as_ref().map(<fidl_fuchsia_bluetooth_common::Appearance as fidl::encoding::ValueTypeMarker>::borrow),
5205            encoder, offset + cur_offset, depth
5206        )?;
5207
5208            _prev_end_offset = cur_offset + envelope_size;
5209            if 3 > max_ordinal {
5210                return Ok(());
5211            }
5212
5213            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5214            // are envelope_size bytes.
5215            let cur_offset: usize = (3 - 1) * envelope_size;
5216
5217            // Zero reserved fields.
5218            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5219
5220            // Safety:
5221            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5222            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5223            //   envelope_size bytes, there is always sufficient room.
5224            fidl::encoding::encode_in_envelope_optional::<i8, D>(
5225                self.tx_power_level.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
5226                encoder,
5227                offset + cur_offset,
5228                depth,
5229            )?;
5230
5231            _prev_end_offset = cur_offset + envelope_size;
5232            if 4 > max_ordinal {
5233                return Ok(());
5234            }
5235
5236            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5237            // are envelope_size bytes.
5238            let cur_offset: usize = (4 - 1) * envelope_size;
5239
5240            // Zero reserved fields.
5241            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5242
5243            // Safety:
5244            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5245            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5246            //   envelope_size bytes, there is always sufficient room.
5247            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_common::Uuid>, D>(
5248            self.service_uuids.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_common::Uuid> as fidl::encoding::ValueTypeMarker>::borrow),
5249            encoder, offset + cur_offset, depth
5250        )?;
5251
5252            _prev_end_offset = cur_offset + envelope_size;
5253            if 5 > max_ordinal {
5254                return Ok(());
5255            }
5256
5257            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5258            // are envelope_size bytes.
5259            let cur_offset: usize = (5 - 1) * envelope_size;
5260
5261            // Zero reserved fields.
5262            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5263
5264            // Safety:
5265            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5266            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5267            //   envelope_size bytes, there is always sufficient room.
5268            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ServiceData>, D>(
5269            self.service_data.as_ref().map(<fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::ValueTypeMarker>::borrow),
5270            encoder, offset + cur_offset, depth
5271        )?;
5272
5273            _prev_end_offset = cur_offset + envelope_size;
5274            if 6 > max_ordinal {
5275                return Ok(());
5276            }
5277
5278            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5279            // are envelope_size bytes.
5280            let cur_offset: usize = (6 - 1) * envelope_size;
5281
5282            // Zero reserved fields.
5283            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5284
5285            // Safety:
5286            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5287            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5288            //   envelope_size bytes, there is always sufficient room.
5289            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ManufacturerData>, D>(
5290            self.manufacturer_data.as_ref().map(<fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::ValueTypeMarker>::borrow),
5291            encoder, offset + cur_offset, depth
5292        )?;
5293
5294            _prev_end_offset = cur_offset + envelope_size;
5295            if 7 > max_ordinal {
5296                return Ok(());
5297            }
5298
5299            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5300            // are envelope_size bytes.
5301            let cur_offset: usize = (7 - 1) * envelope_size;
5302
5303            // Zero reserved fields.
5304            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5305
5306            // Safety:
5307            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5308            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5309            //   envelope_size bytes, there is always sufficient room.
5310            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>, D>(
5311            self.uris.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>> as fidl::encoding::ValueTypeMarker>::borrow),
5312            encoder, offset + cur_offset, depth
5313        )?;
5314
5315            _prev_end_offset = cur_offset + envelope_size;
5316            if 8 > max_ordinal {
5317                return Ok(());
5318            }
5319
5320            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5321            // are envelope_size bytes.
5322            let cur_offset: usize = (8 - 1) * envelope_size;
5323
5324            // Zero reserved fields.
5325            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5326
5327            // Safety:
5328            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5329            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5330            //   envelope_size bytes, there is always sufficient room.
5331            fidl::encoding::encode_in_envelope_optional::<bool, D>(
5332                self.include_tx_power_level
5333                    .as_ref()
5334                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5335                encoder,
5336                offset + cur_offset,
5337                depth,
5338            )?;
5339
5340            _prev_end_offset = cur_offset + envelope_size;
5341            if 9 > max_ordinal {
5342                return Ok(());
5343            }
5344
5345            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5346            // are envelope_size bytes.
5347            let cur_offset: usize = (9 - 1) * envelope_size;
5348
5349            // Zero reserved fields.
5350            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5351
5352            // Safety:
5353            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5354            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5355            //   envelope_size bytes, there is always sufficient room.
5356            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5357                self.resolvable_set_identifier
5358                    .as_ref()
5359                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5360                encoder,
5361                offset + cur_offset,
5362                depth,
5363            )?;
5364
5365            _prev_end_offset = cur_offset + envelope_size;
5366            if 10 > max_ordinal {
5367                return Ok(());
5368            }
5369
5370            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5371            // are envelope_size bytes.
5372            let cur_offset: usize = (10 - 1) * envelope_size;
5373
5374            // Zero reserved fields.
5375            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5376
5377            // Safety:
5378            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5379            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5380            //   envelope_size bytes, there is always sufficient room.
5381            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
5382                self.broadcast_name.as_ref().map(
5383                    <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
5384                ),
5385                encoder,
5386                offset + cur_offset,
5387                depth,
5388            )?;
5389
5390            _prev_end_offset = cur_offset + envelope_size;
5391
5392            Ok(())
5393        }
5394    }
5395
5396    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingData {
5397        #[inline(always)]
5398        fn new_empty() -> Self {
5399            Self::default()
5400        }
5401
5402        unsafe fn decode(
5403            &mut self,
5404            decoder: &mut fidl::encoding::Decoder<'_, D>,
5405            offset: usize,
5406            mut depth: fidl::encoding::Depth,
5407        ) -> fidl::Result<()> {
5408            decoder.debug_check_bounds::<Self>(offset);
5409            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5410                None => return Err(fidl::Error::NotNullable),
5411                Some(len) => len,
5412            };
5413            // Calling decoder.out_of_line_offset(0) is not allowed.
5414            if len == 0 {
5415                return Ok(());
5416            };
5417            depth.increment()?;
5418            let envelope_size = 8;
5419            let bytes_len = len * envelope_size;
5420            let offset = decoder.out_of_line_offset(bytes_len)?;
5421            // Decode the envelope for each type.
5422            let mut _next_ordinal_to_read = 0;
5423            let mut next_offset = offset;
5424            let end_offset = offset + bytes_len;
5425            _next_ordinal_to_read += 1;
5426            if next_offset >= end_offset {
5427                return Ok(());
5428            }
5429
5430            // Decode unknown envelopes for gaps in ordinals.
5431            while _next_ordinal_to_read < 1 {
5432                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5433                _next_ordinal_to_read += 1;
5434                next_offset += envelope_size;
5435            }
5436
5437            let next_out_of_line = decoder.next_out_of_line();
5438            let handles_before = decoder.remaining_handles();
5439            if let Some((inlined, num_bytes, num_handles)) =
5440                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5441            {
5442                let member_inline_size =
5443                    <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
5444                        decoder.context,
5445                    );
5446                if inlined != (member_inline_size <= 4) {
5447                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5448                }
5449                let inner_offset;
5450                let mut inner_depth = depth.clone();
5451                if inlined {
5452                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5453                    inner_offset = next_offset;
5454                } else {
5455                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5456                    inner_depth.increment()?;
5457                }
5458                let val_ref = self
5459                    .name
5460                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
5461                fidl::decode!(
5462                    fidl::encoding::BoundedString<248>,
5463                    D,
5464                    val_ref,
5465                    decoder,
5466                    inner_offset,
5467                    inner_depth
5468                )?;
5469                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5470                {
5471                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5472                }
5473                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5474                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5475                }
5476            }
5477
5478            next_offset += envelope_size;
5479            _next_ordinal_to_read += 1;
5480            if next_offset >= end_offset {
5481                return Ok(());
5482            }
5483
5484            // Decode unknown envelopes for gaps in ordinals.
5485            while _next_ordinal_to_read < 2 {
5486                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5487                _next_ordinal_to_read += 1;
5488                next_offset += envelope_size;
5489            }
5490
5491            let next_out_of_line = decoder.next_out_of_line();
5492            let handles_before = decoder.remaining_handles();
5493            if let Some((inlined, num_bytes, num_handles)) =
5494                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5495            {
5496                let member_inline_size = <fidl_fuchsia_bluetooth_common::Appearance as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5497                if inlined != (member_inline_size <= 4) {
5498                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5499                }
5500                let inner_offset;
5501                let mut inner_depth = depth.clone();
5502                if inlined {
5503                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5504                    inner_offset = next_offset;
5505                } else {
5506                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5507                    inner_depth.increment()?;
5508                }
5509                let val_ref = self.appearance.get_or_insert_with(|| {
5510                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::Appearance, D)
5511                });
5512                fidl::decode!(
5513                    fidl_fuchsia_bluetooth_common::Appearance,
5514                    D,
5515                    val_ref,
5516                    decoder,
5517                    inner_offset,
5518                    inner_depth
5519                )?;
5520                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5521                {
5522                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5523                }
5524                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5525                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5526                }
5527            }
5528
5529            next_offset += envelope_size;
5530            _next_ordinal_to_read += 1;
5531            if next_offset >= end_offset {
5532                return Ok(());
5533            }
5534
5535            // Decode unknown envelopes for gaps in ordinals.
5536            while _next_ordinal_to_read < 3 {
5537                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5538                _next_ordinal_to_read += 1;
5539                next_offset += envelope_size;
5540            }
5541
5542            let next_out_of_line = decoder.next_out_of_line();
5543            let handles_before = decoder.remaining_handles();
5544            if let Some((inlined, num_bytes, num_handles)) =
5545                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5546            {
5547                let member_inline_size =
5548                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5549                if inlined != (member_inline_size <= 4) {
5550                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5551                }
5552                let inner_offset;
5553                let mut inner_depth = depth.clone();
5554                if inlined {
5555                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5556                    inner_offset = next_offset;
5557                } else {
5558                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5559                    inner_depth.increment()?;
5560                }
5561                let val_ref = self.tx_power_level.get_or_insert_with(|| fidl::new_empty!(i8, D));
5562                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
5563                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5564                {
5565                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5566                }
5567                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5568                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5569                }
5570            }
5571
5572            next_offset += envelope_size;
5573            _next_ordinal_to_read += 1;
5574            if next_offset >= end_offset {
5575                return Ok(());
5576            }
5577
5578            // Decode unknown envelopes for gaps in ordinals.
5579            while _next_ordinal_to_read < 4 {
5580                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5581                _next_ordinal_to_read += 1;
5582                next_offset += envelope_size;
5583            }
5584
5585            let next_out_of_line = decoder.next_out_of_line();
5586            let handles_before = decoder.remaining_handles();
5587            if let Some((inlined, num_bytes, num_handles)) =
5588                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5589            {
5590                let member_inline_size = <fidl::encoding::UnboundedVector<
5591                    fidl_fuchsia_bluetooth_common::Uuid,
5592                > as fidl::encoding::TypeMarker>::inline_size(
5593                    decoder.context
5594                );
5595                if inlined != (member_inline_size <= 4) {
5596                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5597                }
5598                let inner_offset;
5599                let mut inner_depth = depth.clone();
5600                if inlined {
5601                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5602                    inner_offset = next_offset;
5603                } else {
5604                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5605                    inner_depth.increment()?;
5606                }
5607                let val_ref = self.service_uuids.get_or_insert_with(|| {
5608                    fidl::new_empty!(
5609                        fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_common::Uuid>,
5610                        D
5611                    )
5612                });
5613                fidl::decode!(
5614                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_common::Uuid>,
5615                    D,
5616                    val_ref,
5617                    decoder,
5618                    inner_offset,
5619                    inner_depth
5620                )?;
5621                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5622                {
5623                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5624                }
5625                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5626                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5627                }
5628            }
5629
5630            next_offset += envelope_size;
5631            _next_ordinal_to_read += 1;
5632            if next_offset >= end_offset {
5633                return Ok(());
5634            }
5635
5636            // Decode unknown envelopes for gaps in ordinals.
5637            while _next_ordinal_to_read < 5 {
5638                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5639                _next_ordinal_to_read += 1;
5640                next_offset += envelope_size;
5641            }
5642
5643            let next_out_of_line = decoder.next_out_of_line();
5644            let handles_before = decoder.remaining_handles();
5645            if let Some((inlined, num_bytes, num_handles)) =
5646                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5647            {
5648                let member_inline_size = <fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5649                if inlined != (member_inline_size <= 4) {
5650                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5651                }
5652                let inner_offset;
5653                let mut inner_depth = depth.clone();
5654                if inlined {
5655                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5656                    inner_offset = next_offset;
5657                } else {
5658                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5659                    inner_depth.increment()?;
5660                }
5661                let val_ref = self.service_data.get_or_insert_with(|| {
5662                    fidl::new_empty!(fidl::encoding::UnboundedVector<ServiceData>, D)
5663                });
5664                fidl::decode!(
5665                    fidl::encoding::UnboundedVector<ServiceData>,
5666                    D,
5667                    val_ref,
5668                    decoder,
5669                    inner_offset,
5670                    inner_depth
5671                )?;
5672                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5673                {
5674                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5675                }
5676                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5677                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5678                }
5679            }
5680
5681            next_offset += envelope_size;
5682            _next_ordinal_to_read += 1;
5683            if next_offset >= end_offset {
5684                return Ok(());
5685            }
5686
5687            // Decode unknown envelopes for gaps in ordinals.
5688            while _next_ordinal_to_read < 6 {
5689                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5690                _next_ordinal_to_read += 1;
5691                next_offset += envelope_size;
5692            }
5693
5694            let next_out_of_line = decoder.next_out_of_line();
5695            let handles_before = decoder.remaining_handles();
5696            if let Some((inlined, num_bytes, num_handles)) =
5697                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5698            {
5699                let member_inline_size = <fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5700                if inlined != (member_inline_size <= 4) {
5701                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5702                }
5703                let inner_offset;
5704                let mut inner_depth = depth.clone();
5705                if inlined {
5706                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5707                    inner_offset = next_offset;
5708                } else {
5709                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5710                    inner_depth.increment()?;
5711                }
5712                let val_ref = self.manufacturer_data.get_or_insert_with(|| {
5713                    fidl::new_empty!(fidl::encoding::UnboundedVector<ManufacturerData>, D)
5714                });
5715                fidl::decode!(
5716                    fidl::encoding::UnboundedVector<ManufacturerData>,
5717                    D,
5718                    val_ref,
5719                    decoder,
5720                    inner_offset,
5721                    inner_depth
5722                )?;
5723                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5724                {
5725                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5726                }
5727                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5728                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5729                }
5730            }
5731
5732            next_offset += envelope_size;
5733            _next_ordinal_to_read += 1;
5734            if next_offset >= end_offset {
5735                return Ok(());
5736            }
5737
5738            // Decode unknown envelopes for gaps in ordinals.
5739            while _next_ordinal_to_read < 7 {
5740                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5741                _next_ordinal_to_read += 1;
5742                next_offset += envelope_size;
5743            }
5744
5745            let next_out_of_line = decoder.next_out_of_line();
5746            let handles_before = decoder.remaining_handles();
5747            if let Some((inlined, num_bytes, num_handles)) =
5748                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5749            {
5750                let member_inline_size = <fidl::encoding::UnboundedVector<
5751                    fidl::encoding::BoundedString<278>,
5752                > as fidl::encoding::TypeMarker>::inline_size(
5753                    decoder.context
5754                );
5755                if inlined != (member_inline_size <= 4) {
5756                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5757                }
5758                let inner_offset;
5759                let mut inner_depth = depth.clone();
5760                if inlined {
5761                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5762                    inner_offset = next_offset;
5763                } else {
5764                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5765                    inner_depth.increment()?;
5766                }
5767                let val_ref = self.uris.get_or_insert_with(|| {
5768                    fidl::new_empty!(
5769                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
5770                        D
5771                    )
5772                });
5773                fidl::decode!(
5774                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
5775                    D,
5776                    val_ref,
5777                    decoder,
5778                    inner_offset,
5779                    inner_depth
5780                )?;
5781                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5782                {
5783                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5784                }
5785                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5786                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5787                }
5788            }
5789
5790            next_offset += envelope_size;
5791            _next_ordinal_to_read += 1;
5792            if next_offset >= end_offset {
5793                return Ok(());
5794            }
5795
5796            // Decode unknown envelopes for gaps in ordinals.
5797            while _next_ordinal_to_read < 8 {
5798                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5799                _next_ordinal_to_read += 1;
5800                next_offset += envelope_size;
5801            }
5802
5803            let next_out_of_line = decoder.next_out_of_line();
5804            let handles_before = decoder.remaining_handles();
5805            if let Some((inlined, num_bytes, num_handles)) =
5806                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5807            {
5808                let member_inline_size =
5809                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5810                if inlined != (member_inline_size <= 4) {
5811                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5812                }
5813                let inner_offset;
5814                let mut inner_depth = depth.clone();
5815                if inlined {
5816                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5817                    inner_offset = next_offset;
5818                } else {
5819                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5820                    inner_depth.increment()?;
5821                }
5822                let val_ref =
5823                    self.include_tx_power_level.get_or_insert_with(|| fidl::new_empty!(bool, D));
5824                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5825                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5826                {
5827                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5828                }
5829                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5830                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5831                }
5832            }
5833
5834            next_offset += envelope_size;
5835            _next_ordinal_to_read += 1;
5836            if next_offset >= end_offset {
5837                return Ok(());
5838            }
5839
5840            // Decode unknown envelopes for gaps in ordinals.
5841            while _next_ordinal_to_read < 9 {
5842                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5843                _next_ordinal_to_read += 1;
5844                next_offset += envelope_size;
5845            }
5846
5847            let next_out_of_line = decoder.next_out_of_line();
5848            let handles_before = decoder.remaining_handles();
5849            if let Some((inlined, num_bytes, num_handles)) =
5850                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5851            {
5852                let member_inline_size =
5853                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5854                        decoder.context,
5855                    );
5856                if inlined != (member_inline_size <= 4) {
5857                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5858                }
5859                let inner_offset;
5860                let mut inner_depth = depth.clone();
5861                if inlined {
5862                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5863                    inner_offset = next_offset;
5864                } else {
5865                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5866                    inner_depth.increment()?;
5867                }
5868                let val_ref = self
5869                    .resolvable_set_identifier
5870                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5871                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5872                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5873                {
5874                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5875                }
5876                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5877                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5878                }
5879            }
5880
5881            next_offset += envelope_size;
5882            _next_ordinal_to_read += 1;
5883            if next_offset >= end_offset {
5884                return Ok(());
5885            }
5886
5887            // Decode unknown envelopes for gaps in ordinals.
5888            while _next_ordinal_to_read < 10 {
5889                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5890                _next_ordinal_to_read += 1;
5891                next_offset += envelope_size;
5892            }
5893
5894            let next_out_of_line = decoder.next_out_of_line();
5895            let handles_before = decoder.remaining_handles();
5896            if let Some((inlined, num_bytes, num_handles)) =
5897                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5898            {
5899                let member_inline_size =
5900                    <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
5901                        decoder.context,
5902                    );
5903                if inlined != (member_inline_size <= 4) {
5904                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5905                }
5906                let inner_offset;
5907                let mut inner_depth = depth.clone();
5908                if inlined {
5909                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5910                    inner_offset = next_offset;
5911                } else {
5912                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5913                    inner_depth.increment()?;
5914                }
5915                let val_ref = self
5916                    .broadcast_name
5917                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
5918                fidl::decode!(
5919                    fidl::encoding::BoundedString<128>,
5920                    D,
5921                    val_ref,
5922                    decoder,
5923                    inner_offset,
5924                    inner_depth
5925                )?;
5926                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5927                {
5928                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5929                }
5930                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5931                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5932                }
5933            }
5934
5935            next_offset += envelope_size;
5936
5937            // Decode the remaining unknown envelopes.
5938            while next_offset < end_offset {
5939                _next_ordinal_to_read += 1;
5940                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5941                next_offset += envelope_size;
5942            }
5943
5944            Ok(())
5945        }
5946    }
5947
5948    impl AdvertisingParameters {
5949        #[inline(always)]
5950        fn max_ordinal_present(&self) -> u64 {
5951            if let Some(_) = self.address_type {
5952                return 7;
5953            }
5954            if let Some(_) = self.advertising_procedure {
5955                return 6;
5956            }
5957            if let Some(_) = self.connection_options {
5958                return 5;
5959            }
5960            if let Some(_) = self.connectable {
5961                return 4;
5962            }
5963            if let Some(_) = self.mode_hint {
5964                return 3;
5965            }
5966            if let Some(_) = self.scan_response {
5967                return 2;
5968            }
5969            if let Some(_) = self.data {
5970                return 1;
5971            }
5972            0
5973        }
5974    }
5975
5976    impl fidl::encoding::ValueTypeMarker for AdvertisingParameters {
5977        type Borrowed<'a> = &'a Self;
5978        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5979            value
5980        }
5981    }
5982
5983    unsafe impl fidl::encoding::TypeMarker for AdvertisingParameters {
5984        type Owned = Self;
5985
5986        #[inline(always)]
5987        fn inline_align(_context: fidl::encoding::Context) -> usize {
5988            8
5989        }
5990
5991        #[inline(always)]
5992        fn inline_size(_context: fidl::encoding::Context) -> usize {
5993            16
5994        }
5995    }
5996
5997    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdvertisingParameters, D>
5998        for &AdvertisingParameters
5999    {
6000        unsafe fn encode(
6001            self,
6002            encoder: &mut fidl::encoding::Encoder<'_, D>,
6003            offset: usize,
6004            mut depth: fidl::encoding::Depth,
6005        ) -> fidl::Result<()> {
6006            encoder.debug_check_bounds::<AdvertisingParameters>(offset);
6007            // Vector header
6008            let max_ordinal: u64 = self.max_ordinal_present();
6009            encoder.write_num(max_ordinal, offset);
6010            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6011            // Calling encoder.out_of_line_offset(0) is not allowed.
6012            if max_ordinal == 0 {
6013                return Ok(());
6014            }
6015            depth.increment()?;
6016            let envelope_size = 8;
6017            let bytes_len = max_ordinal as usize * envelope_size;
6018            #[allow(unused_variables)]
6019            let offset = encoder.out_of_line_offset(bytes_len);
6020            let mut _prev_end_offset: usize = 0;
6021            if 1 > max_ordinal {
6022                return Ok(());
6023            }
6024
6025            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6026            // are envelope_size bytes.
6027            let cur_offset: usize = (1 - 1) * envelope_size;
6028
6029            // Zero reserved fields.
6030            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6031
6032            // Safety:
6033            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6034            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6035            //   envelope_size bytes, there is always sufficient room.
6036            fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
6037                self.data
6038                    .as_ref()
6039                    .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
6040                encoder,
6041                offset + cur_offset,
6042                depth,
6043            )?;
6044
6045            _prev_end_offset = cur_offset + envelope_size;
6046            if 2 > max_ordinal {
6047                return Ok(());
6048            }
6049
6050            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6051            // are envelope_size bytes.
6052            let cur_offset: usize = (2 - 1) * envelope_size;
6053
6054            // Zero reserved fields.
6055            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6056
6057            // Safety:
6058            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6059            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6060            //   envelope_size bytes, there is always sufficient room.
6061            fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
6062                self.scan_response
6063                    .as_ref()
6064                    .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
6065                encoder,
6066                offset + cur_offset,
6067                depth,
6068            )?;
6069
6070            _prev_end_offset = cur_offset + envelope_size;
6071            if 3 > max_ordinal {
6072                return Ok(());
6073            }
6074
6075            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6076            // are envelope_size bytes.
6077            let cur_offset: usize = (3 - 1) * envelope_size;
6078
6079            // Zero reserved fields.
6080            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6081
6082            // Safety:
6083            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6084            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6085            //   envelope_size bytes, there is always sufficient room.
6086            fidl::encoding::encode_in_envelope_optional::<AdvertisingModeHint, D>(
6087                self.mode_hint
6088                    .as_ref()
6089                    .map(<AdvertisingModeHint as fidl::encoding::ValueTypeMarker>::borrow),
6090                encoder,
6091                offset + cur_offset,
6092                depth,
6093            )?;
6094
6095            _prev_end_offset = cur_offset + envelope_size;
6096            if 4 > max_ordinal {
6097                return Ok(());
6098            }
6099
6100            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6101            // are envelope_size bytes.
6102            let cur_offset: usize = (4 - 1) * envelope_size;
6103
6104            // Zero reserved fields.
6105            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6106
6107            // Safety:
6108            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6109            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6110            //   envelope_size bytes, there is always sufficient room.
6111            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6112                self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6113                encoder,
6114                offset + cur_offset,
6115                depth,
6116            )?;
6117
6118            _prev_end_offset = cur_offset + envelope_size;
6119            if 5 > max_ordinal {
6120                return Ok(());
6121            }
6122
6123            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6124            // are envelope_size bytes.
6125            let cur_offset: usize = (5 - 1) * envelope_size;
6126
6127            // Zero reserved fields.
6128            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6129
6130            // Safety:
6131            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6132            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6133            //   envelope_size bytes, there is always sufficient room.
6134            fidl::encoding::encode_in_envelope_optional::<ConnectionOptions, D>(
6135                self.connection_options
6136                    .as_ref()
6137                    .map(<ConnectionOptions as fidl::encoding::ValueTypeMarker>::borrow),
6138                encoder,
6139                offset + cur_offset,
6140                depth,
6141            )?;
6142
6143            _prev_end_offset = cur_offset + envelope_size;
6144            if 6 > max_ordinal {
6145                return Ok(());
6146            }
6147
6148            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6149            // are envelope_size bytes.
6150            let cur_offset: usize = (6 - 1) * envelope_size;
6151
6152            // Zero reserved fields.
6153            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6154
6155            // Safety:
6156            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6157            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6158            //   envelope_size bytes, there is always sufficient room.
6159            fidl::encoding::encode_in_envelope_optional::<AdvertisingProcedure, D>(
6160                self.advertising_procedure
6161                    .as_ref()
6162                    .map(<AdvertisingProcedure as fidl::encoding::ValueTypeMarker>::borrow),
6163                encoder,
6164                offset + cur_offset,
6165                depth,
6166            )?;
6167
6168            _prev_end_offset = cur_offset + envelope_size;
6169            if 7 > max_ordinal {
6170                return Ok(());
6171            }
6172
6173            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6174            // are envelope_size bytes.
6175            let cur_offset: usize = (7 - 1) * envelope_size;
6176
6177            // Zero reserved fields.
6178            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6179
6180            // Safety:
6181            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6182            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6183            //   envelope_size bytes, there is always sufficient room.
6184            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::AddressType, D>(
6185            self.address_type.as_ref().map(<fidl_fuchsia_bluetooth_common::AddressType as fidl::encoding::ValueTypeMarker>::borrow),
6186            encoder, offset + cur_offset, depth
6187        )?;
6188
6189            _prev_end_offset = cur_offset + envelope_size;
6190
6191            Ok(())
6192        }
6193    }
6194
6195    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingParameters {
6196        #[inline(always)]
6197        fn new_empty() -> Self {
6198            Self::default()
6199        }
6200
6201        unsafe fn decode(
6202            &mut self,
6203            decoder: &mut fidl::encoding::Decoder<'_, D>,
6204            offset: usize,
6205            mut depth: fidl::encoding::Depth,
6206        ) -> fidl::Result<()> {
6207            decoder.debug_check_bounds::<Self>(offset);
6208            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6209                None => return Err(fidl::Error::NotNullable),
6210                Some(len) => len,
6211            };
6212            // Calling decoder.out_of_line_offset(0) is not allowed.
6213            if len == 0 {
6214                return Ok(());
6215            };
6216            depth.increment()?;
6217            let envelope_size = 8;
6218            let bytes_len = len * envelope_size;
6219            let offset = decoder.out_of_line_offset(bytes_len)?;
6220            // Decode the envelope for each type.
6221            let mut _next_ordinal_to_read = 0;
6222            let mut next_offset = offset;
6223            let end_offset = offset + bytes_len;
6224            _next_ordinal_to_read += 1;
6225            if next_offset >= end_offset {
6226                return Ok(());
6227            }
6228
6229            // Decode unknown envelopes for gaps in ordinals.
6230            while _next_ordinal_to_read < 1 {
6231                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6232                _next_ordinal_to_read += 1;
6233                next_offset += envelope_size;
6234            }
6235
6236            let next_out_of_line = decoder.next_out_of_line();
6237            let handles_before = decoder.remaining_handles();
6238            if let Some((inlined, num_bytes, num_handles)) =
6239                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6240            {
6241                let member_inline_size =
6242                    <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6243                if inlined != (member_inline_size <= 4) {
6244                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6245                }
6246                let inner_offset;
6247                let mut inner_depth = depth.clone();
6248                if inlined {
6249                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6250                    inner_offset = next_offset;
6251                } else {
6252                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6253                    inner_depth.increment()?;
6254                }
6255                let val_ref = self.data.get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
6256                fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
6257                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6258                {
6259                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6260                }
6261                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6262                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6263                }
6264            }
6265
6266            next_offset += envelope_size;
6267            _next_ordinal_to_read += 1;
6268            if next_offset >= end_offset {
6269                return Ok(());
6270            }
6271
6272            // Decode unknown envelopes for gaps in ordinals.
6273            while _next_ordinal_to_read < 2 {
6274                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6275                _next_ordinal_to_read += 1;
6276                next_offset += envelope_size;
6277            }
6278
6279            let next_out_of_line = decoder.next_out_of_line();
6280            let handles_before = decoder.remaining_handles();
6281            if let Some((inlined, num_bytes, num_handles)) =
6282                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6283            {
6284                let member_inline_size =
6285                    <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6286                if inlined != (member_inline_size <= 4) {
6287                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6288                }
6289                let inner_offset;
6290                let mut inner_depth = depth.clone();
6291                if inlined {
6292                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6293                    inner_offset = next_offset;
6294                } else {
6295                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6296                    inner_depth.increment()?;
6297                }
6298                let val_ref =
6299                    self.scan_response.get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
6300                fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
6301                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6302                {
6303                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6304                }
6305                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6306                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6307                }
6308            }
6309
6310            next_offset += envelope_size;
6311            _next_ordinal_to_read += 1;
6312            if next_offset >= end_offset {
6313                return Ok(());
6314            }
6315
6316            // Decode unknown envelopes for gaps in ordinals.
6317            while _next_ordinal_to_read < 3 {
6318                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6319                _next_ordinal_to_read += 1;
6320                next_offset += envelope_size;
6321            }
6322
6323            let next_out_of_line = decoder.next_out_of_line();
6324            let handles_before = decoder.remaining_handles();
6325            if let Some((inlined, num_bytes, num_handles)) =
6326                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6327            {
6328                let member_inline_size =
6329                    <AdvertisingModeHint as fidl::encoding::TypeMarker>::inline_size(
6330                        decoder.context,
6331                    );
6332                if inlined != (member_inline_size <= 4) {
6333                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6334                }
6335                let inner_offset;
6336                let mut inner_depth = depth.clone();
6337                if inlined {
6338                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6339                    inner_offset = next_offset;
6340                } else {
6341                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6342                    inner_depth.increment()?;
6343                }
6344                let val_ref =
6345                    self.mode_hint.get_or_insert_with(|| fidl::new_empty!(AdvertisingModeHint, D));
6346                fidl::decode!(AdvertisingModeHint, D, val_ref, decoder, inner_offset, inner_depth)?;
6347                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6348                {
6349                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6350                }
6351                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6352                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6353                }
6354            }
6355
6356            next_offset += envelope_size;
6357            _next_ordinal_to_read += 1;
6358            if next_offset >= end_offset {
6359                return Ok(());
6360            }
6361
6362            // Decode unknown envelopes for gaps in ordinals.
6363            while _next_ordinal_to_read < 4 {
6364                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6365                _next_ordinal_to_read += 1;
6366                next_offset += envelope_size;
6367            }
6368
6369            let next_out_of_line = decoder.next_out_of_line();
6370            let handles_before = decoder.remaining_handles();
6371            if let Some((inlined, num_bytes, num_handles)) =
6372                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6373            {
6374                let member_inline_size =
6375                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6376                if inlined != (member_inline_size <= 4) {
6377                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6378                }
6379                let inner_offset;
6380                let mut inner_depth = depth.clone();
6381                if inlined {
6382                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6383                    inner_offset = next_offset;
6384                } else {
6385                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6386                    inner_depth.increment()?;
6387                }
6388                let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
6389                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6390                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6391                {
6392                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6393                }
6394                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6395                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6396                }
6397            }
6398
6399            next_offset += envelope_size;
6400            _next_ordinal_to_read += 1;
6401            if next_offset >= end_offset {
6402                return Ok(());
6403            }
6404
6405            // Decode unknown envelopes for gaps in ordinals.
6406            while _next_ordinal_to_read < 5 {
6407                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6408                _next_ordinal_to_read += 1;
6409                next_offset += envelope_size;
6410            }
6411
6412            let next_out_of_line = decoder.next_out_of_line();
6413            let handles_before = decoder.remaining_handles();
6414            if let Some((inlined, num_bytes, num_handles)) =
6415                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6416            {
6417                let member_inline_size =
6418                    <ConnectionOptions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6419                if inlined != (member_inline_size <= 4) {
6420                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6421                }
6422                let inner_offset;
6423                let mut inner_depth = depth.clone();
6424                if inlined {
6425                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6426                    inner_offset = next_offset;
6427                } else {
6428                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6429                    inner_depth.increment()?;
6430                }
6431                let val_ref = self
6432                    .connection_options
6433                    .get_or_insert_with(|| fidl::new_empty!(ConnectionOptions, D));
6434                fidl::decode!(ConnectionOptions, D, val_ref, decoder, inner_offset, inner_depth)?;
6435                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6436                {
6437                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6438                }
6439                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6440                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6441                }
6442            }
6443
6444            next_offset += envelope_size;
6445            _next_ordinal_to_read += 1;
6446            if next_offset >= end_offset {
6447                return Ok(());
6448            }
6449
6450            // Decode unknown envelopes for gaps in ordinals.
6451            while _next_ordinal_to_read < 6 {
6452                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6453                _next_ordinal_to_read += 1;
6454                next_offset += envelope_size;
6455            }
6456
6457            let next_out_of_line = decoder.next_out_of_line();
6458            let handles_before = decoder.remaining_handles();
6459            if let Some((inlined, num_bytes, num_handles)) =
6460                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6461            {
6462                let member_inline_size =
6463                    <AdvertisingProcedure as fidl::encoding::TypeMarker>::inline_size(
6464                        decoder.context,
6465                    );
6466                if inlined != (member_inline_size <= 4) {
6467                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6468                }
6469                let inner_offset;
6470                let mut inner_depth = depth.clone();
6471                if inlined {
6472                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6473                    inner_offset = next_offset;
6474                } else {
6475                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6476                    inner_depth.increment()?;
6477                }
6478                let val_ref = self
6479                    .advertising_procedure
6480                    .get_or_insert_with(|| fidl::new_empty!(AdvertisingProcedure, D));
6481                fidl::decode!(
6482                    AdvertisingProcedure,
6483                    D,
6484                    val_ref,
6485                    decoder,
6486                    inner_offset,
6487                    inner_depth
6488                )?;
6489                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6490                {
6491                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6492                }
6493                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6494                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6495                }
6496            }
6497
6498            next_offset += envelope_size;
6499            _next_ordinal_to_read += 1;
6500            if next_offset >= end_offset {
6501                return Ok(());
6502            }
6503
6504            // Decode unknown envelopes for gaps in ordinals.
6505            while _next_ordinal_to_read < 7 {
6506                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6507                _next_ordinal_to_read += 1;
6508                next_offset += envelope_size;
6509            }
6510
6511            let next_out_of_line = decoder.next_out_of_line();
6512            let handles_before = decoder.remaining_handles();
6513            if let Some((inlined, num_bytes, num_handles)) =
6514                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6515            {
6516                let member_inline_size = <fidl_fuchsia_bluetooth_common::AddressType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6517                if inlined != (member_inline_size <= 4) {
6518                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6519                }
6520                let inner_offset;
6521                let mut inner_depth = depth.clone();
6522                if inlined {
6523                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6524                    inner_offset = next_offset;
6525                } else {
6526                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6527                    inner_depth.increment()?;
6528                }
6529                let val_ref = self.address_type.get_or_insert_with(|| {
6530                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::AddressType, D)
6531                });
6532                fidl::decode!(
6533                    fidl_fuchsia_bluetooth_common::AddressType,
6534                    D,
6535                    val_ref,
6536                    decoder,
6537                    inner_offset,
6538                    inner_depth
6539                )?;
6540                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6541                {
6542                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6543                }
6544                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6545                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6546                }
6547            }
6548
6549            next_offset += envelope_size;
6550
6551            // Decode the remaining unknown envelopes.
6552            while next_offset < end_offset {
6553                _next_ordinal_to_read += 1;
6554                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6555                next_offset += envelope_size;
6556            }
6557
6558            Ok(())
6559        }
6560    }
6561
6562    impl BroadcastIsochronousGroupInfo {
6563        #[inline(always)]
6564        fn max_ordinal_present(&self) -> u64 {
6565            if let Some(_) = self.encryption {
6566                return 4;
6567            }
6568            if let Some(_) = self.phy {
6569                return 3;
6570            }
6571            if let Some(_) = self.max_sdu_size {
6572                return 2;
6573            }
6574            if let Some(_) = self.streams_count {
6575                return 1;
6576            }
6577            0
6578        }
6579    }
6580
6581    impl fidl::encoding::ValueTypeMarker for BroadcastIsochronousGroupInfo {
6582        type Borrowed<'a> = &'a Self;
6583        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6584            value
6585        }
6586    }
6587
6588    unsafe impl fidl::encoding::TypeMarker for BroadcastIsochronousGroupInfo {
6589        type Owned = Self;
6590
6591        #[inline(always)]
6592        fn inline_align(_context: fidl::encoding::Context) -> usize {
6593            8
6594        }
6595
6596        #[inline(always)]
6597        fn inline_size(_context: fidl::encoding::Context) -> usize {
6598            16
6599        }
6600    }
6601
6602    unsafe impl<D: fidl::encoding::ResourceDialect>
6603        fidl::encoding::Encode<BroadcastIsochronousGroupInfo, D>
6604        for &BroadcastIsochronousGroupInfo
6605    {
6606        unsafe fn encode(
6607            self,
6608            encoder: &mut fidl::encoding::Encoder<'_, D>,
6609            offset: usize,
6610            mut depth: fidl::encoding::Depth,
6611        ) -> fidl::Result<()> {
6612            encoder.debug_check_bounds::<BroadcastIsochronousGroupInfo>(offset);
6613            // Vector header
6614            let max_ordinal: u64 = self.max_ordinal_present();
6615            encoder.write_num(max_ordinal, offset);
6616            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6617            // Calling encoder.out_of_line_offset(0) is not allowed.
6618            if max_ordinal == 0 {
6619                return Ok(());
6620            }
6621            depth.increment()?;
6622            let envelope_size = 8;
6623            let bytes_len = max_ordinal as usize * envelope_size;
6624            #[allow(unused_variables)]
6625            let offset = encoder.out_of_line_offset(bytes_len);
6626            let mut _prev_end_offset: usize = 0;
6627            if 1 > max_ordinal {
6628                return Ok(());
6629            }
6630
6631            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6632            // are envelope_size bytes.
6633            let cur_offset: usize = (1 - 1) * envelope_size;
6634
6635            // Zero reserved fields.
6636            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6637
6638            // Safety:
6639            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6640            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6641            //   envelope_size bytes, there is always sufficient room.
6642            fidl::encoding::encode_in_envelope_optional::<u8, D>(
6643                self.streams_count.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
6644                encoder,
6645                offset + cur_offset,
6646                depth,
6647            )?;
6648
6649            _prev_end_offset = cur_offset + envelope_size;
6650            if 2 > max_ordinal {
6651                return Ok(());
6652            }
6653
6654            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6655            // are envelope_size bytes.
6656            let cur_offset: usize = (2 - 1) * envelope_size;
6657
6658            // Zero reserved fields.
6659            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6660
6661            // Safety:
6662            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6663            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6664            //   envelope_size bytes, there is always sufficient room.
6665            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6666                self.max_sdu_size.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6667                encoder,
6668                offset + cur_offset,
6669                depth,
6670            )?;
6671
6672            _prev_end_offset = cur_offset + envelope_size;
6673            if 3 > max_ordinal {
6674                return Ok(());
6675            }
6676
6677            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6678            // are envelope_size bytes.
6679            let cur_offset: usize = (3 - 1) * envelope_size;
6680
6681            // Zero reserved fields.
6682            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6683
6684            // Safety:
6685            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6686            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6687            //   envelope_size bytes, there is always sufficient room.
6688            fidl::encoding::encode_in_envelope_optional::<PhysicalLayer, D>(
6689                self.phy.as_ref().map(<PhysicalLayer as fidl::encoding::ValueTypeMarker>::borrow),
6690                encoder,
6691                offset + cur_offset,
6692                depth,
6693            )?;
6694
6695            _prev_end_offset = cur_offset + envelope_size;
6696            if 4 > max_ordinal {
6697                return Ok(());
6698            }
6699
6700            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6701            // are envelope_size bytes.
6702            let cur_offset: usize = (4 - 1) * envelope_size;
6703
6704            // Zero reserved fields.
6705            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6706
6707            // Safety:
6708            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6709            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6710            //   envelope_size bytes, there is always sufficient room.
6711            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6712                self.encryption.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6713                encoder,
6714                offset + cur_offset,
6715                depth,
6716            )?;
6717
6718            _prev_end_offset = cur_offset + envelope_size;
6719
6720            Ok(())
6721        }
6722    }
6723
6724    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6725        for BroadcastIsochronousGroupInfo
6726    {
6727        #[inline(always)]
6728        fn new_empty() -> Self {
6729            Self::default()
6730        }
6731
6732        unsafe fn decode(
6733            &mut self,
6734            decoder: &mut fidl::encoding::Decoder<'_, D>,
6735            offset: usize,
6736            mut depth: fidl::encoding::Depth,
6737        ) -> fidl::Result<()> {
6738            decoder.debug_check_bounds::<Self>(offset);
6739            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6740                None => return Err(fidl::Error::NotNullable),
6741                Some(len) => len,
6742            };
6743            // Calling decoder.out_of_line_offset(0) is not allowed.
6744            if len == 0 {
6745                return Ok(());
6746            };
6747            depth.increment()?;
6748            let envelope_size = 8;
6749            let bytes_len = len * envelope_size;
6750            let offset = decoder.out_of_line_offset(bytes_len)?;
6751            // Decode the envelope for each type.
6752            let mut _next_ordinal_to_read = 0;
6753            let mut next_offset = offset;
6754            let end_offset = offset + bytes_len;
6755            _next_ordinal_to_read += 1;
6756            if next_offset >= end_offset {
6757                return Ok(());
6758            }
6759
6760            // Decode unknown envelopes for gaps in ordinals.
6761            while _next_ordinal_to_read < 1 {
6762                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6763                _next_ordinal_to_read += 1;
6764                next_offset += envelope_size;
6765            }
6766
6767            let next_out_of_line = decoder.next_out_of_line();
6768            let handles_before = decoder.remaining_handles();
6769            if let Some((inlined, num_bytes, num_handles)) =
6770                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6771            {
6772                let member_inline_size =
6773                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6774                if inlined != (member_inline_size <= 4) {
6775                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6776                }
6777                let inner_offset;
6778                let mut inner_depth = depth.clone();
6779                if inlined {
6780                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6781                    inner_offset = next_offset;
6782                } else {
6783                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6784                    inner_depth.increment()?;
6785                }
6786                let val_ref = self.streams_count.get_or_insert_with(|| fidl::new_empty!(u8, D));
6787                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
6788                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6789                {
6790                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6791                }
6792                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6793                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6794                }
6795            }
6796
6797            next_offset += envelope_size;
6798            _next_ordinal_to_read += 1;
6799            if next_offset >= end_offset {
6800                return Ok(());
6801            }
6802
6803            // Decode unknown envelopes for gaps in ordinals.
6804            while _next_ordinal_to_read < 2 {
6805                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6806                _next_ordinal_to_read += 1;
6807                next_offset += envelope_size;
6808            }
6809
6810            let next_out_of_line = decoder.next_out_of_line();
6811            let handles_before = decoder.remaining_handles();
6812            if let Some((inlined, num_bytes, num_handles)) =
6813                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6814            {
6815                let member_inline_size =
6816                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6817                if inlined != (member_inline_size <= 4) {
6818                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6819                }
6820                let inner_offset;
6821                let mut inner_depth = depth.clone();
6822                if inlined {
6823                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6824                    inner_offset = next_offset;
6825                } else {
6826                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6827                    inner_depth.increment()?;
6828                }
6829                let val_ref = self.max_sdu_size.get_or_insert_with(|| fidl::new_empty!(u16, D));
6830                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6831                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6832                {
6833                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6834                }
6835                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6836                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6837                }
6838            }
6839
6840            next_offset += envelope_size;
6841            _next_ordinal_to_read += 1;
6842            if next_offset >= end_offset {
6843                return Ok(());
6844            }
6845
6846            // Decode unknown envelopes for gaps in ordinals.
6847            while _next_ordinal_to_read < 3 {
6848                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6849                _next_ordinal_to_read += 1;
6850                next_offset += envelope_size;
6851            }
6852
6853            let next_out_of_line = decoder.next_out_of_line();
6854            let handles_before = decoder.remaining_handles();
6855            if let Some((inlined, num_bytes, num_handles)) =
6856                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6857            {
6858                let member_inline_size =
6859                    <PhysicalLayer as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6860                if inlined != (member_inline_size <= 4) {
6861                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6862                }
6863                let inner_offset;
6864                let mut inner_depth = depth.clone();
6865                if inlined {
6866                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6867                    inner_offset = next_offset;
6868                } else {
6869                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6870                    inner_depth.increment()?;
6871                }
6872                let val_ref = self.phy.get_or_insert_with(|| fidl::new_empty!(PhysicalLayer, D));
6873                fidl::decode!(PhysicalLayer, D, val_ref, decoder, inner_offset, inner_depth)?;
6874                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6875                {
6876                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6877                }
6878                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6879                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6880                }
6881            }
6882
6883            next_offset += envelope_size;
6884            _next_ordinal_to_read += 1;
6885            if next_offset >= end_offset {
6886                return Ok(());
6887            }
6888
6889            // Decode unknown envelopes for gaps in ordinals.
6890            while _next_ordinal_to_read < 4 {
6891                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6892                _next_ordinal_to_read += 1;
6893                next_offset += envelope_size;
6894            }
6895
6896            let next_out_of_line = decoder.next_out_of_line();
6897            let handles_before = decoder.remaining_handles();
6898            if let Some((inlined, num_bytes, num_handles)) =
6899                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6900            {
6901                let member_inline_size =
6902                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6903                if inlined != (member_inline_size <= 4) {
6904                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6905                }
6906                let inner_offset;
6907                let mut inner_depth = depth.clone();
6908                if inlined {
6909                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6910                    inner_offset = next_offset;
6911                } else {
6912                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6913                    inner_depth.increment()?;
6914                }
6915                let val_ref = self.encryption.get_or_insert_with(|| fidl::new_empty!(bool, D));
6916                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6917                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6918                {
6919                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6920                }
6921                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6922                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6923                }
6924            }
6925
6926            next_offset += envelope_size;
6927
6928            // Decode the remaining unknown envelopes.
6929            while next_offset < end_offset {
6930                _next_ordinal_to_read += 1;
6931                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6932                next_offset += envelope_size;
6933            }
6934
6935            Ok(())
6936        }
6937    }
6938
6939    impl BroadcastIsochronousGroupInfoReport {
6940        #[inline(always)]
6941        fn max_ordinal_present(&self) -> u64 {
6942            if let Some(_) = self.timestamp {
6943                return 2;
6944            }
6945            if let Some(_) = self.info {
6946                return 1;
6947            }
6948            0
6949        }
6950    }
6951
6952    impl fidl::encoding::ValueTypeMarker for BroadcastIsochronousGroupInfoReport {
6953        type Borrowed<'a> = &'a Self;
6954        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6955            value
6956        }
6957    }
6958
6959    unsafe impl fidl::encoding::TypeMarker for BroadcastIsochronousGroupInfoReport {
6960        type Owned = Self;
6961
6962        #[inline(always)]
6963        fn inline_align(_context: fidl::encoding::Context) -> usize {
6964            8
6965        }
6966
6967        #[inline(always)]
6968        fn inline_size(_context: fidl::encoding::Context) -> usize {
6969            16
6970        }
6971    }
6972
6973    unsafe impl<D: fidl::encoding::ResourceDialect>
6974        fidl::encoding::Encode<BroadcastIsochronousGroupInfoReport, D>
6975        for &BroadcastIsochronousGroupInfoReport
6976    {
6977        unsafe fn encode(
6978            self,
6979            encoder: &mut fidl::encoding::Encoder<'_, D>,
6980            offset: usize,
6981            mut depth: fidl::encoding::Depth,
6982        ) -> fidl::Result<()> {
6983            encoder.debug_check_bounds::<BroadcastIsochronousGroupInfoReport>(offset);
6984            // Vector header
6985            let max_ordinal: u64 = self.max_ordinal_present();
6986            encoder.write_num(max_ordinal, offset);
6987            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6988            // Calling encoder.out_of_line_offset(0) is not allowed.
6989            if max_ordinal == 0 {
6990                return Ok(());
6991            }
6992            depth.increment()?;
6993            let envelope_size = 8;
6994            let bytes_len = max_ordinal as usize * envelope_size;
6995            #[allow(unused_variables)]
6996            let offset = encoder.out_of_line_offset(bytes_len);
6997            let mut _prev_end_offset: usize = 0;
6998            if 1 > max_ordinal {
6999                return Ok(());
7000            }
7001
7002            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7003            // are envelope_size bytes.
7004            let cur_offset: usize = (1 - 1) * envelope_size;
7005
7006            // Zero reserved fields.
7007            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7008
7009            // Safety:
7010            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7011            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7012            //   envelope_size bytes, there is always sufficient room.
7013            fidl::encoding::encode_in_envelope_optional::<BroadcastIsochronousGroupInfo, D>(
7014                self.info.as_ref().map(
7015                    <BroadcastIsochronousGroupInfo as fidl::encoding::ValueTypeMarker>::borrow,
7016                ),
7017                encoder,
7018                offset + cur_offset,
7019                depth,
7020            )?;
7021
7022            _prev_end_offset = cur_offset + envelope_size;
7023            if 2 > max_ordinal {
7024                return Ok(());
7025            }
7026
7027            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7028            // are envelope_size bytes.
7029            let cur_offset: usize = (2 - 1) * envelope_size;
7030
7031            // Zero reserved fields.
7032            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7033
7034            // Safety:
7035            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7036            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7037            //   envelope_size bytes, there is always sufficient room.
7038            fidl::encoding::encode_in_envelope_optional::<i64, D>(
7039                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
7040                encoder,
7041                offset + cur_offset,
7042                depth,
7043            )?;
7044
7045            _prev_end_offset = cur_offset + envelope_size;
7046
7047            Ok(())
7048        }
7049    }
7050
7051    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7052        for BroadcastIsochronousGroupInfoReport
7053    {
7054        #[inline(always)]
7055        fn new_empty() -> Self {
7056            Self::default()
7057        }
7058
7059        unsafe fn decode(
7060            &mut self,
7061            decoder: &mut fidl::encoding::Decoder<'_, D>,
7062            offset: usize,
7063            mut depth: fidl::encoding::Depth,
7064        ) -> fidl::Result<()> {
7065            decoder.debug_check_bounds::<Self>(offset);
7066            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7067                None => return Err(fidl::Error::NotNullable),
7068                Some(len) => len,
7069            };
7070            // Calling decoder.out_of_line_offset(0) is not allowed.
7071            if len == 0 {
7072                return Ok(());
7073            };
7074            depth.increment()?;
7075            let envelope_size = 8;
7076            let bytes_len = len * envelope_size;
7077            let offset = decoder.out_of_line_offset(bytes_len)?;
7078            // Decode the envelope for each type.
7079            let mut _next_ordinal_to_read = 0;
7080            let mut next_offset = offset;
7081            let end_offset = offset + bytes_len;
7082            _next_ordinal_to_read += 1;
7083            if next_offset >= end_offset {
7084                return Ok(());
7085            }
7086
7087            // Decode unknown envelopes for gaps in ordinals.
7088            while _next_ordinal_to_read < 1 {
7089                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7090                _next_ordinal_to_read += 1;
7091                next_offset += envelope_size;
7092            }
7093
7094            let next_out_of_line = decoder.next_out_of_line();
7095            let handles_before = decoder.remaining_handles();
7096            if let Some((inlined, num_bytes, num_handles)) =
7097                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7098            {
7099                let member_inline_size =
7100                    <BroadcastIsochronousGroupInfo as fidl::encoding::TypeMarker>::inline_size(
7101                        decoder.context,
7102                    );
7103                if inlined != (member_inline_size <= 4) {
7104                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7105                }
7106                let inner_offset;
7107                let mut inner_depth = depth.clone();
7108                if inlined {
7109                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7110                    inner_offset = next_offset;
7111                } else {
7112                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7113                    inner_depth.increment()?;
7114                }
7115                let val_ref = self
7116                    .info
7117                    .get_or_insert_with(|| fidl::new_empty!(BroadcastIsochronousGroupInfo, D));
7118                fidl::decode!(
7119                    BroadcastIsochronousGroupInfo,
7120                    D,
7121                    val_ref,
7122                    decoder,
7123                    inner_offset,
7124                    inner_depth
7125                )?;
7126                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7127                {
7128                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7129                }
7130                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7131                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7132                }
7133            }
7134
7135            next_offset += envelope_size;
7136            _next_ordinal_to_read += 1;
7137            if next_offset >= end_offset {
7138                return Ok(());
7139            }
7140
7141            // Decode unknown envelopes for gaps in ordinals.
7142            while _next_ordinal_to_read < 2 {
7143                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7144                _next_ordinal_to_read += 1;
7145                next_offset += envelope_size;
7146            }
7147
7148            let next_out_of_line = decoder.next_out_of_line();
7149            let handles_before = decoder.remaining_handles();
7150            if let Some((inlined, num_bytes, num_handles)) =
7151                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7152            {
7153                let member_inline_size =
7154                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7155                if inlined != (member_inline_size <= 4) {
7156                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7157                }
7158                let inner_offset;
7159                let mut inner_depth = depth.clone();
7160                if inlined {
7161                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7162                    inner_offset = next_offset;
7163                } else {
7164                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7165                    inner_depth.increment()?;
7166                }
7167                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
7168                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
7169                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7170                {
7171                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7172                }
7173                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7174                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7175                }
7176            }
7177
7178            next_offset += envelope_size;
7179
7180            // Decode the remaining unknown envelopes.
7181            while next_offset < end_offset {
7182                _next_ordinal_to_read += 1;
7183                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7184                next_offset += envelope_size;
7185            }
7186
7187            Ok(())
7188        }
7189    }
7190
7191    impl CentralCreateConnectedIsochronousGroupResponse {
7192        #[inline(always)]
7193        fn max_ordinal_present(&self) -> u64 {
7194            if let Some(_) = self.cig_id {
7195                return 1;
7196            }
7197            0
7198        }
7199    }
7200
7201    impl fidl::encoding::ValueTypeMarker for CentralCreateConnectedIsochronousGroupResponse {
7202        type Borrowed<'a> = &'a Self;
7203        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7204            value
7205        }
7206    }
7207
7208    unsafe impl fidl::encoding::TypeMarker for CentralCreateConnectedIsochronousGroupResponse {
7209        type Owned = Self;
7210
7211        #[inline(always)]
7212        fn inline_align(_context: fidl::encoding::Context) -> usize {
7213            8
7214        }
7215
7216        #[inline(always)]
7217        fn inline_size(_context: fidl::encoding::Context) -> usize {
7218            16
7219        }
7220    }
7221
7222    unsafe impl<D: fidl::encoding::ResourceDialect>
7223        fidl::encoding::Encode<CentralCreateConnectedIsochronousGroupResponse, D>
7224        for &CentralCreateConnectedIsochronousGroupResponse
7225    {
7226        unsafe fn encode(
7227            self,
7228            encoder: &mut fidl::encoding::Encoder<'_, D>,
7229            offset: usize,
7230            mut depth: fidl::encoding::Depth,
7231        ) -> fidl::Result<()> {
7232            encoder.debug_check_bounds::<CentralCreateConnectedIsochronousGroupResponse>(offset);
7233            // Vector header
7234            let max_ordinal: u64 = self.max_ordinal_present();
7235            encoder.write_num(max_ordinal, offset);
7236            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7237            // Calling encoder.out_of_line_offset(0) is not allowed.
7238            if max_ordinal == 0 {
7239                return Ok(());
7240            }
7241            depth.increment()?;
7242            let envelope_size = 8;
7243            let bytes_len = max_ordinal as usize * envelope_size;
7244            #[allow(unused_variables)]
7245            let offset = encoder.out_of_line_offset(bytes_len);
7246            let mut _prev_end_offset: usize = 0;
7247            if 1 > max_ordinal {
7248                return Ok(());
7249            }
7250
7251            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7252            // are envelope_size bytes.
7253            let cur_offset: usize = (1 - 1) * envelope_size;
7254
7255            // Zero reserved fields.
7256            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7257
7258            // Safety:
7259            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7260            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7261            //   envelope_size bytes, there is always sufficient room.
7262            fidl::encoding::encode_in_envelope_optional::<u8, D>(
7263                self.cig_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7264                encoder,
7265                offset + cur_offset,
7266                depth,
7267            )?;
7268
7269            _prev_end_offset = cur_offset + envelope_size;
7270
7271            Ok(())
7272        }
7273    }
7274
7275    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7276        for CentralCreateConnectedIsochronousGroupResponse
7277    {
7278        #[inline(always)]
7279        fn new_empty() -> Self {
7280            Self::default()
7281        }
7282
7283        unsafe fn decode(
7284            &mut self,
7285            decoder: &mut fidl::encoding::Decoder<'_, D>,
7286            offset: usize,
7287            mut depth: fidl::encoding::Depth,
7288        ) -> fidl::Result<()> {
7289            decoder.debug_check_bounds::<Self>(offset);
7290            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7291                None => return Err(fidl::Error::NotNullable),
7292                Some(len) => len,
7293            };
7294            // Calling decoder.out_of_line_offset(0) is not allowed.
7295            if len == 0 {
7296                return Ok(());
7297            };
7298            depth.increment()?;
7299            let envelope_size = 8;
7300            let bytes_len = len * envelope_size;
7301            let offset = decoder.out_of_line_offset(bytes_len)?;
7302            // Decode the envelope for each type.
7303            let mut _next_ordinal_to_read = 0;
7304            let mut next_offset = offset;
7305            let end_offset = offset + bytes_len;
7306            _next_ordinal_to_read += 1;
7307            if next_offset >= end_offset {
7308                return Ok(());
7309            }
7310
7311            // Decode unknown envelopes for gaps in ordinals.
7312            while _next_ordinal_to_read < 1 {
7313                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7314                _next_ordinal_to_read += 1;
7315                next_offset += envelope_size;
7316            }
7317
7318            let next_out_of_line = decoder.next_out_of_line();
7319            let handles_before = decoder.remaining_handles();
7320            if let Some((inlined, num_bytes, num_handles)) =
7321                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7322            {
7323                let member_inline_size =
7324                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7325                if inlined != (member_inline_size <= 4) {
7326                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7327                }
7328                let inner_offset;
7329                let mut inner_depth = depth.clone();
7330                if inlined {
7331                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7332                    inner_offset = next_offset;
7333                } else {
7334                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7335                    inner_depth.increment()?;
7336                }
7337                let val_ref = self.cig_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
7338                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7339                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7340                {
7341                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7342                }
7343                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7344                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7345                }
7346            }
7347
7348            next_offset += envelope_size;
7349
7350            // Decode the remaining unknown envelopes.
7351            while next_offset < end_offset {
7352                _next_ordinal_to_read += 1;
7353                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7354                next_offset += envelope_size;
7355            }
7356
7357            Ok(())
7358        }
7359    }
7360
7361    impl ChannelListenerRegistryListenL2capResponse {
7362        #[inline(always)]
7363        fn max_ordinal_present(&self) -> u64 {
7364            if let Some(_) = self.psm {
7365                return 1;
7366            }
7367            0
7368        }
7369    }
7370
7371    impl fidl::encoding::ValueTypeMarker for ChannelListenerRegistryListenL2capResponse {
7372        type Borrowed<'a> = &'a Self;
7373        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7374            value
7375        }
7376    }
7377
7378    unsafe impl fidl::encoding::TypeMarker for ChannelListenerRegistryListenL2capResponse {
7379        type Owned = Self;
7380
7381        #[inline(always)]
7382        fn inline_align(_context: fidl::encoding::Context) -> usize {
7383            8
7384        }
7385
7386        #[inline(always)]
7387        fn inline_size(_context: fidl::encoding::Context) -> usize {
7388            16
7389        }
7390    }
7391
7392    unsafe impl<D: fidl::encoding::ResourceDialect>
7393        fidl::encoding::Encode<ChannelListenerRegistryListenL2capResponse, D>
7394        for &ChannelListenerRegistryListenL2capResponse
7395    {
7396        unsafe fn encode(
7397            self,
7398            encoder: &mut fidl::encoding::Encoder<'_, D>,
7399            offset: usize,
7400            mut depth: fidl::encoding::Depth,
7401        ) -> fidl::Result<()> {
7402            encoder.debug_check_bounds::<ChannelListenerRegistryListenL2capResponse>(offset);
7403            // Vector header
7404            let max_ordinal: u64 = self.max_ordinal_present();
7405            encoder.write_num(max_ordinal, offset);
7406            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7407            // Calling encoder.out_of_line_offset(0) is not allowed.
7408            if max_ordinal == 0 {
7409                return Ok(());
7410            }
7411            depth.increment()?;
7412            let envelope_size = 8;
7413            let bytes_len = max_ordinal as usize * envelope_size;
7414            #[allow(unused_variables)]
7415            let offset = encoder.out_of_line_offset(bytes_len);
7416            let mut _prev_end_offset: usize = 0;
7417            if 1 > max_ordinal {
7418                return Ok(());
7419            }
7420
7421            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7422            // are envelope_size bytes.
7423            let cur_offset: usize = (1 - 1) * envelope_size;
7424
7425            // Zero reserved fields.
7426            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7427
7428            // Safety:
7429            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7430            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7431            //   envelope_size bytes, there is always sufficient room.
7432            fidl::encoding::encode_in_envelope_optional::<u16, D>(
7433                self.psm.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
7434                encoder,
7435                offset + cur_offset,
7436                depth,
7437            )?;
7438
7439            _prev_end_offset = cur_offset + envelope_size;
7440
7441            Ok(())
7442        }
7443    }
7444
7445    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7446        for ChannelListenerRegistryListenL2capResponse
7447    {
7448        #[inline(always)]
7449        fn new_empty() -> Self {
7450            Self::default()
7451        }
7452
7453        unsafe fn decode(
7454            &mut self,
7455            decoder: &mut fidl::encoding::Decoder<'_, D>,
7456            offset: usize,
7457            mut depth: fidl::encoding::Depth,
7458        ) -> fidl::Result<()> {
7459            decoder.debug_check_bounds::<Self>(offset);
7460            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7461                None => return Err(fidl::Error::NotNullable),
7462                Some(len) => len,
7463            };
7464            // Calling decoder.out_of_line_offset(0) is not allowed.
7465            if len == 0 {
7466                return Ok(());
7467            };
7468            depth.increment()?;
7469            let envelope_size = 8;
7470            let bytes_len = len * envelope_size;
7471            let offset = decoder.out_of_line_offset(bytes_len)?;
7472            // Decode the envelope for each type.
7473            let mut _next_ordinal_to_read = 0;
7474            let mut next_offset = offset;
7475            let end_offset = offset + bytes_len;
7476            _next_ordinal_to_read += 1;
7477            if next_offset >= end_offset {
7478                return Ok(());
7479            }
7480
7481            // Decode unknown envelopes for gaps in ordinals.
7482            while _next_ordinal_to_read < 1 {
7483                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7484                _next_ordinal_to_read += 1;
7485                next_offset += envelope_size;
7486            }
7487
7488            let next_out_of_line = decoder.next_out_of_line();
7489            let handles_before = decoder.remaining_handles();
7490            if let Some((inlined, num_bytes, num_handles)) =
7491                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7492            {
7493                let member_inline_size =
7494                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7495                if inlined != (member_inline_size <= 4) {
7496                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7497                }
7498                let inner_offset;
7499                let mut inner_depth = depth.clone();
7500                if inlined {
7501                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7502                    inner_offset = next_offset;
7503                } else {
7504                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7505                    inner_depth.increment()?;
7506                }
7507                let val_ref = self.psm.get_or_insert_with(|| fidl::new_empty!(u16, D));
7508                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7509                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7510                {
7511                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7512                }
7513                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7514                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7515                }
7516            }
7517
7518            next_offset += envelope_size;
7519
7520            // Decode the remaining unknown envelopes.
7521            while next_offset < end_offset {
7522                _next_ordinal_to_read += 1;
7523                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7524                next_offset += envelope_size;
7525            }
7526
7527            Ok(())
7528        }
7529    }
7530
7531    impl ChannelOffloadExtStartOffloadRequest {
7532        #[inline(always)]
7533        fn max_ordinal_present(&self) -> u64 {
7534            0
7535        }
7536    }
7537
7538    impl fidl::encoding::ValueTypeMarker for ChannelOffloadExtStartOffloadRequest {
7539        type Borrowed<'a> = &'a Self;
7540        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7541            value
7542        }
7543    }
7544
7545    unsafe impl fidl::encoding::TypeMarker for ChannelOffloadExtStartOffloadRequest {
7546        type Owned = Self;
7547
7548        #[inline(always)]
7549        fn inline_align(_context: fidl::encoding::Context) -> usize {
7550            8
7551        }
7552
7553        #[inline(always)]
7554        fn inline_size(_context: fidl::encoding::Context) -> usize {
7555            16
7556        }
7557    }
7558
7559    unsafe impl<D: fidl::encoding::ResourceDialect>
7560        fidl::encoding::Encode<ChannelOffloadExtStartOffloadRequest, D>
7561        for &ChannelOffloadExtStartOffloadRequest
7562    {
7563        unsafe fn encode(
7564            self,
7565            encoder: &mut fidl::encoding::Encoder<'_, D>,
7566            offset: usize,
7567            mut depth: fidl::encoding::Depth,
7568        ) -> fidl::Result<()> {
7569            encoder.debug_check_bounds::<ChannelOffloadExtStartOffloadRequest>(offset);
7570            // Vector header
7571            let max_ordinal: u64 = self.max_ordinal_present();
7572            encoder.write_num(max_ordinal, offset);
7573            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7574            // Calling encoder.out_of_line_offset(0) is not allowed.
7575            if max_ordinal == 0 {
7576                return Ok(());
7577            }
7578            depth.increment()?;
7579            let envelope_size = 8;
7580            let bytes_len = max_ordinal as usize * envelope_size;
7581            #[allow(unused_variables)]
7582            let offset = encoder.out_of_line_offset(bytes_len);
7583            let mut _prev_end_offset: usize = 0;
7584
7585            Ok(())
7586        }
7587    }
7588
7589    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7590        for ChannelOffloadExtStartOffloadRequest
7591    {
7592        #[inline(always)]
7593        fn new_empty() -> Self {
7594            Self::default()
7595        }
7596
7597        unsafe fn decode(
7598            &mut self,
7599            decoder: &mut fidl::encoding::Decoder<'_, D>,
7600            offset: usize,
7601            mut depth: fidl::encoding::Depth,
7602        ) -> fidl::Result<()> {
7603            decoder.debug_check_bounds::<Self>(offset);
7604            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7605                None => return Err(fidl::Error::NotNullable),
7606                Some(len) => len,
7607            };
7608            // Calling decoder.out_of_line_offset(0) is not allowed.
7609            if len == 0 {
7610                return Ok(());
7611            };
7612            depth.increment()?;
7613            let envelope_size = 8;
7614            let bytes_len = len * envelope_size;
7615            let offset = decoder.out_of_line_offset(bytes_len)?;
7616            // Decode the envelope for each type.
7617            let mut _next_ordinal_to_read = 0;
7618            let mut next_offset = offset;
7619            let end_offset = offset + bytes_len;
7620
7621            // Decode the remaining unknown envelopes.
7622            while next_offset < end_offset {
7623                _next_ordinal_to_read += 1;
7624                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7625                next_offset += envelope_size;
7626            }
7627
7628            Ok(())
7629        }
7630    }
7631
7632    impl ChannelOffloadExtStartOffloadResponse {
7633        #[inline(always)]
7634        fn max_ordinal_present(&self) -> u64 {
7635            if let Some(_) = self.offload_parameters {
7636                return 1;
7637            }
7638            0
7639        }
7640    }
7641
7642    impl fidl::encoding::ValueTypeMarker for ChannelOffloadExtStartOffloadResponse {
7643        type Borrowed<'a> = &'a Self;
7644        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7645            value
7646        }
7647    }
7648
7649    unsafe impl fidl::encoding::TypeMarker for ChannelOffloadExtStartOffloadResponse {
7650        type Owned = Self;
7651
7652        #[inline(always)]
7653        fn inline_align(_context: fidl::encoding::Context) -> usize {
7654            8
7655        }
7656
7657        #[inline(always)]
7658        fn inline_size(_context: fidl::encoding::Context) -> usize {
7659            16
7660        }
7661    }
7662
7663    unsafe impl<D: fidl::encoding::ResourceDialect>
7664        fidl::encoding::Encode<ChannelOffloadExtStartOffloadResponse, D>
7665        for &ChannelOffloadExtStartOffloadResponse
7666    {
7667        unsafe fn encode(
7668            self,
7669            encoder: &mut fidl::encoding::Encoder<'_, D>,
7670            offset: usize,
7671            mut depth: fidl::encoding::Depth,
7672        ) -> fidl::Result<()> {
7673            encoder.debug_check_bounds::<ChannelOffloadExtStartOffloadResponse>(offset);
7674            // Vector header
7675            let max_ordinal: u64 = self.max_ordinal_present();
7676            encoder.write_num(max_ordinal, offset);
7677            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7678            // Calling encoder.out_of_line_offset(0) is not allowed.
7679            if max_ordinal == 0 {
7680                return Ok(());
7681            }
7682            depth.increment()?;
7683            let envelope_size = 8;
7684            let bytes_len = max_ordinal as usize * envelope_size;
7685            #[allow(unused_variables)]
7686            let offset = encoder.out_of_line_offset(bytes_len);
7687            let mut _prev_end_offset: usize = 0;
7688            if 1 > max_ordinal {
7689                return Ok(());
7690            }
7691
7692            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7693            // are envelope_size bytes.
7694            let cur_offset: usize = (1 - 1) * envelope_size;
7695
7696            // Zero reserved fields.
7697            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7698
7699            // Safety:
7700            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7701            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7702            //   envelope_size bytes, there is always sufficient room.
7703            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::L2capChannelOffloadParameters, D>(
7704            self.offload_parameters.as_ref().map(<fidl_fuchsia_bluetooth_common::L2capChannelOffloadParameters as fidl::encoding::ValueTypeMarker>::borrow),
7705            encoder, offset + cur_offset, depth
7706        )?;
7707
7708            _prev_end_offset = cur_offset + envelope_size;
7709
7710            Ok(())
7711        }
7712    }
7713
7714    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7715        for ChannelOffloadExtStartOffloadResponse
7716    {
7717        #[inline(always)]
7718        fn new_empty() -> Self {
7719            Self::default()
7720        }
7721
7722        unsafe fn decode(
7723            &mut self,
7724            decoder: &mut fidl::encoding::Decoder<'_, D>,
7725            offset: usize,
7726            mut depth: fidl::encoding::Depth,
7727        ) -> fidl::Result<()> {
7728            decoder.debug_check_bounds::<Self>(offset);
7729            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7730                None => return Err(fidl::Error::NotNullable),
7731                Some(len) => len,
7732            };
7733            // Calling decoder.out_of_line_offset(0) is not allowed.
7734            if len == 0 {
7735                return Ok(());
7736            };
7737            depth.increment()?;
7738            let envelope_size = 8;
7739            let bytes_len = len * envelope_size;
7740            let offset = decoder.out_of_line_offset(bytes_len)?;
7741            // Decode the envelope for each type.
7742            let mut _next_ordinal_to_read = 0;
7743            let mut next_offset = offset;
7744            let end_offset = offset + bytes_len;
7745            _next_ordinal_to_read += 1;
7746            if next_offset >= end_offset {
7747                return Ok(());
7748            }
7749
7750            // Decode unknown envelopes for gaps in ordinals.
7751            while _next_ordinal_to_read < 1 {
7752                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7753                _next_ordinal_to_read += 1;
7754                next_offset += envelope_size;
7755            }
7756
7757            let next_out_of_line = decoder.next_out_of_line();
7758            let handles_before = decoder.remaining_handles();
7759            if let Some((inlined, num_bytes, num_handles)) =
7760                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7761            {
7762                let member_inline_size = <fidl_fuchsia_bluetooth_common::L2capChannelOffloadParameters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7763                if inlined != (member_inline_size <= 4) {
7764                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7765                }
7766                let inner_offset;
7767                let mut inner_depth = depth.clone();
7768                if inlined {
7769                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7770                    inner_offset = next_offset;
7771                } else {
7772                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7773                    inner_depth.increment()?;
7774                }
7775                let val_ref = self.offload_parameters.get_or_insert_with(|| {
7776                    fidl::new_empty!(
7777                        fidl_fuchsia_bluetooth_common::L2capChannelOffloadParameters,
7778                        D
7779                    )
7780                });
7781                fidl::decode!(
7782                    fidl_fuchsia_bluetooth_common::L2capChannelOffloadParameters,
7783                    D,
7784                    val_ref,
7785                    decoder,
7786                    inner_offset,
7787                    inner_depth
7788                )?;
7789                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7790                {
7791                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7792                }
7793                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7794                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7795                }
7796            }
7797
7798            next_offset += envelope_size;
7799
7800            // Decode the remaining unknown envelopes.
7801            while next_offset < end_offset {
7802                _next_ordinal_to_read += 1;
7803                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7804                next_offset += envelope_size;
7805            }
7806
7807            Ok(())
7808        }
7809    }
7810
7811    impl CigParameters {
7812        #[inline(always)]
7813        fn max_ordinal_present(&self) -> u64 {
7814            if let Some(_) = self.expected_peers {
7815                return 7;
7816            }
7817            if let Some(_) = self.max_transport_latency_p_to_c {
7818                return 6;
7819            }
7820            if let Some(_) = self.max_transport_latency_c_to_p {
7821                return 5;
7822            }
7823            if let Some(_) = self.framing {
7824                return 4;
7825            }
7826            if let Some(_) = self.packing {
7827                return 3;
7828            }
7829            if let Some(_) = self.sdu_interval_p_to_c {
7830                return 2;
7831            }
7832            if let Some(_) = self.sdu_interval_c_to_p {
7833                return 1;
7834            }
7835            0
7836        }
7837    }
7838
7839    impl fidl::encoding::ValueTypeMarker for CigParameters {
7840        type Borrowed<'a> = &'a Self;
7841        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7842            value
7843        }
7844    }
7845
7846    unsafe impl fidl::encoding::TypeMarker for CigParameters {
7847        type Owned = Self;
7848
7849        #[inline(always)]
7850        fn inline_align(_context: fidl::encoding::Context) -> usize {
7851            8
7852        }
7853
7854        #[inline(always)]
7855        fn inline_size(_context: fidl::encoding::Context) -> usize {
7856            16
7857        }
7858    }
7859
7860    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CigParameters, D>
7861        for &CigParameters
7862    {
7863        unsafe fn encode(
7864            self,
7865            encoder: &mut fidl::encoding::Encoder<'_, D>,
7866            offset: usize,
7867            mut depth: fidl::encoding::Depth,
7868        ) -> fidl::Result<()> {
7869            encoder.debug_check_bounds::<CigParameters>(offset);
7870            // Vector header
7871            let max_ordinal: u64 = self.max_ordinal_present();
7872            encoder.write_num(max_ordinal, offset);
7873            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7874            // Calling encoder.out_of_line_offset(0) is not allowed.
7875            if max_ordinal == 0 {
7876                return Ok(());
7877            }
7878            depth.increment()?;
7879            let envelope_size = 8;
7880            let bytes_len = max_ordinal as usize * envelope_size;
7881            #[allow(unused_variables)]
7882            let offset = encoder.out_of_line_offset(bytes_len);
7883            let mut _prev_end_offset: usize = 0;
7884            if 1 > max_ordinal {
7885                return Ok(());
7886            }
7887
7888            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7889            // are envelope_size bytes.
7890            let cur_offset: usize = (1 - 1) * envelope_size;
7891
7892            // Zero reserved fields.
7893            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7894
7895            // Safety:
7896            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7897            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7898            //   envelope_size bytes, there is always sufficient room.
7899            fidl::encoding::encode_in_envelope_optional::<u32, D>(
7900                self.sdu_interval_c_to_p
7901                    .as_ref()
7902                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7903                encoder,
7904                offset + cur_offset,
7905                depth,
7906            )?;
7907
7908            _prev_end_offset = cur_offset + envelope_size;
7909            if 2 > max_ordinal {
7910                return Ok(());
7911            }
7912
7913            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7914            // are envelope_size bytes.
7915            let cur_offset: usize = (2 - 1) * envelope_size;
7916
7917            // Zero reserved fields.
7918            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7919
7920            // Safety:
7921            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7922            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7923            //   envelope_size bytes, there is always sufficient room.
7924            fidl::encoding::encode_in_envelope_optional::<u32, D>(
7925                self.sdu_interval_p_to_c
7926                    .as_ref()
7927                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7928                encoder,
7929                offset + cur_offset,
7930                depth,
7931            )?;
7932
7933            _prev_end_offset = cur_offset + envelope_size;
7934            if 3 > max_ordinal {
7935                return Ok(());
7936            }
7937
7938            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7939            // are envelope_size bytes.
7940            let cur_offset: usize = (3 - 1) * envelope_size;
7941
7942            // Zero reserved fields.
7943            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7944
7945            // Safety:
7946            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7947            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7948            //   envelope_size bytes, there is always sufficient room.
7949            fidl::encoding::encode_in_envelope_optional::<CigPacking, D>(
7950                self.packing.as_ref().map(<CigPacking as fidl::encoding::ValueTypeMarker>::borrow),
7951                encoder,
7952                offset + cur_offset,
7953                depth,
7954            )?;
7955
7956            _prev_end_offset = cur_offset + envelope_size;
7957            if 4 > max_ordinal {
7958                return Ok(());
7959            }
7960
7961            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7962            // are envelope_size bytes.
7963            let cur_offset: usize = (4 - 1) * envelope_size;
7964
7965            // Zero reserved fields.
7966            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7967
7968            // Safety:
7969            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7970            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7971            //   envelope_size bytes, there is always sufficient room.
7972            fidl::encoding::encode_in_envelope_optional::<CigFramingOptions, D>(
7973                self.framing
7974                    .as_ref()
7975                    .map(<CigFramingOptions as fidl::encoding::ValueTypeMarker>::borrow),
7976                encoder,
7977                offset + cur_offset,
7978                depth,
7979            )?;
7980
7981            _prev_end_offset = cur_offset + envelope_size;
7982            if 5 > max_ordinal {
7983                return Ok(());
7984            }
7985
7986            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7987            // are envelope_size bytes.
7988            let cur_offset: usize = (5 - 1) * envelope_size;
7989
7990            // Zero reserved fields.
7991            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7992
7993            // Safety:
7994            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7995            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7996            //   envelope_size bytes, there is always sufficient room.
7997            fidl::encoding::encode_in_envelope_optional::<u16, D>(
7998                self.max_transport_latency_c_to_p
7999                    .as_ref()
8000                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
8001                encoder,
8002                offset + cur_offset,
8003                depth,
8004            )?;
8005
8006            _prev_end_offset = cur_offset + envelope_size;
8007            if 6 > max_ordinal {
8008                return Ok(());
8009            }
8010
8011            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8012            // are envelope_size bytes.
8013            let cur_offset: usize = (6 - 1) * envelope_size;
8014
8015            // Zero reserved fields.
8016            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8017
8018            // Safety:
8019            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8020            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8021            //   envelope_size bytes, there is always sufficient room.
8022            fidl::encoding::encode_in_envelope_optional::<u16, D>(
8023                self.max_transport_latency_p_to_c
8024                    .as_ref()
8025                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
8026                encoder,
8027                offset + cur_offset,
8028                depth,
8029            )?;
8030
8031            _prev_end_offset = cur_offset + envelope_size;
8032            if 7 > max_ordinal {
8033                return Ok(());
8034            }
8035
8036            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8037            // are envelope_size bytes.
8038            let cur_offset: usize = (7 - 1) * envelope_size;
8039
8040            // Zero reserved fields.
8041            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8042
8043            // Safety:
8044            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8045            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8046            //   envelope_size bytes, there is always sufficient room.
8047            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_common::PeerId>, D>(
8048            self.expected_peers.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_common::PeerId> as fidl::encoding::ValueTypeMarker>::borrow),
8049            encoder, offset + cur_offset, depth
8050        )?;
8051
8052            _prev_end_offset = cur_offset + envelope_size;
8053
8054            Ok(())
8055        }
8056    }
8057
8058    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CigParameters {
8059        #[inline(always)]
8060        fn new_empty() -> Self {
8061            Self::default()
8062        }
8063
8064        unsafe fn decode(
8065            &mut self,
8066            decoder: &mut fidl::encoding::Decoder<'_, D>,
8067            offset: usize,
8068            mut depth: fidl::encoding::Depth,
8069        ) -> fidl::Result<()> {
8070            decoder.debug_check_bounds::<Self>(offset);
8071            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8072                None => return Err(fidl::Error::NotNullable),
8073                Some(len) => len,
8074            };
8075            // Calling decoder.out_of_line_offset(0) is not allowed.
8076            if len == 0 {
8077                return Ok(());
8078            };
8079            depth.increment()?;
8080            let envelope_size = 8;
8081            let bytes_len = len * envelope_size;
8082            let offset = decoder.out_of_line_offset(bytes_len)?;
8083            // Decode the envelope for each type.
8084            let mut _next_ordinal_to_read = 0;
8085            let mut next_offset = offset;
8086            let end_offset = offset + bytes_len;
8087            _next_ordinal_to_read += 1;
8088            if next_offset >= end_offset {
8089                return Ok(());
8090            }
8091
8092            // Decode unknown envelopes for gaps in ordinals.
8093            while _next_ordinal_to_read < 1 {
8094                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8095                _next_ordinal_to_read += 1;
8096                next_offset += envelope_size;
8097            }
8098
8099            let next_out_of_line = decoder.next_out_of_line();
8100            let handles_before = decoder.remaining_handles();
8101            if let Some((inlined, num_bytes, num_handles)) =
8102                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8103            {
8104                let member_inline_size =
8105                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8106                if inlined != (member_inline_size <= 4) {
8107                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8108                }
8109                let inner_offset;
8110                let mut inner_depth = depth.clone();
8111                if inlined {
8112                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8113                    inner_offset = next_offset;
8114                } else {
8115                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8116                    inner_depth.increment()?;
8117                }
8118                let val_ref =
8119                    self.sdu_interval_c_to_p.get_or_insert_with(|| fidl::new_empty!(u32, D));
8120                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
8121                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8122                {
8123                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8124                }
8125                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8126                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8127                }
8128            }
8129
8130            next_offset += envelope_size;
8131            _next_ordinal_to_read += 1;
8132            if next_offset >= end_offset {
8133                return Ok(());
8134            }
8135
8136            // Decode unknown envelopes for gaps in ordinals.
8137            while _next_ordinal_to_read < 2 {
8138                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8139                _next_ordinal_to_read += 1;
8140                next_offset += envelope_size;
8141            }
8142
8143            let next_out_of_line = decoder.next_out_of_line();
8144            let handles_before = decoder.remaining_handles();
8145            if let Some((inlined, num_bytes, num_handles)) =
8146                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8147            {
8148                let member_inline_size =
8149                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8150                if inlined != (member_inline_size <= 4) {
8151                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8152                }
8153                let inner_offset;
8154                let mut inner_depth = depth.clone();
8155                if inlined {
8156                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8157                    inner_offset = next_offset;
8158                } else {
8159                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8160                    inner_depth.increment()?;
8161                }
8162                let val_ref =
8163                    self.sdu_interval_p_to_c.get_or_insert_with(|| fidl::new_empty!(u32, D));
8164                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
8165                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8166                {
8167                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8168                }
8169                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8170                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8171                }
8172            }
8173
8174            next_offset += envelope_size;
8175            _next_ordinal_to_read += 1;
8176            if next_offset >= end_offset {
8177                return Ok(());
8178            }
8179
8180            // Decode unknown envelopes for gaps in ordinals.
8181            while _next_ordinal_to_read < 3 {
8182                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8183                _next_ordinal_to_read += 1;
8184                next_offset += envelope_size;
8185            }
8186
8187            let next_out_of_line = decoder.next_out_of_line();
8188            let handles_before = decoder.remaining_handles();
8189            if let Some((inlined, num_bytes, num_handles)) =
8190                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8191            {
8192                let member_inline_size =
8193                    <CigPacking as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8194                if inlined != (member_inline_size <= 4) {
8195                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8196                }
8197                let inner_offset;
8198                let mut inner_depth = depth.clone();
8199                if inlined {
8200                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8201                    inner_offset = next_offset;
8202                } else {
8203                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8204                    inner_depth.increment()?;
8205                }
8206                let val_ref = self.packing.get_or_insert_with(|| fidl::new_empty!(CigPacking, D));
8207                fidl::decode!(CigPacking, D, val_ref, decoder, inner_offset, inner_depth)?;
8208                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8209                {
8210                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8211                }
8212                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8213                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8214                }
8215            }
8216
8217            next_offset += envelope_size;
8218            _next_ordinal_to_read += 1;
8219            if next_offset >= end_offset {
8220                return Ok(());
8221            }
8222
8223            // Decode unknown envelopes for gaps in ordinals.
8224            while _next_ordinal_to_read < 4 {
8225                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8226                _next_ordinal_to_read += 1;
8227                next_offset += envelope_size;
8228            }
8229
8230            let next_out_of_line = decoder.next_out_of_line();
8231            let handles_before = decoder.remaining_handles();
8232            if let Some((inlined, num_bytes, num_handles)) =
8233                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8234            {
8235                let member_inline_size =
8236                    <CigFramingOptions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8237                if inlined != (member_inline_size <= 4) {
8238                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8239                }
8240                let inner_offset;
8241                let mut inner_depth = depth.clone();
8242                if inlined {
8243                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8244                    inner_offset = next_offset;
8245                } else {
8246                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8247                    inner_depth.increment()?;
8248                }
8249                let val_ref =
8250                    self.framing.get_or_insert_with(|| fidl::new_empty!(CigFramingOptions, D));
8251                fidl::decode!(CigFramingOptions, D, val_ref, decoder, inner_offset, inner_depth)?;
8252                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8253                {
8254                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8255                }
8256                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8257                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8258                }
8259            }
8260
8261            next_offset += envelope_size;
8262            _next_ordinal_to_read += 1;
8263            if next_offset >= end_offset {
8264                return Ok(());
8265            }
8266
8267            // Decode unknown envelopes for gaps in ordinals.
8268            while _next_ordinal_to_read < 5 {
8269                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8270                _next_ordinal_to_read += 1;
8271                next_offset += envelope_size;
8272            }
8273
8274            let next_out_of_line = decoder.next_out_of_line();
8275            let handles_before = decoder.remaining_handles();
8276            if let Some((inlined, num_bytes, num_handles)) =
8277                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8278            {
8279                let member_inline_size =
8280                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8281                if inlined != (member_inline_size <= 4) {
8282                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8283                }
8284                let inner_offset;
8285                let mut inner_depth = depth.clone();
8286                if inlined {
8287                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8288                    inner_offset = next_offset;
8289                } else {
8290                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8291                    inner_depth.increment()?;
8292                }
8293                let val_ref = self
8294                    .max_transport_latency_c_to_p
8295                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
8296                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
8297                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8298                {
8299                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8300                }
8301                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8302                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8303                }
8304            }
8305
8306            next_offset += envelope_size;
8307            _next_ordinal_to_read += 1;
8308            if next_offset >= end_offset {
8309                return Ok(());
8310            }
8311
8312            // Decode unknown envelopes for gaps in ordinals.
8313            while _next_ordinal_to_read < 6 {
8314                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8315                _next_ordinal_to_read += 1;
8316                next_offset += envelope_size;
8317            }
8318
8319            let next_out_of_line = decoder.next_out_of_line();
8320            let handles_before = decoder.remaining_handles();
8321            if let Some((inlined, num_bytes, num_handles)) =
8322                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8323            {
8324                let member_inline_size =
8325                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8326                if inlined != (member_inline_size <= 4) {
8327                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8328                }
8329                let inner_offset;
8330                let mut inner_depth = depth.clone();
8331                if inlined {
8332                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8333                    inner_offset = next_offset;
8334                } else {
8335                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8336                    inner_depth.increment()?;
8337                }
8338                let val_ref = self
8339                    .max_transport_latency_p_to_c
8340                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
8341                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
8342                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8343                {
8344                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8345                }
8346                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8347                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8348                }
8349            }
8350
8351            next_offset += envelope_size;
8352            _next_ordinal_to_read += 1;
8353            if next_offset >= end_offset {
8354                return Ok(());
8355            }
8356
8357            // Decode unknown envelopes for gaps in ordinals.
8358            while _next_ordinal_to_read < 7 {
8359                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8360                _next_ordinal_to_read += 1;
8361                next_offset += envelope_size;
8362            }
8363
8364            let next_out_of_line = decoder.next_out_of_line();
8365            let handles_before = decoder.remaining_handles();
8366            if let Some((inlined, num_bytes, num_handles)) =
8367                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8368            {
8369                let member_inline_size = <fidl::encoding::UnboundedVector<
8370                    fidl_fuchsia_bluetooth_common::PeerId,
8371                > as fidl::encoding::TypeMarker>::inline_size(
8372                    decoder.context
8373                );
8374                if inlined != (member_inline_size <= 4) {
8375                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8376                }
8377                let inner_offset;
8378                let mut inner_depth = depth.clone();
8379                if inlined {
8380                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8381                    inner_offset = next_offset;
8382                } else {
8383                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8384                    inner_depth.increment()?;
8385                }
8386                let val_ref = self.expected_peers.get_or_insert_with(|| {
8387                    fidl::new_empty!(
8388                        fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_common::PeerId>,
8389                        D
8390                    )
8391                });
8392                fidl::decode!(
8393                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_common::PeerId>,
8394                    D,
8395                    val_ref,
8396                    decoder,
8397                    inner_offset,
8398                    inner_depth
8399                )?;
8400                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8401                {
8402                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8403                }
8404                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8405                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8406                }
8407            }
8408
8409            next_offset += envelope_size;
8410
8411            // Decode the remaining unknown envelopes.
8412            while next_offset < end_offset {
8413                _next_ordinal_to_read += 1;
8414                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8415                next_offset += envelope_size;
8416            }
8417
8418            Ok(())
8419        }
8420    }
8421
8422    impl CisEstablishedParameters {
8423        #[inline(always)]
8424        fn max_ordinal_present(&self) -> u64 {
8425            if let Some(_) = self.peripheral_to_central_params {
8426                return 6;
8427            }
8428            if let Some(_) = self.central_to_peripheral_params {
8429                return 5;
8430            }
8431            if let Some(_) = self.iso_interval {
8432                return 4;
8433            }
8434            if let Some(_) = self.max_subevents {
8435                return 3;
8436            }
8437            if let Some(_) = self.cis_sync_delay {
8438                return 2;
8439            }
8440            if let Some(_) = self.cig_sync_delay {
8441                return 1;
8442            }
8443            0
8444        }
8445    }
8446
8447    impl fidl::encoding::ValueTypeMarker for CisEstablishedParameters {
8448        type Borrowed<'a> = &'a Self;
8449        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8450            value
8451        }
8452    }
8453
8454    unsafe impl fidl::encoding::TypeMarker for CisEstablishedParameters {
8455        type Owned = Self;
8456
8457        #[inline(always)]
8458        fn inline_align(_context: fidl::encoding::Context) -> usize {
8459            8
8460        }
8461
8462        #[inline(always)]
8463        fn inline_size(_context: fidl::encoding::Context) -> usize {
8464            16
8465        }
8466    }
8467
8468    unsafe impl<D: fidl::encoding::ResourceDialect>
8469        fidl::encoding::Encode<CisEstablishedParameters, D> for &CisEstablishedParameters
8470    {
8471        unsafe fn encode(
8472            self,
8473            encoder: &mut fidl::encoding::Encoder<'_, D>,
8474            offset: usize,
8475            mut depth: fidl::encoding::Depth,
8476        ) -> fidl::Result<()> {
8477            encoder.debug_check_bounds::<CisEstablishedParameters>(offset);
8478            // Vector header
8479            let max_ordinal: u64 = self.max_ordinal_present();
8480            encoder.write_num(max_ordinal, offset);
8481            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8482            // Calling encoder.out_of_line_offset(0) is not allowed.
8483            if max_ordinal == 0 {
8484                return Ok(());
8485            }
8486            depth.increment()?;
8487            let envelope_size = 8;
8488            let bytes_len = max_ordinal as usize * envelope_size;
8489            #[allow(unused_variables)]
8490            let offset = encoder.out_of_line_offset(bytes_len);
8491            let mut _prev_end_offset: usize = 0;
8492            if 1 > max_ordinal {
8493                return Ok(());
8494            }
8495
8496            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8497            // are envelope_size bytes.
8498            let cur_offset: usize = (1 - 1) * envelope_size;
8499
8500            // Zero reserved fields.
8501            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8502
8503            // Safety:
8504            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8505            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8506            //   envelope_size bytes, there is always sufficient room.
8507            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8508                self.cig_sync_delay.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8509                encoder,
8510                offset + cur_offset,
8511                depth,
8512            )?;
8513
8514            _prev_end_offset = cur_offset + envelope_size;
8515            if 2 > max_ordinal {
8516                return Ok(());
8517            }
8518
8519            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8520            // are envelope_size bytes.
8521            let cur_offset: usize = (2 - 1) * envelope_size;
8522
8523            // Zero reserved fields.
8524            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8525
8526            // Safety:
8527            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8528            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8529            //   envelope_size bytes, there is always sufficient room.
8530            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8531                self.cis_sync_delay.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8532                encoder,
8533                offset + cur_offset,
8534                depth,
8535            )?;
8536
8537            _prev_end_offset = cur_offset + envelope_size;
8538            if 3 > max_ordinal {
8539                return Ok(());
8540            }
8541
8542            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8543            // are envelope_size bytes.
8544            let cur_offset: usize = (3 - 1) * envelope_size;
8545
8546            // Zero reserved fields.
8547            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8548
8549            // Safety:
8550            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8551            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8552            //   envelope_size bytes, there is always sufficient room.
8553            fidl::encoding::encode_in_envelope_optional::<u8, D>(
8554                self.max_subevents.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
8555                encoder,
8556                offset + cur_offset,
8557                depth,
8558            )?;
8559
8560            _prev_end_offset = cur_offset + envelope_size;
8561            if 4 > max_ordinal {
8562                return Ok(());
8563            }
8564
8565            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8566            // are envelope_size bytes.
8567            let cur_offset: usize = (4 - 1) * envelope_size;
8568
8569            // Zero reserved fields.
8570            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8571
8572            // Safety:
8573            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8574            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8575            //   envelope_size bytes, there is always sufficient room.
8576            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8577                self.iso_interval.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8578                encoder,
8579                offset + cur_offset,
8580                depth,
8581            )?;
8582
8583            _prev_end_offset = cur_offset + envelope_size;
8584            if 5 > max_ordinal {
8585                return Ok(());
8586            }
8587
8588            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8589            // are envelope_size bytes.
8590            let cur_offset: usize = (5 - 1) * envelope_size;
8591
8592            // Zero reserved fields.
8593            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8594
8595            // Safety:
8596            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8597            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8598            //   envelope_size bytes, there is always sufficient room.
8599            fidl::encoding::encode_in_envelope_optional::<CisUnidirectionalParams, D>(
8600                self.central_to_peripheral_params
8601                    .as_ref()
8602                    .map(<CisUnidirectionalParams as fidl::encoding::ValueTypeMarker>::borrow),
8603                encoder,
8604                offset + cur_offset,
8605                depth,
8606            )?;
8607
8608            _prev_end_offset = cur_offset + envelope_size;
8609            if 6 > max_ordinal {
8610                return Ok(());
8611            }
8612
8613            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8614            // are envelope_size bytes.
8615            let cur_offset: usize = (6 - 1) * envelope_size;
8616
8617            // Zero reserved fields.
8618            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8619
8620            // Safety:
8621            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8622            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8623            //   envelope_size bytes, there is always sufficient room.
8624            fidl::encoding::encode_in_envelope_optional::<CisUnidirectionalParams, D>(
8625                self.peripheral_to_central_params
8626                    .as_ref()
8627                    .map(<CisUnidirectionalParams as fidl::encoding::ValueTypeMarker>::borrow),
8628                encoder,
8629                offset + cur_offset,
8630                depth,
8631            )?;
8632
8633            _prev_end_offset = cur_offset + envelope_size;
8634
8635            Ok(())
8636        }
8637    }
8638
8639    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8640        for CisEstablishedParameters
8641    {
8642        #[inline(always)]
8643        fn new_empty() -> Self {
8644            Self::default()
8645        }
8646
8647        unsafe fn decode(
8648            &mut self,
8649            decoder: &mut fidl::encoding::Decoder<'_, D>,
8650            offset: usize,
8651            mut depth: fidl::encoding::Depth,
8652        ) -> fidl::Result<()> {
8653            decoder.debug_check_bounds::<Self>(offset);
8654            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8655                None => return Err(fidl::Error::NotNullable),
8656                Some(len) => len,
8657            };
8658            // Calling decoder.out_of_line_offset(0) is not allowed.
8659            if len == 0 {
8660                return Ok(());
8661            };
8662            depth.increment()?;
8663            let envelope_size = 8;
8664            let bytes_len = len * envelope_size;
8665            let offset = decoder.out_of_line_offset(bytes_len)?;
8666            // Decode the envelope for each type.
8667            let mut _next_ordinal_to_read = 0;
8668            let mut next_offset = offset;
8669            let end_offset = offset + bytes_len;
8670            _next_ordinal_to_read += 1;
8671            if next_offset >= end_offset {
8672                return Ok(());
8673            }
8674
8675            // Decode unknown envelopes for gaps in ordinals.
8676            while _next_ordinal_to_read < 1 {
8677                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8678                _next_ordinal_to_read += 1;
8679                next_offset += envelope_size;
8680            }
8681
8682            let next_out_of_line = decoder.next_out_of_line();
8683            let handles_before = decoder.remaining_handles();
8684            if let Some((inlined, num_bytes, num_handles)) =
8685                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8686            {
8687                let member_inline_size =
8688                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8689                if inlined != (member_inline_size <= 4) {
8690                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8691                }
8692                let inner_offset;
8693                let mut inner_depth = depth.clone();
8694                if inlined {
8695                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8696                    inner_offset = next_offset;
8697                } else {
8698                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8699                    inner_depth.increment()?;
8700                }
8701                let val_ref = self.cig_sync_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
8702                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8703                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8704                {
8705                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8706                }
8707                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8708                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8709                }
8710            }
8711
8712            next_offset += envelope_size;
8713            _next_ordinal_to_read += 1;
8714            if next_offset >= end_offset {
8715                return Ok(());
8716            }
8717
8718            // Decode unknown envelopes for gaps in ordinals.
8719            while _next_ordinal_to_read < 2 {
8720                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8721                _next_ordinal_to_read += 1;
8722                next_offset += envelope_size;
8723            }
8724
8725            let next_out_of_line = decoder.next_out_of_line();
8726            let handles_before = decoder.remaining_handles();
8727            if let Some((inlined, num_bytes, num_handles)) =
8728                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8729            {
8730                let member_inline_size =
8731                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8732                if inlined != (member_inline_size <= 4) {
8733                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8734                }
8735                let inner_offset;
8736                let mut inner_depth = depth.clone();
8737                if inlined {
8738                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8739                    inner_offset = next_offset;
8740                } else {
8741                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8742                    inner_depth.increment()?;
8743                }
8744                let val_ref = self.cis_sync_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
8745                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8746                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8747                {
8748                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8749                }
8750                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8751                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8752                }
8753            }
8754
8755            next_offset += envelope_size;
8756            _next_ordinal_to_read += 1;
8757            if next_offset >= end_offset {
8758                return Ok(());
8759            }
8760
8761            // Decode unknown envelopes for gaps in ordinals.
8762            while _next_ordinal_to_read < 3 {
8763                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8764                _next_ordinal_to_read += 1;
8765                next_offset += envelope_size;
8766            }
8767
8768            let next_out_of_line = decoder.next_out_of_line();
8769            let handles_before = decoder.remaining_handles();
8770            if let Some((inlined, num_bytes, num_handles)) =
8771                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8772            {
8773                let member_inline_size =
8774                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8775                if inlined != (member_inline_size <= 4) {
8776                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8777                }
8778                let inner_offset;
8779                let mut inner_depth = depth.clone();
8780                if inlined {
8781                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8782                    inner_offset = next_offset;
8783                } else {
8784                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8785                    inner_depth.increment()?;
8786                }
8787                let val_ref = self.max_subevents.get_or_insert_with(|| fidl::new_empty!(u8, D));
8788                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
8789                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8790                {
8791                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8792                }
8793                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8794                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8795                }
8796            }
8797
8798            next_offset += envelope_size;
8799            _next_ordinal_to_read += 1;
8800            if next_offset >= end_offset {
8801                return Ok(());
8802            }
8803
8804            // Decode unknown envelopes for gaps in ordinals.
8805            while _next_ordinal_to_read < 4 {
8806                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8807                _next_ordinal_to_read += 1;
8808                next_offset += envelope_size;
8809            }
8810
8811            let next_out_of_line = decoder.next_out_of_line();
8812            let handles_before = decoder.remaining_handles();
8813            if let Some((inlined, num_bytes, num_handles)) =
8814                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8815            {
8816                let member_inline_size =
8817                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8818                if inlined != (member_inline_size <= 4) {
8819                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8820                }
8821                let inner_offset;
8822                let mut inner_depth = depth.clone();
8823                if inlined {
8824                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8825                    inner_offset = next_offset;
8826                } else {
8827                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8828                    inner_depth.increment()?;
8829                }
8830                let val_ref = self.iso_interval.get_or_insert_with(|| fidl::new_empty!(i64, D));
8831                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8832                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8833                {
8834                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8835                }
8836                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8837                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8838                }
8839            }
8840
8841            next_offset += envelope_size;
8842            _next_ordinal_to_read += 1;
8843            if next_offset >= end_offset {
8844                return Ok(());
8845            }
8846
8847            // Decode unknown envelopes for gaps in ordinals.
8848            while _next_ordinal_to_read < 5 {
8849                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8850                _next_ordinal_to_read += 1;
8851                next_offset += envelope_size;
8852            }
8853
8854            let next_out_of_line = decoder.next_out_of_line();
8855            let handles_before = decoder.remaining_handles();
8856            if let Some((inlined, num_bytes, num_handles)) =
8857                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8858            {
8859                let member_inline_size =
8860                    <CisUnidirectionalParams as fidl::encoding::TypeMarker>::inline_size(
8861                        decoder.context,
8862                    );
8863                if inlined != (member_inline_size <= 4) {
8864                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8865                }
8866                let inner_offset;
8867                let mut inner_depth = depth.clone();
8868                if inlined {
8869                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8870                    inner_offset = next_offset;
8871                } else {
8872                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8873                    inner_depth.increment()?;
8874                }
8875                let val_ref = self
8876                    .central_to_peripheral_params
8877                    .get_or_insert_with(|| fidl::new_empty!(CisUnidirectionalParams, D));
8878                fidl::decode!(
8879                    CisUnidirectionalParams,
8880                    D,
8881                    val_ref,
8882                    decoder,
8883                    inner_offset,
8884                    inner_depth
8885                )?;
8886                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8887                {
8888                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8889                }
8890                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8891                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8892                }
8893            }
8894
8895            next_offset += envelope_size;
8896            _next_ordinal_to_read += 1;
8897            if next_offset >= end_offset {
8898                return Ok(());
8899            }
8900
8901            // Decode unknown envelopes for gaps in ordinals.
8902            while _next_ordinal_to_read < 6 {
8903                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8904                _next_ordinal_to_read += 1;
8905                next_offset += envelope_size;
8906            }
8907
8908            let next_out_of_line = decoder.next_out_of_line();
8909            let handles_before = decoder.remaining_handles();
8910            if let Some((inlined, num_bytes, num_handles)) =
8911                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8912            {
8913                let member_inline_size =
8914                    <CisUnidirectionalParams as fidl::encoding::TypeMarker>::inline_size(
8915                        decoder.context,
8916                    );
8917                if inlined != (member_inline_size <= 4) {
8918                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8919                }
8920                let inner_offset;
8921                let mut inner_depth = depth.clone();
8922                if inlined {
8923                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8924                    inner_offset = next_offset;
8925                } else {
8926                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8927                    inner_depth.increment()?;
8928                }
8929                let val_ref = self
8930                    .peripheral_to_central_params
8931                    .get_or_insert_with(|| fidl::new_empty!(CisUnidirectionalParams, D));
8932                fidl::decode!(
8933                    CisUnidirectionalParams,
8934                    D,
8935                    val_ref,
8936                    decoder,
8937                    inner_offset,
8938                    inner_depth
8939                )?;
8940                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8941                {
8942                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8943                }
8944                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8945                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8946                }
8947            }
8948
8949            next_offset += envelope_size;
8950
8951            // Decode the remaining unknown envelopes.
8952            while next_offset < end_offset {
8953                _next_ordinal_to_read += 1;
8954                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8955                next_offset += envelope_size;
8956            }
8957
8958            Ok(())
8959        }
8960    }
8961
8962    impl CisParameters {
8963        #[inline(always)]
8964        fn max_ordinal_present(&self) -> u64 {
8965            if let Some(_) = self.id {
8966                return 2;
8967            }
8968            if let Some(_) = self.cis_id {
8969                return 1;
8970            }
8971            0
8972        }
8973    }
8974
8975    impl fidl::encoding::ValueTypeMarker for CisParameters {
8976        type Borrowed<'a> = &'a Self;
8977        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8978            value
8979        }
8980    }
8981
8982    unsafe impl fidl::encoding::TypeMarker for CisParameters {
8983        type Owned = Self;
8984
8985        #[inline(always)]
8986        fn inline_align(_context: fidl::encoding::Context) -> usize {
8987            8
8988        }
8989
8990        #[inline(always)]
8991        fn inline_size(_context: fidl::encoding::Context) -> usize {
8992            16
8993        }
8994    }
8995
8996    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CisParameters, D>
8997        for &CisParameters
8998    {
8999        unsafe fn encode(
9000            self,
9001            encoder: &mut fidl::encoding::Encoder<'_, D>,
9002            offset: usize,
9003            mut depth: fidl::encoding::Depth,
9004        ) -> fidl::Result<()> {
9005            encoder.debug_check_bounds::<CisParameters>(offset);
9006            // Vector header
9007            let max_ordinal: u64 = self.max_ordinal_present();
9008            encoder.write_num(max_ordinal, offset);
9009            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9010            // Calling encoder.out_of_line_offset(0) is not allowed.
9011            if max_ordinal == 0 {
9012                return Ok(());
9013            }
9014            depth.increment()?;
9015            let envelope_size = 8;
9016            let bytes_len = max_ordinal as usize * envelope_size;
9017            #[allow(unused_variables)]
9018            let offset = encoder.out_of_line_offset(bytes_len);
9019            let mut _prev_end_offset: usize = 0;
9020            if 1 > max_ordinal {
9021                return Ok(());
9022            }
9023
9024            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9025            // are envelope_size bytes.
9026            let cur_offset: usize = (1 - 1) * envelope_size;
9027
9028            // Zero reserved fields.
9029            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9030
9031            // Safety:
9032            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9033            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9034            //   envelope_size bytes, there is always sufficient room.
9035            fidl::encoding::encode_in_envelope_optional::<u8, D>(
9036                self.cis_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
9037                encoder,
9038                offset + cur_offset,
9039                depth,
9040            )?;
9041
9042            _prev_end_offset = cur_offset + envelope_size;
9043            if 2 > max_ordinal {
9044                return Ok(());
9045            }
9046
9047            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9048            // are envelope_size bytes.
9049            let cur_offset: usize = (2 - 1) * envelope_size;
9050
9051            // Zero reserved fields.
9052            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9053
9054            // Safety:
9055            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9056            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9057            //   envelope_size bytes, there is always sufficient room.
9058            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::PeerId, D>(
9059            self.id.as_ref().map(<fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
9060            encoder, offset + cur_offset, depth
9061        )?;
9062
9063            _prev_end_offset = cur_offset + envelope_size;
9064
9065            Ok(())
9066        }
9067    }
9068
9069    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CisParameters {
9070        #[inline(always)]
9071        fn new_empty() -> Self {
9072            Self::default()
9073        }
9074
9075        unsafe fn decode(
9076            &mut self,
9077            decoder: &mut fidl::encoding::Decoder<'_, D>,
9078            offset: usize,
9079            mut depth: fidl::encoding::Depth,
9080        ) -> fidl::Result<()> {
9081            decoder.debug_check_bounds::<Self>(offset);
9082            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9083                None => return Err(fidl::Error::NotNullable),
9084                Some(len) => len,
9085            };
9086            // Calling decoder.out_of_line_offset(0) is not allowed.
9087            if len == 0 {
9088                return Ok(());
9089            };
9090            depth.increment()?;
9091            let envelope_size = 8;
9092            let bytes_len = len * envelope_size;
9093            let offset = decoder.out_of_line_offset(bytes_len)?;
9094            // Decode the envelope for each type.
9095            let mut _next_ordinal_to_read = 0;
9096            let mut next_offset = offset;
9097            let end_offset = offset + bytes_len;
9098            _next_ordinal_to_read += 1;
9099            if next_offset >= end_offset {
9100                return Ok(());
9101            }
9102
9103            // Decode unknown envelopes for gaps in ordinals.
9104            while _next_ordinal_to_read < 1 {
9105                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9106                _next_ordinal_to_read += 1;
9107                next_offset += envelope_size;
9108            }
9109
9110            let next_out_of_line = decoder.next_out_of_line();
9111            let handles_before = decoder.remaining_handles();
9112            if let Some((inlined, num_bytes, num_handles)) =
9113                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9114            {
9115                let member_inline_size =
9116                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9117                if inlined != (member_inline_size <= 4) {
9118                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9119                }
9120                let inner_offset;
9121                let mut inner_depth = depth.clone();
9122                if inlined {
9123                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9124                    inner_offset = next_offset;
9125                } else {
9126                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9127                    inner_depth.increment()?;
9128                }
9129                let val_ref = self.cis_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
9130                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9131                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9132                {
9133                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9134                }
9135                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9136                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9137                }
9138            }
9139
9140            next_offset += envelope_size;
9141            _next_ordinal_to_read += 1;
9142            if next_offset >= end_offset {
9143                return Ok(());
9144            }
9145
9146            // Decode unknown envelopes for gaps in ordinals.
9147            while _next_ordinal_to_read < 2 {
9148                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9149                _next_ordinal_to_read += 1;
9150                next_offset += envelope_size;
9151            }
9152
9153            let next_out_of_line = decoder.next_out_of_line();
9154            let handles_before = decoder.remaining_handles();
9155            if let Some((inlined, num_bytes, num_handles)) =
9156                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9157            {
9158                let member_inline_size = <fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9159                if inlined != (member_inline_size <= 4) {
9160                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9161                }
9162                let inner_offset;
9163                let mut inner_depth = depth.clone();
9164                if inlined {
9165                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9166                    inner_offset = next_offset;
9167                } else {
9168                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9169                    inner_depth.increment()?;
9170                }
9171                let val_ref = self.id.get_or_insert_with(|| {
9172                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::PeerId, D)
9173                });
9174                fidl::decode!(
9175                    fidl_fuchsia_bluetooth_common::PeerId,
9176                    D,
9177                    val_ref,
9178                    decoder,
9179                    inner_offset,
9180                    inner_depth
9181                )?;
9182                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9183                {
9184                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9185                }
9186                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9187                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9188                }
9189            }
9190
9191            next_offset += envelope_size;
9192
9193            // Decode the remaining unknown envelopes.
9194            while next_offset < end_offset {
9195                _next_ordinal_to_read += 1;
9196                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9197                next_offset += envelope_size;
9198            }
9199
9200            Ok(())
9201        }
9202    }
9203
9204    impl CisUnidirectionalParams {
9205        #[inline(always)]
9206        fn max_ordinal_present(&self) -> u64 {
9207            if let Some(_) = self.flush_timeout {
9208                return 3;
9209            }
9210            if let Some(_) = self.burst_number {
9211                return 2;
9212            }
9213            if let Some(_) = self.transport_latency {
9214                return 1;
9215            }
9216            0
9217        }
9218    }
9219
9220    impl fidl::encoding::ValueTypeMarker for CisUnidirectionalParams {
9221        type Borrowed<'a> = &'a Self;
9222        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9223            value
9224        }
9225    }
9226
9227    unsafe impl fidl::encoding::TypeMarker for CisUnidirectionalParams {
9228        type Owned = Self;
9229
9230        #[inline(always)]
9231        fn inline_align(_context: fidl::encoding::Context) -> usize {
9232            8
9233        }
9234
9235        #[inline(always)]
9236        fn inline_size(_context: fidl::encoding::Context) -> usize {
9237            16
9238        }
9239    }
9240
9241    unsafe impl<D: fidl::encoding::ResourceDialect>
9242        fidl::encoding::Encode<CisUnidirectionalParams, D> for &CisUnidirectionalParams
9243    {
9244        unsafe fn encode(
9245            self,
9246            encoder: &mut fidl::encoding::Encoder<'_, D>,
9247            offset: usize,
9248            mut depth: fidl::encoding::Depth,
9249        ) -> fidl::Result<()> {
9250            encoder.debug_check_bounds::<CisUnidirectionalParams>(offset);
9251            // Vector header
9252            let max_ordinal: u64 = self.max_ordinal_present();
9253            encoder.write_num(max_ordinal, offset);
9254            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9255            // Calling encoder.out_of_line_offset(0) is not allowed.
9256            if max_ordinal == 0 {
9257                return Ok(());
9258            }
9259            depth.increment()?;
9260            let envelope_size = 8;
9261            let bytes_len = max_ordinal as usize * envelope_size;
9262            #[allow(unused_variables)]
9263            let offset = encoder.out_of_line_offset(bytes_len);
9264            let mut _prev_end_offset: usize = 0;
9265            if 1 > max_ordinal {
9266                return Ok(());
9267            }
9268
9269            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9270            // are envelope_size bytes.
9271            let cur_offset: usize = (1 - 1) * envelope_size;
9272
9273            // Zero reserved fields.
9274            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9275
9276            // Safety:
9277            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9278            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9279            //   envelope_size bytes, there is always sufficient room.
9280            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9281                self.transport_latency
9282                    .as_ref()
9283                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9284                encoder,
9285                offset + cur_offset,
9286                depth,
9287            )?;
9288
9289            _prev_end_offset = cur_offset + envelope_size;
9290            if 2 > max_ordinal {
9291                return Ok(());
9292            }
9293
9294            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9295            // are envelope_size bytes.
9296            let cur_offset: usize = (2 - 1) * envelope_size;
9297
9298            // Zero reserved fields.
9299            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9300
9301            // Safety:
9302            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9303            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9304            //   envelope_size bytes, there is always sufficient room.
9305            fidl::encoding::encode_in_envelope_optional::<u8, D>(
9306                self.burst_number.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
9307                encoder,
9308                offset + cur_offset,
9309                depth,
9310            )?;
9311
9312            _prev_end_offset = cur_offset + envelope_size;
9313            if 3 > max_ordinal {
9314                return Ok(());
9315            }
9316
9317            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9318            // are envelope_size bytes.
9319            let cur_offset: usize = (3 - 1) * envelope_size;
9320
9321            // Zero reserved fields.
9322            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9323
9324            // Safety:
9325            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9326            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9327            //   envelope_size bytes, there is always sufficient room.
9328            fidl::encoding::encode_in_envelope_optional::<u8, D>(
9329                self.flush_timeout.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
9330                encoder,
9331                offset + cur_offset,
9332                depth,
9333            )?;
9334
9335            _prev_end_offset = cur_offset + envelope_size;
9336
9337            Ok(())
9338        }
9339    }
9340
9341    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9342        for CisUnidirectionalParams
9343    {
9344        #[inline(always)]
9345        fn new_empty() -> Self {
9346            Self::default()
9347        }
9348
9349        unsafe fn decode(
9350            &mut self,
9351            decoder: &mut fidl::encoding::Decoder<'_, D>,
9352            offset: usize,
9353            mut depth: fidl::encoding::Depth,
9354        ) -> fidl::Result<()> {
9355            decoder.debug_check_bounds::<Self>(offset);
9356            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9357                None => return Err(fidl::Error::NotNullable),
9358                Some(len) => len,
9359            };
9360            // Calling decoder.out_of_line_offset(0) is not allowed.
9361            if len == 0 {
9362                return Ok(());
9363            };
9364            depth.increment()?;
9365            let envelope_size = 8;
9366            let bytes_len = len * envelope_size;
9367            let offset = decoder.out_of_line_offset(bytes_len)?;
9368            // Decode the envelope for each type.
9369            let mut _next_ordinal_to_read = 0;
9370            let mut next_offset = offset;
9371            let end_offset = offset + bytes_len;
9372            _next_ordinal_to_read += 1;
9373            if next_offset >= end_offset {
9374                return Ok(());
9375            }
9376
9377            // Decode unknown envelopes for gaps in ordinals.
9378            while _next_ordinal_to_read < 1 {
9379                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9380                _next_ordinal_to_read += 1;
9381                next_offset += envelope_size;
9382            }
9383
9384            let next_out_of_line = decoder.next_out_of_line();
9385            let handles_before = decoder.remaining_handles();
9386            if let Some((inlined, num_bytes, num_handles)) =
9387                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9388            {
9389                let member_inline_size =
9390                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9391                if inlined != (member_inline_size <= 4) {
9392                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9393                }
9394                let inner_offset;
9395                let mut inner_depth = depth.clone();
9396                if inlined {
9397                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9398                    inner_offset = next_offset;
9399                } else {
9400                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9401                    inner_depth.increment()?;
9402                }
9403                let val_ref =
9404                    self.transport_latency.get_or_insert_with(|| fidl::new_empty!(i64, D));
9405                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9406                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9407                {
9408                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9409                }
9410                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9411                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9412                }
9413            }
9414
9415            next_offset += envelope_size;
9416            _next_ordinal_to_read += 1;
9417            if next_offset >= end_offset {
9418                return Ok(());
9419            }
9420
9421            // Decode unknown envelopes for gaps in ordinals.
9422            while _next_ordinal_to_read < 2 {
9423                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9424                _next_ordinal_to_read += 1;
9425                next_offset += envelope_size;
9426            }
9427
9428            let next_out_of_line = decoder.next_out_of_line();
9429            let handles_before = decoder.remaining_handles();
9430            if let Some((inlined, num_bytes, num_handles)) =
9431                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9432            {
9433                let member_inline_size =
9434                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9435                if inlined != (member_inline_size <= 4) {
9436                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9437                }
9438                let inner_offset;
9439                let mut inner_depth = depth.clone();
9440                if inlined {
9441                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9442                    inner_offset = next_offset;
9443                } else {
9444                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9445                    inner_depth.increment()?;
9446                }
9447                let val_ref = self.burst_number.get_or_insert_with(|| fidl::new_empty!(u8, D));
9448                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9449                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9450                {
9451                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9452                }
9453                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9454                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9455                }
9456            }
9457
9458            next_offset += envelope_size;
9459            _next_ordinal_to_read += 1;
9460            if next_offset >= end_offset {
9461                return Ok(());
9462            }
9463
9464            // Decode unknown envelopes for gaps in ordinals.
9465            while _next_ordinal_to_read < 3 {
9466                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9467                _next_ordinal_to_read += 1;
9468                next_offset += envelope_size;
9469            }
9470
9471            let next_out_of_line = decoder.next_out_of_line();
9472            let handles_before = decoder.remaining_handles();
9473            if let Some((inlined, num_bytes, num_handles)) =
9474                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9475            {
9476                let member_inline_size =
9477                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9478                if inlined != (member_inline_size <= 4) {
9479                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9480                }
9481                let inner_offset;
9482                let mut inner_depth = depth.clone();
9483                if inlined {
9484                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9485                    inner_offset = next_offset;
9486                } else {
9487                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9488                    inner_depth.increment()?;
9489                }
9490                let val_ref = self.flush_timeout.get_or_insert_with(|| fidl::new_empty!(u8, D));
9491                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9492                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9493                {
9494                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9495                }
9496                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9497                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9498                }
9499            }
9500
9501            next_offset += envelope_size;
9502
9503            // Decode the remaining unknown envelopes.
9504            while next_offset < end_offset {
9505                _next_ordinal_to_read += 1;
9506                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9507                next_offset += envelope_size;
9508            }
9509
9510            Ok(())
9511        }
9512    }
9513
9514    impl CodecDelayGetCodecLocalDelayRangeRequest {
9515        #[inline(always)]
9516        fn max_ordinal_present(&self) -> u64 {
9517            if let Some(_) = self.codec_attributes {
9518                return 3;
9519            }
9520            if let Some(_) = self.data_direction {
9521                return 2;
9522            }
9523            if let Some(_) = self.logical_transport_type {
9524                return 1;
9525            }
9526            0
9527        }
9528    }
9529
9530    impl fidl::encoding::ValueTypeMarker for CodecDelayGetCodecLocalDelayRangeRequest {
9531        type Borrowed<'a> = &'a Self;
9532        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9533            value
9534        }
9535    }
9536
9537    unsafe impl fidl::encoding::TypeMarker for CodecDelayGetCodecLocalDelayRangeRequest {
9538        type Owned = Self;
9539
9540        #[inline(always)]
9541        fn inline_align(_context: fidl::encoding::Context) -> usize {
9542            8
9543        }
9544
9545        #[inline(always)]
9546        fn inline_size(_context: fidl::encoding::Context) -> usize {
9547            16
9548        }
9549    }
9550
9551    unsafe impl<D: fidl::encoding::ResourceDialect>
9552        fidl::encoding::Encode<CodecDelayGetCodecLocalDelayRangeRequest, D>
9553        for &CodecDelayGetCodecLocalDelayRangeRequest
9554    {
9555        unsafe fn encode(
9556            self,
9557            encoder: &mut fidl::encoding::Encoder<'_, D>,
9558            offset: usize,
9559            mut depth: fidl::encoding::Depth,
9560        ) -> fidl::Result<()> {
9561            encoder.debug_check_bounds::<CodecDelayGetCodecLocalDelayRangeRequest>(offset);
9562            // Vector header
9563            let max_ordinal: u64 = self.max_ordinal_present();
9564            encoder.write_num(max_ordinal, offset);
9565            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9566            // Calling encoder.out_of_line_offset(0) is not allowed.
9567            if max_ordinal == 0 {
9568                return Ok(());
9569            }
9570            depth.increment()?;
9571            let envelope_size = 8;
9572            let bytes_len = max_ordinal as usize * envelope_size;
9573            #[allow(unused_variables)]
9574            let offset = encoder.out_of_line_offset(bytes_len);
9575            let mut _prev_end_offset: usize = 0;
9576            if 1 > max_ordinal {
9577                return Ok(());
9578            }
9579
9580            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9581            // are envelope_size bytes.
9582            let cur_offset: usize = (1 - 1) * envelope_size;
9583
9584            // Zero reserved fields.
9585            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9586
9587            // Safety:
9588            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9589            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9590            //   envelope_size bytes, there is always sufficient room.
9591            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::LogicalTransportType, D>(
9592            self.logical_transport_type.as_ref().map(<fidl_fuchsia_bluetooth_common::LogicalTransportType as fidl::encoding::ValueTypeMarker>::borrow),
9593            encoder, offset + cur_offset, depth
9594        )?;
9595
9596            _prev_end_offset = cur_offset + envelope_size;
9597            if 2 > max_ordinal {
9598                return Ok(());
9599            }
9600
9601            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9602            // are envelope_size bytes.
9603            let cur_offset: usize = (2 - 1) * envelope_size;
9604
9605            // Zero reserved fields.
9606            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9607
9608            // Safety:
9609            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9610            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9611            //   envelope_size bytes, there is always sufficient room.
9612            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::DataDirection, D>(
9613            self.data_direction.as_ref().map(<fidl_fuchsia_bluetooth_common::DataDirection as fidl::encoding::ValueTypeMarker>::borrow),
9614            encoder, offset + cur_offset, depth
9615        )?;
9616
9617            _prev_end_offset = cur_offset + envelope_size;
9618            if 3 > max_ordinal {
9619                return Ok(());
9620            }
9621
9622            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9623            // are envelope_size bytes.
9624            let cur_offset: usize = (3 - 1) * envelope_size;
9625
9626            // Zero reserved fields.
9627            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9628
9629            // Safety:
9630            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9631            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9632            //   envelope_size bytes, there is always sufficient room.
9633            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::CodecAttributes, D>(
9634            self.codec_attributes.as_ref().map(<fidl_fuchsia_bluetooth_common::CodecAttributes as fidl::encoding::ValueTypeMarker>::borrow),
9635            encoder, offset + cur_offset, depth
9636        )?;
9637
9638            _prev_end_offset = cur_offset + envelope_size;
9639
9640            Ok(())
9641        }
9642    }
9643
9644    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9645        for CodecDelayGetCodecLocalDelayRangeRequest
9646    {
9647        #[inline(always)]
9648        fn new_empty() -> Self {
9649            Self::default()
9650        }
9651
9652        unsafe fn decode(
9653            &mut self,
9654            decoder: &mut fidl::encoding::Decoder<'_, D>,
9655            offset: usize,
9656            mut depth: fidl::encoding::Depth,
9657        ) -> fidl::Result<()> {
9658            decoder.debug_check_bounds::<Self>(offset);
9659            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9660                None => return Err(fidl::Error::NotNullable),
9661                Some(len) => len,
9662            };
9663            // Calling decoder.out_of_line_offset(0) is not allowed.
9664            if len == 0 {
9665                return Ok(());
9666            };
9667            depth.increment()?;
9668            let envelope_size = 8;
9669            let bytes_len = len * envelope_size;
9670            let offset = decoder.out_of_line_offset(bytes_len)?;
9671            // Decode the envelope for each type.
9672            let mut _next_ordinal_to_read = 0;
9673            let mut next_offset = offset;
9674            let end_offset = offset + bytes_len;
9675            _next_ordinal_to_read += 1;
9676            if next_offset >= end_offset {
9677                return Ok(());
9678            }
9679
9680            // Decode unknown envelopes for gaps in ordinals.
9681            while _next_ordinal_to_read < 1 {
9682                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9683                _next_ordinal_to_read += 1;
9684                next_offset += envelope_size;
9685            }
9686
9687            let next_out_of_line = decoder.next_out_of_line();
9688            let handles_before = decoder.remaining_handles();
9689            if let Some((inlined, num_bytes, num_handles)) =
9690                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9691            {
9692                let member_inline_size = <fidl_fuchsia_bluetooth_common::LogicalTransportType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9693                if inlined != (member_inline_size <= 4) {
9694                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9695                }
9696                let inner_offset;
9697                let mut inner_depth = depth.clone();
9698                if inlined {
9699                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9700                    inner_offset = next_offset;
9701                } else {
9702                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9703                    inner_depth.increment()?;
9704                }
9705                let val_ref = self.logical_transport_type.get_or_insert_with(|| {
9706                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::LogicalTransportType, D)
9707                });
9708                fidl::decode!(
9709                    fidl_fuchsia_bluetooth_common::LogicalTransportType,
9710                    D,
9711                    val_ref,
9712                    decoder,
9713                    inner_offset,
9714                    inner_depth
9715                )?;
9716                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9717                {
9718                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9719                }
9720                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9721                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9722                }
9723            }
9724
9725            next_offset += envelope_size;
9726            _next_ordinal_to_read += 1;
9727            if next_offset >= end_offset {
9728                return Ok(());
9729            }
9730
9731            // Decode unknown envelopes for gaps in ordinals.
9732            while _next_ordinal_to_read < 2 {
9733                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9734                _next_ordinal_to_read += 1;
9735                next_offset += envelope_size;
9736            }
9737
9738            let next_out_of_line = decoder.next_out_of_line();
9739            let handles_before = decoder.remaining_handles();
9740            if let Some((inlined, num_bytes, num_handles)) =
9741                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9742            {
9743                let member_inline_size = <fidl_fuchsia_bluetooth_common::DataDirection as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9744                if inlined != (member_inline_size <= 4) {
9745                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9746                }
9747                let inner_offset;
9748                let mut inner_depth = depth.clone();
9749                if inlined {
9750                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9751                    inner_offset = next_offset;
9752                } else {
9753                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9754                    inner_depth.increment()?;
9755                }
9756                let val_ref = self.data_direction.get_or_insert_with(|| {
9757                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::DataDirection, D)
9758                });
9759                fidl::decode!(
9760                    fidl_fuchsia_bluetooth_common::DataDirection,
9761                    D,
9762                    val_ref,
9763                    decoder,
9764                    inner_offset,
9765                    inner_depth
9766                )?;
9767                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9768                {
9769                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9770                }
9771                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9772                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9773                }
9774            }
9775
9776            next_offset += envelope_size;
9777            _next_ordinal_to_read += 1;
9778            if next_offset >= end_offset {
9779                return Ok(());
9780            }
9781
9782            // Decode unknown envelopes for gaps in ordinals.
9783            while _next_ordinal_to_read < 3 {
9784                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9785                _next_ordinal_to_read += 1;
9786                next_offset += envelope_size;
9787            }
9788
9789            let next_out_of_line = decoder.next_out_of_line();
9790            let handles_before = decoder.remaining_handles();
9791            if let Some((inlined, num_bytes, num_handles)) =
9792                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9793            {
9794                let member_inline_size = <fidl_fuchsia_bluetooth_common::CodecAttributes as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9795                if inlined != (member_inline_size <= 4) {
9796                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9797                }
9798                let inner_offset;
9799                let mut inner_depth = depth.clone();
9800                if inlined {
9801                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9802                    inner_offset = next_offset;
9803                } else {
9804                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9805                    inner_depth.increment()?;
9806                }
9807                let val_ref = self.codec_attributes.get_or_insert_with(|| {
9808                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::CodecAttributes, D)
9809                });
9810                fidl::decode!(
9811                    fidl_fuchsia_bluetooth_common::CodecAttributes,
9812                    D,
9813                    val_ref,
9814                    decoder,
9815                    inner_offset,
9816                    inner_depth
9817                )?;
9818                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9819                {
9820                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9821                }
9822                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9823                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9824                }
9825            }
9826
9827            next_offset += envelope_size;
9828
9829            // Decode the remaining unknown envelopes.
9830            while next_offset < end_offset {
9831                _next_ordinal_to_read += 1;
9832                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9833                next_offset += envelope_size;
9834            }
9835
9836            Ok(())
9837        }
9838    }
9839
9840    impl CodecDelayGetCodecLocalDelayRangeResponse {
9841        #[inline(always)]
9842        fn max_ordinal_present(&self) -> u64 {
9843            if let Some(_) = self.max_controller_delay {
9844                return 2;
9845            }
9846            if let Some(_) = self.min_controller_delay {
9847                return 1;
9848            }
9849            0
9850        }
9851    }
9852
9853    impl fidl::encoding::ValueTypeMarker for CodecDelayGetCodecLocalDelayRangeResponse {
9854        type Borrowed<'a> = &'a Self;
9855        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9856            value
9857        }
9858    }
9859
9860    unsafe impl fidl::encoding::TypeMarker for CodecDelayGetCodecLocalDelayRangeResponse {
9861        type Owned = Self;
9862
9863        #[inline(always)]
9864        fn inline_align(_context: fidl::encoding::Context) -> usize {
9865            8
9866        }
9867
9868        #[inline(always)]
9869        fn inline_size(_context: fidl::encoding::Context) -> usize {
9870            16
9871        }
9872    }
9873
9874    unsafe impl<D: fidl::encoding::ResourceDialect>
9875        fidl::encoding::Encode<CodecDelayGetCodecLocalDelayRangeResponse, D>
9876        for &CodecDelayGetCodecLocalDelayRangeResponse
9877    {
9878        unsafe fn encode(
9879            self,
9880            encoder: &mut fidl::encoding::Encoder<'_, D>,
9881            offset: usize,
9882            mut depth: fidl::encoding::Depth,
9883        ) -> fidl::Result<()> {
9884            encoder.debug_check_bounds::<CodecDelayGetCodecLocalDelayRangeResponse>(offset);
9885            // Vector header
9886            let max_ordinal: u64 = self.max_ordinal_present();
9887            encoder.write_num(max_ordinal, offset);
9888            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9889            // Calling encoder.out_of_line_offset(0) is not allowed.
9890            if max_ordinal == 0 {
9891                return Ok(());
9892            }
9893            depth.increment()?;
9894            let envelope_size = 8;
9895            let bytes_len = max_ordinal as usize * envelope_size;
9896            #[allow(unused_variables)]
9897            let offset = encoder.out_of_line_offset(bytes_len);
9898            let mut _prev_end_offset: usize = 0;
9899            if 1 > max_ordinal {
9900                return Ok(());
9901            }
9902
9903            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9904            // are envelope_size bytes.
9905            let cur_offset: usize = (1 - 1) * envelope_size;
9906
9907            // Zero reserved fields.
9908            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9909
9910            // Safety:
9911            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9912            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9913            //   envelope_size bytes, there is always sufficient room.
9914            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9915                self.min_controller_delay
9916                    .as_ref()
9917                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9918                encoder,
9919                offset + cur_offset,
9920                depth,
9921            )?;
9922
9923            _prev_end_offset = cur_offset + envelope_size;
9924            if 2 > max_ordinal {
9925                return Ok(());
9926            }
9927
9928            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9929            // are envelope_size bytes.
9930            let cur_offset: usize = (2 - 1) * envelope_size;
9931
9932            // Zero reserved fields.
9933            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9934
9935            // Safety:
9936            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9937            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9938            //   envelope_size bytes, there is always sufficient room.
9939            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9940                self.max_controller_delay
9941                    .as_ref()
9942                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9943                encoder,
9944                offset + cur_offset,
9945                depth,
9946            )?;
9947
9948            _prev_end_offset = cur_offset + envelope_size;
9949
9950            Ok(())
9951        }
9952    }
9953
9954    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9955        for CodecDelayGetCodecLocalDelayRangeResponse
9956    {
9957        #[inline(always)]
9958        fn new_empty() -> Self {
9959            Self::default()
9960        }
9961
9962        unsafe fn decode(
9963            &mut self,
9964            decoder: &mut fidl::encoding::Decoder<'_, D>,
9965            offset: usize,
9966            mut depth: fidl::encoding::Depth,
9967        ) -> fidl::Result<()> {
9968            decoder.debug_check_bounds::<Self>(offset);
9969            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9970                None => return Err(fidl::Error::NotNullable),
9971                Some(len) => len,
9972            };
9973            // Calling decoder.out_of_line_offset(0) is not allowed.
9974            if len == 0 {
9975                return Ok(());
9976            };
9977            depth.increment()?;
9978            let envelope_size = 8;
9979            let bytes_len = len * envelope_size;
9980            let offset = decoder.out_of_line_offset(bytes_len)?;
9981            // Decode the envelope for each type.
9982            let mut _next_ordinal_to_read = 0;
9983            let mut next_offset = offset;
9984            let end_offset = offset + bytes_len;
9985            _next_ordinal_to_read += 1;
9986            if next_offset >= end_offset {
9987                return Ok(());
9988            }
9989
9990            // Decode unknown envelopes for gaps in ordinals.
9991            while _next_ordinal_to_read < 1 {
9992                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9993                _next_ordinal_to_read += 1;
9994                next_offset += envelope_size;
9995            }
9996
9997            let next_out_of_line = decoder.next_out_of_line();
9998            let handles_before = decoder.remaining_handles();
9999            if let Some((inlined, num_bytes, num_handles)) =
10000                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10001            {
10002                let member_inline_size =
10003                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10004                if inlined != (member_inline_size <= 4) {
10005                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10006                }
10007                let inner_offset;
10008                let mut inner_depth = depth.clone();
10009                if inlined {
10010                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10011                    inner_offset = next_offset;
10012                } else {
10013                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10014                    inner_depth.increment()?;
10015                }
10016                let val_ref =
10017                    self.min_controller_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
10018                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
10019                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10020                {
10021                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10022                }
10023                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10024                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10025                }
10026            }
10027
10028            next_offset += envelope_size;
10029            _next_ordinal_to_read += 1;
10030            if next_offset >= end_offset {
10031                return Ok(());
10032            }
10033
10034            // Decode unknown envelopes for gaps in ordinals.
10035            while _next_ordinal_to_read < 2 {
10036                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10037                _next_ordinal_to_read += 1;
10038                next_offset += envelope_size;
10039            }
10040
10041            let next_out_of_line = decoder.next_out_of_line();
10042            let handles_before = decoder.remaining_handles();
10043            if let Some((inlined, num_bytes, num_handles)) =
10044                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10045            {
10046                let member_inline_size =
10047                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10048                if inlined != (member_inline_size <= 4) {
10049                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10050                }
10051                let inner_offset;
10052                let mut inner_depth = depth.clone();
10053                if inlined {
10054                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10055                    inner_offset = next_offset;
10056                } else {
10057                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10058                    inner_depth.increment()?;
10059                }
10060                let val_ref =
10061                    self.max_controller_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
10062                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
10063                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10064                {
10065                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10066                }
10067                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10068                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10069                }
10070            }
10071
10072            next_offset += envelope_size;
10073
10074            // Decode the remaining unknown envelopes.
10075            while next_offset < end_offset {
10076                _next_ordinal_to_read += 1;
10077                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10078                next_offset += envelope_size;
10079            }
10080
10081            Ok(())
10082        }
10083    }
10084
10085    impl ConnectedIsochronousGroupEstablishStreamsRequest {
10086        #[inline(always)]
10087        fn max_ordinal_present(&self) -> u64 {
10088            if let Some(_) = self.cis_params {
10089                return 1;
10090            }
10091            0
10092        }
10093    }
10094
10095    impl fidl::encoding::ValueTypeMarker for ConnectedIsochronousGroupEstablishStreamsRequest {
10096        type Borrowed<'a> = &'a Self;
10097        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10098            value
10099        }
10100    }
10101
10102    unsafe impl fidl::encoding::TypeMarker for ConnectedIsochronousGroupEstablishStreamsRequest {
10103        type Owned = Self;
10104
10105        #[inline(always)]
10106        fn inline_align(_context: fidl::encoding::Context) -> usize {
10107            8
10108        }
10109
10110        #[inline(always)]
10111        fn inline_size(_context: fidl::encoding::Context) -> usize {
10112            16
10113        }
10114    }
10115
10116    unsafe impl<D: fidl::encoding::ResourceDialect>
10117        fidl::encoding::Encode<ConnectedIsochronousGroupEstablishStreamsRequest, D>
10118        for &ConnectedIsochronousGroupEstablishStreamsRequest
10119    {
10120        unsafe fn encode(
10121            self,
10122            encoder: &mut fidl::encoding::Encoder<'_, D>,
10123            offset: usize,
10124            mut depth: fidl::encoding::Depth,
10125        ) -> fidl::Result<()> {
10126            encoder.debug_check_bounds::<ConnectedIsochronousGroupEstablishStreamsRequest>(offset);
10127            // Vector header
10128            let max_ordinal: u64 = self.max_ordinal_present();
10129            encoder.write_num(max_ordinal, offset);
10130            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10131            // Calling encoder.out_of_line_offset(0) is not allowed.
10132            if max_ordinal == 0 {
10133                return Ok(());
10134            }
10135            depth.increment()?;
10136            let envelope_size = 8;
10137            let bytes_len = max_ordinal as usize * envelope_size;
10138            #[allow(unused_variables)]
10139            let offset = encoder.out_of_line_offset(bytes_len);
10140            let mut _prev_end_offset: usize = 0;
10141            if 1 > max_ordinal {
10142                return Ok(());
10143            }
10144
10145            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10146            // are envelope_size bytes.
10147            let cur_offset: usize = (1 - 1) * envelope_size;
10148
10149            // Zero reserved fields.
10150            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10151
10152            // Safety:
10153            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10154            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10155            //   envelope_size bytes, there is always sufficient room.
10156            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<CisParameters, 31>, D>(
10157            self.cis_params.as_ref().map(<fidl::encoding::Vector<CisParameters, 31> as fidl::encoding::ValueTypeMarker>::borrow),
10158            encoder, offset + cur_offset, depth
10159        )?;
10160
10161            _prev_end_offset = cur_offset + envelope_size;
10162
10163            Ok(())
10164        }
10165    }
10166
10167    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10168        for ConnectedIsochronousGroupEstablishStreamsRequest
10169    {
10170        #[inline(always)]
10171        fn new_empty() -> Self {
10172            Self::default()
10173        }
10174
10175        unsafe fn decode(
10176            &mut self,
10177            decoder: &mut fidl::encoding::Decoder<'_, D>,
10178            offset: usize,
10179            mut depth: fidl::encoding::Depth,
10180        ) -> fidl::Result<()> {
10181            decoder.debug_check_bounds::<Self>(offset);
10182            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10183                None => return Err(fidl::Error::NotNullable),
10184                Some(len) => len,
10185            };
10186            // Calling decoder.out_of_line_offset(0) is not allowed.
10187            if len == 0 {
10188                return Ok(());
10189            };
10190            depth.increment()?;
10191            let envelope_size = 8;
10192            let bytes_len = len * envelope_size;
10193            let offset = decoder.out_of_line_offset(bytes_len)?;
10194            // Decode the envelope for each type.
10195            let mut _next_ordinal_to_read = 0;
10196            let mut next_offset = offset;
10197            let end_offset = offset + bytes_len;
10198            _next_ordinal_to_read += 1;
10199            if next_offset >= end_offset {
10200                return Ok(());
10201            }
10202
10203            // Decode unknown envelopes for gaps in ordinals.
10204            while _next_ordinal_to_read < 1 {
10205                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10206                _next_ordinal_to_read += 1;
10207                next_offset += envelope_size;
10208            }
10209
10210            let next_out_of_line = decoder.next_out_of_line();
10211            let handles_before = decoder.remaining_handles();
10212            if let Some((inlined, num_bytes, num_handles)) =
10213                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10214            {
10215                let member_inline_size = <fidl::encoding::Vector<CisParameters, 31> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10216                if inlined != (member_inline_size <= 4) {
10217                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10218                }
10219                let inner_offset;
10220                let mut inner_depth = depth.clone();
10221                if inlined {
10222                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10223                    inner_offset = next_offset;
10224                } else {
10225                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10226                    inner_depth.increment()?;
10227                }
10228                let val_ref = self.cis_params.get_or_insert_with(
10229                    || fidl::new_empty!(fidl::encoding::Vector<CisParameters, 31>, D),
10230                );
10231                fidl::decode!(fidl::encoding::Vector<CisParameters, 31>, D, val_ref, decoder, inner_offset, inner_depth)?;
10232                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10233                {
10234                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10235                }
10236                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10237                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10238                }
10239            }
10240
10241            next_offset += envelope_size;
10242
10243            // Decode the remaining unknown envelopes.
10244            while next_offset < end_offset {
10245                _next_ordinal_to_read += 1;
10246                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10247                next_offset += envelope_size;
10248            }
10249
10250            Ok(())
10251        }
10252    }
10253
10254    impl ConnectionOptions {
10255        #[inline(always)]
10256        fn max_ordinal_present(&self) -> u64 {
10257            if let Some(_) = self.service_filter {
10258                return 2;
10259            }
10260            if let Some(_) = self.bondable_mode {
10261                return 1;
10262            }
10263            0
10264        }
10265    }
10266
10267    impl fidl::encoding::ValueTypeMarker for ConnectionOptions {
10268        type Borrowed<'a> = &'a Self;
10269        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10270            value
10271        }
10272    }
10273
10274    unsafe impl fidl::encoding::TypeMarker for ConnectionOptions {
10275        type Owned = Self;
10276
10277        #[inline(always)]
10278        fn inline_align(_context: fidl::encoding::Context) -> usize {
10279            8
10280        }
10281
10282        #[inline(always)]
10283        fn inline_size(_context: fidl::encoding::Context) -> usize {
10284            16
10285        }
10286    }
10287
10288    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectionOptions, D>
10289        for &ConnectionOptions
10290    {
10291        unsafe fn encode(
10292            self,
10293            encoder: &mut fidl::encoding::Encoder<'_, D>,
10294            offset: usize,
10295            mut depth: fidl::encoding::Depth,
10296        ) -> fidl::Result<()> {
10297            encoder.debug_check_bounds::<ConnectionOptions>(offset);
10298            // Vector header
10299            let max_ordinal: u64 = self.max_ordinal_present();
10300            encoder.write_num(max_ordinal, offset);
10301            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10302            // Calling encoder.out_of_line_offset(0) is not allowed.
10303            if max_ordinal == 0 {
10304                return Ok(());
10305            }
10306            depth.increment()?;
10307            let envelope_size = 8;
10308            let bytes_len = max_ordinal as usize * envelope_size;
10309            #[allow(unused_variables)]
10310            let offset = encoder.out_of_line_offset(bytes_len);
10311            let mut _prev_end_offset: usize = 0;
10312            if 1 > max_ordinal {
10313                return Ok(());
10314            }
10315
10316            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10317            // are envelope_size bytes.
10318            let cur_offset: usize = (1 - 1) * envelope_size;
10319
10320            // Zero reserved fields.
10321            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10322
10323            // Safety:
10324            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10325            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10326            //   envelope_size bytes, there is always sufficient room.
10327            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10328                self.bondable_mode.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10329                encoder,
10330                offset + cur_offset,
10331                depth,
10332            )?;
10333
10334            _prev_end_offset = cur_offset + envelope_size;
10335            if 2 > max_ordinal {
10336                return Ok(());
10337            }
10338
10339            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10340            // are envelope_size bytes.
10341            let cur_offset: usize = (2 - 1) * envelope_size;
10342
10343            // Zero reserved fields.
10344            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10345
10346            // Safety:
10347            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10348            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10349            //   envelope_size bytes, there is always sufficient room.
10350            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::Uuid, D>(
10351            self.service_filter.as_ref().map(<fidl_fuchsia_bluetooth_common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
10352            encoder, offset + cur_offset, depth
10353        )?;
10354
10355            _prev_end_offset = cur_offset + envelope_size;
10356
10357            Ok(())
10358        }
10359    }
10360
10361    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectionOptions {
10362        #[inline(always)]
10363        fn new_empty() -> Self {
10364            Self::default()
10365        }
10366
10367        unsafe fn decode(
10368            &mut self,
10369            decoder: &mut fidl::encoding::Decoder<'_, D>,
10370            offset: usize,
10371            mut depth: fidl::encoding::Depth,
10372        ) -> fidl::Result<()> {
10373            decoder.debug_check_bounds::<Self>(offset);
10374            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10375                None => return Err(fidl::Error::NotNullable),
10376                Some(len) => len,
10377            };
10378            // Calling decoder.out_of_line_offset(0) is not allowed.
10379            if len == 0 {
10380                return Ok(());
10381            };
10382            depth.increment()?;
10383            let envelope_size = 8;
10384            let bytes_len = len * envelope_size;
10385            let offset = decoder.out_of_line_offset(bytes_len)?;
10386            // Decode the envelope for each type.
10387            let mut _next_ordinal_to_read = 0;
10388            let mut next_offset = offset;
10389            let end_offset = offset + bytes_len;
10390            _next_ordinal_to_read += 1;
10391            if next_offset >= end_offset {
10392                return Ok(());
10393            }
10394
10395            // Decode unknown envelopes for gaps in ordinals.
10396            while _next_ordinal_to_read < 1 {
10397                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10398                _next_ordinal_to_read += 1;
10399                next_offset += envelope_size;
10400            }
10401
10402            let next_out_of_line = decoder.next_out_of_line();
10403            let handles_before = decoder.remaining_handles();
10404            if let Some((inlined, num_bytes, num_handles)) =
10405                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10406            {
10407                let member_inline_size =
10408                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10409                if inlined != (member_inline_size <= 4) {
10410                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10411                }
10412                let inner_offset;
10413                let mut inner_depth = depth.clone();
10414                if inlined {
10415                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10416                    inner_offset = next_offset;
10417                } else {
10418                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10419                    inner_depth.increment()?;
10420                }
10421                let val_ref = self.bondable_mode.get_or_insert_with(|| fidl::new_empty!(bool, D));
10422                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10423                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10424                {
10425                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10426                }
10427                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10428                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10429                }
10430            }
10431
10432            next_offset += envelope_size;
10433            _next_ordinal_to_read += 1;
10434            if next_offset >= end_offset {
10435                return Ok(());
10436            }
10437
10438            // Decode unknown envelopes for gaps in ordinals.
10439            while _next_ordinal_to_read < 2 {
10440                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10441                _next_ordinal_to_read += 1;
10442                next_offset += envelope_size;
10443            }
10444
10445            let next_out_of_line = decoder.next_out_of_line();
10446            let handles_before = decoder.remaining_handles();
10447            if let Some((inlined, num_bytes, num_handles)) =
10448                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10449            {
10450                let member_inline_size = <fidl_fuchsia_bluetooth_common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10451                if inlined != (member_inline_size <= 4) {
10452                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10453                }
10454                let inner_offset;
10455                let mut inner_depth = depth.clone();
10456                if inlined {
10457                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10458                    inner_offset = next_offset;
10459                } else {
10460                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10461                    inner_depth.increment()?;
10462                }
10463                let val_ref = self.service_filter.get_or_insert_with(|| {
10464                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::Uuid, D)
10465                });
10466                fidl::decode!(
10467                    fidl_fuchsia_bluetooth_common::Uuid,
10468                    D,
10469                    val_ref,
10470                    decoder,
10471                    inner_offset,
10472                    inner_depth
10473                )?;
10474                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10475                {
10476                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10477                }
10478                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10479                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10480                }
10481            }
10482
10483            next_offset += envelope_size;
10484
10485            // Decode the remaining unknown envelopes.
10486            while next_offset < end_offset {
10487                _next_ordinal_to_read += 1;
10488                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10489                next_offset += envelope_size;
10490            }
10491
10492            Ok(())
10493        }
10494    }
10495
10496    impl ConnectionTransferPeriodicAdvertisingSyncRequest {
10497        #[inline(always)]
10498        fn max_ordinal_present(&self) -> u64 {
10499            if let Some(_) = self.service_data {
10500                return 2;
10501            }
10502            if let Some(_) = self.sync_id {
10503                return 1;
10504            }
10505            0
10506        }
10507    }
10508
10509    impl fidl::encoding::ValueTypeMarker for ConnectionTransferPeriodicAdvertisingSyncRequest {
10510        type Borrowed<'a> = &'a Self;
10511        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10512            value
10513        }
10514    }
10515
10516    unsafe impl fidl::encoding::TypeMarker for ConnectionTransferPeriodicAdvertisingSyncRequest {
10517        type Owned = Self;
10518
10519        #[inline(always)]
10520        fn inline_align(_context: fidl::encoding::Context) -> usize {
10521            8
10522        }
10523
10524        #[inline(always)]
10525        fn inline_size(_context: fidl::encoding::Context) -> usize {
10526            16
10527        }
10528    }
10529
10530    unsafe impl<D: fidl::encoding::ResourceDialect>
10531        fidl::encoding::Encode<ConnectionTransferPeriodicAdvertisingSyncRequest, D>
10532        for &ConnectionTransferPeriodicAdvertisingSyncRequest
10533    {
10534        unsafe fn encode(
10535            self,
10536            encoder: &mut fidl::encoding::Encoder<'_, D>,
10537            offset: usize,
10538            mut depth: fidl::encoding::Depth,
10539        ) -> fidl::Result<()> {
10540            encoder.debug_check_bounds::<ConnectionTransferPeriodicAdvertisingSyncRequest>(offset);
10541            // Vector header
10542            let max_ordinal: u64 = self.max_ordinal_present();
10543            encoder.write_num(max_ordinal, offset);
10544            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10545            // Calling encoder.out_of_line_offset(0) is not allowed.
10546            if max_ordinal == 0 {
10547                return Ok(());
10548            }
10549            depth.increment()?;
10550            let envelope_size = 8;
10551            let bytes_len = max_ordinal as usize * envelope_size;
10552            #[allow(unused_variables)]
10553            let offset = encoder.out_of_line_offset(bytes_len);
10554            let mut _prev_end_offset: usize = 0;
10555            if 1 > max_ordinal {
10556                return Ok(());
10557            }
10558
10559            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10560            // are envelope_size bytes.
10561            let cur_offset: usize = (1 - 1) * envelope_size;
10562
10563            // Zero reserved fields.
10564            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10565
10566            // Safety:
10567            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10568            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10569            //   envelope_size bytes, there is always sufficient room.
10570            fidl::encoding::encode_in_envelope_optional::<PeriodicAdvertisingSyncId, D>(
10571                self.sync_id
10572                    .as_ref()
10573                    .map(<PeriodicAdvertisingSyncId as fidl::encoding::ValueTypeMarker>::borrow),
10574                encoder,
10575                offset + cur_offset,
10576                depth,
10577            )?;
10578
10579            _prev_end_offset = cur_offset + envelope_size;
10580            if 2 > max_ordinal {
10581                return Ok(());
10582            }
10583
10584            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10585            // are envelope_size bytes.
10586            let cur_offset: usize = (2 - 1) * envelope_size;
10587
10588            // Zero reserved fields.
10589            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10590
10591            // Safety:
10592            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10593            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10594            //   envelope_size bytes, there is always sufficient room.
10595            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10596                self.service_data.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10597                encoder,
10598                offset + cur_offset,
10599                depth,
10600            )?;
10601
10602            _prev_end_offset = cur_offset + envelope_size;
10603
10604            Ok(())
10605        }
10606    }
10607
10608    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10609        for ConnectionTransferPeriodicAdvertisingSyncRequest
10610    {
10611        #[inline(always)]
10612        fn new_empty() -> Self {
10613            Self::default()
10614        }
10615
10616        unsafe fn decode(
10617            &mut self,
10618            decoder: &mut fidl::encoding::Decoder<'_, D>,
10619            offset: usize,
10620            mut depth: fidl::encoding::Depth,
10621        ) -> fidl::Result<()> {
10622            decoder.debug_check_bounds::<Self>(offset);
10623            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10624                None => return Err(fidl::Error::NotNullable),
10625                Some(len) => len,
10626            };
10627            // Calling decoder.out_of_line_offset(0) is not allowed.
10628            if len == 0 {
10629                return Ok(());
10630            };
10631            depth.increment()?;
10632            let envelope_size = 8;
10633            let bytes_len = len * envelope_size;
10634            let offset = decoder.out_of_line_offset(bytes_len)?;
10635            // Decode the envelope for each type.
10636            let mut _next_ordinal_to_read = 0;
10637            let mut next_offset = offset;
10638            let end_offset = offset + bytes_len;
10639            _next_ordinal_to_read += 1;
10640            if next_offset >= end_offset {
10641                return Ok(());
10642            }
10643
10644            // Decode unknown envelopes for gaps in ordinals.
10645            while _next_ordinal_to_read < 1 {
10646                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10647                _next_ordinal_to_read += 1;
10648                next_offset += envelope_size;
10649            }
10650
10651            let next_out_of_line = decoder.next_out_of_line();
10652            let handles_before = decoder.remaining_handles();
10653            if let Some((inlined, num_bytes, num_handles)) =
10654                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10655            {
10656                let member_inline_size =
10657                    <PeriodicAdvertisingSyncId as fidl::encoding::TypeMarker>::inline_size(
10658                        decoder.context,
10659                    );
10660                if inlined != (member_inline_size <= 4) {
10661                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10662                }
10663                let inner_offset;
10664                let mut inner_depth = depth.clone();
10665                if inlined {
10666                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10667                    inner_offset = next_offset;
10668                } else {
10669                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10670                    inner_depth.increment()?;
10671                }
10672                let val_ref = self
10673                    .sync_id
10674                    .get_or_insert_with(|| fidl::new_empty!(PeriodicAdvertisingSyncId, D));
10675                fidl::decode!(
10676                    PeriodicAdvertisingSyncId,
10677                    D,
10678                    val_ref,
10679                    decoder,
10680                    inner_offset,
10681                    inner_depth
10682                )?;
10683                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10684                {
10685                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10686                }
10687                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10688                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10689                }
10690            }
10691
10692            next_offset += envelope_size;
10693            _next_ordinal_to_read += 1;
10694            if next_offset >= end_offset {
10695                return Ok(());
10696            }
10697
10698            // Decode unknown envelopes for gaps in ordinals.
10699            while _next_ordinal_to_read < 2 {
10700                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10701                _next_ordinal_to_read += 1;
10702                next_offset += envelope_size;
10703            }
10704
10705            let next_out_of_line = decoder.next_out_of_line();
10706            let handles_before = decoder.remaining_handles();
10707            if let Some((inlined, num_bytes, num_handles)) =
10708                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10709            {
10710                let member_inline_size =
10711                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10712                if inlined != (member_inline_size <= 4) {
10713                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10714                }
10715                let inner_offset;
10716                let mut inner_depth = depth.clone();
10717                if inlined {
10718                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10719                    inner_offset = next_offset;
10720                } else {
10721                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10722                    inner_depth.increment()?;
10723                }
10724                let val_ref = self.service_data.get_or_insert_with(|| fidl::new_empty!(u16, D));
10725                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10726                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10727                {
10728                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10729                }
10730                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10731                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10732                }
10733            }
10734
10735            next_offset += envelope_size;
10736
10737            // Decode the remaining unknown envelopes.
10738            while next_offset < end_offset {
10739                _next_ordinal_to_read += 1;
10740                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10741                next_offset += envelope_size;
10742            }
10743
10744            Ok(())
10745        }
10746    }
10747
10748    impl Extended {
10749        #[inline(always)]
10750        fn max_ordinal_present(&self) -> u64 {
10751            0
10752        }
10753    }
10754
10755    impl fidl::encoding::ValueTypeMarker for Extended {
10756        type Borrowed<'a> = &'a Self;
10757        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10758            value
10759        }
10760    }
10761
10762    unsafe impl fidl::encoding::TypeMarker for Extended {
10763        type Owned = Self;
10764
10765        #[inline(always)]
10766        fn inline_align(_context: fidl::encoding::Context) -> usize {
10767            8
10768        }
10769
10770        #[inline(always)]
10771        fn inline_size(_context: fidl::encoding::Context) -> usize {
10772            16
10773        }
10774    }
10775
10776    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Extended, D> for &Extended {
10777        unsafe fn encode(
10778            self,
10779            encoder: &mut fidl::encoding::Encoder<'_, D>,
10780            offset: usize,
10781            mut depth: fidl::encoding::Depth,
10782        ) -> fidl::Result<()> {
10783            encoder.debug_check_bounds::<Extended>(offset);
10784            // Vector header
10785            let max_ordinal: u64 = self.max_ordinal_present();
10786            encoder.write_num(max_ordinal, offset);
10787            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10788            // Calling encoder.out_of_line_offset(0) is not allowed.
10789            if max_ordinal == 0 {
10790                return Ok(());
10791            }
10792            depth.increment()?;
10793            let envelope_size = 8;
10794            let bytes_len = max_ordinal as usize * envelope_size;
10795            #[allow(unused_variables)]
10796            let offset = encoder.out_of_line_offset(bytes_len);
10797            let mut _prev_end_offset: usize = 0;
10798
10799            Ok(())
10800        }
10801    }
10802
10803    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Extended {
10804        #[inline(always)]
10805        fn new_empty() -> Self {
10806            Self::default()
10807        }
10808
10809        unsafe fn decode(
10810            &mut self,
10811            decoder: &mut fidl::encoding::Decoder<'_, D>,
10812            offset: usize,
10813            mut depth: fidl::encoding::Depth,
10814        ) -> fidl::Result<()> {
10815            decoder.debug_check_bounds::<Self>(offset);
10816            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10817                None => return Err(fidl::Error::NotNullable),
10818                Some(len) => len,
10819            };
10820            // Calling decoder.out_of_line_offset(0) is not allowed.
10821            if len == 0 {
10822                return Ok(());
10823            };
10824            depth.increment()?;
10825            let envelope_size = 8;
10826            let bytes_len = len * envelope_size;
10827            let offset = decoder.out_of_line_offset(bytes_len)?;
10828            // Decode the envelope for each type.
10829            let mut _next_ordinal_to_read = 0;
10830            let mut next_offset = offset;
10831            let end_offset = offset + bytes_len;
10832
10833            // Decode the remaining unknown envelopes.
10834            while next_offset < end_offset {
10835                _next_ordinal_to_read += 1;
10836                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10837                next_offset += envelope_size;
10838            }
10839
10840            Ok(())
10841        }
10842    }
10843
10844    impl Filter {
10845        #[inline(always)]
10846        fn max_ordinal_present(&self) -> u64 {
10847            if let Some(_) = self.solicitation_uuid {
10848                return 7;
10849            }
10850            if let Some(_) = self.max_path_loss {
10851                return 6;
10852            }
10853            if let Some(_) = self.name {
10854                return 5;
10855            }
10856            if let Some(_) = self.connectable {
10857                return 4;
10858            }
10859            if let Some(_) = self.manufacturer_id {
10860                return 3;
10861            }
10862            if let Some(_) = self.service_data_uuid {
10863                return 2;
10864            }
10865            if let Some(_) = self.service_uuid {
10866                return 1;
10867            }
10868            0
10869        }
10870    }
10871
10872    impl fidl::encoding::ValueTypeMarker for Filter {
10873        type Borrowed<'a> = &'a Self;
10874        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10875            value
10876        }
10877    }
10878
10879    unsafe impl fidl::encoding::TypeMarker for Filter {
10880        type Owned = Self;
10881
10882        #[inline(always)]
10883        fn inline_align(_context: fidl::encoding::Context) -> usize {
10884            8
10885        }
10886
10887        #[inline(always)]
10888        fn inline_size(_context: fidl::encoding::Context) -> usize {
10889            16
10890        }
10891    }
10892
10893    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Filter, D> for &Filter {
10894        unsafe fn encode(
10895            self,
10896            encoder: &mut fidl::encoding::Encoder<'_, D>,
10897            offset: usize,
10898            mut depth: fidl::encoding::Depth,
10899        ) -> fidl::Result<()> {
10900            encoder.debug_check_bounds::<Filter>(offset);
10901            // Vector header
10902            let max_ordinal: u64 = self.max_ordinal_present();
10903            encoder.write_num(max_ordinal, offset);
10904            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10905            // Calling encoder.out_of_line_offset(0) is not allowed.
10906            if max_ordinal == 0 {
10907                return Ok(());
10908            }
10909            depth.increment()?;
10910            let envelope_size = 8;
10911            let bytes_len = max_ordinal as usize * envelope_size;
10912            #[allow(unused_variables)]
10913            let offset = encoder.out_of_line_offset(bytes_len);
10914            let mut _prev_end_offset: usize = 0;
10915            if 1 > max_ordinal {
10916                return Ok(());
10917            }
10918
10919            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10920            // are envelope_size bytes.
10921            let cur_offset: usize = (1 - 1) * envelope_size;
10922
10923            // Zero reserved fields.
10924            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10925
10926            // Safety:
10927            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10928            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10929            //   envelope_size bytes, there is always sufficient room.
10930            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::Uuid, D>(
10931            self.service_uuid.as_ref().map(<fidl_fuchsia_bluetooth_common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
10932            encoder, offset + cur_offset, depth
10933        )?;
10934
10935            _prev_end_offset = cur_offset + envelope_size;
10936            if 2 > max_ordinal {
10937                return Ok(());
10938            }
10939
10940            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10941            // are envelope_size bytes.
10942            let cur_offset: usize = (2 - 1) * envelope_size;
10943
10944            // Zero reserved fields.
10945            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10946
10947            // Safety:
10948            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10949            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10950            //   envelope_size bytes, there is always sufficient room.
10951            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::Uuid, D>(
10952            self.service_data_uuid.as_ref().map(<fidl_fuchsia_bluetooth_common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
10953            encoder, offset + cur_offset, depth
10954        )?;
10955
10956            _prev_end_offset = cur_offset + envelope_size;
10957            if 3 > max_ordinal {
10958                return Ok(());
10959            }
10960
10961            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10962            // are envelope_size bytes.
10963            let cur_offset: usize = (3 - 1) * envelope_size;
10964
10965            // Zero reserved fields.
10966            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10967
10968            // Safety:
10969            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10970            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10971            //   envelope_size bytes, there is always sufficient room.
10972            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10973                self.manufacturer_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10974                encoder,
10975                offset + cur_offset,
10976                depth,
10977            )?;
10978
10979            _prev_end_offset = cur_offset + envelope_size;
10980            if 4 > max_ordinal {
10981                return Ok(());
10982            }
10983
10984            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10985            // are envelope_size bytes.
10986            let cur_offset: usize = (4 - 1) * envelope_size;
10987
10988            // Zero reserved fields.
10989            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10990
10991            // Safety:
10992            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10993            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10994            //   envelope_size bytes, there is always sufficient room.
10995            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10996                self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10997                encoder,
10998                offset + cur_offset,
10999                depth,
11000            )?;
11001
11002            _prev_end_offset = cur_offset + envelope_size;
11003            if 5 > max_ordinal {
11004                return Ok(());
11005            }
11006
11007            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11008            // are envelope_size bytes.
11009            let cur_offset: usize = (5 - 1) * envelope_size;
11010
11011            // Zero reserved fields.
11012            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11013
11014            // Safety:
11015            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11016            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11017            //   envelope_size bytes, there is always sufficient room.
11018            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
11019                self.name.as_ref().map(
11020                    <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
11021                ),
11022                encoder,
11023                offset + cur_offset,
11024                depth,
11025            )?;
11026
11027            _prev_end_offset = cur_offset + envelope_size;
11028            if 6 > max_ordinal {
11029                return Ok(());
11030            }
11031
11032            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11033            // are envelope_size bytes.
11034            let cur_offset: usize = (6 - 1) * envelope_size;
11035
11036            // Zero reserved fields.
11037            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11038
11039            // Safety:
11040            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11041            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11042            //   envelope_size bytes, there is always sufficient room.
11043            fidl::encoding::encode_in_envelope_optional::<i8, D>(
11044                self.max_path_loss.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
11045                encoder,
11046                offset + cur_offset,
11047                depth,
11048            )?;
11049
11050            _prev_end_offset = cur_offset + envelope_size;
11051            if 7 > max_ordinal {
11052                return Ok(());
11053            }
11054
11055            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11056            // are envelope_size bytes.
11057            let cur_offset: usize = (7 - 1) * envelope_size;
11058
11059            // Zero reserved fields.
11060            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11061
11062            // Safety:
11063            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11064            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11065            //   envelope_size bytes, there is always sufficient room.
11066            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::Uuid, D>(
11067            self.solicitation_uuid.as_ref().map(<fidl_fuchsia_bluetooth_common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
11068            encoder, offset + cur_offset, depth
11069        )?;
11070
11071            _prev_end_offset = cur_offset + envelope_size;
11072
11073            Ok(())
11074        }
11075    }
11076
11077    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Filter {
11078        #[inline(always)]
11079        fn new_empty() -> Self {
11080            Self::default()
11081        }
11082
11083        unsafe fn decode(
11084            &mut self,
11085            decoder: &mut fidl::encoding::Decoder<'_, D>,
11086            offset: usize,
11087            mut depth: fidl::encoding::Depth,
11088        ) -> fidl::Result<()> {
11089            decoder.debug_check_bounds::<Self>(offset);
11090            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11091                None => return Err(fidl::Error::NotNullable),
11092                Some(len) => len,
11093            };
11094            // Calling decoder.out_of_line_offset(0) is not allowed.
11095            if len == 0 {
11096                return Ok(());
11097            };
11098            depth.increment()?;
11099            let envelope_size = 8;
11100            let bytes_len = len * envelope_size;
11101            let offset = decoder.out_of_line_offset(bytes_len)?;
11102            // Decode the envelope for each type.
11103            let mut _next_ordinal_to_read = 0;
11104            let mut next_offset = offset;
11105            let end_offset = offset + bytes_len;
11106            _next_ordinal_to_read += 1;
11107            if next_offset >= end_offset {
11108                return Ok(());
11109            }
11110
11111            // Decode unknown envelopes for gaps in ordinals.
11112            while _next_ordinal_to_read < 1 {
11113                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11114                _next_ordinal_to_read += 1;
11115                next_offset += envelope_size;
11116            }
11117
11118            let next_out_of_line = decoder.next_out_of_line();
11119            let handles_before = decoder.remaining_handles();
11120            if let Some((inlined, num_bytes, num_handles)) =
11121                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11122            {
11123                let member_inline_size = <fidl_fuchsia_bluetooth_common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11124                if inlined != (member_inline_size <= 4) {
11125                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11126                }
11127                let inner_offset;
11128                let mut inner_depth = depth.clone();
11129                if inlined {
11130                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11131                    inner_offset = next_offset;
11132                } else {
11133                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11134                    inner_depth.increment()?;
11135                }
11136                let val_ref = self.service_uuid.get_or_insert_with(|| {
11137                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::Uuid, D)
11138                });
11139                fidl::decode!(
11140                    fidl_fuchsia_bluetooth_common::Uuid,
11141                    D,
11142                    val_ref,
11143                    decoder,
11144                    inner_offset,
11145                    inner_depth
11146                )?;
11147                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11148                {
11149                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11150                }
11151                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11152                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11153                }
11154            }
11155
11156            next_offset += envelope_size;
11157            _next_ordinal_to_read += 1;
11158            if next_offset >= end_offset {
11159                return Ok(());
11160            }
11161
11162            // Decode unknown envelopes for gaps in ordinals.
11163            while _next_ordinal_to_read < 2 {
11164                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11165                _next_ordinal_to_read += 1;
11166                next_offset += envelope_size;
11167            }
11168
11169            let next_out_of_line = decoder.next_out_of_line();
11170            let handles_before = decoder.remaining_handles();
11171            if let Some((inlined, num_bytes, num_handles)) =
11172                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11173            {
11174                let member_inline_size = <fidl_fuchsia_bluetooth_common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11175                if inlined != (member_inline_size <= 4) {
11176                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11177                }
11178                let inner_offset;
11179                let mut inner_depth = depth.clone();
11180                if inlined {
11181                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11182                    inner_offset = next_offset;
11183                } else {
11184                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11185                    inner_depth.increment()?;
11186                }
11187                let val_ref = self.service_data_uuid.get_or_insert_with(|| {
11188                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::Uuid, D)
11189                });
11190                fidl::decode!(
11191                    fidl_fuchsia_bluetooth_common::Uuid,
11192                    D,
11193                    val_ref,
11194                    decoder,
11195                    inner_offset,
11196                    inner_depth
11197                )?;
11198                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11199                {
11200                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11201                }
11202                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11203                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11204                }
11205            }
11206
11207            next_offset += envelope_size;
11208            _next_ordinal_to_read += 1;
11209            if next_offset >= end_offset {
11210                return Ok(());
11211            }
11212
11213            // Decode unknown envelopes for gaps in ordinals.
11214            while _next_ordinal_to_read < 3 {
11215                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11216                _next_ordinal_to_read += 1;
11217                next_offset += envelope_size;
11218            }
11219
11220            let next_out_of_line = decoder.next_out_of_line();
11221            let handles_before = decoder.remaining_handles();
11222            if let Some((inlined, num_bytes, num_handles)) =
11223                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11224            {
11225                let member_inline_size =
11226                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11227                if inlined != (member_inline_size <= 4) {
11228                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11229                }
11230                let inner_offset;
11231                let mut inner_depth = depth.clone();
11232                if inlined {
11233                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11234                    inner_offset = next_offset;
11235                } else {
11236                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11237                    inner_depth.increment()?;
11238                }
11239                let val_ref = self.manufacturer_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
11240                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
11241                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11242                {
11243                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11244                }
11245                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11246                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11247                }
11248            }
11249
11250            next_offset += envelope_size;
11251            _next_ordinal_to_read += 1;
11252            if next_offset >= end_offset {
11253                return Ok(());
11254            }
11255
11256            // Decode unknown envelopes for gaps in ordinals.
11257            while _next_ordinal_to_read < 4 {
11258                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11259                _next_ordinal_to_read += 1;
11260                next_offset += envelope_size;
11261            }
11262
11263            let next_out_of_line = decoder.next_out_of_line();
11264            let handles_before = decoder.remaining_handles();
11265            if let Some((inlined, num_bytes, num_handles)) =
11266                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11267            {
11268                let member_inline_size =
11269                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11270                if inlined != (member_inline_size <= 4) {
11271                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11272                }
11273                let inner_offset;
11274                let mut inner_depth = depth.clone();
11275                if inlined {
11276                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11277                    inner_offset = next_offset;
11278                } else {
11279                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11280                    inner_depth.increment()?;
11281                }
11282                let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
11283                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
11284                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11285                {
11286                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11287                }
11288                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11289                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11290                }
11291            }
11292
11293            next_offset += envelope_size;
11294            _next_ordinal_to_read += 1;
11295            if next_offset >= end_offset {
11296                return Ok(());
11297            }
11298
11299            // Decode unknown envelopes for gaps in ordinals.
11300            while _next_ordinal_to_read < 5 {
11301                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11302                _next_ordinal_to_read += 1;
11303                next_offset += envelope_size;
11304            }
11305
11306            let next_out_of_line = decoder.next_out_of_line();
11307            let handles_before = decoder.remaining_handles();
11308            if let Some((inlined, num_bytes, num_handles)) =
11309                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11310            {
11311                let member_inline_size =
11312                    <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
11313                        decoder.context,
11314                    );
11315                if inlined != (member_inline_size <= 4) {
11316                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11317                }
11318                let inner_offset;
11319                let mut inner_depth = depth.clone();
11320                if inlined {
11321                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11322                    inner_offset = next_offset;
11323                } else {
11324                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11325                    inner_depth.increment()?;
11326                }
11327                let val_ref = self
11328                    .name
11329                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
11330                fidl::decode!(
11331                    fidl::encoding::BoundedString<248>,
11332                    D,
11333                    val_ref,
11334                    decoder,
11335                    inner_offset,
11336                    inner_depth
11337                )?;
11338                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11339                {
11340                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11341                }
11342                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11343                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11344                }
11345            }
11346
11347            next_offset += envelope_size;
11348            _next_ordinal_to_read += 1;
11349            if next_offset >= end_offset {
11350                return Ok(());
11351            }
11352
11353            // Decode unknown envelopes for gaps in ordinals.
11354            while _next_ordinal_to_read < 6 {
11355                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11356                _next_ordinal_to_read += 1;
11357                next_offset += envelope_size;
11358            }
11359
11360            let next_out_of_line = decoder.next_out_of_line();
11361            let handles_before = decoder.remaining_handles();
11362            if let Some((inlined, num_bytes, num_handles)) =
11363                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11364            {
11365                let member_inline_size =
11366                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11367                if inlined != (member_inline_size <= 4) {
11368                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11369                }
11370                let inner_offset;
11371                let mut inner_depth = depth.clone();
11372                if inlined {
11373                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11374                    inner_offset = next_offset;
11375                } else {
11376                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11377                    inner_depth.increment()?;
11378                }
11379                let val_ref = self.max_path_loss.get_or_insert_with(|| fidl::new_empty!(i8, D));
11380                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
11381                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11382                {
11383                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11384                }
11385                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11386                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11387                }
11388            }
11389
11390            next_offset += envelope_size;
11391            _next_ordinal_to_read += 1;
11392            if next_offset >= end_offset {
11393                return Ok(());
11394            }
11395
11396            // Decode unknown envelopes for gaps in ordinals.
11397            while _next_ordinal_to_read < 7 {
11398                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11399                _next_ordinal_to_read += 1;
11400                next_offset += envelope_size;
11401            }
11402
11403            let next_out_of_line = decoder.next_out_of_line();
11404            let handles_before = decoder.remaining_handles();
11405            if let Some((inlined, num_bytes, num_handles)) =
11406                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11407            {
11408                let member_inline_size = <fidl_fuchsia_bluetooth_common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11409                if inlined != (member_inline_size <= 4) {
11410                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11411                }
11412                let inner_offset;
11413                let mut inner_depth = depth.clone();
11414                if inlined {
11415                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11416                    inner_offset = next_offset;
11417                } else {
11418                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11419                    inner_depth.increment()?;
11420                }
11421                let val_ref = self.solicitation_uuid.get_or_insert_with(|| {
11422                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::Uuid, D)
11423                });
11424                fidl::decode!(
11425                    fidl_fuchsia_bluetooth_common::Uuid,
11426                    D,
11427                    val_ref,
11428                    decoder,
11429                    inner_offset,
11430                    inner_depth
11431                )?;
11432                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11433                {
11434                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11435                }
11436                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11437                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11438                }
11439            }
11440
11441            next_offset += envelope_size;
11442
11443            // Decode the remaining unknown envelopes.
11444            while next_offset < end_offset {
11445                _next_ordinal_to_read += 1;
11446                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11447                next_offset += envelope_size;
11448            }
11449
11450            Ok(())
11451        }
11452    }
11453
11454    impl IsochronousStreamOnEstablishedRequest {
11455        #[inline(always)]
11456        fn max_ordinal_present(&self) -> u64 {
11457            if let Some(_) = self.established_params {
11458                return 2;
11459            }
11460            if let Some(_) = self.result {
11461                return 1;
11462            }
11463            0
11464        }
11465    }
11466
11467    impl fidl::encoding::ValueTypeMarker for IsochronousStreamOnEstablishedRequest {
11468        type Borrowed<'a> = &'a Self;
11469        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11470            value
11471        }
11472    }
11473
11474    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamOnEstablishedRequest {
11475        type Owned = Self;
11476
11477        #[inline(always)]
11478        fn inline_align(_context: fidl::encoding::Context) -> usize {
11479            8
11480        }
11481
11482        #[inline(always)]
11483        fn inline_size(_context: fidl::encoding::Context) -> usize {
11484            16
11485        }
11486    }
11487
11488    unsafe impl<D: fidl::encoding::ResourceDialect>
11489        fidl::encoding::Encode<IsochronousStreamOnEstablishedRequest, D>
11490        for &IsochronousStreamOnEstablishedRequest
11491    {
11492        unsafe fn encode(
11493            self,
11494            encoder: &mut fidl::encoding::Encoder<'_, D>,
11495            offset: usize,
11496            mut depth: fidl::encoding::Depth,
11497        ) -> fidl::Result<()> {
11498            encoder.debug_check_bounds::<IsochronousStreamOnEstablishedRequest>(offset);
11499            // Vector header
11500            let max_ordinal: u64 = self.max_ordinal_present();
11501            encoder.write_num(max_ordinal, offset);
11502            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11503            // Calling encoder.out_of_line_offset(0) is not allowed.
11504            if max_ordinal == 0 {
11505                return Ok(());
11506            }
11507            depth.increment()?;
11508            let envelope_size = 8;
11509            let bytes_len = max_ordinal as usize * envelope_size;
11510            #[allow(unused_variables)]
11511            let offset = encoder.out_of_line_offset(bytes_len);
11512            let mut _prev_end_offset: usize = 0;
11513            if 1 > max_ordinal {
11514                return Ok(());
11515            }
11516
11517            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11518            // are envelope_size bytes.
11519            let cur_offset: usize = (1 - 1) * envelope_size;
11520
11521            // Zero reserved fields.
11522            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11523
11524            // Safety:
11525            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11526            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11527            //   envelope_size bytes, there is always sufficient room.
11528            fidl::encoding::encode_in_envelope_optional::<i32, D>(
11529                self.result.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
11530                encoder,
11531                offset + cur_offset,
11532                depth,
11533            )?;
11534
11535            _prev_end_offset = cur_offset + envelope_size;
11536            if 2 > max_ordinal {
11537                return Ok(());
11538            }
11539
11540            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11541            // are envelope_size bytes.
11542            let cur_offset: usize = (2 - 1) * envelope_size;
11543
11544            // Zero reserved fields.
11545            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11546
11547            // Safety:
11548            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11549            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11550            //   envelope_size bytes, there is always sufficient room.
11551            fidl::encoding::encode_in_envelope_optional::<CisEstablishedParameters, D>(
11552                self.established_params
11553                    .as_ref()
11554                    .map(<CisEstablishedParameters as fidl::encoding::ValueTypeMarker>::borrow),
11555                encoder,
11556                offset + cur_offset,
11557                depth,
11558            )?;
11559
11560            _prev_end_offset = cur_offset + envelope_size;
11561
11562            Ok(())
11563        }
11564    }
11565
11566    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11567        for IsochronousStreamOnEstablishedRequest
11568    {
11569        #[inline(always)]
11570        fn new_empty() -> Self {
11571            Self::default()
11572        }
11573
11574        unsafe fn decode(
11575            &mut self,
11576            decoder: &mut fidl::encoding::Decoder<'_, D>,
11577            offset: usize,
11578            mut depth: fidl::encoding::Depth,
11579        ) -> fidl::Result<()> {
11580            decoder.debug_check_bounds::<Self>(offset);
11581            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11582                None => return Err(fidl::Error::NotNullable),
11583                Some(len) => len,
11584            };
11585            // Calling decoder.out_of_line_offset(0) is not allowed.
11586            if len == 0 {
11587                return Ok(());
11588            };
11589            depth.increment()?;
11590            let envelope_size = 8;
11591            let bytes_len = len * envelope_size;
11592            let offset = decoder.out_of_line_offset(bytes_len)?;
11593            // Decode the envelope for each type.
11594            let mut _next_ordinal_to_read = 0;
11595            let mut next_offset = offset;
11596            let end_offset = offset + bytes_len;
11597            _next_ordinal_to_read += 1;
11598            if next_offset >= end_offset {
11599                return Ok(());
11600            }
11601
11602            // Decode unknown envelopes for gaps in ordinals.
11603            while _next_ordinal_to_read < 1 {
11604                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11605                _next_ordinal_to_read += 1;
11606                next_offset += envelope_size;
11607            }
11608
11609            let next_out_of_line = decoder.next_out_of_line();
11610            let handles_before = decoder.remaining_handles();
11611            if let Some((inlined, num_bytes, num_handles)) =
11612                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11613            {
11614                let member_inline_size =
11615                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11616                if inlined != (member_inline_size <= 4) {
11617                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11618                }
11619                let inner_offset;
11620                let mut inner_depth = depth.clone();
11621                if inlined {
11622                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11623                    inner_offset = next_offset;
11624                } else {
11625                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11626                    inner_depth.increment()?;
11627                }
11628                let val_ref = self.result.get_or_insert_with(|| fidl::new_empty!(i32, D));
11629                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
11630                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11631                {
11632                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11633                }
11634                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11635                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11636                }
11637            }
11638
11639            next_offset += envelope_size;
11640            _next_ordinal_to_read += 1;
11641            if next_offset >= end_offset {
11642                return Ok(());
11643            }
11644
11645            // Decode unknown envelopes for gaps in ordinals.
11646            while _next_ordinal_to_read < 2 {
11647                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11648                _next_ordinal_to_read += 1;
11649                next_offset += envelope_size;
11650            }
11651
11652            let next_out_of_line = decoder.next_out_of_line();
11653            let handles_before = decoder.remaining_handles();
11654            if let Some((inlined, num_bytes, num_handles)) =
11655                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11656            {
11657                let member_inline_size =
11658                    <CisEstablishedParameters as fidl::encoding::TypeMarker>::inline_size(
11659                        decoder.context,
11660                    );
11661                if inlined != (member_inline_size <= 4) {
11662                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11663                }
11664                let inner_offset;
11665                let mut inner_depth = depth.clone();
11666                if inlined {
11667                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11668                    inner_offset = next_offset;
11669                } else {
11670                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11671                    inner_depth.increment()?;
11672                }
11673                let val_ref = self
11674                    .established_params
11675                    .get_or_insert_with(|| fidl::new_empty!(CisEstablishedParameters, D));
11676                fidl::decode!(
11677                    CisEstablishedParameters,
11678                    D,
11679                    val_ref,
11680                    decoder,
11681                    inner_offset,
11682                    inner_depth
11683                )?;
11684                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11685                {
11686                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11687                }
11688                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11689                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11690                }
11691            }
11692
11693            next_offset += envelope_size;
11694
11695            // Decode the remaining unknown envelopes.
11696            while next_offset < end_offset {
11697                _next_ordinal_to_read += 1;
11698                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11699                next_offset += envelope_size;
11700            }
11701
11702            Ok(())
11703        }
11704    }
11705
11706    impl IsochronousStreamSetupDataPathRequest {
11707        #[inline(always)]
11708        fn max_ordinal_present(&self) -> u64 {
11709            if let Some(_) = self.controller_delay {
11710                return 3;
11711            }
11712            if let Some(_) = self.codec_attributes {
11713                return 2;
11714            }
11715            if let Some(_) = self.data_direction {
11716                return 1;
11717            }
11718            0
11719        }
11720    }
11721
11722    impl fidl::encoding::ValueTypeMarker for IsochronousStreamSetupDataPathRequest {
11723        type Borrowed<'a> = &'a Self;
11724        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11725            value
11726        }
11727    }
11728
11729    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamSetupDataPathRequest {
11730        type Owned = Self;
11731
11732        #[inline(always)]
11733        fn inline_align(_context: fidl::encoding::Context) -> usize {
11734            8
11735        }
11736
11737        #[inline(always)]
11738        fn inline_size(_context: fidl::encoding::Context) -> usize {
11739            16
11740        }
11741    }
11742
11743    unsafe impl<D: fidl::encoding::ResourceDialect>
11744        fidl::encoding::Encode<IsochronousStreamSetupDataPathRequest, D>
11745        for &IsochronousStreamSetupDataPathRequest
11746    {
11747        unsafe fn encode(
11748            self,
11749            encoder: &mut fidl::encoding::Encoder<'_, D>,
11750            offset: usize,
11751            mut depth: fidl::encoding::Depth,
11752        ) -> fidl::Result<()> {
11753            encoder.debug_check_bounds::<IsochronousStreamSetupDataPathRequest>(offset);
11754            // Vector header
11755            let max_ordinal: u64 = self.max_ordinal_present();
11756            encoder.write_num(max_ordinal, offset);
11757            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11758            // Calling encoder.out_of_line_offset(0) is not allowed.
11759            if max_ordinal == 0 {
11760                return Ok(());
11761            }
11762            depth.increment()?;
11763            let envelope_size = 8;
11764            let bytes_len = max_ordinal as usize * envelope_size;
11765            #[allow(unused_variables)]
11766            let offset = encoder.out_of_line_offset(bytes_len);
11767            let mut _prev_end_offset: usize = 0;
11768            if 1 > max_ordinal {
11769                return Ok(());
11770            }
11771
11772            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11773            // are envelope_size bytes.
11774            let cur_offset: usize = (1 - 1) * envelope_size;
11775
11776            // Zero reserved fields.
11777            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11778
11779            // Safety:
11780            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11781            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11782            //   envelope_size bytes, there is always sufficient room.
11783            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::DataDirection, D>(
11784            self.data_direction.as_ref().map(<fidl_fuchsia_bluetooth_common::DataDirection as fidl::encoding::ValueTypeMarker>::borrow),
11785            encoder, offset + cur_offset, depth
11786        )?;
11787
11788            _prev_end_offset = cur_offset + envelope_size;
11789            if 2 > max_ordinal {
11790                return Ok(());
11791            }
11792
11793            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11794            // are envelope_size bytes.
11795            let cur_offset: usize = (2 - 1) * envelope_size;
11796
11797            // Zero reserved fields.
11798            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11799
11800            // Safety:
11801            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11802            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11803            //   envelope_size bytes, there is always sufficient room.
11804            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::CodecAttributes, D>(
11805            self.codec_attributes.as_ref().map(<fidl_fuchsia_bluetooth_common::CodecAttributes as fidl::encoding::ValueTypeMarker>::borrow),
11806            encoder, offset + cur_offset, depth
11807        )?;
11808
11809            _prev_end_offset = cur_offset + envelope_size;
11810            if 3 > max_ordinal {
11811                return Ok(());
11812            }
11813
11814            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11815            // are envelope_size bytes.
11816            let cur_offset: usize = (3 - 1) * envelope_size;
11817
11818            // Zero reserved fields.
11819            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11820
11821            // Safety:
11822            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11823            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11824            //   envelope_size bytes, there is always sufficient room.
11825            fidl::encoding::encode_in_envelope_optional::<i64, D>(
11826                self.controller_delay
11827                    .as_ref()
11828                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
11829                encoder,
11830                offset + cur_offset,
11831                depth,
11832            )?;
11833
11834            _prev_end_offset = cur_offset + envelope_size;
11835
11836            Ok(())
11837        }
11838    }
11839
11840    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11841        for IsochronousStreamSetupDataPathRequest
11842    {
11843        #[inline(always)]
11844        fn new_empty() -> Self {
11845            Self::default()
11846        }
11847
11848        unsafe fn decode(
11849            &mut self,
11850            decoder: &mut fidl::encoding::Decoder<'_, D>,
11851            offset: usize,
11852            mut depth: fidl::encoding::Depth,
11853        ) -> fidl::Result<()> {
11854            decoder.debug_check_bounds::<Self>(offset);
11855            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11856                None => return Err(fidl::Error::NotNullable),
11857                Some(len) => len,
11858            };
11859            // Calling decoder.out_of_line_offset(0) is not allowed.
11860            if len == 0 {
11861                return Ok(());
11862            };
11863            depth.increment()?;
11864            let envelope_size = 8;
11865            let bytes_len = len * envelope_size;
11866            let offset = decoder.out_of_line_offset(bytes_len)?;
11867            // Decode the envelope for each type.
11868            let mut _next_ordinal_to_read = 0;
11869            let mut next_offset = offset;
11870            let end_offset = offset + bytes_len;
11871            _next_ordinal_to_read += 1;
11872            if next_offset >= end_offset {
11873                return Ok(());
11874            }
11875
11876            // Decode unknown envelopes for gaps in ordinals.
11877            while _next_ordinal_to_read < 1 {
11878                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11879                _next_ordinal_to_read += 1;
11880                next_offset += envelope_size;
11881            }
11882
11883            let next_out_of_line = decoder.next_out_of_line();
11884            let handles_before = decoder.remaining_handles();
11885            if let Some((inlined, num_bytes, num_handles)) =
11886                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11887            {
11888                let member_inline_size = <fidl_fuchsia_bluetooth_common::DataDirection as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11889                if inlined != (member_inline_size <= 4) {
11890                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11891                }
11892                let inner_offset;
11893                let mut inner_depth = depth.clone();
11894                if inlined {
11895                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11896                    inner_offset = next_offset;
11897                } else {
11898                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11899                    inner_depth.increment()?;
11900                }
11901                let val_ref = self.data_direction.get_or_insert_with(|| {
11902                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::DataDirection, D)
11903                });
11904                fidl::decode!(
11905                    fidl_fuchsia_bluetooth_common::DataDirection,
11906                    D,
11907                    val_ref,
11908                    decoder,
11909                    inner_offset,
11910                    inner_depth
11911                )?;
11912                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11913                {
11914                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11915                }
11916                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11917                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11918                }
11919            }
11920
11921            next_offset += envelope_size;
11922            _next_ordinal_to_read += 1;
11923            if next_offset >= end_offset {
11924                return Ok(());
11925            }
11926
11927            // Decode unknown envelopes for gaps in ordinals.
11928            while _next_ordinal_to_read < 2 {
11929                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11930                _next_ordinal_to_read += 1;
11931                next_offset += envelope_size;
11932            }
11933
11934            let next_out_of_line = decoder.next_out_of_line();
11935            let handles_before = decoder.remaining_handles();
11936            if let Some((inlined, num_bytes, num_handles)) =
11937                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11938            {
11939                let member_inline_size = <fidl_fuchsia_bluetooth_common::CodecAttributes as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11940                if inlined != (member_inline_size <= 4) {
11941                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11942                }
11943                let inner_offset;
11944                let mut inner_depth = depth.clone();
11945                if inlined {
11946                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11947                    inner_offset = next_offset;
11948                } else {
11949                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11950                    inner_depth.increment()?;
11951                }
11952                let val_ref = self.codec_attributes.get_or_insert_with(|| {
11953                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::CodecAttributes, D)
11954                });
11955                fidl::decode!(
11956                    fidl_fuchsia_bluetooth_common::CodecAttributes,
11957                    D,
11958                    val_ref,
11959                    decoder,
11960                    inner_offset,
11961                    inner_depth
11962                )?;
11963                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11964                {
11965                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11966                }
11967                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11968                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11969                }
11970            }
11971
11972            next_offset += envelope_size;
11973            _next_ordinal_to_read += 1;
11974            if next_offset >= end_offset {
11975                return Ok(());
11976            }
11977
11978            // Decode unknown envelopes for gaps in ordinals.
11979            while _next_ordinal_to_read < 3 {
11980                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11981                _next_ordinal_to_read += 1;
11982                next_offset += envelope_size;
11983            }
11984
11985            let next_out_of_line = decoder.next_out_of_line();
11986            let handles_before = decoder.remaining_handles();
11987            if let Some((inlined, num_bytes, num_handles)) =
11988                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11989            {
11990                let member_inline_size =
11991                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11992                if inlined != (member_inline_size <= 4) {
11993                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11994                }
11995                let inner_offset;
11996                let mut inner_depth = depth.clone();
11997                if inlined {
11998                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11999                    inner_offset = next_offset;
12000                } else {
12001                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12002                    inner_depth.increment()?;
12003                }
12004                let val_ref = self.controller_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
12005                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12006                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12007                {
12008                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12009                }
12010                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12011                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12012                }
12013            }
12014
12015            next_offset += envelope_size;
12016
12017            // Decode the remaining unknown envelopes.
12018            while next_offset < end_offset {
12019                _next_ordinal_to_read += 1;
12020                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12021                next_offset += envelope_size;
12022            }
12023
12024            Ok(())
12025        }
12026    }
12027
12028    impl IsochronousStreamWriteRequest {
12029        #[inline(always)]
12030        fn max_ordinal_present(&self) -> u64 {
12031            if let Some(_) = self.data {
12032                return 1;
12033            }
12034            0
12035        }
12036    }
12037
12038    impl fidl::encoding::ValueTypeMarker for IsochronousStreamWriteRequest {
12039        type Borrowed<'a> = &'a Self;
12040        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12041            value
12042        }
12043    }
12044
12045    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamWriteRequest {
12046        type Owned = Self;
12047
12048        #[inline(always)]
12049        fn inline_align(_context: fidl::encoding::Context) -> usize {
12050            8
12051        }
12052
12053        #[inline(always)]
12054        fn inline_size(_context: fidl::encoding::Context) -> usize {
12055            16
12056        }
12057    }
12058
12059    unsafe impl<D: fidl::encoding::ResourceDialect>
12060        fidl::encoding::Encode<IsochronousStreamWriteRequest, D>
12061        for &IsochronousStreamWriteRequest
12062    {
12063        unsafe fn encode(
12064            self,
12065            encoder: &mut fidl::encoding::Encoder<'_, D>,
12066            offset: usize,
12067            mut depth: fidl::encoding::Depth,
12068        ) -> fidl::Result<()> {
12069            encoder.debug_check_bounds::<IsochronousStreamWriteRequest>(offset);
12070            // Vector header
12071            let max_ordinal: u64 = self.max_ordinal_present();
12072            encoder.write_num(max_ordinal, offset);
12073            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12074            // Calling encoder.out_of_line_offset(0) is not allowed.
12075            if max_ordinal == 0 {
12076                return Ok(());
12077            }
12078            depth.increment()?;
12079            let envelope_size = 8;
12080            let bytes_len = max_ordinal as usize * envelope_size;
12081            #[allow(unused_variables)]
12082            let offset = encoder.out_of_line_offset(bytes_len);
12083            let mut _prev_end_offset: usize = 0;
12084            if 1 > max_ordinal {
12085                return Ok(());
12086            }
12087
12088            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12089            // are envelope_size bytes.
12090            let cur_offset: usize = (1 - 1) * envelope_size;
12091
12092            // Zero reserved fields.
12093            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12094
12095            // Safety:
12096            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12097            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12098            //   envelope_size bytes, there is always sufficient room.
12099            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 4095>, D>(
12100                self.data.as_ref().map(
12101                    <fidl::encoding::Vector<u8, 4095> as fidl::encoding::ValueTypeMarker>::borrow,
12102                ),
12103                encoder,
12104                offset + cur_offset,
12105                depth,
12106            )?;
12107
12108            _prev_end_offset = cur_offset + envelope_size;
12109
12110            Ok(())
12111        }
12112    }
12113
12114    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12115        for IsochronousStreamWriteRequest
12116    {
12117        #[inline(always)]
12118        fn new_empty() -> Self {
12119            Self::default()
12120        }
12121
12122        unsafe fn decode(
12123            &mut self,
12124            decoder: &mut fidl::encoding::Decoder<'_, D>,
12125            offset: usize,
12126            mut depth: fidl::encoding::Depth,
12127        ) -> fidl::Result<()> {
12128            decoder.debug_check_bounds::<Self>(offset);
12129            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12130                None => return Err(fidl::Error::NotNullable),
12131                Some(len) => len,
12132            };
12133            // Calling decoder.out_of_line_offset(0) is not allowed.
12134            if len == 0 {
12135                return Ok(());
12136            };
12137            depth.increment()?;
12138            let envelope_size = 8;
12139            let bytes_len = len * envelope_size;
12140            let offset = decoder.out_of_line_offset(bytes_len)?;
12141            // Decode the envelope for each type.
12142            let mut _next_ordinal_to_read = 0;
12143            let mut next_offset = offset;
12144            let end_offset = offset + bytes_len;
12145            _next_ordinal_to_read += 1;
12146            if next_offset >= end_offset {
12147                return Ok(());
12148            }
12149
12150            // Decode unknown envelopes for gaps in ordinals.
12151            while _next_ordinal_to_read < 1 {
12152                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12153                _next_ordinal_to_read += 1;
12154                next_offset += envelope_size;
12155            }
12156
12157            let next_out_of_line = decoder.next_out_of_line();
12158            let handles_before = decoder.remaining_handles();
12159            if let Some((inlined, num_bytes, num_handles)) =
12160                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12161            {
12162                let member_inline_size =
12163                    <fidl::encoding::Vector<u8, 4095> as fidl::encoding::TypeMarker>::inline_size(
12164                        decoder.context,
12165                    );
12166                if inlined != (member_inline_size <= 4) {
12167                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12168                }
12169                let inner_offset;
12170                let mut inner_depth = depth.clone();
12171                if inlined {
12172                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12173                    inner_offset = next_offset;
12174                } else {
12175                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12176                    inner_depth.increment()?;
12177                }
12178                let val_ref = self
12179                    .data
12180                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 4095>, D));
12181                fidl::decode!(fidl::encoding::Vector<u8, 4095>, D, val_ref, decoder, inner_offset, inner_depth)?;
12182                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12183                {
12184                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12185                }
12186                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12187                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12188                }
12189            }
12190
12191            next_offset += envelope_size;
12192
12193            // Decode the remaining unknown envelopes.
12194            while next_offset < end_offset {
12195                _next_ordinal_to_read += 1;
12196                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12197                next_offset += envelope_size;
12198            }
12199
12200            Ok(())
12201        }
12202    }
12203
12204    impl IsochronousStreamReadResponse {
12205        #[inline(always)]
12206        fn max_ordinal_present(&self) -> u64 {
12207            if let Some(_) = self.timestamp {
12208                return 4;
12209            }
12210            if let Some(_) = self.status_flag {
12211                return 3;
12212            }
12213            if let Some(_) = self.sequence_number {
12214                return 2;
12215            }
12216            if let Some(_) = self.data {
12217                return 1;
12218            }
12219            0
12220        }
12221    }
12222
12223    impl fidl::encoding::ValueTypeMarker for IsochronousStreamReadResponse {
12224        type Borrowed<'a> = &'a Self;
12225        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12226            value
12227        }
12228    }
12229
12230    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamReadResponse {
12231        type Owned = Self;
12232
12233        #[inline(always)]
12234        fn inline_align(_context: fidl::encoding::Context) -> usize {
12235            8
12236        }
12237
12238        #[inline(always)]
12239        fn inline_size(_context: fidl::encoding::Context) -> usize {
12240            16
12241        }
12242    }
12243
12244    unsafe impl<D: fidl::encoding::ResourceDialect>
12245        fidl::encoding::Encode<IsochronousStreamReadResponse, D>
12246        for &IsochronousStreamReadResponse
12247    {
12248        unsafe fn encode(
12249            self,
12250            encoder: &mut fidl::encoding::Encoder<'_, D>,
12251            offset: usize,
12252            mut depth: fidl::encoding::Depth,
12253        ) -> fidl::Result<()> {
12254            encoder.debug_check_bounds::<IsochronousStreamReadResponse>(offset);
12255            // Vector header
12256            let max_ordinal: u64 = self.max_ordinal_present();
12257            encoder.write_num(max_ordinal, offset);
12258            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12259            // Calling encoder.out_of_line_offset(0) is not allowed.
12260            if max_ordinal == 0 {
12261                return Ok(());
12262            }
12263            depth.increment()?;
12264            let envelope_size = 8;
12265            let bytes_len = max_ordinal as usize * envelope_size;
12266            #[allow(unused_variables)]
12267            let offset = encoder.out_of_line_offset(bytes_len);
12268            let mut _prev_end_offset: usize = 0;
12269            if 1 > max_ordinal {
12270                return Ok(());
12271            }
12272
12273            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12274            // are envelope_size bytes.
12275            let cur_offset: usize = (1 - 1) * envelope_size;
12276
12277            // Zero reserved fields.
12278            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12279
12280            // Safety:
12281            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12282            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12283            //   envelope_size bytes, there is always sufficient room.
12284            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
12285            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
12286            encoder, offset + cur_offset, depth
12287        )?;
12288
12289            _prev_end_offset = cur_offset + envelope_size;
12290            if 2 > max_ordinal {
12291                return Ok(());
12292            }
12293
12294            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12295            // are envelope_size bytes.
12296            let cur_offset: usize = (2 - 1) * envelope_size;
12297
12298            // Zero reserved fields.
12299            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12300
12301            // Safety:
12302            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12303            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12304            //   envelope_size bytes, there is always sufficient room.
12305            fidl::encoding::encode_in_envelope_optional::<u16, D>(
12306                self.sequence_number.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
12307                encoder,
12308                offset + cur_offset,
12309                depth,
12310            )?;
12311
12312            _prev_end_offset = cur_offset + envelope_size;
12313            if 3 > max_ordinal {
12314                return Ok(());
12315            }
12316
12317            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12318            // are envelope_size bytes.
12319            let cur_offset: usize = (3 - 1) * envelope_size;
12320
12321            // Zero reserved fields.
12322            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12323
12324            // Safety:
12325            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12326            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12327            //   envelope_size bytes, there is always sufficient room.
12328            fidl::encoding::encode_in_envelope_optional::<IsoPacketStatusFlag, D>(
12329                self.status_flag
12330                    .as_ref()
12331                    .map(<IsoPacketStatusFlag as fidl::encoding::ValueTypeMarker>::borrow),
12332                encoder,
12333                offset + cur_offset,
12334                depth,
12335            )?;
12336
12337            _prev_end_offset = cur_offset + envelope_size;
12338            if 4 > max_ordinal {
12339                return Ok(());
12340            }
12341
12342            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12343            // are envelope_size bytes.
12344            let cur_offset: usize = (4 - 1) * envelope_size;
12345
12346            // Zero reserved fields.
12347            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12348
12349            // Safety:
12350            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12351            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12352            //   envelope_size bytes, there is always sufficient room.
12353            fidl::encoding::encode_in_envelope_optional::<i64, D>(
12354                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12355                encoder,
12356                offset + cur_offset,
12357                depth,
12358            )?;
12359
12360            _prev_end_offset = cur_offset + envelope_size;
12361
12362            Ok(())
12363        }
12364    }
12365
12366    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
12367        for IsochronousStreamReadResponse
12368    {
12369        #[inline(always)]
12370        fn new_empty() -> Self {
12371            Self::default()
12372        }
12373
12374        unsafe fn decode(
12375            &mut self,
12376            decoder: &mut fidl::encoding::Decoder<'_, D>,
12377            offset: usize,
12378            mut depth: fidl::encoding::Depth,
12379        ) -> fidl::Result<()> {
12380            decoder.debug_check_bounds::<Self>(offset);
12381            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12382                None => return Err(fidl::Error::NotNullable),
12383                Some(len) => len,
12384            };
12385            // Calling decoder.out_of_line_offset(0) is not allowed.
12386            if len == 0 {
12387                return Ok(());
12388            };
12389            depth.increment()?;
12390            let envelope_size = 8;
12391            let bytes_len = len * envelope_size;
12392            let offset = decoder.out_of_line_offset(bytes_len)?;
12393            // Decode the envelope for each type.
12394            let mut _next_ordinal_to_read = 0;
12395            let mut next_offset = offset;
12396            let end_offset = offset + bytes_len;
12397            _next_ordinal_to_read += 1;
12398            if next_offset >= end_offset {
12399                return Ok(());
12400            }
12401
12402            // Decode unknown envelopes for gaps in ordinals.
12403            while _next_ordinal_to_read < 1 {
12404                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12405                _next_ordinal_to_read += 1;
12406                next_offset += envelope_size;
12407            }
12408
12409            let next_out_of_line = decoder.next_out_of_line();
12410            let handles_before = decoder.remaining_handles();
12411            if let Some((inlined, num_bytes, num_handles)) =
12412                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12413            {
12414                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12415                if inlined != (member_inline_size <= 4) {
12416                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12417                }
12418                let inner_offset;
12419                let mut inner_depth = depth.clone();
12420                if inlined {
12421                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12422                    inner_offset = next_offset;
12423                } else {
12424                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12425                    inner_depth.increment()?;
12426                }
12427                let val_ref = self.data.get_or_insert_with(|| {
12428                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
12429                });
12430                fidl::decode!(
12431                    fidl::encoding::UnboundedVector<u8>,
12432                    D,
12433                    val_ref,
12434                    decoder,
12435                    inner_offset,
12436                    inner_depth
12437                )?;
12438                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12439                {
12440                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12441                }
12442                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12443                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12444                }
12445            }
12446
12447            next_offset += envelope_size;
12448            _next_ordinal_to_read += 1;
12449            if next_offset >= end_offset {
12450                return Ok(());
12451            }
12452
12453            // Decode unknown envelopes for gaps in ordinals.
12454            while _next_ordinal_to_read < 2 {
12455                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12456                _next_ordinal_to_read += 1;
12457                next_offset += envelope_size;
12458            }
12459
12460            let next_out_of_line = decoder.next_out_of_line();
12461            let handles_before = decoder.remaining_handles();
12462            if let Some((inlined, num_bytes, num_handles)) =
12463                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12464            {
12465                let member_inline_size =
12466                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12467                if inlined != (member_inline_size <= 4) {
12468                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12469                }
12470                let inner_offset;
12471                let mut inner_depth = depth.clone();
12472                if inlined {
12473                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12474                    inner_offset = next_offset;
12475                } else {
12476                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12477                    inner_depth.increment()?;
12478                }
12479                let val_ref = self.sequence_number.get_or_insert_with(|| fidl::new_empty!(u16, D));
12480                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
12481                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12482                {
12483                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12484                }
12485                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12486                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12487                }
12488            }
12489
12490            next_offset += envelope_size;
12491            _next_ordinal_to_read += 1;
12492            if next_offset >= end_offset {
12493                return Ok(());
12494            }
12495
12496            // Decode unknown envelopes for gaps in ordinals.
12497            while _next_ordinal_to_read < 3 {
12498                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12499                _next_ordinal_to_read += 1;
12500                next_offset += envelope_size;
12501            }
12502
12503            let next_out_of_line = decoder.next_out_of_line();
12504            let handles_before = decoder.remaining_handles();
12505            if let Some((inlined, num_bytes, num_handles)) =
12506                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12507            {
12508                let member_inline_size =
12509                    <IsoPacketStatusFlag as fidl::encoding::TypeMarker>::inline_size(
12510                        decoder.context,
12511                    );
12512                if inlined != (member_inline_size <= 4) {
12513                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12514                }
12515                let inner_offset;
12516                let mut inner_depth = depth.clone();
12517                if inlined {
12518                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12519                    inner_offset = next_offset;
12520                } else {
12521                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12522                    inner_depth.increment()?;
12523                }
12524                let val_ref = self
12525                    .status_flag
12526                    .get_or_insert_with(|| fidl::new_empty!(IsoPacketStatusFlag, D));
12527                fidl::decode!(IsoPacketStatusFlag, D, val_ref, decoder, inner_offset, inner_depth)?;
12528                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12529                {
12530                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12531                }
12532                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12533                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12534                }
12535            }
12536
12537            next_offset += envelope_size;
12538            _next_ordinal_to_read += 1;
12539            if next_offset >= end_offset {
12540                return Ok(());
12541            }
12542
12543            // Decode unknown envelopes for gaps in ordinals.
12544            while _next_ordinal_to_read < 4 {
12545                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12546                _next_ordinal_to_read += 1;
12547                next_offset += envelope_size;
12548            }
12549
12550            let next_out_of_line = decoder.next_out_of_line();
12551            let handles_before = decoder.remaining_handles();
12552            if let Some((inlined, num_bytes, num_handles)) =
12553                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12554            {
12555                let member_inline_size =
12556                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12557                if inlined != (member_inline_size <= 4) {
12558                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12559                }
12560                let inner_offset;
12561                let mut inner_depth = depth.clone();
12562                if inlined {
12563                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12564                    inner_offset = next_offset;
12565                } else {
12566                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12567                    inner_depth.increment()?;
12568                }
12569                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
12570                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12571                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12572                {
12573                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12574                }
12575                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12576                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12577                }
12578            }
12579
12580            next_offset += envelope_size;
12581
12582            // Decode the remaining unknown envelopes.
12583            while next_offset < end_offset {
12584                _next_ordinal_to_read += 1;
12585                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12586                next_offset += envelope_size;
12587            }
12588
12589            Ok(())
12590        }
12591    }
12592
12593    impl Legacy {
12594        #[inline(always)]
12595        fn max_ordinal_present(&self) -> u64 {
12596            0
12597        }
12598    }
12599
12600    impl fidl::encoding::ValueTypeMarker for Legacy {
12601        type Borrowed<'a> = &'a Self;
12602        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12603            value
12604        }
12605    }
12606
12607    unsafe impl fidl::encoding::TypeMarker for Legacy {
12608        type Owned = Self;
12609
12610        #[inline(always)]
12611        fn inline_align(_context: fidl::encoding::Context) -> usize {
12612            8
12613        }
12614
12615        #[inline(always)]
12616        fn inline_size(_context: fidl::encoding::Context) -> usize {
12617            16
12618        }
12619    }
12620
12621    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Legacy, D> for &Legacy {
12622        unsafe fn encode(
12623            self,
12624            encoder: &mut fidl::encoding::Encoder<'_, D>,
12625            offset: usize,
12626            mut depth: fidl::encoding::Depth,
12627        ) -> fidl::Result<()> {
12628            encoder.debug_check_bounds::<Legacy>(offset);
12629            // Vector header
12630            let max_ordinal: u64 = self.max_ordinal_present();
12631            encoder.write_num(max_ordinal, offset);
12632            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12633            // Calling encoder.out_of_line_offset(0) is not allowed.
12634            if max_ordinal == 0 {
12635                return Ok(());
12636            }
12637            depth.increment()?;
12638            let envelope_size = 8;
12639            let bytes_len = max_ordinal as usize * envelope_size;
12640            #[allow(unused_variables)]
12641            let offset = encoder.out_of_line_offset(bytes_len);
12642            let mut _prev_end_offset: usize = 0;
12643
12644            Ok(())
12645        }
12646    }
12647
12648    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Legacy {
12649        #[inline(always)]
12650        fn new_empty() -> Self {
12651            Self::default()
12652        }
12653
12654        unsafe fn decode(
12655            &mut self,
12656            decoder: &mut fidl::encoding::Decoder<'_, D>,
12657            offset: usize,
12658            mut depth: fidl::encoding::Depth,
12659        ) -> fidl::Result<()> {
12660            decoder.debug_check_bounds::<Self>(offset);
12661            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12662                None => return Err(fidl::Error::NotNullable),
12663                Some(len) => len,
12664            };
12665            // Calling decoder.out_of_line_offset(0) is not allowed.
12666            if len == 0 {
12667                return Ok(());
12668            };
12669            depth.increment()?;
12670            let envelope_size = 8;
12671            let bytes_len = len * envelope_size;
12672            let offset = decoder.out_of_line_offset(bytes_len)?;
12673            // Decode the envelope for each type.
12674            let mut _next_ordinal_to_read = 0;
12675            let mut next_offset = offset;
12676            let end_offset = offset + bytes_len;
12677
12678            // Decode the remaining unknown envelopes.
12679            while next_offset < end_offset {
12680                _next_ordinal_to_read += 1;
12681                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12682                next_offset += envelope_size;
12683            }
12684
12685            Ok(())
12686        }
12687    }
12688
12689    impl Peer {
12690        #[inline(always)]
12691        fn max_ordinal_present(&self) -> u64 {
12692            if let Some(_) = self.periodic_advertising_interval {
12693                return 10;
12694            }
12695            if let Some(_) = self.advertising_sid {
12696                return 9;
12697            }
12698            if let Some(_) = self.last_updated {
12699                return 8;
12700            }
12701            if let Some(_) = self.bonded {
12702                return 7;
12703            }
12704            if let Some(_) = self.data {
12705                return 6;
12706            }
12707            if let Some(_) = self.name {
12708                return 5;
12709            }
12710            if let Some(_) = self.advertising_data {
12711                return 4;
12712            }
12713            if let Some(_) = self.rssi {
12714                return 3;
12715            }
12716            if let Some(_) = self.connectable {
12717                return 2;
12718            }
12719            if let Some(_) = self.id {
12720                return 1;
12721            }
12722            0
12723        }
12724    }
12725
12726    impl fidl::encoding::ValueTypeMarker for Peer {
12727        type Borrowed<'a> = &'a Self;
12728        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12729            value
12730        }
12731    }
12732
12733    unsafe impl fidl::encoding::TypeMarker for Peer {
12734        type Owned = Self;
12735
12736        #[inline(always)]
12737        fn inline_align(_context: fidl::encoding::Context) -> usize {
12738            8
12739        }
12740
12741        #[inline(always)]
12742        fn inline_size(_context: fidl::encoding::Context) -> usize {
12743            16
12744        }
12745    }
12746
12747    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Peer, D> for &Peer {
12748        unsafe fn encode(
12749            self,
12750            encoder: &mut fidl::encoding::Encoder<'_, D>,
12751            offset: usize,
12752            mut depth: fidl::encoding::Depth,
12753        ) -> fidl::Result<()> {
12754            encoder.debug_check_bounds::<Peer>(offset);
12755            // Vector header
12756            let max_ordinal: u64 = self.max_ordinal_present();
12757            encoder.write_num(max_ordinal, offset);
12758            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12759            // Calling encoder.out_of_line_offset(0) is not allowed.
12760            if max_ordinal == 0 {
12761                return Ok(());
12762            }
12763            depth.increment()?;
12764            let envelope_size = 8;
12765            let bytes_len = max_ordinal as usize * envelope_size;
12766            #[allow(unused_variables)]
12767            let offset = encoder.out_of_line_offset(bytes_len);
12768            let mut _prev_end_offset: usize = 0;
12769            if 1 > max_ordinal {
12770                return Ok(());
12771            }
12772
12773            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12774            // are envelope_size bytes.
12775            let cur_offset: usize = (1 - 1) * envelope_size;
12776
12777            // Zero reserved fields.
12778            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12779
12780            // Safety:
12781            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12782            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12783            //   envelope_size bytes, there is always sufficient room.
12784            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::PeerId, D>(
12785            self.id.as_ref().map(<fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
12786            encoder, offset + cur_offset, depth
12787        )?;
12788
12789            _prev_end_offset = cur_offset + envelope_size;
12790            if 2 > max_ordinal {
12791                return Ok(());
12792            }
12793
12794            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12795            // are envelope_size bytes.
12796            let cur_offset: usize = (2 - 1) * envelope_size;
12797
12798            // Zero reserved fields.
12799            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12800
12801            // Safety:
12802            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12803            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12804            //   envelope_size bytes, there is always sufficient room.
12805            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12806                self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12807                encoder,
12808                offset + cur_offset,
12809                depth,
12810            )?;
12811
12812            _prev_end_offset = cur_offset + envelope_size;
12813            if 3 > max_ordinal {
12814                return Ok(());
12815            }
12816
12817            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12818            // are envelope_size bytes.
12819            let cur_offset: usize = (3 - 1) * envelope_size;
12820
12821            // Zero reserved fields.
12822            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12823
12824            // Safety:
12825            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12826            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12827            //   envelope_size bytes, there is always sufficient room.
12828            fidl::encoding::encode_in_envelope_optional::<i8, D>(
12829                self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
12830                encoder,
12831                offset + cur_offset,
12832                depth,
12833            )?;
12834
12835            _prev_end_offset = cur_offset + envelope_size;
12836            if 4 > max_ordinal {
12837                return Ok(());
12838            }
12839
12840            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12841            // are envelope_size bytes.
12842            let cur_offset: usize = (4 - 1) * envelope_size;
12843
12844            // Zero reserved fields.
12845            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12846
12847            // Safety:
12848            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12849            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12850            //   envelope_size bytes, there is always sufficient room.
12851            fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
12852                self.advertising_data
12853                    .as_ref()
12854                    .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
12855                encoder,
12856                offset + cur_offset,
12857                depth,
12858            )?;
12859
12860            _prev_end_offset = cur_offset + envelope_size;
12861            if 5 > max_ordinal {
12862                return Ok(());
12863            }
12864
12865            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12866            // are envelope_size bytes.
12867            let cur_offset: usize = (5 - 1) * envelope_size;
12868
12869            // Zero reserved fields.
12870            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12871
12872            // Safety:
12873            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12874            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12875            //   envelope_size bytes, there is always sufficient room.
12876            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
12877                self.name.as_ref().map(
12878                    <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
12879                ),
12880                encoder,
12881                offset + cur_offset,
12882                depth,
12883            )?;
12884
12885            _prev_end_offset = cur_offset + envelope_size;
12886            if 6 > max_ordinal {
12887                return Ok(());
12888            }
12889
12890            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12891            // are envelope_size bytes.
12892            let cur_offset: usize = (6 - 1) * envelope_size;
12893
12894            // Zero reserved fields.
12895            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12896
12897            // Safety:
12898            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12899            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12900            //   envelope_size bytes, there is always sufficient room.
12901            fidl::encoding::encode_in_envelope_optional::<ScanData, D>(
12902                self.data.as_ref().map(<ScanData as fidl::encoding::ValueTypeMarker>::borrow),
12903                encoder,
12904                offset + cur_offset,
12905                depth,
12906            )?;
12907
12908            _prev_end_offset = cur_offset + envelope_size;
12909            if 7 > max_ordinal {
12910                return Ok(());
12911            }
12912
12913            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12914            // are envelope_size bytes.
12915            let cur_offset: usize = (7 - 1) * envelope_size;
12916
12917            // Zero reserved fields.
12918            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12919
12920            // Safety:
12921            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12922            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12923            //   envelope_size bytes, there is always sufficient room.
12924            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12925                self.bonded.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12926                encoder,
12927                offset + cur_offset,
12928                depth,
12929            )?;
12930
12931            _prev_end_offset = cur_offset + envelope_size;
12932            if 8 > max_ordinal {
12933                return Ok(());
12934            }
12935
12936            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12937            // are envelope_size bytes.
12938            let cur_offset: usize = (8 - 1) * envelope_size;
12939
12940            // Zero reserved fields.
12941            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12942
12943            // Safety:
12944            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12945            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12946            //   envelope_size bytes, there is always sufficient room.
12947            fidl::encoding::encode_in_envelope_optional::<i64, D>(
12948                self.last_updated.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12949                encoder,
12950                offset + cur_offset,
12951                depth,
12952            )?;
12953
12954            _prev_end_offset = cur_offset + envelope_size;
12955            if 9 > max_ordinal {
12956                return Ok(());
12957            }
12958
12959            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12960            // are envelope_size bytes.
12961            let cur_offset: usize = (9 - 1) * envelope_size;
12962
12963            // Zero reserved fields.
12964            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12965
12966            // Safety:
12967            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12968            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12969            //   envelope_size bytes, there is always sufficient room.
12970            fidl::encoding::encode_in_envelope_optional::<u8, D>(
12971                self.advertising_sid.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
12972                encoder,
12973                offset + cur_offset,
12974                depth,
12975            )?;
12976
12977            _prev_end_offset = cur_offset + envelope_size;
12978            if 10 > max_ordinal {
12979                return Ok(());
12980            }
12981
12982            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12983            // are envelope_size bytes.
12984            let cur_offset: usize = (10 - 1) * envelope_size;
12985
12986            // Zero reserved fields.
12987            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12988
12989            // Safety:
12990            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12991            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12992            //   envelope_size bytes, there is always sufficient room.
12993            fidl::encoding::encode_in_envelope_optional::<u16, D>(
12994                self.periodic_advertising_interval
12995                    .as_ref()
12996                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
12997                encoder,
12998                offset + cur_offset,
12999                depth,
13000            )?;
13001
13002            _prev_end_offset = cur_offset + envelope_size;
13003
13004            Ok(())
13005        }
13006    }
13007
13008    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Peer {
13009        #[inline(always)]
13010        fn new_empty() -> Self {
13011            Self::default()
13012        }
13013
13014        unsafe fn decode(
13015            &mut self,
13016            decoder: &mut fidl::encoding::Decoder<'_, D>,
13017            offset: usize,
13018            mut depth: fidl::encoding::Depth,
13019        ) -> fidl::Result<()> {
13020            decoder.debug_check_bounds::<Self>(offset);
13021            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13022                None => return Err(fidl::Error::NotNullable),
13023                Some(len) => len,
13024            };
13025            // Calling decoder.out_of_line_offset(0) is not allowed.
13026            if len == 0 {
13027                return Ok(());
13028            };
13029            depth.increment()?;
13030            let envelope_size = 8;
13031            let bytes_len = len * envelope_size;
13032            let offset = decoder.out_of_line_offset(bytes_len)?;
13033            // Decode the envelope for each type.
13034            let mut _next_ordinal_to_read = 0;
13035            let mut next_offset = offset;
13036            let end_offset = offset + bytes_len;
13037            _next_ordinal_to_read += 1;
13038            if next_offset >= end_offset {
13039                return Ok(());
13040            }
13041
13042            // Decode unknown envelopes for gaps in ordinals.
13043            while _next_ordinal_to_read < 1 {
13044                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13045                _next_ordinal_to_read += 1;
13046                next_offset += envelope_size;
13047            }
13048
13049            let next_out_of_line = decoder.next_out_of_line();
13050            let handles_before = decoder.remaining_handles();
13051            if let Some((inlined, num_bytes, num_handles)) =
13052                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13053            {
13054                let member_inline_size = <fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13055                if inlined != (member_inline_size <= 4) {
13056                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13057                }
13058                let inner_offset;
13059                let mut inner_depth = depth.clone();
13060                if inlined {
13061                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13062                    inner_offset = next_offset;
13063                } else {
13064                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13065                    inner_depth.increment()?;
13066                }
13067                let val_ref = self.id.get_or_insert_with(|| {
13068                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::PeerId, D)
13069                });
13070                fidl::decode!(
13071                    fidl_fuchsia_bluetooth_common::PeerId,
13072                    D,
13073                    val_ref,
13074                    decoder,
13075                    inner_offset,
13076                    inner_depth
13077                )?;
13078                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13079                {
13080                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13081                }
13082                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13083                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13084                }
13085            }
13086
13087            next_offset += envelope_size;
13088            _next_ordinal_to_read += 1;
13089            if next_offset >= end_offset {
13090                return Ok(());
13091            }
13092
13093            // Decode unknown envelopes for gaps in ordinals.
13094            while _next_ordinal_to_read < 2 {
13095                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13096                _next_ordinal_to_read += 1;
13097                next_offset += envelope_size;
13098            }
13099
13100            let next_out_of_line = decoder.next_out_of_line();
13101            let handles_before = decoder.remaining_handles();
13102            if let Some((inlined, num_bytes, num_handles)) =
13103                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13104            {
13105                let member_inline_size =
13106                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13107                if inlined != (member_inline_size <= 4) {
13108                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13109                }
13110                let inner_offset;
13111                let mut inner_depth = depth.clone();
13112                if inlined {
13113                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13114                    inner_offset = next_offset;
13115                } else {
13116                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13117                    inner_depth.increment()?;
13118                }
13119                let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
13120                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13121                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13122                {
13123                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13124                }
13125                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13126                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13127                }
13128            }
13129
13130            next_offset += envelope_size;
13131            _next_ordinal_to_read += 1;
13132            if next_offset >= end_offset {
13133                return Ok(());
13134            }
13135
13136            // Decode unknown envelopes for gaps in ordinals.
13137            while _next_ordinal_to_read < 3 {
13138                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13139                _next_ordinal_to_read += 1;
13140                next_offset += envelope_size;
13141            }
13142
13143            let next_out_of_line = decoder.next_out_of_line();
13144            let handles_before = decoder.remaining_handles();
13145            if let Some((inlined, num_bytes, num_handles)) =
13146                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13147            {
13148                let member_inline_size =
13149                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13150                if inlined != (member_inline_size <= 4) {
13151                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13152                }
13153                let inner_offset;
13154                let mut inner_depth = depth.clone();
13155                if inlined {
13156                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13157                    inner_offset = next_offset;
13158                } else {
13159                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13160                    inner_depth.increment()?;
13161                }
13162                let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
13163                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
13164                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13165                {
13166                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13167                }
13168                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13169                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13170                }
13171            }
13172
13173            next_offset += envelope_size;
13174            _next_ordinal_to_read += 1;
13175            if next_offset >= end_offset {
13176                return Ok(());
13177            }
13178
13179            // Decode unknown envelopes for gaps in ordinals.
13180            while _next_ordinal_to_read < 4 {
13181                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13182                _next_ordinal_to_read += 1;
13183                next_offset += envelope_size;
13184            }
13185
13186            let next_out_of_line = decoder.next_out_of_line();
13187            let handles_before = decoder.remaining_handles();
13188            if let Some((inlined, num_bytes, num_handles)) =
13189                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13190            {
13191                let member_inline_size =
13192                    <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13193                if inlined != (member_inline_size <= 4) {
13194                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13195                }
13196                let inner_offset;
13197                let mut inner_depth = depth.clone();
13198                if inlined {
13199                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13200                    inner_offset = next_offset;
13201                } else {
13202                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13203                    inner_depth.increment()?;
13204                }
13205                let val_ref = self
13206                    .advertising_data
13207                    .get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
13208                fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
13209                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13210                {
13211                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13212                }
13213                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13214                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13215                }
13216            }
13217
13218            next_offset += envelope_size;
13219            _next_ordinal_to_read += 1;
13220            if next_offset >= end_offset {
13221                return Ok(());
13222            }
13223
13224            // Decode unknown envelopes for gaps in ordinals.
13225            while _next_ordinal_to_read < 5 {
13226                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13227                _next_ordinal_to_read += 1;
13228                next_offset += envelope_size;
13229            }
13230
13231            let next_out_of_line = decoder.next_out_of_line();
13232            let handles_before = decoder.remaining_handles();
13233            if let Some((inlined, num_bytes, num_handles)) =
13234                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13235            {
13236                let member_inline_size =
13237                    <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
13238                        decoder.context,
13239                    );
13240                if inlined != (member_inline_size <= 4) {
13241                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13242                }
13243                let inner_offset;
13244                let mut inner_depth = depth.clone();
13245                if inlined {
13246                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13247                    inner_offset = next_offset;
13248                } else {
13249                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13250                    inner_depth.increment()?;
13251                }
13252                let val_ref = self
13253                    .name
13254                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
13255                fidl::decode!(
13256                    fidl::encoding::BoundedString<248>,
13257                    D,
13258                    val_ref,
13259                    decoder,
13260                    inner_offset,
13261                    inner_depth
13262                )?;
13263                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13264                {
13265                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13266                }
13267                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13268                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13269                }
13270            }
13271
13272            next_offset += envelope_size;
13273            _next_ordinal_to_read += 1;
13274            if next_offset >= end_offset {
13275                return Ok(());
13276            }
13277
13278            // Decode unknown envelopes for gaps in ordinals.
13279            while _next_ordinal_to_read < 6 {
13280                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13281                _next_ordinal_to_read += 1;
13282                next_offset += envelope_size;
13283            }
13284
13285            let next_out_of_line = decoder.next_out_of_line();
13286            let handles_before = decoder.remaining_handles();
13287            if let Some((inlined, num_bytes, num_handles)) =
13288                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13289            {
13290                let member_inline_size =
13291                    <ScanData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13292                if inlined != (member_inline_size <= 4) {
13293                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13294                }
13295                let inner_offset;
13296                let mut inner_depth = depth.clone();
13297                if inlined {
13298                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13299                    inner_offset = next_offset;
13300                } else {
13301                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13302                    inner_depth.increment()?;
13303                }
13304                let val_ref = self.data.get_or_insert_with(|| fidl::new_empty!(ScanData, D));
13305                fidl::decode!(ScanData, D, val_ref, decoder, inner_offset, inner_depth)?;
13306                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13307                {
13308                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13309                }
13310                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13311                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13312                }
13313            }
13314
13315            next_offset += envelope_size;
13316            _next_ordinal_to_read += 1;
13317            if next_offset >= end_offset {
13318                return Ok(());
13319            }
13320
13321            // Decode unknown envelopes for gaps in ordinals.
13322            while _next_ordinal_to_read < 7 {
13323                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13324                _next_ordinal_to_read += 1;
13325                next_offset += envelope_size;
13326            }
13327
13328            let next_out_of_line = decoder.next_out_of_line();
13329            let handles_before = decoder.remaining_handles();
13330            if let Some((inlined, num_bytes, num_handles)) =
13331                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13332            {
13333                let member_inline_size =
13334                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13335                if inlined != (member_inline_size <= 4) {
13336                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13337                }
13338                let inner_offset;
13339                let mut inner_depth = depth.clone();
13340                if inlined {
13341                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13342                    inner_offset = next_offset;
13343                } else {
13344                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13345                    inner_depth.increment()?;
13346                }
13347                let val_ref = self.bonded.get_or_insert_with(|| fidl::new_empty!(bool, D));
13348                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13349                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13350                {
13351                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13352                }
13353                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13354                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13355                }
13356            }
13357
13358            next_offset += envelope_size;
13359            _next_ordinal_to_read += 1;
13360            if next_offset >= end_offset {
13361                return Ok(());
13362            }
13363
13364            // Decode unknown envelopes for gaps in ordinals.
13365            while _next_ordinal_to_read < 8 {
13366                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13367                _next_ordinal_to_read += 1;
13368                next_offset += envelope_size;
13369            }
13370
13371            let next_out_of_line = decoder.next_out_of_line();
13372            let handles_before = decoder.remaining_handles();
13373            if let Some((inlined, num_bytes, num_handles)) =
13374                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13375            {
13376                let member_inline_size =
13377                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13378                if inlined != (member_inline_size <= 4) {
13379                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13380                }
13381                let inner_offset;
13382                let mut inner_depth = depth.clone();
13383                if inlined {
13384                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13385                    inner_offset = next_offset;
13386                } else {
13387                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13388                    inner_depth.increment()?;
13389                }
13390                let val_ref = self.last_updated.get_or_insert_with(|| fidl::new_empty!(i64, D));
13391                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
13392                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13393                {
13394                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13395                }
13396                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13397                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13398                }
13399            }
13400
13401            next_offset += envelope_size;
13402            _next_ordinal_to_read += 1;
13403            if next_offset >= end_offset {
13404                return Ok(());
13405            }
13406
13407            // Decode unknown envelopes for gaps in ordinals.
13408            while _next_ordinal_to_read < 9 {
13409                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13410                _next_ordinal_to_read += 1;
13411                next_offset += envelope_size;
13412            }
13413
13414            let next_out_of_line = decoder.next_out_of_line();
13415            let handles_before = decoder.remaining_handles();
13416            if let Some((inlined, num_bytes, num_handles)) =
13417                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13418            {
13419                let member_inline_size =
13420                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13421                if inlined != (member_inline_size <= 4) {
13422                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13423                }
13424                let inner_offset;
13425                let mut inner_depth = depth.clone();
13426                if inlined {
13427                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13428                    inner_offset = next_offset;
13429                } else {
13430                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13431                    inner_depth.increment()?;
13432                }
13433                let val_ref = self.advertising_sid.get_or_insert_with(|| fidl::new_empty!(u8, D));
13434                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
13435                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13436                {
13437                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13438                }
13439                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13440                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13441                }
13442            }
13443
13444            next_offset += envelope_size;
13445            _next_ordinal_to_read += 1;
13446            if next_offset >= end_offset {
13447                return Ok(());
13448            }
13449
13450            // Decode unknown envelopes for gaps in ordinals.
13451            while _next_ordinal_to_read < 10 {
13452                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13453                _next_ordinal_to_read += 1;
13454                next_offset += envelope_size;
13455            }
13456
13457            let next_out_of_line = decoder.next_out_of_line();
13458            let handles_before = decoder.remaining_handles();
13459            if let Some((inlined, num_bytes, num_handles)) =
13460                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13461            {
13462                let member_inline_size =
13463                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13464                if inlined != (member_inline_size <= 4) {
13465                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13466                }
13467                let inner_offset;
13468                let mut inner_depth = depth.clone();
13469                if inlined {
13470                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13471                    inner_offset = next_offset;
13472                } else {
13473                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13474                    inner_depth.increment()?;
13475                }
13476                let val_ref = self
13477                    .periodic_advertising_interval
13478                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
13479                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13480                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13481                {
13482                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13483                }
13484                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13485                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13486                }
13487            }
13488
13489            next_offset += envelope_size;
13490
13491            // Decode the remaining unknown envelopes.
13492            while next_offset < end_offset {
13493                _next_ordinal_to_read += 1;
13494                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13495                next_offset += envelope_size;
13496            }
13497
13498            Ok(())
13499        }
13500    }
13501
13502    impl PeriodicAdvertisingReport {
13503        #[inline(always)]
13504        fn max_ordinal_present(&self) -> u64 {
13505            if let Some(_) = self.timestamp {
13506                return 5;
13507            }
13508            if let Some(_) = self.subevent {
13509                return 4;
13510            }
13511            if let Some(_) = self.event_counter {
13512                return 3;
13513            }
13514            if let Some(_) = self.data {
13515                return 2;
13516            }
13517            if let Some(_) = self.rssi {
13518                return 1;
13519            }
13520            0
13521        }
13522    }
13523
13524    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingReport {
13525        type Borrowed<'a> = &'a Self;
13526        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13527            value
13528        }
13529    }
13530
13531    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingReport {
13532        type Owned = Self;
13533
13534        #[inline(always)]
13535        fn inline_align(_context: fidl::encoding::Context) -> usize {
13536            8
13537        }
13538
13539        #[inline(always)]
13540        fn inline_size(_context: fidl::encoding::Context) -> usize {
13541            16
13542        }
13543    }
13544
13545    unsafe impl<D: fidl::encoding::ResourceDialect>
13546        fidl::encoding::Encode<PeriodicAdvertisingReport, D> for &PeriodicAdvertisingReport
13547    {
13548        unsafe fn encode(
13549            self,
13550            encoder: &mut fidl::encoding::Encoder<'_, D>,
13551            offset: usize,
13552            mut depth: fidl::encoding::Depth,
13553        ) -> fidl::Result<()> {
13554            encoder.debug_check_bounds::<PeriodicAdvertisingReport>(offset);
13555            // Vector header
13556            let max_ordinal: u64 = self.max_ordinal_present();
13557            encoder.write_num(max_ordinal, offset);
13558            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13559            // Calling encoder.out_of_line_offset(0) is not allowed.
13560            if max_ordinal == 0 {
13561                return Ok(());
13562            }
13563            depth.increment()?;
13564            let envelope_size = 8;
13565            let bytes_len = max_ordinal as usize * envelope_size;
13566            #[allow(unused_variables)]
13567            let offset = encoder.out_of_line_offset(bytes_len);
13568            let mut _prev_end_offset: usize = 0;
13569            if 1 > max_ordinal {
13570                return Ok(());
13571            }
13572
13573            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13574            // are envelope_size bytes.
13575            let cur_offset: usize = (1 - 1) * envelope_size;
13576
13577            // Zero reserved fields.
13578            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13579
13580            // Safety:
13581            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13582            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13583            //   envelope_size bytes, there is always sufficient room.
13584            fidl::encoding::encode_in_envelope_optional::<i8, D>(
13585                self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
13586                encoder,
13587                offset + cur_offset,
13588                depth,
13589            )?;
13590
13591            _prev_end_offset = cur_offset + envelope_size;
13592            if 2 > max_ordinal {
13593                return Ok(());
13594            }
13595
13596            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13597            // are envelope_size bytes.
13598            let cur_offset: usize = (2 - 1) * envelope_size;
13599
13600            // Zero reserved fields.
13601            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13602
13603            // Safety:
13604            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13605            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13606            //   envelope_size bytes, there is always sufficient room.
13607            fidl::encoding::encode_in_envelope_optional::<ScanData, D>(
13608                self.data.as_ref().map(<ScanData as fidl::encoding::ValueTypeMarker>::borrow),
13609                encoder,
13610                offset + cur_offset,
13611                depth,
13612            )?;
13613
13614            _prev_end_offset = cur_offset + envelope_size;
13615            if 3 > max_ordinal {
13616                return Ok(());
13617            }
13618
13619            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13620            // are envelope_size bytes.
13621            let cur_offset: usize = (3 - 1) * envelope_size;
13622
13623            // Zero reserved fields.
13624            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13625
13626            // Safety:
13627            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13628            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13629            //   envelope_size bytes, there is always sufficient room.
13630            fidl::encoding::encode_in_envelope_optional::<u16, D>(
13631                self.event_counter.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13632                encoder,
13633                offset + cur_offset,
13634                depth,
13635            )?;
13636
13637            _prev_end_offset = cur_offset + envelope_size;
13638            if 4 > max_ordinal {
13639                return Ok(());
13640            }
13641
13642            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13643            // are envelope_size bytes.
13644            let cur_offset: usize = (4 - 1) * envelope_size;
13645
13646            // Zero reserved fields.
13647            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13648
13649            // Safety:
13650            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13651            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13652            //   envelope_size bytes, there is always sufficient room.
13653            fidl::encoding::encode_in_envelope_optional::<u8, D>(
13654                self.subevent.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13655                encoder,
13656                offset + cur_offset,
13657                depth,
13658            )?;
13659
13660            _prev_end_offset = cur_offset + envelope_size;
13661            if 5 > max_ordinal {
13662                return Ok(());
13663            }
13664
13665            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13666            // are envelope_size bytes.
13667            let cur_offset: usize = (5 - 1) * envelope_size;
13668
13669            // Zero reserved fields.
13670            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13671
13672            // Safety:
13673            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13674            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13675            //   envelope_size bytes, there is always sufficient room.
13676            fidl::encoding::encode_in_envelope_optional::<i64, D>(
13677                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
13678                encoder,
13679                offset + cur_offset,
13680                depth,
13681            )?;
13682
13683            _prev_end_offset = cur_offset + envelope_size;
13684
13685            Ok(())
13686        }
13687    }
13688
13689    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13690        for PeriodicAdvertisingReport
13691    {
13692        #[inline(always)]
13693        fn new_empty() -> Self {
13694            Self::default()
13695        }
13696
13697        unsafe fn decode(
13698            &mut self,
13699            decoder: &mut fidl::encoding::Decoder<'_, D>,
13700            offset: usize,
13701            mut depth: fidl::encoding::Depth,
13702        ) -> fidl::Result<()> {
13703            decoder.debug_check_bounds::<Self>(offset);
13704            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13705                None => return Err(fidl::Error::NotNullable),
13706                Some(len) => len,
13707            };
13708            // Calling decoder.out_of_line_offset(0) is not allowed.
13709            if len == 0 {
13710                return Ok(());
13711            };
13712            depth.increment()?;
13713            let envelope_size = 8;
13714            let bytes_len = len * envelope_size;
13715            let offset = decoder.out_of_line_offset(bytes_len)?;
13716            // Decode the envelope for each type.
13717            let mut _next_ordinal_to_read = 0;
13718            let mut next_offset = offset;
13719            let end_offset = offset + bytes_len;
13720            _next_ordinal_to_read += 1;
13721            if next_offset >= end_offset {
13722                return Ok(());
13723            }
13724
13725            // Decode unknown envelopes for gaps in ordinals.
13726            while _next_ordinal_to_read < 1 {
13727                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13728                _next_ordinal_to_read += 1;
13729                next_offset += envelope_size;
13730            }
13731
13732            let next_out_of_line = decoder.next_out_of_line();
13733            let handles_before = decoder.remaining_handles();
13734            if let Some((inlined, num_bytes, num_handles)) =
13735                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13736            {
13737                let member_inline_size =
13738                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13739                if inlined != (member_inline_size <= 4) {
13740                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13741                }
13742                let inner_offset;
13743                let mut inner_depth = depth.clone();
13744                if inlined {
13745                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13746                    inner_offset = next_offset;
13747                } else {
13748                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13749                    inner_depth.increment()?;
13750                }
13751                let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
13752                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
13753                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13754                {
13755                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13756                }
13757                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13758                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13759                }
13760            }
13761
13762            next_offset += envelope_size;
13763            _next_ordinal_to_read += 1;
13764            if next_offset >= end_offset {
13765                return Ok(());
13766            }
13767
13768            // Decode unknown envelopes for gaps in ordinals.
13769            while _next_ordinal_to_read < 2 {
13770                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13771                _next_ordinal_to_read += 1;
13772                next_offset += envelope_size;
13773            }
13774
13775            let next_out_of_line = decoder.next_out_of_line();
13776            let handles_before = decoder.remaining_handles();
13777            if let Some((inlined, num_bytes, num_handles)) =
13778                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13779            {
13780                let member_inline_size =
13781                    <ScanData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13782                if inlined != (member_inline_size <= 4) {
13783                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13784                }
13785                let inner_offset;
13786                let mut inner_depth = depth.clone();
13787                if inlined {
13788                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13789                    inner_offset = next_offset;
13790                } else {
13791                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13792                    inner_depth.increment()?;
13793                }
13794                let val_ref = self.data.get_or_insert_with(|| fidl::new_empty!(ScanData, D));
13795                fidl::decode!(ScanData, D, val_ref, decoder, inner_offset, inner_depth)?;
13796                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13797                {
13798                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13799                }
13800                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13801                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13802                }
13803            }
13804
13805            next_offset += envelope_size;
13806            _next_ordinal_to_read += 1;
13807            if next_offset >= end_offset {
13808                return Ok(());
13809            }
13810
13811            // Decode unknown envelopes for gaps in ordinals.
13812            while _next_ordinal_to_read < 3 {
13813                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13814                _next_ordinal_to_read += 1;
13815                next_offset += envelope_size;
13816            }
13817
13818            let next_out_of_line = decoder.next_out_of_line();
13819            let handles_before = decoder.remaining_handles();
13820            if let Some((inlined, num_bytes, num_handles)) =
13821                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13822            {
13823                let member_inline_size =
13824                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13825                if inlined != (member_inline_size <= 4) {
13826                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13827                }
13828                let inner_offset;
13829                let mut inner_depth = depth.clone();
13830                if inlined {
13831                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13832                    inner_offset = next_offset;
13833                } else {
13834                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13835                    inner_depth.increment()?;
13836                }
13837                let val_ref = self.event_counter.get_or_insert_with(|| fidl::new_empty!(u16, D));
13838                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13839                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13840                {
13841                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13842                }
13843                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13844                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13845                }
13846            }
13847
13848            next_offset += envelope_size;
13849            _next_ordinal_to_read += 1;
13850            if next_offset >= end_offset {
13851                return Ok(());
13852            }
13853
13854            // Decode unknown envelopes for gaps in ordinals.
13855            while _next_ordinal_to_read < 4 {
13856                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13857                _next_ordinal_to_read += 1;
13858                next_offset += envelope_size;
13859            }
13860
13861            let next_out_of_line = decoder.next_out_of_line();
13862            let handles_before = decoder.remaining_handles();
13863            if let Some((inlined, num_bytes, num_handles)) =
13864                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13865            {
13866                let member_inline_size =
13867                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13868                if inlined != (member_inline_size <= 4) {
13869                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13870                }
13871                let inner_offset;
13872                let mut inner_depth = depth.clone();
13873                if inlined {
13874                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13875                    inner_offset = next_offset;
13876                } else {
13877                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13878                    inner_depth.increment()?;
13879                }
13880                let val_ref = self.subevent.get_or_insert_with(|| fidl::new_empty!(u8, D));
13881                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
13882                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13883                {
13884                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13885                }
13886                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13887                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13888                }
13889            }
13890
13891            next_offset += envelope_size;
13892            _next_ordinal_to_read += 1;
13893            if next_offset >= end_offset {
13894                return Ok(());
13895            }
13896
13897            // Decode unknown envelopes for gaps in ordinals.
13898            while _next_ordinal_to_read < 5 {
13899                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13900                _next_ordinal_to_read += 1;
13901                next_offset += envelope_size;
13902            }
13903
13904            let next_out_of_line = decoder.next_out_of_line();
13905            let handles_before = decoder.remaining_handles();
13906            if let Some((inlined, num_bytes, num_handles)) =
13907                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13908            {
13909                let member_inline_size =
13910                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13911                if inlined != (member_inline_size <= 4) {
13912                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13913                }
13914                let inner_offset;
13915                let mut inner_depth = depth.clone();
13916                if inlined {
13917                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13918                    inner_offset = next_offset;
13919                } else {
13920                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13921                    inner_depth.increment()?;
13922                }
13923                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
13924                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
13925                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13926                {
13927                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13928                }
13929                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13930                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13931                }
13932            }
13933
13934            next_offset += envelope_size;
13935
13936            // Decode the remaining unknown envelopes.
13937            while next_offset < end_offset {
13938                _next_ordinal_to_read += 1;
13939                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13940                next_offset += envelope_size;
13941            }
13942
13943            Ok(())
13944        }
13945    }
13946
13947    impl PeriodicAdvertisingSyncConfiguration {
13948        #[inline(always)]
13949        fn max_ordinal_present(&self) -> u64 {
13950            if let Some(_) = self.filter_duplicates {
13951                return 1;
13952            }
13953            0
13954        }
13955    }
13956
13957    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncConfiguration {
13958        type Borrowed<'a> = &'a Self;
13959        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13960            value
13961        }
13962    }
13963
13964    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncConfiguration {
13965        type Owned = Self;
13966
13967        #[inline(always)]
13968        fn inline_align(_context: fidl::encoding::Context) -> usize {
13969            8
13970        }
13971
13972        #[inline(always)]
13973        fn inline_size(_context: fidl::encoding::Context) -> usize {
13974            16
13975        }
13976    }
13977
13978    unsafe impl<D: fidl::encoding::ResourceDialect>
13979        fidl::encoding::Encode<PeriodicAdvertisingSyncConfiguration, D>
13980        for &PeriodicAdvertisingSyncConfiguration
13981    {
13982        unsafe fn encode(
13983            self,
13984            encoder: &mut fidl::encoding::Encoder<'_, D>,
13985            offset: usize,
13986            mut depth: fidl::encoding::Depth,
13987        ) -> fidl::Result<()> {
13988            encoder.debug_check_bounds::<PeriodicAdvertisingSyncConfiguration>(offset);
13989            // Vector header
13990            let max_ordinal: u64 = self.max_ordinal_present();
13991            encoder.write_num(max_ordinal, offset);
13992            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13993            // Calling encoder.out_of_line_offset(0) is not allowed.
13994            if max_ordinal == 0 {
13995                return Ok(());
13996            }
13997            depth.increment()?;
13998            let envelope_size = 8;
13999            let bytes_len = max_ordinal as usize * envelope_size;
14000            #[allow(unused_variables)]
14001            let offset = encoder.out_of_line_offset(bytes_len);
14002            let mut _prev_end_offset: usize = 0;
14003            if 1 > max_ordinal {
14004                return Ok(());
14005            }
14006
14007            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14008            // are envelope_size bytes.
14009            let cur_offset: usize = (1 - 1) * envelope_size;
14010
14011            // Zero reserved fields.
14012            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14013
14014            // Safety:
14015            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14016            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14017            //   envelope_size bytes, there is always sufficient room.
14018            fidl::encoding::encode_in_envelope_optional::<bool, D>(
14019                self.filter_duplicates
14020                    .as_ref()
14021                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
14022                encoder,
14023                offset + cur_offset,
14024                depth,
14025            )?;
14026
14027            _prev_end_offset = cur_offset + envelope_size;
14028
14029            Ok(())
14030        }
14031    }
14032
14033    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14034        for PeriodicAdvertisingSyncConfiguration
14035    {
14036        #[inline(always)]
14037        fn new_empty() -> Self {
14038            Self::default()
14039        }
14040
14041        unsafe fn decode(
14042            &mut self,
14043            decoder: &mut fidl::encoding::Decoder<'_, D>,
14044            offset: usize,
14045            mut depth: fidl::encoding::Depth,
14046        ) -> fidl::Result<()> {
14047            decoder.debug_check_bounds::<Self>(offset);
14048            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14049                None => return Err(fidl::Error::NotNullable),
14050                Some(len) => len,
14051            };
14052            // Calling decoder.out_of_line_offset(0) is not allowed.
14053            if len == 0 {
14054                return Ok(());
14055            };
14056            depth.increment()?;
14057            let envelope_size = 8;
14058            let bytes_len = len * envelope_size;
14059            let offset = decoder.out_of_line_offset(bytes_len)?;
14060            // Decode the envelope for each type.
14061            let mut _next_ordinal_to_read = 0;
14062            let mut next_offset = offset;
14063            let end_offset = offset + bytes_len;
14064            _next_ordinal_to_read += 1;
14065            if next_offset >= end_offset {
14066                return Ok(());
14067            }
14068
14069            // Decode unknown envelopes for gaps in ordinals.
14070            while _next_ordinal_to_read < 1 {
14071                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14072                _next_ordinal_to_read += 1;
14073                next_offset += envelope_size;
14074            }
14075
14076            let next_out_of_line = decoder.next_out_of_line();
14077            let handles_before = decoder.remaining_handles();
14078            if let Some((inlined, num_bytes, num_handles)) =
14079                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14080            {
14081                let member_inline_size =
14082                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14083                if inlined != (member_inline_size <= 4) {
14084                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14085                }
14086                let inner_offset;
14087                let mut inner_depth = depth.clone();
14088                if inlined {
14089                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14090                    inner_offset = next_offset;
14091                } else {
14092                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14093                    inner_depth.increment()?;
14094                }
14095                let val_ref =
14096                    self.filter_duplicates.get_or_insert_with(|| fidl::new_empty!(bool, D));
14097                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
14098                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14099                {
14100                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14101                }
14102                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14103                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14104                }
14105            }
14106
14107            next_offset += envelope_size;
14108
14109            // Decode the remaining unknown envelopes.
14110            while next_offset < end_offset {
14111                _next_ordinal_to_read += 1;
14112                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14113                next_offset += envelope_size;
14114            }
14115
14116            Ok(())
14117        }
14118    }
14119
14120    impl PeriodicAdvertisingSyncOnEstablishedRequest {
14121        #[inline(always)]
14122        fn max_ordinal_present(&self) -> u64 {
14123            if let Some(_) = self.periodic_advertising_interval {
14124                return 7;
14125            }
14126            if let Some(_) = self.phy {
14127                return 6;
14128            }
14129            if let Some(_) = self.advertising_sid {
14130                return 5;
14131            }
14132            if let Some(_) = self.service_data {
14133                return 4;
14134            }
14135            if let Some(_) = self.peer_id {
14136                return 3;
14137            }
14138            if let Some(_) = self.subevents_count {
14139                return 2;
14140            }
14141            if let Some(_) = self.id {
14142                return 1;
14143            }
14144            0
14145        }
14146    }
14147
14148    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncOnEstablishedRequest {
14149        type Borrowed<'a> = &'a Self;
14150        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14151            value
14152        }
14153    }
14154
14155    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncOnEstablishedRequest {
14156        type Owned = Self;
14157
14158        #[inline(always)]
14159        fn inline_align(_context: fidl::encoding::Context) -> usize {
14160            8
14161        }
14162
14163        #[inline(always)]
14164        fn inline_size(_context: fidl::encoding::Context) -> usize {
14165            16
14166        }
14167    }
14168
14169    unsafe impl<D: fidl::encoding::ResourceDialect>
14170        fidl::encoding::Encode<PeriodicAdvertisingSyncOnEstablishedRequest, D>
14171        for &PeriodicAdvertisingSyncOnEstablishedRequest
14172    {
14173        unsafe fn encode(
14174            self,
14175            encoder: &mut fidl::encoding::Encoder<'_, D>,
14176            offset: usize,
14177            mut depth: fidl::encoding::Depth,
14178        ) -> fidl::Result<()> {
14179            encoder.debug_check_bounds::<PeriodicAdvertisingSyncOnEstablishedRequest>(offset);
14180            // Vector header
14181            let max_ordinal: u64 = self.max_ordinal_present();
14182            encoder.write_num(max_ordinal, offset);
14183            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14184            // Calling encoder.out_of_line_offset(0) is not allowed.
14185            if max_ordinal == 0 {
14186                return Ok(());
14187            }
14188            depth.increment()?;
14189            let envelope_size = 8;
14190            let bytes_len = max_ordinal as usize * envelope_size;
14191            #[allow(unused_variables)]
14192            let offset = encoder.out_of_line_offset(bytes_len);
14193            let mut _prev_end_offset: usize = 0;
14194            if 1 > max_ordinal {
14195                return Ok(());
14196            }
14197
14198            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14199            // are envelope_size bytes.
14200            let cur_offset: usize = (1 - 1) * envelope_size;
14201
14202            // Zero reserved fields.
14203            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14204
14205            // Safety:
14206            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14207            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14208            //   envelope_size bytes, there is always sufficient room.
14209            fidl::encoding::encode_in_envelope_optional::<PeriodicAdvertisingSyncId, D>(
14210                self.id
14211                    .as_ref()
14212                    .map(<PeriodicAdvertisingSyncId as fidl::encoding::ValueTypeMarker>::borrow),
14213                encoder,
14214                offset + cur_offset,
14215                depth,
14216            )?;
14217
14218            _prev_end_offset = cur_offset + envelope_size;
14219            if 2 > max_ordinal {
14220                return Ok(());
14221            }
14222
14223            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14224            // are envelope_size bytes.
14225            let cur_offset: usize = (2 - 1) * envelope_size;
14226
14227            // Zero reserved fields.
14228            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14229
14230            // Safety:
14231            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14232            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14233            //   envelope_size bytes, there is always sufficient room.
14234            fidl::encoding::encode_in_envelope_optional::<u8, D>(
14235                self.subevents_count.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
14236                encoder,
14237                offset + cur_offset,
14238                depth,
14239            )?;
14240
14241            _prev_end_offset = cur_offset + envelope_size;
14242            if 3 > max_ordinal {
14243                return Ok(());
14244            }
14245
14246            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14247            // are envelope_size bytes.
14248            let cur_offset: usize = (3 - 1) * envelope_size;
14249
14250            // Zero reserved fields.
14251            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14252
14253            // Safety:
14254            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14255            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14256            //   envelope_size bytes, there is always sufficient room.
14257            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::PeerId, D>(
14258            self.peer_id.as_ref().map(<fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
14259            encoder, offset + cur_offset, depth
14260        )?;
14261
14262            _prev_end_offset = cur_offset + envelope_size;
14263            if 4 > max_ordinal {
14264                return Ok(());
14265            }
14266
14267            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14268            // are envelope_size bytes.
14269            let cur_offset: usize = (4 - 1) * envelope_size;
14270
14271            // Zero reserved fields.
14272            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14273
14274            // Safety:
14275            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14276            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14277            //   envelope_size bytes, there is always sufficient room.
14278            fidl::encoding::encode_in_envelope_optional::<u16, D>(
14279                self.service_data.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
14280                encoder,
14281                offset + cur_offset,
14282                depth,
14283            )?;
14284
14285            _prev_end_offset = cur_offset + envelope_size;
14286            if 5 > max_ordinal {
14287                return Ok(());
14288            }
14289
14290            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14291            // are envelope_size bytes.
14292            let cur_offset: usize = (5 - 1) * envelope_size;
14293
14294            // Zero reserved fields.
14295            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14296
14297            // Safety:
14298            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14299            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14300            //   envelope_size bytes, there is always sufficient room.
14301            fidl::encoding::encode_in_envelope_optional::<u8, D>(
14302                self.advertising_sid.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
14303                encoder,
14304                offset + cur_offset,
14305                depth,
14306            )?;
14307
14308            _prev_end_offset = cur_offset + envelope_size;
14309            if 6 > max_ordinal {
14310                return Ok(());
14311            }
14312
14313            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14314            // are envelope_size bytes.
14315            let cur_offset: usize = (6 - 1) * envelope_size;
14316
14317            // Zero reserved fields.
14318            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14319
14320            // Safety:
14321            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14322            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14323            //   envelope_size bytes, there is always sufficient room.
14324            fidl::encoding::encode_in_envelope_optional::<PhysicalLayer, D>(
14325                self.phy.as_ref().map(<PhysicalLayer as fidl::encoding::ValueTypeMarker>::borrow),
14326                encoder,
14327                offset + cur_offset,
14328                depth,
14329            )?;
14330
14331            _prev_end_offset = cur_offset + envelope_size;
14332            if 7 > max_ordinal {
14333                return Ok(());
14334            }
14335
14336            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14337            // are envelope_size bytes.
14338            let cur_offset: usize = (7 - 1) * envelope_size;
14339
14340            // Zero reserved fields.
14341            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14342
14343            // Safety:
14344            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14345            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14346            //   envelope_size bytes, there is always sufficient room.
14347            fidl::encoding::encode_in_envelope_optional::<u16, D>(
14348                self.periodic_advertising_interval
14349                    .as_ref()
14350                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
14351                encoder,
14352                offset + cur_offset,
14353                depth,
14354            )?;
14355
14356            _prev_end_offset = cur_offset + envelope_size;
14357
14358            Ok(())
14359        }
14360    }
14361
14362    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14363        for PeriodicAdvertisingSyncOnEstablishedRequest
14364    {
14365        #[inline(always)]
14366        fn new_empty() -> Self {
14367            Self::default()
14368        }
14369
14370        unsafe fn decode(
14371            &mut self,
14372            decoder: &mut fidl::encoding::Decoder<'_, D>,
14373            offset: usize,
14374            mut depth: fidl::encoding::Depth,
14375        ) -> fidl::Result<()> {
14376            decoder.debug_check_bounds::<Self>(offset);
14377            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14378                None => return Err(fidl::Error::NotNullable),
14379                Some(len) => len,
14380            };
14381            // Calling decoder.out_of_line_offset(0) is not allowed.
14382            if len == 0 {
14383                return Ok(());
14384            };
14385            depth.increment()?;
14386            let envelope_size = 8;
14387            let bytes_len = len * envelope_size;
14388            let offset = decoder.out_of_line_offset(bytes_len)?;
14389            // Decode the envelope for each type.
14390            let mut _next_ordinal_to_read = 0;
14391            let mut next_offset = offset;
14392            let end_offset = offset + bytes_len;
14393            _next_ordinal_to_read += 1;
14394            if next_offset >= end_offset {
14395                return Ok(());
14396            }
14397
14398            // Decode unknown envelopes for gaps in ordinals.
14399            while _next_ordinal_to_read < 1 {
14400                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14401                _next_ordinal_to_read += 1;
14402                next_offset += envelope_size;
14403            }
14404
14405            let next_out_of_line = decoder.next_out_of_line();
14406            let handles_before = decoder.remaining_handles();
14407            if let Some((inlined, num_bytes, num_handles)) =
14408                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14409            {
14410                let member_inline_size =
14411                    <PeriodicAdvertisingSyncId as fidl::encoding::TypeMarker>::inline_size(
14412                        decoder.context,
14413                    );
14414                if inlined != (member_inline_size <= 4) {
14415                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14416                }
14417                let inner_offset;
14418                let mut inner_depth = depth.clone();
14419                if inlined {
14420                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14421                    inner_offset = next_offset;
14422                } else {
14423                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14424                    inner_depth.increment()?;
14425                }
14426                let val_ref =
14427                    self.id.get_or_insert_with(|| fidl::new_empty!(PeriodicAdvertisingSyncId, D));
14428                fidl::decode!(
14429                    PeriodicAdvertisingSyncId,
14430                    D,
14431                    val_ref,
14432                    decoder,
14433                    inner_offset,
14434                    inner_depth
14435                )?;
14436                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14437                {
14438                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14439                }
14440                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14441                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14442                }
14443            }
14444
14445            next_offset += envelope_size;
14446            _next_ordinal_to_read += 1;
14447            if next_offset >= end_offset {
14448                return Ok(());
14449            }
14450
14451            // Decode unknown envelopes for gaps in ordinals.
14452            while _next_ordinal_to_read < 2 {
14453                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14454                _next_ordinal_to_read += 1;
14455                next_offset += envelope_size;
14456            }
14457
14458            let next_out_of_line = decoder.next_out_of_line();
14459            let handles_before = decoder.remaining_handles();
14460            if let Some((inlined, num_bytes, num_handles)) =
14461                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14462            {
14463                let member_inline_size =
14464                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14465                if inlined != (member_inline_size <= 4) {
14466                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14467                }
14468                let inner_offset;
14469                let mut inner_depth = depth.clone();
14470                if inlined {
14471                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14472                    inner_offset = next_offset;
14473                } else {
14474                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14475                    inner_depth.increment()?;
14476                }
14477                let val_ref = self.subevents_count.get_or_insert_with(|| fidl::new_empty!(u8, D));
14478                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14479                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14480                {
14481                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14482                }
14483                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14484                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14485                }
14486            }
14487
14488            next_offset += envelope_size;
14489            _next_ordinal_to_read += 1;
14490            if next_offset >= end_offset {
14491                return Ok(());
14492            }
14493
14494            // Decode unknown envelopes for gaps in ordinals.
14495            while _next_ordinal_to_read < 3 {
14496                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14497                _next_ordinal_to_read += 1;
14498                next_offset += envelope_size;
14499            }
14500
14501            let next_out_of_line = decoder.next_out_of_line();
14502            let handles_before = decoder.remaining_handles();
14503            if let Some((inlined, num_bytes, num_handles)) =
14504                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14505            {
14506                let member_inline_size = <fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14507                if inlined != (member_inline_size <= 4) {
14508                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14509                }
14510                let inner_offset;
14511                let mut inner_depth = depth.clone();
14512                if inlined {
14513                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14514                    inner_offset = next_offset;
14515                } else {
14516                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14517                    inner_depth.increment()?;
14518                }
14519                let val_ref = self.peer_id.get_or_insert_with(|| {
14520                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::PeerId, D)
14521                });
14522                fidl::decode!(
14523                    fidl_fuchsia_bluetooth_common::PeerId,
14524                    D,
14525                    val_ref,
14526                    decoder,
14527                    inner_offset,
14528                    inner_depth
14529                )?;
14530                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14531                {
14532                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14533                }
14534                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14535                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14536                }
14537            }
14538
14539            next_offset += envelope_size;
14540            _next_ordinal_to_read += 1;
14541            if next_offset >= end_offset {
14542                return Ok(());
14543            }
14544
14545            // Decode unknown envelopes for gaps in ordinals.
14546            while _next_ordinal_to_read < 4 {
14547                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14548                _next_ordinal_to_read += 1;
14549                next_offset += envelope_size;
14550            }
14551
14552            let next_out_of_line = decoder.next_out_of_line();
14553            let handles_before = decoder.remaining_handles();
14554            if let Some((inlined, num_bytes, num_handles)) =
14555                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14556            {
14557                let member_inline_size =
14558                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14559                if inlined != (member_inline_size <= 4) {
14560                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14561                }
14562                let inner_offset;
14563                let mut inner_depth = depth.clone();
14564                if inlined {
14565                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14566                    inner_offset = next_offset;
14567                } else {
14568                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14569                    inner_depth.increment()?;
14570                }
14571                let val_ref = self.service_data.get_or_insert_with(|| fidl::new_empty!(u16, D));
14572                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
14573                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14574                {
14575                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14576                }
14577                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14578                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14579                }
14580            }
14581
14582            next_offset += envelope_size;
14583            _next_ordinal_to_read += 1;
14584            if next_offset >= end_offset {
14585                return Ok(());
14586            }
14587
14588            // Decode unknown envelopes for gaps in ordinals.
14589            while _next_ordinal_to_read < 5 {
14590                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14591                _next_ordinal_to_read += 1;
14592                next_offset += envelope_size;
14593            }
14594
14595            let next_out_of_line = decoder.next_out_of_line();
14596            let handles_before = decoder.remaining_handles();
14597            if let Some((inlined, num_bytes, num_handles)) =
14598                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14599            {
14600                let member_inline_size =
14601                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14602                if inlined != (member_inline_size <= 4) {
14603                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14604                }
14605                let inner_offset;
14606                let mut inner_depth = depth.clone();
14607                if inlined {
14608                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14609                    inner_offset = next_offset;
14610                } else {
14611                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14612                    inner_depth.increment()?;
14613                }
14614                let val_ref = self.advertising_sid.get_or_insert_with(|| fidl::new_empty!(u8, D));
14615                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14616                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14617                {
14618                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14619                }
14620                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14621                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14622                }
14623            }
14624
14625            next_offset += envelope_size;
14626            _next_ordinal_to_read += 1;
14627            if next_offset >= end_offset {
14628                return Ok(());
14629            }
14630
14631            // Decode unknown envelopes for gaps in ordinals.
14632            while _next_ordinal_to_read < 6 {
14633                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14634                _next_ordinal_to_read += 1;
14635                next_offset += envelope_size;
14636            }
14637
14638            let next_out_of_line = decoder.next_out_of_line();
14639            let handles_before = decoder.remaining_handles();
14640            if let Some((inlined, num_bytes, num_handles)) =
14641                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14642            {
14643                let member_inline_size =
14644                    <PhysicalLayer as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14645                if inlined != (member_inline_size <= 4) {
14646                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14647                }
14648                let inner_offset;
14649                let mut inner_depth = depth.clone();
14650                if inlined {
14651                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14652                    inner_offset = next_offset;
14653                } else {
14654                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14655                    inner_depth.increment()?;
14656                }
14657                let val_ref = self.phy.get_or_insert_with(|| fidl::new_empty!(PhysicalLayer, D));
14658                fidl::decode!(PhysicalLayer, D, val_ref, decoder, inner_offset, inner_depth)?;
14659                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14660                {
14661                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14662                }
14663                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14664                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14665                }
14666            }
14667
14668            next_offset += envelope_size;
14669            _next_ordinal_to_read += 1;
14670            if next_offset >= end_offset {
14671                return Ok(());
14672            }
14673
14674            // Decode unknown envelopes for gaps in ordinals.
14675            while _next_ordinal_to_read < 7 {
14676                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14677                _next_ordinal_to_read += 1;
14678                next_offset += envelope_size;
14679            }
14680
14681            let next_out_of_line = decoder.next_out_of_line();
14682            let handles_before = decoder.remaining_handles();
14683            if let Some((inlined, num_bytes, num_handles)) =
14684                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14685            {
14686                let member_inline_size =
14687                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14688                if inlined != (member_inline_size <= 4) {
14689                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14690                }
14691                let inner_offset;
14692                let mut inner_depth = depth.clone();
14693                if inlined {
14694                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14695                    inner_offset = next_offset;
14696                } else {
14697                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14698                    inner_depth.increment()?;
14699                }
14700                let val_ref = self
14701                    .periodic_advertising_interval
14702                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
14703                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
14704                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14705                {
14706                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14707                }
14708                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14709                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14710                }
14711            }
14712
14713            next_offset += envelope_size;
14714
14715            // Decode the remaining unknown envelopes.
14716            while next_offset < end_offset {
14717                _next_ordinal_to_read += 1;
14718                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14719                next_offset += envelope_size;
14720            }
14721
14722            Ok(())
14723        }
14724    }
14725
14726    impl PeriodicAdvertisingSyncSyncToSubeventsRequest {
14727        #[inline(always)]
14728        fn max_ordinal_present(&self) -> u64 {
14729            if let Some(_) = self.subevents {
14730                return 1;
14731            }
14732            0
14733        }
14734    }
14735
14736    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncSyncToSubeventsRequest {
14737        type Borrowed<'a> = &'a Self;
14738        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14739            value
14740        }
14741    }
14742
14743    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncSyncToSubeventsRequest {
14744        type Owned = Self;
14745
14746        #[inline(always)]
14747        fn inline_align(_context: fidl::encoding::Context) -> usize {
14748            8
14749        }
14750
14751        #[inline(always)]
14752        fn inline_size(_context: fidl::encoding::Context) -> usize {
14753            16
14754        }
14755    }
14756
14757    unsafe impl<D: fidl::encoding::ResourceDialect>
14758        fidl::encoding::Encode<PeriodicAdvertisingSyncSyncToSubeventsRequest, D>
14759        for &PeriodicAdvertisingSyncSyncToSubeventsRequest
14760    {
14761        unsafe fn encode(
14762            self,
14763            encoder: &mut fidl::encoding::Encoder<'_, D>,
14764            offset: usize,
14765            mut depth: fidl::encoding::Depth,
14766        ) -> fidl::Result<()> {
14767            encoder.debug_check_bounds::<PeriodicAdvertisingSyncSyncToSubeventsRequest>(offset);
14768            // Vector header
14769            let max_ordinal: u64 = self.max_ordinal_present();
14770            encoder.write_num(max_ordinal, offset);
14771            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14772            // Calling encoder.out_of_line_offset(0) is not allowed.
14773            if max_ordinal == 0 {
14774                return Ok(());
14775            }
14776            depth.increment()?;
14777            let envelope_size = 8;
14778            let bytes_len = max_ordinal as usize * envelope_size;
14779            #[allow(unused_variables)]
14780            let offset = encoder.out_of_line_offset(bytes_len);
14781            let mut _prev_end_offset: usize = 0;
14782            if 1 > max_ordinal {
14783                return Ok(());
14784            }
14785
14786            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14787            // are envelope_size bytes.
14788            let cur_offset: usize = (1 - 1) * envelope_size;
14789
14790            // Zero reserved fields.
14791            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14792
14793            // Safety:
14794            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14795            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14796            //   envelope_size bytes, there is always sufficient room.
14797            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 128>, D>(
14798                self.subevents.as_ref().map(
14799                    <fidl::encoding::Vector<u8, 128> as fidl::encoding::ValueTypeMarker>::borrow,
14800                ),
14801                encoder,
14802                offset + cur_offset,
14803                depth,
14804            )?;
14805
14806            _prev_end_offset = cur_offset + envelope_size;
14807
14808            Ok(())
14809        }
14810    }
14811
14812    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14813        for PeriodicAdvertisingSyncSyncToSubeventsRequest
14814    {
14815        #[inline(always)]
14816        fn new_empty() -> Self {
14817            Self::default()
14818        }
14819
14820        unsafe fn decode(
14821            &mut self,
14822            decoder: &mut fidl::encoding::Decoder<'_, D>,
14823            offset: usize,
14824            mut depth: fidl::encoding::Depth,
14825        ) -> fidl::Result<()> {
14826            decoder.debug_check_bounds::<Self>(offset);
14827            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14828                None => return Err(fidl::Error::NotNullable),
14829                Some(len) => len,
14830            };
14831            // Calling decoder.out_of_line_offset(0) is not allowed.
14832            if len == 0 {
14833                return Ok(());
14834            };
14835            depth.increment()?;
14836            let envelope_size = 8;
14837            let bytes_len = len * envelope_size;
14838            let offset = decoder.out_of_line_offset(bytes_len)?;
14839            // Decode the envelope for each type.
14840            let mut _next_ordinal_to_read = 0;
14841            let mut next_offset = offset;
14842            let end_offset = offset + bytes_len;
14843            _next_ordinal_to_read += 1;
14844            if next_offset >= end_offset {
14845                return Ok(());
14846            }
14847
14848            // Decode unknown envelopes for gaps in ordinals.
14849            while _next_ordinal_to_read < 1 {
14850                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14851                _next_ordinal_to_read += 1;
14852                next_offset += envelope_size;
14853            }
14854
14855            let next_out_of_line = decoder.next_out_of_line();
14856            let handles_before = decoder.remaining_handles();
14857            if let Some((inlined, num_bytes, num_handles)) =
14858                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14859            {
14860                let member_inline_size =
14861                    <fidl::encoding::Vector<u8, 128> as fidl::encoding::TypeMarker>::inline_size(
14862                        decoder.context,
14863                    );
14864                if inlined != (member_inline_size <= 4) {
14865                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14866                }
14867                let inner_offset;
14868                let mut inner_depth = depth.clone();
14869                if inlined {
14870                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14871                    inner_offset = next_offset;
14872                } else {
14873                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14874                    inner_depth.increment()?;
14875                }
14876                let val_ref = self
14877                    .subevents
14878                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 128>, D));
14879                fidl::decode!(fidl::encoding::Vector<u8, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
14880                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14881                {
14882                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14883                }
14884                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14885                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14886                }
14887            }
14888
14889            next_offset += envelope_size;
14890
14891            // Decode the remaining unknown envelopes.
14892            while next_offset < end_offset {
14893                _next_ordinal_to_read += 1;
14894                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14895                next_offset += envelope_size;
14896            }
14897
14898            Ok(())
14899        }
14900    }
14901
14902    impl PeriodicAdvertisingSyncWatchAdvertisingReportResponse {
14903        #[inline(always)]
14904        fn max_ordinal_present(&self) -> u64 {
14905            if let Some(_) = self.reports {
14906                return 1;
14907            }
14908            0
14909        }
14910    }
14911
14912    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncWatchAdvertisingReportResponse {
14913        type Borrowed<'a> = &'a Self;
14914        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14915            value
14916        }
14917    }
14918
14919    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncWatchAdvertisingReportResponse {
14920        type Owned = Self;
14921
14922        #[inline(always)]
14923        fn inline_align(_context: fidl::encoding::Context) -> usize {
14924            8
14925        }
14926
14927        #[inline(always)]
14928        fn inline_size(_context: fidl::encoding::Context) -> usize {
14929            16
14930        }
14931    }
14932
14933    unsafe impl<D: fidl::encoding::ResourceDialect>
14934        fidl::encoding::Encode<PeriodicAdvertisingSyncWatchAdvertisingReportResponse, D>
14935        for &PeriodicAdvertisingSyncWatchAdvertisingReportResponse
14936    {
14937        unsafe fn encode(
14938            self,
14939            encoder: &mut fidl::encoding::Encoder<'_, D>,
14940            offset: usize,
14941            mut depth: fidl::encoding::Depth,
14942        ) -> fidl::Result<()> {
14943            encoder.debug_check_bounds::<PeriodicAdvertisingSyncWatchAdvertisingReportResponse>(
14944                offset,
14945            );
14946            // Vector header
14947            let max_ordinal: u64 = self.max_ordinal_present();
14948            encoder.write_num(max_ordinal, offset);
14949            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14950            // Calling encoder.out_of_line_offset(0) is not allowed.
14951            if max_ordinal == 0 {
14952                return Ok(());
14953            }
14954            depth.increment()?;
14955            let envelope_size = 8;
14956            let bytes_len = max_ordinal as usize * envelope_size;
14957            #[allow(unused_variables)]
14958            let offset = encoder.out_of_line_offset(bytes_len);
14959            let mut _prev_end_offset: usize = 0;
14960            if 1 > max_ordinal {
14961                return Ok(());
14962            }
14963
14964            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14965            // are envelope_size bytes.
14966            let cur_offset: usize = (1 - 1) * envelope_size;
14967
14968            // Zero reserved fields.
14969            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14970
14971            // Safety:
14972            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14973            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14974            //   envelope_size bytes, there is always sufficient room.
14975            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<SyncReport>, D>(
14976            self.reports.as_ref().map(<fidl::encoding::UnboundedVector<SyncReport> as fidl::encoding::ValueTypeMarker>::borrow),
14977            encoder, offset + cur_offset, depth
14978        )?;
14979
14980            _prev_end_offset = cur_offset + envelope_size;
14981
14982            Ok(())
14983        }
14984    }
14985
14986    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14987        for PeriodicAdvertisingSyncWatchAdvertisingReportResponse
14988    {
14989        #[inline(always)]
14990        fn new_empty() -> Self {
14991            Self::default()
14992        }
14993
14994        unsafe fn decode(
14995            &mut self,
14996            decoder: &mut fidl::encoding::Decoder<'_, D>,
14997            offset: usize,
14998            mut depth: fidl::encoding::Depth,
14999        ) -> fidl::Result<()> {
15000            decoder.debug_check_bounds::<Self>(offset);
15001            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15002                None => return Err(fidl::Error::NotNullable),
15003                Some(len) => len,
15004            };
15005            // Calling decoder.out_of_line_offset(0) is not allowed.
15006            if len == 0 {
15007                return Ok(());
15008            };
15009            depth.increment()?;
15010            let envelope_size = 8;
15011            let bytes_len = len * envelope_size;
15012            let offset = decoder.out_of_line_offset(bytes_len)?;
15013            // Decode the envelope for each type.
15014            let mut _next_ordinal_to_read = 0;
15015            let mut next_offset = offset;
15016            let end_offset = offset + bytes_len;
15017            _next_ordinal_to_read += 1;
15018            if next_offset >= end_offset {
15019                return Ok(());
15020            }
15021
15022            // Decode unknown envelopes for gaps in ordinals.
15023            while _next_ordinal_to_read < 1 {
15024                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15025                _next_ordinal_to_read += 1;
15026                next_offset += envelope_size;
15027            }
15028
15029            let next_out_of_line = decoder.next_out_of_line();
15030            let handles_before = decoder.remaining_handles();
15031            if let Some((inlined, num_bytes, num_handles)) =
15032                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15033            {
15034                let member_inline_size = <fidl::encoding::UnboundedVector<SyncReport> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15035                if inlined != (member_inline_size <= 4) {
15036                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15037                }
15038                let inner_offset;
15039                let mut inner_depth = depth.clone();
15040                if inlined {
15041                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15042                    inner_offset = next_offset;
15043                } else {
15044                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15045                    inner_depth.increment()?;
15046                }
15047                let val_ref = self.reports.get_or_insert_with(|| {
15048                    fidl::new_empty!(fidl::encoding::UnboundedVector<SyncReport>, D)
15049                });
15050                fidl::decode!(
15051                    fidl::encoding::UnboundedVector<SyncReport>,
15052                    D,
15053                    val_ref,
15054                    decoder,
15055                    inner_offset,
15056                    inner_depth
15057                )?;
15058                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15059                {
15060                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15061                }
15062                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15063                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15064                }
15065            }
15066
15067            next_offset += envelope_size;
15068
15069            // Decode the remaining unknown envelopes.
15070            while next_offset < end_offset {
15071                _next_ordinal_to_read += 1;
15072                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15073                next_offset += envelope_size;
15074            }
15075
15076            Ok(())
15077        }
15078    }
15079
15080    impl ScanData {
15081        #[inline(always)]
15082        fn max_ordinal_present(&self) -> u64 {
15083            if let Some(_) = self.broadcast_name {
15084                return 9;
15085            }
15086            if let Some(_) = self.resolvable_set_identifier {
15087                return 8;
15088            }
15089            if let Some(_) = self.timestamp {
15090                return 7;
15091            }
15092            if let Some(_) = self.uris {
15093                return 6;
15094            }
15095            if let Some(_) = self.manufacturer_data {
15096                return 5;
15097            }
15098            if let Some(_) = self.service_data {
15099                return 4;
15100            }
15101            if let Some(_) = self.service_uuids {
15102                return 3;
15103            }
15104            if let Some(_) = self.appearance {
15105                return 2;
15106            }
15107            if let Some(_) = self.tx_power {
15108                return 1;
15109            }
15110            0
15111        }
15112    }
15113
15114    impl fidl::encoding::ValueTypeMarker for ScanData {
15115        type Borrowed<'a> = &'a Self;
15116        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15117            value
15118        }
15119    }
15120
15121    unsafe impl fidl::encoding::TypeMarker for ScanData {
15122        type Owned = Self;
15123
15124        #[inline(always)]
15125        fn inline_align(_context: fidl::encoding::Context) -> usize {
15126            8
15127        }
15128
15129        #[inline(always)]
15130        fn inline_size(_context: fidl::encoding::Context) -> usize {
15131            16
15132        }
15133    }
15134
15135    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanData, D> for &ScanData {
15136        unsafe fn encode(
15137            self,
15138            encoder: &mut fidl::encoding::Encoder<'_, D>,
15139            offset: usize,
15140            mut depth: fidl::encoding::Depth,
15141        ) -> fidl::Result<()> {
15142            encoder.debug_check_bounds::<ScanData>(offset);
15143            // Vector header
15144            let max_ordinal: u64 = self.max_ordinal_present();
15145            encoder.write_num(max_ordinal, offset);
15146            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15147            // Calling encoder.out_of_line_offset(0) is not allowed.
15148            if max_ordinal == 0 {
15149                return Ok(());
15150            }
15151            depth.increment()?;
15152            let envelope_size = 8;
15153            let bytes_len = max_ordinal as usize * envelope_size;
15154            #[allow(unused_variables)]
15155            let offset = encoder.out_of_line_offset(bytes_len);
15156            let mut _prev_end_offset: usize = 0;
15157            if 1 > max_ordinal {
15158                return Ok(());
15159            }
15160
15161            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15162            // are envelope_size bytes.
15163            let cur_offset: usize = (1 - 1) * envelope_size;
15164
15165            // Zero reserved fields.
15166            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15167
15168            // Safety:
15169            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15170            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15171            //   envelope_size bytes, there is always sufficient room.
15172            fidl::encoding::encode_in_envelope_optional::<i8, D>(
15173                self.tx_power.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
15174                encoder,
15175                offset + cur_offset,
15176                depth,
15177            )?;
15178
15179            _prev_end_offset = cur_offset + envelope_size;
15180            if 2 > max_ordinal {
15181                return Ok(());
15182            }
15183
15184            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15185            // are envelope_size bytes.
15186            let cur_offset: usize = (2 - 1) * envelope_size;
15187
15188            // Zero reserved fields.
15189            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15190
15191            // Safety:
15192            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15193            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15194            //   envelope_size bytes, there is always sufficient room.
15195            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::Appearance, D>(
15196            self.appearance.as_ref().map(<fidl_fuchsia_bluetooth_common::Appearance as fidl::encoding::ValueTypeMarker>::borrow),
15197            encoder, offset + cur_offset, depth
15198        )?;
15199
15200            _prev_end_offset = cur_offset + envelope_size;
15201            if 3 > max_ordinal {
15202                return Ok(());
15203            }
15204
15205            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15206            // are envelope_size bytes.
15207            let cur_offset: usize = (3 - 1) * envelope_size;
15208
15209            // Zero reserved fields.
15210            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15211
15212            // Safety:
15213            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15214            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15215            //   envelope_size bytes, there is always sufficient room.
15216            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_common::Uuid>, D>(
15217            self.service_uuids.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_common::Uuid> as fidl::encoding::ValueTypeMarker>::borrow),
15218            encoder, offset + cur_offset, depth
15219        )?;
15220
15221            _prev_end_offset = cur_offset + envelope_size;
15222            if 4 > max_ordinal {
15223                return Ok(());
15224            }
15225
15226            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15227            // are envelope_size bytes.
15228            let cur_offset: usize = (4 - 1) * envelope_size;
15229
15230            // Zero reserved fields.
15231            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15232
15233            // Safety:
15234            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15235            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15236            //   envelope_size bytes, there is always sufficient room.
15237            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ServiceData>, D>(
15238            self.service_data.as_ref().map(<fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::ValueTypeMarker>::borrow),
15239            encoder, offset + cur_offset, depth
15240        )?;
15241
15242            _prev_end_offset = cur_offset + envelope_size;
15243            if 5 > max_ordinal {
15244                return Ok(());
15245            }
15246
15247            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15248            // are envelope_size bytes.
15249            let cur_offset: usize = (5 - 1) * envelope_size;
15250
15251            // Zero reserved fields.
15252            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15253
15254            // Safety:
15255            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15256            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15257            //   envelope_size bytes, there is always sufficient room.
15258            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ManufacturerData>, D>(
15259            self.manufacturer_data.as_ref().map(<fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::ValueTypeMarker>::borrow),
15260            encoder, offset + cur_offset, depth
15261        )?;
15262
15263            _prev_end_offset = cur_offset + envelope_size;
15264            if 6 > max_ordinal {
15265                return Ok(());
15266            }
15267
15268            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15269            // are envelope_size bytes.
15270            let cur_offset: usize = (6 - 1) * envelope_size;
15271
15272            // Zero reserved fields.
15273            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15274
15275            // Safety:
15276            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15277            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15278            //   envelope_size bytes, there is always sufficient room.
15279            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>, D>(
15280            self.uris.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>> as fidl::encoding::ValueTypeMarker>::borrow),
15281            encoder, offset + cur_offset, depth
15282        )?;
15283
15284            _prev_end_offset = cur_offset + envelope_size;
15285            if 7 > max_ordinal {
15286                return Ok(());
15287            }
15288
15289            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15290            // are envelope_size bytes.
15291            let cur_offset: usize = (7 - 1) * envelope_size;
15292
15293            // Zero reserved fields.
15294            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15295
15296            // Safety:
15297            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15298            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15299            //   envelope_size bytes, there is always sufficient room.
15300            fidl::encoding::encode_in_envelope_optional::<i64, D>(
15301                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
15302                encoder,
15303                offset + cur_offset,
15304                depth,
15305            )?;
15306
15307            _prev_end_offset = cur_offset + envelope_size;
15308            if 8 > max_ordinal {
15309                return Ok(());
15310            }
15311
15312            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15313            // are envelope_size bytes.
15314            let cur_offset: usize = (8 - 1) * envelope_size;
15315
15316            // Zero reserved fields.
15317            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15318
15319            // Safety:
15320            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15321            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15322            //   envelope_size bytes, there is always sufficient room.
15323            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
15324                self.resolvable_set_identifier
15325                    .as_ref()
15326                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
15327                encoder,
15328                offset + cur_offset,
15329                depth,
15330            )?;
15331
15332            _prev_end_offset = cur_offset + envelope_size;
15333            if 9 > max_ordinal {
15334                return Ok(());
15335            }
15336
15337            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15338            // are envelope_size bytes.
15339            let cur_offset: usize = (9 - 1) * envelope_size;
15340
15341            // Zero reserved fields.
15342            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15343
15344            // Safety:
15345            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15346            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15347            //   envelope_size bytes, there is always sufficient room.
15348            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
15349                self.broadcast_name.as_ref().map(
15350                    <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
15351                ),
15352                encoder,
15353                offset + cur_offset,
15354                depth,
15355            )?;
15356
15357            _prev_end_offset = cur_offset + envelope_size;
15358
15359            Ok(())
15360        }
15361    }
15362
15363    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanData {
15364        #[inline(always)]
15365        fn new_empty() -> Self {
15366            Self::default()
15367        }
15368
15369        unsafe fn decode(
15370            &mut self,
15371            decoder: &mut fidl::encoding::Decoder<'_, D>,
15372            offset: usize,
15373            mut depth: fidl::encoding::Depth,
15374        ) -> fidl::Result<()> {
15375            decoder.debug_check_bounds::<Self>(offset);
15376            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15377                None => return Err(fidl::Error::NotNullable),
15378                Some(len) => len,
15379            };
15380            // Calling decoder.out_of_line_offset(0) is not allowed.
15381            if len == 0 {
15382                return Ok(());
15383            };
15384            depth.increment()?;
15385            let envelope_size = 8;
15386            let bytes_len = len * envelope_size;
15387            let offset = decoder.out_of_line_offset(bytes_len)?;
15388            // Decode the envelope for each type.
15389            let mut _next_ordinal_to_read = 0;
15390            let mut next_offset = offset;
15391            let end_offset = offset + bytes_len;
15392            _next_ordinal_to_read += 1;
15393            if next_offset >= end_offset {
15394                return Ok(());
15395            }
15396
15397            // Decode unknown envelopes for gaps in ordinals.
15398            while _next_ordinal_to_read < 1 {
15399                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15400                _next_ordinal_to_read += 1;
15401                next_offset += envelope_size;
15402            }
15403
15404            let next_out_of_line = decoder.next_out_of_line();
15405            let handles_before = decoder.remaining_handles();
15406            if let Some((inlined, num_bytes, num_handles)) =
15407                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15408            {
15409                let member_inline_size =
15410                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15411                if inlined != (member_inline_size <= 4) {
15412                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15413                }
15414                let inner_offset;
15415                let mut inner_depth = depth.clone();
15416                if inlined {
15417                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15418                    inner_offset = next_offset;
15419                } else {
15420                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15421                    inner_depth.increment()?;
15422                }
15423                let val_ref = self.tx_power.get_or_insert_with(|| fidl::new_empty!(i8, D));
15424                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
15425                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15426                {
15427                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15428                }
15429                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15430                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15431                }
15432            }
15433
15434            next_offset += envelope_size;
15435            _next_ordinal_to_read += 1;
15436            if next_offset >= end_offset {
15437                return Ok(());
15438            }
15439
15440            // Decode unknown envelopes for gaps in ordinals.
15441            while _next_ordinal_to_read < 2 {
15442                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15443                _next_ordinal_to_read += 1;
15444                next_offset += envelope_size;
15445            }
15446
15447            let next_out_of_line = decoder.next_out_of_line();
15448            let handles_before = decoder.remaining_handles();
15449            if let Some((inlined, num_bytes, num_handles)) =
15450                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15451            {
15452                let member_inline_size = <fidl_fuchsia_bluetooth_common::Appearance as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15453                if inlined != (member_inline_size <= 4) {
15454                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15455                }
15456                let inner_offset;
15457                let mut inner_depth = depth.clone();
15458                if inlined {
15459                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15460                    inner_offset = next_offset;
15461                } else {
15462                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15463                    inner_depth.increment()?;
15464                }
15465                let val_ref = self.appearance.get_or_insert_with(|| {
15466                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::Appearance, D)
15467                });
15468                fidl::decode!(
15469                    fidl_fuchsia_bluetooth_common::Appearance,
15470                    D,
15471                    val_ref,
15472                    decoder,
15473                    inner_offset,
15474                    inner_depth
15475                )?;
15476                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15477                {
15478                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15479                }
15480                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15481                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15482                }
15483            }
15484
15485            next_offset += envelope_size;
15486            _next_ordinal_to_read += 1;
15487            if next_offset >= end_offset {
15488                return Ok(());
15489            }
15490
15491            // Decode unknown envelopes for gaps in ordinals.
15492            while _next_ordinal_to_read < 3 {
15493                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15494                _next_ordinal_to_read += 1;
15495                next_offset += envelope_size;
15496            }
15497
15498            let next_out_of_line = decoder.next_out_of_line();
15499            let handles_before = decoder.remaining_handles();
15500            if let Some((inlined, num_bytes, num_handles)) =
15501                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15502            {
15503                let member_inline_size = <fidl::encoding::UnboundedVector<
15504                    fidl_fuchsia_bluetooth_common::Uuid,
15505                > as fidl::encoding::TypeMarker>::inline_size(
15506                    decoder.context
15507                );
15508                if inlined != (member_inline_size <= 4) {
15509                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15510                }
15511                let inner_offset;
15512                let mut inner_depth = depth.clone();
15513                if inlined {
15514                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15515                    inner_offset = next_offset;
15516                } else {
15517                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15518                    inner_depth.increment()?;
15519                }
15520                let val_ref = self.service_uuids.get_or_insert_with(|| {
15521                    fidl::new_empty!(
15522                        fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_common::Uuid>,
15523                        D
15524                    )
15525                });
15526                fidl::decode!(
15527                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_common::Uuid>,
15528                    D,
15529                    val_ref,
15530                    decoder,
15531                    inner_offset,
15532                    inner_depth
15533                )?;
15534                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15535                {
15536                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15537                }
15538                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15539                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15540                }
15541            }
15542
15543            next_offset += envelope_size;
15544            _next_ordinal_to_read += 1;
15545            if next_offset >= end_offset {
15546                return Ok(());
15547            }
15548
15549            // Decode unknown envelopes for gaps in ordinals.
15550            while _next_ordinal_to_read < 4 {
15551                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15552                _next_ordinal_to_read += 1;
15553                next_offset += envelope_size;
15554            }
15555
15556            let next_out_of_line = decoder.next_out_of_line();
15557            let handles_before = decoder.remaining_handles();
15558            if let Some((inlined, num_bytes, num_handles)) =
15559                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15560            {
15561                let member_inline_size = <fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15562                if inlined != (member_inline_size <= 4) {
15563                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15564                }
15565                let inner_offset;
15566                let mut inner_depth = depth.clone();
15567                if inlined {
15568                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15569                    inner_offset = next_offset;
15570                } else {
15571                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15572                    inner_depth.increment()?;
15573                }
15574                let val_ref = self.service_data.get_or_insert_with(|| {
15575                    fidl::new_empty!(fidl::encoding::UnboundedVector<ServiceData>, D)
15576                });
15577                fidl::decode!(
15578                    fidl::encoding::UnboundedVector<ServiceData>,
15579                    D,
15580                    val_ref,
15581                    decoder,
15582                    inner_offset,
15583                    inner_depth
15584                )?;
15585                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15586                {
15587                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15588                }
15589                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15590                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15591                }
15592            }
15593
15594            next_offset += envelope_size;
15595            _next_ordinal_to_read += 1;
15596            if next_offset >= end_offset {
15597                return Ok(());
15598            }
15599
15600            // Decode unknown envelopes for gaps in ordinals.
15601            while _next_ordinal_to_read < 5 {
15602                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15603                _next_ordinal_to_read += 1;
15604                next_offset += envelope_size;
15605            }
15606
15607            let next_out_of_line = decoder.next_out_of_line();
15608            let handles_before = decoder.remaining_handles();
15609            if let Some((inlined, num_bytes, num_handles)) =
15610                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15611            {
15612                let member_inline_size = <fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15613                if inlined != (member_inline_size <= 4) {
15614                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15615                }
15616                let inner_offset;
15617                let mut inner_depth = depth.clone();
15618                if inlined {
15619                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15620                    inner_offset = next_offset;
15621                } else {
15622                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15623                    inner_depth.increment()?;
15624                }
15625                let val_ref = self.manufacturer_data.get_or_insert_with(|| {
15626                    fidl::new_empty!(fidl::encoding::UnboundedVector<ManufacturerData>, D)
15627                });
15628                fidl::decode!(
15629                    fidl::encoding::UnboundedVector<ManufacturerData>,
15630                    D,
15631                    val_ref,
15632                    decoder,
15633                    inner_offset,
15634                    inner_depth
15635                )?;
15636                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15637                {
15638                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15639                }
15640                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15641                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15642                }
15643            }
15644
15645            next_offset += envelope_size;
15646            _next_ordinal_to_read += 1;
15647            if next_offset >= end_offset {
15648                return Ok(());
15649            }
15650
15651            // Decode unknown envelopes for gaps in ordinals.
15652            while _next_ordinal_to_read < 6 {
15653                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15654                _next_ordinal_to_read += 1;
15655                next_offset += envelope_size;
15656            }
15657
15658            let next_out_of_line = decoder.next_out_of_line();
15659            let handles_before = decoder.remaining_handles();
15660            if let Some((inlined, num_bytes, num_handles)) =
15661                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15662            {
15663                let member_inline_size = <fidl::encoding::UnboundedVector<
15664                    fidl::encoding::BoundedString<278>,
15665                > as fidl::encoding::TypeMarker>::inline_size(
15666                    decoder.context
15667                );
15668                if inlined != (member_inline_size <= 4) {
15669                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15670                }
15671                let inner_offset;
15672                let mut inner_depth = depth.clone();
15673                if inlined {
15674                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15675                    inner_offset = next_offset;
15676                } else {
15677                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15678                    inner_depth.increment()?;
15679                }
15680                let val_ref = self.uris.get_or_insert_with(|| {
15681                    fidl::new_empty!(
15682                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
15683                        D
15684                    )
15685                });
15686                fidl::decode!(
15687                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
15688                    D,
15689                    val_ref,
15690                    decoder,
15691                    inner_offset,
15692                    inner_depth
15693                )?;
15694                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15695                {
15696                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15697                }
15698                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15699                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15700                }
15701            }
15702
15703            next_offset += envelope_size;
15704            _next_ordinal_to_read += 1;
15705            if next_offset >= end_offset {
15706                return Ok(());
15707            }
15708
15709            // Decode unknown envelopes for gaps in ordinals.
15710            while _next_ordinal_to_read < 7 {
15711                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15712                _next_ordinal_to_read += 1;
15713                next_offset += envelope_size;
15714            }
15715
15716            let next_out_of_line = decoder.next_out_of_line();
15717            let handles_before = decoder.remaining_handles();
15718            if let Some((inlined, num_bytes, num_handles)) =
15719                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15720            {
15721                let member_inline_size =
15722                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15723                if inlined != (member_inline_size <= 4) {
15724                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15725                }
15726                let inner_offset;
15727                let mut inner_depth = depth.clone();
15728                if inlined {
15729                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15730                    inner_offset = next_offset;
15731                } else {
15732                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15733                    inner_depth.increment()?;
15734                }
15735                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
15736                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
15737                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15738                {
15739                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15740                }
15741                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15742                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15743                }
15744            }
15745
15746            next_offset += envelope_size;
15747            _next_ordinal_to_read += 1;
15748            if next_offset >= end_offset {
15749                return Ok(());
15750            }
15751
15752            // Decode unknown envelopes for gaps in ordinals.
15753            while _next_ordinal_to_read < 8 {
15754                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15755                _next_ordinal_to_read += 1;
15756                next_offset += envelope_size;
15757            }
15758
15759            let next_out_of_line = decoder.next_out_of_line();
15760            let handles_before = decoder.remaining_handles();
15761            if let Some((inlined, num_bytes, num_handles)) =
15762                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15763            {
15764                let member_inline_size =
15765                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
15766                        decoder.context,
15767                    );
15768                if inlined != (member_inline_size <= 4) {
15769                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15770                }
15771                let inner_offset;
15772                let mut inner_depth = depth.clone();
15773                if inlined {
15774                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15775                    inner_offset = next_offset;
15776                } else {
15777                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15778                    inner_depth.increment()?;
15779                }
15780                let val_ref = self
15781                    .resolvable_set_identifier
15782                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
15783                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
15784                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15785                {
15786                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15787                }
15788                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15789                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15790                }
15791            }
15792
15793            next_offset += envelope_size;
15794            _next_ordinal_to_read += 1;
15795            if next_offset >= end_offset {
15796                return Ok(());
15797            }
15798
15799            // Decode unknown envelopes for gaps in ordinals.
15800            while _next_ordinal_to_read < 9 {
15801                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15802                _next_ordinal_to_read += 1;
15803                next_offset += envelope_size;
15804            }
15805
15806            let next_out_of_line = decoder.next_out_of_line();
15807            let handles_before = decoder.remaining_handles();
15808            if let Some((inlined, num_bytes, num_handles)) =
15809                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15810            {
15811                let member_inline_size =
15812                    <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
15813                        decoder.context,
15814                    );
15815                if inlined != (member_inline_size <= 4) {
15816                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15817                }
15818                let inner_offset;
15819                let mut inner_depth = depth.clone();
15820                if inlined {
15821                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15822                    inner_offset = next_offset;
15823                } else {
15824                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15825                    inner_depth.increment()?;
15826                }
15827                let val_ref = self
15828                    .broadcast_name
15829                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
15830                fidl::decode!(
15831                    fidl::encoding::BoundedString<128>,
15832                    D,
15833                    val_ref,
15834                    decoder,
15835                    inner_offset,
15836                    inner_depth
15837                )?;
15838                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15839                {
15840                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15841                }
15842                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15843                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15844                }
15845            }
15846
15847            next_offset += envelope_size;
15848
15849            // Decode the remaining unknown envelopes.
15850            while next_offset < end_offset {
15851                _next_ordinal_to_read += 1;
15852                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15853                next_offset += envelope_size;
15854            }
15855
15856            Ok(())
15857        }
15858    }
15859
15860    impl ScanOptions {
15861        #[inline(always)]
15862        fn max_ordinal_present(&self) -> u64 {
15863            if let Some(_) = self.filters {
15864                return 1;
15865            }
15866            0
15867        }
15868    }
15869
15870    impl fidl::encoding::ValueTypeMarker for ScanOptions {
15871        type Borrowed<'a> = &'a Self;
15872        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15873            value
15874        }
15875    }
15876
15877    unsafe impl fidl::encoding::TypeMarker for ScanOptions {
15878        type Owned = Self;
15879
15880        #[inline(always)]
15881        fn inline_align(_context: fidl::encoding::Context) -> usize {
15882            8
15883        }
15884
15885        #[inline(always)]
15886        fn inline_size(_context: fidl::encoding::Context) -> usize {
15887            16
15888        }
15889    }
15890
15891    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanOptions, D>
15892        for &ScanOptions
15893    {
15894        unsafe fn encode(
15895            self,
15896            encoder: &mut fidl::encoding::Encoder<'_, D>,
15897            offset: usize,
15898            mut depth: fidl::encoding::Depth,
15899        ) -> fidl::Result<()> {
15900            encoder.debug_check_bounds::<ScanOptions>(offset);
15901            // Vector header
15902            let max_ordinal: u64 = self.max_ordinal_present();
15903            encoder.write_num(max_ordinal, offset);
15904            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15905            // Calling encoder.out_of_line_offset(0) is not allowed.
15906            if max_ordinal == 0 {
15907                return Ok(());
15908            }
15909            depth.increment()?;
15910            let envelope_size = 8;
15911            let bytes_len = max_ordinal as usize * envelope_size;
15912            #[allow(unused_variables)]
15913            let offset = encoder.out_of_line_offset(bytes_len);
15914            let mut _prev_end_offset: usize = 0;
15915            if 1 > max_ordinal {
15916                return Ok(());
15917            }
15918
15919            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15920            // are envelope_size bytes.
15921            let cur_offset: usize = (1 - 1) * envelope_size;
15922
15923            // Zero reserved fields.
15924            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15925
15926            // Safety:
15927            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15928            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15929            //   envelope_size bytes, there is always sufficient room.
15930            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Filter>, D>(
15931            self.filters.as_ref().map(<fidl::encoding::UnboundedVector<Filter> as fidl::encoding::ValueTypeMarker>::borrow),
15932            encoder, offset + cur_offset, depth
15933        )?;
15934
15935            _prev_end_offset = cur_offset + envelope_size;
15936
15937            Ok(())
15938        }
15939    }
15940
15941    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanOptions {
15942        #[inline(always)]
15943        fn new_empty() -> Self {
15944            Self::default()
15945        }
15946
15947        unsafe fn decode(
15948            &mut self,
15949            decoder: &mut fidl::encoding::Decoder<'_, D>,
15950            offset: usize,
15951            mut depth: fidl::encoding::Depth,
15952        ) -> fidl::Result<()> {
15953            decoder.debug_check_bounds::<Self>(offset);
15954            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15955                None => return Err(fidl::Error::NotNullable),
15956                Some(len) => len,
15957            };
15958            // Calling decoder.out_of_line_offset(0) is not allowed.
15959            if len == 0 {
15960                return Ok(());
15961            };
15962            depth.increment()?;
15963            let envelope_size = 8;
15964            let bytes_len = len * envelope_size;
15965            let offset = decoder.out_of_line_offset(bytes_len)?;
15966            // Decode the envelope for each type.
15967            let mut _next_ordinal_to_read = 0;
15968            let mut next_offset = offset;
15969            let end_offset = offset + bytes_len;
15970            _next_ordinal_to_read += 1;
15971            if next_offset >= end_offset {
15972                return Ok(());
15973            }
15974
15975            // Decode unknown envelopes for gaps in ordinals.
15976            while _next_ordinal_to_read < 1 {
15977                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15978                _next_ordinal_to_read += 1;
15979                next_offset += envelope_size;
15980            }
15981
15982            let next_out_of_line = decoder.next_out_of_line();
15983            let handles_before = decoder.remaining_handles();
15984            if let Some((inlined, num_bytes, num_handles)) =
15985                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15986            {
15987                let member_inline_size = <fidl::encoding::UnboundedVector<Filter> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15988                if inlined != (member_inline_size <= 4) {
15989                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15990                }
15991                let inner_offset;
15992                let mut inner_depth = depth.clone();
15993                if inlined {
15994                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15995                    inner_offset = next_offset;
15996                } else {
15997                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15998                    inner_depth.increment()?;
15999                }
16000                let val_ref = self.filters.get_or_insert_with(|| {
16001                    fidl::new_empty!(fidl::encoding::UnboundedVector<Filter>, D)
16002                });
16003                fidl::decode!(
16004                    fidl::encoding::UnboundedVector<Filter>,
16005                    D,
16006                    val_ref,
16007                    decoder,
16008                    inner_offset,
16009                    inner_depth
16010                )?;
16011                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
16012                {
16013                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
16014                }
16015                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16016                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16017                }
16018            }
16019
16020            next_offset += envelope_size;
16021
16022            // Decode the remaining unknown envelopes.
16023            while next_offset < end_offset {
16024                _next_ordinal_to_read += 1;
16025                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
16026                next_offset += envelope_size;
16027            }
16028
16029            Ok(())
16030        }
16031    }
16032
16033    impl fidl::encoding::ValueTypeMarker for AdvertisingProcedure {
16034        type Borrowed<'a> = &'a Self;
16035        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16036            value
16037        }
16038    }
16039
16040    unsafe impl fidl::encoding::TypeMarker for AdvertisingProcedure {
16041        type Owned = Self;
16042
16043        #[inline(always)]
16044        fn inline_align(_context: fidl::encoding::Context) -> usize {
16045            8
16046        }
16047
16048        #[inline(always)]
16049        fn inline_size(_context: fidl::encoding::Context) -> usize {
16050            16
16051        }
16052    }
16053
16054    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdvertisingProcedure, D>
16055        for &AdvertisingProcedure
16056    {
16057        #[inline]
16058        unsafe fn encode(
16059            self,
16060            encoder: &mut fidl::encoding::Encoder<'_, D>,
16061            offset: usize,
16062            _depth: fidl::encoding::Depth,
16063        ) -> fidl::Result<()> {
16064            encoder.debug_check_bounds::<AdvertisingProcedure>(offset);
16065            encoder.write_num::<u64>(self.ordinal(), offset);
16066            match self {
16067                AdvertisingProcedure::Legacy(ref val) => {
16068                    fidl::encoding::encode_in_envelope::<Legacy, D>(
16069                        <Legacy as fidl::encoding::ValueTypeMarker>::borrow(val),
16070                        encoder,
16071                        offset + 8,
16072                        _depth,
16073                    )
16074                }
16075                AdvertisingProcedure::Extended(ref val) => {
16076                    fidl::encoding::encode_in_envelope::<Extended, D>(
16077                        <Extended as fidl::encoding::ValueTypeMarker>::borrow(val),
16078                        encoder,
16079                        offset + 8,
16080                        _depth,
16081                    )
16082                }
16083                AdvertisingProcedure::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
16084            }
16085        }
16086    }
16087
16088    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingProcedure {
16089        #[inline(always)]
16090        fn new_empty() -> Self {
16091            Self::__SourceBreaking { unknown_ordinal: 0 }
16092        }
16093
16094        #[inline]
16095        unsafe fn decode(
16096            &mut self,
16097            decoder: &mut fidl::encoding::Decoder<'_, D>,
16098            offset: usize,
16099            mut depth: fidl::encoding::Depth,
16100        ) -> fidl::Result<()> {
16101            decoder.debug_check_bounds::<Self>(offset);
16102            #[allow(unused_variables)]
16103            let next_out_of_line = decoder.next_out_of_line();
16104            let handles_before = decoder.remaining_handles();
16105            let (ordinal, inlined, num_bytes, num_handles) =
16106                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
16107
16108            let member_inline_size = match ordinal {
16109                1 => <Legacy as fidl::encoding::TypeMarker>::inline_size(decoder.context),
16110                2 => <Extended as fidl::encoding::TypeMarker>::inline_size(decoder.context),
16111                0 => return Err(fidl::Error::UnknownUnionTag),
16112                _ => num_bytes as usize,
16113            };
16114
16115            if inlined != (member_inline_size <= 4) {
16116                return Err(fidl::Error::InvalidInlineBitInEnvelope);
16117            }
16118            let _inner_offset;
16119            if inlined {
16120                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
16121                _inner_offset = offset + 8;
16122            } else {
16123                depth.increment()?;
16124                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16125            }
16126            match ordinal {
16127                1 => {
16128                    #[allow(irrefutable_let_patterns)]
16129                    if let AdvertisingProcedure::Legacy(_) = self {
16130                        // Do nothing, read the value into the object
16131                    } else {
16132                        // Initialize `self` to the right variant
16133                        *self = AdvertisingProcedure::Legacy(fidl::new_empty!(Legacy, D));
16134                    }
16135                    #[allow(irrefutable_let_patterns)]
16136                    if let AdvertisingProcedure::Legacy(ref mut val) = self {
16137                        fidl::decode!(Legacy, D, val, decoder, _inner_offset, depth)?;
16138                    } else {
16139                        unreachable!()
16140                    }
16141                }
16142                2 => {
16143                    #[allow(irrefutable_let_patterns)]
16144                    if let AdvertisingProcedure::Extended(_) = self {
16145                        // Do nothing, read the value into the object
16146                    } else {
16147                        // Initialize `self` to the right variant
16148                        *self = AdvertisingProcedure::Extended(fidl::new_empty!(Extended, D));
16149                    }
16150                    #[allow(irrefutable_let_patterns)]
16151                    if let AdvertisingProcedure::Extended(ref mut val) = self {
16152                        fidl::decode!(Extended, D, val, decoder, _inner_offset, depth)?;
16153                    } else {
16154                        unreachable!()
16155                    }
16156                }
16157                #[allow(deprecated)]
16158                ordinal => {
16159                    for _ in 0..num_handles {
16160                        decoder.drop_next_handle()?;
16161                    }
16162                    *self = AdvertisingProcedure::__SourceBreaking { unknown_ordinal: ordinal };
16163                }
16164            }
16165            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
16166                return Err(fidl::Error::InvalidNumBytesInEnvelope);
16167            }
16168            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16169                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16170            }
16171            Ok(())
16172        }
16173    }
16174
16175    impl fidl::encoding::ValueTypeMarker for SyncReport {
16176        type Borrowed<'a> = &'a Self;
16177        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16178            value
16179        }
16180    }
16181
16182    unsafe impl fidl::encoding::TypeMarker for SyncReport {
16183        type Owned = Self;
16184
16185        #[inline(always)]
16186        fn inline_align(_context: fidl::encoding::Context) -> usize {
16187            8
16188        }
16189
16190        #[inline(always)]
16191        fn inline_size(_context: fidl::encoding::Context) -> usize {
16192            16
16193        }
16194    }
16195
16196    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SyncReport, D>
16197        for &SyncReport
16198    {
16199        #[inline]
16200        unsafe fn encode(
16201            self,
16202            encoder: &mut fidl::encoding::Encoder<'_, D>,
16203            offset: usize,
16204            _depth: fidl::encoding::Depth,
16205        ) -> fidl::Result<()> {
16206            encoder.debug_check_bounds::<SyncReport>(offset);
16207            encoder.write_num::<u64>(self.ordinal(), offset);
16208            match self {
16209            SyncReport::PeriodicAdvertisingReport(ref val) => {
16210                fidl::encoding::encode_in_envelope::<PeriodicAdvertisingReport, D>(
16211                    <PeriodicAdvertisingReport as fidl::encoding::ValueTypeMarker>::borrow(val),
16212                    encoder, offset + 8, _depth
16213                )
16214            }
16215            SyncReport::BroadcastIsochronousGroupInfoReport(ref val) => {
16216                fidl::encoding::encode_in_envelope::<BroadcastIsochronousGroupInfoReport, D>(
16217                    <BroadcastIsochronousGroupInfoReport as fidl::encoding::ValueTypeMarker>::borrow(val),
16218                    encoder, offset + 8, _depth
16219                )
16220            }
16221            SyncReport::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
16222        }
16223        }
16224    }
16225
16226    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SyncReport {
16227        #[inline(always)]
16228        fn new_empty() -> Self {
16229            Self::__SourceBreaking { unknown_ordinal: 0 }
16230        }
16231
16232        #[inline]
16233        unsafe fn decode(
16234            &mut self,
16235            decoder: &mut fidl::encoding::Decoder<'_, D>,
16236            offset: usize,
16237            mut depth: fidl::encoding::Depth,
16238        ) -> fidl::Result<()> {
16239            decoder.debug_check_bounds::<Self>(offset);
16240            #[allow(unused_variables)]
16241            let next_out_of_line = decoder.next_out_of_line();
16242            let handles_before = decoder.remaining_handles();
16243            let (ordinal, inlined, num_bytes, num_handles) =
16244                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
16245
16246            let member_inline_size = match ordinal {
16247                1 => <PeriodicAdvertisingReport as fidl::encoding::TypeMarker>::inline_size(
16248                    decoder.context,
16249                ),
16250                2 => {
16251                    <BroadcastIsochronousGroupInfoReport as fidl::encoding::TypeMarker>::inline_size(
16252                        decoder.context,
16253                    )
16254                }
16255                0 => return Err(fidl::Error::UnknownUnionTag),
16256                _ => num_bytes as usize,
16257            };
16258
16259            if inlined != (member_inline_size <= 4) {
16260                return Err(fidl::Error::InvalidInlineBitInEnvelope);
16261            }
16262            let _inner_offset;
16263            if inlined {
16264                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
16265                _inner_offset = offset + 8;
16266            } else {
16267                depth.increment()?;
16268                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
16269            }
16270            match ordinal {
16271                1 => {
16272                    #[allow(irrefutable_let_patterns)]
16273                    if let SyncReport::PeriodicAdvertisingReport(_) = self {
16274                        // Do nothing, read the value into the object
16275                    } else {
16276                        // Initialize `self` to the right variant
16277                        *self = SyncReport::PeriodicAdvertisingReport(fidl::new_empty!(
16278                            PeriodicAdvertisingReport,
16279                            D
16280                        ));
16281                    }
16282                    #[allow(irrefutable_let_patterns)]
16283                    if let SyncReport::PeriodicAdvertisingReport(ref mut val) = self {
16284                        fidl::decode!(
16285                            PeriodicAdvertisingReport,
16286                            D,
16287                            val,
16288                            decoder,
16289                            _inner_offset,
16290                            depth
16291                        )?;
16292                    } else {
16293                        unreachable!()
16294                    }
16295                }
16296                2 => {
16297                    #[allow(irrefutable_let_patterns)]
16298                    if let SyncReport::BroadcastIsochronousGroupInfoReport(_) = self {
16299                        // Do nothing, read the value into the object
16300                    } else {
16301                        // Initialize `self` to the right variant
16302                        *self = SyncReport::BroadcastIsochronousGroupInfoReport(fidl::new_empty!(
16303                            BroadcastIsochronousGroupInfoReport,
16304                            D
16305                        ));
16306                    }
16307                    #[allow(irrefutable_let_patterns)]
16308                    if let SyncReport::BroadcastIsochronousGroupInfoReport(ref mut val) = self {
16309                        fidl::decode!(
16310                            BroadcastIsochronousGroupInfoReport,
16311                            D,
16312                            val,
16313                            decoder,
16314                            _inner_offset,
16315                            depth
16316                        )?;
16317                    } else {
16318                        unreachable!()
16319                    }
16320                }
16321                #[allow(deprecated)]
16322                ordinal => {
16323                    for _ in 0..num_handles {
16324                        decoder.drop_next_handle()?;
16325                    }
16326                    *self = SyncReport::__SourceBreaking { unknown_ordinal: ordinal };
16327                }
16328            }
16329            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
16330                return Err(fidl::Error::InvalidNumBytesInEnvelope);
16331            }
16332            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
16333                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
16334            }
16335            Ok(())
16336        }
16337    }
16338}